correct minor coverity reports
[u/mrichter/AliRoot.git] / PWG4 / PartCorrDep / AliAnaPi0.h
1 #ifndef ALIANAPI0_H
2 #define ALIANAPI0_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 // Class to fill two-photon invariant mass hisograms 
9 // to be used to extract pi0 raw yield.
10 //
11 //-- Author: Dmitri Peressounko (RRC "KI")
12 //-- Adapted to PartCorr frame by Lamia Benhabib (SUBATECH)
13 //-- and Gustavo Conesa (INFN-Frascati)
14
15 //Root
16 class TList;
17 class TH3D ;
18 class TH2D ;
19 class TObjString;
20
21 //Analysis
22 class AliAODEvent ;
23 class AliESDEvent ;
24 class AliAODPWG4Particle ;
25 #include "AliAnaPartCorrBaseClass.h"
26
27 class AliAnaPi0 : public AliAnaPartCorrBaseClass {
28   
29  public:   
30   AliAnaPi0() ; // default ctor
31   virtual ~AliAnaPi0() ;//virtual dtor
32  private:
33   AliAnaPi0(const AliAnaPi0 & g) ; // cpy ctor
34   AliAnaPi0 & operator = (const AliAnaPi0 & api0) ;//cpy assignment
35   
36  public:
37
38   TObjString * GetAnalysisCuts();
39   TList      * GetCreateOutputObjects(); 
40   
41   void Print(const Option_t * opt) const;
42   
43   //void Init();
44   void InitParameters();
45   
46   void FillAcceptanceHistograms();
47   //void MakeAnalysisFillAOD() {;} //Not needed
48   void MakeAnalysisFillHistograms();
49   
50   //    void SetBadRunsList(){;} ;     //Set list of runs which can be used for this analysis
51   //To be defined in future.
52     
53   //Setters for parameters of event buffers
54   void SetNCentrBin(Int_t n=5) {fNCentrBin=n ;} //number of bins in centrality 
55   void SetNZvertBin(Int_t n=5) {fNZvertBin=n ;} //number of bins for vertex position
56   void SetNRPBin(Int_t n=6)    {fNrpBin=n ;}    //number of bins in reaction plain
57   void SetNMaxEvMix(Int_t n=20){fNmaxMixEv=n ;} //Maximal number of events for mixing
58   
59   //Setters for event selection
60   void SetZvertexCut(Float_t zcut=40.){fZvtxCut=zcut ;} //cut on vertex position
61   
62   TString GetCalorimeter()   const {return fCalorimeter ; }
63   void SetCalorimeter(TString det)    {fCalorimeter = det ; }
64         
65   void Terminate(TList* outputList);
66   void ReadHistograms(TList * outputList); //Fill histograms with histograms in ouput list, needed in Terminate.
67         
68   void SetNumberOfModules(Int_t nmod) {fNModules = nmod;}
69         
70   Int_t GetNPID()   const   {return fNPID ; }
71   void  SetNPID(Int_t n)    {fNPID = n ; }
72         
73   void SwitchOnAngleSelection()    {fUseAngleCut = kTRUE ; }
74   void SwitchOffAngleSelection()   {fUseAngleCut = kFALSE ; }
75   
76   virtual Int_t GetEventIndex(AliAODPWG4Particle * part, Double_t * vert)  ;
77
78   void SwitchOnOwnMix()    {fDoOwnMix = kTRUE ; }
79   void SwitchOffOwnMix()   {fDoOwnMix = kFALSE ; }
80
81   //Cuts for multiple analysis
82   void SwitchOnMultipleCutAnalysis()   {fMultiCutAna = kTRUE;}
83   void SwitchOffMultipleCutAnalysis()  {fMultiCutAna = kFALSE;}
84
85   void SetPtCuts   (Int_t ncuts)       {fNPtCuts    = ncuts;}
86   void SetAsymCuts (Int_t ncuts)       {fNAsymCuts  = ncuts;}
87   void SetCellNCuts(Int_t ncuts)       {fNCellNCuts = ncuts;}
88   void SetPIDBits  (Int_t ncuts)       {fNPIDBits   = ncuts;}
89
90   void SetPtCuts   (Float_t * cuts)    {fPtCuts    = cuts;}
91   void SetAsymCuts (Float_t * cuts)    {fAsymCuts  = cuts;}
92   void SetCellNCuts(Int_t   * cuts)    {fCellNCuts = cuts;}
93   void SetPIDBits  (Int_t   * cuts)    {fPIDBits   = cuts;}
94
95   private:
96   Bool_t IsBadRun(Int_t /*iRun*/) const {return kFALSE;} //Tests if this run bad according to private list
97   
98   private:
99   Bool_t   fDoOwnMix;     // Do combinatorial background not the one provided by the frame
100   Int_t    fNCentrBin ;   // Number of bins in event container for centrality
101   Int_t    fNZvertBin ;   // Number of bins in event container for vertex position
102   Int_t    fNrpBin ;        // Number of bins in event container for reaction plain
103   Int_t    fNPID ;                  // Number of possible PID combinations
104   Int_t    fNmaxMixEv ;   // Maximal number of events stored in buffer for mixing
105   Float_t  fZvtxCut ;       // Cut on vertex position
106   TString  fCalorimeter ; // Select Calorimeter for IM
107   Int_t    fNModules ;    // Number of EMCAL/PHOS modules, set as many histogras as modules 
108   Bool_t   fUseAngleCut ; // Select pairs depending on their opening angle
109   TList ** fEventsList ;  //! Containers for photons in stored events
110   Bool_t   fMultiCutAna;  // Do analysis with several or fixed cut
111   Int_t    fNPtCuts;      // number of pt cuts
112   Float_t* fPtCuts;       //[fNPtCuts] array with different pt cuts
113   Int_t    fNAsymCuts;    // number of assymmetry cuts
114   Float_t* fAsymCuts;     //[fNAsymCuts] array with different assymetry cuts
115   Int_t    fNCellNCuts;   // number of cuts with number of cells in cluster
116   Int_t*   fCellNCuts;    //[fNCellNCuts] array with different cell number cluster cuts
117   Int_t    fNPIDBits;     // number of PID bits to check in multi cuts option
118   Int_t*   fPIDBits;      //[fNPIDBits] array with different pid bits
119
120   //Histograms
121   TH3D ** fhReMod ;  //!REAL two-photon invariant mass distribution for different calorimeter modules.
122         
123   TH3D ** fhRe1 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID 
124   TH3D ** fhMi1 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID
125   TH3D ** fhRe2 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID 
126   TH3D ** fhMi2 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID
127   TH3D ** fhRe3 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID 
128   TH3D ** fhMi3 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID
129   
130   TH3D ** fhReInvPt1 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID, inverse pT
131   TH3D ** fhMiInvPt1 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID, inverse pT
132   TH3D ** fhReInvPt2 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID, inverse pT 
133   TH3D ** fhMiInvPt2 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID, inverse pT
134   TH3D ** fhReInvPt3 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID, inverse pT
135   TH3D ** fhMiInvPt3 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID, inverse pT
136   
137   //Multiple cuts
138   TH2D ** fhRePtNCellAsymCuts ; //!REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry
139   TH2D ** fhRePIDBits ;         //!REAL two-photon invariant mass distribution for different PID bits
140
141   TH3D * fhEvents; //!Number of events per centrality, RP, zbin
142
143   TH2D * fhRealOpeningAngle ;    //! Opening angle of pair versus pair energy
144   TH2D * fhRealCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy
145
146   //Acceptance
147   TH1D * fhPrimPt ;    //! Spectrum of Primary 
148   TH1D * fhPrimAccPt ; //! Spectrum of primary with accepted daughters 
149   TH1D * fhPrimY ;     //! Rapidity distribution of primary particles
150   TH1D * fhPrimAccY ;  //! Rapidity distribution of primary with accepted daughters
151   TH1D * fhPrimPhi ;   //! Azimutal distribution of primary particles
152   TH1D * fhPrimAccPhi; //! Azimutal distribution of primary with accepted daughters     
153   TH2D * fhPrimOpeningAngle ;    //! Opening angle of pair versus pair energy, primaries
154   TH2D * fhPrimCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, primaries
155         
156   ClassDef(AliAnaPi0,10)
157 } ;
158
159
160 #endif //ALIANAPI0_H
161
162
163