ClassImp(AliTRDtrackletGTU)
-AliTRDtrackletBase* AliTRDtrackletGTU::fgkDummyTracklet = new AliTRDtrackletWord(0);
+AliTRDtrackletBase* AliTRDtrackletGTU::fgkDummyTracklet = 0x0;
AliTRDtrackletGTU::AliTRDtrackletGTU() :
AliTRDtrackletBase(),
fGtuParam(AliTRDgtuParam::Instance()),
- fTracklet(0x0), //fgkDummyTracklet),
- fSubChannel(0x0),
+ fTracklet(0x0),
+ fTrackletESD(0x0),
+ fMCMtrackletIndex(-1),
fAssignedZ(kFALSE),
fAlpha(0),
fYProj(0),
{
// ctor for any tracklet deriving from AliTRDtrackletBase
- fSubChannel = new Int_t[fGtuParam->GetNZChannels()];
+ if (!fgkDummyTracklet)
+ fgkDummyTracklet = new AliTRDtrackletWord(0);
+ fTracklet = fgkDummyTracklet;
+
for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++)
fSubChannel[zch] = 0;
}
AliTRDtrackletBase(*tracklet),
fGtuParam(AliTRDgtuParam::Instance()),
fTracklet(0x0),
- fSubChannel(0x0),
+ fTrackletESD(0x0),
+ fMCMtrackletIndex(-1),
fAssignedZ(kFALSE),
fAlpha(0),
fYProj(0),
{
// ctor for any tracklet deriving from AliTRDtrackletBase
- fSubChannel = new Int_t[fGtuParam->GetNZChannels()];
+ if (!fgkDummyTracklet) fgkDummyTracklet = new AliTRDtrackletWord(0);
+ fTracklet = fgkDummyTracklet;
+
for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++)
fSubChannel[zch] = 0;
fTracklet = tracklet;
}
}
+AliTRDtrackletGTU::AliTRDtrackletGTU(AliESDTrdTracklet *tracklet) :
+ AliTRDtrackletBase(),
+ fGtuParam(AliTRDgtuParam::Instance()),
+ fTracklet(0x0),
+ fTrackletESD(tracklet),
+ fMCMtrackletIndex(-1), // has to be set via SetMCMtrackletIndex() separately
+ fAssignedZ(kFALSE),
+ fAlpha(0),
+ fYProj(0),
+ fYPrime(0),
+ fIndex(0)
+{
+ // ctor for an AliESDTrdTracklet
+
+ if (!fgkDummyTracklet) fgkDummyTracklet = new AliTRDtrackletWord(0);
+ fTracklet = fgkDummyTracklet;
+
+ for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++)
+ fSubChannel[zch] = 0;
+}
+
AliTRDtrackletGTU::AliTRDtrackletGTU(const AliTRDtrackletGTU& tracklet) :
AliTRDtrackletBase(tracklet),
fGtuParam(AliTRDgtuParam::Instance()),
fTracklet(tracklet.fTracklet),
- fSubChannel(0x0),
+ fTrackletESD(tracklet.fTrackletESD),
+ fMCMtrackletIndex(tracklet.fMCMtrackletIndex),
fAssignedZ(tracklet.fAssignedZ),
fAlpha(tracklet.fAlpha),
fYProj(tracklet.fYProj),
{
// copy ctor
- fSubChannel = new Int_t[fGtuParam->GetNZChannels()];
for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++)
fSubChannel[zch] = tracklet.fSubChannel[zch];
}
if (&rhs != this) {
fTracklet = rhs.fTracklet;
+ fTrackletESD = rhs.fTrackletESD;
+ fMCMtrackletIndex = rhs.fMCMtrackletIndex;
for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++)
fSubChannel[zch] = rhs.fSubChannel[zch];
fIndex = rhs.fIndex;
AliTRDtrackletGTU::~AliTRDtrackletGTU()
{
// dtor
- if (fSubChannel)
- delete [] fSubChannel;
- fTracklet = 0x0;
-}
-
-Int_t AliTRDtrackletGTU::Compare(const TObject *o) const {
- // sorting w. r. t. Z, Y if no z-channel assigned (as needed in input unit)
- // otherwise w. r. t. Z, Y_proj
- // must be changed to Z-channel, Y_proj
- // will be changed
-
- if (!o)
- return 0;
-
- if (!o->InheritsFrom("AliTRDtrackletGTU")) {
- AliError("Cannot compare to object not deriving from AliTRDtrackletGTU");
- return 0;
- }
-
- if (!fAssignedZ) {
- if ( GetZbin() < ((AliTRDtrackletGTU*) o)->GetZbin())
- return -1;
- else if (GetZbin() > ((AliTRDtrackletGTU*) o)->GetZbin())
- return 1;
- else
- if (GetYbin() < ((AliTRDtrackletGTU*) o)->GetYbin())
- return -1;
- else if (GetYbin() > ((AliTRDtrackletGTU*) o)->GetYbin())
- return 1;
- else
- return 0;
- }
- else {
- // sorting should be according to zsubindex, not to Z !!!
- // therefore this depends on the zch
- if (GetZbin() < ((AliTRDtrackletGTU*) o)->GetZbin())
- return -1;
- else if (GetZbin() > ((AliTRDtrackletGTU*) o)->GetZbin())
- return 1;
- else
- if (GetYProj() < ((AliTRDtrackletGTU*) o)->GetYProj())
- return -1;
- else if (GetYProj() > ((AliTRDtrackletGTU*) o)->GetYProj())
- return 1;
- else
- return 0;
- }
}
void AliTRDtrackletGTU::SetSubChannel(Int_t zch, Int_t subch)
{
// get the MC label for the tracklet, -1 if none
- if ( fTracklet->IsA() == TClass::GetClass("AliTRDtrackletMCM"))
- return ((AliTRDtrackletMCM*) fTracklet)->GetLabel();
- else
- return -1;
+ if (fTrackletESD)
+ return fTrackletESD->GetLabel();
+ else if ( fTracklet->IsA() == TClass::GetClass("AliTRDtrackletMCM"))
+ return ((AliTRDtrackletMCM*) fTracklet)->GetLabel();
+ else
+ return -1;
}
/*