4767e8a8f478245f79ce670ba9210daf92e27ca2
[u/mrichter/AliRoot.git] / PWG4 / AliNeutralMesonSelection.h
1 #ifndef ALINEUTRALMESONSELECTION_H
2 #define ALINEUTRALMESONSELECTION_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 /* History of cvs commits:
8  *
9  * $Log$
10  * Revision 1.2  2007/08/17 12:40:04  schutz
11  * New analysis classes by Gustavo Conesa
12  *
13  * Revision 1.1.2.1  2007/07/26 10:32:09  schutz
14  * new analysis classes in the the new analysis framework
15  *
16  *
17  */
18 //_________________________________________________________________________
19 // Class that contains methods to select candidate pairs to neutral meson 
20 // 2 main selections, invariant mass around pi0 (also any other mass),
21 // apperture angle to distinguish from combinatorial.
22 // There is a 3rd cut based on the gamma correlation on phi or pt.
23 //-- Author: Gustavo Conesa (INFN-LNF)
24
25 // --- ROOT system ---
26 #include<TObject.h>
27 #include<TArrayD.h>
28
29 class TLorentzVector ;
30 class TParticle ;
31 class TList ;
32 class TH2F ;
33 class Riostream ;
34
35 //--- AliRoot system ---
36 class AliLog ;
37
38 class AliNeutralMesonSelection : public TObject {
39
40  public: 
41   
42   AliNeutralMesonSelection() ; // default ctor
43   AliNeutralMesonSelection(const AliNeutralMesonSelection & g) ; // cpy ctor
44   AliNeutralMesonSelection & operator = (const AliNeutralMesonSelection & g) ;//cpy assignment
45   virtual ~AliNeutralMesonSelection() ; //virtual dtor
46
47   enum Type {kSelectPhiMinPt, kSelectPhiPtRatio, kNoSelectPhiPt};
48
49   TList * GetCreateOutputObjects();
50   
51   Double_t GetAngleMaxParam(Int_t i) const {return fAngleMaxParam.At(i) ; }
52   void SetAngleMaxParam(Int_t i, Double_t par){fAngleMaxParam.AddAt(par,i) ; }
53   
54   Double_t GetInvMassMaxCut() const {return fInvMassMaxCut ; }
55   Double_t GetInvMassMinCut() const {return fInvMassMinCut ; }
56   void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
57   {fInvMassMaxCut =invmassmax;  fInvMassMinCut =invmassmin;}    
58   
59   Double_t GetDeltaPhiMaxCut() const {return fDeltaPhiMaxCut ; }
60   Double_t GetDeltaPhiMinCut() const {return fDeltaPhiMinCut ; }
61   void SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
62   {fDeltaPhiMaxCut =phimax;  fDeltaPhiMinCut =phimin;}
63
64   Double_t GetRatioMaxCut() const {return fRatioMaxCut ; }
65   Double_t GetRatioMinCut() const {return fRatioMinCut ; }
66   void SetRatioCutRange(Double_t ratiomin, Double_t ratiomax)
67   {fRatioMaxCut = ratiomax;  fRatioMinCut = ratiomin;}
68
69   Float_t    GetMinPt() const {return fMinPt ; }
70   void SetMinPt(Float_t pt){fMinPt = pt; };
71
72   Double_t GetMass() const {return fM ; }
73   void SetMass(Double_t m) { fM =m ; }
74   
75   Int_t GetPhiPtSelection() const { return fSelect ; }
76   void SetPhiPtSelection(Int_t ana ){  fSelect = ana ; }
77
78   Bool_t AreNeutralMesonSelectionHistosKept() const { return fKeepNeutralMesonHistos ; }
79   void KeepNeutralMesonSelectionHistos(Bool_t keep) { fKeepNeutralMesonHistos = keep ; }
80
81   void InitParameters();        
82   Bool_t IsAngleInWindow(const Float_t angle, const Float_t e) const ;
83   void Print(const Option_t * opt) const;
84
85   Bool_t  CutPtPhi(Double_t ptg, Double_t phig, Double_t pt, Double_t phi) const ;
86   Bool_t  SelectPair(TParticle * photon, TLorentzVector particlei,  TLorentzVector particlej)  ;
87   
88   private:
89   Int_t fSelect; //Pair selection depends on analysis
90   Double_t fM ; //mass of the neutral meson
91   Double_t   fInvMassMaxCut ;  // Invariant Mass cut maximum
92   Double_t   fInvMassMinCut ;  // Invariant Masscut minimun
93   TArrayD    fAngleMaxParam ; //Max opening angle selection parameters
94   Double_t   fMinPt;       // Minimum pt 
95   Double_t   fDeltaPhiMaxCut ;      // Leading particle - gamma Ratio cut maximum
96   Double_t   fDeltaPhiMinCut ;      // Leading particle - gamma Ratio cut maximum
97   Double_t   fRatioMaxCut ;    // Leading particle/gamma Ratio cut maximum
98   Double_t   fRatioMinCut ;    // Leading particle/gamma Ratio cut minimum
99   Bool_t  fKeepNeutralMesonHistos ; // Keep neutral meson selection histograms
100
101   //Histograms
102   TH2F * fhAnglePairNoCut  ;  //Aperture angle of decay photons, no cuts
103   TH2F * fhAnglePairCorrelationCut  ;  //Aperture angle of decay photons, cut on phi/pT correlation with prompt gamma
104   TH2F * fhAnglePairOpeningAngleCut   ;  //Aperture angle of decay photons, cut on opening angle
105   TH2F * fhAnglePairAllCut   ;  //Aperture angle of decay photons, all cuts
106   TH2F * fhInvMassPairNoCut    ;  //Invariant mass of decay photons, no cuts
107   TH2F * fhInvMassPairCorrelationCut    ;   //Invariant mass of decay photons, cut on phi/pT correlation with prompt gamma
108   TH2F * fhInvMassPairOpeningAngleCut  ;  //Invariant mass of decay photons, cut on opening angle
109   TH2F * fhInvMassPairAllCut   ;  //Invariant mass of decay photons, all cuts
110   
111   ClassDef(AliNeutralMesonSelection,1)
112     
113     } ;
114
115
116 #endif //ALINEUTRALMESONSELECTION_H
117
118
119