1 #ifndef ALIRSNCUTDAUGHTERD0_H
2 #define ALIRSNCUTDAUGHTERD0_H
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.
11 #include "AliVTrack.h"
13 #include "AliPIDResponse.h"
14 #include "AliRsnCut.h"
15 #include "AliRsnCutTrackQuality.h"
17 class AliRsnCutDaughterD0 : public AliRsnCut {
21 AliRsnCutDaughterD0(const char *name = "", AliPID::EParticleType pid = AliPID::kPion);
22 virtual ~AliRsnCutDaughterD0() { }
24 void SetNoPID(Bool_t yn = kTRUE) {fNoPID = yn;}
25 //void SetIsCheckOnMother(Bool_t yn = kTRUE) {fIsCheckOnMother = yn;}
26 void SetPtDependentPIDCut(Bool_t yn = kTRUE) {fPtDepPIDCut = yn;}
27 void SetPID(AliPID::EParticleType type) {fPID = type;}
29 void SetTPCPionPIDCut(Double_t value) {fPionTPCPIDCut = value;}
30 void SetTPCKaonPIDCut(Double_t value) {fKaonTPCPIDCut = value;}
32 void SetTOFPionPIDCut(Double_t value) {fPionTOFPIDCut = value;}
33 void SetTOFKaonPIDCut(Double_t value) {fKaonTOFPIDCut = value;}
35 AliRsnCutTrackQuality *CutQuality() {return &fCutQuality;}
36 Bool_t MatchTOF(const AliVTrack *vtrack);
37 Bool_t MatchTPC(const AliVTrack *vtrack);
38 virtual Bool_t IsSelected(TObject *obj);
41 AliRsnCutDaughterD0(const AliRsnCutDaughterD0 ©); // Not implemented
42 AliRsnCutDaughterD0 &operator=(const AliRsnCutDaughterD0 ©); // Not implemented
43 Bool_t fNoPID; // flag to switch off PID check
44 //Bool_t fIsCheckOnMother; // flag to switch off tracks check
45 AliPID::EParticleType fPID; // PID for track
46 AliRsnCutTrackQuality fCutQuality; // track quality cut
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
53 Bool_t fPtDepPIDCut; // flag for setting a pt dependent or independent PID cut
55 ClassDef(AliRsnCutDaughterD0, 3) // cut definitions for D0
58 //__________________________________________________________________________________________________
59 inline Bool_t AliRsnCutDaughterD0::MatchTOF(const AliVTrack *vtrack)
62 // Checks if the track has matched the TOF detector
66 AliWarning("NULL argument: impossible to check status");
69 AliPIDResponse *fPidResponse = fEvent->GetPIDResponse();
71 AliFatal("NULL PID response");
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;
83 //if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE;
84 //if (!(vtrack->GetStatus() & AliESDtrack::kTIME )) return kFALSE;
89 //___________________________________________________________________________________________________
90 inline Bool_t AliRsnCutDaughterD0::MatchTPC(const AliVTrack *vtrack)
92 // Check if the track is good for TPC PID
96 AliWarning("NULL argument: impossible to check status");
99 AliPIDResponse *fPidResponse = fEvent->GetPIDResponse();
101 AliFatal("NULL PID response");
105 AliPIDResponse::EDetPidStatus status = fPidResponse->CheckPIDStatus(AliPIDResponse::kTPC,vtrack);
106 if (status != AliPIDResponse::kDetPidOk) return kFALSE;
107 /* UInt_t nclsTPCPID = vtrack->GetTPCsignalN(); */
108 /* if(nclsTPCPID<0) return kFALSE; */