]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/hfe/AliESDv0KineCuts.h
Added pass1 and pass2 directories
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliESDv0KineCuts.h
CommitLineData
27de2dfb 1#ifndef ALIESDV0KINECUTS_H
2#define ALIESDV0KINECUTS_H
3
3a72645a 4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
27de2dfb 6
7/* $Id$ */
8
3a72645a 9/*
10 * plesae see source file for more details
11 */
3a72645a 12
13#include <TObject.h>
14
15class AliESDv0;
16class AliESDEvent;
17class AliVEvent;
18class AliESDtrack;
19class AliVTrack;
20class AliKFParticle;
21class AliKFVertex;
22
23class AliESDv0KineCuts : public TObject{
24 public:
25 enum{ // Reconstructed V0
26 kUndef = -1,
27 kGamma = 0,
28 kK0 = 1,
29 kLambda = 2,
30 kALambda = 3
31 };
3f6a07d9 32 enum{ // data types
33 kPP = 0,
34 kPbPb = 1, // not yet implemented
35 };
36 enum{ // operation modes
37 kPurity = 0, // purely kinematical selection
38 kEffGamma = 1 // !!! involves TPC dEdx or nSimga cuts !!!
39 };
3a72645a 40
41 AliESDv0KineCuts();
42 virtual ~AliESDv0KineCuts();
43
44 AliESDv0KineCuts(const AliESDv0KineCuts &ref);
45 AliESDv0KineCuts &operator=(const AliESDv0KineCuts &ref);
46
3f6a07d9 47 // main selection function - called once per V0 candidate
3a72645a 48 Bool_t ProcessV0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN);
49 Bool_t ProcessV0(AliESDv0* const v0, Int_t &pdgP, Int_t &pdgN);
50
3f6a07d9 51 // must be called by the user
52 void SetEvent(AliESDEvent* const event);
53 void SetEvent(AliVEvent* const event);
54 void SetPrimaryVertex(AliKFVertex* const v);
55
56 // user can select an operation modes [see .cxx for details]
57 void SetMode(Int_t mode, Int_t type);
58 void SetMode(Int_t mode, const char* type);
59
60 //
61 // setter functions for V0 cut values
62 // for default values see the constructor
63 // see the default contructor for comments
64 //
65
66 // single track cuts
67 void SetNTPCclusters(Int_t n) { fTPCNcls = n; };
68 void SetTPCrefit(Bool_t r = kTRUE) { fTPCrefit = r; };
69 void SetTPCchi2perCls(Float_t chi2) { fTPCchi2perCls = chi2; };
70 void SetTPCclusterratio(Float_t r) { fTPCclsRatio = r; };
71 void SetNoKinks(Bool_t k = kTRUE) { fNoKinks = k; };
72
73 // gamma cuts
bf892a6a 74 void SetGammaCutChi2NDF(Float_t val) { fGcutChi2NDF = val; };
75 void SetGammaCutCosPoint(Float_t *val) {
76 fGcutCosPoint[0] = val[0];
77 fGcutCosPoint[1] = val[1];
78 };
79 void SetGammaCutDCA(Float_t *val){
80 fGcutDCA[0] = val[0];
81 fGcutDCA[1] = val[1];
82 };
83 void SetGammaCutVertexR(Float_t *val){
84 fGcutVertexR[0] = val[0];
85 fGcutVertexR[1] = val[1];
86 };
87 void SetGammaCutPsiPair(Float_t *val){
88 fGcutPsiPair[0] = val[0];
89 fGcutPsiPair[1] = val[1];
90 };
91 void SetGammaCutInvMass(Float_t val){
92 fGcutInvMass = val;
93 };
3f6a07d9 94 // K0 cuts
95 void SetK0CutChi2NDF(Float_t val) { fK0cutChi2NDF = val; };
96 void SetK0CutCosPoint(Float_t *val) {
97 fK0cutCosPoint[0] = val[0];
98 fK0cutCosPoint[1] = val[1];
99 };
100 void SetK0CutDCA(Float_t *val){
101 fK0cutDCA[0] = val[0];
102 fK0cutDCA[1] = val[1];
103 };
104 void SetK0CutVertexR(Float_t *val){
105 fK0cutVertexR[0] = val[0];
106 fK0cutVertexR[1] = val[1];
107 };
108 void SetK0CutInvMass(Float_t *val){
109 fK0cutInvMass[0] = val[0];
110 fK0cutInvMass[1] = val[1];
111 };
112 // lambda & anti-lambda cuts
113 void SetLambdaCutChi2NDF(Float_t val) { fLcutChi2NDF = val; };
114 void SetLambdaCutCosPoint(Float_t *val) {
115 fLcutCosPoint[0] = val[0];
116 fLcutCosPoint[1] = val[1];
117 };
118 void SetLambdaCutDCA(Float_t *val){
119 fLcutDCA[0] = val[0];
120 fLcutDCA[1] = val[1];
121 };
122 void SetLambdaCutVertexR(Float_t *val){
123 fLcutVertexR[0] = val[0];
124 fLcutVertexR[1] = val[1];
125 };
126 void SetLambdaCutInvMass(Float_t *val){
127 fLcutInvMass[0] = val[0];
128 fLcutInvMass[1] = val[1];
129 };
130
bf892a6a 131
3f6a07d9 132 Int_t PreselectV0(AliESDv0* const v0);
133
134 Bool_t CaseGamma(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN);
135 Bool_t CaseK0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN);
136 Bool_t CaseLambda(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN, Int_t id);
3a72645a 137
3f6a07d9 138 Bool_t V0CutsCommon(const AliESDv0 * const v0);
139 Bool_t SingleTrackCuts(AliESDv0 * const v0);
140 void Armenteros(AliESDv0* const v0, Float_t val[2]);
141 Bool_t CheckSigns(AliESDv0* const v0);
142
143 Double_t PsiPair(AliESDv0* const v0);
144 Bool_t GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]);
145 Bool_t GetHelixCenter(AliESDtrack * const track, Double_t b, Int_t charge, Double_t center[2]);
3a72645a 146
147 protected:
148 void Copy(TObject &ref) const;
149
150 private:
151
152 AliKFParticle *CreateMotherParticle(const AliVTrack* const pdaughter, const AliVTrack* const ndaughter, Int_t pspec, Int_t nspec);
3f6a07d9 153 void SetCuts(); // setup cuts for selected fMode and fType, see source file for details
154 Bool_t GammaEffCuts(AliESDv0 * const v0); // set of cuts optimized for high gamma efficiency
3a72645a 155
156 private:
3a72645a 157 AliESDEvent *fEvent; // current event
158 AliKFVertex *fPrimaryVertex; // primary vertex
159
3f6a07d9 160 Int_t fType; // data type: p-p or Pb-Pb
161 Int_t fMode; // current operation mode
162
163 // single track cuts
164 Int_t fTPCNcls; // number of TPC clusters
165 Bool_t fTPCrefit; // TPC refit - yes [kTRUE] or do not care [kFALSE]
166 Float_t fTPCchi2perCls; // max. chi2 per TPC cluster
167 Float_t fTPCclsRatio; // min. TPC cluster ratio
168 Bool_t fNoKinks; // kinks - no [kTRUE] or do not care [kFalse]
169
bf892a6a 170 // gamma cut values
171 Float_t fGcutChi2NDF; // Chi2NF cut value for the AliKFparticle gamma
172 Float_t fGcutCosPoint[2]; // cos of the pointing angle [min, max]
173 Float_t fGcutDCA[2]; // DCA between the daughter tracks [min, max]
174 Float_t fGcutVertexR[2]; // radius of the conversion point [min, max]
175 Float_t fGcutPsiPair[2]; // value of the psi pair cut [min, max]
176 Float_t fGcutInvMass; // upper value on the gamma invariant mass
177 // K0 cut values
178 Float_t fK0cutChi2NDF; // Chi2NF cut value for the AliKFparticle K0
179 Float_t fK0cutCosPoint[2]; // cos of the pointing angle [min, max]
180 Float_t fK0cutDCA[2]; // DCA between the daughter tracks [min, max]
181 Float_t fK0cutVertexR[2]; // radius of the decay point [min, max]
182 Float_t fK0cutInvMass[2]; // invariant mass window
183 // Lambda & anti-Lambda cut values
184 Float_t fLcutChi2NDF; // Chi2NF cut value for the AliKFparticle K0
185 Float_t fLcutCosPoint[2]; // cos of the pointing angle [min, max]
186 Float_t fLcutDCA[2]; // DCA between the daughter tracks [min, max]
187 Float_t fLcutVertexR[2]; // radius of the decay point [min, max]
188 Float_t fLcutInvMass[2]; // invariant mass window
189
190
3a72645a 191 ClassDef(AliESDv0KineCuts, 0);
192
193};
194
195#endif