1532e1603b03127a5857941c673a70040e4ae956
[u/mrichter/AliRoot.git] / PWG4 / AliAnaBaseClass.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 /* History of cvs commits:
18  *
19  * $Log$
20  *
21  */
22 //_________________________________________________________________________
23 // Base class for analysis algorithms
24 //-- Author: Gustavo Conesa (LNF-INFN) 
25 //_________________________________________________________________________
26   
27
28 // --- ROOT system ---
29 #include <TClonesArray.h>
30 #include <Riostream.h>
31
32 //---- AliRoot system ----
33 #include "AliAODParticleCorrelation.h"
34 #include "AliAODCaloCluster.h"
35 #include "AliAODCaloCells.h"
36 #include "AliAODTrack.h"
37 #include "AliAnaBaseClass.h"
38 #include "AliCaloTrackReader.h"
39 #include "AliFidutialCut.h"
40 #include "AliIsolationCut.h"
41 #include "AliNeutralMesonSelection.h"
42 #include "AliLog.h"
43 // #include "AliStack.h"
44 // #include "AliHeader.h"
45 // #include "AliGenEventHeader.h"
46
47 ClassImp(AliAnaBaseClass)
48   
49   
50 //_______________________________________________
51   AliAnaBaseClass::AliAnaBaseClass() : 
52     TObject(), fDataMC(0), fDebug(0), fCheckFidCut(0),
53     fCheckCaloPID(0), fRecalculateCaloPID(0), fMinPt(0), fMaxPt(0),
54     fReader(0x0), fAODBranch(0x0),  fAODCaloClusters(0x0), fAODCaloCells(0x0), 
55     fCaloPID(0x0), fFidCut(0x0), fIC(0x0),fNMS(0x0) 
56 {
57   //Default Ctor
58   
59   fReader = new AliCaloTrackReader();
60   fCaloPID = new AliCaloPID();
61   fFidCut = new AliFidutialCut();
62   fIC = new AliIsolationCut();
63   
64   //Initialize parameters
65   InitParameters();
66 }
67
68 //___________________________________________________________
69 AliAnaBaseClass::AliAnaBaseClass(const AliAnaBaseClass & abc) :   
70   TObject(), fDataMC(abc.fDataMC), fDebug(abc.fDebug),
71   fCheckFidCut(abc.fCheckFidCut),  fCheckCaloPID(abc. fCheckCaloPID),
72   fRecalculateCaloPID(abc.fRecalculateCaloPID),
73   fMinPt(abc.fMinPt), fMaxPt(abc.fMaxPt), fReader(abc.fReader),  
74   fAODBranch(new TClonesArray(*abc.fAODBranch)),
75   fAODCaloClusters(new TClonesArray(*abc.fAODCaloClusters)),
76   fAODCaloCells(new AliAODCaloCells(*abc.fAODCaloCells)),
77   fCaloPID(abc.fCaloPID), fFidCut(abc.fFidCut), fIC(abc.fIC),fNMS(abc.fNMS)
78 {
79   // cpy ctor
80   
81 }
82
83 //_________________________________________________________________________
84 AliAnaBaseClass & AliAnaBaseClass::operator = (const AliAnaBaseClass & abc)
85 {
86   // assignment operator
87   
88   if(this == &abc) return *this;
89   ((TObject *)this)->operator=(abc);
90   
91   fDataMC = abc.fDataMC;
92   fDebug = abc.fDebug ;
93   fRecalculateCaloPID =  abc.fRecalculateCaloPID ;
94   fCheckCaloPID = abc. fCheckCaloPID ;
95   fCheckFidCut = abc.fCheckFidCut ; 
96
97   fReader = abc.fReader ;
98   
99   fAODBranch = new TClonesArray(*abc.fAODBranch) ;
100   fAODCaloClusters = new TClonesArray(*abc.fAODCaloClusters) ;
101   fAODCaloCells = new AliAODCaloCells(*abc.fAODCaloCells) ;
102
103   fMinPt = abc.fMinPt;
104   fMaxPt = abc.fMaxPt;
105
106   fCaloPID = abc.fCaloPID;  
107   fFidCut = abc.fFidCut;
108   fIC = abc.fIC;
109   fNMS = abc.fNMS;
110
111   return *this;
112   
113 }
114
115 //____________________________________________________________________________
116 AliAnaBaseClass::~AliAnaBaseClass() 
117 {
118   // Remove all pointers except analysis output pointers.
119   
120   if(fAODBranch){
121     fAODBranch->Clear() ; 
122     delete fAODBranch ;
123   }
124   
125   if(fAODCaloClusters){
126     fAODCaloClusters->Clear() ; 
127     delete fAODCaloClusters ;
128   }
129
130   if(fAODCaloCells){
131     fAODCaloCells->Clear() ; 
132     delete fAODCaloCells ;
133   }
134   
135   if(fReader) delete fReader ;
136   if(fCaloPID) delete fCaloPID ;
137   if(fFidCut) delete fFidCut ;
138   if(fIC) delete fIC ;
139   if(fNMS) delete fNMS ;
140
141 }
142
143 //____________________________________________________________________________
144 void AliAnaBaseClass::AddAODCaloCluster(AliAODCaloCluster calo) {
145   //Put AOD calo cluster in the CaloClusters array
146
147   Int_t i = fAODCaloClusters->GetEntries();
148   new((*fAODCaloClusters)[i])  AliAODCaloCluster(calo);
149
150 }
151
152 //____________________________________________________________________________
153 void AliAnaBaseClass::AddAODParticleCorrelation(AliAODParticleCorrelation pc) {
154   //Put AOD calo cluster in the AODParticleCorrelation array
155
156   Int_t i = fAODBranch->GetEntries();
157   new((*fAODBranch)[i])  AliAODParticleCorrelation(pc);
158
159 }
160
161 //___________________________________________________
162 void AliAnaBaseClass::ConnectAODCaloClusters() {
163   //Recover the list of AODCaloClusters
164
165   fAODCaloClusters = fReader->GetAOD()->GetCaloClusters();
166
167 }
168
169 //___________________________________________________
170 void AliAnaBaseClass::ConnectAODPHOSCells() {
171   //Recover the list of PHOS AODCaloCells 
172
173   fAODCaloCells = fReader->GetAOD()->GetPHOSCells();
174
175 }
176
177 //___________________________________________________
178 void AliAnaBaseClass::ConnectAODEMCALCells() {
179   //Recover the list of EMCAL AODCaloCells 
180
181   fAODCaloCells = fReader->GetAOD()->GetEMCALCells();
182
183 }
184
185 //__________________________________________________
186 TClonesArray *  AliAnaBaseClass::GetAODCTS() const {
187   //Get list of tracks from reader
188
189   return fReader->GetAODCTS(); 
190
191 }
192
193 //__________________________________________________
194 TClonesArray *  AliAnaBaseClass::GetAODPHOS() const {
195   //Get list of PHOS calo clusters from reader
196
197   return fReader->GetAODPHOS(); 
198
199 }
200
201
202 //__________________________________________________
203 TClonesArray *  AliAnaBaseClass::GetAODEMCAL() const {
204   //Get list of emcal caloclusters from reader
205
206   return fReader->GetAODEMCAL(); 
207
208 }
209
210 //__________________________________________________
211 TNamed *  AliAnaBaseClass::GetPHOSCells() const {
212   //Get list of PHOS calo cells (ESD or AOD) from reader
213   
214   return fReader->GetPHOSCells(); 
215   
216 }
217
218
219 //__________________________________________________
220 TNamed *  AliAnaBaseClass::GetEMCALCells() const {
221   //Get list of emcal calo cells (ESD or AOD) from reader
222   
223   return fReader->GetEMCALCells(); 
224
225 }
226
227 //__________________________________________________
228 AliStack *  AliAnaBaseClass::GetMCStack() const {
229   //Get stack pointer from reader
230
231   return fReader->GetStack(); 
232
233 }
234 //__________________________________________________
235 AliHeader *  AliAnaBaseClass::GetMCHeader() const {
236   //Get header pointer from reader
237
238   return fReader->GetHeader(); 
239
240 }
241
242 //__________________________________________________
243 AliGenEventHeader *  AliAnaBaseClass::GetMCGenEventHeader() const {
244   //Get GenEventHeader pointer from reader
245
246   return fReader->GetGenEventHeader(); 
247
248 }
249
250
251 void AliAnaBaseClass::InitParameters()
252
253   //Initialize the parameters of the analysis.
254   fDataMC = kFALSE;
255   fDebug = -1;
256   fCheckCaloPID = kTRUE ;
257   fCheckFidCut = kFALSE ;
258   fRecalculateCaloPID = kFALSE ;
259   fMinPt = 2. ; //Min pt in particle analysis
260   fMaxPt = 300. ; //Max pt in particle analysis
261
262   fCaloPID = new AliCaloPID ;  
263   fFidCut = new AliFidutialCut;
264   fIC = new AliIsolationCut;
265   fNMS = new AliNeutralMesonSelection;
266
267 }
268