1 #ifndef ALIANANEUTRALMESON_H
\r
2 #define ALIANANEUTRALMESON_H
\r
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
\r
4 * See cxx source for full Copyright notice */
\r
7 //_________________________________________________________________________
\r
8 //a general class to fill two-photon and pi0+gamma invariant mass hisograms
\r
9 // to be used to extract pi0, eta and omega raw yield.
\r
10 // also for PHOS acceptance
\r
12 //-- by Renzhuo Wan (Iopp-wuhan) May 13,2009
\r
13 //_________________________________________________________________________
\r
19 class TLorentzVector;
\r
23 #include "AliAnaPartCorrBaseClass.h"
\r
27 class AliPHOSGeoUtils;
\r
30 #ifdef __EMCALUTIL__
\r
31 class AliEMCALGeoUtils;
\r
35 class AliAnaNeutralMeson : public AliAnaPartCorrBaseClass {
\r
39 AliAnaNeutralMeson() ; // default ctor
\r
40 AliAnaNeutralMeson(const char *name) ; // default ctor
\r
41 AliAnaNeutralMeson(const AliAnaNeutralMeson & g) ; // cpy ctor
\r
42 AliAnaNeutralMeson & operator = (const AliAnaNeutralMeson & api0) ;//cpy assignment
\r
43 virtual ~AliAnaNeutralMeson() ;//virtual dtor
\r
46 TList * GetCreateOutputObjects();
\r
47 void Print(const Option_t * opt) const;
\r
50 void InitParameters();
\r
51 void MakeAnalysisFillHistograms();
\r
52 //void Terminate(TList * outList);
\r
54 void Get2GammaAsyDistPtM(AliAODPWG4Particle *p1, AliAODPWG4Particle *p2, Double_t &asy, Double_t &dist,
\r
55 Double_t &pt, Double_t &mass); //get dist,asy, pair pt, pairmass btween two ptc
\r
56 void GetAsyDistPtM(TLorentzVector photon1, TLorentzVector photon2, Double_t &asy, Double_t &dist,
\r
57 Double_t &pt, Double_t &mass); //get dist,asy, pair pt, pairmass btween two ptc
\r
58 Bool_t IsPhotonSelected(AliAODPWG4Particle *p1, Int_t ipid, Int_t nmod); //select the photon based on pid and nmod to be analyzed
\r
60 void RealPi0Eta(TClonesArray * array) ; //perform the 2gamma IVM analysis for one event to extract pi0 and eta
\r
61 void MixPi0Eta(TClonesArray * array1, TClonesArray *array2) ; //perform the 2gamma IVM analysis for mixed eventsto reconstruct the background
\r
62 void RealOmega(TClonesArray *array) ; //perform the pi0+gamma->3gamma IVM analysis for one event to extract omega
\r
63 void MixOmegaAB(TClonesArray * array1, TClonesArray * array2); ////perform the 2gamma IVM analysis for mixed events to reconstruct the bacground (r1_event1+r2_event1)+r3_event2 and (r1_event1+r2_event2)+r3_event2
\r
64 void MixOmegaC(TClonesArray * array1, TClonesArray * array2, TClonesArray * array3); //perform the 2gamma IVM analysis for mixed events to reconstruct the bacground (r1_event1+r2_event2)+r3_event3
\r
66 void PhotonAcceptance(AliStack *stack); //to get MC photon pt and photon can be hit on dectector
\r
67 void Pi0EtaAcceptance(AliStack *stack); //to get MC pi0 and eta pt and photon can be hit on dectector
\r
68 void OmegaAcceptance(AliStack * stack); //to get MC omega pt and photon can be hit on dectector
\r
70 void GetMCDistAsy(TParticle * p1, TParticle * p2, Double_t & dist, Double_t &asy); //to get MC information between two particle
\r
72 void SetNAsyBinsMinMax(Int_t bins, Double_t min, Double_t max) {fNbinsAsy=bins; fMinAsy=min; fMaxAsy=max; } //set Asy bins, min and max
\r
73 void SetNPtBinsMinMax(Int_t bins, Double_t min, Double_t max) {fNbinsPt=bins; fMinPt=min; fMaxPt=max; } //set pt bins, min and max
\r
74 void SetNMassBinsMinMas(Int_t bins, Double_t min, Double_t max) {fNbinsM=bins; fMinM=min; fMaxM=max; } //set mass pt bins, min and max
\r
75 void SetNEventsMixed(Int_t nevents) { fNmaxMixEv=nevents;} //events to be mixed
\r
77 TString GetCalorimeter() const { return fCalorimeter ; } //PHOS or EMCAL
\r
78 void SetCalorimeter(TString det);// { fCalorimeter = det ; }
\r
80 void SetNPID(Int_t pid) {fNPID=pid;} //number of PID cut
\r
81 void SetInvMassCut(Int_t mass) {fInvMassCut = mass;} //
\r
82 void SetPi0MassPeakWidthCut(Double_t cut) {fPi0MassPeakWidthCut = cut;}
\r
84 Bool_t SetAnaPi0Eta(Bool_t ana) {fAnaPi0Eta = ana; return fAnaPi0Eta;} //analysis pi0 and eta ????
\r
85 Bool_t SetAnaOmega(Bool_t ana) {fAnaOmega = ana; return fAnaOmega ;} //analysis omega ????
\r
87 Bool_t IsBadRun(Int_t /*iRun*/) const {return kFALSE;} //Tests if this run bad according to private list
\r
91 Bool_t fAnaPi0Eta; //whether ana the 2gamma IVM to extract pi0 and eta spectrum
\r
92 Bool_t fAnaOmega; //whether ana the 3gamma IVM to extract omega spectrum
\r
94 Int_t fNPID; //PID bin
\r
95 Int_t fNmaxMixEv ; //number events to be mixed
\r
96 Int_t fNAsy; //number of Asy cut
\r
97 Int_t fNMod; //number of PHOS or EMCAL modules to be analyzed
\r
98 Int_t fNHistos; //number of histograms
\r
99 Double_t fPerPtBin;//plot the IVM distribution per pt bin
\r
101 Double_t *fAsyCut; // asy cut(< 0.7, 0.8, 0.9, 1)
\r
102 Int_t *fModCut; // mod cut(1,3,5) for PHOS, and 0 (default) for EMCAL
\r
104 Double_t fDist; //distance between two particle in (eta, phi) plane
\r
105 Double_t fAsy; //asysmetry |(e1-e2)|/(e1+e2)
\r
106 Double_t fPt; //pair pt
\r
107 Double_t fMass; //pair mass
\r
108 Double_t fInvMassCut; // cut of invmass
\r
110 Int_t fNbinsAsy; //Asy bin number, min and max
\r
113 Int_t fNbinsPt; //Pt bin number, min and max
\r
116 Int_t fNbinsM; //mass bin number, min and max
\r
120 //! containers for photons in stored events
\r
121 TList * fEventsListPi0Eta ; //! events with cluster larger than 2 for pi0 and eta analysis
\r
122 TList * fEventsListOmega ; //! events with cluster larger than 3 for omega analysis
\r
124 Double_t fPi0Mass; //nominal pi0 mass
\r
125 Double_t fPi0MassPeakWidthCut; //pi0 candidate
\r
127 TH1I * fhNClusters; //cluster multiplicity distribution per event
\r
128 TH1D ** fhRecPhoton; //reconstructed photon pt distribution
\r
129 TH2F ** fhRecPhotonEtaPhi; //photon (eta, phi) distruction
\r
131 TH1F ** fReal2Gamma; //real 2gamma IVM in per pt bin (ipid, imod, iasy)
\r
132 TH1F ** fMix2Gamma; //mix 2gamma IVM in per pt bin (ipid, imod, iasy, pt)
\r
133 TH1F ** fRealOmega; //real omega IVM in per pt bin (ipid, imod, iasy, pt)
\r
134 TH1F ** fMixOmegaA; //mixA omega IVM in per pt bin (ipid, imod, iasy, pt) (r1_event1+r2_event1)+r3_event2
\r
135 TH1F ** fMixOmegaB; //mixB omega IVM in per pt bin (ipid, imod, iasy, pt) (r1_event1+r2_event2)+r3_event2
\r
136 TH1F ** fMixOmegaC; //mixC omega IVM in per pt bin (ipid, imod, iasy, pt) (r1_event1+r2_event2)+r3_event3
\r
138 TH3F ** fRealTwoGammaAsyPtM; //real 2gamma IVM(asy, pt, m) without PID, mod cut
\r
139 TH3F ** fMixTwoGammaAsyPtM; //mix 2gamma IVM(asy, pt, m) without PID, mod cut
\r
140 TH3F ** fRealPi0GammaAsyPtM; //real omega IVM(asy, pt, m) without PID, mod cut
\r
141 TH3F ** fMixAPi0GammaAsyPtM; //mixA omega IVM(asy, pt, m) without PID, mod cut
\r
142 TH3F ** fMixBPi0GammaAsyPtM; //mixB omega IVM(asy, pt, m) without PID, mod cut
\r
143 TH3F ** fMixCPi0GammaAsyPtM; //mixC omega IVM(asy, pt, m) without PID, mod cut
\r
145 //Histograms filled only if MC data is requested
\r
147 //currently only PHOS included
\r
148 TH1D * fhPrimPhotonPt ; //! Spectrum of Primary
\r
149 TH1D * fhPrimPhotonAccPt ; //! Spectrum of primary with accepted daughters
\r
150 TH1D * fhPrimPhotonY ; //! Rapidity distribution of primary particles
\r
151 TH1D * fhPrimPhotonAccY ; //! Rapidity distribution of primary with accepted daughters
\r
152 TH1D * fhPrimPhotonPhi ; //! Azimutal distribution of primary particles
\r
153 TH1D * fhPrimPhotonAccPhi; //! Azimutal distribution of primary with accepted daughters
\r
155 TH1D * fhPrimPi0Pt ; //! Spectrum of Primary
\r
156 TH1D * fhPrimPi0AccPt ; //! Spectrum of primary with accepted daughters
\r
157 TH1D * fhPrimPi0Y ; //! Rapidity distribution of primary particles
\r
158 TH1D * fhPrimPi0AccY ; //! Rapidity distribution of primary with accepted daughters
\r
159 TH1D * fhPrimPi0Phi ; //! Azimutal distribution of primary particles
\r
160 TH1D * fhPrimPi0AccPhi; //! Azimutal distribution of primary with accepted daughters
\r
162 TH1D * fhPrimEtaPt ; //! Spectrum of Primary
\r
163 TH1D * fhPrimEtaAccPt ; //! Spectrum of primary with accepted daughters
\r
164 TH1D * fhPrimEtaY ; //! Rapidity distribution of primary particles
\r
165 TH1D * fhPrimEtaAccY ; //! Rapidity distribution of primary with accepted daughters
\r
166 TH1D * fhPrimEtaPhi ; //! Azimutal distribution of primary particles
\r
167 TH1D * fhPrimEtaAccPhi; //! Azimutal distribution of primary with accepted daughters
\r
169 TH1D * fhPrimOmegaPt ; //! Spectrum of Primary
\r
170 TH1D * fhPrimOmegaAccPt ; //! Spectrum of primary with accepted daughters
\r
171 TH1D * fhPrimOmegaY ; //! Rapidity distribution of primary particles
\r
172 TH1D * fhPrimOmegaAccY ; //! Rapidity distribution of primary with accepted daughters
\r
173 TH1D * fhPrimOmegaPhi ; //! Azimutal distribution of primary particles
\r
174 TH1D * fhPrimOmegaAccPhi; //! Azimutal distribution of primary with accepted daughters
\r
176 TString fCalorimeter ; //Select Calorimeter
\r
178 #ifdef __PHOSUTIL__
\r
179 AliPHOSGeoUtils * fPHOSGeo ; //! PHOS geometry pointer
\r
181 #ifdef __EMCALUTIL__
\r
182 AliEMCALGeoUtils * fEMCALGeo ; //! EMCAL geometry pointer
\r
185 ClassDef(AliAnaNeutralMeson,1)
\r
189 #endif //ALIANANEUTRALMESON
\r