FEDRA emulsion software from the OPERA Collaboration
emtang.cpp File Reference
#include <iostream>
#include <cstdio>
#include <cstdint>
#include <stdexcept>
#include <cmath>
#include "TTree.h"
#include "TCut.h"
#include "TNtuple.h"
#include "EdbLog.h"
#include "EdbScanProc.h"
#include "EdbTrackFitter.h"
Include dependency graph for emtang.cpp:

Functions

int main (int argc, char *argv[])
 
TNtuple ntuple ("ntuple", "angle resolution ntuple", "dtx:dty:dtheta")
 
void procTrack (EdbTrackP &t)
 
void ProcTracks (EdbPVRec &rec)
 

Variables

EdbPVRec rec
 
EdbScanProc sproc
 

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)
51 {
52  if (argc != 2)
53  {
54  std::cerr << "Usage: " << argv[0] << " <filename>" << std::endl;
55  return 1;
56  }
57 
58  try
59  {
60  TCut cut="nseg==10"; // No cut, read all tracks
61  int ntr = sproc.ReadTracksTree(argv[1], rec, cut);
62  if(ntr <= 0)
63  {
64  std::cerr << "No tracks read from file " << argv[1] << std::endl;
65  return 1;
66  }
67  std::cout << "Successfully read " << ntr << " tracks" << std::endl;
68  ProcTracks(rec);
69  }
70  catch (const std::exception &e)
71  {
72  std::cerr << "Error: " << e.what() << std::endl;
73  return 1;
74  }
75 
76  return 0;
77 }
TCut cut
Definition: check_shower.C:6
int ReadTracksTree(EdbID id, EdbPVRec &ali, TCut cut="1")
Definition: EdbScanProc.cxx:644
EdbPVRec rec
Definition: emtang.cpp:16
EdbScanProc sproc
Definition: emtang.cpp:17
void ProcTracks(EdbPVRec &rec)
Definition: emtang.cpp:38

◆ ntuple()

TNtuple ntuple ( "ntuple"  ,
"angle resolution ntuple"  ,
"dtx:dty:dtheta"   
)

◆ procTrack()

void procTrack ( EdbTrackP t)
21 {
22  EdbTrackFitter fitter;
23  EdbTrackP t2;
24  if(!fitter.SplitTrack(t,t2, 5))
25  {
26  std::cerr << "Track splitting failed!" << std::endl;
27  return;
28  }
29  fitter.Fit3Pos(t);
30  fitter.Fit3Pos(t2);
31  float dtx = t.TX() - t2.TX();
32  float dty = t.TY() - t2.TY();
33  float dtheta = sqrt(dtx*dtx + dty*dty);
34 
35  ntuple.Fill(dtx, dty, dtheta);
36 }
TTree * t
Definition: check_shower.C:4
Float_t TX() const
Definition: EdbSegP.h:172
Float_t TY() const
Definition: EdbSegP.h:173
Definition: EdbTrackFitter.h:16
int Fit3Pos(EdbTrackP &tr)
Definition: EdbTrackFitter.cxx:588
bool SplitTrack(EdbTrackP &t, EdbTrackP &t1, int isplit)
Definition: EdbTrackFitter.cxx:457
Definition: EdbPattern.h:118
TNtuple ntuple("ntuple", "angle resolution ntuple", "dtx:dty:dtheta")

◆ ProcTracks()

void ProcTracks ( EdbPVRec rec)
39 {
40  TFile file("emtang.root", "RECREATE");
41  for(int i=0; i<rec.Ntracks(); i++)
42  {
44  procTrack(*track);
45  }
46  ntuple.Write();
47  file.Close();
48 }
EdbTrackP * GetTrack(int i) const
Definition: EdbPVRec.h:241
Int_t Ntracks() const
Definition: EdbPVRec.h:203
Definition: bitview.h:14
void procTrack(EdbTrackP &t)
Definition: emtang.cpp:20
TFile * file
Definition: write_pvr.C:3

Variable Documentation

◆ rec

EdbPVRec rec

◆ sproc

EdbScanProc sproc