f9afc48d |
1 | #ifndef ALIRESONANCEKINK_H |
2 | #define ALIRESONANCEKINK_H |
10eaad41 |
3 | |
4 | /* See cxx source for full Copyright notice */ |
5 | |
6 | //------------------------------------------------------------------------------ |
f9afc48d |
7 | // class AliResonanceKink |
e3c296cd |
8 | // This task is an example of an analysis task |
10eaad41 |
9 | // for analysing resonances having one kaon kink |
10 | //Author: Paraskevi Ganoti, University of Athens (pganoti@phys.uoa.gr) |
11 | //------------------------------------------------------------------------------ |
be1a7181 |
12 | |
92adf4f6 |
13 | #include "TVector3.h" |
be1a7181 |
14 | |
10eaad41 |
15 | class TF1; |
92adf4f6 |
16 | class TH1D; |
17 | class TH2D; |
10eaad41 |
18 | class AliESDEvent; |
f27d6e67 |
19 | class AliESDtrack; |
f9afc48d |
20 | class AliESDVertex; |
21 | class AliMCEvent; |
22 | class TList; |
23 | class TString; |
10eaad41 |
24 | |
f9afc48d |
25 | class AliResonanceKink : public TObject { |
10eaad41 |
26 | public: |
f9afc48d |
27 | |
28 | enum ResonanceType {kPhi=333, kKstar0=313, kLambda1520=3124}; |
10eaad41 |
29 | |
f9afc48d |
30 | AliResonanceKink(); |
894840ad |
31 | AliResonanceKink(Int_t nbins, Float_t nlowx, Float_t nhighx, Int_t netabins, Float_t nloweta, Float_t nupeta, Int_t nptbins, Float_t nlowpt, Float_t nupperpt, Int_t daughter1, Int_t daughter2, Int_t resonancePDG); |
f9afc48d |
32 | virtual ~AliResonanceKink(); |
10eaad41 |
33 | |
f9afc48d |
34 | TList* GetHistogramList(); |
894840ad |
35 | void Analyse(AliESDEvent* esd, AliMCEvent* mcEvent); |
36 | void Analyse(AliESDEvent* esd); |
10eaad41 |
37 | Float_t GetSigmaToVertex(AliESDtrack* esdTrack) const ; |
38 | const AliESDVertex *GetEventVertex(const AliESDEvent* esd) const; |
0aa3a5b9 |
39 | void SetDebugLevel(Int_t level) {fDebug = level;} |
f9afc48d |
40 | void SetAnalysisType(TString type) {fAnalysisType=type;} |
894840ad |
41 | TString GetAnalysisType() {return fAnalysisType;} |
f9afc48d |
42 | void SetPDGCodes(Int_t d1, Int_t d2, Int_t res) {fdaughter1pdg=d1; fdaughter2pdg=d2; fresonancePDGcode=res;} |
894840ad |
43 | void InitOutputHistograms(Int_t nbins, Float_t nlowx, Float_t nhighx, Int_t netabins, Float_t nloweta, Float_t nupeta, Int_t nptbins, Float_t nlowpt, Float_t nupperpt); |
92adf4f6 |
44 | Bool_t IsAcceptedForKink(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack); |
45 | Bool_t IsAcceptedForTrack(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack); |
46 | Bool_t IsKink(AliESDEvent *localesd, Int_t kinkIndex, TVector3 trackMom); |
47 | |
48 | void SetMaxNsigmaToVertex(Float_t maxNSigmaToVertex) { |
49 | fMaxNSigmaToVertex=maxNSigmaToVertex; |
50 | } |
51 | Float_t GetMaxNsigmaToVertex() const {return fMaxNSigmaToVertex;} |
52 | |
53 | void SetPtTrackCut(Double_t minPtTrackCut) { |
54 | fMinPtTrackCut=minPtTrackCut; |
55 | } |
56 | Double_t GetPtTrackCut() const {return fMinPtTrackCut;} |
57 | |
58 | void SetMaxDCAxy(Double_t maxDCAxy) { |
59 | fMaxDCAxy=maxDCAxy; |
60 | } |
61 | Double_t GetMaxDCAxy() const {return fMaxDCAxy;} |
62 | |
63 | void SetMaxDCAzaxis(Double_t maxDCAzaxis) { |
64 | fMaxDCAzaxis=maxDCAzaxis; |
65 | } |
66 | Double_t GetMaxDCAzaxis() const {return fMaxDCAzaxis;} |
67 | |
68 | void SetMinTPCclusters(Int_t minTPCclusters) { |
69 | fMinTPCclusters=minTPCclusters; |
70 | } |
71 | Int_t GetMinTPCclusters() const {return fMinTPCclusters;} |
72 | |
73 | void SetMaxChi2PerTPCcluster(Double_t maxChi2PerTPCcluster) { |
74 | fMaxChi2PerTPCcluster=maxChi2PerTPCcluster; |
75 | } |
76 | Double_t GetMaxChi2PerTPCcluster() const {return fMaxChi2PerTPCcluster;} |
77 | |
78 | void SetMaxCov0(Double_t maxCov0) { |
79 | fMaxCov0=maxCov0; |
80 | } |
81 | Double_t GetMaxCov0() const {return fMaxCov0;} |
82 | |
83 | void SetMaxCov2(Double_t maxCov2) { |
84 | fMaxCov2=maxCov2; |
85 | } |
86 | Double_t GetMaxCov2() const {return fMaxCov2;} |
87 | |
88 | void SetMaxCov5(Double_t maxCov5) { |
89 | fMaxCov5=maxCov5; |
90 | } |
91 | Double_t GetMaxCov5() const {return fMaxCov5;} |
92 | |
93 | void SetMaxCov9(Double_t maxCov9) { |
94 | fMaxCov9=maxCov9; |
95 | } |
96 | Double_t GetMaxCov9() const {return fMaxCov9;} |
97 | |
98 | void SetMaxCov14(Double_t maxCov14) { |
99 | fMaxCov14=maxCov14; |
100 | } |
894840ad |
101 | Double_t GetMaxCov14() const {return fMaxCov14;} |
92adf4f6 |
102 | |
894840ad |
103 | void SetMinKinkRadius(Float_t minKinkRadius) { |
104 | fminKinkRadius=minKinkRadius; |
105 | } |
106 | Float_t GetMinKinkRadius() const {return fminKinkRadius;} |
107 | |
108 | void SetMaxKinkRadius(Float_t maxKinkRadius) { |
109 | fmaxKinkRadius=maxKinkRadius; |
110 | } |
111 | Float_t GetMaxKinkRadius() const {return fmaxKinkRadius;} |
112 | |
113 | void SetQtLimits(Float_t minQt, Float_t maxQt) {fminQt=minQt; fmaxQt=maxQt;} |
e3c296cd |
114 | |
115 | void SetUpperAbsEtaCut(Double_t maxAbsEtaCut) { |
116 | fmaxAbsEtaCut=maxAbsEtaCut; |
117 | } |
118 | Double_t GetUpperAbsEtaCut() const {return fmaxAbsEtaCut;} |
894840ad |
119 | |
92adf4f6 |
120 | //void SetTPCrefit() {Int_t fTPCrefitFlag=kTRUE;} |
121 | |
10eaad41 |
122 | private: |
f9afc48d |
123 | |
0aa3a5b9 |
124 | Int_t fDebug; // Debug flag |
92adf4f6 |
125 | TList *fListOfHistos; // List |
126 | TH1D *fOpeningAngle; // Opening |
127 | TH1D *fInvariantMass; // invMass spectrum |
128 | TH1D *fInvMassTrue; // invMassTrue spectrum |
129 | TH1D *fPhiBothKinks; // bothKaonsKinks |
894840ad |
130 | Int_t fetabins; // number of eta bins |
131 | Float_t floweta; // lower limit for eta |
132 | Float_t fupeta; // upper limit for eta |
92adf4f6 |
133 | TH1D *fRecPt; // pT spectrum |
134 | TH1D *fRecEta; // Eta spectrum |
135 | TH2D *fRecEtaPt; // Eta pT spectrum |
136 | TH1D *fSimPt; // pT Sim spectrum |
137 | TH1D *fSimEta; // Eta Sim spectrum |
138 | TH2D *fSimEtaPt; // Eta pT Sim spectrum |
139 | TH1D *fSimPtKink; // pT Sim one kaon kink spectrum |
140 | TH1D *fSimEtaKink; // Eta Sim one kaon kink spectrum spectrum |
141 | TH2D *fSimEtaPtKink; // Eta pT Sim one kaon kink spectrum |
04c3c355 |
142 | TF1 *f1; //upper limit curve for the decay K->mu |
143 | TF1 *f2; //upper limit curve for the decay pi->mu |
10eaad41 |
144 | TString fAnalysisType;//"ESD" or "MC" |
92adf4f6 |
145 | TH1D *fvtxz ; // vtx z component |
146 | Int_t fNbins; // bins |
147 | Float_t fLowX;// lowx |
148 | Float_t fHighX; // high x |
04c3c355 |
149 | Int_t fdaughter1pdg; // pdg code of the resonance's first daughter |
150 | Int_t fdaughter2pdg; // pdg code of the resonance's second daughter |
151 | Int_t fresonancePDGcode; // pdg code of the resonance |
152 | Float_t fMaxNSigmaToVertex; // standard cut to select primary tracks |
153 | Double_t fMinPtTrackCut; // lower pt cut for the tracks |
154 | Double_t fMaxDCAxy; // impact parameter in the xy plane |
155 | Double_t fMaxDCAzaxis; // impact parameter in the z axis |
156 | Int_t fMinTPCclusters; // standard cut for the TPC clusters |
157 | Double_t fMaxChi2PerTPCcluster; // standard cut for the chi2 of the TPC clusters |
158 | Double_t fMaxCov0; // standard cut |
159 | Double_t fMaxCov2; // standard cut |
160 | Double_t fMaxCov5; // standard cut |
161 | Double_t fMaxCov9; // standard cut |
162 | Double_t fMaxCov14; // standard cut |
163 | TH2D *fInvmassPt; // 2D histo for invariant mass calculation in pt bins (all pairs, ESD) |
164 | TH2D *fInvmassPtTrue; // 2D histo for invariant mass calculation in pt bins (true pairs, ESD) |
165 | TH2D *fMCInvmassPt; // 2D histo for invariant mass calculation in pt bins (all pairs, MC) |
894840ad |
166 | TH2D *fMCInvmassPtTrue; // 2D histo for invariant mass calculation in pt bins (true pairs, MC) |
167 | Float_t fminKinkRadius; // min accepted radius for the kink vertex |
168 | Float_t fmaxKinkRadius; // max accepted radius for the kink vertex |
169 | Float_t fminQt; //min Qt cut |
170 | Float_t fmaxQt; //max Qt cut |
171 | Int_t fptbins; // number of bins in pt |
172 | Float_t flowpt; // pt lower limit |
173 | Float_t fupperpt; // pt upper limit |
e3c296cd |
174 | Double_t fmaxAbsEtaCut; // max abolute eta cut for analysis |
92adf4f6 |
175 | // Bool_t fTPCrefitFlag; |
10eaad41 |
176 | |
f9afc48d |
177 | AliResonanceKink(const AliResonanceKink&); // not implemented |
178 | AliResonanceKink& operator=(const AliResonanceKink&); // not implemented |
10eaad41 |
179 | |
f9afc48d |
180 | ClassDef(AliResonanceKink, 1); // example of analysis |
10eaad41 |
181 | }; |
182 | |
183 | #endif |