]>
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 */ | |
1c5acb87 | 5 | |
6 | //_________________________________________________________________________ | |
7 | // Class that contains methods to select candidate pairs to neutral meson | |
8 | // 2 main selections, invariant mass around pi0 (also any other mass), | |
9 | // apperture angle to distinguish from combinatorial. | |
10 | // There is a 3rd cut based on the gamma correlation on phi or pt. | |
11 | //-- Author: Gustavo Conesa (INFN-LNF) | |
12 | ||
13 | // --- ROOT system --- | |
14 | #include<TObject.h> | |
15 | #include<TArrayD.h> | |
3f150b4b | 16 | #include<TString.h> |
1c5acb87 | 17 | |
18 | class TLorentzVector ; | |
3f150b4b | 19 | class TList ; |
20 | class TH2F ; | |
21 | class TString ; | |
1c5acb87 | 22 | |
23 | class AliNeutralMesonSelection : public TObject { | |
477d6cee | 24 | |
25 | public: | |
477d6cee | 26 | AliNeutralMesonSelection() ; // default ctor |
9542ac75 | 27 | virtual ~AliNeutralMesonSelection() { ; } //virtual dtor |
c5693f62 | 28 | |
a5fb4114 | 29 | // General |
9542ac75 | 30 | |
a5fb4114 | 31 | TList * GetCreateOutputObjects(); |
9542ac75 | 32 | |
a5fb4114 | 33 | void InitParameters(); |
9542ac75 | 34 | |
a5fb4114 | 35 | void Print(const Option_t * opt) const; |
78219bac | 36 | |
9542ac75 | 37 | Bool_t AreNeutralMesonSelectionHistosKept() const { return fKeepNeutralMesonHistos ; } |
38 | void KeepNeutralMesonSelectionHistos(Bool_t keep) { fKeepNeutralMesonHistos = keep ; } | |
39 | ||
3bfcb597 | 40 | Bool_t SelectPair(TLorentzVector particlei, TLorentzVector particlej, TString calo) ; |
41 | ||
42 | void SetParticle(TString particleName) ; // Do some default settings for "Pi0" or "Eta" | |
a39c9b1b | 43 | TString GetParticle() const { return fParticle ; } |
9542ac75 | 44 | |
45 | // Asymmetry selection | |
46 | ||
d013c46c | 47 | Float_t GetAsymmetryCut() const { return fAsymmetryCut ; } |
48 | void SetAsymmetryCut(Float_t asy) { fAsymmetryCut = asy ; } | |
9542ac75 | 49 | |
d013c46c | 50 | void SwitchOnAsymmetryCut() { fUseAsymmetryCut = kTRUE ; } |
51 | void SwitchOffAsymmetryCut() { fUseAsymmetryCut = kFALSE ; } | |
9542ac75 | 52 | |
a5fb4114 | 53 | //Opening angle selection |
9542ac75 | 54 | |
a5fb4114 | 55 | Double_t GetAngleMaxParam(Int_t i) const { return fAngleMaxParam.At(i) ; } |
56 | void SetAngleMaxParam(Int_t i, Double_t par) { fAngleMaxParam.AddAt(par,i) ; } | |
477d6cee | 57 | |
d013c46c | 58 | void SetShiftMinAngleCut(Float_t a, Float_t b) { fShiftMinAngle[0] = a ; |
7287751b | 59 | fShiftMinAngle[1] = b ; } |
a5fb4114 | 60 | |
61 | void SwitchOnAngleSelection() { fUseAngleCut = kTRUE ; } | |
62 | void SwitchOffAngleSelection() { fUseAngleCut = kFALSE ; } | |
9542ac75 | 63 | |
8a2dbbff | 64 | Bool_t IsAngleInWindow(Float_t angle, Float_t e) const ; |
a5fb4114 | 65 | |
66 | //Invariant mass selection | |
9542ac75 | 67 | |
a5fb4114 | 68 | Double_t GetInvMassMaxCut() const { return fInvMassMaxCut ; } |
69 | Double_t GetInvMassMinCut() const { return fInvMassMinCut ; } | |
477d6cee | 70 | |
b6991fc4 | 71 | void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax) |
9542ac75 | 72 | { fInvMassMaxCut =invmassmax; fInvMassMinCut =invmassmin ; } |
477d6cee | 73 | |
3f150b4b | 74 | void SetSideBandCutRanges( Double_t lmin, Double_t lmax, |
75 | Double_t rmin, Double_t rmax ) | |
76 | { fLeftBandMinCut = lmin ; fLeftBandMaxCut = lmax ; | |
77 | fRightBandMinCut = rmin ; fRightBandMaxCut = rmax ; } | |
78 | ||
3bfcb597 | 79 | void SetInvMassCutMaxParameters(Float_t a, Float_t b, Float_t c) |
80 | { fInvMassMaxCutParam[0] = a ; | |
81 | fInvMassMaxCutParam[1] = b ; | |
82 | fInvMassMaxCutParam[2] = c ; } | |
83 | ||
a5fb4114 | 84 | Double_t GetMass() const { return fM ; } |
85 | void SetMass(Double_t m) { fM = m ; } | |
a39c9b1b | 86 | |
87 | ||
88 | // Decay photon bit setting | |
89 | ||
90 | enum decayTypes { kPi0, kEta, kPi0Side, kEtaSide} ; | |
91 | ||
92 | UInt_t GetDecayBit() const { return fDecayBit ; } | |
93 | ||
94 | void SetDecayBit(Int_t &tag, UInt_t set) const { | |
95 | // Set bit of type set (decayTypes) in tag | |
96 | tag |= (1<<set) ; | |
97 | } | |
98 | ||
99 | void SetDecayBit(Int_t &tag) const { | |
100 | // Set bit of type set (decayTypes) in tag | |
101 | tag |= (1<<fDecayBit) ; | |
102 | } | |
103 | ||
104 | Bool_t CheckDecayBit(Int_t tag, UInt_t test) const { | |
105 | // Check if in tag the bit test (decayTypes) is set. | |
106 | if (tag & (1<<test) ) return kTRUE ; | |
107 | else return kFALSE ; | |
108 | } | |
109 | ||
110 | Bool_t CheckDecayBit(Int_t tag) const { | |
111 | // Check if in tag the bit test (decayTypes) is set. | |
112 | if (tag & (1<<fDecayBit) ) return kTRUE ; | |
113 | else return kFALSE ; | |
114 | } | |
115 | ||
116 | // Histograms setters and getters | |
477d6cee | 117 | |
118 | virtual void SetHistoERangeAndNBins(Float_t min, Float_t max, Int_t n) { | |
119 | fHistoNEBins = n ; | |
120 | fHistoEMax = max ; | |
121 | fHistoEMin = min ; | |
122 | } | |
123 | ||
a5fb4114 | 124 | Int_t GetHistoNEBins() const { return fHistoNEBins ; } |
125 | Float_t GetHistoEMin() const { return fHistoEMin ; } | |
126 | Float_t GetHistoEMax() const { return fHistoEMax ; } | |
3bfcb597 | 127 | |
477d6cee | 128 | virtual void SetHistoAngleRangeAndNBins(Float_t min, Float_t max, Int_t n) { |
129 | fHistoNAngleBins = n ; | |
130 | fHistoAngleMax = max ; | |
131 | fHistoAngleMin = min ; | |
132 | } | |
133 | ||
134 | Int_t GetHistoNAngleBins() const { return fHistoNAngleBins ; } | |
a5fb4114 | 135 | Float_t GetHistoAngleMin() const { return fHistoAngleMin ; } |
136 | Float_t GetHistoAngleMax() const { return fHistoAngleMax ; } | |
477d6cee | 137 | |
138 | virtual void SetHistoIMRangeAndNBins(Float_t min, Float_t max, Int_t n) { | |
139 | fHistoNIMBins = n ; | |
140 | fHistoIMMax = max ; | |
141 | fHistoIMMin = min ; | |
142 | } | |
143 | ||
a5fb4114 | 144 | Int_t GetHistoNIMBins() const { return fHistoNIMBins ; } |
145 | Float_t GetHistoIMMin() const { return fHistoIMMin ; } | |
146 | Float_t GetHistoIMMax() const { return fHistoIMMax ; } | |
477d6cee | 147 | |
477d6cee | 148 | private: |
9542ac75 | 149 | |
150 | Float_t fAsymmetryCut ; // Asymmetry cut | |
151 | Bool_t fUseAsymmetryCut; // Use the asymmetry cut | |
3f150b4b | 152 | |
9542ac75 | 153 | Double_t fM ; // Mass of the neutral meson |
154 | Double_t fInvMassMaxCut ; // Invariant Mass cut maximum | |
155 | Double_t fInvMassMinCut ; // Invariant Masscut minimun | |
3bfcb597 | 156 | Double_t fInvMassMaxCutParam[3]; // Variable invariant mass max cut, for pi0 in EMCAL |
9542ac75 | 157 | |
3f150b4b | 158 | Double_t fLeftBandMinCut ; // Side Band selection, min left band cut |
159 | Double_t fLeftBandMaxCut ; // Side Band selection, max left band cut | |
160 | Double_t fRightBandMinCut ; // Side Band selection, min right band cut | |
161 | Double_t fRightBandMaxCut ; // Side Band selection, max right band cut | |
162 | ||
9542ac75 | 163 | TArrayD fAngleMaxParam ; // Max opening angle selection parameters |
164 | Bool_t fUseAngleCut ; // Select pairs depending on their opening angle | |
7287751b | 165 | Float_t fShiftMinAngle[2] ; // Correction shift for min angle from true kinematic limit, resolution effects |
9542ac75 | 166 | |
167 | Bool_t fKeepNeutralMesonHistos ; // Keep neutral meson selection histograms | |
a39c9b1b | 168 | |
3f150b4b | 169 | TString fParticle ; // neutral meson name (Pi0, Eta, +SideBand) |
a39c9b1b | 170 | UInt_t fDecayBit; // Decay type flag, set when fParticle is set |
3bfcb597 | 171 | |
477d6cee | 172 | //Histograms |
9542ac75 | 173 | TH2F * fhAnglePairNoCut ; //! Aperture angle of decay photons, no cuts |
174 | TH2F * fhAnglePairOpeningAngleCut ; //! Aperture angle of decay photons, cut on opening angle | |
175 | TH2F * fhAnglePairAsymmetryCut ; //! Aperture angle of decay photons, asymmetry cut | |
176 | TH2F * fhAnglePairAllCut ; //! Aperture angle of decay photons, all cuts | |
177 | ||
178 | TH2F * fhInvMassPairNoCut ; //! Invariant mass of decay photons, no cuts | |
179 | TH2F * fhInvMassPairOpeningAngleCut ; //! Invariant mass of decay photons, cut on opening angle | |
180 | TH2F * fhInvMassPairAsymmetryCut ; //! Invariant mass of decay photons, asymmetry cut | |
181 | TH2F * fhInvMassPairAllCut ; //! Invariant mass of decay photons, all cuts | |
182 | ||
183 | TH2F * fhAsymmetryNoCut ; //! Asymmetry of decay photons, no cuts | |
184 | TH2F * fhAsymmetryOpeningAngleCut ; //! Asymmetry of decay photons, cut on opening angle | |
185 | TH2F * fhAsymmetryAllCut ; //! Asymmetry of decay photons, all cuts | |
477d6cee | 186 | |
187 | //Histograms binning and range | |
9542ac75 | 188 | Int_t fHistoNEBins ; // Number of bins in pi0 E axis |
189 | Float_t fHistoEMax ; // Maximum value of pi0 E histogram range | |
190 | Float_t fHistoEMin ; // Minimum value of pi0 E histogram range | |
191 | ||
9542ac75 | 192 | Int_t fHistoNAngleBins ; // Number of bins in angle axis |
193 | Float_t fHistoAngleMax ; // Maximum value of angle histogram range | |
194 | Float_t fHistoAngleMin ; // Minimum value of angle histogram range | |
195 | ||
196 | Int_t fHistoNIMBins ; // Number of bins in Invariant Mass axis | |
197 | Float_t fHistoIMMax ; // Maximum value of Invariant Mass histogram range | |
c5693f62 | 198 | Float_t fHistoIMMin ; // Minimum value of Invariant Mass histogram range |
199 | ||
b960c7eb | 200 | AliNeutralMesonSelection( const AliNeutralMesonSelection & g) ; // cpy ctor |
c5693f62 | 201 | AliNeutralMesonSelection & operator = (const AliNeutralMesonSelection & g) ; // cpy assignment |
9542ac75 | 202 | |
a39c9b1b | 203 | ClassDef(AliNeutralMesonSelection,8) |
1c5acb87 | 204 | |
9542ac75 | 205 | } ; |
1c5acb87 | 206 | |
207 | #endif //ALINEUTRALMESONSELECTION_H | |
208 | ||
209 | ||
210 |