]>
Commit | Line | Data |
---|---|---|
ae982df3 | 1 | //******************************************************************** |
2 | // Example of the reconstruction that generates the ESD | |
3 | // Input files: | |
4 | // a) AliTPCclusters.root containing the TPC clusters | |
5 | // (the AliTPCFindClusters.C macro can be used to generate it) | |
6 | // b) AliITSclustersV2.root containing the ITS clusters | |
7 | // (the AliITSFindClustersV2.C macro can be used to generate it) | |
8 | // Ouput file: | |
9 | // AliESDs.root containing the ESD events | |
10 | // | |
11 | // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch | |
12 | //******************************************************************** | |
13 | ||
14 | #ifndef __CINT__ | |
15 | #include <Riostream.h> | |
16 | #include "TFile.h" | |
17 | #include "TStopwatch.h" | |
18 | ||
19 | #include "AliESD.h" | |
8c6a71ab | 20 | #include "AliESDpid.h" |
21 | #include "AliTPCpidESD.h" | |
ae982df3 | 22 | #include "AliTPCParam.h" |
23 | #include "AliTPCtracker.h" | |
24 | #include "AliITSgeom.h" | |
25 | #include "AliITStrackerV2.h" | |
79e94bf8 | 26 | #include "AliTRDtracker.h" |
27 | #include "AliTRDPartID.h" | |
8c6a71ab | 28 | #include "AliITSpidESD.h" |
ae982df3 | 29 | #endif |
30 | ||
79e94bf8 | 31 | Int_t AliESDtest(Int_t nev=1, |
32 | const char* fileNameITSClusters = "its.clusters.root", | |
33 | const char* fileNameTPCClusters = "tpc.clusters.root", | |
34 | const char* fileNameTRDClusters = "trd.clusters.root") { | |
35 | ||
ae982df3 | 36 | //File with the TPC clusters |
79e94bf8 | 37 | TFile *tpccf=TFile::Open(fileNameTPCClusters); |
ae982df3 | 38 | if (!tpccf->IsOpen()) { |
79e94bf8 | 39 | cerr<<"Can't open "<<fileNameTPCClusters<<" !\n"; |
ae982df3 | 40 | return 2; |
41 | } | |
42 | AliTPCParam *par=(AliTPCParam*)tpccf->Get("75x40_100x60_150x60"); | |
43 | if (!par) {cerr<<"Can't get TPC parameters !\n"; return 3;} | |
44 | ||
45 | //An instance of the TPC tracker | |
46 | AliTPCtracker tpcTracker(par); | |
47 | ||
8c6a71ab | 48 | //An instance of the TPC PID maker |
49 | Double_t parTPC[]={47.,0.1,3.}; | |
50 | AliTPCpidESD tpcPID(parTPC); | |
ae982df3 | 51 | |
52 | //File with the ITS clusters | |
79e94bf8 | 53 | TFile *itscf=TFile::Open(fileNameITSClusters); |
ae982df3 | 54 | if (!itscf->IsOpen()) { |
79e94bf8 | 55 | cerr<<"Can't open "<<fileNameITSClusters<<".root !\n"; |
ae982df3 | 56 | return 4; |
57 | } | |
58 | AliITSgeom *geom=(AliITSgeom*)itscf->Get("AliITSgeom"); | |
59 | if (!geom) {cerr<<"Can't get AliITSgeom !\n"; return 5;} | |
60 | ||
61 | //An instance of the ITS tracker | |
62 | AliITStrackerV2 itsTracker(geom); | |
8c6a71ab | 63 | |
64 | //An instance of the ITS PID maker | |
65 | Double_t parITS[]={34.,0.12,3.}; | |
66 | AliITSpidESD itsPID(parITS); | |
79e94bf8 | 67 | |
68 | //File with the TRD clusters | |
69 | TFile *trdcf=TFile::Open(fileNameTRDClusters); | |
70 | if (!trdcf->IsOpen()) { | |
71 | cerr<<"Can't open "<<fileNameTRDClusters<<".root !\n"; | |
72 | return 6; | |
73 | } | |
74 | ||
75 | //An instance of the TRD tracker | |
76 | AliTRDtracker trdTracker(trdcf); | |
77 | ||
78 | //An instance of the TRD PID maker | |
4db7f8b6 | 79 | AliTRDPartID* trdPID = AliTRDPartID::GetFromFile(); |
80 | if (!trdPID) return 7; | |
79e94bf8 | 81 | |
82 | TFile *ef=TFile::Open("AliESDs.root","RECREATE"); | |
ae982df3 | 83 | if (!ef->IsOpen()) {cerr<<"Can't AliESDs.root !\n"; return 1;} |
84 | ||
85 | TStopwatch timer; | |
86 | Int_t rc=0; | |
87 | //The loop over events | |
88 | for (Int_t i=0; i<nev; i++) { | |
89 | cerr<<"\n\nProcessing event number : "<<i<<endl; | |
90 | AliESD *event=new AliESD(); | |
91 | ||
92 | tpcTracker.SetEventNumber(i); | |
93 | tpcTracker.LoadClusters(tpccf); | |
94 | ||
95 | itsTracker.SetEventNumber(i); | |
96 | itsTracker.LoadClusters(itscf); | |
97 | ||
98 | rc+=tpcTracker.Clusters2Tracks(event); | |
99 | ||
100 | rc+=itsTracker.Clusters2Tracks(event); | |
101 | ||
102 | rc+=itsTracker.PropagateBack(event); | |
103 | itsTracker.UnloadClusters(); | |
79e94bf8 | 104 | |
8c6a71ab | 105 | itsPID.MakePID(event); |
ae982df3 | 106 | |
107 | rc+=tpcTracker.PropagateBack(event); | |
108 | tpcTracker.UnloadClusters(); | |
79e94bf8 | 109 | |
8c6a71ab | 110 | tpcPID.MakePID(event); |
111 | ||
79e94bf8 | 112 | trdTracker.SetEventNumber(i); |
113 | trdcf->cd(); | |
114 | trdTracker.LoadClusters(); | |
115 | ||
116 | rc+=trdTracker.PropagateBack(event); | |
117 | trdTracker.UnloadClusters(); | |
118 | ||
119 | for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) { | |
120 | AliESDtrack* track = event->GetTrack(iTrack); | |
121 | trdPID->MakePID(track); | |
122 | } | |
123 | ||
8c6a71ab | 124 | //Here is the combined PID |
125 | AliESDpid::MakePID(event); | |
ae982df3 | 126 | |
127 | if (rc==0) { | |
128 | Char_t ename[100]; | |
129 | sprintf(ename,"%d",i); | |
79e94bf8 | 130 | ef->cd(); |
ae982df3 | 131 | if (!event->Write(ename)) rc++; |
132 | } | |
133 | if (rc) { | |
134 | cerr<<"Something bad happened...\n"; | |
135 | } | |
136 | delete event; | |
137 | } | |
138 | timer.Stop(); timer.Print(); | |
139 | ||
79e94bf8 | 140 | trdcf->Close(); |
ae982df3 | 141 | delete geom; |
142 | itscf->Close(); | |
143 | delete par; | |
144 | tpccf->Close(); | |
145 | ef->Close(); | |
146 | ||
147 | return rc; | |
148 | } |