FairRoot/PandaRoot
Functions
RecoComplete.h File Reference
#include <TString.h>

Go to the source code of this file.

Functions

void RecoComplete (TString const &mcFile, TString const &dgFile, TString const &parFile, TString const &digiFile, TString const &outFile)
 

Function Documentation

void RecoComplete ( TString const &  mcFile,
TString const &  dgFile,
TString const &  parFile,
TString const &  digiFile,
TString const &  outFile 
)

Definition at line 48 of file RecoComplete.cxx.

References PndSttMatchTracks::AddHitCollectionName(), PndSttFitTracks::AddHitCollectionName(), PndSttFindTracks::AddHitCollectionName(), ctime, digiFile, Double_t, emcDigiFile, emcHdrFiller, emcMakeBump, emcMakeCluster, emcMakeRecoHit, fRun, gDebug, Geane, iVerbose, kalman, mvdmccls, nEvents, parInput1, parIo1, Pi, rtdb, rtime, PndGemTrackFinderOnHits::SetPrimary(), PndEmcMakeCluster::SetStorageOfData(), PndGemFindTracks::SetUseHitOrDigi(), PndGemTrackFinderQA::SetVerbose(), PndGemTrackFinderOnHits::SetVerbose(), sttFindTracks, sttFitTracks, sttHHProducer, sttTrackFinder, sttTrackFitter, sttTrackMatcher, timer, tpcCF, TString, and PndGemFindTracks::UseFinder().

Referenced by main().

