ROOT logo
#ifndef ALIMUONLOCALSTRUCT_H
#define ALIMUONLOCALSTRUCT_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/*$Id$*/

/// \ingroup raw
/// \class AliMUONLocalStruct
/// \brief Rawdata local card structure for trigger
///
//  Author Christian Finck

#include <TObject.h>
#include <TMath.h>
#include <TArrayS.h>


class AliMUONLocalStruct : public TObject{
 
public:
   AliMUONLocalStruct();
   AliMUONLocalStruct(const AliMUONLocalStruct& event);
   AliMUONLocalStruct& operator=(const AliMUONLocalStruct& event);


   virtual ~AliMUONLocalStruct();

   // local board info
            /// Return local data
   UInt_t  GetData(Int_t n) const {return fData[n];}

            /// Return X2
   UShort_t GetX2() const {return (fData[0]     >> 16) &  0xFFFF;}
            /// Return X1
   UShort_t GetX1() const {return (fData[0])           &  0xFFFF;}
            /// Return X4
   UShort_t GetX4() const {return (fData[1] >> 16) &  0xFFFF;}
            /// Return X3
   UShort_t GetX3() const {return (fData[1])       &  0xFFFF;}
           /// return X pattern array
   void    GetXPattern(TArrayS& array) const;
           /// return Y pattern array
   void    GetYPattern(TArrayS& array) const;

            /// Return Y2
   UShort_t GetY2() const {return (fData[2] >> 16) &  0xFFFF;}
            /// Return Y1
   UShort_t GetY1() const {return (fData[2])       &  0xFFFF;}
            /// Return Y4
   UShort_t GetY4() const {return (fData[3] >> 16) &  0xFFFF;}
            /// Return Y3
   UShort_t GetY3() const {return (fData[3])       &  0xFFFF;}

            /// Return Id
   UChar_t  GetId()  const  {return fData[4] >> 19 &  0xF;}
            /// Return Dec
   UChar_t  GetDec() const  {return fData[4] >> 15 &  0xF;}
            /// Return TrigY
   Bool_t   GetTrigY() const {return (fData[4] >> 14 & 0x1);}
            /// Return TriggerY
   Bool_t   GetTriggerY() const {return !(GetTrigY() && GetYPos()==15);}
            /// Return Upos
   UChar_t  GetYPos() const {return fData[4] >> 10 &  0xF;}
            /// Get Sign of X deviation 
   UChar_t  GetSXDev() const {return fData[4] >> 9  &  0x1;}
            /// Get X deviation 
   UChar_t  GetXDev() const {return fData[4] >> 5  &  0xF;}
            /// Return TriggerX
   Bool_t   GetTriggerX() const {return !(GetSXDev() &&
					  !GetXDev() &&
					  GetXPos()==0);}   
            /// Return Xpos
   UChar_t  GetXPos() const {return fData[4]       &  0x1F;}

            /// Return LPT
   Int_t   GetLpt() const {return (GetDec() & 0x3);}
            /// Return HPT
   Int_t   GetHpt() const {return (GetDec() >> 2) & 0x3;}

            /// Set local data
   void    SetData(UInt_t d, Int_t n) {fData[n] = d;}

            /// Return data
   UInt_t* GetData() {return &fData[0];}

 // Scaler methods
            /// Return local L0
   UInt_t  GetL0()      const {return fL0;}
            /// Return local hold (dead time)
   UInt_t  GetHold()    const {return fHold;}
            /// Return local clock
   UInt_t  GetClock()   const {return fClk;}
            /// Return switch
   UShort_t GetSwitch()  const {return (fEOS >> 1) & 0x3FF;}
            /// Return ComptXY
   UChar_t GetComptXY() const {return  fEOS & 1;}

