#include "AliESDtrack.h"
#include "AliTPCseed.h"
#include "AliITStrackMI.h"
-#include "AliTRDtrack.h"
+#include "AliTRDtrackV1.h"
#include "AliMCInfo.h"
#include "AliESDRecInfo.h"
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());
}
if (fTPCtrack) { delete fTPCtrack; fTPCtrack=0;}
if (fITStrack) { delete fITStrack; fITStrack=0;}
if (fTRDtrack) { delete fTRDtrack; fTRDtrack=0;}
-
+ if (fTracks) { delete fTracks; fTracks=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();
- if (0 &&track->GetFriendTrack()){
+ if (track->GetFriendTrack()){
if (fTrackF) delete fTrackF;
fTrackF = (AliESDfriendTrack*)track->GetFriendTrack()->Clone();
- if (fTrackF->GetCalibObject(0)){
- if (fTPCtrack) delete fTPCtrack;
- fTPCtrack = (AliTPCseed*)fTrackF->GetCalibObject(0)->Clone();
+ 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();
+ } else if (dynamic_cast<AliTRDtrackV1*>(cobject)){
+ if (fTRDtrack) delete fTRDtrack;
+ fTRDtrack = (AliTRDtrackV1*)(dynamic_cast<AliTRDtrackV1*>(cobject))->Clone();
+ }
+ icalib++;
}
}
}
+
+
+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)
{
//