added slewing correction by data
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackletWord.cxx
index 2083d1f..57683d0 100644 (file)
 
 #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) :
@@ -53,9 +56,11 @@ AliTRDtrackletWord::AliTRDtrackletWord(const AliTRDtrackletWord &rhs) :
   fTrackletWord(rhs.fTrackletWord)
 {
 
+  if (!fgGeo)
+    fgGeo = new AliTRDgeometry;
 }
 
-AliTRDtrackletWord::~AliTRDtrackletWord() 
+AliTRDtrackletWord::~AliTRDtrackletWord()
 {
 
 }
@@ -70,7 +75,7 @@ Int_t AliTRDtrackletWord::GetYbin() const {
   }
 }
 
-Int_t AliTRDtrackletWord::GetdY() const 
+Int_t AliTRDtrackletWord::GetdY() const
 {
   // returns (signed) value of the deflection length
   if (fTrackletWord & (1 << 19)) {
@@ -80,3 +85,16 @@ Int_t AliTRDtrackletWord::GetdY() const
     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);
+}
+