]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
Base class: Some more bins and ranges added
[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 fHistoNClusCellBins  ; }
334   Int_t   GetHistoNClusterCellMin()      const { return fHistoNClusCellMin   ; }
335   Int_t   GetHistoNClusterCellMax()      const { return fHistoNClusCellMax   ; }        
336   
337   Int_t   GetHistoNClustersBins()        const { return fHistoNClustersBins  ; }
338   Int_t   GetHistoNClustersMin()         const { return fHistoNClustersMin   ; }
339   Int_t   GetHistoNClustersMax()         const { return fHistoNClustersMax   ; }        
340   
341   Int_t   GetHistoNCellsBins()           const { return fHistoNCellsBins     ; }
342   Int_t   GetHistoNCellsMin()            const { return fHistoNCellsMin      ; }
343   Int_t   GetHistoNCellsMax()            const { return fHistoNCellsMax      ; }        
344   
345   Int_t   GetHistoPOverEBins()           const { return fHistoPOverEBins     ; }
346   Float_t GetHistoPOverEMin()            const { return fHistoPOverEMin      ; }
347   Float_t GetHistoPOverEMax()            const { return fHistoPOverEMax      ; }
348         
349   Int_t   GetHistodRBins()               const { return fHistodRBins         ; }
350   Float_t GetHistodRMin()                const { return fHistodRMin          ; }
351   Float_t GetHistodRMax()                const { return fHistodRMax          ; }        
352   
353   Int_t   GetHistoTimeBins()             const { return fHistoTimeBins       ; }
354   Float_t GetHistoTimeMin()              const { return fHistoTimeMin        ; }
355   Float_t GetHistoTimeMax()              const { return fHistoTimeMax        ; }        
356   
357   Int_t   GetHistoRatioBins()            const { return fHistoRatioBins      ; }
358   Float_t GetHistoRatioMin()             const { return fHistoRatioMin       ; }
359   Float_t GetHistoRatioMax()             const { return fHistoRatioMax       ; }        
360   
361   Int_t   GetHistoVertexDistBins()       const { return fHistoVertexDistBins ; }
362   Float_t GetHistoVertexDistMin()        const { return fHistoVertexDistMin  ; }
363   Float_t GetHistoVertexDistMax()        const { return fHistoVertexDistMax  ; }        
364   
365   Int_t   GetHistoRBins()                const { return fHistoRBins          ; }
366   Float_t GetHistoRMin()                 const { return fHistoRMin           ; }
367   Float_t GetHistoRMax()                 const { return fHistoRMax           ; }          
368   
369   Int_t   GetHistoXBins()                const { return fHistoXBins          ; }
370   Float_t GetHistoXMin()                 const { return fHistoXMin           ; }
371   Float_t GetHistoXMax()                 const { return fHistoXMax           ; }
372   
373   Int_t   GetHistoYBins()                const { return fHistoYBins          ; }
374   Float_t GetHistoYMin()                 const { return fHistoYMin           ; }
375   Float_t GetHistoYMax()                 const { return fHistoYMax           ; }        
376   
377   Int_t   GetHistoZBins()                const { return fHistoZBins          ; }
378   Float_t GetHistoZMin()                 const { return fHistoZMin           ; }
379   Float_t GetHistoZMax()                 const { return fHistoZMax           ; }        
380         
381   Int_t   GetHistoShowerShapeBins()      const { return fHistoSSBins         ; }
382   Float_t GetHistoShowerShapeMin()       const { return fHistoSSMin          ; }
383   Float_t GetHistoShowerShapeMax()       const { return fHistoSSMax          ; }        
384   
385   Int_t   GetHistoDiffTimeBins()         const { return fHistoDiffTimeBins   ; }
386         Float_t GetHistoDiffTimeMin()          const { return fHistoDiffTimeMin    ; }
387         Float_t GetHistoDiffTimeMax()          const { return fHistoDiffTimeMax    ; }  
388   
389   
390   virtual void SetHistoPOverERangeAndNBins      (Float_t min, Float_t max, Int_t n) {
391     fHistoPOverEBins     = n ; fHistoPOverEMax     = max ; fHistoPOverEMin     = min ; }
392   
393   virtual void SetHistoFinePtRangeAndNBins      (Float_t min, Float_t max, Int_t n) {
394     fHistoFinePtBins     = n ; fHistoFinePtMax     = max ; fHistoFinePtMin     = min ; }
395   
396   virtual void SetHistodEdxRangeAndNBins        (Float_t min, Float_t max, Int_t n) {
397     fHistodEdxBins       = n ; fHistodEdxMax       = max ; fHistodEdxMin       = min ; }
398   
399   virtual void SetHistodRRangeAndNBins          (Float_t min, Float_t max, Int_t n) {
400     fHistodRBins         = n ; fHistodRMax         = max ; fHistodRMin         = min ; }
401   
402   virtual void SetHistoTimeRangeAndNBins        (Float_t min, Float_t max, Int_t n) {
403     fHistoTimeBins       = n ; fHistoTimeMax       = max ; fHistoTimeMin       = min ; }        
404   
405   virtual void SetHistoNClusterCellRangeAndNBins(Int_t   min, Int_t   max, Int_t n) {
406     fHistoNClusCellBins  = n ; fHistoNClusCellMax  = max ; fHistoNClusCellMin  = min ; }
407   
408   virtual void SetHistoNClustersRangeAndNBins   (Int_t   min, Int_t   max, Int_t n) {
409     fHistoNClustersBins  = n ; fHistoNClustersMax  = max ; fHistoNClustersMin  = min ; }
410   
411   virtual void SetHistoNCellsRangeAndNBins      (Int_t   min, Int_t   max, Int_t n) {
412     fHistoNCellsBins     = n ; fHistoNCellsMax     = max ; fHistoNCellsMin     = min ; }
413   
414   virtual void SetHistoRatioRangeAndNBins       (Float_t min, Float_t max, Int_t n) {
415     fHistoRatioBins      = n ; fHistoRatioMax      = max ; fHistoRatioMin      = min ; }
416   
417   virtual void SetHistoVertexDistRangeAndNBins  (Float_t min, Float_t max, Int_t n) { 
418     fHistoVertexDistBins = n ; fHistoVertexDistMax = max ; fHistoVertexDistMin = min ; }
419   
420   virtual void SetHistoXRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
421     fHistoXBins          = n ; fHistoXMax          = max ; fHistoXMin          = min ; }
422   
423   virtual void SetHistoYRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
424     fHistoYBins          = n ; fHistoYMax          = max ; fHistoYMin          = min ; }
425   
426   virtual void SetHistoZRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
427     fHistoZBins         = n ; fHistoZMax           = max ; fHistoZMin          = min ; }
428   
429   virtual void SetHistoRRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
430     fHistoRBins         = n ; fHistoRMax           = max ; fHistoRMin          = min ; }
431   
432   virtual void SetHistoShowerShapeRangeAndNBins (Float_t min, Float_t max, Int_t n) {
433     fHistoSSBins        = n ; fHistoSSMax          = max ; fHistoSSMin        = min ; }
434   
435   void         SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n) {
436     fHistoDiffTimeBins  = n ; fHistoDiffTimeMax   = max ; fHistoDiffTimeMin   = min   ; }
437           
438   void   SwitchOnPlotsMaking()  { fMakePlots = kTRUE  ; }
439   void   SwitchOffPlotsMaking() { fMakePlots = kFALSE ; }
440   Bool_t MakePlotsOn()    const { return fMakePlots   ; }
441   
442 private:    
443   
444   Bool_t   fDataMC ;             // Flag to access MC data when using ESD or AOD     
445   Int_t    fDebug ;              // Debug level
446   Bool_t   fCheckFidCut ;        // Do analysis for clusters in defined region         
447   Bool_t   fCheckCaloPID ;       // Do analysis for calorimeters
448   Bool_t   fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
449   Float_t  fMinPt ;              // Maximum pt of (trigger) particles in the analysis
450   Float_t  fMaxPt ;              // Minimum pt of (trigger) particles in the analysis
451   Float_t  fPairTimeCut;         // Maximum difference between time of cluster pairs (ns)
452   Int_t    fMultiBin ;           // Number of bins in event container for multiplicity
453   Int_t    fNZvertBin ;          // Number of bins in event container for vertex position
454   Int_t    fNrpBin ;               // Number of bins in event container for reaction plain
455   Int_t    fNCentrBin ;          // Number of bins in event container for centrality
456   Int_t    fNmaxMixEv ;          // Maximal number of events stored in buffer for mixing
457   Int_t    fMaxMulti ;           // Maximum multiplicity of particles in the analysis
458   Int_t    fMinMulti ;           // Maximum multiplicity of particles in the analysis
459   Bool_t   fUseSelectEvent ;     // Select events based on multiplicity and vertex cuts
460   Bool_t   fMakePlots   ;        // Print plots
461
462         
463   AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
464   
465   TClonesArray* fInputAODBranch ;    //! Selected input particles branch
466   TString       fInputAODName ;      //  Name of input AOD branch;
467   TClonesArray* fOutputAODBranch ;   //! Selected output particles branch
468   Bool_t        fNewAOD ;            //  Flag, new aod branch added to the analysis or not.
469   TString       fOutputAODName ;     //  Name of output AOD branch;
470   TString       fOutputAODClassName; //  Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)   
471   TString       fAODObjArrayName ;   //  Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
472   TString       fAddToHistogramsName;//  Add this string to histograms name
473   
474   //Analysis helper classes access pointers
475   AliCaloPID               * fCaloPID; // PID calculation
476   AliFiducialCut           * fFidCut;  // Acceptance cuts
477   AliIsolationCut          * fIC;      // Isolation cut 
478   AliMCAnalysisUtils       * fMCUtils; // MonteCarlo Analysis utils 
479   AliNeutralMesonSelection * fNMS;     // Neutral Meson Selection
480   AliCalorimeterUtils      * fCaloUtils ; // Pointer to CalorimeterUtils
481
482   //Histograms binning and range    
483   Int_t    fHistoPtBins   ;  // Number of bins in pt axis
484   Float_t  fHistoPtMax    ;  // Maximum value of pt histogram range
485   Float_t  fHistoPtMin    ;  // Minimum value of pt histogram range
486   Int_t    fHistoPhiBins  ;  // Number of bins in phi axis
487   Float_t  fHistoPhiMax   ;  // Maximum value of phi histogram range
488   Float_t  fHistoPhiMin   ;  // Minimum value of phi histogram range
489   Int_t    fHistoEtaBins  ;  // Number of bins in eta axis
490   Float_t  fHistoEtaMax   ;  // Maximum value of eta histogram range
491   Float_t  fHistoEtaMin   ;  // Minimum value of eta histogram range
492   Int_t    fHistoMassBins ;  // Number of bins in mass axis
493   Float_t  fHistoMassMax  ;  // Maximum value of mass histogram range
494   Float_t  fHistoMassMin  ;  // Minimum value of mass histogram range
495   Int_t    fHistoAsymBins ;  // Number of bins in asymmetry axis
496   Float_t  fHistoAsymMax  ;  // Maximum value of asymmetry histogram range
497   Float_t  fHistoAsymMin  ;  // Minimum value of asymmetry histogram range
498   Int_t    fHistoV0SBins  ;  // Number of bins in V0 signal axis
499   Int_t    fHistoV0SMax   ;  // Maximum value of V0 signal histogram range
500   Int_t    fHistoV0SMin   ;  // Minimum value of V0 signal histogram range
501   Int_t    fHistoV0MBins  ;  // Number of bins in V0 multiplicity axis
502   Int_t    fHistoV0MMax   ;  // Maximum value of V0 multiplicity histogram range
503   Int_t    fHistoV0MMin   ;  // Minimum value of V0 multiplicity histogram range
504   Int_t    fHistoTrMBins  ;  // Number of bins in V0 multiplicity axis
505   Int_t    fHistoTrMMax   ;  // Maximum value of track multiplicity histogram range
506   Int_t    fHistoTrMMin   ;  // Minimum value of track multiplicity histogram range
507   Int_t    fHistoFinePtBins;                  // fine binning for fhAmpId histogram
508   Float_t  fHistoFinePtMax;                   // maximum pt value for fhAmpId histogram
509   Float_t  fHistoFinePtMin;                   // minimum pt value for fhAmpId histogram
510   Int_t    fHistoPOverEBins;                  // p/E histogram number of bins
511   Float_t  fHistoPOverEMax;                   // p/E maximum value
512   Float_t  fHistoPOverEMin;                   // p/E minimum value
513   Int_t    fHistodEdxBins;                    // dEdx histogram number of bins
514   Float_t  fHistodEdxMax;                     // dEdx maximum value
515   Float_t  fHistodEdxMin;                     // dEdx minimum value
516   Int_t    fHistodRBins;                      // dR histogram number of bins
517   Float_t  fHistodRMax;                       // dR maximum value
518   Float_t  fHistodRMin;                       // dR minimum value
519   Int_t    fHistoTimeBins;                    // cell time histogram number of bins
520   Float_t  fHistoTimeMax;                     // cell time maximum value
521   Float_t  fHistoTimeMin;                     // cell time minimum value
522   Int_t    fHistoNClusCellBins;               // number of cells per cluster histogram number of bins
523   Int_t    fHistoNClusCellMax;                // number of cells per cluster maximum value
524   Int_t    fHistoNClusCellMin;                // number of cells per cluster minimum value
525   Int_t    fHistoNCellsBins;                  // number of cells histogram number of bins
526   Int_t    fHistoNCellsMax;                   // number of cells maximum value
527   Int_t    fHistoNCellsMin;                   // number of cells minimum value
528   Int_t    fHistoNClustersBins;               // number of clusters histogram number of bins
529   Int_t    fHistoNClustersMax;                // number of clusters maximum value
530   Int_t    fHistoNClustersMin;                // number of clusters minimum value  
531   Int_t    fHistoRatioBins;                   // ratio histogram number of bins
532   Float_t  fHistoRatioMax;                    // ratio maximum value
533   Float_t  fHistoRatioMin;                    // ratio minimum value
534   Int_t    fHistoVertexDistBins;              // vertex distance histogram number of bins
535   Float_t  fHistoVertexDistMax;               // vertex distance maximum value
536   Float_t  fHistoVertexDistMin;               // vertex distance minimum value  
537   Int_t    fHistoRBins;                       // r =sqrt(x^2+y^2+z^2) (cm) position histogram number of bins
538   Float_t  fHistoRMax;                        // r =sqrt(x^2+y^2+z^2) (cm)  maximum value
539   Float_t  fHistoRMin;                        // r =sqrt(x^2+y^2+z^2) (cm)  minimum value       
540   Int_t    fHistoXBins;                       // x (cm) position histogram number of bins
541   Float_t  fHistoXMax;                        // x (cm) position maximum value
542   Float_t  fHistoXMin;                        // x (cm) position minimum value
543   Int_t    fHistoYBins;                       // y (cm) position histogram number of bins
544   Float_t  fHistoYMax;                        // y (cm) position maximum value
545   Float_t  fHistoYMin;                        // y (cm) position minimum value
546   Int_t    fHistoZBins;                       // z (cm) position histogram number of bins
547   Float_t  fHistoZMax;                        // z (cm) position maximum value
548   Float_t  fHistoZMin;                        // z (cm) position minimum value
549   Int_t    fHistoSSBins;                      // Shower Shape parameter histogram number of bins
550   Float_t  fHistoSSMax;                       // Shower Shape parameter position maximum value
551   Float_t  fHistoSSMin;                       // Shower Shape parameter position minimum value
552   Int_t    fHistoDiffTimeBins;                // Difference cluster pair time parameter histogram number of bins
553   Float_t  fHistoDiffTimeMax;                 // Difference cluster pair time parameter position maximum value
554   Float_t  fHistoDiffTimeMin;                 // Difference cluster pair time parameter position minimum value  
555   
556   ClassDef(AliAnaPartCorrBaseClass,19)
557 } ;
558
559
560 #endif //ALIANAPARTCORRBASECLASS_H
561
562
563