FairRoot/PandaRoot
Functions
gem_boxTracksN.C File Reference

Go to the source code of this file.

Functions

Int_t gem_boxTracksN (Int_t nStations, Int_t nparts, Int_t nEvents=1000, Int_t pdgC=211, int verboseLevel=0)
 

Function Documentation

Int_t gem_boxTracksN ( Int_t  nStations,
Int_t  nparts,
Int_t  nEvents = 1000,
Int_t  pdgC = 211,
int  verboseLevel = 0 
)

Definition at line 1 of file gem_boxTracksN.C.

References allDigiFile, ctime, Double_t, fRun, Geane, gemDigitize, gemFindHits, MCFile, nEvents, outFile, parFile, parInput1, parIo1, recoKalman, rtdb, rtime, PndGemTrackFinderOnHits::SetPrimary(), PndRecoKalmanTask::SetTrackInBranchName(), PndRecoKalmanTask::SetTrackOutBranchName(), PndGemFindTracks::SetUseHitOrDigi(), PndGemTrackFinderQA::SetVerbose(), PndGemTrackFinderOnHits::SetVerbose(), sysFile, timer, TString, PndGemFindTracks::UseFinder(), and verboseLevel.

2 {
3  if ( nStations != 3 && nStations != 4 ) {
4  cout << "WRONG number of stations, only 3 or 4 allowed." << endl;
5  return 0;
6  }
7 
8  TString sysFile = gSystem->Getenv("VMCWORKDIR");
9 
10  // Input file (MC events)
11  TString baseName;
12  baseName.Form("Gem_%dStations_%d_%dpart_n%d",nStations,pdgC,nparts,nEvents);
13 
14  TString MCFile = baseName + ".root";
15  TString parFile = baseName + "_par.root";
16  TString outFile = baseName + "_FindTracksOnHits.root";
17 
18  // ----- Timer --------------------------------------------------------
19  TStopwatch timer;
20  timer.Start();
21 
22  // ----- Reconstruction run -------------------------------------------
23  FairRunAna *fRun= new FairRunAna();
24  fRun->SetInputFile(MCFile);
25  fRun->SetOutputFile(outFile);
26 
27  // ----- Parameter database --------------------------------------------
28  TString allDigiFile = sysFile+"/macro/params/gem_3Stations.digi.par";
29  if ( nStations == 4 ) allDigiFile = sysFile+"/macro/params/gem_4Stations.digi.par";
30 
31  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
32  FairParRootFileIo* parInput1 = new FairParRootFileIo();
33  parInput1->open(parFile.Data());
34 
35  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
36  parIo1->open(allDigiFile.Data(),"in");
37 
38  rtdb->setFirstInput(parInput1);
39  rtdb->setSecondInput(parIo1);
40  // ------------------------------------------------------------------------
41 
42  // ----- Digitizer and Hit Finder -------------------------------------
43  PndGemDigitize* gemDigitize = new PndGemDigitize("GEM Digitizer", verboseLevel);
44  fRun->AddTask(gemDigitize);
45 
46  PndGemFindHits* gemFindHits = new PndGemFindHits("GEM Hit Finder", verboseLevel);
47  fRun->AddTask(gemFindHits);
48 
49  // ----- Ideal Hit Producer ---------------------------------------
50 // PndGemIdealHitProducer* gemHitProducer = new PndGemIdealHitProducer("GEM Ideal hit producer", verboseLevel);
51 // fRun->AddTask(gemHitProducer);
52 
53  //------ Track finder ------------------------------
54  //Create and add finder task
55  PndGemFindTracks* finderTask = new PndGemFindTracks("PndGemFindTracks");
56  finderTask->SetUseHitOrDigi("hit"); // hit = (default), digi
57  fRun->AddTask(finderTask);
58 
59  //------ Ideal Track finder ------------------------
60 // PndGemTrackFinderIdeal* mcTrackFinder = new PndGemTrackFinderIdeal();
61 // mcTrackFinder->SetVerbose(verboseLevel); // verbosity level
62 // mcTrackFinder->SetPrimary(0); // 1 = Only primary tracks are processed, 0 = all (default)
63 // finderTask->UseFinder(mcTrackFinder);
64 
65  //------ Realistic Track finder --------------------
66  PndGemTrackFinderOnHits* mcTrackFinder = new PndGemTrackFinderOnHits();
67  mcTrackFinder->SetVerbose(verboseLevel); // verbosity level
68  mcTrackFinder->SetPrimary(0); // 1 = Only primary tracks are processed, 0 = all (default)
69  finderTask->UseFinder(mcTrackFinder);
70  //--------------------------------------------------
71 
72 
73  // ----- Prepare GEANE --------------------------------------------
74  // this will load Geant3 and execute setup macros to initialize geometry:
75  FairGeane *Geane = new FairGeane();
76  fRun->AddTask(Geane);
77  //--------------------------------------------------
78 
79  // ----- Run Kalman fitter --------------------------------------------
81  recoKalman->SetTrackInBranchName("GEMTrack");
82  recoKalman->SetTrackOutBranchName("GEMFitTrack");
83  //recoKalman->SetNumIterations(3);
84  fRun->AddTask(recoKalman);
85  // -------------------------------------------------
86 
87  PndGemTrackFinderQA* trackFinderQA = new PndGemTrackFinderQA();
88  trackFinderQA->SetVerbose(verboseLevel);
89  fRun->AddTask(trackFinderQA);
90 
91  // ----- Intialise and run --------------------------------------------
92  fRun->Init();
93  fRun->Run(0,nEvents);
94  // fRun->Run(858,859);
95 
96  // ----- Finish -------------------------------------------------------
97  timer.Stop();
98  Double_t rtime = timer.RealTime();
99  Double_t ctime = timer.CpuTime();
100  cout << endl << endl;
101  cout << "Macro finished succesfully." << endl;
102  cout << "Output file is " << outFile << endl;
103  cout << "Parameter file is " << parFile << endl;
104  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
105  cout << endl;
106 
107  return 1;
108 }
PndGemFindHits * gemFindHits
void SetPrimary(const Int_t &primary)
int verboseLevel
Definition: Lars/runMvdSim.C:7
TString outFile
Definition: hit_dirc.C:17
OnHits track finding algorithm.
void UseFinder(PndGemTrackFinder *finder)
TString allDigiFile
Definition: hit_muo.C:36
void SetTrackOutBranchName(const TString &name)
FairGeane * Geane
FairRunAna * fRun
Definition: hit_dirc.C:58
void SetVerbose(const Int_t &verbose)
TString sysFile
Double_t
TString parFile
Definition: hit_dirc.C:14
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
void SetVerbose(const Int_t &verbose)
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
Double_t ctime
Definition: hit_dirc.C:114
PndGemDigitize * gemDigitize
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
void SetTrackInBranchName(const TString &name)
TString MCFile
PndRecoKalmanTask * recoKalman
track finding quality assesment task
Task class for track finding in the Gem.
Double_t rtime
Definition: hit_dirc.C:113
void SetUseHitOrDigi(TString useHitOrDigi="hit")