ff5a96a1805ad405a54c1274e72e1f5a7ea25916
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / 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: AliNeutralMesonSelection.h 27413 2008-07-18 13:28:12Z gconesab $ */
6
7 //_________________________________________________________________________
8 // Class that contains methods to select candidate pairs to neutral meson 
9 // 2 main selections, invariant mass around pi0 (also any other mass),
10 // apperture angle to distinguish from combinatorial.
11 // There is a 3rd cut based on the gamma correlation on phi or pt.
12 //-- Author: Gustavo Conesa (INFN-LNF)
13
14 // --- ROOT system ---
15 #include<TObject.h>
16 #include<TArrayD.h>
17
18 class TLorentzVector ;
19 class TList ;
20 class TH2F ;
21
22 //--- ANALYSIS system ---
23
24 class AliNeutralMesonSelection : public TObject {
25   
26  public: 
27   AliNeutralMesonSelection() ; // default ctor
28   virtual ~AliNeutralMesonSelection() ; //virtual dtor  
29  private:
30   AliNeutralMesonSelection(const AliNeutralMesonSelection & g) ; // cpy ctor
31   AliNeutralMesonSelection & operator = (const AliNeutralMesonSelection & g) ;//cpy assignment
32   
33  public:
34
35   TList * GetCreateOutputObjects();
36   
37   Double_t GetAngleMaxParam(Int_t i) const {return fAngleMaxParam.At(i) ; }
38   void     SetAngleMaxParam(Int_t i, Double_t par){fAngleMaxParam.AddAt(par,i) ; }
39   
40   Double_t GetInvMassMaxCut() const {return fInvMassMaxCut ; }
41   Double_t GetInvMassMinCut() const {return fInvMassMinCut ; }
42   void     SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
43   {fInvMassMaxCut =invmassmax;  fInvMassMinCut =invmassmin;}    
44   
45   Double_t GetMass() const {return fM ; }
46   void SetMass(Double_t m) { fM =m ; }
47   
48   Bool_t AreNeutralMesonSelectionHistosKept() const { return fKeepNeutralMesonHistos ; }
49   void  KeepNeutralMesonSelectionHistos(Bool_t keep) { fKeepNeutralMesonHistos = keep ; }
50   
51   void InitParameters();        
52   Bool_t IsAngleInWindow(const Float_t angle, const Float_t e) const ;
53   void Print(const Option_t * opt) const;
54   
55   Bool_t  SelectPair(TLorentzVector particlei,  TLorentzVector particlej)  ;
56         
57   void SwitchOnAngleSelection()    {fUseAngleCut = kTRUE ; }
58   void SwitchOffAngleSelection()   {fUseAngleCut = kFALSE ; }
59         
60   //Histogrammes setters and getters
61   
62   virtual void SetHistoERangeAndNBins(Float_t min, Float_t max, Int_t n) {
63     fHistoNEBins = n ;
64     fHistoEMax = max ;
65     fHistoEMin = min ;
66   }
67   
68   Int_t   GetHistoNEBins() const { return fHistoNEBins ; }
69   Float_t GetHistoEMin()   const { return fHistoEMin ; }
70   Float_t GetHistoEMax()   const { return fHistoEMax ; }
71   
72   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
73     fHistoNPtBins = n ;
74     fHistoPtMax = max ;
75     fHistoPtMin = min ;
76   }
77   
78   Int_t   GetHistoNPtBins() const { return fHistoNPtBins ; }
79   Float_t GetHistoPtMin()   const { return fHistoPtMin ; }
80   Float_t GetHistoPtMax()   const { return fHistoPtMax ; }
81   
82   virtual void SetHistoAngleRangeAndNBins(Float_t min, Float_t max, Int_t n) {
83     fHistoNAngleBins = n ;
84     fHistoAngleMax = max ;
85     fHistoAngleMin = min ;
86   }
87   
88   Int_t   GetHistoNAngleBins() const { return fHistoNAngleBins ; }
89   Float_t GetHistoAngleMin()   const { return fHistoAngleMin ; }
90   Float_t GetHistoAngleMax()   const { return fHistoAngleMax ; }
91   
92   virtual void SetHistoIMRangeAndNBins(Float_t min, Float_t max, Int_t n) {
93     fHistoNIMBins = n ;
94     fHistoIMMax = max ;
95     fHistoIMMin = min ;
96   }
97   
98   Int_t   GetHistoNIMBins() const { return fHistoNIMBins ; }
99   Float_t GetHistoIMMin()   const { return fHistoIMMin ; }
100   Float_t GetHistoIMMax()   const { return fHistoIMMax ; }
101   
102   
103  private:
104   Double_t fM ;              // Mass of the neutral meson
105   Double_t fInvMassMaxCut ;  // Invariant Mass cut maximum
106   Double_t fInvMassMinCut ;  // Invariant Masscut minimun
107   TArrayD  fAngleMaxParam ;  // Max opening angle selection parameters
108   Bool_t   fUseAngleCut ;    // Select pairs depending on their opening angle
109   Bool_t   fKeepNeutralMesonHistos ; // Keep neutral meson selection histograms
110   
111   //Histograms
112   TH2F * fhAnglePairNoCut  ;              //! Aperture angle of decay photons, no cuts
113   TH2F * fhAnglePairOpeningAngleCut   ;   //! Aperture angle of decay photons, cut on opening angle
114   TH2F * fhAnglePairAllCut   ;            //! Aperture angle of decay photons, all cuts
115   TH2F * fhInvMassPairNoCut    ;          //! Invariant mass of decay photons, no cuts
116   TH2F * fhInvMassPairOpeningAngleCut  ;  //! Invariant mass of decay photons, cut on opening angle
117   TH2F * fhInvMassPairAllCut   ;          //! Invariant mass of decay photons, all cuts
118   
119   //Histograms binning and range    
120   Int_t   fHistoNEBins ;     // Number of bins in pi0 E axis
121   Float_t fHistoEMax ;       // Maximum value of pi0 E histogram range
122   Float_t fHistoEMin ;       // Minimum value of pi0 E histogram range
123   Int_t   fHistoNPtBins ;    // Number of bins in Pt trigger axis
124   Float_t fHistoPtMax ;      // Maximum value of Pt trigger histogram range
125   Float_t fHistoPtMin ;      // Minimum value of Pt trigger histogram range             
126   Int_t   fHistoNAngleBins ; // Number of bins in angle axis
127   Float_t fHistoAngleMax ;   // Maximum value of angle histogram range
128   Float_t fHistoAngleMin ;   // Minimum value of angle histogram range
129   Int_t   fHistoNIMBins ;    // Number of bins in Invariant Mass axis
130   Float_t fHistoIMMax ;      // Maximum value of Invariant Mass histogram range
131   Float_t fHistoIMMin ;      // Minimum value of Invariant Mass histogram range
132   
133   ClassDef(AliNeutralMesonSelection,3)
134     
135     } ;
136
137
138 #endif //ALINEUTRALMESONSELECTION_H
139
140
141