fTrackF(0), // friend track
fTPCtrack(0), // tpc track
fITStrack(0), // its track
- fTRDtrack(0) // trd track
+ fTRDtrack(0), // trd track
+ fTracks(0) // array of tracks with the same label
{
//
// default constructor
fTrackF(0), // friend track
fTPCtrack(0), // tpc track
fITStrack(0), // its track
- fTRDtrack(0) // trd track
+ fTRDtrack(0), // trd track
+ fTracks(0) // array of tracks with the same label
{
//
//
//
memcpy(this,&recinfo, sizeof(recinfo));
fESDtrack=0; fTrackF=0; fTPCtrack=0;fITStrack=0;fTRDtrack=0;
+ fTracks=0;
SetESDtrack(recinfo.GetESDtrack());
}
// destructor
//
if (fESDtrack) { delete fESDtrack; fESDtrack=0;}
- if (fTrackF) { delete fTrackF; fTrackF=0;}
+ if (fTrackF) { fTrackF=0;}
if (fTPCtrack) { delete fTPCtrack; fTPCtrack=0;}
if (fITStrack) { delete fITStrack; fITStrack=0;}
if (fTRDtrack) { delete fTRDtrack; fTRDtrack=0;}
-
+ if (fTracks) {
+ delete fTracks; fTracks=0;
+ }
}
fFake =0;
fReconstructed=0;
if (fESDtrack) { delete fESDtrack; fESDtrack=0;}
- if (fTrackF) { delete fTrackF; fTrackF=0;}
+ if (fTrackF) { fTrackF=0;}
if (fTPCtrack) { delete fTPCtrack; fTPCtrack=0;}
if (fITStrack) { delete fITStrack; fITStrack=0;}
if (fTRDtrack) { delete fTRDtrack; fTRDtrack=0;}
+ if (fTracks) { delete fTracks; fTracks=0;}
}
void AliESDRecInfo::SetESDtrack(const AliESDtrack *track){
//
//
//
+
if (fESDtrack) delete fESDtrack;
fESDtrack = (AliESDtrack*)track->Clone();
+ //AliESDfriendTrack *friendTrack=fESDfriend->GetTrack(fESDtrack->GetID());
+
+
if (track->GetFriendTrack()){
- if (fTrackF) delete fTrackF;
- fTrackF = (AliESDfriendTrack*)track->GetFriendTrack()->Clone();
+ fTrackF = (AliESDfriendTrack*)track->GetFriendTrack();
Int_t icalib=0;
TObject *cobject=0;
//
while (fTrackF->GetCalibObject(icalib)){
cobject=fTrackF->GetCalibObject(icalib);
if (dynamic_cast<AliTPCseed*>(cobject)){
- if (fTPCtrack) delete fTPCtrack;
- fTPCtrack = (AliTPCseed*)(dynamic_cast<AliTPCseed*>(cobject))->Clone();
+ if (fTPCtrack) delete fTPCtrack;
+ fTPCtrack = (AliTPCseed*)(dynamic_cast<AliTPCseed*>(cobject))->Clone();
} else if (dynamic_cast<AliTRDtrackV1*>(cobject)){
- if (fTRDtrack) delete fTRDtrack;
- fTRDtrack = (AliTRDtrackV1*)(dynamic_cast<AliTRDtrackV1*>(cobject))->Clone();
+ if (fTRDtrack) delete fTRDtrack;
+ fTRDtrack = (AliTRDtrackV1*)(dynamic_cast<AliTRDtrackV1*>(cobject))->Clone();
}
icalib++;
}
}
+ if (!fTPCtrack) fTPCtrack = new AliTPCseed; // add dummy track
+}
+
+
+
+void AliESDRecInfo::AddESDtrack(const AliESDtrack *track, AliMCInfo* info){
+ //
+ // Add ESDtrack
+ //
+ AliESDtrack *nctrack = (AliESDtrack*) track;
+ fMultiple++;
+ if (!fESDtrack) {
+ SetESDtrack(track);
+ Update(info,0,kTRUE);
+ return;
+ }
+ if (!fTracks) fTracks = new TClonesArray("AliESDtrack",10);
+ Int_t ntracks = fTracks->GetEntriesFast();
+ new ((*fTracks)[ntracks]) AliESDtrack(*track);
+ if (nctrack->GetKinkIndex(0)>0) return;
+ //
+ //
+ //
+ if (!nctrack->IsOn(AliESDtrack::kTPCrefit) && fStatus[1]==2) return;
+ if (!nctrack->IsOn(AliESDtrack::kITSin) && fStatus[0]>0) return;
+ if ( nctrack->GetParameter()[4]*info->GetCharge()<0) return; //returning track
+ Float_t dtheta = TMath::ATan(nctrack->GetTgl())-info->GetParticle().Theta()-TMath::Pi()-2;
+ if (TMath::Abs(dtheta)>0.1) return;
+
+ SetESDtrack(track);
+ Update(info,0,kTRUE);
}
+
+
void AliESDRecInfo::UpdatePoints(AliESDtrack*track)
{
//