if(mcEvent){
Bool_t kGood = kTRUE;
AliMCParticle *MCpart = (AliMCParticle *) mcEvent->GetTrack(TMath::Abs(t->GetLabel()));
- TParticle *part = MCpart->Particle();
-
- Int_t iS = TMath::Abs(part->GetPdgCode());
-
- if(iS==AliPID::ParticleCode(AliPID::kElectron)){
+ if (MCpart != NULL) { // protect against label-0 track (initial proton in Pythia events)
+ TParticle *part = MCpart->Particle();
+ Int_t iS = TMath::Abs(part->GetPdgCode());
+
+ if(iS==AliPID::ParticleCode(AliPID::kElectron)){
type = AliPID::kElectron;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kMuon)){
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kMuon)){
type = AliPID::kMuon;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kPion)){
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kPion)){
type = AliPID::kPion;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kKaon)){
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kKaon)){
type = AliPID::kKaon;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kProton)){
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kProton)){
type = AliPID::kProton;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kDeuteron)){ // d
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kDeuteron)){ // d
type = AliPID::kDeuteron;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kTriton)){ // t
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kTriton)){ // t
type = AliPID::kTriton;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kHe3)){ // 3He
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kHe3)){ // 3He
type = AliPID::kHe3;
- }
- else if(iS==AliPID::ParticleCode(AliPID::kAlpha)){ // 4He
+ }
+ else if(iS==AliPID::ParticleCode(AliPID::kAlpha)){ // 4He
type = AliPID::kAlpha;
- }
- else
+ }
+ else
kGood = kFALSE;
-
+ } else kGood = kFALSE;
+
if(kGood){
//TODO maybe introduce different dEdxSources?
Double_t bethe = fTPCResponse.GetExpectedSignal(track, type, AliTPCPIDResponse::kdEdxDefault, this->UseTPCEtaCorrection(),