#include "AliTRDtrackletWord.h"
#include "AliTRDgeometry.h"
+#include "AliTRDpadPlane.h"
#include "AliLog.h"
ClassImp(AliTRDtrackletWord)
-AliTRDgeometry* AliTRDtrackletWord::fgGeo = new AliTRDgeometry;
+AliTRDgeometry* AliTRDtrackletWord::fgGeo = 0x0;
AliTRDtrackletWord::AliTRDtrackletWord(UInt_t trackletWord) :
AliTRDtrackletBase(),
fHCId(-1),
fTrackletWord(trackletWord)
-{
-
+{
+ if (!fgGeo)
+ fgGeo = new AliTRDgeometry;
}
AliTRDtrackletWord::AliTRDtrackletWord(UInt_t trackletWord, Int_t hcid) :
AliTRDtrackletBase(),
fHCId(hcid),
fTrackletWord(trackletWord)
-{
-
+{
+ if (!fgGeo)
+ fgGeo = new AliTRDgeometry;
}
AliTRDtrackletWord::AliTRDtrackletWord(const AliTRDtrackletWord &rhs) :
fTrackletWord(rhs.fTrackletWord)
{
+ if (!fgGeo)
+ fgGeo = new AliTRDgeometry;
}
-AliTRDtrackletWord::~AliTRDtrackletWord()
+AliTRDtrackletWord::~AliTRDtrackletWord()
{
}
}
}
-Int_t AliTRDtrackletWord::GetdY() const
+Int_t AliTRDtrackletWord::GetdY() const
{
// returns (signed) value of the deflection length
if (fTrackletWord & (1 << 19)) {
return ((fTrackletWord >> 13) & 0x7f);
}
}
+
+Int_t AliTRDtrackletWord::GetROB() const
+{
+ return 2 * (GetZbin() / 4) + (GetY() > 0 ? 1 : 0);
+}
+
+Int_t AliTRDtrackletWord::GetMCM() const
+{
+ AliTRDpadPlane *pp = fgGeo->GetPadPlane(GetDetector());
+ return (((Int_t) ((GetY()) / pp->GetWidthIPad()) + 72) / 18) % 4
+ + 4 * (GetZbin() % 4);
+}
+