]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrDep/AliAnaPi0.h
AliAnaPi0: Added option to fill mass histograms with different cuts
[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   //Histogram range setters
96   virtual void SetHistoInvPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
97     fHistoInvPtBins = n ;
98     fHistoInvPtMax = max ;
99     fHistoInvPtMin = min ;
100   }
101   
102   virtual Int_t   GetHistoInvPtBins()  const { return fHistoInvPtBins; }
103   virtual Float_t GetHistoInvPtMin()   const { return fHistoInvPtMin ; }
104   virtual Float_t GetHistoInvPtMax()   const { return fHistoInvPtMax ; }
105   
106
107   private:
108   Bool_t IsBadRun(Int_t /*iRun*/) const {return kFALSE;} //Tests if this run bad according to private list
109   
110   private:
111   Bool_t   fDoOwnMix;     // Do combinatorial background not the one provided by the frame
112   Int_t    fNCentrBin ;   // Number of bins in event container for centrality
113   Int_t    fNZvertBin ;   // Number of bins in event container for vertex position
114   Int_t    fNrpBin ;        // Number of bins in event container for reaction plain
115   Int_t    fNPID ;                  // Number of possible PID combinations
116   Int_t    fNmaxMixEv ;   // Maximal number of events stored in buffer for mixing
117   Float_t  fZvtxCut ;       // Cut on vertex position
118   TString  fCalorimeter ; // Select Calorimeter for IM
119   Int_t    fNModules ;    // Number of EMCAL/PHOS modules, set as many histogras as modules 
120   Bool_t   fUseAngleCut ; // Select pairs depending on their opening angle
121   TList ** fEventsList ;  //! Containers for photons in stored events
122   Bool_t   fMultiCutAna;  // Do analysis with several or fixed cut
123   Int_t    fNPtCuts;      // number of pt cuts
124   Float_t* fPtCuts;       //[fNPtCuts] array with different pt cuts
125   Int_t    fNAsymCuts;    // number of assymmetry cuts
126   Float_t* fAsymCuts;     //[fNAsymCuts] array with different assymetry cuts
127   Int_t    fNCellNCuts;   // number of cuts with number of cells in cluster
128   Int_t*   fCellNCuts;    //[fNCellNCuts] array with different cell number cluster cuts
129   Int_t    fNPIDBits;     // number of PID bits to check in multi cuts option
130   Int_t*   fPIDBits;      //[fNPIDBits] array with different pid bits
131
132   //Histograms
133     
134   Int_t    fHistoInvPtBins   ;  // Number of bins in inverse pt axis
135   Float_t  fHistoInvPtMax    ;  // Maximum value of inverse pt histogram range
136   Float_t  fHistoInvPtMin    ;  // Minimum value of inverse pt histogram range  
137   
138   TH3D ** fhReMod ;  //!REAL two-photon invariant mass distribution for different calorimeter modules.
139         
140   TH3D ** fhRe1 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID 
141   TH3D ** fhMi1 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID
142   TH3D ** fhRe2 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID 
143   TH3D ** fhMi2 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID
144   TH3D ** fhRe3 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID 
145   TH3D ** fhMi3 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID
146   
147   TH3D ** fhReInvPt1 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID, inverse pT
148   TH3D ** fhMiInvPt1 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID, inverse pT
149   TH3D ** fhReInvPt2 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID, inverse pT 
150   TH3D ** fhMiInvPt2 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID, inverse pT
151   TH3D ** fhReInvPt3 ;  //!REAL  two-photon invariant mass distribution for different centralities and PID, inverse pT
152   TH3D ** fhMiInvPt3 ;  //!MIXED two-photon invariant mass distribution for different centralities and PID, inverse pT
153   
154   //Multiple cuts
155   TH2D ** fhRePtNCellAsymCuts ; //!REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry
156   TH2D ** fhRePIDBits ;         //!REAL two-photon invariant mass distribution for different PID bits
157
158   TH3D * fhEvents; //!Number of events per centrality, RP, zbin
159
160   TH2D * fhRealOpeningAngle ;    //! Opening angle of pair versus pair energy
161   TH2D * fhRealCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy
162
163   //Acceptance
164   TH1D * fhPrimPt ;    //! Spectrum of Primary 
165   TH1D * fhPrimAccPt ; //! Spectrum of primary with accepted daughters 
166   TH1D * fhPrimY ;     //! Rapidity distribution of primary particles
167   TH1D * fhPrimAccY ;  //! Rapidity distribution of primary with accepted daughters
168   TH1D * fhPrimPhi ;   //! Azimutal distribution of primary particles
169   TH1D * fhPrimAccPhi; //! Azimutal distribution of primary with accepted daughters     
170   TH2D * fhPrimOpeningAngle ;    //! Opening angle of pair versus pair energy, primaries
171   TH2D * fhPrimCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, primaries
172         
173   ClassDef(AliAnaPi0,10)
174 } ;
175
176
177 #endif //ALIANAPI0_H
178
179
180