LCOV - code coverage report
Current view: top level - HLT/TRD - AliTRDonlineTrackingDataContainer.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 16 6.2 %
Date: 2016-06-14 17:26:59 Functions: 1 20 5.0 %

          Line data    Source code
       1             : #ifndef ALITRDONLINETRACKINGDATACONTAINER_H
       2             : #define ALITRDONLINETRACKINGDATACONTAINER_H
       3             : 
       4             : #include "AliESDTrdTracklet.h"
       5             : #include "AliESDTrdTrack.h"
       6             : #include "AliHLTLogging.h"
       7             : 
       8             : class AliTRDonlineTrackingDataContainer : public AliHLTLogging {
       9             :  public:
      10             :   AliTRDonlineTrackingDataContainer();
      11             :   AliTRDonlineTrackingDataContainer(const AliTRDonlineTrackingDataContainer& cont);
      12             :   ~AliTRDonlineTrackingDataContainer();
      13             : 
      14           0 :   void SetLogPrefix(const char* prefix) { *fLogPrefix = prefix; };
      15           0 :   void SetGtuPtMultiplier(Double_t mult) { fGtuPtMultiplier = mult; }
      16             :   void SetGtuPtMultiplierFromMagField(Double_t magField);
      17             : 
      18             :   void Clear(const Option_t* = "");
      19             :   Int_t AddTracklet(UInt_t HCId, UInt_t trackletWord);
      20             :   Int_t AddTracklet(const AliESDTrdTracklet* tracklet);
      21             :   Int_t AddTrack(UShort_t stack, ULong64_t trackWord, ULong64_t extTrackWord, const UInt_t trackletWords[6], Int_t addInfo = -1);
      22             :   Int_t AddTrack(const AliESDTrdTrack* track, Int_t addInfo = -1);
      23             : 
      24             :   void SetTrackAddInfo(UShort_t stack, UInt_t trackIndex, Int_t addInfo);
      25           0 :   void SetSectorTrgWord(UShort_t sector, UInt_t trgWord) { fSectorTrgWords[sector] = trgWord; };
      26           0 :   void SetStackTrgWord(UShort_t sector, UShort_t stack, ULong64_t trgWord) { fStackTrgWords[sector][stack] = trgWord; };
      27             : 
      28             :   Int_t GetNumTracklets();
      29             :   Int_t GetNumTracklets(UInt_t det);
      30             :   Int_t GetNumTracks();
      31             :   Int_t GetNumTracks(UShort_t stack);
      32             : 
      33           0 :   Int_t GetTrackletHCId(UInt_t det, UInt_t trackletIndex) { return fTrackletHCId[det][trackletIndex]; };
      34             :   Int_t GetTrackletBinY(UInt_t det, UInt_t trackletIndex);
      35             :   Int_t GetTrackletBinDy(UInt_t det, UInt_t trackletIndex);
      36             :   Int_t GetTrackletBinZ(UInt_t det, UInt_t trackletIndex);
      37             :   Int_t GetTrackletPID(UInt_t det, UInt_t trackletIndex);
      38             :   Float_t GetTrackletLocalY(UInt_t det, UInt_t trackletIndex);
      39             : 
      40             :   AliESDTrdTracklet* GetTracklet(UInt_t det, UInt_t trackletIndex);
      41             :   AliESDTrdTrack* GetTrack(UInt_t stack, UInt_t trackIndex, Bool_t constructTracklets = kTRUE);
      42             :   Int_t GetTrackAddInfo(UShort_t stack, UInt_t trackIndex);
      43             : 
      44             :   inline Int_t GetTrackLayerMask(UInt_t stack, UInt_t trackIndex){
      45           0 :     return (fTrackWords[stack][trackIndex] >> 56) & 0x3f;
      46             :   }
      47             : 
      48             :   inline Int_t GetTrackA(UInt_t stack, UInt_t trackIndex){
      49           0 :     return (((fTrackWords[stack][trackIndex] >> 38) & 0x3ffff) ^ 0x20000) - 0x20000;
      50             :   }
      51             : 
      52             :   inline Int_t GetTrackPID(UInt_t stack, UInt_t trackIndex){
      53           0 :     return fTrackWords[stack][trackIndex] & 0xff;
      54             :   }
      55             : 
      56             :   Double_t GetTrackPt(UInt_t stack, UInt_t trackIndex);
      57             :   UShort_t GetTrackLayerNum(UInt_t stack, UInt_t trackIndex);
      58             :   UInt_t GetTrackTrackletWord(UInt_t stack, UInt_t trackIndex, UShort_t layer);
      59             :   Int_t GetTrackTrackletBinY(UInt_t stack, UInt_t trackIndex, UShort_t layer);
      60             :   Float_t GetTrackTrackletLocalY(UInt_t stack, UInt_t trackIndex, UShort_t layer);
      61             :   Int_t GetTrackTrackletBinZ(UInt_t stack, UInt_t trackIndex, UShort_t layer);
      62             :   UShort_t GetTrackTrackletPID(UInt_t stack, UInt_t trackIndex, UShort_t layer);
      63             : 
      64           0 :   UInt_t GetSectorTrgWord(UShort_t sector) { return fSectorTrgWords[sector]; };
      65           0 :   ULong64_t GetStackTrgWord(UShort_t sector, UShort_t stack) { return fStackTrgWords[sector][stack]; };
      66           0 :   UInt_t GetSectorTrgContribs(UShort_t sector) { return fSectorTrgWords[sector] & 0x3ff; };
      67           0 :   Float_t GetTrackletStartTime(UShort_t sector, UShort_t stack) { return ((fStackTrgWords[sector][stack] >> 20) & 0x3ff)*1./125.; };
      68           0 :   Float_t GetTrackletEndTime(UShort_t sector, UShort_t stack) { return ((fStackTrgWords[sector][stack] >> 10) & 0x3ff)*1./125.; };
      69           0 :   Float_t GetTMUTrackingDoneTime(UShort_t sector, UShort_t stack) { return ((fStackTrgWords[sector][stack] >> 0) & 0x3ff)*1./50.; };
      70           0 :   Float_t GetSMUTrackingDoneTime(UShort_t sector) { return ((fSectorTrgWords[sector] >> 12) & 0x3ff)*1./120.; };
      71             : 
      72             :   Bool_t Compress(void* &buffer, UInt_t &sizeInBytes);
      73             :   Bool_t Decompress(const void* buffer, UInt_t sizeInBytes, Bool_t cumulative = kFALSE, Bool_t verbose = kFALSE);
      74             : 
      75             :   void PrintBuffer(const void* buffer, UInt_t sizeInBytes, const char* identifier);
      76             :   void PrintSummary(const char* identifier = "none");
      77             : 
      78             :  protected:
      79             : 
      80             :   AliTRDonlineTrackingDataContainer& operator=(const AliTRDonlineTrackingDataContainer &rhs); // not implemented
      81             : 
      82             :   static const unsigned int fgkLeadingMagicConst = 0x1234face;    //! header magic constant
      83             :   static const unsigned int fgkHeaderTypeData = 0xe;              //! header type constant
      84             :   static const unsigned int fgkHeaderTypeStack = 0xa;             //! header type constant
      85             :   static const unsigned int fgkHeaderTypeTracklet = 0xb;          //! header type constant
      86             :   static const unsigned int fgkHeaderTypeTrack = 0xc;             //! header type constant
      87             :   static const unsigned int fgkHeaderTypeGtu = 0xd;               //! header type constant
      88             :   static const unsigned int fgkCrosscheckSeed = 0xc5f3a19b;       //! crosscheck seed constant
      89             :   static const unsigned int fgkInvalidTrackletWord = 0x10001000;  //! marking invalid tracklet word
      90             :   static const unsigned int fgkTrailingMagicConst = 0x5678beaf;   //! trailer magic constant
      91             : 
      92             :   static const unsigned int fgkNumLayers = 6;                     //! number of TRD layers
      93             :   static const unsigned int fgkNumStacks = 90;                    //! number of TRD stacks
      94             :   static const unsigned int fgkNumChambers = 540;                 //! number of TRD chambers
      95             :   static const unsigned int fgkNumStacksPerSector = 5;            //! number of TRD stacks per sector
      96             :   static const unsigned int fgkNumSectors = 18;                   //! number of TRD sectors
      97             :   static const unsigned int fgkMaxTrackletsPerChamber = 1024;     //! maximum number of tracklets per chamber
      98             :   static const unsigned int fgkMaxTracksPerStack = 32;            //! maximum number of tracks per stack
      99             :   static const Float_t fgkBinWidthY;                              //! geometric TRD constant
     100             : 
     101             :   Double_t fGtuPtMultiplier;                                         //! factor for sign correction
     102             :   Bool_t fStoreGtuInfo;                                              //! controls storage of GTU header info upon compress
     103             :   TString* fLogPrefix;                                               //! log message prefix
     104             : 
     105             :   UInt_t fNumTracklets[fgkNumChambers];                              //! number of tracklets by chamber
     106             :   UInt_t fTrackletWords[fgkNumChambers][fgkMaxTrackletsPerChamber];  //! tracklet words by chamber
     107             :   UInt_t fTrackletHCId[fgkNumChambers][fgkMaxTrackletsPerChamber];   //! half-chambeer to tracklets
     108             : 
     109             :   UInt_t fNumTracks[fgkNumStacks];                                               //! number of tracks by stack
     110             :   ULong64_t fTrackWords[fgkNumStacks][fgkMaxTracksPerStack];                     //! track words by stack
     111             :   ULong64_t fTrackExtWords[fgkNumStacks][fgkMaxTracksPerStack];                  //! extended track words by stack
     112             :   UInt_t fTrackTrackletWords[fgkNumStacks][fgkMaxTracksPerStack][fgkNumLayers];  //! tracklet words by track and stack
     113             :   Int_t fTrackAddInfo[fgkNumStacks][fgkMaxTracksPerStack];                       //! additional info to tracks by stack
     114             : 
     115             :   UInt_t fSectorTrgWords[fgkNumSectors];                                         //! sector trigger words
     116             :   ULong64_t fStackTrgWords[fgkNumSectors][fgkNumStacksPerSector];                //! stack trigger words (=TMU tracking done words)
     117             : 
     118             :   UInt_t DataWordsNeeded();
     119             :   UInt_t MakeDataHeader();
     120             :   UInt_t MakeStackHeader(UShort_t stack, Bool_t trackletsPresent,
     121             :                          Bool_t tracksPresent, UInt_t size);
     122             :   UInt_t MakeTrackletHeader(UShort_t det);
     123             :   UInt_t MakeTrackHeader(UShort_t stack);
     124             :   UInt_t MakeGtuHeader(Bool_t storeInfo);
     125             : 
     126             :   Int_t StackFromStackHeader(UInt_t stackHeader);
     127             :   UInt_t SizeFromStackHeader(UInt_t stackHeader);
     128             :   Int_t HCIdFromTrackletHeader(UInt_t trackletHeader);
     129             :   Bool_t StoreGtuInfoFromDataHeader(UInt_t dataHeader);
     130             :   Bool_t GtuInfoPresentFromGtuHeader(UInt_t gtuHeader);
     131             : 
     132             :   UShort_t ExtractTrackLayerMask(ULong64_t trackWord);
     133             :   UShort_t ExtractTrackPID(ULong64_t trackWord);
     134             : 
     135           6 :   ClassDef(AliTRDonlineTrackingDataContainer, 1);
     136             : };
     137             : 
     138             : #endif

Generated by: LCOV version 1.11