]>
Commit | Line | Data |
---|---|---|
32def6aa | 1 | #ifndef ALIMUONREGHEADER_H |
2 | #define ALIMUONREGHEADER_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 AliMUONRegHeader | |
10 | /// \brief MUON regional header for trigger | |
11 | /// | |
78649106 | 12 | // Author Christian Finck |
32def6aa | 13 | |
14 | #include <TObject.h> | |
13425a75 | 15 | #include <TClonesArray.h> |
32def6aa | 16 | |
17 | class AliMUONLocalStruct; | |
18 | ||
19 | class AliMUONRegHeader : public TObject{ | |
20 | ||
21 | public: | |
22 | AliMUONRegHeader(); | |
ce350193 | 23 | AliMUONRegHeader(TRootIOCtor* dummy); |
32def6aa | 24 | AliMUONRegHeader(const AliMUONRegHeader& event); |
25 | AliMUONRegHeader& operator=(const AliMUONRegHeader& event); | |
26 | ||
27 | virtual ~AliMUONRegHeader(); | |
28 | ||
71a2d3aa | 29 | /// Return darc word |
bebe0279 | 30 | UInt_t GetDarcWord() const {return fDarcWord;} |
71a2d3aa | 31 | /// Return first reg word |
bebe0279 | 32 | UInt_t GetWord() const {return fWord;} |
71a2d3aa | 33 | /// Return regional input |
bebe0279 | 34 | UInt_t GetInput(Int_t n) const {return fInput[n];} |
71a2d3aa | 35 | /// Return L0 |
bebe0279 | 36 | UShort_t GetL0() const {return fL0 & 0xFFFF;} |
71a2d3aa | 37 | /// Return mask |
bebe0279 | 38 | UShort_t GetMask() const {return fMask & 0xFFFF;} |
32def6aa | 39 | |
d622a0ec | 40 | //word: phys type:1, reset: 6, serialNb:5, Id:4, version: 8, regional output:8 |
251b70b4 | 41 | //true for phys, false for soft |
71a2d3aa | 42 | /// Return RegPhysFlag |
bebe0279 | 43 | Bool_t GetRegPhysFlag() const {return (fWord & 0x80000000);} |
71a2d3aa | 44 | /// Return ResetNb |
f9f2650d | 45 | UChar_t GetResetNb() const {return (UChar_t)(fWord >> 25) & 0x3F;} |
71a2d3aa | 46 | /// Return SerialNb |
b6ab2009 | 47 | UChar_t GetSerialNb() const {return (UChar_t)(fWord >> 20) & 0x1F;} |
71a2d3aa | 48 | /// Return Id |
b6ab2009 | 49 | UChar_t GetId() const {return (UChar_t)(fWord >> 16) & 0x0F;} |
71a2d3aa | 50 | /// Return Version |
b6ab2009 | 51 | UChar_t GetVersion() const {return (UChar_t)(fWord >> 8) & 0xFF;} |
71a2d3aa | 52 | /// Return Output |
b6ab2009 | 53 | UChar_t GetOutput() const {return (UChar_t)(fWord & 0xFF);} |
251b70b4 | 54 | |
55 | //Darc Status: error:10, #fpag:3, MBZ:3, phys type:1, present:1, not_full:1 | |
56 | // not_empty:1, L2Rej:1, L2Acc:1, L1:1, L0:1, #evt:4, busy:4 | |
71a2d3aa | 57 | /// Return ErrorBits |
f9f2650d | 58 | UShort_t GetErrorBits() const {return (UShort_t)(fDarcWord >> 22) & 0x3FF;} |
71a2d3aa | 59 | /// Return FPGANumber |
f9f2650d | 60 | UChar_t GetFPGANumber() const {return (UChar_t) (fDarcWord >> 19) & 0x7;} |
71a2d3aa | 61 | /// Return DarcPhysFlag |
f9f2650d | 62 | Bool_t GetDarcPhysFlag() const {return (fDarcWord & 0x8000);} |
71a2d3aa | 63 | /// Return PresentFlag |
f9f2650d | 64 | Bool_t GetPresentFlag() const {return (fDarcWord & 0x4000);} |
71a2d3aa | 65 | /// Return RamNotFullFlag |
f9f2650d | 66 | Bool_t GetRamNotFullFlag() const {return (fDarcWord & 0x2000);} |
71a2d3aa | 67 | /// Return RamNotEmptyFlag |
f9f2650d | 68 | Bool_t GetRamNotEmptyFlag() const {return (fDarcWord & 0x1000);} |
71a2d3aa | 69 | /// Return L2RejStatus |
f9f2650d | 70 | Bool_t GetL2RejStatus() const {return (fDarcWord & 0x800);} |
71a2d3aa | 71 | /// Return L2AccStatus |
f9f2650d | 72 | Bool_t GetL2AccStatus() const {return (fDarcWord & 0x400);} |
71a2d3aa | 73 | /// Return L1Status |
f9f2650d | 74 | Bool_t GetL1Status() const {return (fDarcWord & 0x200);} |
71a2d3aa | 75 | /// Return L0Status |
f9f2650d | 76 | Bool_t GetL0Status() const {return (fDarcWord & 0x100);} |
71a2d3aa | 77 | /// Return EventInRam |
b6ab2009 | 78 | UChar_t GetEventInRam() const {return (UChar_t) (fDarcWord >> 4) & 0x4;} |
71a2d3aa | 79 | /// Return Busy |
b6ab2009 | 80 | UChar_t GetBusy() const {return (UChar_t) (fDarcWord) & 0x4;} |
32def6aa | 81 | |
71a2d3aa | 82 | /// Set darc word |
00f56161 | 83 | void SetDarcWord(UInt_t w) {fDarcWord = w;} |
71a2d3aa | 84 | /// Set first reg word |
bebe0279 | 85 | void SetWord(UInt_t w) {fWord = w;} |
71a2d3aa | 86 | /// Set local mask ("poids faible" 16 bits) |
bebe0279 | 87 | void SetMask(UShort_t m) {fMask = m;} |
71a2d3aa | 88 | /// Set L0 |
bebe0279 | 89 | void SetL0(UShort_t l) {fL0 = (l & 0xFFFF);} |
71a2d3aa | 90 | /// Set regional input |
32def6aa | 91 | void SetInput(UInt_t in, Int_t n) {fInput[n] = in;} |
bebe0279 | 92 | |
93 | ||
71a2d3aa | 94 | /// Return header length in word |
32def6aa | 95 | Int_t GetHeaderLength() const {return fgkHeaderLength;} |
71a2d3aa | 96 | /// Return end of regional info word |
32def6aa | 97 | UInt_t GetEndOfReg() const {return fgkEndOfReg;} |
9d14fb2e | 98 | /// Return error word |
99 | UInt_t GetErrorWord() const {return fgkErrorWord;} | |
32def6aa | 100 | |
71a2d3aa | 101 | /// Return header |
00f56161 | 102 | UInt_t* GetHeader() {return &fDarcWord;} |
32def6aa | 103 | |
104 | // scalar methods | |
71a2d3aa | 105 | /// Return regional clock |
32def6aa | 106 | UInt_t GetClock() const {return fClk;} |
71a2d3aa | 107 | /// Return regional ouput |
32def6aa | 108 | const UInt_t* GetScaler() const {return fScaler;} |
71a2d3aa | 109 | /// Return regional hold (dead time) |
32def6aa | 110 | UInt_t GetHold() const {return fHold;} |
111 | ||
71a2d3aa | 112 | /// Return scalers |
d622a0ec | 113 | UInt_t* GetScalers() {return &fClk;} |
32def6aa | 114 | |
71a2d3aa | 115 | /// get scaler length |
32def6aa | 116 | Int_t GetScalerLength() const {return fgkScalerLength;} |
117 | ||
71a2d3aa | 118 | /// set random numbers to fill variable |
32def6aa | 119 | void SetScalersNumbers(); |
120 | ||
71a2d3aa | 121 | /// get TClonesArray |
32def6aa | 122 | TClonesArray* GetLocalArray() const {return fLocalArray;} |
123 | ||
71a2d3aa | 124 | /// get entries |
32def6aa | 125 | Int_t GetLocalEntries() const {return fLocalArray->GetEntriesFast();} |
126 | ||
71a2d3aa | 127 | /// get entry |
32def6aa | 128 | AliMUONLocalStruct* GetLocalEntry(Int_t i) const { |
129 | return (AliMUONLocalStruct*)fLocalArray->At(i);} | |
130 | ||
131 | // clear | |
132 | void Clear(Option_t* opt); | |
133 | ||
134 | private: | |
135 | ||
136 | // regional header | |
00f56161 | 137 | UInt_t fDarcWord; ///< darc word |
138 | UInt_t fWord; ///< first reg word | |
829425a5 | 139 | UInt_t fInput[2]; ///< regional input |
bebe0279 | 140 | UShort_t fMask; ///< local mask ("poids faible" 16 bits) |
141 | UShort_t fL0; ///< L0 counter (16 bits) | |
32def6aa | 142 | |
143 | // regional card scalers | |
829425a5 | 144 | UInt_t fClk; ///< regional clock |
145 | UInt_t fScaler[8]; ///< regional ouput | |
146 | UInt_t fHold; ///< regional hold (dead time) | |
32def6aa | 147 | |
829425a5 | 148 | static const Int_t fgkScalerLength; ///< length of regional scaler in word |
149 | static const Int_t fgkHeaderLength; ///< header length in word | |
150 | static const UInt_t fgkEndOfReg; ///< end of regional info word | |
9d14fb2e | 151 | static const UInt_t fgkErrorWord; ///< error word when a regional board is missing |
152 | ||
829425a5 | 153 | TClonesArray* fLocalArray; ///< array of local structure |
32def6aa | 154 | |
9d14fb2e | 155 | ClassDef(AliMUONRegHeader,4) //MUON regional header for trigger |
32def6aa | 156 | }; |
157 | #endif |