]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDReconstructor.cxx
Error messages stored in the global raw-reader error log (Cvetan, Chiara)
[u/mrichter/AliRoot.git] / TRD / AliTRDReconstructor.cxx
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 //                                                                           //
20 // Class for TRD reconstruction                                              //
21 //                                                                           //
22 ///////////////////////////////////////////////////////////////////////////////
23
24 #include <TFile.h>
25
26 #include "AliRunLoader.h"
27 #include "AliRawReader.h"
28 #include "AliLog.h"
29 #include "AliESDTrdTrack.h"
30 #include "AliESD.h"
31
32 #include "AliTRDReconstructor.h"
33 #include "AliTRDclusterizerV1.h"
34 #include "AliTRDtracker.h"
35 #include "AliTRDpidESD.h"
36 #include "AliTRDtrigger.h"
37 #include "AliTRDtrigParam.h"
38 #include "AliTRDgtuTrack.h"
39 #include "AliTRDrawData.h"
40 #include "AliTRDdigitsManager.h"
41
42 ClassImp(AliTRDReconstructor)
43
44 Bool_t AliTRDReconstructor::fgkSeedingOn  = kFALSE;
45 Int_t  AliTRDReconstructor::fgStreamLevel = 0;      // Stream (debug) level
46
47 //_____________________________________________________________________________
48 void AliTRDReconstructor::ConvertDigits(AliRawReader *rawReader
49                                       , TTree *digitsTree) const
50 {
51   //
52   // Convert raw data digits into digit objects in a root tree
53   //
54
55   AliTRDrawData rawData;
56   AliTRDdigitsManager *manager = rawData.Raw2Digits(rawReader);
57   manager->MakeBranch(digitsTree);
58   manager->WriteDigits();
59
60 }
61
62 //_____________________________________________________________________________
63 void AliTRDReconstructor::Reconstruct(AliRunLoader *runLoader
64                                     , AliRawReader *rawReader) const
65 {
66   //
67   // Reconstruct clusters
68   //
69
70   AliInfo("Reconstruct TRD clusters from RAW data");
71
72   AliLoader *loader = runLoader->GetLoader("TRDLoader");
73   loader->LoadRecPoints("recreate");
74
75   runLoader->CdGAFile();
76   Int_t nEvents = runLoader->GetNumberOfEvents();
77
78   for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
79     if (!rawReader->NextEvent()) break;
80     AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer");
81     clusterer.Open(runLoader->GetFileName(),iEvent);
82     clusterer.ReadDigits(rawReader);
83     clusterer.MakeClusters();
84     clusterer.WriteClusters(-1);
85   }
86
87   loader->UnloadRecPoints();
88
89   //
90   // Trigger (tracklets, LTU)
91   //
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();
121
122 }
123
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();
138
139   //
140   // No trigger, since we don't have the output tree for tracklets
141   //
142
143 }
144
145 //_____________________________________________________________________________
146 void AliTRDReconstructor::Reconstruct(TTree *digitsTree
147                                     , TTree *clusterTree) const
148 {
149   //
150   // Reconstruct clusters
151   //
152
153   AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer");
154   clusterer.OpenOutput(clusterTree);
155   clusterer.ReadDigits(digitsTree);
156   clusterer.MakeClusters();
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
213 }
214
215 //_____________________________________________________________________________
216 AliTracker *AliTRDReconstructor::CreateTracker(AliRunLoader *runLoader) const
217 {
218   //
219   // Create a TRD tracker
220   //
221
222   runLoader->CdGAFile();
223
224   return new AliTRDtracker(gFile);
225
226 }
227
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
282 //_____________________________________________________________________________
283 void AliTRDReconstructor::FillESD(AliRunLoader* /*runLoader*/
284                                 , AliESD *esd) const
285 {
286   //
287   // Make PID
288   //
289
290   AliTRDpidESD trdPID;
291   trdPID.MakePID(esd);
292
293   //
294   // Trigger (tracks, GTU)
295   //
296 //   AliTRDtrigger trdTrigger("Trigger","Trigger class"); 
297
298 //   AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam"
299 //                                               ,"TRD Trigger parameters");
300
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();
305
306 //   trdTrigger.SetParameter(trigp);
307 //   trdTrigger.SetRunLoader(runLoader);
308 //   trdTrigger.Init();
309
310 //   Int_t iEvent = runLoader->GetEventNumber(); 
311 //   runLoader->GetEvent(iEvent);
312 //   trdTrigger.ReadTracklets(runLoader);
313
314 //   AliESDTrdTrack *TrdTrack = new AliESDTrdTrack();
315 //   AliTRDgtuTrack *GtuTrack;
316
317 //   Int_t nTracks = trdTrigger.GetNumberOfTracks();
318 //   for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
319
320 //     GtuTrack = trdTrigger.GetTrack(iTrack);
321
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());
335
336 //     esd->AddTrdTrack(TrdTrack);
337
338 //   }
339
340 }