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 */
7 //_________________________________________________________________________
8 // Base class for analysis algorithms
9 //-- Author: Gustavo Conesa (INFN-LNF)
20 class AliESDCaloCluster;
21 class AliAODCaloCluster;
22 class AliAODCaloCells;
23 #include "AliCaloTrackReader.h"
25 class AliFiducialCut ;
26 class AliIsolationCut ;
27 class AliMCAnalysisUtils ;
28 class AliNeutralMesonSelection ;
29 #include "AliCalorimeterUtils.h"
32 class AliGenEventHeader ;
33 #include "AliAODPWG4ParticleCorrelation.h"
34 class AliEMCALGeoUtils;
35 class AliPHOSGeoUtils;
37 class AliAnaPartCorrBaseClass : public TObject {
41 AliAnaPartCorrBaseClass() ; // default ctor
42 AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
43 AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
44 virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
46 // virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
47 virtual void AddAODParticle(AliAODPWG4Particle part) ;
49 // virtual void ConnectAODCaloClusters();
50 virtual void ConnectAODPHOSCells();
51 virtual void ConnectAODEMCALCells();
52 virtual void ConnectInputOutputAODBranches();
54 virtual TList * GetCreateOutputObjects() { return (new TList) ;}
55 //virtual TList * GetAnalysisOutputContainer() { return fAnaOutContainer ;}
57 virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }
58 virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
60 virtual void Init() {;}
61 virtual void InitParameters() ;
63 virtual void Print(const Option_t * ) const ;
65 virtual void MakeAnalysisFillAOD() {;}
67 virtual void MakeAnalysisFillHistograms() {;}
69 virtual void MakeMixingAnalysisFillHistograms() {;}
71 virtual Int_t GetDebug() const { return fDebug ; }
72 virtual void SetDebug(Int_t d) { fDebug = d ; }
74 virtual Int_t GetEventNumber() const ;
76 virtual AliCaloTrackReader * GetReader() const {return fReader ; }
77 virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
79 //Calorimeter helper class access methods
80 AliEMCALGeoUtils * GetEMCALGeometry() const { return fCaloUtils->GetEMCALGeometry(); }
81 AliPHOSGeoUtils * GetPHOSGeometry() const { return fCaloUtils->GetPHOSGeometry() ; }
83 Int_t GetModuleNumberCellIndexes(const Int_t absId, const TString calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const {
84 return fCaloUtils->GetModuleNumberCellIndexes(absId, calo, icol, irow,iRCU);}
85 Int_t GetModuleNumber(AliAODPWG4Particle * part) const {
86 return fCaloUtils->GetModuleNumber(part, fReader->GetInputEvent());}
87 Int_t GetModuleNumber(AliESDCaloCluster * cluster) const {
88 return fCaloUtils->GetModuleNumber(cluster);}
89 Int_t GetModuleNumber(AliAODCaloCluster * cluster) const {
90 return fCaloUtils->GetModuleNumber(cluster);}
92 virtual void Terminate(TList * /*outputList*/) {;}
95 virtual TClonesArray * GetCreateOutputAODBranch() ;
96 virtual TString GetInputAODName() const {return fInputAODName ; }
97 virtual void SetInputAODName(TString name) { fInputAODName = name; }
98 virtual TString GetOutputAODName() const {return fOutputAODName ; }
99 virtual void SetOutputAODName(TString name) { fNewAOD = kTRUE ; fOutputAODName = name; }
100 virtual Bool_t NewOutputAOD() const {return fNewAOD;}
101 virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
102 virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
103 virtual AliCalorimeterUtils * GetCaloUtils() const {return fCaloUtils ; }
104 void SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils ; }
106 virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
107 virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
109 virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
110 virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
111 virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
113 // virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
114 virtual TClonesArray* GetAODCaloClusters() const ;
115 virtual TClonesArray* GetAODTracks() const ;
116 virtual AliAODCaloCells* GetAODCaloCells() const {return fAODCaloCells ;}
118 virtual TObjArray* GetAODCTS() const ;
119 virtual TObjArray* GetAODEMCAL() const ;
120 virtual TObjArray* GetAODPHOS() const ;
122 virtual TString GetBaseParametersList();
124 virtual TNamed * GetEMCALCells() const ;
125 virtual TNamed * GetPHOSCells() const ;
127 virtual AliStack * GetMCStack() const ;
128 virtual AliHeader* GetMCHeader() const ;
129 virtual AliGenEventHeader* GetMCGenEventHeader() const ;
131 //Analysis helpers classes pointers setters and getters
132 virtual AliCaloPID * GetCaloPID() const {return fCaloPID ;}
133 virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
135 virtual AliFiducialCut * GetFiducialCut() const {return fFidCut ;}
136 virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
138 virtual AliIsolationCut * GetIsolationCut() const {return fIC ;}
139 virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
141 virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return fMCUtils ;}
142 virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}
144 virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return fNMS ;}
145 virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
147 virtual Bool_t IsDataMC() const {return fDataMC ; }
148 virtual void SwitchOnDataMC() {fDataMC = kTRUE ; }
149 virtual void SwitchOffDataMC() {fDataMC = kFALSE ; }
151 virtual Bool_t IsFiducialCutOn() const {return fCheckFidCut ; }
152 virtual void SwitchOnFiducialCut() { fCheckFidCut = kTRUE;}
153 virtual void SwitchOffFiducialCut() { fCheckFidCut = kFALSE;}
155 virtual Bool_t IsCaloPIDOn() const {return fCheckCaloPID ; }
156 virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
157 virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
159 virtual Bool_t IsCaloPIDRecalculationOn() const {return fRecalculateCaloPID ; }
160 virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID = kTRUE;}
161 virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID = kFALSE;}
163 virtual Float_t GetMaxPt() const {return fMaxPt ; }
164 virtual Float_t GetMinPt() const {return fMinPt ; }
165 virtual void SetMaxPt(Float_t pt) {fMaxPt = pt ; }
166 virtual void SetMinPt(Float_t pt) {fMinPt = pt ; }
167 virtual void SetPtCutRange(Double_t ptmin, Double_t ptmax)
168 { fMaxPt=ptmax; fMinPt=ptmin;}
170 //Histogrammes setters and getters
172 virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
178 virtual Int_t GetHistoPtBins() const { return fHistoPtBins; }
179 virtual Float_t GetHistoPtMin() const { return fHistoPtMin ; }
180 virtual Float_t GetHistoPtMax() const { return fHistoPtMax ; }
183 virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
189 virtual Int_t GetHistoPhiBins() const { return fHistoPhiBins; }
190 virtual Float_t GetHistoPhiMin() const { return fHistoPhiMin ; }
191 virtual Float_t GetHistoPhiMax() const { return fHistoPhiMax ; }
193 //Pseudorapidity-rapidity
194 virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
200 virtual Int_t GetHistoEtaBins() const { return fHistoEtaBins; }
201 virtual Float_t GetHistoEtaMin() const { return fHistoEtaMin ; }
202 virtual Float_t GetHistoEtaMax() const { return fHistoEtaMax ; }
205 virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
207 fHistoMassMax = max ;
208 fHistoMassMin = min ;
211 virtual Int_t GetHistoMassBins() const { return fHistoMassBins ; }
212 virtual Float_t GetHistoMassMin() const { return fHistoMassMin ; }
213 virtual Float_t GetHistoMassMax() const { return fHistoMassMax ; }
216 virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
218 fHistoAsymMax = max ;
219 fHistoAsymMin = min ;
222 virtual Int_t GetHistoAsymmetryBins() const { return fHistoAsymBins ; }
223 virtual Float_t GetHistoAsymmetryMin() const { return fHistoAsymMin ; }
224 virtual Float_t GetHistoAsymmetryMax() const { return fHistoAsymMax ; }
228 Bool_t fDataMC ; // Flag to access MC data when using ESD or AOD
229 Int_t fDebug ; // Debug level
230 Bool_t fCheckFidCut ; // Do analysis for clusters in defined region
231 Bool_t fCheckCaloPID ; // Do analysis for calorimeters
232 Bool_t fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
233 Float_t fMinPt ; // Maximum pt of (trigger) particles in the analysis
234 Float_t fMaxPt ; // Minimum pt of (trigger) particles in the analysis
236 AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
238 TClonesArray* fInputAODBranch ; //! Selected input particles branch
239 TString fInputAODName ; // Name of input AOD branch;
240 TClonesArray* fOutputAODBranch ; //! Selected output particles branch
241 Bool_t fNewAOD ; // Flag, new aod branch added to the analysis or not.
242 TString fOutputAODName ; // Name of output AOD branch;
243 TString fOutputAODClassName; // Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)
244 TString fAODObjArrayName ; // Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
245 TString fAddToHistogramsName;// Add this string to histograms name
247 //TClonesArray* fAODCaloClusters ; //! selected PHOS/EMCAL CaloClusters
248 AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
250 //Analysis helper classes access pointers
251 AliCaloPID * fCaloPID; //! PID calculation
252 AliFiducialCut * fFidCut; //! Acceptance cuts
253 AliIsolationCut * fIC; //! Isolation cut
254 AliMCAnalysisUtils * fMCUtils; //! MonteCarlo Analysis utils
255 AliNeutralMesonSelection * fNMS; //! Neutral Meson Selection
256 AliCalorimeterUtils * fCaloUtils ; // Pointer to CalorimeterUtils
258 //TList * fAnaOutContainer; // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame
260 //Histograms binning and range
261 Int_t fHistoPtBins ; // Number of bins in pt axis
262 Float_t fHistoPtMax ; // Maximum value of pt histogram range
263 Float_t fHistoPtMin ; // Minimum value of pt histogram range
264 Int_t fHistoPhiBins ; // Number of bins in phi axis
265 Float_t fHistoPhiMax ; // Maximum value of phi histogram range
266 Float_t fHistoPhiMin ; // Minimum value of phi histogram range
267 Int_t fHistoEtaBins ; // Number of bins in eta axis
268 Float_t fHistoEtaMax ; // Maximum value of eta histogram range
269 Float_t fHistoEtaMin ; // Minimum value of eta histogram range
270 Int_t fHistoMassBins ; // Number of bins in mass axis
271 Float_t fHistoMassMax ; // Maximum value of mass histogram range
272 Float_t fHistoMassMin ; // Minimum value of mass histogram range
273 Int_t fHistoAsymBins ; // Number of bins in asymmetry axis
274 Float_t fHistoAsymMax ; // Maximum value of asymmetry histogram range
275 Float_t fHistoAsymMin ; // Minimum value of asymmetry histogram range
277 ClassDef(AliAnaPartCorrBaseClass,7)
281 #endif //ALIANAPARTCORRBASECLASS_H