ROOT logo
#ifndef ALITRDTRACKLETWORD_H
#define ALITRDTRACKLETWORD_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliTRDtrackletWord.h 27496 2008-07-22 08:35:45Z cblume $ */

//-----------------------------------
//
// TRD tracklet word (as from FEE)
// only 32-bit of information + detector ID
//
//----------------------------------

#include "AliTRDtrackletBase.h"
#include "AliTRDgeometry.h"
#include "AliTRDpadPlane.h"

class AliTRDtrackletWord : public AliTRDtrackletBase {
 public:
  AliTRDtrackletWord(UInt_t trackletWord = 0);
  AliTRDtrackletWord(UInt_t trackletWord, Int_t hcid);
  AliTRDtrackletWord(const AliTRDtrackletWord &rhs);
  ~AliTRDtrackletWord();

  // ----- Getters for contents of tracklet word -----
  Int_t GetYbin() const;
  Int_t GetdY() const;
  Int_t GetZbin() const { return ((fTrackletWord >> 20) & 0xf); }
  Int_t GetPID() const { return ((fTrackletWord >> 24) & 0xff); }

  Int_t GetROB() const;
  Int_t GetMCM() const;

  // ----- Getters for offline corresponding values -----
  Bool_t CookPID() { return kFALSE; }
  Double_t GetPID(Int_t /* is */) const { return (Double_t) GetPID()/256.; }
  Int_t GetDetector() const { return fHCId / 2; }
  Int_t GetHCId() const { return fHCId; }
  Float_t GetdYdX() const { return (GetdY() * 140e-4 / 3.); }
  Float_t GetX() const { return fgGeo->GetTime0((fHCId%12)/2); }
  Float_t GetY() const { return (GetYbin() * 160e-4); }
  Float_t GetZ() const { return fgGeo->GetPadPlane((fHCId % 12) / 2, (fHCId/12) % 5)->GetRowPos(GetZbin()) -
      fgGeo->GetPadPlane((fHCId % 12) / 2, (fHCId/12) % 5)->GetRowSize(GetZbin())  * .5; }
  Float_t GetLocalZ() const { return GetZ() - fgGeo->GetPadPlane((fHCId % 12) / 2, (fHCId/12) % 5)->GetRowPos((((fHCId/12) % 5) != 2) ? 8 : 6); }

  UInt_t GetTrackletWord() const { return fTrackletWord; }
  void SetTrackletWord(UInt_t trackletWord) { fTrackletWord = trackletWord; }

  void SetDetector(Int_t id) { fHCId = 2 * id + (GetYbin() < 0 ? 0 : 1); }
  void SetHCId(Int_t id) { fHCId = id; }

 protected:
  Int_t fHCId;                  // half-chamber ID
  UInt_t fTrackletWord;		// tracklet word: PID | Z | deflection length | Y
				//          bits:   8   4            7          13
  static AliTRDgeometry *fgGeo;  // pointer to TRD geometry for coordinate calculations

 private:
  AliTRDtrackletWord& operator=(const AliTRDtrackletWord &rhs);   // not implemented

  ClassDef(AliTRDtrackletWord, 2);
};

#endif
 AliTRDtrackletWord.h:1
 AliTRDtrackletWord.h:2
 AliTRDtrackletWord.h:3
 AliTRDtrackletWord.h:4
 AliTRDtrackletWord.h:5
 AliTRDtrackletWord.h:6
 AliTRDtrackletWord.h:7
 AliTRDtrackletWord.h:8
 AliTRDtrackletWord.h:9
 AliTRDtrackletWord.h:10
 AliTRDtrackletWord.h:11
 AliTRDtrackletWord.h:12
 AliTRDtrackletWord.h:13
 AliTRDtrackletWord.h:14
 AliTRDtrackletWord.h:15
 AliTRDtrackletWord.h:16
 AliTRDtrackletWord.h:17
 AliTRDtrackletWord.h:18
 AliTRDtrackletWord.h:19
 AliTRDtrackletWord.h:20
 AliTRDtrackletWord.h:21
 AliTRDtrackletWord.h:22
 AliTRDtrackletWord.h:23
 AliTRDtrackletWord.h:24
 AliTRDtrackletWord.h:25
 AliTRDtrackletWord.h:26
 AliTRDtrackletWord.h:27
 AliTRDtrackletWord.h:28
 AliTRDtrackletWord.h:29
 AliTRDtrackletWord.h:30
 AliTRDtrackletWord.h:31
 AliTRDtrackletWord.h:32
 AliTRDtrackletWord.h:33
 AliTRDtrackletWord.h:34
 AliTRDtrackletWord.h:35
 AliTRDtrackletWord.h:36
 AliTRDtrackletWord.h:37
 AliTRDtrackletWord.h:38
 AliTRDtrackletWord.h:39
 AliTRDtrackletWord.h:40
 AliTRDtrackletWord.h:41
 AliTRDtrackletWord.h:42
 AliTRDtrackletWord.h:43
 AliTRDtrackletWord.h:44
 AliTRDtrackletWord.h:45
 AliTRDtrackletWord.h:46
 AliTRDtrackletWord.h:47
 AliTRDtrackletWord.h:48
 AliTRDtrackletWord.h:49
 AliTRDtrackletWord.h:50
 AliTRDtrackletWord.h:51
 AliTRDtrackletWord.h:52
 AliTRDtrackletWord.h:53
 AliTRDtrackletWord.h:54
 AliTRDtrackletWord.h:55
 AliTRDtrackletWord.h:56
 AliTRDtrackletWord.h:57
 AliTRDtrackletWord.h:58
 AliTRDtrackletWord.h:59
 AliTRDtrackletWord.h:60
 AliTRDtrackletWord.h:61
 AliTRDtrackletWord.h:62
 AliTRDtrackletWord.h:63
 AliTRDtrackletWord.h:64
 AliTRDtrackletWord.h:65