]>
Commit | Line | Data |
---|---|---|
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 | /// | |
12 | /// \author Christian Finck | |
13 | ||
14 | #include <TObject.h> | |
dfba12ee | 15 | #include <TMath.h> |
32def6aa | 16 | |
17 | class AliMUONLocalStruct : public TObject{ | |
18 | ||
19 | public: | |
20 | AliMUONLocalStruct(); | |
21 | AliMUONLocalStruct(const AliMUONLocalStruct& event); | |
22 | AliMUONLocalStruct& operator=(const AliMUONLocalStruct& event); | |
23 | ||
24 | ||
25 | virtual ~AliMUONLocalStruct(){;} | |
26 | ||
27 | // local board info | |
28 | UInt_t GetData(Int_t n) const {return fData[n];} | |
29 | ||
30 | UShort_t GetX2() const {return (fData[0] >> 16) & 0xFFFF;} | |
31 | UShort_t GetX1() const {return (fData[0]) & 0xFFFF;} | |
32 | UShort_t GetX4() const {return (fData[1] >> 16) & 0xFFFF;} | |
33 | UShort_t GetX3() const {return (fData[1]) & 0xFFFF;} | |
34 | ||
35 | UShort_t GetY2() const {return (fData[2] >> 16) & 0xFFFF;} | |
36 | UShort_t GetY1() const {return (fData[2]) & 0xFFFF;} | |
37 | UShort_t GetY4() const {return (fData[3] >> 16) & 0xFFFF;} | |
38 | UShort_t GetY3() const {return (fData[3]) & 0xFFFF;} | |
39 | ||
b6ab2009 | 40 | UChar_t GetId() const {return fData[4] >> 19 & 0xF;} |
41 | UChar_t GetDec() const {return fData[4] >> 15 & 0xF;} | |
42 | UChar_t GetTriggerY() const {return fData[4] >> 14 & 0x1;} | |
43 | UChar_t GetYPos() const {return fData[4] >> 10 & 0xF;} | |
44 | UChar_t GetXDev() const {return fData[4] >> 5 & 0x1F;} | |
45 | UChar_t GetXPos() const {return fData[4] & 0x1F;} | |
32def6aa | 46 | |
47 | Int_t GetLpt() const {return (GetDec() & 0x3);} | |
48 | Int_t GetHpt() const {return (GetDec() >> 2) & 0x3;} | |
49 | ||
50 | void SetData(UInt_t d, Int_t n) {fData[n] = d;} | |
51 | ||
52 | UInt_t* GetData() {return &fData[0];} | |
53 | ||
54 | // Scaler methods | |
55 | UInt_t GetL0() const {return fL0;} | |
56 | UInt_t GetHold() const {return fHold;} | |
57 | UInt_t GetClock() const {return fClk;} | |
58 | UChar_t GetSwitch() const {return (fEOS >> 2) & 0x3FF;} | |
59 | UChar_t GetComptXY() const {return fEOS & 3;} | |
60 | ||
dfba12ee | 61 | UShort_t GetXY1(Int_t n) const {return (n % 2 == 0) ? |
62 | (fScaler[TMath::Nint(Float_t(n/2))] & 0xFFFF) : | |
63 | (fScaler[TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;} | |
64 | ||
65 | UShort_t GetXY2(Int_t n) const {return (n % 2 == 0) ? | |
66 | (fScaler[8 + TMath::Nint(Float_t(n/2))] & 0xFFFF) : | |
67 | (fScaler[8 + TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;} | |
68 | ||
69 | UShort_t GetXY3(Int_t n) const {return (n % 2 == 0) ? | |
70 | (fScaler[8*2 + TMath::Nint(Float_t(n/2))] & 0xFFFF) : | |
71 | (fScaler[8*2 + TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;} | |
72 | ||
73 | UShort_t GetXY4(Int_t n) const {return (n % 2 == 0) ? | |
74 | (fScaler[8*3 + TMath::Nint(Float_t(n/2))] & 0xFFFF) : | |
75 | (fScaler[8*3 + TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;} | |
32def6aa | 76 | |
77 | UInt_t* GetScalers() {return &fL0;} | |
78 | ||
79 | // get length | |
80 | Int_t GetScalerLength() const {return fgkScalerLength;} | |
81 | Int_t GetLength() const {return fgkLength;} | |
82 | UInt_t GetEndOfLocal() const {return fgkEndOfLocal;} | |
b2e46925 | 83 | UInt_t GetDisableWord() const {return fgkDisableWord;} |
32def6aa | 84 | |
85 | // set random numbers to fill variable | |
86 | void SetScalersNumbers(); | |
87 | ||
88 | private: | |
89 | ||
90 | // local info | |
829425a5 | 91 | UInt_t fData[5]; ///< local data |
32def6aa | 92 | |
93 | // local card scalers | |
829425a5 | 94 | UInt_t fL0; ///< local L0 |
95 | UInt_t fHold; ///< local hold (dead time) | |
96 | UInt_t fClk; ///< local clock | |
32def6aa | 97 | |
829425a5 | 98 | UInt_t fLPtNTrig; ///< local low Pt no trigger |
99 | UInt_t fHPtNTrig; ///< local high Pt no trigger | |
32def6aa | 100 | |
829425a5 | 101 | UInt_t fLPtRTrig; ///< local low Pt right trigger |
102 | UInt_t fHPtRTrig; ///< local high Pt right trigger | |
32def6aa | 103 | |
829425a5 | 104 | UInt_t fLPtLTrig; ///< local low Pt left trigger |
105 | UInt_t fHPtLTrig; ///< local high Pt left trigger | |
32def6aa | 106 | |
829425a5 | 107 | UInt_t fLPtSTrig; ///< local low Pt straight trigger |
108 | UInt_t fHPtSTrig; ///< local high Pt straight trigger | |
32def6aa | 109 | |
829425a5 | 110 | UInt_t fScaler[8*4]; ///< local data |
111 | UInt_t fEOS; ///< contains switches conf. & flag for reading X (0) or Y (1) in fScaler | |
112 | UInt_t fReset; ///< reset signal | |
32def6aa | 113 | |
829425a5 | 114 | static const Int_t fgkLength; ///< local info length in word |
115 | static const Int_t fgkScalerLength; ///< scaler length in word | |
116 | static const UInt_t fgkEndOfLocal; ///< end of local info word | |
b6ab2009 | 117 | static const UInt_t fgkDisableWord; ///< Word for "empty" slots |
32def6aa | 118 | |
119 | ClassDef(AliMUONLocalStruct,3) | |
120 | }; | |
121 | #endif |