]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrDep/AliAnaPi0.h
declare the size of this histograms array in the header after //
[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 #include "AliAnaPartCorrBaseClass.h"
23 class AliAODEvent ;
24 class AliESDEvent ;
25 class AliAODPWG4Particle ;
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   void SwitchOnAngleSelection()    {fUseAngleCut = kTRUE ; }
71   void SwitchOffAngleSelection()   {fUseAngleCut = kFALSE ; }
72   
73   virtual Int_t GetEventIndex(AliAODPWG4Particle * part, Double_t * vert)  ;
74
75   void SwitchOnInvPtWeight()    {fMakeInvPtPlots = kTRUE  ; }
76   void SwitchOffInvPtWeight()   {fMakeInvPtPlots = kFALSE ; }
77   
78   void SwitchOnOwnMix()    {fDoOwnMix = kTRUE  ; }
79   void SwitchOffOwnMix()   {fDoOwnMix = kFALSE ; }
80
81   void SwitchOnSameSM()    {fSameSM = kTRUE  ; }
82   void SwitchOffSameSM()   {fSameSM = kFALSE ; }
83   
84   //Cuts for multiple analysis
85   void SwitchOnMultipleCutAnalysis()   {fMultiCutAna = kTRUE;}
86   void SwitchOffMultipleCutAnalysis()  {fMultiCutAna = kFALSE;}
87
88   void SetNPtCuts   (Int_t size)  {if(size <= 10)fNPtCuts    = size; }
89   void SetNAsymCuts (Int_t size)  {if(size <= 10)fNAsymCuts  = size; }
90   void SetNNCellCuts(Int_t size)  {if(size <= 10)fNCellNCuts = size; }
91   void SetNPIDBits  (Int_t size)  {if(size <= 10)fNPIDBits   = size; }
92   
93   void SetPtCutsAt   (Int_t pos,Float_t val)  {if(pos < 10)fPtCuts[pos]    = val;}
94   void SetAsymCutsAt (Int_t pos,Float_t val)  {if(pos < 10)fAsymCuts[pos]  = val;}
95   void SetNCellCutsAt(Int_t pos,Int_t val)    {if(pos < 10)fCellNCuts[pos] = val;}
96   void SetPIDBitsAt  (Int_t pos,Int_t val)    {if(pos < 10)fPIDBits[pos]   = val;}
97   
98   private:
99   Bool_t IsBadRun(Int_t /*iRun*/) const {return kFALSE;} //Tests if this run bad according to private list
100   
101   private:
102   Bool_t   fDoOwnMix;      // Do combinatorial background not the one provided by the frame
103   Int_t    fNCentrBin ;    // Number of bins in event container for centrality
104   // Int_t    fNrpBin ;     // Number of bins in event container for reaction plain
105   Int_t    fNmaxMixEv ;    // Maximal number of events stored in buffer for mixing
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 ;   //[fNCentrBin*GetNZvertBin()*GetNRPBin()]! 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[10];    // array with different pt cuts
113   Int_t    fNAsymCuts;     // number of assymmetry cuts
114   Float_t  fAsymCuts[10];  // array with different assymetry cuts
115   Int_t    fNCellNCuts;    // number of cuts with number of cells in cluster
116   Int_t    fCellNCuts[10]; // array with different cell number cluster cuts
117   Int_t    fNPIDBits ;           // number of possible PID bit combinations
118   Int_t    fPIDBits[10];   // array with different PID bits
119
120   Bool_t   fMakeInvPtPlots;// do plots with inverse pt weight
121   Bool_t   fSameSM;        // select only pairs in same SM;
122   
123   //Histograms
124   TH2D ** fhReMod ;     //[fNModules] REAL two-photon invariant mass distribution for different calorimeter modules.
125   TH2D ** fhReDiffMod ; //[fNModules+1] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules.
126
127   TH2D ** fhRe1 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
128   TH2D ** fhMi1 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
129   TH2D ** fhRe2 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
130   TH2D ** fhMi2 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
131   TH2D ** fhRe3 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
132   TH2D ** fhMi3 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
133   
134   TH2D ** fhReInvPt1 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
135   TH2D ** fhMiInvPt1 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
136   TH2D ** fhReInvPt2 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT 
137   TH2D ** fhMiInvPt2 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
138   TH2D ** fhReInvPt3 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
139   TH2D ** fhMiInvPt3 ;  //[fNCentrBin*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
140   
141   //Multiple cuts
142   TH2D ** fhRePtNCellAsymCuts ; //[fNPtCuts*fNAsymCuts*fNCellNCuts] REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry
143   TH2D ** fhRePIDBits ;         //[fNPIDBits] REAL two-photon invariant mass distribution for different PID bits
144   TH3D ** fhRePtMult ;          //[fNAsymCuts] REAL two-photon invariant mass distribution for different track multiplicity and assymetry cuts
145   
146   TH2D *  fhRePtAsym    ;       //!REAL two-photon pt vs asymmetry
147   TH2D *  fhRePtAsymPi0 ;       //!REAL two-photon pt vs asymmetry, close to pi0 mass
148   TH2D *  fhRePtAsymEta ;       //!REAL two-photon pt vs asymmetry, close to eta mass
149
150   TH3D * fhEvents; //!Number of events per centrality, RP, zbin
151
152   TH2D * fhRealOpeningAngle ;    //! Opening angle of pair versus pair energy
153   TH2D * fhRealCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy
154
155   //Acceptance
156   TH1D * fhPrimPt ;    //! Spectrum of Primary 
157   TH1D * fhPrimAccPt ; //! Spectrum of primary with accepted daughters 
158   TH1D * fhPrimY ;     //! Rapidity distribution of primary particles
159   TH1D * fhPrimAccY ;  //! Rapidity distribution of primary with accepted daughters
160   TH1D * fhPrimPhi ;   //! Azimutal distribution of primary particles
161   TH1D * fhPrimAccPhi; //! Azimutal distribution of primary with accepted daughters     
162   TH2D * fhPrimOpeningAngle ;    //! Opening angle of pair versus pair energy, primaries
163   TH2D * fhPrimCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, primaries
164         
165   ClassDef(AliAnaPi0,12)
166 } ;
167
168
169 #endif //ALIANAPI0_H
170
171
172