]>
Commit | Line | Data |
---|---|---|
3e6c5c16 | 1 | #ifndef ALIRSNCUTDAUGHTERD0_H |
2 | #define ALIRSNCUTDAUGHTERD0_H | |
3 | ||
4 | // | |
5 | // Cuts for selecting good pion candidates for D0 analysis | |
6 | // with the data samples from pp/PbPb/pPb runs in 2010/2011/2012/2013. | |
7 | // Applies track quality selection plus PID selection, | |
8 | // with different tolerance ranges depending on the momentum. | |
9 | // | |
10 | ||
11 | #include "AliVTrack.h" | |
57b34356 | 12 | #include "AliPID.h" |
13 | #include "AliPIDResponse.h" | |
3e6c5c16 | 14 | #include "AliRsnCut.h" |
15 | #include "AliRsnCutTrackQuality.h" | |
16 | ||
17 | class AliRsnCutDaughterD0 : public AliRsnCut { | |
18 | ||
19 | public: | |
20 | ||
21 | AliRsnCutDaughterD0(const char *name = "", AliPID::EParticleType pid = AliPID::kPion); | |
3e6c5c16 | 22 | virtual ~AliRsnCutDaughterD0() { } |
23 | ||
24 | void SetNoPID(Bool_t yn = kTRUE) {fNoPID = yn;} | |
57b34356 | 25 | //void SetIsCheckOnMother(Bool_t yn = kTRUE) {fIsCheckOnMother = yn;} |
670857a6 | 26 | void SetPtDependentPIDCut(Bool_t yn = kTRUE) {fPtDepPIDCut = yn;} |
3e6c5c16 | 27 | void SetPID(AliPID::EParticleType type) {fPID = type;} |
28 | ||
29 | void SetTPCPionPIDCut(Double_t value) {fPionTPCPIDCut = value;} | |
30 | void SetTPCKaonPIDCut(Double_t value) {fKaonTPCPIDCut = value;} | |
31 | ||
32 | void SetTOFPionPIDCut(Double_t value) {fPionTOFPIDCut = value;} | |
33 | void SetTOFKaonPIDCut(Double_t value) {fKaonTOFPIDCut = value;} | |
34 | ||
35 | AliRsnCutTrackQuality *CutQuality() {return &fCutQuality;} | |
36 | Bool_t MatchTOF(const AliVTrack *vtrack); | |
57b34356 | 37 | Bool_t MatchTPC(const AliVTrack *vtrack); |
3e6c5c16 | 38 | virtual Bool_t IsSelected(TObject *obj); |
39 | ||
40 | private: | |
cbc51d28 | 41 | AliRsnCutDaughterD0(const AliRsnCutDaughterD0 ©); // Not implemented |
42 | AliRsnCutDaughterD0 &operator=(const AliRsnCutDaughterD0 ©); // Not implemented | |
3e6c5c16 | 43 | Bool_t fNoPID; // flag to switch off PID check |
57b34356 | 44 | //Bool_t fIsCheckOnMother; // flag to switch off tracks check |
3e6c5c16 | 45 | AliPID::EParticleType fPID; // PID for track |
46 | AliRsnCutTrackQuality fCutQuality; // track quality cut | |
47 | ||
48 | protected: | |
49 | Double_t fPionTPCPIDCut; // TPC nsigmas for pions | |
50 | Double_t fKaonTPCPIDCut; // TPC nsigmas for kaons | |
51 | Double_t fPionTOFPIDCut; // TOF nsigmas for pions | |
52 | Double_t fKaonTOFPIDCut; // TOF nsigmas for kaons | |
670857a6 | 53 | Bool_t fPtDepPIDCut; // flag for setting a pt dependent or independent PID cut |
3e6c5c16 | 54 | |
57b34356 | 55 | ClassDef(AliRsnCutDaughterD0, 3) // cut definitions for D0 |
3e6c5c16 | 56 | }; |
57 | ||
58 | //__________________________________________________________________________________________________ | |
59 | inline Bool_t AliRsnCutDaughterD0::MatchTOF(const AliVTrack *vtrack) | |
60 | { | |
61 | // | |
62 | // Checks if the track has matched the TOF detector | |
63 | // | |
64 | ||
65 | if (!vtrack) { | |
66 | AliWarning("NULL argument: impossible to check status"); | |
67 | return kFALSE; | |
68 | } | |
57b34356 | 69 | AliPIDResponse *fPidResponse = fEvent->GetPIDResponse(); |
70 | if (!fPidResponse) { | |
71 | AliFatal("NULL PID response"); | |
72 | return kFALSE; | |
73 | } | |
74 | ||
75 | AliPIDResponse::EDetPidStatus status = fPidResponse->CheckPIDStatus(AliPIDResponse::kTOF,vtrack); | |
76 | if (status != AliPIDResponse::kDetPidOk) return kFALSE; | |
77 | Float_t probMis = fPidResponse->GetTOFMismatchProbability(vtrack); | |
78 | if (probMis > 0.01) return kFALSE; | |
79 | if ((vtrack->GetStatus()&AliESDtrack::kTOFpid )==0 && vtrack->GetStatus()&AliESDtrack::kITSrefit ) return kFALSE; | |
80 | return kTRUE; | |
81 | ||
3e6c5c16 | 82 | |
57b34356 | 83 | //if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE; |
84 | //if (!(vtrack->GetStatus() & AliESDtrack::kTIME )) return kFALSE; | |
3e6c5c16 | 85 | |
86 | return kTRUE; | |
87 | } | |
88 | ||
57b34356 | 89 | //___________________________________________________________________________________________________ |
90 | inline Bool_t AliRsnCutDaughterD0::MatchTPC(const AliVTrack *vtrack) | |
91 | { | |
92 | // Check if the track is good for TPC PID | |
93 | ||
94 | ||
95 | if (!vtrack) { | |
96 | AliWarning("NULL argument: impossible to check status"); | |
97 | return kFALSE; | |
98 | } | |
99 | AliPIDResponse *fPidResponse = fEvent->GetPIDResponse(); | |
100 | if (!fPidResponse) { | |
101 | AliFatal("NULL PID response"); | |
102 | return kFALSE; | |
103 | } | |
104 | ||
105 | AliPIDResponse::EDetPidStatus status = fPidResponse->CheckPIDStatus(AliPIDResponse::kTPC,vtrack); | |
106 | if (status != AliPIDResponse::kDetPidOk) return kFALSE; | |
b5f44293 | 107 | /* UInt_t nclsTPCPID = vtrack->GetTPCsignalN(); */ |
108 | /* if(nclsTPCPID<0) return kFALSE; */ | |
57b34356 | 109 | return kTRUE; |
110 | } | |
111 | ||
3e6c5c16 | 112 | #endif |