//
#include "AliVTrack.h"
+#include "AliPID.h"
+#include "AliPIDResponse.h"
#include "AliRsnCut.h"
#include "AliRsnCutTrackQuality.h"
public:
AliRsnCutDaughterD0(const char *name = "", AliPID::EParticleType pid = AliPID::kPion);
- AliRsnCutDaughterD0(const AliRsnCutDaughterD0 ©);
- AliRsnCutDaughterD0 &operator=(const AliRsnCutDaughterD0 ©);
virtual ~AliRsnCutDaughterD0() { }
void SetNoPID(Bool_t yn = kTRUE) {fNoPID = yn;}
-
+ //void SetIsCheckOnMother(Bool_t yn = kTRUE) {fIsCheckOnMother = yn;}
+ void SetPtDependentPIDCut(Bool_t yn = kTRUE) {fPtDepPIDCut = yn;}
void SetPID(AliPID::EParticleType type) {fPID = type;}
void SetTPCPionPIDCut(Double_t value) {fPionTPCPIDCut = value;}
AliRsnCutTrackQuality *CutQuality() {return &fCutQuality;}
Bool_t MatchTOF(const AliVTrack *vtrack);
+ Bool_t MatchTPC(const AliVTrack *vtrack);
virtual Bool_t IsSelected(TObject *obj);
private:
+ AliRsnCutDaughterD0(const AliRsnCutDaughterD0 ©); // Not implemented
+ AliRsnCutDaughterD0 &operator=(const AliRsnCutDaughterD0 ©); // Not implemented
Bool_t fNoPID; // flag to switch off PID check
+ //Bool_t fIsCheckOnMother; // flag to switch off tracks check
AliPID::EParticleType fPID; // PID for track
AliRsnCutTrackQuality fCutQuality; // track quality cut
Double_t fKaonTPCPIDCut; // TPC nsigmas for kaons
Double_t fPionTOFPIDCut; // TOF nsigmas for pions
Double_t fKaonTOFPIDCut; // TOF nsigmas for kaons
+ Bool_t fPtDepPIDCut; // flag for setting a pt dependent or independent PID cut
- ClassDef(AliRsnCutDaughterD0,1) // cut definitions for D0
+ ClassDef(AliRsnCutDaughterD0, 3) // cut definitions for D0
};
//__________________________________________________________________________________________________
AliWarning("NULL argument: impossible to check status");
return kFALSE;
}
+ AliPIDResponse *fPidResponse = fEvent->GetPIDResponse();
+ if (!fPidResponse) {
+ AliFatal("NULL PID response");
+ return kFALSE;
+ }
+
+ AliPIDResponse::EDetPidStatus status = fPidResponse->CheckPIDStatus(AliPIDResponse::kTOF,vtrack);
+ if (status != AliPIDResponse::kDetPidOk) return kFALSE;
+ Float_t probMis = fPidResponse->GetTOFMismatchProbability(vtrack);
+ if (probMis > 0.01) return kFALSE;
+ if ((vtrack->GetStatus()&AliESDtrack::kTOFpid )==0 && vtrack->GetStatus()&AliESDtrack::kITSrefit ) return kFALSE;
+ return kTRUE;
+
- if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE;
- if (!(vtrack->GetStatus() & AliESDtrack::kTIME )) return kFALSE;
+ //if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE;
+ //if (!(vtrack->GetStatus() & AliESDtrack::kTIME )) return kFALSE;
+
+ return kTRUE;
+}
+//___________________________________________________________________________________________________
+inline Bool_t AliRsnCutDaughterD0::MatchTPC(const AliVTrack *vtrack)
+{
+ // Check if the track is good for TPC PID
+
+
+ if (!vtrack) {
+ AliWarning("NULL argument: impossible to check status");
+ return kFALSE;
+ }
+ AliPIDResponse *fPidResponse = fEvent->GetPIDResponse();
+ if (!fPidResponse) {
+ AliFatal("NULL PID response");
+ return kFALSE;
+ }
+
+ AliPIDResponse::EDetPidStatus status = fPidResponse->CheckPIDStatus(AliPIDResponse::kTPC,vtrack);
+ if (status != AliPIDResponse::kDetPidOk) return kFALSE;
+ /* UInt_t nclsTPCPID = vtrack->GetTPCsignalN(); */
+ /* if(nclsTPCPID<0) return kFALSE; */
return kTRUE;
}