]>
Commit | Line | Data |
---|---|---|
121a60bd | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | /* $Id$ */ | |
17 | ||
18 | /////////////////////////////////////////////////////////////////////////////// | |
19 | // // | |
4fad09c9 | 20 | // Class for TRD reconstruction // |
121a60bd | 21 | // // |
22 | /////////////////////////////////////////////////////////////////////////////// | |
23 | ||
e3b2b5e5 | 24 | #include <TFile.h> |
121a60bd | 25 | |
121a60bd | 26 | #include "AliRunLoader.h" |
3bc9d03e | 27 | #include "AliRawReader.h" |
28 | #include "AliLog.h" | |
3bc9d03e | 29 | #include "AliESDTrdTrack.h" |
30 | #include "AliESD.h" | |
31 | ||
32 | #include "AliTRDReconstructor.h" | |
121a60bd | 33 | #include "AliTRDclusterizerV1.h" |
34 | #include "AliTRDtracker.h" | |
b0f03c34 | 35 | #include "AliTRDpidESD.h" |
0ee00e25 | 36 | #include "AliTRDtrigger.h" |
37 | #include "AliTRDtrigParam.h" | |
e3b2b5e5 | 38 | #include "AliTRDgtuTrack.h" |
a8fbb161 | 39 | #include "AliTRDrawData.h" |
40 | #include "AliTRDdigitsManager.h" | |
121a60bd | 41 | |
42 | ClassImp(AliTRDReconstructor) | |
43 | ||
3bc9d03e | 44 | Bool_t AliTRDReconstructor::fgkSeedingOn = kFALSE; |
45 | Int_t AliTRDReconstructor::fgStreamLevel = 0; // Stream (debug) level | |
0397ce53 | 46 | |
121a60bd | 47 | //_____________________________________________________________________________ |
a8fbb161 | 48 | void AliTRDReconstructor::ConvertDigits(AliRawReader *rawReader |
49 | , TTree *digitsTree) const | |
121a60bd | 50 | { |
3bc9d03e | 51 | // |
25ca55ce | 52 | // Convert raw data digits into digit objects in a root tree |
3bc9d03e | 53 | // |
121a60bd | 54 | |
a8fbb161 | 55 | AliTRDrawData rawData; |
56 | AliTRDdigitsManager *manager = rawData.Raw2Digits(rawReader); | |
57 | manager->MakeBranch(digitsTree); | |
58 | manager->WriteDigits(); | |
0ee00e25 | 59 | |
121a60bd | 60 | } |
61 | ||
62 | //_____________________________________________________________________________ | |
3bc9d03e | 63 | void AliTRDReconstructor::Reconstruct(AliRunLoader *runLoader |
64 | , AliRawReader *rawReader) const | |
928e9fae | 65 | { |
3bc9d03e | 66 | // |
67 | // Reconstruct clusters | |
68 | // | |
928e9fae | 69 | |
70 | AliInfo("Reconstruct TRD clusters from RAW data"); | |
71 | ||
3bc9d03e | 72 | AliLoader *loader = runLoader->GetLoader("TRDLoader"); |
928e9fae | 73 | loader->LoadRecPoints("recreate"); |
74 | ||
928e9fae | 75 | runLoader->CdGAFile(); |
928e9fae | 76 | Int_t nEvents = runLoader->GetNumberOfEvents(); |
77 | ||
78 | for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) { | |
79 | if (!rawReader->NextEvent()) break; | |
3bc9d03e | 80 | AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer"); |
81 | clusterer.Open(runLoader->GetFileName(),iEvent); | |
928e9fae | 82 | clusterer.ReadDigits(rawReader); |
83 | clusterer.MakeClusters(); | |
84 | clusterer.WriteClusters(-1); | |
85 | } | |
86 | ||
87 | loader->UnloadRecPoints(); | |
0ee00e25 | 88 | |
3bc9d03e | 89 | // |
0ee00e25 | 90 | // Trigger (tracklets, LTU) |
3bc9d03e | 91 | // |
fd57e67a | 92 | // loader->LoadTracks(); |
93 | // if (loader->TreeT()) { | |
94 | // AliError("Tracklets already exist"); | |
95 | // return; | |
96 | // } | |
97 | // AliInfo("Trigger tracklets will be produced"); | |
98 | ||
99 | // AliTRDtrigger trdTrigger("Trigger","Trigger class"); | |
100 | ||
101 | // AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam" | |
102 | // ,"TRD Trigger parameters"); | |
103 | ||
104 | // Float_t field = AliTracker::GetBz() * 0.1; // Tesla | |
105 | // AliInfo(Form("Trigger set for magnetic field = %f Tesla \n",field)); | |
106 | // trigp->SetField(field); | |
107 | // trigp->Init(); | |
108 | // trdTrigger.SetParameter(trigp); | |
109 | ||
110 | // rawReader->RewindEvents(); | |
111 | ||
112 | // for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) { | |
113 | // if (!rawReader->NextEvent()) break; | |
114 | // trdTrigger.Open(runLoader->GetFileName(),iEvent); | |
115 | // trdTrigger.ReadDigits(rawReader); | |
116 | // trdTrigger.MakeTracklets(); | |
117 | // trdTrigger.WriteTracklets(-1); | |
118 | // } | |
119 | ||
120 | // loader->UnloadTracks(); | |
0ee00e25 | 121 | |
25ca55ce | 122 | } |
a8fbb161 | 123 | |
25ca55ce | 124 | //_____________________________________________________________________________ |
125 | void AliTRDReconstructor::Reconstruct(AliRawReader *rawReader | |
126 | , TTree *clusterTree) const | |
127 | { | |
128 | // | |
129 | // Reconstruct clusters | |
130 | // | |
131 | ||
132 | AliInfo("Reconstruct TRD clusters from RAW data"); | |
133 | ||
134 | AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer"); | |
135 | clusterer.OpenOutput(clusterTree); | |
136 | clusterer.ReadDigits(rawReader); | |
137 | clusterer.MakeClusters(); | |
25ca55ce | 138 | |
139 | // | |
140 | // No trigger, since we don't have the output tree for tracklets | |
141 | // | |
142 | ||
143 | } | |
144 | ||
145 | //_____________________________________________________________________________ | |
a8fbb161 | 146 | void AliTRDReconstructor::Reconstruct(TTree *digitsTree |
147 | , TTree *clusterTree) const | |
25ca55ce | 148 | { |
149 | // | |
150 | // Reconstruct clusters | |
151 | // | |
152 | ||
153 | AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer"); | |
154 | clusterer.OpenOutput(clusterTree); | |
155 | clusterer.ReadDigits(digitsTree); | |
156 | clusterer.MakeClusters(); | |
25ca55ce | 157 | |
158 | // | |
159 | // No trigger, since we don't have the output tree for tracklets | |
160 | // | |
161 | ||
162 | } | |
163 | ||
164 | //_____________________________________________________________________________ | |
165 | void AliTRDReconstructor::Reconstruct(AliRunLoader *runLoader) const | |
166 | { | |
167 | // | |
168 | // Reconstruct clusters | |
169 | // | |
170 | ||
171 | AliLoader *loader = runLoader->GetLoader("TRDLoader"); | |
172 | loader->LoadRecPoints("recreate"); | |
173 | ||
174 | runLoader->CdGAFile(); | |
175 | Int_t nEvents = runLoader->GetNumberOfEvents(); | |
176 | ||
177 | for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) { | |
178 | AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer"); | |
179 | clusterer.Open(runLoader->GetFileName(),iEvent); | |
180 | clusterer.ReadDigits(); | |
181 | clusterer.MakeClusters(); | |
182 | clusterer.WriteClusters(-1); | |
183 | } | |
184 | ||
185 | loader->UnloadRecPoints(); | |
186 | ||
187 | // | |
188 | // Trigger (tracklets, LTU) | |
189 | // | |
190 | loader->LoadTracks("RECREATE"); | |
191 | AliInfo("Trigger tracklets will be produced"); | |
192 | ||
193 | AliTRDtrigger trdTrigger("Trigger","Trigger class"); | |
194 | ||
195 | AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam" | |
196 | ,"TRD Trigger parameters"); | |
197 | ||
198 | Float_t field = AliTracker::GetBz() * 0.1; // Tesla | |
199 | AliInfo(Form("Trigger set for magnetic field = %f Tesla \n",field)); | |
200 | trigp->SetField(field); | |
201 | trigp->Init(); | |
202 | trdTrigger.SetParameter(trigp); | |
203 | ||
204 | for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) { | |
205 | trdTrigger.Open(runLoader->GetFileName(),iEvent); | |
206 | trdTrigger.ReadDigits(); | |
207 | trdTrigger.MakeTracklets(); | |
208 | trdTrigger.WriteTracklets(-1); | |
209 | } | |
210 | ||
211 | loader->UnloadTracks(); | |
212 | ||
928e9fae | 213 | } |
214 | ||
215 | //_____________________________________________________________________________ | |
3bc9d03e | 216 | AliTracker *AliTRDReconstructor::CreateTracker(AliRunLoader *runLoader) const |
121a60bd | 217 | { |
3bc9d03e | 218 | // |
219 | // Create a TRD tracker | |
220 | // | |
121a60bd | 221 | |
222 | runLoader->CdGAFile(); | |
3bc9d03e | 223 | |
121a60bd | 224 | return new AliTRDtracker(gFile); |
3bc9d03e | 225 | |
121a60bd | 226 | } |
227 | ||
25ca55ce | 228 | //_____________________________________________________________________________ |
229 | void AliTRDReconstructor::FillESD(AliRunLoader* /*runLoader*/ | |
230 | , AliRawReader* /*rawReader*/ | |
231 | , AliESD *esd) const | |
232 | { | |
233 | // | |
234 | // Make PID | |
235 | // | |
236 | ||
237 | AliTRDpidESD trdPID; | |
238 | trdPID.MakePID(esd); | |
239 | ||
240 | // | |
241 | // No trigger, since we don't have the output tree for tracklets | |
242 | // | |
243 | ||
244 | } | |
245 | ||
246 | //_____________________________________________________________________________ | |
247 | void AliTRDReconstructor::FillESD(AliRawReader* /*rawReader*/ | |
248 | , TTree* /*clusterTree*/ | |
249 | , AliESD *esd) const | |
250 | { | |
251 | // | |
252 | // Make PID | |
253 | // | |
254 | ||
255 | AliTRDpidESD trdPID; | |
256 | trdPID.MakePID(esd); | |
257 | ||
258 | // | |
259 | // No trigger, since we don't have the output tree for tracklets | |
260 | // | |
261 | ||
262 | } | |
263 | ||
264 | //_____________________________________________________________________________ | |
265 | void AliTRDReconstructor::FillESD(TTree* /*digitsTree*/ | |
266 | , TTree* /*clusterTree*/ | |
267 | , AliESD *esd) const | |
268 | { | |
269 | // | |
270 | // Make PID | |
271 | // | |
272 | ||
273 | AliTRDpidESD trdPID; | |
274 | trdPID.MakePID(esd); | |
275 | ||
276 | // | |
277 | // No trigger, since we don't have the output tree for tracklets | |
278 | // | |
279 | ||
280 | } | |
281 | ||
121a60bd | 282 | //_____________________________________________________________________________ |
36698bd7 | 283 | void AliTRDReconstructor::FillESD(AliRunLoader* /*runLoader*/ |
c965eab1 | 284 | , AliESD *esd) const |
121a60bd | 285 | { |
3bc9d03e | 286 | // |
287 | // Make PID | |
288 | // | |
b0f03c34 | 289 | |
b52cb1b6 | 290 | AliTRDpidESD trdPID; |
b0f03c34 | 291 | trdPID.MakePID(esd); |
0ee00e25 | 292 | |
3bc9d03e | 293 | // |
0ee00e25 | 294 | // Trigger (tracks, GTU) |
3bc9d03e | 295 | // |
bf99d151 | 296 | // AliTRDtrigger trdTrigger("Trigger","Trigger class"); |
0ee00e25 | 297 | |
bf99d151 | 298 | // AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam" |
299 | // ,"TRD Trigger parameters"); | |
0ee00e25 | 300 | |
bf99d151 | 301 | // Float_t field = AliTracker::GetBz() * 0.1; // Tesla |
302 | // AliInfo(Form("Trigger set for magnetic field = %f Tesla \n",field)); | |
303 | // trigp->SetField(field); | |
304 | // trigp->Init(); | |
0ee00e25 | 305 | |
bf99d151 | 306 | // trdTrigger.SetParameter(trigp); |
307 | // trdTrigger.SetRunLoader(runLoader); | |
308 | // trdTrigger.Init(); | |
0ee00e25 | 309 | |
bf99d151 | 310 | // Int_t iEvent = runLoader->GetEventNumber(); |
311 | // runLoader->GetEvent(iEvent); | |
312 | // trdTrigger.ReadTracklets(runLoader); | |
0ee00e25 | 313 | |
bf99d151 | 314 | // AliESDTrdTrack *TrdTrack = new AliESDTrdTrack(); |
315 | // AliTRDgtuTrack *GtuTrack; | |
0ee00e25 | 316 | |
bf99d151 | 317 | // Int_t nTracks = trdTrigger.GetNumberOfTracks(); |
318 | // for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) { | |
0ee00e25 | 319 | |
bf99d151 | 320 | // GtuTrack = trdTrigger.GetTrack(iTrack); |
0ee00e25 | 321 | |
bf99d151 | 322 | // TrdTrack->SetYproj(GtuTrack->GetYproj()); |
323 | // TrdTrack->SetZproj(GtuTrack->GetZproj()); | |
324 | // TrdTrack->SetSlope(GtuTrack->GetSlope()); | |
325 | // TrdTrack->SetDetector(GtuTrack->GetDetector()); | |
326 | // TrdTrack->SetTracklets(GtuTrack->GetTracklets()); | |
327 | // TrdTrack->SetPlanes(GtuTrack->GetPlanes()); | |
328 | // TrdTrack->SetClusters(GtuTrack->GetClusters()); | |
329 | // TrdTrack->SetPt(GtuTrack->GetPt()); | |
330 | // TrdTrack->SetPhi(GtuTrack->GetPhi()); | |
331 | // TrdTrack->SetEta(GtuTrack->GetEta()); | |
332 | // TrdTrack->SetLabel(GtuTrack->GetLabel()); | |
333 | // TrdTrack->SetPID(GtuTrack->GetPID()); | |
334 | // TrdTrack->SetIsElectron(GtuTrack->IsElectron()); | |
0ee00e25 | 335 | |
bf99d151 | 336 | // esd->AddTrdTrack(TrdTrack); |
0ee00e25 | 337 | |
bf99d151 | 338 | // } |
0ee00e25 | 339 | |
121a60bd | 340 | } |