51 {
52  gDebug = 0;
53 
54  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
55  Int_t iVerbose = 0; // just forget about it, for the moment
56 
57  // Number of events to process
58  Int_t nEvents = 0; // if 0 all the vents will be processed
59 
60  // ----- Timer --------------------------------------------------------
61  TStopwatch timer;
62  // ------------------------------------------------------------------------
63 
64  // ----- Reconstruction run -------------------------------------------
65  FairRunAna *fRun= new FairRunAna();
66  fRun->SetInputFile(mcFile);
67  fRun->AddFriend(dgFile);
68  fRun->SetOutputFile(outFile);
69 
70 
71  FairGeane *Geane = new FairGeane();
72  fRun->AddTask(Geane);
73 
74 
75  // ----- Parameter database --------------------------------------------
76  TString emcDigiFile = gSystem->Getenv("VMCWORKDIR");
77  emcDigiFile += "/macro/params/";
78  emcDigiFile += digiFile;
79  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
80  FairParRootFileIo* parInput1 = new FairParRootFileIo();
81  parInput1->open(parFile.Data());
82 
83  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
84  parIo1->open(emcDigiFile.Data(),"in");
85 
86  rtdb->setFirstInput(parInput1);
87  rtdb->setSecondInput(parIo1);
88 
89 
90  // ----- EMC hit producers ---------------------------------
91  // The file name should be the same of the geometry file which was used for the simulation
92 
94  emcMakeCluster->SetStorageOfData(kFALSE);
95  fRun->AddTask(emcMakeCluster);
97  fRun->AddTask(emcHdrFiller); // ECM header
99  fRun->AddTask(emcMakeBump);
101  fRun->AddTask(emcMakeRecoHit);
102 
103  // trackfinding ....
105  PndSttFindTracks* sttFindTracks = new PndSttFindTracks("Track Finder", "FairTask", sttTrackFinder, iVerbose);
106  sttFindTracks->AddHitCollectionName("STTHit", "STTPoint");
107  fRun->AddTask(sttFindTracks);
108  // trackmatching ....
109  PndSttMatchTracks* sttTrackMatcher = new PndSttMatchTracks("Match tracks", "STT", iVerbose);
110  sttTrackMatcher->AddHitCollectionName("STTHit", "STTPoint");
111  fRun->AddTask(sttTrackMatcher);
112  // trackfitting ....
114  PndSttFitTracks* sttFitTracks = new PndSttFitTracks("STT Track Fitter", "FairTask", sttTrackFitter);
115  sttFitTracks->AddHitCollectionName("STTHit");
116  fRun->AddTask(sttFitTracks);
117  // helix hit production ....
119  fRun->AddTask(sttHHProducer);
120 
121  // ----- TPC Reco Sequence --------------------------------------------
122  PndTpcClusterFinderTask* tpcCF = new PndTpcClusterFinderTask();
123  tpcCF->SetMode(1); // individual timeslice
124  tpcCF->SetPersistence();
125  tpcCF->timeslice(20); // = 4 sample times = 100ns @ 40MHz
126  //tpcCF->SetTrivialClustering();
127  fRun->AddTask(tpcCF);
128 
129 
130  PndTpcIdealTrackingTask* tpcIPR = new PndTpcIdealTrackingTask();
131  tpcIPR->useGeane(true);
132  tpcIPR->useDistSorting(true);
133  fRun->AddTask(tpcIPR);
134  tpcIPR->SetPersistence();
135 
136  //------ Ideal DCH track finder --------------------
137  PndDchFindTracks* finderTask = new PndDchFindTracks("dchFindTracks");
138  finderTask->SetUseHitOrDigi("chit");
139  fRun->AddTask(finderTask);
140  // -------------------------------------------------
141  PndDchTrackFinderIdealCylHit* mcTrackFinder = new PndDchTrackFinderIdealCylHit();
142  mcTrackFinder->SetPrimary(1); // 1 = Only primary tracks are processed, 0 = all (default)
143  finderTask->UseFinder(mcTrackFinder);
144  //--------------------------------------------------
145  PndDchMatchTracks *matchTask = new PndDchMatchTracks();//match PndDchTracks and MCTracks
146  matchTask->SetUseHitOrDigi("chit");
147  fRun->AddTask(matchTask);
148 
149  //----- MVD Hit Reco -----
151  fRun->AddTask(mvdmccls);
152 
153  //------ GEM Realistic Track finder --------------------
154  //Create and add finder task
155  PndGemFindTracks* gemFinderTask = new
156  PndGemFindTracks("PndGemFindTracks");
157  gemFinderTask->SetUseHitOrDigi("hit"); // hit = (default), digi
158  fRun->AddTask(gemFinderTask);
159 
160  PndGemTrackFinderOnHits* gemTrackFinder = new PndGemTrackFinderOnHits();
161  gemTrackFinder->SetVerbose(0); // verbosity level
162  gemTrackFinder->SetPrimary(0); // 1 = Only primary tracks are processed, 0 = all (default)
163  gemFinderTask->UseFinder(gemTrackFinder);
164 
165  PndGemTrackFinderQA* gemTrackFinderQA = new PndGemTrackFinderQA();
166  gemTrackFinderQA->SetVerbose(0);
167  fRun->AddTask(gemTrackFinderQA);
168 
169  KalmanTask* kalman =new KalmanTask();
170  kalman->SetPersistence();
171  kalman->SetNumIterations(3); // number of fitting iterations (back and forth)
172  fRun->AddTask(kalman);
173 
174  TrackFitStatTask* fitstat=new TrackFitStatTask();
175  fitstat->SetPersistence();
176  fitstat->SetMCPCut(10); // in sigma dp/p
177  fitstat->SetMCCuts(0.05, // pmin
178  10., // pmax
179  -TMath::Pi(), // thetamin 5deg
180  TMath::Pi(), // thetamax
181  5); // nPndTpcPoints
182  //fitstat->SetPdgSelection(321);
183  //fitstat->DoResiduals();
184  fRun->AddTask(fitstat);
185 
186  // ----- Intialise and run --------------------------------------------
187  cout << "fRun->Init()" << endl;
188  fRun->Init();
189 
190  timer.Start();
191  fRun->Run(0,nEvents);
192  // ------------------------------------------------------------------------
193 
194 
195  // ----- Finish -------------------------------------------------------
196  timer.Stop();
197  Double_t rtime = timer.RealTime();
198  Double_t ctime = timer.CpuTime();
199  cout << endl << endl;
200  cout << "Macro finished successfully." << endl;
201  cout << "Output file is " << outFile << endl;
202  cout << "Parameter file is " << parFile << endl;
203  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
204  cout << endl;
205  // ------------------------------------------------------------------------
206 
207 }
void SetStorageOfData(Bool_t val)
Method to specify whether clusters are stored or not.
void SetPrimary(const Int_t &primary)
PndSttMatchTracks * sttTrackMatcher
Create PndEmcRecoHit from PndEmcBump.
PndSttHelixHitProducer * sttHHProducer
TString outFile
Definition: hit_dirc.C:17
PndEmcMakeRecoHit * emcMakeRecoHit
OnHits track finding algorithm.
TString digiFile
Definition: bump_emc.C:20
KalmanTask * kalman
PndEmcMakeBump * emcMakeBump
Definition: bump_emc.C:63
TString emcDigiFile
Definition: bump_emc.C:45
PndMvdStripClusterTask * mvdmccls
Definition: runclust.C:45
PndSttTrackFitter * sttTrackFitter
void AddHitCollectionName(char *hitCollectionName, char *pointCollectionName)
void UseFinder(PndGemTrackFinder *finder)
PndSttTrackFinderReal * sttTrackFinder
PndEmcHdrFiller * emcHdrFiller
Definition: full_emc.C:68
FairGeane * Geane
FairRunAna * fRun
Definition: hit_dirc.C:58
void SetVerbose(const Int_t &verbose)
Double_t
TString parFile
Definition: hit_dirc.C:14
PndEmcMakeCluster * emcMakeCluster
Definition: full_emc.C:65
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
void AddHitCollectionName(char *hitCollectionName)
PndSttFindTracks * sttFindTracks
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
void SetVerbose(const Int_t &verbose)
TString mcFile
Definition: runMvdTpcReco.C:22
gDebug
Definition: sim_emc_apd.C:6
Takes clusters and slits them up into bumps.
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
Double_t ctime
Definition: hit_dirc.C:114
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
Task to cluster PndEmcDigis.
Int_t iVerbose
track finding quality assesment task
PndTpcClusterFinderTask * tpcCF
Task class for track finding in the Gem.
Double_t rtime
Definition: hit_dirc.C:113
Double_t Pi
PndSttFitTracks * sttFitTracks
Task to create Emc header.
void AddHitCollectionName(char *hitCollectionName, char *pointCollectionName)
void SetUseHitOrDigi(TString useHitOrDigi="hit")