]>
Commit | Line | Data |
---|---|---|
1c5acb87 | 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 --- | |
1c5acb87 | 23 | |
24 | class AliNeutralMesonSelection : public TObject { | |
477d6cee | 25 | |
26 | public: | |
477d6cee | 27 | AliNeutralMesonSelection() ; // default ctor |
9542ac75 | 28 | virtual ~AliNeutralMesonSelection() { ; } //virtual dtor |
78219bac | 29 | private: |
477d6cee | 30 | AliNeutralMesonSelection(const AliNeutralMesonSelection & g) ; // cpy ctor |
31 | AliNeutralMesonSelection & operator = (const AliNeutralMesonSelection & g) ;//cpy assignment | |
477d6cee | 32 | |
78219bac | 33 | public: |
a5fb4114 | 34 | // General |
9542ac75 | 35 | |
a5fb4114 | 36 | TList * GetCreateOutputObjects(); |
9542ac75 | 37 | |
a5fb4114 | 38 | void InitParameters(); |
9542ac75 | 39 | |
a5fb4114 | 40 | void Print(const Option_t * opt) const; |
78219bac | 41 | |
9542ac75 | 42 | Bool_t AreNeutralMesonSelectionHistosKept() const { return fKeepNeutralMesonHistos ; } |
43 | void KeepNeutralMesonSelectionHistos(Bool_t keep) { fKeepNeutralMesonHistos = keep ; } | |
44 | ||
3bfcb597 | 45 | Bool_t SelectPair(TLorentzVector particlei, TLorentzVector particlej, TString calo) ; |
46 | ||
47 | void SetParticle(TString particleName) ; // Do some default settings for "Pi0" or "Eta" | |
9542ac75 | 48 | |
49 | // Asymmetry selection | |
50 | ||
51 | Float_t GetAsymmetryCut() const { return fAsymmetryCut ; } | |
52 | void SetAsymmetryCut(Float_t asy) { fAsymmetryCut = asy ; } | |
53 | ||
54 | void SwitchOnAsymmetryCut() { fUseAsymmetryCut = kTRUE ; } | |
55 | void SwitchOffAsymmetryCut() { fUseAsymmetryCut = kFALSE ; } | |
56 | ||
a5fb4114 | 57 | //Opening angle selection |
9542ac75 | 58 | |
a5fb4114 | 59 | Double_t GetAngleMaxParam(Int_t i) const { return fAngleMaxParam.At(i) ; } |
60 | void SetAngleMaxParam(Int_t i, Double_t par) { fAngleMaxParam.AddAt(par,i) ; } | |
477d6cee | 61 | |
9542ac75 | 62 | Float_t GetShiftMinAngleCut() const { return fShiftMinAngle ; } |
a5fb4114 | 63 | void SetShiftMinAngleCut(Float_t shift) { fShiftMinAngle = shift ; } |
64 | ||
65 | void SwitchOnAngleSelection() { fUseAngleCut = kTRUE ; } | |
66 | void SwitchOffAngleSelection() { fUseAngleCut = kFALSE ; } | |
9542ac75 | 67 | |
68 | Bool_t IsAngleInWindow(const Float_t angle, const Float_t e) const ; | |
a5fb4114 | 69 | |
70 | //Invariant mass selection | |
9542ac75 | 71 | |
a5fb4114 | 72 | Double_t GetInvMassMaxCut() const { return fInvMassMaxCut ; } |
73 | Double_t GetInvMassMinCut() const { return fInvMassMinCut ; } | |
477d6cee | 74 | |
b6991fc4 | 75 | void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax) |
9542ac75 | 76 | { fInvMassMaxCut =invmassmax; fInvMassMinCut =invmassmin ; } |
477d6cee | 77 | |
3bfcb597 | 78 | void SetInvMassCutMaxParameters(Float_t a, Float_t b, Float_t c) |
79 | { fInvMassMaxCutParam[0] = a ; | |
80 | fInvMassMaxCutParam[1] = b ; | |
81 | fInvMassMaxCutParam[2] = c ; } | |
82 | ||
a5fb4114 | 83 | Double_t GetMass() const { return fM ; } |
84 | void SetMass(Double_t m) { fM = m ; } | |
3bfcb597 | 85 | |
477d6cee | 86 | //Histogrammes setters and getters |
87 | ||
88 | virtual void SetHistoERangeAndNBins(Float_t min, Float_t max, Int_t n) { | |
89 | fHistoNEBins = n ; | |
90 | fHistoEMax = max ; | |
91 | fHistoEMin = min ; | |
92 | } | |
93 | ||
a5fb4114 | 94 | Int_t GetHistoNEBins() const { return fHistoNEBins ; } |
95 | Float_t GetHistoEMin() const { return fHistoEMin ; } | |
96 | Float_t GetHistoEMax() const { return fHistoEMax ; } | |
3bfcb597 | 97 | |
477d6cee | 98 | virtual void SetHistoAngleRangeAndNBins(Float_t min, Float_t max, Int_t n) { |
99 | fHistoNAngleBins = n ; | |
100 | fHistoAngleMax = max ; | |
101 | fHistoAngleMin = min ; | |
102 | } | |
103 | ||
104 | Int_t GetHistoNAngleBins() const { return fHistoNAngleBins ; } | |
a5fb4114 | 105 | Float_t GetHistoAngleMin() const { return fHistoAngleMin ; } |
106 | Float_t GetHistoAngleMax() const { return fHistoAngleMax ; } | |
477d6cee | 107 | |
108 | virtual void SetHistoIMRangeAndNBins(Float_t min, Float_t max, Int_t n) { | |
109 | fHistoNIMBins = n ; | |
110 | fHistoIMMax = max ; | |
111 | fHistoIMMin = min ; | |
112 | } | |
113 | ||
a5fb4114 | 114 | Int_t GetHistoNIMBins() const { return fHistoNIMBins ; } |
115 | Float_t GetHistoIMMin() const { return fHistoIMMin ; } | |
116 | Float_t GetHistoIMMax() const { return fHistoIMMax ; } | |
477d6cee | 117 | |
118 | ||
119 | private: | |
9542ac75 | 120 | |
121 | Float_t fAsymmetryCut ; // Asymmetry cut | |
122 | Bool_t fUseAsymmetryCut; // Use the asymmetry cut | |
123 | ||
124 | Double_t fM ; // Mass of the neutral meson | |
125 | Double_t fInvMassMaxCut ; // Invariant Mass cut maximum | |
126 | Double_t fInvMassMinCut ; // Invariant Masscut minimun | |
3bfcb597 | 127 | Double_t fInvMassMaxCutParam[3]; // Variable invariant mass max cut, for pi0 in EMCAL |
9542ac75 | 128 | |
129 | TArrayD fAngleMaxParam ; // Max opening angle selection parameters | |
130 | Bool_t fUseAngleCut ; // Select pairs depending on their opening angle | |
131 | Float_t fShiftMinAngle ; // Correction shift for min angle from true kinematic limit, resolution effects | |
132 | ||
133 | Bool_t fKeepNeutralMesonHistos ; // Keep neutral meson selection histograms | |
3bfcb597 | 134 | |
477d6cee | 135 | //Histograms |
9542ac75 | 136 | TH2F * fhAnglePairNoCut ; //! Aperture angle of decay photons, no cuts |
137 | TH2F * fhAnglePairOpeningAngleCut ; //! Aperture angle of decay photons, cut on opening angle | |
138 | TH2F * fhAnglePairAsymmetryCut ; //! Aperture angle of decay photons, asymmetry cut | |
139 | TH2F * fhAnglePairAllCut ; //! Aperture angle of decay photons, all cuts | |
140 | ||
141 | TH2F * fhInvMassPairNoCut ; //! Invariant mass of decay photons, no cuts | |
142 | TH2F * fhInvMassPairOpeningAngleCut ; //! Invariant mass of decay photons, cut on opening angle | |
143 | TH2F * fhInvMassPairAsymmetryCut ; //! Invariant mass of decay photons, asymmetry cut | |
144 | TH2F * fhInvMassPairAllCut ; //! Invariant mass of decay photons, all cuts | |
145 | ||
146 | TH2F * fhAsymmetryNoCut ; //! Asymmetry of decay photons, no cuts | |
147 | TH2F * fhAsymmetryOpeningAngleCut ; //! Asymmetry of decay photons, cut on opening angle | |
148 | TH2F * fhAsymmetryAllCut ; //! Asymmetry of decay photons, all cuts | |
477d6cee | 149 | |
150 | //Histograms binning and range | |
9542ac75 | 151 | Int_t fHistoNEBins ; // Number of bins in pi0 E axis |
152 | Float_t fHistoEMax ; // Maximum value of pi0 E histogram range | |
153 | Float_t fHistoEMin ; // Minimum value of pi0 E histogram range | |
154 | ||
9542ac75 | 155 | Int_t fHistoNAngleBins ; // Number of bins in angle axis |
156 | Float_t fHistoAngleMax ; // Maximum value of angle histogram range | |
157 | Float_t fHistoAngleMin ; // Minimum value of angle histogram range | |
158 | ||
159 | Int_t fHistoNIMBins ; // Number of bins in Invariant Mass axis | |
160 | Float_t fHistoIMMax ; // Maximum value of Invariant Mass histogram range | |
161 | Float_t fHistoIMMin ; // Minimum value of Invariant Mass histogram range | |
162 | ||
3bfcb597 | 163 | ClassDef(AliNeutralMesonSelection,6) |
1c5acb87 | 164 | |
9542ac75 | 165 | } ; |
1c5acb87 | 166 | |
167 | #endif //ALINEUTRALMESONSELECTION_H | |
168 | ||
169 | ||
170 |