LCOV - code coverage report
Current view: top level - TRD/TRDbase - AliTRDarrayADC.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 15 23 65.2 %
Date: 2016-06-14 17:26:59 Functions: 12 21 57.1 %

          Line data    Source code
       1             : #ifndef ALITRDARRAYADC_H
       2             : #define ALITRDARRAYADC_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * 
       4             :  * See cxx source for full Copyright notice */ 
       5             : 
       6             : /* $Id: AliTRDarrayADC.h 23387 2008-01-17 17:25:16Z cblume $ */
       7             : 
       8             : ///////////////////////////////////////////////
       9             : //                                           //
      10             : // Container class for ADC values            //
      11             : //                                           // 
      12             : ///////////////////////////////////////////////
      13             : 
      14             : #include <TObject.h>
      15             : 
      16             : class AliTRDSignalIndex;
      17             : class AliTRDarrayADC: public TObject
      18             : {
      19             :  public:
      20             : 
      21             :   enum {
      22             :     kDataInvalid = 14
      23             :   };
      24             : 
      25             :   AliTRDarrayADC();
      26             :   AliTRDarrayADC(Int_t nrow, Int_t ncol, Int_t ntime);
      27             :   AliTRDarrayADC(const AliTRDarrayADC &b);
      28             :   ~AliTRDarrayADC();
      29             :   AliTRDarrayADC &operator=(const AliTRDarrayADC &b);
      30             : 
      31             :   void    Allocate(Int_t nrow, Int_t ncol, Int_t ntime);
      32       28176 :   void    SetNdet(Int_t ndet) {fNdet=ndet;};  
      33           0 :   Int_t   GetNdet()  const {return fNdet;};
      34             :   void    SetDataByAdcCol(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value)
      35    23612040 :                          {fADC[(nrow*fNumberOfChannels+ncol)*fNtime+ntime]=value;}
      36       18408 :   Bool_t  HasData() const {return fNtime ? 1 : 0;};
      37             :   Short_t GetDataByAdcCol(Int_t nrow, Int_t ncol, Int_t ntime) const
      38    23587200 :                          {return fADC[(nrow*fNumberOfChannels+ncol)*fNtime+ntime];};
      39             :   inline  void GetData(Int_t r, Int_t c, Int_t t, Int_t n, Short_t *vals) const;
      40             :   Short_t GetDataBits(Int_t nrow, Int_t ncol, Int_t ntime) const;
      41             :   UChar_t GetPadStatus(Int_t nrow, Int_t ncol, Int_t ntime) const;
      42             :   void    SetPadStatus(Int_t nrow, Int_t ncol, Int_t ntime, UChar_t status);
      43             :   Bool_t  IsPadCorrupted(Int_t nrow, Int_t ncol, Int_t ntime);
      44             :   void    Compress();
      45             :   void    Expand();
      46       97298 :   Int_t   GetNtime() const {return fNtime;};
      47        4856 :   Int_t   GetNrow() const {return fNrow;};
      48        1504 :   Int_t   GetNcol() const {return fNcol;};
      49           0 :   Int_t   GetDim() const {return fNAdim;};
      50             :   void    DeleteNegatives();
      51             :   void    Reset();
      52             :   void    ConditionalReset(AliTRDSignalIndex* idx);
      53             :   inline  Short_t* GetDataAddress(Int_t nrow, Int_t ncol, Int_t ntime = 0) const;
      54             :   inline  Short_t GetData(Int_t nrow, Int_t ncol, Int_t ntime) const;
      55             :   inline  void    SetData(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value);
      56             :   static  void    CreateLut(); 
      57             : 
      58           0 :   Bool_t  IsValid() { return !TestBit(kDataInvalid); }
      59           0 :   void    SetDataInvalid() { SetBit(kDataInvalid); }
      60           0 :   void    SetDataValid() { ResetBit(kDataInvalid); }
      61             : 
      62             :  protected:
      63             : 
      64             :   Int_t fNdet;    //ID number of the chamber
      65             :   Int_t fNrow;    //Number of rows
      66             :   Int_t fNcol;    //Number of columns(pads)
      67             :   Int_t fNumberOfChannels;  //  Number of MCM channels per row
      68             :   Int_t fNtime;   //Number of time bins
      69             :   Int_t fNAdim;   //Dimension of the ADC array
      70             :   Short_t* fADC;  //[fNAdim]   //Pointer to adc values
      71             :   static Short_t *fgLutPadNumbering;   //  [fNcol] Look Up Table
      72             : 
      73         436 :   ClassDef(AliTRDarrayADC,4) //ADC container class
      74             :     
      75             : };
      76             : 
      77             : //________________________________________________________________________________
      78             : Short_t* AliTRDarrayADC::GetDataAddress(Int_t nrow, Int_t ncol, Int_t ntime) const
      79             : {
      80             :   //
      81             :   // Get the address of the given pad
      82             :   //
      83             : 
      84       13332 :   Int_t corrcolumn = fgLutPadNumbering[ncol];
      85             : 
      86        6666 :   return &fADC[(nrow*fNumberOfChannels+corrcolumn)*fNtime+ntime];
      87             : 
      88             : }
      89             : //________________________________________________________________________________
      90             : Short_t AliTRDarrayADC::GetData(Int_t nrow, Int_t ncol, Int_t ntime) const
      91             : {
      92             :   //
      93             :   // Get the data using the pad numbering.
      94             :   // To access data using the mcm scheme use instead
      95             :   // the method GetDataByAdcCol
      96             :   //
      97             : 
      98    64725124 :   Int_t corrcolumn = fgLutPadNumbering[ncol];
      99             : 
     100    32362562 :   return fADC[(nrow*fNumberOfChannels+corrcolumn)*fNtime+ntime];
     101             : 
     102             : }
     103             : //________________________________________________________________________________
     104             : void AliTRDarrayADC::SetData(Int_t nrow, Int_t ncol, Int_t ntime, Short_t value)
     105             : {
     106             :   //
     107             :   // Set the data using the pad numbering.
     108             :   // To write data using the mcm scheme use instead
     109             :   // the method SetDataByAdcCol
     110             :   //
     111             : 
     112    20217600 :   Int_t colnumb = fgLutPadNumbering[ncol];
     113             : 
     114    10108800 :   fADC[(nrow*fNumberOfChannels+colnumb)*fNtime+ntime] = value;
     115             : 
     116    10108800 : }
     117             : 
     118             : void AliTRDarrayADC::GetData(Int_t r, Int_t c, Int_t t, Int_t n, Short_t *vals) const
     119             : {
     120           0 :   Int_t colNum = fgLutPadNumbering[c];
     121           0 :   for(Int_t ic=n, idx = (r*fNumberOfChannels+colNum)*fNtime+t; ic--; idx+=fNtime) vals[ic] = fADC[idx];
     122           0 :  }
     123             : 
     124             : #endif 
     125             : 

Generated by: LCOV version 1.11