LCOV - code coverage report
Current view: top level - TOF/TOFbase - AliTOFDecoderV2.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 15 20.0 %
Date: 2016-06-14 17:26:59 Functions: 3 19 15.8 %

          Line data    Source code
       1             : #ifndef ALITOFDECODERV2_H
       2             : #define ALITOFDECODERV2_H
       3             : 
       4             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : /* $Id: AliTOFDecoder.h,v 1.2 2007/05/08 11:55:24 arcelli Exp $ */
       8             : 
       9             : ///////////////////////////////////////////////////////////////
      10             : //                                                           //
      11             : //   This class provides the basic TOF raw data decoder.     //
      12             : //                                                           //
      13             : ///////////////////////////////////////////////////////////////
      14             : 
      15             : //define decoder status and bits
      16             : #define DRM_BIT                 0x1
      17             : #define LTM_BIT                 0x2
      18             : #define TRM_BIT                 0x4
      19             : #define CHAIN_A_BIT             0x8
      20             : #define CHAIN_B_BIT             0x10
      21             : 
      22             : #define DRM_HEADER_STATUS       0x0
      23             : #define DRM_TRAILER_STATUS      (DRM_BIT)
      24             : #define LTM_HEADER_STATUS       (DRM_BIT)
      25             : #define LTM_TRAILER_STATUS      (DRM_BIT|LTM_BIT)
      26             : #define TRM_HEADER_STATUS       (DRM_BIT)
      27             : #define TRM_TRAILER_STATUS      (DRM_BIT|TRM_BIT)
      28             : #define CHAIN_A_HEADER_STATUS   (DRM_BIT|TRM_BIT)
      29             : #define CHAIN_A_TRAILER_STATUS  (DRM_BIT|TRM_BIT|CHAIN_A_BIT)
      30             : #define CHAIN_B_HEADER_STATUS   (DRM_BIT|TRM_BIT)
      31             : #define CHAIN_B_TRAILER_STATUS  (DRM_BIT|TRM_BIT|CHAIN_B_BIT)
      32             : #define CHAIN_A_TDC_HIT_STATUS  (DRM_BIT|TRM_BIT|CHAIN_A_BIT)
      33             : #define CHAIN_B_TDC_HIT_STATUS  (DRM_BIT|TRM_BIT|CHAIN_B_BIT)
      34             : 
      35             : //define DRM/LTM fixed number of words
      36             : #define DRM_STATUS_HEADER_WORDS 4
      37             : #define LTM_PDL_DATA_WORDS      12
      38             : #define LTM_ADC_DATA_WORDS      20
      39             : #define LTM_OR_DATA_WORDS      16
      40             : 
      41             : //define masks
      42             : #define WORD_TYPE_MASK          0xf0000000
      43             : #define SLOT_ID_MASK            0x0000000f
      44             : 
      45             : //define word types
      46             : #define GLOBAL_HEADER           0x40000000
      47             : #define GLOBAL_TRAILER          0x50000000
      48             : #define CHAIN_A_HEADER          0x00000000
      49             : #define CHAIN_A_TRAILER         0x10000000
      50             : #define CHAIN_B_HEADER          0x20000000
      51             : #define CHAIN_B_TRAILER         0x30000000
      52             : #define ERROR                   0x60000000
      53             : #define FILLER                  0x70000000
      54             : 
      55             : //define TRM ACQ status
      56             : #define PACKING_ENABLED_ACQ     0x0
      57             : #define LEADING_ONLY_ACQ        0x1
      58             : #define TRAILING_ONLY_ACQ       0x2
      59             : #define PACKING_DISABLED_ACQ    0x3
      60             : 
      61             : //define TDC hit PS status
      62             : #define PACKED_HIT_PS           0x0
      63             : #define LEADING_HIT_PS          0x1
      64             : #define TRAILING_HIT_PS         0x2
      65             : #define TOT_OVF_HIT_PS          0x3
      66             : 
      67             : //define mandatory numbers
      68             : #define N_EQUIPMENT             72
      69             : #define N_DDL                   N_EQUIPMENT
      70             : #define N_TRM                   10
      71             : #define N_CHAIN                 2
      72             : #define N_TDC                   15
      73             : #define N_CHANNEL               8
      74             : #define TRM_FIRST_SLOT_ID       3
      75             : #define TRM_LAST_SLOT_ID        12
      76             : 
      77             : #define TIME_BIN_WIDTH          24.4e-3//ns
      78             : #define TOT_BIN_WIDTH           48.8e-3//ns
      79             : #define TIME_TO_TOT_BIN_WIDTH   ( TIME_BIN_WIDTH / TOT_BIN_WIDTH )
      80             : #define TOT_TO_TIME_BIN_WIDTH   ( TOT_BIN_WIDTH / TIME_BIN_WIDTH )
      81             : 
      82             : //define CRC macros to convert 32-bit CRC into DRM/TRM CRC
      83             : #define COMPUTE_DRM_CRC(a) ( ((a & 0x0000ffff) >> 0)  ^\
      84             :                              ((a & 0xffff0000) >> 16) )
      85             : #define COMPUTE_TRM_CRC(a) ( ((a & 0x00000fff) >> 0)  ^\
      86             :                              ((a & 0x00fff000) >> 12) ^\
      87             :                              ((a & 0xff000000) >> 24) )
      88             : #define COMPUTE_LTM_CRC(a) ( ((a & 0x00000fff) >> 0)  ^\
      89             :                              ((a & 0x00fff000) >> 12) ^\
      90             :                              ((a & 0xff000000) >> 24) )
      91             : 
      92             : 
      93             : #define TRM_ERROR_STATUS      (DRM_BIT|TRM_BIT)
      94             : #define CHAIN_A_TDCERROR_STATUS  (DRM_BIT|TRM_BIT|CHAIN_A_BIT)
      95             : #define CHAIN_B_TDCERROR_STATUS  (DRM_BIT|TRM_BIT|CHAIN_B_BIT)
      96             : 
      97             : #include "TObject.h"
      98             : #include "AliRawReader.h"
      99             : #include "AliTOFTDCHit.h"
     100             : 
     101             : class AliTOFDecoderSummaryData;
     102             : class AliTOFDRMSummaryData;
     103             : class AliTOFLTMSummaryData;
     104             : class AliTOFTRMSummaryData;
     105             : class AliTOFChainSummaryData;
     106             : class AliTOFTDCHitBuffer;
     107             : class AliTOFTDCErrorBuffer;
     108             : struct AliRawDataHeader;
     109             : 
     110             : class AliTOFDecoderV2 : public TObject
     111             : {
     112             :  public:
     113             :   AliTOFDecoderV2(AliRawReader *reader = NULL); //default constructor
     114             :   AliTOFDecoderV2(const AliTOFDecoderV2 &source); //copy constructor
     115             :   AliTOFDecoderV2 &operator = (const AliTOFDecoderV2 &source); //operator =
     116             :   ~AliTOFDecoderV2(); //distructor
     117             :   /* setters */
     118           0 :   void SetRawReader(AliRawReader *value) {fRawReader = value;}; // set raw reader
     119         576 :   void SetVerbose(Bool_t Verbose = kTRUE) {fVerbose = Verbose;}; //set verbose level
     120           0 :   void SetLogErrors(Bool_t Value = kTRUE) {fLogErrors = Value;}; //set log errors
     121           0 :   void SetV2718Patch(Bool_t V2718Patch = kTRUE) {fV2718Patch = V2718Patch;}; //set V2718 patch (no DRM)
     122           0 :   void SetRecoverError(Bool_t RecoverError = kTRUE) {fRecoverError = RecoverError;}; //decoder will try to recover decoding errors
     123           0 :   void SetRecoverErrorThr(Int_t value) {fRecoverErrorThr = value;}; // setter
     124           0 :   void SetSpider(Bool_t value = kTRUE) {fSpider = value;}; //set spider
     125           0 :   void SetRunNumber(Int_t RunNumber) {fRunNumber = RunNumber;}; //set run number
     126           0 :   void SetEventNumber(UInt_t EventNumber) {fEventNumber = EventNumber;}; //set event number
     127           0 :   void SetEquipmentID(Int_t EquipmentID) {fEquipmentID = EquipmentID;}; //set equipment ID
     128             :   /* getters */
     129        1152 :   AliTOFDecoderSummaryData *GetDecoderSummaryData() {return fDecoderSummaryData;}; //get decoder summary data
     130             :   /* methods */
     131             :   Bool_t Decode(UInt_t *rawData, UInt_t nWords); //main decode function
     132             :   void Spider(AliTOFTDCHit &hit);
     133             :   void ResetSpider();
     134             :   /* raw reader decoder interface */
     135           0 :   Bool_t NextEvent() {return fRawReader ? fRawReader->NextEvent() : kFALSE;}; // next event
     136           0 :   UInt_t GetEventType() {return fRawReader ? fRawReader->GetType() : 0;}; // get event type
     137             :   Bool_t DecodeNext(); // decode next
     138           0 :   const AliRawDataHeader *GetCDH() const {return fRawReader ? fRawReader->GetDataHeader() : NULL;}; // get CDH
     139             : 
     140             :  private:
     141             :   AliRawReader *fRawReader; // raw reader
     142             :   Bool_t fVerbose; //verbose flag
     143             :   Bool_t fLogErrors; //log errors flag
     144             :   Bool_t fV2718Patch; //V2718 patch flag
     145             :   Bool_t fRecoverError; //recover error flag
     146             :   Int_t fRecoverErrorThr; // recover error thr
     147             :   Bool_t fSpider; //spider flag
     148             :   Int_t  fRunNumber; //run number
     149             :   UInt_t  fEventNumber; //event number
     150             :   Int_t  fEquipmentID; //equipment ID
     151             : 
     152             :   //summary data pointers
     153             :   AliTOFDecoderSummaryData *fDecoderSummaryData; //decoder summary data
     154             :   AliTOFDRMSummaryData     *fDRMSummaryData; //DRM summary data
     155             :   AliTOFLTMSummaryData     *fLTMSummaryData; //LTM summary data
     156             :   AliTOFTRMSummaryData     *fTRMSummaryData; //TRM summary data
     157             :   AliTOFChainSummaryData   *fChainSummaryData; //chain summary data
     158             : 
     159             :   //buffer pointers
     160             :   AliTOFTDCHitBuffer       *fTDCHitBuffer; //TDC hit buffer
     161             :   AliTOFTDCHitBuffer       *fTDCPackedHitBuffer; //TDC packed hit buffer
     162             :   AliTOFTDCErrorBuffer     *fTDCErrorBuffer; //TDC error buffer
     163             : 
     164             :   //decoding objects
     165             :   AliTOFDRMGlobalHeader          *fDRMGlobalHeader; //DRM global header
     166             :   AliTOFDRMGlobalTrailer         *fDRMGlobalTrailer; //DRM global trailer
     167             :   AliTOFDRMStatusHeader1         *fDRMStatusHeader1; //DRM status header1
     168             :   AliTOFDRMStatusHeader2         *fDRMStatusHeader2; //DRM status header2
     169             :   AliTOFDRMStatusHeader3         *fDRMStatusHeader3; //DRM status header3
     170             :   AliTOFDRMStatusHeader4         *fDRMStatusHeader4; //DRM status header4
     171             :   AliTOFDRMEventCRC              *fDRMEventCRC; //DRM event CRC
     172             :   AliTOFLTMGlobalHeader          *fLTMGlobalHeader; //LTM global header
     173             :   AliTOFLTMGlobalTrailer         *fLTMGlobalTrailer; //LTM global trailer
     174             :   AliTOFLTMPDLData               *fLTMPDLData; //LTM PDL data
     175             :   AliTOFLTMADCData               *fLTMADCData; //LTM ADC data
     176             :   AliTOFLTMORData                *fLTMORData; //LTM OR data
     177             :   AliTOFTRMGlobalHeader          *fTRMGlobalHeader; //TRM global header
     178             :   AliTOFTRMGlobalTrailer         *fTRMGlobalTrailer; //TRM global trailer
     179             :   AliTOFTRMChainHeader           *fTRMChainHeader; //TRM chain header
     180             :   AliTOFTRMChainTrailer          *fTRMChainTrailer; //TRM chain trailer
     181             :   AliTOFTDCPackedHit             *fTDCPackedHit; //TDC packed hit
     182             :   AliTOFTDCUnpackedHit           *fTDCUnpackedHit; //TDC unpacked hit
     183             :   AliTOFTRMTDCError              *fTRMTDCError; //TRM TDC error
     184             :   AliTOFTRMDiagnosticErrorWord1  *fTRMDiagnosticErrorWord1; //TRM diagnostic error word 1
     185             :   AliTOFTRMDiagnosticErrorWord2  *fTRMDiagnosticErrorWord2; //TRM diagnostica error word 2
     186             : 
     187             :   /* Spider data members */
     188             :   AliTOFTDCHit fSpiderBuffer[8]; // SPIDER buffer
     189             :   Bool_t fSpiderBufferFull[8]; // SPIDER buffer full flag
     190             :   Int_t fSpiderTDCID; // SPIDER TDC ID
     191             :   AliTOFTDCHitBuffer *fSpiderTDCPackedHitBuffer; // SPIDER buffer
     192             : 
     193             : 
     194             :   /* Summary Data Functions */
     195             :   //fill DRM summary data 
     196             :   void FillDRMSummaryData(const AliTOFDRMGlobalHeader *DRMGlobalHeader); //DRM global header
     197             :   void FillDRMSummaryData(const AliTOFDRMGlobalTrailer *DRMGlobalTrailer); //DRM global trailer
     198             :   void FillDRMSummaryData(const AliTOFDRMStatusHeader1 *DRMStatusHeader1); //DRM status header 1
     199             :   void FillDRMSummaryData(const AliTOFDRMStatusHeader2 *DRMStatusHeader2); //DRM status header 2
     200             :   void FillDRMSummaryData(const AliTOFDRMStatusHeader3 *DRMStatusHeader3); //DRM status header 3
     201             :   void FillDRMSummaryData(const AliTOFDRMStatusHeader4 *DRMStatusHeader4); //DRM status header 4
     202             :   void FillDRMSummaryData(const AliTOFDRMEventCRC *DRMEventCRC); //DRM event CRC
     203             :   //fill LTM summary data
     204             :   void FillLTMSummaryData(const AliTOFLTMGlobalHeader *LTMGlobalHeader); //LTM global header
     205             :   void FillLTMSummaryData(const AliTOFLTMGlobalTrailer *LTMGlobalTrailer); //LTM global trailer
     206             :   void FillLTMSummaryData(const AliTOFLTMPDLData *LTMPDLData, Int_t PDLWord); //LTM PDL data
     207             :   void FillLTMSummaryData(const AliTOFLTMADCData *LTMADCData, Int_t ADCWord); //LTM ADC data
     208             :   void FillLTMSummaryData(const AliTOFLTMORData *LTMORData, Int_t ORWord); //LTM OR data
     209             :   //fill TRM summary data
     210             :   void FillTRMSummaryData(const AliTOFTRMGlobalHeader *TRMGlobalHeader); //TRM global header
     211             :   void FillTRMSummaryData(const AliTOFTRMGlobalTrailer *TRMGlobalTrailer); //TRM global trailer
     212             :   //fill chain summary data
     213             :   void FillChainSummaryData(const AliTOFTRMChainHeader *TRMChainHeader); //TRM chain header
     214             :   void FillChainSummaryData(const AliTOFTRMChainTrailer *TRMChainTrailer); //TRM chain trailer
     215             : 
     216          26 :   ClassDef(AliTOFDecoderV2, 1);
     217             : };
     218             : 
     219             : #endif /* ALITOFDECODERV2_H */

Generated by: LCOV version 1.11