            /// Return XY1
   UShort_t GetXY1(Int_t n) const {return  (n % 2 == 1) ?
       (fScaler[TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
       (fScaler[TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}

            /// Return XY2
   UShort_t GetXY2(Int_t n) const {return  (n % 2 == 1) ?
       (fScaler[8 + TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
       (fScaler[8 + TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}

            /// Return XY3
   UShort_t GetXY3(Int_t n) const {return  (n % 2 == 1) ?
       (fScaler[8*2 + TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
       (fScaler[8*2 + TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}

            /// Return XY4
   UShort_t GetXY4(Int_t n) const {return  (n % 2 == 1) ?
       (fScaler[8*3 + TMath::Nint(Float_t(n/2))] &  0xFFFF) : 
       (fScaler[8*3 + TMath::Nint(Float_t(n/2))] >> 16) &  0xFFFF;}

            /// Return scalers
   UInt_t* GetScalers()  {return &fL0;} 

   // get  length
            /// Return scaler length in word
   Int_t  GetScalerLength()  const {return fgkScalerLength;} 
            /// Return local info length in word
   Int_t  GetLength()        const {return fgkLength;} 
            /// Return end of local info word
   UInt_t GetEndOfLocal()    const {return fgkEndOfLocal;}
            /// Return Word for "empty" slots
   UInt_t GetDisableWord()   const {return fgkDisableWord;}

   // set random numbers to fill variable
   void SetScalersNumbers();

 private:
  
   // local info
   UInt_t    fData[5];  ///< local data
   
   // local card scalers   
   UInt_t     fL0;        ///< local L0
   UInt_t     fHold;      ///< local hold (dead time)
   UInt_t     fClk;       ///< local clock

   UInt_t     fLPtNTrig;  ///< local low Pt no trigger
   UInt_t     fHPtNTrig;  ///< local high Pt no trigger

   UInt_t     fLPtRTrig;  ///< local low Pt right trigger
   UInt_t     fHPtRTrig;  ///< local high Pt right trigger

   UInt_t     fLPtLTrig;  ///< local low Pt left trigger
   UInt_t     fHPtLTrig;  ///< local high Pt left trigger

   UInt_t     fLPtSTrig;  ///< local low Pt straight trigger
   UInt_t     fHPtSTrig;  ///< local high Pt straight trigger

   UInt_t     fScaler[8*4];   ///< local data
   UInt_t     fEOS;           ///< contains switches conf. & flag for reading X (0) or Y (1) in fScaler
   UInt_t     fReset;         ///< reset signal

   static const Int_t  fgkLength;       ///< local info length in word
   static const Int_t  fgkScalerLength; ///< scaler length in word
   static const UInt_t fgkEndOfLocal;   ///< end of local info word
   static const UInt_t fgkDisableWord;  ///< Word for "empty" slots

   ClassDef(AliMUONLocalStruct,3) //Rawdata local card structure for trigger
};
#endif
 AliMUONLocalStruct.h:1
 AliMUONLocalStruct.h:2
 AliMUONLocalStruct.h:3
 AliMUONLocalStruct.h:4
 AliMUONLocalStruct.h:5
 AliMUONLocalStruct.h:6
 AliMUONLocalStruct.h:7
 AliMUONLocalStruct.h:8
 AliMUONLocalStruct.h:9
 AliMUONLocalStruct.h:10
 AliMUONLocalStruct.h:11
 AliMUONLocalStruct.h:12
 AliMUONLocalStruct.h:13
 AliMUONLocalStruct.h:14
 AliMUONLocalStruct.h:15
 AliMUONLocalStruct.h:16
 AliMUONLocalStruct.h:17
 AliMUONLocalStruct.h:18
 AliMUONLocalStruct.h:19
 AliMUONLocalStruct.h:20
 AliMUONLocalStruct.h:21
 AliMUONLocalStruct.h:22
 AliMUONLocalStruct.h:23
 AliMUONLocalStruct.h:24
 AliMUONLocalStruct.h:25
 AliMUONLocalStruct.h:26
 AliMUONLocalStruct.h:27
 AliMUONLocalStruct.h:28
 AliMUONLocalStruct.h:29
 AliMUONLocalStruct.h:30
 AliMUONLocalStruct.h:31
 AliMUONLocalStruct.h:32
 AliMUONLocalStruct.h:33
 AliMUONLocalStruct.h:34
 AliMUONLocalStruct.h:35
 AliMUONLocalStruct.h:36
 AliMUONLocalStruct.h:37
 AliMUONLocalStruct.h:38
 AliMUONLocalStruct.h:39
 AliMUONLocalStruct.h:40
 AliMUONLocalStruct.h:41
 AliMUONLocalStruct.h:42
 AliMUONLocalStruct.h:43
 AliMUONLocalStruct.h:44
 AliMUONLocalStruct.h:45
 AliMUONLocalStruct.h:46
 AliMUONLocalStruct.h:47
 AliMUONLocalStruct.h:48
 AliMUONLocalStruct.h:49
 AliMUONLocalStruct.h:50
 AliMUONLocalStruct.h:51
 AliMUONLocalStruct.h:52
 AliMUONLocalStruct.h:53
 AliMUONLocalStruct.h:54
 AliMUONLocalStruct.h:55
 AliMUONLocalStruct.h:56
 AliMUONLocalStruct.h:57
 AliMUONLocalStruct.h:58
 AliMUONLocalStruct.h:59
 AliMUONLocalStruct.h:60
 AliMUONLocalStruct.h:61
 AliMUONLocalStruct.h:62
 AliMUONLocalStruct.h:63
 AliMUONLocalStruct.h:64
 AliMUONLocalStruct.h:65
 AliMUONLocalStruct.h:66
 AliMUONLocalStruct.h:67
 AliMUONLocalStruct.h:68
 AliMUONLocalStruct.h:69
 AliMUONLocalStruct.h:70
 AliMUONLocalStruct.h:71
 AliMUONLocalStruct.h:72
 AliMUONLocalStruct.h:73
 AliMUONLocalStruct.h:74
 AliMUONLocalStruct.h:75
 AliMUONLocalStruct.h:76
 AliMUONLocalStruct.h:77
 AliMUONLocalStruct.h:78
 AliMUONLocalStruct.h:79
 AliMUONLocalStruct.h:80
 AliMUONLocalStruct.h:81
 AliMUONLocalStruct.h:82
 AliMUONLocalStruct.h:83
 AliMUONLocalStruct.h:84
 AliMUONLocalStruct.h:85
 AliMUONLocalStruct.h:86
 AliMUONLocalStruct.h:87
 AliMUONLocalStruct.h:88
 AliMUONLocalStruct.h:89
 AliMUONLocalStruct.h:90
 AliMUONLocalStruct.h:91
 AliMUONLocalStruct.h:92
 AliMUONLocalStruct.h:93
 AliMUONLocalStruct.h:94
 AliMUONLocalStruct.h:95
 AliMUONLocalStruct.h:96
 AliMUONLocalStruct.h:97
 AliMUONLocalStruct.h:98
 AliMUONLocalStruct.h:99
 AliMUONLocalStruct.h:100
 AliMUONLocalStruct.h:101
 AliMUONLocalStruct.h:102
 AliMUONLocalStruct.h:103
 AliMUONLocalStruct.h:104
 AliMUONLocalStruct.h:105
 AliMUONLocalStruct.h:106
 AliMUONLocalStruct.h:107
 AliMUONLocalStruct.h:108
 AliMUONLocalStruct.h:109
 AliMUONLocalStruct.h:110
 AliMUONLocalStruct.h:111
 AliMUONLocalStruct.h:112
 AliMUONLocalStruct.h:113
 AliMUONLocalStruct.h:114
 AliMUONLocalStruct.h:115
 AliMUONLocalStruct.h:116
 AliMUONLocalStruct.h:117
 AliMUONLocalStruct.h:118
 AliMUONLocalStruct.h:119
 AliMUONLocalStruct.h:120
 AliMUONLocalStruct.h:121
 AliMUONLocalStruct.h:122
 AliMUONLocalStruct.h:123
 AliMUONLocalStruct.h:124
 AliMUONLocalStruct.h:125
 AliMUONLocalStruct.h:126
 AliMUONLocalStruct.h:127
 AliMUONLocalStruct.h:128
 AliMUONLocalStruct.h:129
 AliMUONLocalStruct.h:130
 AliMUONLocalStruct.h:131
 AliMUONLocalStruct.h:132
 AliMUONLocalStruct.h:133
 AliMUONLocalStruct.h:134
 AliMUONLocalStruct.h:135
 AliMUONLocalStruct.h:136
 AliMUONLocalStruct.h:137
 AliMUONLocalStruct.h:138
 AliMUONLocalStruct.h:139
 AliMUONLocalStruct.h:140
 AliMUONLocalStruct.h:141
 AliMUONLocalStruct.h:142
 AliMUONLocalStruct.h:143
 AliMUONLocalStruct.h:144
 AliMUONLocalStruct.h:145
 AliMUONLocalStruct.h:146
 AliMUONLocalStruct.h:147
 AliMUONLocalStruct.h:148
 AliMUONLocalStruct.h:149
 AliMUONLocalStruct.h:150
 AliMUONLocalStruct.h:151
 AliMUONLocalStruct.h:152
 AliMUONLocalStruct.h:153
 AliMUONLocalStruct.h:154
 AliMUONLocalStruct.h:155
 AliMUONLocalStruct.h:156
 AliMUONLocalStruct.h:157
 AliMUONLocalStruct.h:158
 AliMUONLocalStruct.h:159
 AliMUONLocalStruct.h:160
 AliMUONLocalStruct.h:161
 AliMUONLocalStruct.h:162
 AliMUONLocalStruct.h:163
 AliMUONLocalStruct.h:164
 AliMUONLocalStruct.h:165
 AliMUONLocalStruct.h:166
 AliMUONLocalStruct.h:167
 AliMUONLocalStruct.h:168