]>
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 | /// | |
12 | /// \author Christian Finck | |
13 | ||
14 | #include <TObject.h> | |
15 | #include <TClonesArray.h> | |
16 | ||
17 | class AliMUONLocalStruct; | |
18 | ||
19 | class AliMUONRegHeader : public TObject{ | |
20 | ||
21 | public: | |
22 | AliMUONRegHeader(); | |
23 | AliMUONRegHeader(const AliMUONRegHeader& event); | |
24 | AliMUONRegHeader& operator=(const AliMUONRegHeader& event); | |
25 | ||
26 | virtual ~AliMUONRegHeader(); | |
27 | ||
00f56161 | 28 | UInt_t GetDarcWord() const {return fDarcWord;} |
32def6aa | 29 | UInt_t GetWord() const {return fWord;} |
30 | UInt_t GetInput(Int_t n) const {return fInput[n];} | |
d622a0ec | 31 | UInt_t GetL0() const {return ((fL0Mask >> 16) & 0xFFFF);} |
32 | UInt_t GetMask() const {return (fL0Mask & 0xFFFF);} | |
32def6aa | 33 | |
d622a0ec | 34 | //word: phys type:1, reset: 6, serialNb:5, Id:4, version: 8, regional output:8 |
251b70b4 | 35 | //true for phys, false for soft |
36 | Bool_t GetRegPhysFlag() const {return (fWord & 0x80000000);} | |
b6ab2009 | 37 | UChar_t GetResetNb() const {return (UChar_t)(fWord >> 25) & 0x20;} |
38 | UChar_t GetSerialNb() const {return (UChar_t)(fWord >> 20) & 0x1F;} | |
39 | UChar_t GetId() const {return (UChar_t)(fWord >> 16) & 0x0F;} | |
40 | UChar_t GetVersion() const {return (UChar_t)(fWord >> 8) & 0xFF;} | |
41 | UChar_t GetOutput() const {return (UChar_t)(fWord & 0xFF);} | |
251b70b4 | 42 | |
43 | //Darc Status: error:10, #fpag:3, MBZ:3, phys type:1, present:1, not_full:1 | |
44 | // not_empty:1, L2Rej:1, L2Acc:1, L1:1, L0:1, #evt:4, busy:4 | |
45 | UShort_t GetErrorBits() const {return (UShort_t)(fDarcWord >> 21) & 0x3FF;} | |
b6ab2009 | 46 | UChar_t GetFPGANumber() const {return (UChar_t) (fDarcWord >> 18) & 0x7;} |
251b70b4 | 47 | Bool_t GetDarcPhysFlag() const {return (fDarcWord & 0x1000);} |
48 | Bool_t GetPresentFlag() const {return (fDarcWord & 0x800);} | |
49 | Bool_t GetRamNotFullFlag() const {return (fDarcWord & 0x400);} | |
50 | Bool_t GetRamNotEmptyFlag() const {return (fDarcWord & 0x200);} | |
51 | Bool_t GetL2RejStatus() const {return (fDarcWord & 0x100);} | |
52 | Bool_t GetL2AccStatus() const {return (fDarcWord & 0x80);} | |
53 | Bool_t GetL1Status() const {return (fDarcWord & 0x40);} | |
54 | Bool_t GetL0Status() const {return (fDarcWord & 0x20);} | |
b6ab2009 | 55 | UChar_t GetEventInRam() const {return (UChar_t) (fDarcWord >> 4) & 0x4;} |
56 | UChar_t GetBusy() const {return (UChar_t) (fDarcWord) & 0x4;} | |
32def6aa | 57 | |
00f56161 | 58 | void SetDarcWord(UInt_t w) {fDarcWord = w;} |
32def6aa | 59 | void SetWord(UInt_t w) {fWord = w;} |
60 | void SetInput(UInt_t in, Int_t n) {fInput[n] = in;} | |
61 | ||
62 | Int_t GetHeaderLength() const {return fgkHeaderLength;} | |
63 | UInt_t GetEndOfReg() const {return fgkEndOfReg;} | |
64 | ||
65 | ||
00f56161 | 66 | UInt_t* GetHeader() {return &fDarcWord;} |
32def6aa | 67 | |
68 | // scalar methods | |
32def6aa | 69 | UInt_t GetClock() const {return fClk;} |
70 | const UInt_t* GetScaler() const {return fScaler;} | |
71 | UInt_t GetHold() const {return fHold;} | |
72 | ||
d622a0ec | 73 | UInt_t* GetScalers() {return &fClk;} |
32def6aa | 74 | |
75 | // get scaler length | |
76 | Int_t GetScalerLength() const {return fgkScalerLength;} | |
77 | ||
78 | // set random numbers to fill variable | |
79 | void SetScalersNumbers(); | |
80 | ||
81 | // get TClonesArray | |
82 | TClonesArray* GetLocalArray() const {return fLocalArray;} | |
83 | ||
84 | // get entries | |
85 | Int_t GetLocalEntries() const {return fLocalArray->GetEntriesFast();} | |
86 | ||
87 | // get entry | |
88 | AliMUONLocalStruct* GetLocalEntry(Int_t i) const { | |
89 | return (AliMUONLocalStruct*)fLocalArray->At(i);} | |
90 | ||
91 | // clear | |
92 | void Clear(Option_t* opt); | |
93 | ||
94 | private: | |
95 | ||
96 | // regional header | |
00f56161 | 97 | UInt_t fDarcWord; ///< darc word |
98 | UInt_t fWord; ///< first reg word | |
829425a5 | 99 | UInt_t fInput[2]; ///< regional input |
d622a0ec | 100 | UInt_t fL0Mask; ///< L0 counter (16 bits) and local mask (16 bits) |
32def6aa | 101 | |
102 | // regional card scalers | |
829425a5 | 103 | UInt_t fClk; ///< regional clock |
104 | UInt_t fScaler[8]; ///< regional ouput | |
105 | UInt_t fHold; ///< regional hold (dead time) | |
32def6aa | 106 | |
829425a5 | 107 | static const Int_t fgkScalerLength; ///< length of regional scaler in word |
108 | static const Int_t fgkHeaderLength; ///< header length in word | |
109 | static const UInt_t fgkEndOfReg; ///< end of regional info word | |
32def6aa | 110 | |
829425a5 | 111 | TClonesArray* fLocalArray; ///< array of local structure |
32def6aa | 112 | |
113 | ClassDef(AliMUONRegHeader,3) | |
114 | }; | |
115 | #endif |