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