]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDReconstructor.cxx
Correct raw data reconstruction in case of trigger
[u/mrichter/AliRoot.git] / TRD / AliTRDReconstructor.cxx
CommitLineData
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// //
20// class for TRD reconstruction //
21// //
22///////////////////////////////////////////////////////////////////////////////
23
e3b2b5e5 24#include <TFile.h>
121a60bd 25
26#include "AliTRDReconstructor.h"
27#include "AliRunLoader.h"
121a60bd 28#include "AliTRDclusterizerV1.h"
29#include "AliTRDtracker.h"
b0f03c34 30#include "AliTRDpidESD.h"
6965c99b 31#include "AliRawReader.h"
928e9fae 32#include "AliLog.h"
0ee00e25 33#include "AliTRDtrigger.h"
34#include "AliTRDtrigParam.h"
e3b2b5e5 35#include "AliTRDgtuTrack.h"
0ee00e25 36#include "AliRun.h"
37#include "AliESDTrdTrack.h"
38#include "AliESD.h"
121a60bd 39
40ClassImp(AliTRDReconstructor)
41
0397ce53 42Bool_t AliTRDReconstructor::fgkSeedingOn = kFALSE;
43
121a60bd 44//_____________________________________________________________________________
45void AliTRDReconstructor::Reconstruct(AliRunLoader* runLoader) const
46{
47// reconstruct clusters
48
2b217b01 49 AliLoader *loader=runLoader->GetLoader("TRDLoader");
50 loader->LoadRecPoints("recreate");
51
121a60bd 52 AliTRDclusterizerV1 clusterer("clusterer", "TRD clusterizer");
53 runLoader->CdGAFile();
121a60bd 54 Int_t nEvents = runLoader->GetNumberOfEvents();
55
56 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
57 clusterer.Open(runLoader->GetFileName(), iEvent);
58 clusterer.ReadDigits();
59 clusterer.MakeClusters();
60 clusterer.WriteClusters(-1);
61 }
1a39153b 62
63 loader->UnloadRecPoints();
0ee00e25 64
65 // Trigger (tracklets, LTU)
66
e3b2b5e5 67 loader->LoadTracks();
68 if (loader->TreeT()) {
69 Info("Reconstruct","Tracklets already exist");
70 return;
71 }
72 Info("Reconstruct","Trigger tracklets will be produced");
73
0ee00e25 74 AliTRDtrigger trdTrigger("Trigger","Trigger class");
75
76 AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam","TRD Trigger parameters");
77
78 if (runLoader->GetAliRun() == 0x0) runLoader->LoadgAlice();
79 gAlice = runLoader->GetAliRun();
80 Double_t x[3] = { 0.0, 0.0, 0.0 };
81 Double_t b[3];
82 gAlice->Field(x,b); // b[] is in kilo Gauss
83 Float_t field = b[2] * 0.1; // Tesla
84 Info("Reconstruct","Trigger set for magnetic field = %f Tesla \n",field);
85
86 trigp->SetField(field);
87 trigp->Init();
88 trdTrigger.SetParameter(trigp);
89
90 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
91 trdTrigger.Open(runLoader->GetFileName(), iEvent);
92 trdTrigger.ReadDigits();
93 trdTrigger.MakeTracklets();
94 trdTrigger.WriteTracklets(-1);
95 }
96
97 loader->UnloadTracks();
98
121a60bd 99}
100
101//_____________________________________________________________________________
928e9fae 102void AliTRDReconstructor::Reconstruct(AliRunLoader* runLoader,
103 AliRawReader* rawReader) const
104{
105// reconstruct clusters
106
107 AliInfo("Reconstruct TRD clusters from RAW data");
108
109 AliLoader *loader=runLoader->GetLoader("TRDLoader");
110 loader->LoadRecPoints("recreate");
111
112 AliTRDclusterizerV1 clusterer("clusterer", "TRD clusterizer");
113 runLoader->CdGAFile();
928e9fae 114 Int_t nEvents = runLoader->GetNumberOfEvents();
115
116 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
117 if (!rawReader->NextEvent()) break;
118 clusterer.Open(runLoader->GetFileName(), iEvent);
119 clusterer.ReadDigits(rawReader);
120 clusterer.MakeClusters();
121 clusterer.WriteClusters(-1);
122 }
123
124 loader->UnloadRecPoints();
0ee00e25 125
126 // Trigger (tracklets, LTU)
127
e3b2b5e5 128 loader->LoadTracks();
129 if (loader->TreeT()) {
130 Info("Reconstruct","Tracklets already exist");
131 return;
132 }
133 Info("Reconstruct","Trigger tracklets will be produced");
134
0ee00e25 135 AliTRDtrigger trdTrigger("Trigger","Trigger class");
136
137 AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam","TRD Trigger parameters");
138
139 if (runLoader->GetAliRun() == 0x0) runLoader->LoadgAlice();
140 gAlice = runLoader->GetAliRun();
141 Double_t x[3] = { 0.0, 0.0, 0.0 };
142 Double_t b[3];
143 gAlice->Field(x,b); // b[] is in kilo Gauss
144 Float_t field = b[2] * 0.1; // Tesla
145 Info("Reconstruct","Trigger set for magnetic field = %f Tesla \n",field);
146
147 trigp->SetField(field);
148 trigp->Init();
149 trdTrigger.SetParameter(trigp);
150
d202144c 151 rawReader->RewindEvents();
152
0ee00e25 153 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
d202144c 154 if (!rawReader->NextEvent()) break;
0ee00e25 155 trdTrigger.Open(runLoader->GetFileName(), iEvent);
156 trdTrigger.ReadDigits(rawReader);
157 trdTrigger.MakeTracklets();
158 trdTrigger.WriteTracklets(-1);
159 }
160
161 loader->UnloadTracks();
162
928e9fae 163}
164
165//_____________________________________________________________________________
121a60bd 166AliTracker* AliTRDReconstructor::CreateTracker(AliRunLoader* runLoader) const
167{
168// create a TRD tracker
169
170 runLoader->CdGAFile();
171 return new AliTRDtracker(gFile);
172}
173
174//_____________________________________________________________________________
0ee00e25 175void AliTRDReconstructor::FillESD(AliRunLoader* runLoader,
b0f03c34 176 AliESD* esd) const
121a60bd 177{
b0f03c34 178// make PID
179
180 Double_t parTRD[] = {
eab5961e 181 280., // Min. Ionizing Particle signal. Check it !!!
b0f03c34 182 0.23, // relative resolution Check it !!!
183 10. // PID range (in sigmas)
184 };
185 AliTRDpidESD trdPID(parTRD);
186 trdPID.MakePID(esd);
0ee00e25 187
188 // Trigger (tracks, GTU)
189
190 AliTRDtrigger trdTrigger("Trigger","Trigger class");
191
192 AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam","TRD Trigger parameters");
193
194 if (runLoader->GetAliRun() == 0x0) runLoader->LoadgAlice();
195 gAlice = runLoader->GetAliRun();
196 Double_t x[3] = { 0.0, 0.0, 0.0 };
197 Double_t b[3];
198 gAlice->Field(x,b); // b[] is in kilo Gauss
199 Float_t field = b[2] * 0.1; // Tesla
200 Info("FillESD","Trigger set for magnetic field = %f Tesla \n",field);
201
202 trigp->SetField(field);
203 trigp->Init();
204
205 trdTrigger.SetParameter(trigp);
206 trdTrigger.SetRunLoader(runLoader);
207 trdTrigger.Init();
208
209 Int_t iEvent = runLoader->GetEventNumber();
210 runLoader->GetEvent(iEvent);
211 trdTrigger.ReadTracklets(runLoader);
212
213 AliESDTrdTrack *TrdTrack = new AliESDTrdTrack();
214 AliTRDgtuTrack *GtuTrack;
215
216 Int_t nTracks = trdTrigger.GetNumberOfTracks();
217 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
218
219 GtuTrack = trdTrigger.GetTrack(iTrack);
220
221 TrdTrack->SetYproj(GtuTrack->GetYproj());
222 TrdTrack->SetZproj(GtuTrack->GetZproj());
223 TrdTrack->SetSlope(GtuTrack->GetSlope());
224 TrdTrack->SetDetector(GtuTrack->GetDetector());
225 TrdTrack->SetTracklets(GtuTrack->GetTracklets());
226 TrdTrack->SetPlanes(GtuTrack->GetPlanes());
227 TrdTrack->SetClusters(GtuTrack->GetClusters());
228 TrdTrack->SetPt(GtuTrack->GetPt());
229 TrdTrack->SetPhi(GtuTrack->GetPhi());
230 TrdTrack->SetEta(GtuTrack->GetEta());
231 TrdTrack->SetLabel(GtuTrack->GetLabel());
232 TrdTrack->SetPID(GtuTrack->GetPID());
4c8471bd 233 TrdTrack->SetIsElectron(GtuTrack->IsElectron());
0ee00e25 234
235 esd->AddTrdTrack(TrdTrack);
236
237 }
238
121a60bd 239}
240
241
121a60bd 242