if (heavy) track->ResetStatus(AliESDtrack::kTOFpid);
}
//_________________________________________________________________________
+void AliESDpid::MakeTRDPID(AliESDtrack *track) const
+{
+ //
+ // Method to recalculate the TRD PID probabilities
+ //
+ if((track->GetStatus()&AliESDtrack::kTRDout)==0) return;
+ Double_t prob[AliPID::kSPECIES]; Float_t mom[6];
+ Double_t dedx[48]; // Allocate space for the maximum number of TRD slices
+ for(Int_t ilayer = 0; ilayer < 6; ilayer++){
+ mom[ilayer] = track->GetTRDmomentum(ilayer);
+ for(Int_t islice = 0; islice < track->GetNumberOfTRDslices(); islice++){
+ dedx[ilayer*track->GetNumberOfTRDslices()+islice] = track->GetTRDslice(ilayer, islice);
+ }
+ }
+ fTRDResponse.GetResponse(track->GetNumberOfTRDslices(), dedx, mom, prob);
+ track->SetTRDpid(prob);
+}
+//_________________________________________________________________________
void AliESDpid::CombinePID(AliESDtrack *track) const
{
//
#include "AliTPCPIDResponse.h"
#include "AliITSPIDResponse.h"
#include "AliTOFPIDResponse.h"
+#include "AliTRDPIDResponse.h"
//#include "HMPID/AliHMPID.h"
//#include "TRD/AliTRDpidESD.h"
class AliESDpid {
public:
- AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse() {;}
+ AliESDpid(): fRange(5.), fITSPIDmethod(kITSTruncMean), fTPCResponse(), fITSResponse(), fTOFResponse(), fTRDResponse(){;}
virtual ~AliESDpid() {}
Int_t MakePID(AliESDEvent *event, Bool_t TPCOnly = kFALSE, Float_t TimeZeroTOF=0) const;
void MakeTPCPID(AliESDtrack *track) const;
void MakeITSPID(AliESDtrack *track) const;
void MakeTOFPID(AliESDtrack *track, Float_t TimeZeroTOF) const;
// void MakeHMPIDPID(AliESDtrack *track);
- // void MakeTRDPID(AliESDtrack *track);
+ void MakeTRDPID(AliESDtrack *track) const;
void CombinePID(AliESDtrack *track) const;
enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
AliITSPIDResponse &GetITSResponse() {return fITSResponse;}
AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
+ AliTRDPIDResponse &GetTRDResponse() {return fTRDResponse;}
private:
AliITSPIDResponse fITSResponse;
AliTOFPIDResponse fTOFResponse;
// AliHMPIDPIDResponse fHMPIDResponse;
- // AliTRDPIDResponse fTRDResponse;
+ AliTRDPIDResponse fTRDResponse;
- ClassDef(AliESDpid,3) // PID calculation class
+ ClassDef(AliESDpid,4) // PID calculation class
};
inline Float_t AliESDpid::NumberOfSigmasTPC(const AliESDtrack *track, AliPID::EParticleType type) const {
}
//____________________________________________________________
-Bool_t AliTRDPIDResponse::GetResponse(Int_t n, Double_t *dedx, Float_t *p, Double_t prob[AliPID::kSPECIES], Bool_t kNorm)
+Bool_t AliTRDPIDResponse::GetResponse(Int_t n, Double_t *dedx, Float_t *p, Double_t prob[AliPID::kSPECIES], Bool_t kNorm) const
{
//
// Calculate TRD likelihood values for the track based on dedx and
//____________________________________________________________
-Double_t AliTRDPIDResponse::GetProbabilitySingleLayer(Int_t species, Double_t plocal, Double_t dEdx){
+Double_t AliTRDPIDResponse::GetProbabilitySingleLayer(Int_t species, Double_t plocal, Double_t dEdx) const {
//
// Get the non-normalized probability for a certain particle species as coming
// from the reference histogram
}
//____________________________________________________________
-Int_t AliTRDPIDResponse::GetLowerMomentumBin(Double_t p){
+Int_t AliTRDPIDResponse::GetLowerMomentumBin(Double_t p) const {
//
// Get the momentum bin for a given momentum value
//
}
//____________________________________________________________
-Bool_t AliTRDPIDResponse::CookdEdx(Double_t *in, Double_t *out)
+Bool_t AliTRDPIDResponse::CookdEdx(Double_t *in, Double_t *out) const
{
switch(fPIDmethod){
case 0: // NN
~AliTRDPIDResponse();
Int_t GetPIDmethod() const { return fPIDmethod;}
- Bool_t GetResponse(Int_t n, Double_t *dedx, Float_t *p, Double_t prob[AliPID::kSPECIES], Bool_t kNorm=kTRUE);
+ Bool_t GetResponse(Int_t n, Double_t *dedx, Float_t *p, Double_t prob[AliPID::kSPECIES], Bool_t kNorm=kTRUE) const;
Bool_t IsOwner() const {return TestBit(kIsOwner);}
private:
- Bool_t CookdEdx(Double_t *in, Double_t *out);
- Int_t GetLowerMomentumBin(Double_t p);
- Double_t GetProbabilitySingleLayer(Int_t species, Double_t dEdx, Double_t p);
+ Bool_t CookdEdx(Double_t *in, Double_t *out) const;
+ Int_t GetLowerMomentumBin(Double_t p) const;
+ Double_t GetProbabilitySingleLayer(Int_t species, Double_t dEdx, Double_t p) const;
Bool_t Load(const Char_t *filename = NULL);
static const Double_t fgkPBins[kNPBins];