LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSRawStreamSDD.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 11 20 55.0 %
Date: 2016-06-14 17:26:59 Functions: 7 17 41.2 %

          Line data    Source code
       1             : #ifndef ALIITSRAWSTREAMSDD_H
       2             : #define ALIITSRAWSTREAMSDD_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       7             : 
       8             : ///////////////////////////////////////////////////////////////////////////////
       9             : ///
      10             : /// This class provides access to ITS SDD digits in raw data 
      11             : /// (default=simulated data).
      12             : ///////////////////////////////////////////////////////////////////////////////
      13             : 
      14             : #include "AliITSRawStream.h"
      15             : #include "AliITSDDLModuleMapSDD.h"
      16             : 
      17             : class AliRawReader;
      18             : 
      19             : 
      20             : class AliITSRawStreamSDD: public AliITSRawStream {
      21             :   public :
      22             :     AliITSRawStreamSDD(AliRawReader* rawReader);
      23             :     AliITSRawStreamSDD(const AliITSRawStreamSDD& rs);
      24             :     AliITSRawStreamSDD& operator=(const AliITSRawStreamSDD& rs);
      25             :     virtual ~AliITSRawStreamSDD();
      26             : 
      27             :     static UChar_t ReadBlockAttributes(AliRawReader* rawReader);
      28             :     static UInt_t  ReadAMSamplFreqFromCDH(UChar_t cdhAttr){
      29           0 :       if(cdhAttr&0x10) return 40;
      30           0 :       else return 20;
      31           0 :     }
      32             :     static AliITSRawStream* CreateRawStreamSDD(AliRawReader* rawReader, UChar_t attributes);
      33             :     static AliITSRawStream* CreateRawStreamSDD(AliRawReader* rawReader);
      34             : 
      35             :     virtual Bool_t   Next();
      36             : 
      37           0 :     virtual Int_t    GetAnode() const {return fCoord1;}
      38           0 :     virtual Int_t    GetTime() const {return fCoord2;}
      39        3558 :     virtual Int_t    GetChannel() const {return fChannel;}
      40           0 :     virtual Int_t    GetEightBitSignal() const {return fEightBitSignal;}
      41        3558 :     virtual Int_t    GetCarlosId() const {return fCarlosId;}
      42           0 :     virtual Int_t    GetEventId() const {return fEventId;}
      43         192 :     virtual Int_t    GetJitter() const {return fJitter;}  
      44             : 
      45             : 
      46             :     virtual void     SetDecompressAmbra(Bool_t deco=kTRUE){
      47           0 :       fDecompressAmbra=deco;
      48           0 :     }
      49             :     virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
      50          16 :       if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
      51           4 :       fDDLModuleMap->SetDDLMap(ddlsdd);
      52           4 :     }
      53             :     virtual void     SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th) 
      54        4160 :       {fLowThresholdArray[iMod][iSid]=th;}
      55             :     Int_t   GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
      56       79412 :       if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
      57       39706 :       return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
      58       39706 :     }
      59             :     virtual void     Reset(); 
      60             : 
      61             :     enum {kSDDModules = 260};      // number of SDD modules
      62             :     enum {kSPDModules = 240};      // number of SPD modules (used as offset)
      63             :     enum {kDDLsNumber = 24};       // number of DDLs in SDD
      64             :     enum {kModulesPerDDL = 12};    // number of modules in each DDL 
      65             :     enum {kCarlosWords = 12};      // number of FIFOCARLOS Words
      66             :     enum {kFifoWords =  4};        // number of FIFO Words
      67             :     enum ESDDRawStreamError { 
      68             :       kDataError = 1,
      69             :       kDataFormatErr = 2
      70             :     };
      71             :   protected:
      72             :     virtual Bool_t   SkipHeaderWord(); 
      73             :     virtual UInt_t   ReadBits();
      74             :     virtual Int_t    DecompAmbra(Int_t value) const;
      75             : 
      76             :     static const UInt_t fgkCodeLength[8]; //code length
      77             : 
      78             :     AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number 
      79             :     UInt_t           fData;         // data read for file
      80             :     Bool_t           fResetSkip;    // flag for end of DDL data
      81             : 
      82             :     Int_t            fEventId;      // event ID from header
      83             :     Int_t            fCarlosId;     // carlos ID
      84             :     Int_t            fChannel;      // current channel
      85             :     Int_t            fJitter;          // jitter between L0 and pascal stop (x25ns)
      86             :     ULong64_t        fChannelData[kModulesPerDDL][2];// packed data for the 2 channels
      87             :     UInt_t           fLastBit[kModulesPerDDL][2];    // last filled bit in fChannelData
      88             :     UInt_t           fChannelCode[kModulesPerDDL][2];// current channel code
      89             :     Bool_t           fReadCode[kModulesPerDDL][2];   // next bits are code or data
      90             :     UInt_t           fReadBits[kModulesPerDDL][2];   // number of bits to read
      91             :     Int_t            fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules
      92             : 
      93             :     Int_t            fNfifo[kFifoWords];  // FIFO number
      94             :     Int_t            fTimeBin[kModulesPerDDL][2];  // current timebin [ncarlos][nchannels]
      95             :     Int_t            fAnode[kModulesPerDDL][2]; // current anode [ncarlos][nchannels]
      96             :     UInt_t           fICarlosWord[kCarlosWords]; // Carlos words
      97             :     UInt_t           fIFifoWord[kFifoWords];     // FIFO words
      98             :     Int_t            fICountFoot[kModulesPerDDL]; // counter for carlos footer words
      99             :     Int_t            fEightBitSignal;    // signal at 8 bit
     100             :     Bool_t           fDecompressAmbra; //flag to switch off decompression
     101             : 
     102         118 :     ClassDef(AliITSRawStreamSDD, 14) // class for reading ITS SDD raw digits
     103             : };
     104             : 
     105             : #endif

Generated by: LCOV version 1.11