LCOV - code coverage report
Current view: top level - TOF/TOFbase - AliTOFDecoder.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 5 20.0 %
Date: 2016-06-14 17:26:59 Functions: 1 9 11.1 %

          Line data    Source code
       1             : #ifndef ALITOFDECODER_H
       2             : #define ALITOFDECODER_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$ */
       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_DATA_WORDS          5
      37             : #define LTM_DATA_WORDS          48
      38             : 
      39             : //define masks
      40             : #define WORD_TYPE_MASK          0xf0000000
      41             : #define SLOT_ID_MASK            0x0000000f
      42             : 
      43             : //define word types
      44             : #define GLOBAL_HEADER           0x40000000
      45             : #define GLOBAL_TRAILER          0x50000000
      46             : #define CHAIN_A_HEADER          0x00000000
      47             : #define CHAIN_A_TRAILER         0x10000000
      48             : #define CHAIN_B_HEADER          0x20000000
      49             : #define CHAIN_B_TRAILER         0x30000000
      50             : #define ERROR                   0x60000000
      51             : #define FILLER                  0x70000000
      52             : 
      53             : //define TRM ACQ status
      54             : #define PACKING_ENABLED_ACQ     0x0
      55             : #define LEADING_ONLY_ACQ        0x1
      56             : #define TRAILING_ONLY_ACQ       0x2
      57             : #define PACKING_DISABLED_ACQ    0x3
      58             : 
      59             : //define TDC hit PS status
      60             : #define PACKED_HIT_PS           0x0
      61             : #define LEADING_HIT_PS          0x1
      62             : #define TRAILING_HIT_PS         0x2
      63             : #define TOT_OVF_HIT_PS          0x3
      64             : 
      65             : //define mandatory numbers
      66             : #define N_EQUIPMENT             72
      67             : #define N_DDL                   N_EQUIPMENT
      68             : #define N_TRM                   10
      69             : #define N_CHAIN                 2
      70             : #define N_TDC                   15
      71             : #define N_CHANNEL               8
      72             : #define TRM_FIRST_SLOT_ID       3
      73             : #define TRM_LAST_SLOT_ID        12
      74             : 
      75             : #define TIME_BIN_WIDTH          24.4e-3//ns
      76             : #define TOT_BIN_WIDTH           48.8e-3//ns
      77             : #define TIME_TO_TOT_BIN_WIDTH   ( TIME_BIN_WIDTH / TOT_BIN_WIDTH )
      78             : #define TOT_TO_TIME_BIN_WIDTH   ( TOT_BIN_WIDTH / TIME_BIN_WIDTH )
      79             : 
      80             : //max hit number in a TDC
      81             : #define MAX_TDC_HIT_NUMBER 100
      82             : //max TDC errors
      83             : #define MAX_TDC_ERROR_NUMBER 1000
      84             : //max hit number in a TRM
      85             : #define MAX_TRM_HIT_NUMBER 2400
      86             : 
      87             : #include "TObject.h"
      88             : #include "AliTOFRawDataFormat.h"
      89             : #include "AliTOFHitData.h"
      90             : //#include "AliTOFHitDataBuffer.h"
      91             : //#include "AliTOFGeometry.h"
      92             : 
      93             : class AliTOFHitDataBuffer;
      94             : struct AliRawDataHeader;
      95             : struct AliRawDataHeaderV3;
      96             : 
      97             : class AliTOFDecoder : public TObject
      98             : {
      99             :  public:
     100             :   AliTOFDecoder(); //default constructor
     101             :   AliTOFDecoder(AliTOFHitDataBuffer *DB, AliTOFHitDataBuffer *PDB); //constructor
     102             :   AliTOFDecoder(const AliTOFDecoder &source); //copy constructor
     103             :   AliTOFDecoder &operator = (const AliTOFDecoder &source); //operator =
     104             :   ~AliTOFDecoder(); //distructor
     105             :   
     106             :   Bool_t Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh, const AliRawDataHeaderV3 *cdhV3=0); //main decode function
     107           0 :   void   SetVerbose(Int_t Verbose = 1) {fVerbose = Verbose;}; //set verbose level
     108           0 :   void   SetV2718Patch(Bool_t V2718Patch = kTRUE) {fV2718Patch = V2718Patch;}; //set V2718 patch (no DRM)
     109           0 :   void   SetDataBuffer(AliTOFHitDataBuffer *DB) {fDataBuffer = DB;}; //set up data buffer
     110           0 :   void   SetPackedDataBuffer(AliTOFHitDataBuffer *PDB) {fPackedDataBuffer = PDB;}; //set up packed data buffer
     111             : 
     112             :   void GetArrayDDL(Int_t* array, Int_t iDDL); // method to return array of TOFchannels corresponding to a given DDL id 
     113             :   void PrintStack(const UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh, const AliRawDataHeaderV3 *cdhV3=0);
     114             : 
     115             : enum {
     116             :   kMinPlate0=0,kMaxPlate0=2,
     117             :   kMinStrip0=0,kMaxStrip0=6,
     118             :   kMinPadz0=0,kMaxPadz0=1,
     119             :   kMinPadx0=0,kMaxPadx0=23,
     120             : 
     121             :   kMinPlate1=0,kMaxPlate1=2,
     122             :   kMinStrip1=0,kMaxStrip1=7,
     123             :   kMinPadz1=0,kMaxPadz1=1,
     124             :   kMinPadx1=24,kMaxPadx1=47,
     125             : 
     126             :   kMinPlate2=2,kMaxPlate2=4,
     127             :   kMinStrip2=8,kMaxStrip2=14,
     128             :   kMinPadz2=0,kMaxPadz2=1,
     129             :   kMinPadx2=24,kMaxPadx2=47,
     130             : 
     131             :   kMinPlate3=2,kMaxPlate3=4,
     132             :   kMinStrip3=7,kMaxStrip3=14,
     133             :   kMinPadz3=0,kMaxPadz3=1,
     134             :   kMinPadx3=0,kMaxPadx3=23
     135             : 
     136             : };
     137             : 
     138             : 
     139             :  private:
     140             :   /* SPIDER
     141             :    * - Software Packing Inside Decoding Routines -
     142             :    * developed by Roberto Preghenella (R+)
     143             :    * use at your own risk
     144             :    */     
     145             :   Bool_t InitializeSpider(); //initialize SPIDER routine
     146             :   Bool_t ResetSpider(); //reset SPIDER routine
     147             :   Bool_t Spider(AliTOFHitData &hitData); //main SPIDER routine
     148             : 
     149             :   Int_t                fVerbose; //verbose flag
     150             :   Bool_t               fV2718Patch; //V2718 patch flag
     151             :   AliTOFHitDataBuffer *fDataBuffer; //data buffer pointer
     152             :   AliTOFHitDataBuffer *fPackedDataBuffer; //packed data buffe pointer
     153             : 
     154             :   //decoding objects
     155             :   //AliTOFTRMGlobalHeader          *fTRMGlobalHeader; //TRM global header
     156             :   //AliTOFTRMGlobalTrailer         *fTRMGlobalTrailer; //TRM global trailer
     157             :   //AliTOFTRMChainHeader           *fTRMChainHeader; //TRM chain header
     158             :   //AliTOFTRMChainTrailer          *fTRMChainTrailer; //TRM chain trailer
     159             :   //AliTOFTDCPackedHit             *fTDCPackedHit; //TDC packed hit
     160             :   //AliTOFTDCUnpackedHit           *fTDCUnpackedHit; //TDC unpacked hit
     161             :   //AliTOFTRMTDCError              *fTRMTDCError; //TRM TDC error
     162             :   //AliTOFTRMDiagnosticErrorWord1  *fTRMDiagnosticErrorWord1; //TRM diagnostic error word 1
     163             :   //AliTOFTRMDiagnosticErrorWord2  *fTRMDiagnosticErrorWord2; //TRM diagnostica error word 2
     164             : 
     165             :   //SPIDER variables
     166             :   Int_t         fSpiderCurrentSlotID; //SPIDER current slot ID
     167             :   Int_t         fSpiderCurrentChain; //SPIDER current chain
     168             :   Int_t         fSpiderCurrentTDC; //SPIDER current TDC
     169             :   Bool_t        fSpiderLeadingFlag[8]; //SPIDER channel leading flag
     170             :   AliTOFHitData fSpiderLeadingHit[8]; //SPIDER channel leading hit
     171             : 
     172          26 :   ClassDef(AliTOFDecoder, 2)
     173             : };
     174             : 
     175             : #endif /* ALITOFDECODER_H */

Generated by: LCOV version 1.11