1 ////////////////////////////////////////////////////////////////////////
6 // author: Jiri Chudoba based on code of Jourij Belikov
9 // reconstructs of tracks in TPC in the following steps:
10 // TPC cluster finding
13 // Int_t nEvents ... nr of events to process (<0 means all)
14 // Int_t firstEventNr ... first event number (starts from 0)
15 // const char* fileName ... name of galice file
16 // Bool_t makeClusters ... run the cluster finder or not?
17 // Bool_t makeTracks ... run the track finder or not?
18 // const char* fileNameRaw ... if not NULL, the cluster finder uses
19 // the given file as raw data input
23 // 21.07.2003 ... NewIO
25 // 18.03.2003 ... Char_t* replaced by const char*
27 // 03.03.2003 ... SetFieldFactor moved to AliTracker class and
28 // LoadTPCParam moved to AliTPC class
29 // TString replaced by Char_t*
31 // 20.11.2002 ... Changes due to a changed interface of AliTPCtracker.
32 // Use Riostream.h instead of iostream.h
34 // 22.08.2002 ... first version
36 ////////////////////////////////////////////////////////////////////////
38 #if !defined(__CINT__) || defined(__MAKECINT__)
39 #include <Riostream.h>
42 #include <TBenchmark.h>
43 #include "AliRunLoader.h"
45 #include "AliTPCParam.h"
46 #include "AliTPCclustererMI.h"
47 #include "AliTPCtrackerMI.h"
48 #include "AliRawReaderRoot.h"
51 Bool_t AliTPCTracking(Int_t nEvents = -1, Int_t firstEvent = 0,
52 const char* fileName = "galice.root",
53 Bool_t makeClusters = kTRUE,
54 Bool_t makeTracks = kTRUE,
55 const char* fileNameRaw = NULL);
58 Int_t TPCRefitInward(Int_t nEvents=1, Int_t firstEvent=0,
59 const char* fileNameClusters="tpc.clusters.root",
60 const char* fileNameTracks="tpc.tracks.root",
61 const char* fileNameTRDTracks="trd.tracks.root",
62 const char* fileNameRefittedTracks="tpc.refitted.tracks.root");
65 ////////////////////////////////////////////////////////////////////////
66 Bool_t AliTPCTracking(Int_t nEvents, Int_t firstEvent,
70 const char* fileNameRaw)
73 AliRunLoader* runLoader = AliRunLoader::Open(fileName);
75 cerr << "AliTPCTracking: no run loader found\n";
78 AliLoader* tpcLoader = runLoader->GetLoader("TPCLoader");
80 cerr << "AliTPCTracking: no TPC loader found\n";
84 // get the TPC parameters
85 runLoader->CdGAFile();
86 AliTPCParam* param = AliTPC::LoadTPCParam(gFile);
88 cerr << "AliTPCTracking: no TPC parameters found\n";
92 // create the clusterer object
93 AliTPCclustererMI* clusterer = NULL;
95 clusterer = new AliTPCclustererMI(param);
96 if (!fileNameRaw) tpcLoader->LoadDigits();
97 tpcLoader->LoadRecPoints("recreate");
100 // create the tracker object
101 AliTPCtrackerMI* tracker = NULL;
103 // tracker = new AliTPCtrackerMI(param);
104 if (!makeClusters) tpcLoader->LoadRecPoints();
105 tpcLoader->LoadTracks("recreate");
108 // get the event number range
111 TFile* file = TFile::Open(fileNameRaw);
112 if (file && file->IsOpen()) {
113 TTree* tree = (TTree*) file->Get("T");
114 if (tree) maxEvent = (Int_t) tree->GetEntries();
117 maxEvent = runLoader->GetNumberOfEvents();
119 if (nEvents < 0) nEvents = maxEvent - firstEvent;
120 Int_t lastEvent = firstEvent + nEvents;
121 if (lastEvent > maxEvent) lastEvent = maxEvent;
123 // loop over the events
124 for (Int_t iEvent = firstEvent; iEvent < lastEvent; iEvent++) {
126 runLoader->GetEvent(iEvent);
128 // run the cluster finder
130 if (!tpcLoader->TreeR()) tpcLoader->MakeRecPointsContainer();
131 clusterer->SetOutput(tpcLoader->TreeR());
133 AliRawReaderRoot rawReader(fileNameRaw, iEvent);
134 clusterer->Digits2Clusters(&rawReader);
136 clusterer->SetInput(tpcLoader->TreeD());
137 clusterer->Digits2Clusters();
139 tpcLoader->WriteRecPoints("OVERWRITE");
142 // run the track finder
144 tracker = new AliTPCtrackerMI(param);
145 tracker->Clusters2Tracks();
150 if (tracker) delete tracker;
151 if (clusterer) delete clusterer;
157 ////////////////////////////////////////////////////////////////////////
158 Int_t TPCRefitInward(Int_t nEvents, Int_t firstEvent,
159 const char* fileNameClusters,
160 const char* fileNameTracks,
161 const char* fileNameTRDTracks,
162 const char* fileNameRefittedTracks)
165 const Char_t *name="TPCRefitInward";
166 if (gDEBUG>1) cout<<name<<" starts"<<endl;
167 if (gDEBUG>1) gBenchmark->Start(name);
168 TFile *fileClusters = TFile::Open(fileNameClusters);
169 TFile *fileTracks = TFile::Open(fileNameTracks);
170 TFile *fileTRDTracks = TFile::Open(fileNameTRDTracks);
171 TFile *fileRefittedTracks = TFile::Open(fileNameRefittedTracks, "recreate");
173 AliTPCParam* paramTPC = AliTPC::LoadTPCParam(fileClusters);
174 if (!paramTPC) return 1;
176 for (Int_t iEvent = firstEvent; iEvent < firstEvent+nEvents; iEvent++){
177 if (gDEBUG > 2) cout<<"TPCRefitInward: event "<<iEvent<<endl;
178 AliTPCtracker *tracker = new AliTPCtracker(paramTPC);
179 tracker->SetEventNumber(iEvent);
181 rc = tracker->RefitInward(fileTRDTracks, fileTracks, fileRefittedTracks);
186 fileClusters->Close();
188 fileTRDTracks->Close();
189 fileRefittedTracks->Close();
192 delete fileTRDTracks;
193 delete fileRefittedTracks;
194 if (gDEBUG>1) gBenchmark->Show(name);