]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnCutKaonForPhi2010PP.cxx
Added another version of cut for pp (small differences in PID)
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutKaonForPhi2010PP.cxx
1 //
2 // All cuts for single kaons in phi analysis 2010
3 //
4
5 #include <Riostream.h>
6
7 #include "AliPID.h"
8 #include "AliPIDResponse.h"
9 #include "AliRsnCutKaonForPhi2010PP.h"
10
11 ClassImp(AliRsnCutKaonForPhi2010PP)
12
13 //__________________________________________________________________________________________________
14 AliRsnCutKaonForPhi2010PP::AliRsnCutKaonForPhi2010PP(const char *name) :
15    AliRsnCut(name, AliRsnTarget::kDaughter, -3.0, 3.0),
16    fNSigmaTPCLow(5.0),
17    fNSigmaTPCHigh(3.0),
18    fLimitTPC(0.350),
19    fNSigmaTOF(3.0),
20    fCutQuality(Form("%sQuality", name))
21 {
22 //
23 // Constructor
24 // Initialize the contained cuts and sets defaults
25 //
26
27    // track quality
28    //fCutQuality.AddStatusFlag(AliESDtrack::kTPCin   , kTRUE);
29    //fCutQuality.AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
30    //fCutQuality.AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
31    fCutQuality.SetPtRange(0.15, 1E+20);
32    fCutQuality.SetEtaRange(-0.8, 0.8);
33    fCutQuality.SetDCARPtFormula("0.0182+0.0350/pt^1.01");
34    fCutQuality.SetDCAZmax(2.0);
35    fCutQuality.SetSPDminNClusters(1);
36    fCutQuality.SetITSminNClusters(0);
37    fCutQuality.SetITSmaxChi2(1E+20);
38    fCutQuality.SetTPCminNClusters(70);
39    fCutQuality.SetTPCmaxChi2(4.0);
40    fCutQuality.SetRejectKinkDaughters();
41    fCutQuality.SetAODTestFilterBit(5);
42 }
43
44 //__________________________________________________________________________________________________
45 Bool_t AliRsnCutKaonForPhi2010PP::IsSelected(TObject *obj)
46 {
47 //
48 // Global check
49 //
50
51    // coherence check
52    if (!TargetOK(obj)) return kFALSE;
53    
54    // check track
55    AliVTrack *track = fDaughter->Ref2Vtrack();
56    if (!track) {
57       if (!fDaughter->GetRef()) AliWarning("NULL ref");
58       return kFALSE;
59    }
60    
61    // check flags
62    if ((track->GetStatus() & AliESDtrack::kTPCin   ) == 0) return kFALSE;
63    if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) return kFALSE;
64    if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) return kFALSE;
65    
66    // quality
67    if (!fCutQuality.IsSelected(obj)) return kFALSE;
68    
69    // check initialization of PID object
70    AliPIDResponse *pid = fEvent->GetPIDResponse();
71    if (!pid) {
72       AliFatal("NULL PID response");
73       return kFALSE;
74    }
75    
76    // PID TPC :
77    // depends on momentum
78    if (track->GetTPCmomentum() < fLimitTPC) 
79       SetRangeD(0.0, fNSigmaTPCLow);
80    else
81       SetRangeD(0.0, fNSigmaTPCHigh);
82    fCutValueD = TMath::Abs(pid->NumberOfSigmasTPC(track, AliPID::kKaon));
83    if (!OkRangeD()) return kFALSE;
84    
85    // if TOF is not matched, end here
86    // otherwise check TOF
87    if (!MatchTOF(track)) 
88       return kTRUE;
89    else {
90       SetRangeD(0.0, fNSigmaTOF);
91       fCutValueD = TMath::Abs(pid->NumberOfSigmasTOF(track, AliPID::kKaon));
92       return OkRangeD();
93    }
94 }