]>
Commit | Line | Data |
---|---|---|
d92b41ad | 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 | /* $Id: $ */ | |
16 | ||
17 | /* History of cvs commits: | |
18 | * | |
19 | * $Log$ | |
20 | * | |
21 | * | |
22 | */ | |
23 | ||
24 | //_________________________________________________________________________ | |
25 | // Base class for reading data: MonteCarlo, ESD or AOD, of PHOS EMCAL and | |
26 | // Central Barrel Tracking detectors (CTS). | |
27 | // Not all MC particles/tracks/clusters are kept, some kinematical/fidutial restrictions are done. | |
28 | // Mother class of : AliCaloTrackESDReader: Fills ESD data in 3 TClonesArrays (PHOS, EMCAL, CTS) | |
29 | // : AliCaloTrackMCReader: Fills Kinematics data in 3 TClonesArrays (PHOS, EMCAL, CTS) | |
30 | // : AliCaloTrackAODReader: Fills AOD data in 3 TClonesArrays (PHOS, EMCAL, CTS) | |
31 | // | |
32 | //-- Author: Gustavo Conesa (LNF-INFN) | |
33 | ////////////////////////////////////////////////////////////////////////////// | |
34 | ||
35 | ||
36 | // --- ROOT system --- | |
37 | #include <TMath.h> | |
38 | #include <TLorentzVector.h> | |
39 | #include <TString.h> | |
40 | ||
41 | //---- ANALYSIS system ---- | |
42 | #include "AliCaloTrackReader.h" | |
43 | #include "AliLog.h" | |
44 | #include "AliStack.h" | |
45 | #include "AliHeader.h" | |
46 | #include "AliGenEventHeader.h" | |
47 | ||
48 | ClassImp(AliCaloTrackReader) | |
49 | ||
50 | ||
51 | //____________________________________________________________________________ | |
52 | AliCaloTrackReader::AliCaloTrackReader() : | |
53 | TObject(), fDataType(0), fDebug(0), fFidutialCut(0x0), | |
54 | fCTSPtMin(0), fEMCALPtMin(0),fPHOSPtMin(0), | |
55 | fAODCTS(0x0), fAODEMCAL(0x0), fAODPHOS(0x0), | |
56 | fEMCALCells(0x0), fPHOSCells(0x0), | |
57 | fESD(0x0), fAOD(0x0),fMC(0x0), | |
58 | fFillCTS(0),fFillEMCAL(0),fFillPHOS(0), | |
59 | fFillEMCALCells(0),fFillPHOSCells(0) | |
60 | { | |
61 | //Ctor | |
62 | ||
63 | //Initialize parameters | |
64 | InitParameters(); | |
65 | } | |
66 | ||
67 | //____________________________________________________________________________ | |
68 | AliCaloTrackReader::AliCaloTrackReader(const AliCaloTrackReader & g) : | |
69 | TObject(g), fDataType(g.fDataType), fDebug(g.fDebug),fFidutialCut(g.fFidutialCut), | |
70 | fCTSPtMin(g.fCTSPtMin), fEMCALPtMin(g.fEMCALPtMin),fPHOSPtMin(g.fPHOSPtMin), | |
71 | fAODCTS(new TClonesArray(*g.fAODCTS)), | |
72 | fAODEMCAL(new TClonesArray(*g.fAODEMCAL)), | |
73 | fAODPHOS(new TClonesArray(*g.fAODPHOS)), | |
74 | fEMCALCells(new TNamed(*g.fEMCALCells)), | |
75 | fPHOSCells(new TNamed(*g.fPHOSCells)), | |
76 | fESD(g.fESD), fAOD(g.fAOD), fMC(g.fMC), | |
77 | fFillCTS(g.fFillCTS),fFillEMCAL(g.fFillEMCAL),fFillPHOS(g.fFillPHOS), | |
78 | fFillEMCALCells(g.fFillEMCALCells),fFillPHOSCells(g.fFillPHOSCells) | |
79 | { | |
80 | // cpy ctor | |
81 | ||
82 | } | |
83 | ||
84 | //_________________________________________________________________________ | |
85 | AliCaloTrackReader & AliCaloTrackReader::operator = (const AliCaloTrackReader & source) | |
86 | { | |
87 | // assignment operator | |
88 | ||
89 | if(&source == this) return *this; | |
90 | ||
91 | fDataType = source.fDataType ; | |
92 | fDebug = source.fDebug ; | |
93 | ||
94 | fFidutialCut = source.fFidutialCut; | |
95 | ||
96 | fCTSPtMin = source.fCTSPtMin ; | |
97 | fEMCALPtMin = source.fEMCALPtMin ; | |
98 | fPHOSPtMin = source.fPHOSPtMin ; | |
99 | ||
100 | fAODCTS = new TClonesArray(*source.fAODCTS) ; | |
101 | fAODEMCAL = new TClonesArray(*source.fAODEMCAL) ; | |
102 | fAODPHOS = new TClonesArray(*source.fAODPHOS) ; | |
103 | fEMCALCells = new TNamed(*source.fEMCALCells) ; | |
104 | fPHOSCells = new TNamed(*source.fPHOSCells) ; | |
105 | ||
106 | fESD = source.fESD; | |
107 | fAOD= source.fAOD; | |
108 | fMC = source.fMC; | |
109 | ||
110 | fFillCTS = source.fFillCTS; | |
111 | fFillEMCAL = source.fFillEMCAL; | |
112 | fFillPHOS = source.fFillPHOS; | |
113 | fFillEMCALCells = source.fFillEMCALCells; | |
114 | fFillPHOSCells = source.fFillPHOSCells; | |
115 | ||
116 | return *this; | |
117 | ||
118 | } | |
119 | ||
120 | //_________________________________ | |
121 | AliCaloTrackReader::~AliCaloTrackReader() { | |
122 | //Dtor | |
123 | ||
124 | if(fFidutialCut) delete fFidutialCut ; | |
125 | ||
126 | if(fAODCTS){ | |
127 | fAODCTS->Clear() ; | |
128 | delete fAODCTS ; | |
129 | } | |
130 | ||
131 | if(fAODEMCAL){ | |
132 | fAODEMCAL->Clear() ; | |
133 | delete fAODEMCAL ; | |
134 | } | |
135 | ||
136 | if(fAODPHOS){ | |
137 | fAODPHOS->Clear() ; | |
138 | delete fAODPHOS ; | |
139 | } | |
140 | ||
141 | if(fEMCALCells){ | |
142 | fEMCALCells->Clear() ; | |
143 | delete fEMCALCells ; | |
144 | } | |
145 | ||
146 | if(fPHOSCells){ | |
147 | fPHOSCells->Clear() ; | |
148 | delete fPHOSCells ; | |
149 | } | |
150 | ||
151 | if(fESD) delete fESD ; | |
152 | if(fAOD) delete fAOD ; | |
153 | if(fMC) delete fMC ; | |
154 | } | |
155 | ||
156 | //____________________________________________________________________________ | |
157 | AliStack* AliCaloTrackReader::GetStack() const { | |
158 | //Return pointer to stack | |
159 | if(fMC) | |
160 | return fMC->Stack(); | |
161 | else{ | |
162 | printf("stack is not available"); | |
163 | return 0x0 ; | |
164 | } | |
165 | } | |
166 | ||
167 | //____________________________________________________________________________ | |
168 | AliHeader* AliCaloTrackReader::GetHeader() const { | |
169 | //Return pointer to header | |
170 | if(fMC) | |
171 | return fMC->Header(); | |
172 | else{ | |
173 | printf("header is not available"); | |
174 | return 0x0 ; | |
175 | } | |
176 | } | |
177 | //____________________________________________________________________________ | |
178 | AliGenEventHeader* AliCaloTrackReader::GetGenEventHeader() const { | |
179 | //Return pointer to Generated event header | |
180 | if(fMC) | |
181 | return fMC->GenEventHeader(); | |
182 | else{ | |
183 | printf("GenEventHeader is not available"); | |
184 | return 0x0 ; | |
185 | } | |
186 | } | |
187 | ||
188 | //_______________________________________________________________ | |
189 | void AliCaloTrackReader::InitParameters() | |
190 | { | |
191 | ||
192 | //Initialize the parameters of the analysis. | |
193 | fDataType = kESD ; | |
194 | ||
195 | fCTSPtMin = 0.2 ; | |
196 | fEMCALPtMin = 0.5 ; | |
197 | fPHOSPtMin = 0.5 ; | |
198 | ||
199 | fFillEMCAL = kTRUE; | |
200 | fFillPHOS = kTRUE; | |
201 | fFillCTS = kTRUE; | |
202 | fFillEMCALCells = kFALSE; | |
203 | fFillPHOSCells = kFALSE; | |
204 | ||
205 | fFidutialCut = new AliFidutialCut(); | |
206 | ||
207 | } | |
208 | ||
209 | ||
210 | //________________________________________________________________ | |
211 | void AliCaloTrackReader::Print(const Option_t * opt) const | |
212 | { | |
213 | ||
214 | //Print some relevant parameters set for the analysis | |
215 | if(! opt) | |
216 | return; | |
217 | ||
218 | printf("***** Print: %s %s ******\n", GetName(), GetTitle() ) ; | |
219 | printf("Data type : %d\n", fDataType) ; | |
220 | printf("CTS Min pT : %2.1f GeV/c\n", fCTSPtMin) ; | |
221 | printf("EMCAL Min pT : %2.1f GeV/c\n", fEMCALPtMin) ; | |
222 | printf("PHOS Min pT : %2.1f GeV/c\n", fPHOSPtMin) ; | |
223 | printf("Use CTS = %d\n", fFillCTS) ; | |
224 | printf("Use EMCAL = %d\n", fFillEMCAL) ; | |
225 | printf("Use PHOS = %d\n", fFillPHOS) ; | |
226 | printf("Use EMCAL Cells = %d\n", fFillEMCALCells) ; | |
227 | printf("Use PHOS Cells = %d\n", fFillPHOSCells) ; | |
228 | printf(" \n") ; | |
229 | } | |
230 | ||
231 | //___________________________________________________ | |
232 | void AliCaloTrackReader::FillInputEvent() { | |
233 | //Fill the input lists that are needed, called by the analysis maker. | |
234 | ||
235 | if(fFillCTS) FillInputCTS(); | |
236 | if(fFillEMCAL) FillInputEMCAL(); | |
237 | if(fFillPHOS) FillInputPHOS(); | |
238 | if(fFillEMCALCells) FillInputEMCALCells(); | |
239 | if(fFillPHOSCells) FillInputPHOSCells(); | |
240 | ||
241 | } | |
242 | ||
243 | //__________________________________________________ | |
244 | void AliCaloTrackReader::ResetLists() { | |
245 | // Reset lists, called by the analysis maker | |
246 | ||
247 | if(fAODCTS) fAODCTS -> Clear(); | |
248 | if(fAODEMCAL) fAODEMCAL -> Clear(); | |
249 | if(fAODPHOS) fAODPHOS -> Clear(); | |
250 | if(fEMCALCells) fEMCALCells -> Clear(); | |
251 | if(fPHOSCells) fPHOSCells -> Clear(); | |
252 | ||
253 | } |