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