Move histogram setting ranges from analysis modules to base class (to be moved to...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnaPartCorrBaseClass.h
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 //-Add the possibality for event selection analysis based on vertex and multiplicity bins (Yaxian Mao, 10/10/2010)
11 #include <cstdlib>
12
13   //ROOT
14 class TClonesArray ;
15 class TObjArray ;
16 #include <TList.h> 
17 #include <TObject.h>
18 class TObjString;
19
20   //Analysis
21 class 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" 
29 class AliStack ; 
30 class AliHeader ; 
31 class AliGenEventHeader ; 
32 #include "AliAODPWG4ParticleCorrelation.h"
33 class AliEMCALGeometry;
34 class AliPHOSGeoUtils;
35 #include "AliMixedEvent.h" 
36 #include "AliCentrality.h"
37 #include "AliEventplane.h"
38
39 class AliAnaPartCorrBaseClass : public TObject {
40         
41 public:   
42   AliAnaPartCorrBaseClass() ; // default ctor
43   virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
44   
45 private:
46   AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
47   AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
48   
49 public:
50
51   
52   //General methods, to be declared in deriving classes if needed
53   
54   virtual void Init() {;}
55   virtual void InitParameters() ;
56   
57   virtual void Print(const Option_t * ) const ;
58   
59   virtual void MakeAnalysisFillAOD()  {;}
60   
61   virtual void MakeAnalysisFillHistograms() {;}
62         
63   virtual void Terminate(TList * /*outputList*/) {;}
64     
65   
66   //Histograms, cuts 
67   virtual TList * GetCreateOutputObjects()              { return (new TList)          ; }
68         
69   virtual void AddToHistogramsName(TString add)         { fAddToHistogramsName = add  ; }  
70   virtual TString GetAddedHistogramsStringToName()const { return fAddToHistogramsName ; }
71   
72   virtual TObjString * GetAnalysisCuts()                { return 0x0                  ; }
73   TString       GetBaseParametersList();
74
75   //Getters, setters
76   virtual Int_t GetDebug()                        const { return fDebug               ; }
77   virtual void  SetDebug(Int_t d)                       { fDebug = d                  ; }
78
79   virtual Int_t GetEventNumber() const ;
80
81   virtual AliCaloTrackReader * GetReader()            const { return fReader   ; }
82   virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
83     
84   //Calorimeter specific access methods
85   AliCalorimeterUtils * GetCaloUtils()            const { return fCaloUtils                     ; }
86   void    SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils                ; }     
87
88   AliEMCALGeometry *  GetEMCALGeometry()          const { return fCaloUtils->GetEMCALGeometry() ; }
89   AliPHOSGeoUtils  *  GetPHOSGeometry()           const { return fCaloUtils->GetPHOSGeometry()  ; }
90   
91   Int_t GetModuleNumberCellIndexes(const Int_t absId, const TString calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const {
92           return fCaloUtils->GetModuleNumberCellIndexes(absId, calo, icol, irow,iRCU);}
93   Int_t GetModuleNumber(AliAODPWG4Particle * part) const {
94           return fCaloUtils->GetModuleNumber(part, fReader->GetInputEvent());}
95   Int_t GetModuleNumber(AliVCluster * cluster)     const {
96           return fCaloUtils->GetModuleNumber(cluster);}
97         
98   //Centrality
99   AliCentrality* GetCentrality()       const { return fReader->GetCentrality()       ; }
100   Int_t          GetEventCentrality()  const { return fReader->GetEventCentrality()  ; }
101         
102   //Event plane
103   AliEventplane* GetEventPlane()       const { return fReader->GetEventPlane()       ; }           
104   TString        GetEventPlaneMethod() const { return fReader->GetEventPlaneMethod() ; }
105   
106   //AOD branch
107   virtual void AddAODParticle(AliAODPWG4Particle part) ;
108   virtual void ConnectInputOutputAODBranches();
109   
110   virtual TClonesArray * GetCreateOutputAODBranch() ;
111   virtual TString GetInputAODName()          const { return fInputAODName  ; }
112   virtual void SetInputAODName(TString name)       { fInputAODName = name  ; }  
113   virtual TString GetOutputAODName()         const { return fOutputAODName ; }
114   virtual void SetOutputAODName(TString name)      { fNewAOD = kTRUE ; fOutputAODName = name; }
115   virtual Bool_t NewOutputAOD()              const { return fNewAOD        ; }
116   virtual TString GetOutputAODClassName()    const { return fOutputAODClassName ; }
117   virtual void SetOutputAODClassName(TString name) { fOutputAODClassName = name ; }
118         
119   virtual TString GetAODObjArrayName()       const { return fAODObjArrayName ; }
120   virtual void SetAODObjArrayName(TString name)    { fAODObjArrayName = name ; }
121   
122   virtual TClonesArray* GetInputAODBranch()  const { return fInputAODBranch  ; }
123   virtual TClonesArray* GetOutputAODBranch() const { if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ; }
124   virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
125         
126   //Track cluster arrays access methods
127   virtual TClonesArray*  GetAODCaloClusters() const ;
128   virtual TClonesArray*  GetAODTracks()       const ;   
129   virtual AliVCaloCells* GetPHOSCells()       const { return fReader->GetPHOSCells()  ;}
130   virtual AliVCaloCells* GetEMCALCells()      const { return fReader->GetEMCALCells() ;}
131   virtual TObjArray*     GetCTSTracks()       const ;
132   virtual TObjArray*     GetEMCALClusters()   const ;
133   virtual TObjArray*     GetPHOSClusters()    const ;
134   
135   //MC event acces methods
136   virtual AliStack *                 GetMCStack()          const ;
137   virtual AliHeader*                 GetMCHeader()         const ;
138   virtual AliGenEventHeader        * GetMCGenEventHeader() const ;
139   
140   //Analysis helpers classes pointers setters and getters
141   virtual AliCaloPID               * GetCaloPID()                { if(!fCaloPID) fCaloPID = new AliCaloPID();           return  fCaloPID ; }
142   virtual AliFiducialCut           * GetFiducialCut()            { if(!fFidCut)  fFidCut = new AliFiducialCut();        return  fFidCut  ; }
143   virtual AliIsolationCut          * GetIsolationCut()           { if(!fIC)      fIC = new AliIsolationCut();           return  fIC      ; }
144   virtual AliMCAnalysisUtils       * GetMCAnalysisUtils()        { if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils();   return  fMCUtils ; }
145   virtual AliNeutralMesonSelection * GetNeutralMesonSelection()  { if(!fNMS)     fNMS = new AliNeutralMesonSelection(); return  fNMS     ; }
146
147   virtual void SetCaloPID(AliCaloPID * const pid)                             { fCaloPID = pid     ; }
148   virtual void SetFiducialCut(AliFiducialCut * const fc)                      { fFidCut  = fc      ; }
149   virtual void SetIsolationCut(AliIsolationCut * const ic)                    { fIC      = ic      ; }
150   virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils)         { fMCUtils = mcutils ; }  
151   virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS     = nms     ; }
152         
153   virtual Bool_t IsDataMC()                   const { return fDataMC                ; }
154   virtual void   SwitchOnDataMC()                   { fDataMC = kTRUE ; if(!fMCUtils)fMCUtils = new AliMCAnalysisUtils();}
155   virtual void   SwitchOffDataMC()                  { fDataMC = kFALSE              ; }
156   
157   virtual Bool_t IsFiducialCutOn()            const { return fCheckFidCut           ; }
158   virtual void   SwitchOnFiducialCut()              { fCheckFidCut = kTRUE;  if(!fFidCut)fFidCut = new AliFiducialCut();}
159   virtual void   SwitchOffFiducialCut()             { fCheckFidCut = kFALSE         ; }
160     
161   virtual Bool_t IsCaloPIDOn()                const { return fCheckCaloPID          ; }
162   virtual void   SwitchOnCaloPID()                  { fCheckCaloPID = kTRUE; if(!fCaloPID)fCaloPID = new AliCaloPID();}
163   virtual void   SwitchOffCaloPID()                 { fCheckCaloPID = kFALSE        ; }
164   
165   virtual Bool_t IsCaloPIDRecalculationOn()   const { return fRecalculateCaloPID    ; }
166   virtual void   SwitchOnCaloPIDRecalculation()     { fRecalculateCaloPID  = kTRUE  ; }
167   virtual void   SwitchOffCaloPIDRecalculation()    { fRecalculateCaloPID  = kFALSE ; }
168   
169   //Cluster energy/momentum cut
170   virtual Float_t GetMaxPt()          const { return fMaxPt ; }
171   virtual Float_t GetMinPt()          const { return fMinPt ; }
172   virtual void    SetMaxPt(Float_t pt)      { fMaxPt = pt   ; }
173   virtual void    SetMinPt(Float_t pt)      { fMinPt = pt   ; }
174   virtual void    SetPtCutRange(Double_t ptmin, Double_t ptmax)
175   {  fMaxPt=ptmax;   fMinPt=ptmin; }
176   
177   virtual Float_t GetMaxEnergy()      const { return fMaxPt ; }
178   virtual Float_t GetMinEnergy()      const { return fMinPt ; }
179   virtual void    SetMaxEnergy(Float_t e)   { fMaxPt = e    ; }
180   virtual void    SetMinEnergy(Float_t e)   { fMinPt = e    ; }
181   virtual void    SetEnergyCutRange(Double_t emin, Double_t emax)
182   {  fMaxPt=emax;   fMinPt=emin; }
183   
184   //Cluster Pairs Time cut  
185   virtual void    SetPairTimeCut(Float_t t) { fPairTimeCut  = t   ; } //ns
186   virtual Float_t GetPairTimeCut()    const { return fPairTimeCut ; } //ns
187
188   //Setters for parameters of event buffers
189   virtual void SetMultiBin(Int_t n=1)    { fMultiBin  = n ;} //number of bins in Multiplicity  
190   virtual void SetNZvertBin(Int_t n=1)   { fNZvertBin = n ;} //number of bins for vertex position
191   virtual void SetNRPBin(Int_t n=1)      { fNrpBin    = n ;} //number of bins in reaction plain  
192   virtual void SetNCentrBin(Int_t n=1)   { fNCentrBin = n ;} //number of bins in centrality 
193   virtual void SetNMaxEvMix(Int_t n=20)  { fNmaxMixEv = n ;} //maximal number of events for mixing
194   virtual void SetMultiplicity(Int_t multimin, Int_t multimax) {fMinMulti = multimin ; fMaxMulti = multimax ; }
195   virtual void SwitchOnEventSelection()  { fUseSelectEvent = kTRUE  ; }
196   virtual void SwitchOffEventSelection() { fUseSelectEvent = kFALSE ; } 
197   //Getters for event selection
198   virtual Int_t   GetMultiBin()    const { return fMultiBin  ; } //number of bins in Multiplicity 
199   virtual Int_t   GetNZvertBin()   const { return fNZvertBin ; } //number of bins in vertex   
200   virtual Int_t   GetNRPBin()      const { return fNrpBin    ; } //number of bins in reaction plain 
201   virtual Int_t   GetNCentrBin()   const { return fNCentrBin ; } //number of bins in centrality
202   virtual Int_t   GetNMaxEvMix()   const { return fNmaxMixEv ; } //maximal number of events for mixin
203   virtual Float_t GetZvertexCut()  const { return GetReader()->GetZvertexCut();} //cut on vertex position  
204   virtual Int_t   GetMaxMulti()    const { return fMaxMulti  ; }  
205   virtual Int_t   GetMinMulti()    const { return fMinMulti  ; }  
206   
207   // Do correlation analysis with different event buffers
208   virtual Bool_t DoEventSelect()  const { return fUseSelectEvent ; }
209   
210   //Mixed event
211   virtual AliMixedEvent * GetMixedEvent()         { return GetReader()->GetMixedEvent()  ; } 
212   virtual Int_t           GetNMixedEvent()  const { return GetReader()->GetNMixedEvent() ; } 
213   
214   //Vertex methods
215   virtual void      GetVertex(Double_t vertex[3]) const { GetReader()->GetVertex(vertex) ; } 
216   virtual void      GetVertex(Double_t vertex[3],const Int_t evtIndex) const { GetReader()->GetVertex(vertex,evtIndex)       ; } 
217   virtual Double_t* GetVertex(const Int_t evtIndex)             const { return GetReader()->GetVertex(evtIndex)              ; } 
218   
219         virtual Bool_t    IsTrackMatched(const AliVCluster * cluster) const { return fCaloPID->IsTrackMatched(cluster, fCaloUtils) ; } 
220   
221   //MULTIPLICITY
222   Int_t GetTrackMultiplicity()      const { return fReader->GetTrackMultiplicity() ; }
223   //VZERO
224   Int_t GetV0Signal(Int_t i )       const { return fReader->GetV0Signal(i)         ; }
225   Int_t GetV0Multiplicity(Int_t i ) const { return fReader->GetV0Multiplicity(i)   ; }
226   
227   
228   //Histogrammes setters and getters (move to independend class to hold the parameters soon)
229   
230   //Pt, Energy 
231   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
232     fHistoPtBins = n ;
233     fHistoPtMax = max ;
234     fHistoPtMin = min ;
235   }
236   
237   virtual Int_t   GetHistoPtBins() const { return fHistoPtBins ; }
238   virtual Float_t GetHistoPtMin()  const { return fHistoPtMin  ; }
239   virtual Float_t GetHistoPtMax()  const { return fHistoPtMax  ; }
240   virtual void SetHistoEnergyRangeAndNBins(Float_t min, Float_t max, Int_t n) {
241     SetHistoPtRangeAndNBins(min, max, n);
242   }
243   
244   virtual Int_t   GetHistoEnergyBins() const { return fHistoPtBins ; }
245   virtual Float_t GetHistoEnergyMin()  const { return fHistoPtMin  ; }
246   virtual Float_t GetHistoEnergyMax()  const { return fHistoPtMax  ; }
247   
248     //Azimuthal angle
249   virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
250     fHistoPhiBins  = n ;
251     fHistoPhiMax   = max ;
252     fHistoPhiMin   = min ;
253   }
254   
255   virtual Int_t   GetHistoPhiBins()  const { return fHistoPhiBins; }
256   virtual Float_t GetHistoPhiMin()   const { return fHistoPhiMin ; }
257   virtual Float_t GetHistoPhiMax()   const { return fHistoPhiMax ; }
258   
259   //Pseudorapidity-rapidity
260   virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
261     fHistoEtaBins = n ;
262     fHistoEtaMax  = max ;
263     fHistoEtaMin  = min ;
264   }
265   
266   virtual Int_t   GetHistoEtaBins()  const { return fHistoEtaBins; }
267   virtual Float_t GetHistoEtaMin()   const { return fHistoEtaMin ; }
268   virtual Float_t GetHistoEtaMax()   const { return fHistoEtaMax ; }
269   
270   //Mass
271   virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
272     fHistoMassBins = n ;
273     fHistoMassMax  = max ;
274     fHistoMassMin  = min ;
275   }
276         
277   virtual Int_t   GetHistoMassBins()  const { return fHistoMassBins ; }
278   virtual Float_t GetHistoMassMin()   const { return fHistoMassMin  ; }
279   virtual Float_t GetHistoMassMax()   const { return fHistoMassMax  ; }
280         
281   //Asymetry
282   virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
283     fHistoAsymBins = n ;
284     fHistoAsymMax  = max ;
285     fHistoAsymMin  = min ;
286   }
287         
288   virtual Int_t   GetHistoAsymmetryBins()  const { return fHistoAsymBins ; }
289   virtual Float_t GetHistoAsymmetryMin()   const { return fHistoAsymMin  ; }
290   virtual Float_t GetHistoAsymmetryMax()   const { return fHistoAsymMax  ; }    
291   
292   
293   //VZero
294   virtual void SetHistoV0SignalRangeAndNBins(Int_t min, Int_t max, Int_t n) {
295     fHistoV0SBins = n ;
296     fHistoV0SMax  = max ;
297     fHistoV0SMin  = min ;
298   }
299         
300   virtual Int_t GetHistoV0SignalBins()  const { return fHistoV0SBins ; }
301   virtual Int_t GetHistoV0SignalMin()   const { return fHistoV0SMin  ; }
302   virtual Int_t GetHistoV0SignalMax()   const { return fHistoV0SMax  ; }
303         
304   virtual void SetHistoV0MultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n) {
305     fHistoV0MBins = n ;
306     fHistoV0MMax  = max ;
307     fHistoV0MMin  = min ;
308   }
309         
310   virtual Int_t GetHistoV0MultiplicityBins()  const { return fHistoV0MBins ; }
311   virtual Int_t GetHistoV0MultiplicityMin()   const { return fHistoV0MMin  ; }
312   virtual Int_t GetHistoV0MultiplicityMax()   const { return fHistoV0MMax  ; }
313   
314   virtual void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n) {
315     fHistoTrMBins = n ;
316     fHistoTrMMax  = max ;
317     fHistoTrMMin  = min ;
318   }
319         
320   virtual Int_t GetHistoTrackMultiplicityBins()  const { return fHistoTrMBins ; }
321   virtual Int_t GetHistoTrackMultiplicityMin()   const { return fHistoTrMMin  ; }
322   virtual Int_t GetHistoTrackMultiplicityMax()   const { return fHistoTrMMax  ; }
323   
324   
325   Int_t   GetHistoFinePtBins()           const { return fHistoFinePtBins     ; }
326   Float_t GetHistoFinePtMin()            const { return fHistoFinePtMin      ; }
327   Float_t GetHistoFinePtMax()            const { return fHistoFinePtMax      ; }        
328   
329   Int_t   GetHistodEdxBins()             const { return fHistodEdxBins       ; }
330   Float_t GetHistodEdxMin()              const { return fHistodEdxMin        ; }
331   Float_t GetHistodEdxMax()              const { return fHistodEdxMax        ; }        
332   
333   Int_t   GetHistoNClusterCellBins()     const { return fHistoNBins          ; }
334   Int_t   GetHistoNClusterCellMin()      const { return fHistoNMin           ; }
335   Int_t   GetHistoNClusterCellMax()      const { return fHistoNMax           ; }        
336   
337   Int_t   GetHistoPOverEBins()           const { return fHistoPOverEBins     ; }
338   Float_t GetHistoPOverEMin()            const { return fHistoPOverEMin      ; }
339   Float_t GetHistoPOverEMax()            const { return fHistoPOverEMax      ; }
340         
341   Int_t   GetHistodRBins()               const { return fHistodRBins         ; }
342   Float_t GetHistodRMin()                const { return fHistodRMin          ; }
343   Float_t GetHistodRMax()                const { return fHistodRMax          ; }        
344   
345   Int_t   GetHistoTimeBins()             const { return fHistoTimeBins       ; }
346   Float_t GetHistoTimeMin()              const { return fHistoTimeMin        ; }
347   Float_t GetHistoTimeMax()              const { return fHistoTimeMax        ; }        
348   
349   Int_t   GetHistoRatioBins()            const { return fHistoRatioBins      ; }
350   Float_t GetHistoRatioMin()             const { return fHistoRatioMin       ; }
351   Float_t GetHistoRatioMax()             const { return fHistoRatioMax       ; }        
352   
353   Int_t   GetHistoVertexDistBins()       const { return fHistoVertexDistBins ; }
354   Float_t GetHistoVertexDistMin()        const { return fHistoVertexDistMin  ; }
355   Float_t GetHistoVertexDistMax()        const { return fHistoVertexDistMax  ; }        
356   
357   Int_t   GetHistoRBins()                const { return fHistoRBins          ; }
358   Float_t GetHistoRMin()                 const { return fHistoRMin           ; }
359   Float_t GetHistoRMax()                 const { return fHistoRMax           ; }          
360   
361   Int_t   GetHistoXBins()                const { return fHistoXBins          ; }
362   Float_t GetHistoXMin()                 const { return fHistoXMin           ; }
363   Float_t GetHistoXMax()                 const { return fHistoXMax           ; }
364   
365   Int_t   GetHistoYBins()                const { return fHistoYBins          ; }
366   Float_t GetHistoYMin()                 const { return fHistoYMin           ; }
367   Float_t GetHistoYMax()                 const { return fHistoYMax           ; }        
368   
369   Int_t   GetHistoZBins()                const { return fHistoZBins          ; }
370   Float_t GetHistoZMin()                 const { return fHistoZMin           ; }
371   Float_t GetHistoZMax()                 const { return fHistoZMax           ; }        
372         
373   Int_t   GetHistoShowerShapeBins()      const { return fHistoSSBins         ; }
374   Float_t GetHistoShowerShapeMin()       const { return fHistoSSMin          ; }
375   Float_t GetHistoShowerShapeMax()       const { return fHistoSSMax          ; }        
376   
377   Int_t   GetHistoDiffTimeBins()         const { return fHistoDiffTimeBins   ; }
378         Float_t GetHistoDiffTimeMin()          const { return fHistoDiffTimeMin    ; }
379         Float_t GetHistoDiffTimeMax()          const { return fHistoDiffTimeMax    ; }  
380   
381   
382   virtual void SetHistoPOverERangeAndNBins      (Float_t min, Float_t max, Int_t n) {
383     fHistoPOverEBins     = n ; fHistoPOverEMax     = max ; fHistoPOverEMin     = min ; }
384   
385   virtual void SetHistoFinePtRangeAndNBins      (Float_t min, Float_t max, Int_t n) {
386     fHistoFinePtBins     = n ; fHistoFinePtMax     = max ; fHistoFinePtMin     = min ; }
387   
388   virtual void SetHistodEdxRangeAndNBins        (Float_t min, Float_t max, Int_t n) {
389     fHistodEdxBins       = n ; fHistodEdxMax       = max ; fHistodEdxMin       = min ; }
390   
391   virtual void SetHistodRRangeAndNBins          (Float_t min, Float_t max, Int_t n) {
392     fHistodRBins         = n ; fHistodRMax         = max ; fHistodRMin         = min ; }
393   
394   virtual void SetHistoTimeRangeAndNBins        (Float_t min, Float_t max, Int_t n) {
395     fHistoTimeBins       = n ; fHistoTimeMax       = max ; fHistoTimeMin       = min ; }        
396   
397   virtual void SetHistoNClusterCellRangeAndNBins(Int_t   min, Int_t   max, Int_t n) {
398     fHistoNBins          = n ; fHistoNMax          = max ; fHistoNMin          = min ; }
399   
400   virtual void SetHistoRatioRangeAndNBins       (Float_t min, Float_t max, Int_t n) {
401     fHistoRatioBins      = n ; fHistoRatioMax      = max ; fHistoRatioMin      = min ; }
402   
403   virtual void SetHistoVertexDistRangeAndNBins  (Float_t min, Float_t max, Int_t n) { 
404     fHistoVertexDistBins = n ; fHistoVertexDistMax = max ; fHistoVertexDistMin = min ; }
405   
406   virtual void SetHistoXRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
407     fHistoXBins          = n ; fHistoXMax          = max ; fHistoXMin          = min ; }
408   
409   virtual void SetHistoYRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
410     fHistoYBins          = n ; fHistoYMax          = max ; fHistoYMin          = min ; }
411   
412   virtual void SetHistoZRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
413     fHistoZBins         = n ; fHistoZMax           = max ; fHistoZMin          = min ; }
414   
415   virtual void SetHistoRRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
416     fHistoRBins         = n ; fHistoRMax           = max ; fHistoRMin          = min ; }
417   
418   virtual void SetHistoShowerShapeRangeAndNBins (Float_t min, Float_t max, Int_t n) {
419     fHistoSSBins        = n ; fHistoSSMax          = max ; fHistoSSMin        = min ; }
420   
421   void         SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n) {
422     fHistoDiffTimeBins  = n ; fHistoDiffTimeMax   = max ; fHistoDiffTimeMin   = min   ; }
423           
424   void   SwitchOnPlotsMaking()  { fMakePlots = kTRUE  ; }
425   void   SwitchOffPlotsMaking() { fMakePlots = kFALSE ; }
426   Bool_t MakePlotsOn()    const { return fMakePlots   ; }
427   
428 private:    
429   
430   Bool_t   fDataMC ;             // Flag to access MC data when using ESD or AOD     
431   Int_t    fDebug ;              // Debug level
432   Bool_t   fCheckFidCut ;        // Do analysis for clusters in defined region         
433   Bool_t   fCheckCaloPID ;       // Do analysis for calorimeters
434   Bool_t   fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
435   Float_t  fMinPt ;              // Maximum pt of (trigger) particles in the analysis
436   Float_t  fMaxPt ;              // Minimum pt of (trigger) particles in the analysis
437   Float_t  fPairTimeCut;         // Maximum difference between time of cluster pairs (ns)
438   Int_t    fMultiBin ;           // Number of bins in event container for multiplicity
439   Int_t    fNZvertBin ;          // Number of bins in event container for vertex position
440   Int_t    fNrpBin ;               // Number of bins in event container for reaction plain
441   Int_t    fNCentrBin ;          // Number of bins in event container for centrality
442   Int_t    fNmaxMixEv ;          // Maximal number of events stored in buffer for mixing
443   Int_t    fMaxMulti ;           // Maximum multiplicity of particles in the analysis
444   Int_t    fMinMulti ;           // Maximum multiplicity of particles in the analysis
445   Bool_t   fUseSelectEvent ;     // Select events based on multiplicity and vertex cuts
446   Bool_t   fMakePlots   ;        // Print plots
447
448         
449   AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
450   
451   TClonesArray* fInputAODBranch ;    //! Selected input particles branch
452   TString       fInputAODName ;      //  Name of input AOD branch;
453   TClonesArray* fOutputAODBranch ;   //! Selected output particles branch
454   Bool_t        fNewAOD ;            //  Flag, new aod branch added to the analysis or not.
455   TString       fOutputAODName ;     //  Name of output AOD branch;
456   TString       fOutputAODClassName; //  Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)   
457   TString       fAODObjArrayName ;   //  Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
458   TString       fAddToHistogramsName;//  Add this string to histograms name
459   
460   //Analysis helper classes access pointers
461   AliCaloPID               * fCaloPID; // PID calculation
462   AliFiducialCut           * fFidCut;  // Acceptance cuts
463   AliIsolationCut          * fIC;      // Isolation cut 
464   AliMCAnalysisUtils       * fMCUtils; // MonteCarlo Analysis utils 
465   AliNeutralMesonSelection * fNMS;     // Neutral Meson Selection
466   AliCalorimeterUtils      * fCaloUtils ; // Pointer to CalorimeterUtils
467
468   //Histograms binning and range    
469   Int_t    fHistoPtBins   ;  // Number of bins in pt axis
470   Float_t  fHistoPtMax    ;  // Maximum value of pt histogram range
471   Float_t  fHistoPtMin    ;  // Minimum value of pt histogram range
472   Int_t    fHistoPhiBins  ;  // Number of bins in phi axis
473   Float_t  fHistoPhiMax   ;  // Maximum value of phi histogram range
474   Float_t  fHistoPhiMin   ;  // Minimum value of phi histogram range
475   Int_t    fHistoEtaBins  ;  // Number of bins in eta axis
476   Float_t  fHistoEtaMax   ;  // Maximum value of eta histogram range
477   Float_t  fHistoEtaMin   ;  // Minimum value of eta histogram range
478   Int_t    fHistoMassBins ;  // Number of bins in mass axis
479   Float_t  fHistoMassMax  ;  // Maximum value of mass histogram range
480   Float_t  fHistoMassMin  ;  // Minimum value of mass histogram range
481   Int_t    fHistoAsymBins ;  // Number of bins in asymmetry axis
482   Float_t  fHistoAsymMax  ;  // Maximum value of asymmetry histogram range
483   Float_t  fHistoAsymMin  ;  // Minimum value of asymmetry histogram range
484   Int_t    fHistoV0SBins  ;  // Number of bins in V0 signal axis
485   Int_t    fHistoV0SMax   ;  // Maximum value of V0 signal histogram range
486   Int_t    fHistoV0SMin   ;  // Minimum value of V0 signal histogram range
487   Int_t    fHistoV0MBins  ;  // Number of bins in V0 multiplicity axis
488   Int_t    fHistoV0MMax   ;  // Maximum value of V0 multiplicity histogram range
489   Int_t    fHistoV0MMin   ;  // Minimum value of V0 multiplicity histogram range
490   Int_t    fHistoTrMBins  ;  // Number of bins in V0 multiplicity axis
491   Int_t    fHistoTrMMax   ;  // Maximum value of track multiplicity histogram range
492   Int_t    fHistoTrMMin   ;  // Minimum value of track multiplicity histogram range
493   Int_t    fHistoFinePtBins;                  // fine binning for fhAmpId histogram
494   Float_t  fHistoFinePtMax;                   // maximum pt value for fhAmpId histogram
495   Float_t  fHistoFinePtMin;                   // minimum pt value for fhAmpId histogram
496   Int_t    fHistoPOverEBins;                  // p/E histogram number of bins
497   Float_t  fHistoPOverEMax;                   // p/E maximum value
498   Float_t  fHistoPOverEMin;                   // p/E minimum value
499   Int_t    fHistodEdxBins;                    // dEdx histogram number of bins
500   Float_t  fHistodEdxMax;                     // dEdx maximum value
501   Float_t  fHistodEdxMin;                     // dEdx minimum value
502   Int_t    fHistodRBins;                      // dR histogram number of bins
503   Float_t  fHistodRMax;                       // dR maximum value
504   Float_t  fHistodRMin;                       // dR minimum value
505   Int_t    fHistoTimeBins;                    // cell time histogram number of bins
506   Float_t  fHistoTimeMax;                     // cell time maximum value
507   Float_t  fHistoTimeMin;                     // cell time minimum value
508   Int_t    fHistoNBins;                       // number of clusters/cells histogram number of bins
509   Int_t    fHistoNMax;                        // number maximum value
510   Int_t    fHistoNMin;                        // number minimum value
511   Int_t    fHistoRatioBins;                   // ratio histogram number of bins
512   Float_t  fHistoRatioMax;                    // ratio maximum value
513   Float_t  fHistoRatioMin;                    // ratio minimum value
514   Int_t    fHistoVertexDistBins;              // vertex distance histogram number of bins
515   Float_t  fHistoVertexDistMax;               // vertex distance maximum value
516   Float_t  fHistoVertexDistMin;               // vertex distance minimum value  
517   Int_t    fHistoRBins;                       // r =sqrt(x^2+y^2+z^2) (cm) position histogram number of bins
518   Float_t  fHistoRMax;                        // r =sqrt(x^2+y^2+z^2) (cm)  maximum value
519   Float_t  fHistoRMin;                        // r =sqrt(x^2+y^2+z^2) (cm)  minimum value       
520   Int_t    fHistoXBins;                       // x (cm) position histogram number of bins
521   Float_t  fHistoXMax;                        // x (cm) position maximum value
522   Float_t  fHistoXMin;                        // x (cm) position minimum value
523   Int_t    fHistoYBins;                       // y (cm) position histogram number of bins
524   Float_t  fHistoYMax;                        // y (cm) position maximum value
525   Float_t  fHistoYMin;                        // y (cm) position minimum value
526   Int_t    fHistoZBins;                       // z (cm) position histogram number of bins
527   Float_t  fHistoZMax;                        // z (cm) position maximum value
528   Float_t  fHistoZMin;                        // z (cm) position minimum value
529   Int_t    fHistoSSBins;                      // Shower Shape parameter histogram number of bins
530   Float_t  fHistoSSMax;                       // Shower Shape parameter position maximum value
531   Float_t  fHistoSSMin;                       // Shower Shape parameter position minimum value
532   Int_t    fHistoDiffTimeBins;                // Difference cluster pair time parameter histogram number of bins
533   Float_t  fHistoDiffTimeMax;                 // Difference cluster pair time parameter position maximum value
534   Float_t  fHistoDiffTimeMin;                 // Difference cluster pair time parameter position minimum value  
535   
536   ClassDef(AliAnaPartCorrBaseClass,18)
537 } ;
538
539
540 #endif //ALIANAPARTCORRBASECLASS_H
541
542
543