AliHFEV0tag *tmp = NULL;
for(Int_t ien = 0; ien < ref.fTaggedTracks->GetEntries(); ien++){
tmp = static_cast<AliHFEV0tag *>(ref.fTaggedTracks->At(ien));
- fTaggedTracks->Add(new AliHFEV0tag(tmp->GetTrackID(),tmp->GetPinfo()));
+ fTaggedTracks->Add(new AliHFEV0tag(tmp->GetTrackID(),tmp->GetPinfo(),tmp->GetProdR()));
}
}
AliHFEV0tag *tmp = NULL;
for(Int_t ien = 0; ien < ref.fTaggedTracks->GetEntries(); ien++){
tmp = static_cast<AliHFEV0tag *>(ref.fTaggedTracks->At(ien));
- fTaggedTracks->Add(new AliHFEV0tag(tmp->GetTrackID(),tmp->GetPinfo()));
+ fTaggedTracks->Add(new AliHFEV0tag(tmp->GetTrackID(),tmp->GetPinfo(),tmp->GetProdR()));
}
fV0finder=ref.fV0finder;
fAODV0finder=ref.fAODV0finder;
//
delete fTaggedTracks;
delete fV0finder;
+ delete fAODV0finder;
AliDebug(6, "DESTRUCTOR");
}
if(!fV0) continue;
if(fV0finder->ProcessV0(fV0,pdgP,pdgN)){
AliDebug(5,Form("V0 has: pos pdg: %d, neg pdg: %d",pdgP,pdgN));
- AddTrack(fV0->GetPindex(),pdgP);
- AddTrack(fV0->GetNindex(),pdgN);
+ AddTrack(fV0->GetPindex(),pdgP,TMath::Sqrt(fV0->Xv()*fV0->Xv()+fV0->Yv()*fV0->Yv()));
+ AddTrack(fV0->GetNindex(),pdgN,TMath::Sqrt(fV0->Xv()*fV0->Xv()+fV0->Yv()*fV0->Yv()));
}
}
} else if(fEvent->IsA() == AliAODEvent::Class()){
if(!fV0) continue;
if(fAODV0finder->ProcessV0(fV0,pdgP,pdgN)){
AliDebug(5,Form("V0 has: pos pdg: %d, neg pdg: %d",pdgP,pdgN));
- AddTrack(fV0->GetPosID(),pdgP);
- AddTrack(fV0->GetNegID(),pdgN);
+ AddTrack(fV0->GetPosID(),pdgP,fV0->RadiusV0());
+ AddTrack(fV0->GetNegID(),pdgN,fV0->RadiusV0());
}
}
}
//________________________________________________________________________________
//Translates the pdg code to AliPID enum and adds track to tagged list
-void AliHFEV0taginfo::AddTrack(Int_t TrackID, Int_t pdgCode){
+void AliHFEV0taginfo::AddTrack(Int_t TrackID, Int_t pdgCode, Double_t prodR){
if(TrackID<0) return;
AliPID::EParticleType Pinfo;
default:
return;
}
- fTaggedTracks->Add(new AliHFEV0tag(TrackID, Pinfo));
+ fTaggedTracks->Add(new AliHFEV0tag(TrackID, Pinfo, prodR));
AliDebug(4,Form("Added new Track ID: %d with PID: %d, #entry: %d",TrackID, Pinfo, fTaggedTracks->GetEntries()));
}
//returns AliPID::kUnknown if track ID not found
AliPID::EParticleType AliHFEV0taginfo::GetV0Info(Int_t trackID){
- AliHFEV0tag test(trackID, AliPID::kUnknown);
+ AliHFEV0tag test(trackID, AliPID::kUnknown,0);
AliHFEV0tag *result = dynamic_cast<AliHFEV0tag *>(fTaggedTracks->FindObject(&test));
if(!result){
AliDebug(6, Form("Could not find track ID %d", trackID));
return result->GetPinfo();
}
+//________________________________________________________________________________
+//check for V0 daughter production vertex from track ID
+//returns -0.1 if track ID not found
+Float_t AliHFEV0taginfo::GetV0ProdR(Int_t trackID){
+
+ AliHFEV0tag test(trackID, AliPID::kUnknown, 0);
+ AliHFEV0tag *result = dynamic_cast<AliHFEV0tag *>(fTaggedTracks->FindObject(&test));
+ if(!result){
+ AliDebug(6, Form("Could not find track ID %d", trackID));
+ return -0.1;
+ }
+ return result->GetProdR();
+}
+
//________________________________________________________________________________
//resets the fTaggedTracks TList
void AliHFEV0taginfo::Reset(){
AliHFEV0taginfo::AliHFEV0tag::AliHFEV0tag():
TObject(),
fTrackID(0),
- fPinfo(AliPID::kUnknown)
+ fPinfo(AliPID::kUnknown),
+ fProdR(0)
{
// default constructor
}
//___________________________________________________________________
-AliHFEV0taginfo::AliHFEV0tag::AliHFEV0tag(Int_t TrackID, AliPID::EParticleType Pinfo):
+AliHFEV0taginfo::AliHFEV0tag::AliHFEV0tag(Int_t TrackID, AliPID::EParticleType Pinfo, Double_t ProdR):
TObject(),
fTrackID(TrackID),
- fPinfo(Pinfo)
+ fPinfo(Pinfo),
+ fProdR(ProdR)
{
}
AliHFEV0taginfo::AliHFEV0tag::AliHFEV0tag(const AliHFEV0tag &ref):
TObject(ref),
fTrackID(ref.fTrackID),
- fPinfo(ref.fPinfo)
+ fPinfo(ref.fPinfo),
+ fProdR(ref.fProdR)
{
// Copy constructor
}
fTrackID = ref.fTrackID;
fPinfo = ref.fPinfo;
+ fProdR = ref.fProdR;
}
return *this;
}
fTrackID = trackID;
fPinfo = Pinfo;
}
+
+//Set track ID and production verxtex
+//___________________________________________________________________
+void AliHFEV0taginfo::AliHFEV0tag::SetProdR(const Int_t trackID, const Double_t prodR){
+ fTrackID = trackID;
+ fProdR = prodR;
+}
+
//____________________________________________________________
Bool_t AliHFEV0taginfo::AliHFEV0tag::IsEqual(const TObject *ref) const {
//
// Order:
// First compare track ID then particle info
//
- const AliHFEV0tag *refObj = dynamic_cast<const AliHFEV0tag *>(ref);
+ const AliHFEV0tag *refObj = static_cast<const AliHFEV0tag *>(ref);
if(fTrackID < refObj->GetTrackID()) return -1;
else if(fTrackID > refObj->GetTrackID()) return 1;
else{