LCOV - code coverage report
Current view: top level - MUON/MUONraw - AliMUONLocalStruct.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 47 10.6 %
Date: 2016-06-14 17:26:59 Functions: 5 41 12.2 %

          Line data    Source code
       1             : #ifndef ALIMUONLOCALSTRUCT_H
       2             : #define ALIMUONLOCALSTRUCT_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             : /// \ingroup raw
       9             : /// \class AliMUONLocalStruct
      10             : /// \brief Rawdata local card structure for trigger
      11             : ///
      12             : //  Author Christian Finck
      13             : 
      14             : #include <TObject.h>
      15             : #include <TMath.h>
      16             : #include <TArrayS.h>
      17             : 
      18             : 
      19             : class AliMUONLocalStruct : public TObject{
      20             :  
      21             : public:
      22             :    AliMUONLocalStruct();
      23             :    AliMUONLocalStruct(const AliMUONLocalStruct& event);
      24             :    AliMUONLocalStruct& operator=(const AliMUONLocalStruct& event);
      25             : 
      26             : 
      27             :    virtual ~AliMUONLocalStruct();
      28             : 
      29             :    // local board info
      30             :             /// Return local data
      31           0 :    UInt_t  GetData(Int_t n) const {return fData[n];}
      32             : 
      33             :             /// Return X2
      34           0 :    UShort_t GetX2() const {return (fData[0]     >> 16) &  0xFFFF;}
      35             :             /// Return X1
      36           0 :    UShort_t GetX1() const {return (fData[0])           &  0xFFFF;}
      37             :             /// Return X4
      38           0 :    UShort_t GetX4() const {return (fData[1] >> 16) &  0xFFFF;}
      39             :             /// Return X3
      40           0 :    UShort_t GetX3() const {return (fData[1])       &  0xFFFF;}
      41             :            /// return X pattern array
      42             :    void    GetXPattern(TArrayS& array) const;
      43             :            /// return Y pattern array
      44             :    void    GetYPattern(TArrayS& array) const;
      45             : 
      46             :             /// Return Y2
      47           0 :    UShort_t GetY2() const {return (fData[2] >> 16) &  0xFFFF;}
      48             :             /// Return Y1
      49           0 :    UShort_t GetY1() const {return (fData[2])       &  0xFFFF;}
      50             :             /// Return Y4
      51           0 :    UShort_t GetY4() const {return (fData[3] >> 16) &  0xFFFF;}
      52             :             /// Return Y3
      53           0 :    UShort_t GetY3() const {return (fData[3])       &  0xFFFF;}
      54             : 
      55             :             /// Return Id
      56           0 :    UChar_t  GetId()  const  {return fData[4] >> 19 &  0xF;}
      57             :             /// Return Dec
      58           0 :    UChar_t  GetDec() const  {return fData[4] >> 15 &  0xF;}
      59             :             /// Return TrigY
      60           0 :    Bool_t   GetTrigY() const {return (fData[4] >> 14 & 0x1);}
      61             :             /// Return TriggerY
      62           0 :    Bool_t   GetTriggerY() const {return !(GetTrigY() && GetYPos()==15);}
      63             :             /// Return Upos
      64           0 :    UChar_t  GetYPos() const {return fData[4] >> 10 &  0xF;}
      65             :             /// Get Sign of X deviation 
      66           0 :    UChar_t  GetSXDev() const {return fData[4] >> 9  &  0x1;}
      67             :             /// Get X deviation 
      68           0 :    UChar_t  GetXDev() const {return fData[4] >> 5  &  0xF;}
      69             :             /// Return TriggerX
      70           0 :    Bool_t   GetTriggerX() const {return !(GetSXDev() &&
      71           0 :                                           !GetXDev() &&
      72           0 :                                           GetXPos()==0);}   
      73             :             /// Return Xpos
      74           0 :    UChar_t  GetXPos() const {return fData[4]       &  0x1F;}
      75             : 
      76             :             /// Return LPT
      77           0 :    Int_t   GetLpt() const {return (GetDec() & 0x3);}
      78             :             /// Return HPT
      79           0 :    Int_t   GetHpt() const {return (GetDec() >> 2) & 0x3;}
      80             : 
      81             :             /// Set local data
      82           0 :    void    SetData(UInt_t d, Int_t n) {fData[n] = d;}
      83             : 
      84             :             /// Return data
      85           0 :    UInt_t* GetData() {return &fData[0];}
      86             : 
      87             :  // Scaler methods
      88             :             /// Return local L0
      89           0 :    UInt_t  GetL0()      const {return fL0;}
      90             :             /// Return local hold (dead time)
      91           0 :    UInt_t  GetHold()    const {return fHold;}
      92             :             /// Return local clock
      93           0 :    UInt_t  GetClock()   const {return fClk;}
      94             :             /// Return switch
      95           0 :    UShort_t GetSwitch()  const {return (fEOS >> 1) & 0x3FF;}
      96             :             /// Return ComptXY
      97           0 :    UChar_t GetComptXY() const {return  fEOS & 1;}
      98             : 
      99             :             /// Return XY1
     100           0 :    UShort_t GetXY1(Int_t n) const {return  (n % 2 == 1) ?
     101           0 :        (fScaler[TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
     102           0 :        (fScaler[TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}
     103             : 
     104             :             /// Return XY2
     105           0 :    UShort_t GetXY2(Int_t n) const {return  (n % 2 == 1) ?
     106           0 :        (fScaler[8 + TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
     107           0 :        (fScaler[8 + TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}
     108             : 
     109             :             /// Return XY3
     110           0 :    UShort_t GetXY3(Int_t n) const {return  (n % 2 == 1) ?
     111           0 :        (fScaler[8*2 + TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
     112           0 :        (fScaler[8*2 + TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}
     113             : 
     114             :             /// Return XY4
     115           0 :    UShort_t GetXY4(Int_t n) const {return  (n % 2 == 1) ?
     116           0 :        (fScaler[8*3 + TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
     117           0 :        (fScaler[8*3 + TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}
     118             : 
     119             :             /// Return scalers
     120           0 :    UInt_t* GetScalers()  {return &fL0;} 
     121             : 
     122             :    // get  length
     123             :             /// Return scaler length in word
     124           2 :    Int_t  GetScalerLength()  const {return fgkScalerLength;} 
     125             :             /// Return local info length in word
     126         674 :    Int_t  GetLength()        const {return fgkLength;} 
     127             :             /// Return end of local info word
     128        2048 :    UInt_t GetEndOfLocal()    const {return fgkEndOfLocal;}
     129             :             /// Return Word for "empty" slots
     130         560 :    UInt_t GetDisableWord()   const {return fgkDisableWord;}
     131             : 
     132             :    // set random numbers to fill variable
     133             :    void SetScalersNumbers();
     134             : 
     135             :  private:
     136             :   
     137             :    // local info
     138             :    UInt_t    fData[5];  ///< local data
     139             :    
     140             :    // local card scalers   
     141             :    UInt_t     fL0;        ///< local L0
     142             :    UInt_t     fHold;      ///< local hold (dead time)
     143             :    UInt_t     fClk;       ///< local clock
     144             : 
     145             :    UInt_t     fLPtNTrig;  ///< local low Pt no trigger
     146             :    UInt_t     fHPtNTrig;  ///< local high Pt no trigger
     147             : 
     148             :    UInt_t     fLPtRTrig;  ///< local low Pt right trigger
     149             :    UInt_t     fHPtRTrig;  ///< local high Pt right trigger
     150             : 
     151             :    UInt_t     fLPtLTrig;  ///< local low Pt left trigger
     152             :    UInt_t     fHPtLTrig;  ///< local high Pt left trigger
     153             : 
     154             :    UInt_t     fLPtSTrig;  ///< local low Pt straight trigger
     155             :    UInt_t     fHPtSTrig;  ///< local high Pt straight trigger
     156             : 
     157             :    UInt_t     fScaler[8*4];   ///< local data
     158             :    UInt_t     fEOS;           ///< contains switches conf. & flag for reading X (0) or Y (1) in fScaler
     159             :    UInt_t     fReset;         ///< reset signal
     160             : 
     161             :    static const Int_t  fgkLength;       ///< local info length in word
     162             :    static const Int_t  fgkScalerLength; ///< scaler length in word
     163             :    static const UInt_t fgkEndOfLocal;   ///< end of local info word
     164             :    static const UInt_t fgkDisableWord;  ///< Word for "empty" slots
     165             : 
     166          18 :    ClassDef(AliMUONLocalStruct,3) //Rawdata local card structure for trigger
     167             : };
     168             : #endif

Generated by: LCOV version 1.11