]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
Possibility to recalculate cluster position and correct for the non linearity of...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnaPartCorrBaseClass.h
... / ...
CommitLineData
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
11#include <cstdlib>
12
13 //ROOT
14class TClonesArray ;
15class TObjArray ;
16#include <TList.h>
17#include <TObject.h>
18class TObjString;
19
20 //Analysis
21class AliVCaloCells;
22#include "AliCaloTrackReader.h"
23#include "AliCaloPID.h"
24#include "AliFiducialCut.h"
25#include "AliIsolationCut.h"
26#include "AliMCAnalysisUtils.h"
27#include "AliNeutralMesonSelection.h"
28#include "AliCalorimeterUtils.h"
29class AliStack ;
30class AliHeader ;
31class AliGenEventHeader ;
32#include "AliAODPWG4ParticleCorrelation.h"
33class AliEMCALGeoUtils;
34class AliPHOSGeoUtils;
35#include "AliMixedEvent.h"
36
37class AliAnaPartCorrBaseClass : public TObject {
38
39public:
40 AliAnaPartCorrBaseClass() ; // default ctor
41 virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
42
43private:
44 AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
45 AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
46
47public:
48
49 virtual void AddAODParticle(AliAODPWG4Particle part) ;
50
51 virtual void ConnectInputOutputAODBranches();
52
53 virtual TList * GetCreateOutputObjects() { return (new TList) ;}
54
55 virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }
56 virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
57
58 virtual void Init() {;}
59 virtual void InitParameters() ;
60
61 virtual void Print(const Option_t * ) const ;
62
63 virtual void MakeAnalysisFillAOD() {;}
64
65 virtual void MakeAnalysisFillHistograms() {;}
66
67 virtual TObjString * GetAnalysisCuts() {return 0x0;}
68
69 virtual Int_t GetDebug() const { return fDebug ; }
70 virtual void SetDebug(Int_t d) { fDebug = d ; }
71
72 virtual Int_t GetEventNumber() const ;
73
74 virtual AliCaloTrackReader * GetReader() const {return fReader ; }
75 virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
76
77 //Calorimeter helper class access methods
78 AliEMCALGeoUtils * GetEMCALGeometry() const { return fCaloUtils->GetEMCALGeometry(); }
79 AliPHOSGeoUtils * GetPHOSGeometry() const { return fCaloUtils->GetPHOSGeometry() ; }
80
81 Int_t GetModuleNumberCellIndexes(const Int_t absId, const TString calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const {
82 return fCaloUtils->GetModuleNumberCellIndexes(absId, calo, icol, irow,iRCU);}
83 Int_t GetModuleNumber(AliAODPWG4Particle * part) const {
84 return fCaloUtils->GetModuleNumber(part, fReader->GetInputEvent());}
85 Int_t GetModuleNumber(AliVCluster * cluster) const {
86 return fCaloUtils->GetModuleNumber(cluster);}
87
88 virtual void Terminate(TList * /*outputList*/) {;}
89
90 //analysis AOD branch
91 virtual TClonesArray * GetCreateOutputAODBranch() ;
92 virtual TString GetInputAODName() const {return fInputAODName ; }
93 virtual void SetInputAODName(TString name) { fInputAODName = name; }
94 virtual TString GetOutputAODName() const {return fOutputAODName ; }
95 virtual void SetOutputAODName(TString name) { fNewAOD = kTRUE ; fOutputAODName = name; }
96 virtual Bool_t NewOutputAOD() const {return fNewAOD;}
97 virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
98 virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
99 virtual AliCalorimeterUtils * GetCaloUtils() const {return fCaloUtils ; }
100 void SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils ; }
101
102 virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
103 virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
104
105 virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
106 virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
107 virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
108
109 virtual TClonesArray* GetAODCaloClusters() const ;
110 virtual TClonesArray* GetAODTracks() const ;
111 virtual AliVCaloCells* GetPHOSCells() const {return fReader->GetPHOSCells() ;}
112 virtual AliVCaloCells* GetEMCALCells() const {return fReader->GetEMCALCells() ;}
113
114 virtual TObjArray* GetAODCTS() const ;
115 virtual TObjArray* GetAODEMCAL() const ;
116 virtual TObjArray* GetAODPHOS() const ;
117
118 virtual TString GetBaseParametersList();
119
120 virtual AliStack * GetMCStack() const ;
121 virtual AliHeader* GetMCHeader() const ;
122 virtual AliGenEventHeader* GetMCGenEventHeader() const ;
123
124 //Analysis helpers classes pointers setters and getters
125 virtual AliCaloPID * GetCaloPID() {if(!fCaloPID) fCaloPID = new AliCaloPID(); return fCaloPID ;}
126 virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
127
128 virtual AliFiducialCut * GetFiducialCut() {if(!fFidCut) fFidCut = new AliFiducialCut(); return fFidCut ;}
129 virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
130
131 virtual AliIsolationCut * GetIsolationCut() {if(!fIC) fIC = new AliIsolationCut(); return fIC ;}
132 virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
133
134 virtual AliMCAnalysisUtils * GetMCAnalysisUtils() {if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils(); return fMCUtils ;}
135 virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}
136
137 virtual AliNeutralMesonSelection * GetNeutralMesonSelection() {if(!fNMS) fNMS = new AliNeutralMesonSelection(); return fNMS ;}
138 virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
139
140 virtual Bool_t IsDataMC() {return fDataMC ; }
141 virtual void SwitchOnDataMC() {fDataMC = kTRUE ; if(!fMCUtils)fMCUtils = new AliMCAnalysisUtils();}
142 virtual void SwitchOffDataMC() {fDataMC = kFALSE ; }
143
144 virtual Bool_t IsFiducialCutOn() { return fCheckFidCut ; }
145 virtual void SwitchOnFiducialCut() { fCheckFidCut = kTRUE; if(!fFidCut)fFidCut = new AliFiducialCut();}
146 virtual void SwitchOffFiducialCut() { fCheckFidCut = kFALSE;}
147
148 virtual Bool_t IsCaloPIDOn() { return fCheckCaloPID ; }
149 virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE; if(!fCaloPID)fCaloPID = new AliCaloPID();}
150 virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
151
152 virtual Bool_t IsCaloPIDRecalculationOn() { return fRecalculateCaloPID ; }
153 virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID = kTRUE;}
154 virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID = kFALSE;}
155
156 virtual Float_t GetMaxPt() const {return fMaxPt ; }
157 virtual Float_t GetMinPt() const {return fMinPt ; }
158 virtual void SetMaxPt(Float_t pt) {fMaxPt = pt ; }
159 virtual void SetMinPt(Float_t pt) {fMinPt = pt ; }
160 virtual void SetPtCutRange(Double_t ptmin, Double_t ptmax)
161 { fMaxPt=ptmax; fMinPt=ptmin;}
162
163 //Histogrammes setters and getters
164 //Pt, Energy
165 virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
166 fHistoPtBins = n ;
167 fHistoPtMax = max ;
168 fHistoPtMin = min ;
169 }
170
171 virtual Int_t GetHistoPtBins() const { return fHistoPtBins; }
172 virtual Float_t GetHistoPtMin() const { return fHistoPtMin ; }
173 virtual Float_t GetHistoPtMax() const { return fHistoPtMax ; }
174
175 //Azimuthal angle
176 virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
177 fHistoPhiBins = n ;
178 fHistoPhiMax = max ;
179 fHistoPhiMin = min ;
180 }
181
182 virtual Int_t GetHistoPhiBins() const { return fHistoPhiBins; }
183 virtual Float_t GetHistoPhiMin() const { return fHistoPhiMin ; }
184 virtual Float_t GetHistoPhiMax() const { return fHistoPhiMax ; }
185
186 //Pseudorapidity-rapidity
187 virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
188 fHistoEtaBins = n ;
189 fHistoEtaMax = max ;
190 fHistoEtaMin = min ;
191 }
192
193 virtual Int_t GetHistoEtaBins() const { return fHistoEtaBins; }
194 virtual Float_t GetHistoEtaMin() const { return fHistoEtaMin ; }
195 virtual Float_t GetHistoEtaMax() const { return fHistoEtaMax ; }
196
197 //Mass
198 virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
199 fHistoMassBins = n ;
200 fHistoMassMax = max ;
201 fHistoMassMin = min ;
202 }
203
204 virtual Int_t GetHistoMassBins() const { return fHistoMassBins ; }
205 virtual Float_t GetHistoMassMin() const { return fHistoMassMin ; }
206 virtual Float_t GetHistoMassMax() const { return fHistoMassMax ; }
207
208 //Asymetry
209 virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
210 fHistoAsymBins = n ;
211 fHistoAsymMax = max ;
212 fHistoAsymMin = min ;
213 }
214
215 virtual Int_t GetHistoAsymmetryBins() const { return fHistoAsymBins ; }
216 virtual Float_t GetHistoAsymmetryMin() const { return fHistoAsymMin ; }
217 virtual Float_t GetHistoAsymmetryMax() const { return fHistoAsymMax ; }
218
219 virtual AliMixedEvent * GetMixedEvent() { return GetReader()->GetMixedEvent() ; }
220 virtual Int_t GetNMixedEvent() const { return GetReader()->GetNMixedEvent() ; }
221
222 virtual void GetVertex(Double_t vertex[3]) const { GetReader()->GetVertex(vertex) ; }
223 virtual void GetVertex(Double_t vertex[3],const Int_t evtIndex) const { GetReader()->GetVertex(vertex,evtIndex) ; }
224 virtual Double_t* GetVertex(const Int_t evtIndex) const { return GetReader()->GetVertex(evtIndex) ; }
225
226 virtual Bool_t IsTrackMatched(const AliVCluster * cluster) const { return fCaloPID->IsTrackMatched(cluster); }
227
228private:
229
230 Bool_t fDataMC ; // Flag to access MC data when using ESD or AOD
231 Int_t fDebug ; // Debug level
232 Bool_t fCheckFidCut ; // Do analysis for clusters in defined region
233 Bool_t fCheckCaloPID ; // Do analysis for calorimeters
234 Bool_t fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
235 Float_t fMinPt ; // Maximum pt of (trigger) particles in the analysis
236 Float_t fMaxPt ; // Minimum pt of (trigger) particles in the analysis
237
238 AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
239
240 TClonesArray* fInputAODBranch ; //! Selected input particles branch
241 TString fInputAODName ; // Name of input AOD branch;
242 TClonesArray* fOutputAODBranch ; //! Selected output particles branch
243 Bool_t fNewAOD ; // Flag, new aod branch added to the analysis or not.
244 TString fOutputAODName ; // Name of output AOD branch;
245 TString fOutputAODClassName; // Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)
246 TString fAODObjArrayName ; // Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
247 TString fAddToHistogramsName;// Add this string to histograms name
248
249 //Analysis helper classes access pointers
250 AliCaloPID * fCaloPID; //! PID calculation
251 AliFiducialCut * fFidCut; //! Acceptance cuts
252 AliIsolationCut * fIC; //! Isolation cut
253 AliMCAnalysisUtils * fMCUtils; //! MonteCarlo Analysis utils
254 AliNeutralMesonSelection * fNMS; //! Neutral Meson Selection
255 AliCalorimeterUtils * fCaloUtils ; // Pointer to CalorimeterUtils
256
257
258 //Histograms binning and range
259 Int_t fHistoPtBins ; // Number of bins in pt axis
260 Float_t fHistoPtMax ; // Maximum value of pt histogram range
261 Float_t fHistoPtMin ; // Minimum value of pt histogram range
262 Int_t fHistoPhiBins ; // Number of bins in phi axis
263 Float_t fHistoPhiMax ; // Maximum value of phi histogram range
264 Float_t fHistoPhiMin ; // Minimum value of phi histogram range
265 Int_t fHistoEtaBins ; // Number of bins in eta axis
266 Float_t fHistoEtaMax ; // Maximum value of eta histogram range
267 Float_t fHistoEtaMin ; // Minimum value of eta histogram range
268 Int_t fHistoMassBins ; // Number of bins in mass axis
269 Float_t fHistoMassMax ; // Maximum value of mass histogram range
270 Float_t fHistoMassMin ; // Minimum value of mass histogram range
271 Int_t fHistoAsymBins ; // Number of bins in asymmetry axis
272 Float_t fHistoAsymMax ; // Maximum value of asymmetry histogram range
273 Float_t fHistoAsymMin ; // Minimum value of asymmetry histogram range
274
275 ClassDef(AliAnaPartCorrBaseClass,9)
276} ;
277
278
279#endif //ALIANAPARTCORRBASECLASS_H
280
281
282