]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
Correct memory leaks.
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnaPartCorrBaseClass.h
CommitLineData
1c5acb87 1#ifndef ALIANAPARTCORRBASECLASS_H
2#define ALIANAPARTCORRBASECLASS_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5/* $Id: $ */
6
7//_________________________________________________________________________
8// Base class for analysis algorithms
9//-- Author: Gustavo Conesa (INFN-LNF)
10
fbeaf916 11#include <cstdlib>
12
1c5acb87 13//ROOT
14class TClonesArray ;
591cc579 15class TObjArray ;
a3aebfff 16#include <TList.h>
1c5acb87 17#include <TObject.h>
18
19//Analysis
20class AliAODCaloCluster;
21class AliAODCaloCells;
1c5acb87 22class AliCaloTrackReader ;
23class AliCaloPID ;
ff45398a 24class AliFiducialCut ;
1c5acb87 25class AliIsolationCut ;
6639984f 26class AliMCAnalysisUtils ;
1c5acb87 27class AliNeutralMesonSelection ;
28class AliStack ;
29class AliHeader ;
30class AliGenEventHeader ;
a3aebfff 31#include "AliAODPWG4ParticleCorrelation.h"
1c5acb87 32
33class AliAnaPartCorrBaseClass : public TObject {
34
35public:
36
477d6cee 37 AliAnaPartCorrBaseClass() ; // default ctor
38 AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
39 AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
40 virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
41
42// virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
a3aebfff 43 virtual void AddAODParticle(AliAODPWG4Particle part) ;
44
477d6cee 45// virtual void ConnectAODCaloClusters();
46 virtual void ConnectAODPHOSCells();
47 virtual void ConnectAODEMCALCells();
48 virtual void ConnectInputOutputAODBranches();
49
4a745797 50 virtual TList * GetCreateOutputObjects() { return (new TList) ;}
51 //virtual TList * GetAnalysisOutputContainer() { return fAnaOutContainer ;}
52
a3aebfff 53 virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }
54 virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
55
477d6cee 56 virtual void Init() {;}
57 virtual void InitParameters() ;
58
59 virtual void Print(const Option_t * ) const ;
60
61 virtual void MakeAnalysisFillAOD() {;}
62
63 virtual void MakeAnalysisFillHistograms() {;}
64
65 virtual Int_t GetDebug() const { return fDebug ; }
66 virtual void SetDebug(Int_t d) { fDebug = d ; }
67
68 virtual Int_t GetEventNumber() const ;
7cd4e982 69
477d6cee 70 virtual AliCaloTrackReader * GetReader() const {return fReader ; }
42dc8e7d 71 virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
477d6cee 72
a5cc4f03 73 virtual void Terminate(TList * /*outputList*/) {;}
74
477d6cee 75 //analysis AOD branch
76 virtual TClonesArray * GetCreateOutputAODBranch() ;
77 virtual TString GetInputAODName() const {return fInputAODName ; }
78 virtual void SetInputAODName(TString name) { fInputAODName = name; }
79 virtual TString GetOutputAODName() const {return fOutputAODName ; }
80 virtual void SetOutputAODName(TString name) { fNewAOD = kTRUE ; fOutputAODName = name; }
81 virtual Bool_t NewOutputAOD() const {return fNewAOD;}
82 virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
83 virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
84
591cc579 85 virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
86 virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
a3aebfff 87
477d6cee 88 virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
1e86c71e 89 virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
42dc8e7d 90 virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
91
477d6cee 92// virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
93 virtual TClonesArray* GetAODCaloClusters() const ;
94 virtual TClonesArray* GetAODTracks() const ;
95 virtual AliAODCaloCells* GetAODCaloCells() const {return fAODCaloCells ;}
96
591cc579 97 virtual TObjArray* GetAODCTS() const ;
98 virtual TObjArray* GetAODEMCAL() const ;
99 virtual TObjArray* GetAODPHOS() const ;
477d6cee 100
101 virtual TString GetBaseParametersList();
102
103 virtual TNamed * GetEMCALCells() const ;
104 virtual TNamed * GetPHOSCells() const ;
105
106 virtual AliStack * GetMCStack() const ;
107 virtual AliHeader* GetMCHeader() const ;
108 virtual AliGenEventHeader* GetMCGenEventHeader() const ;
109
110 //Analysis helpers classes pointers setters and getters
111 virtual AliCaloPID * GetCaloPID() const {return fCaloPID ;}
42dc8e7d 112 virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
477d6cee 113
ff45398a 114 virtual AliFiducialCut * GetFiducialCut() const {return fFidCut ;}
115 virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
477d6cee 116
117 virtual AliIsolationCut * GetIsolationCut() const {return fIC ;}
42dc8e7d 118 virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
477d6cee 119
120 virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return fMCUtils ;}
42dc8e7d 121 virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}
477d6cee 122
123 virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return fNMS ;}
42dc8e7d 124 virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
477d6cee 125
126 virtual Bool_t IsDataMC() const {return fDataMC ; }
127 virtual void SwitchOnDataMC() {fDataMC = kTRUE ; }
128 virtual void SwitchOffDataMC() {fDataMC = kFALSE ; }
129
ff45398a 130 virtual Bool_t IsFiducialCutOn() const {return fCheckFidCut ; }
131 virtual void SwitchOnFiducialCut() { fCheckFidCut = kTRUE;}
132 virtual void SwitchOffFiducialCut() { fCheckFidCut = kFALSE;}
477d6cee 133
134 virtual Bool_t IsCaloPIDOn() const {return fCheckCaloPID ; }
135 virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
136 virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
137
138 virtual Bool_t IsCaloPIDRecalculationOn() const {return fRecalculateCaloPID ; }
139 virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID = kTRUE;}
140 virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID = kFALSE;}
141
142 virtual Float_t GetMaxPt() const {return fMaxPt ; }
143 virtual Float_t GetMinPt() const {return fMinPt ; }
144 virtual void SetMaxPt(Float_t pt) {fMaxPt = pt ; }
145 virtual void SetMinPt(Float_t pt) {fMinPt = pt ; }
146 void SetPtCutRange(Double_t ptmin, Double_t ptmax)
147 { fMaxPt=ptmax; fMinPt=ptmin;}
148
149 //Histogrammes setters and getters
5a2dbc3c 150 //Pt, Energy
477d6cee 151 virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
5a2dbc3c 152 fHistoPtBins = n ;
477d6cee 153 fHistoPtMax = max ;
154 fHistoPtMin = min ;
155 }
156
5a2dbc3c 157 Int_t GetHistoPtBins() const { return fHistoPtBins; }
477d6cee 158 Float_t GetHistoPtMin() const { return fHistoPtMin ; }
159 Float_t GetHistoPtMax() const { return fHistoPtMax ; }
160
5a2dbc3c 161 //Azimuthal angle
477d6cee 162 virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
5a2dbc3c 163 fHistoPhiBins = n ;
164 fHistoPhiMax = max ;
165 fHistoPhiMin = min ;
477d6cee 166 }
167
5a2dbc3c 168 Int_t GetHistoPhiBins() const { return fHistoPhiBins; }
477d6cee 169 Float_t GetHistoPhiMin() const { return fHistoPhiMin ; }
170 Float_t GetHistoPhiMax() const { return fHistoPhiMax ; }
171
5a2dbc3c 172 //Pseudorapidity-rapidity
477d6cee 173 virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
5a2dbc3c 174 fHistoEtaBins = n ;
175 fHistoEtaMax = max ;
176 fHistoEtaMin = min ;
477d6cee 177 }
178
5a2dbc3c 179 Int_t GetHistoEtaBins() const { return fHistoEtaBins; }
477d6cee 180 Float_t GetHistoEtaMin() const { return fHistoEtaMin ; }
181 Float_t GetHistoEtaMax() const { return fHistoEtaMax ; }
5a2dbc3c 182
183 //Mass
184 virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
185 fHistoMassBins = n ;
186 fHistoMassMax = max ;
187 fHistoMassMin = min ;
188 }
189
190 Int_t GetHistoMassBins() const { return fHistoMassBins ; }
191 Float_t GetHistoMassMin() const { return fHistoMassMin ; }
192 Float_t GetHistoMassMax() const { return fHistoMassMax ; }
193
194 //Asymetry
195 virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
196 fHistoAsymBins = n ;
197 fHistoAsymMax = max ;
198 fHistoAsymMin = min ;
199 }
200
201 Int_t GetHistoAsymmetryBins() const { return fHistoAsymBins ; }
202 Float_t GetHistoAsymmetryMin() const { return fHistoAsymMin ; }
203 Float_t GetHistoAsymmetryMax() const { return fHistoAsymMax ; }
204
477d6cee 205 private:
206
207 Bool_t fDataMC ; // Flag to access MC data when using ESD or AOD
208 Int_t fDebug ; // Debug level
209 Bool_t fCheckFidCut ; // Do analysis for clusters in defined region
210 Bool_t fCheckCaloPID ; // Do analysis for calorimeters
211 Bool_t fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
212 Float_t fMinPt ; // Maximum pt of (trigger) particles in the analysis
213 Float_t fMaxPt ; // Minimum pt of (trigger) particles in the analysis
591cc579 214
477d6cee 215 AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
216
217 TClonesArray* fInputAODBranch ; //! Selected input particles branch
218 TString fInputAODName ; // Name of input AOD branch;
219 TClonesArray* fOutputAODBranch ; //! Selected output particles branch
220 Bool_t fNewAOD ; // Flag, new aod branch added to the analysis or not.
221 TString fOutputAODName ; // Name of output AOD branch;
222 TString fOutputAODClassName; // Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)
591cc579 223 TString fAODObjArrayName ; // Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
a3aebfff 224 TString fAddToHistogramsName;// Add this string to histograms name
477d6cee 225
226 //TClonesArray* fAODCaloClusters ; //! selected PHOS/EMCAL CaloClusters
227 AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
228
229 //Analysis helper classes access pointers
230 AliCaloPID * fCaloPID; // PID calculation
ff45398a 231 AliFiducialCut * fFidCut; // Acceptance cuts
477d6cee 232 AliIsolationCut * fIC; // Isolation cut
233 AliMCAnalysisUtils * fMCUtils; // MonteCarlo Analysis utils
234 AliNeutralMesonSelection * fNMS; // Neutral Meson Selection
235
4a745797 236 //TList * fAnaOutContainer; // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame
237
477d6cee 238 //Histograms binning and range
5a2dbc3c 239 Int_t fHistoPtBins ; // Number of bins in pt axis
240 Float_t fHistoPtMax ; // Maximum value of pt histogram range
241 Float_t fHistoPtMin ; // Minimum value of pt histogram range
242 Int_t fHistoPhiBins ; // Number of bins in phi axis
243 Float_t fHistoPhiMax ; // Maximum value of phi histogram range
244 Float_t fHistoPhiMin ; // Minimum value of phi histogram range
245 Int_t fHistoEtaBins ; // Number of bins in eta axis
246 Float_t fHistoEtaMax ; // Maximum value of eta histogram range
247 Float_t fHistoEtaMin ; // Minimum value of eta histogram range
248 Int_t fHistoMassBins ; // Number of bins in mass axis
249 Float_t fHistoMassMax ; // Maximum value of mass histogram range
250 Float_t fHistoMassMin ; // Minimum value of mass histogram range
251 Int_t fHistoAsymBins ; // Number of bins in asymmetry axis
252 Float_t fHistoAsymMax ; // Maximum value of asymmetry histogram range
253 Float_t fHistoAsymMin ; // Minimum value of asymmetry histogram range
254
255 ClassDef(AliAnaPartCorrBaseClass,6)
477d6cee 256 } ;
1c5acb87 257
258
259#endif //ALIANAPARTCORRBASECLASS_H
260
261
262