1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 ///////////////////////////////////////////////////////////////////////////////
20 // Class for TRD reconstruction //
22 ///////////////////////////////////////////////////////////////////////////////
26 #include "AliRunLoader.h"
27 #include "AliRawReader.h"
29 #include "AliESDTrdTrack.h"
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"
40 ClassImp(AliTRDReconstructor)
42 Bool_t AliTRDReconstructor::fgkSeedingOn = kFALSE;
43 Int_t AliTRDReconstructor::fgStreamLevel = 0; // Stream (debug) level
45 //_____________________________________________________________________________
46 void AliTRDReconstructor::Reconstruct(AliRunLoader *runLoader) const
49 // Reconstruct clusters
52 AliLoader *loader = runLoader->GetLoader("TRDLoader");
53 loader->LoadRecPoints("recreate");
55 runLoader->CdGAFile();
56 Int_t nEvents = runLoader->GetNumberOfEvents();
58 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
59 AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer");
60 clusterer.Open(runLoader->GetFileName(),iEvent);
61 clusterer.ReadDigits();
62 clusterer.MakeClusters();
63 clusterer.WriteClusters(-1);
66 loader->UnloadRecPoints();
69 // Trigger (tracklets, LTU)
71 loader->LoadTracks("RECREATE");
72 AliInfo("Trigger tracklets will be produced");
74 AliTRDtrigger trdTrigger("Trigger","Trigger class");
76 AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam"
77 ,"TRD Trigger parameters");
79 Float_t field = AliTracker::GetBz() * 0.1; // Tesla
80 AliInfo(Form("Trigger set for magnetic field = %f Tesla \n",field));
81 trigp->SetField(field);
83 trdTrigger.SetParameter(trigp);
85 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
86 trdTrigger.Open(runLoader->GetFileName(),iEvent);
87 trdTrigger.ReadDigits();
88 trdTrigger.MakeTracklets();
89 trdTrigger.WriteTracklets(-1);
92 loader->UnloadTracks();
96 //_____________________________________________________________________________
97 void AliTRDReconstructor::Reconstruct(AliRunLoader *runLoader
98 , AliRawReader *rawReader) const
101 // Reconstruct clusters
104 AliInfo("Reconstruct TRD clusters from RAW data");
106 AliLoader *loader = runLoader->GetLoader("TRDLoader");
107 loader->LoadRecPoints("recreate");
109 runLoader->CdGAFile();
110 Int_t nEvents = runLoader->GetNumberOfEvents();
112 for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
113 if (!rawReader->NextEvent()) break;
114 AliTRDclusterizerV1 clusterer("clusterer","TRD clusterizer");
115 clusterer.Open(runLoader->GetFileName(),iEvent);
116 clusterer.ReadDigits(rawReader);
117 clusterer.MakeClusters();
118 clusterer.WriteClusters(-1);
121 loader->UnloadRecPoints();
124 // Trigger (tracklets, LTU)
126 // loader->LoadTracks();
127 // if (loader->TreeT()) {
128 // AliError("Tracklets already exist");
131 // AliInfo("Trigger tracklets will be produced");
133 // AliTRDtrigger trdTrigger("Trigger","Trigger class");
135 // AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam"
136 // ,"TRD Trigger parameters");
138 // Float_t field = AliTracker::GetBz() * 0.1; // Tesla
139 // AliInfo(Form("Trigger set for magnetic field = %f Tesla \n",field));
140 // trigp->SetField(field);
142 // trdTrigger.SetParameter(trigp);
144 // rawReader->RewindEvents();
146 // for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
147 // if (!rawReader->NextEvent()) break;
148 // trdTrigger.Open(runLoader->GetFileName(),iEvent);
149 // trdTrigger.ReadDigits(rawReader);
150 // trdTrigger.MakeTracklets();
151 // trdTrigger.WriteTracklets(-1);
154 // loader->UnloadTracks();
158 //_____________________________________________________________________________
159 AliTracker *AliTRDReconstructor::CreateTracker(AliRunLoader *runLoader) const
162 // Create a TRD tracker
165 runLoader->CdGAFile();
167 return new AliTRDtracker(gFile);
171 //_____________________________________________________________________________
172 void AliTRDReconstructor::FillESD(AliRunLoader *runLoader
183 // Trigger (tracks, GTU)
185 AliTRDtrigger trdTrigger("Trigger","Trigger class");
187 AliTRDtrigParam *trigp = new AliTRDtrigParam("TRDtrigParam"
188 ,"TRD Trigger parameters");
190 Float_t field = AliTracker::GetBz() * 0.1; // Tesla
191 AliInfo(Form("Trigger set for magnetic field = %f Tesla \n",field));
192 trigp->SetField(field);
195 trdTrigger.SetParameter(trigp);
196 trdTrigger.SetRunLoader(runLoader);
199 Int_t iEvent = runLoader->GetEventNumber();
200 runLoader->GetEvent(iEvent);
201 trdTrigger.ReadTracklets(runLoader);
203 AliESDTrdTrack *TrdTrack = new AliESDTrdTrack();
204 AliTRDgtuTrack *GtuTrack;
206 Int_t nTracks = trdTrigger.GetNumberOfTracks();
207 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
209 GtuTrack = trdTrigger.GetTrack(iTrack);
211 TrdTrack->SetYproj(GtuTrack->GetYproj());
212 TrdTrack->SetZproj(GtuTrack->GetZproj());
213 TrdTrack->SetSlope(GtuTrack->GetSlope());
214 TrdTrack->SetDetector(GtuTrack->GetDetector());
215 TrdTrack->SetTracklets(GtuTrack->GetTracklets());
216 TrdTrack->SetPlanes(GtuTrack->GetPlanes());
217 TrdTrack->SetClusters(GtuTrack->GetClusters());
218 TrdTrack->SetPt(GtuTrack->GetPt());
219 TrdTrack->SetPhi(GtuTrack->GetPhi());
220 TrdTrack->SetEta(GtuTrack->GetEta());
221 TrdTrack->SetLabel(GtuTrack->GetLabel());
222 TrdTrack->SetPID(GtuTrack->GetPID());
223 TrdTrack->SetIsElectron(GtuTrack->IsElectron());
225 esd->AddTrdTrack(TrdTrack);