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