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 */
9 /// \class AliMUONRegHeader
10 /// \brief MUON regional header for trigger
12 // Author Christian Finck
15 #include <TClonesArray.h>
17 class AliMUONLocalStruct;
19 class AliMUONRegHeader : public TObject{
23 AliMUONRegHeader(TRootIOCtor* dummy);
24 AliMUONRegHeader(const AliMUONRegHeader& event);
25 AliMUONRegHeader& operator=(const AliMUONRegHeader& event);
27 virtual ~AliMUONRegHeader();
30 UInt_t GetDarcWord() const {return fDarcWord;}
31 /// Return first reg word
32 UInt_t GetWord() const {return fWord;}
33 /// Return regional input
34 UInt_t GetInput(Int_t n) const {return fInput[n];}
36 UShort_t GetL0() const {return fL0 & 0xFFFF;}
38 UShort_t GetMask() const {return fMask & 0xFFFF;}
40 //word: phys type:1, reset: 6, serialNb:5, Id:4, version: 8, regional output:8
41 //true for phys, false for soft
42 /// Return RegPhysFlag
43 Bool_t GetRegPhysFlag() const {return (fWord & 0x80000000);}
45 UChar_t GetResetNb() const {return (UChar_t)(fWord >> 25) & 0x3F;}
47 UChar_t GetSerialNb() const {return (UChar_t)(fWord >> 20) & 0x1F;}
49 UChar_t GetId() const {return (UChar_t)(fWord >> 16) & 0x0F;}
51 UChar_t GetVersion() const {return (UChar_t)(fWord >> 8) & 0xFF;}
53 UChar_t GetOutput() const {return (UChar_t)(fWord & 0xFF);}
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
58 UShort_t GetErrorBits() const {return (UShort_t)(fDarcWord >> 22) & 0x3FF;}
60 UChar_t GetFPGANumber() const {return (UChar_t) (fDarcWord >> 19) & 0x7;}
61 /// Return DarcPhysFlag
62 Bool_t GetDarcPhysFlag() const {return (fDarcWord & 0x8000);}
63 /// Return PresentFlag
64 Bool_t GetPresentFlag() const {return (fDarcWord & 0x4000);}
65 /// Return RamNotFullFlag
66 Bool_t GetRamNotFullFlag() const {return (fDarcWord & 0x2000);}
67 /// Return RamNotEmptyFlag
68 Bool_t GetRamNotEmptyFlag() const {return (fDarcWord & 0x1000);}
69 /// Return L2RejStatus
70 Bool_t GetL2RejStatus() const {return (fDarcWord & 0x800);}
71 /// Return L2AccStatus
72 Bool_t GetL2AccStatus() const {return (fDarcWord & 0x400);}
74 Bool_t GetL1Status() const {return (fDarcWord & 0x200);}
76 Bool_t GetL0Status() const {return (fDarcWord & 0x100);}
78 UChar_t GetEventInRam() const {return (UChar_t) (fDarcWord >> 4) & 0x4;}
80 UChar_t GetBusy() const {return (UChar_t) (fDarcWord) & 0x4;}
83 void SetDarcWord(UInt_t w) {fDarcWord = w;}
84 /// Set first reg word
85 void SetWord(UInt_t w) {fWord = w;}
86 /// Set local mask ("poids faible" 16 bits)
87 void SetMask(UShort_t m) {fMask = m;}
89 void SetL0(UShort_t l) {fL0 = (l & 0xFFFF);}
90 /// Set regional input
91 void SetInput(UInt_t in, Int_t n) {fInput[n] = in;}
94 /// Return header length in word
95 Int_t GetHeaderLength() const {return fgkHeaderLength;}
96 /// Return end of regional info word
97 UInt_t GetEndOfReg() const {return fgkEndOfReg;}
99 UInt_t GetErrorWord() const {return fgkErrorWord;}
102 UInt_t* GetHeader() {return &fDarcWord;}
105 /// Return regional clock
106 UInt_t GetClock() const {return fClk;}
107 /// Return regional ouput
108 const UInt_t* GetScaler() const {return fScaler;}
109 /// Return regional hold (dead time)
110 UInt_t GetHold() const {return fHold;}
113 UInt_t* GetScalers() {return &fClk;}
115 /// get scaler length
116 Int_t GetScalerLength() const {return fgkScalerLength;}
118 /// set random numbers to fill variable
119 void SetScalersNumbers();
122 TClonesArray* GetLocalArray() const {return fLocalArray;}
125 Int_t GetLocalEntries() const {return fLocalArray->GetEntriesFast();}
128 AliMUONLocalStruct* GetLocalEntry(Int_t i) const {
129 return (AliMUONLocalStruct*)fLocalArray->At(i);}
132 void Clear(Option_t* opt);
137 UInt_t fDarcWord; ///< darc word
138 UInt_t fWord; ///< first reg word
139 UInt_t fInput[2]; ///< regional input
140 UShort_t fMask; ///< local mask ("poids faible" 16 bits)
141 UShort_t fL0; ///< L0 counter (16 bits)
143 // regional card scalers
144 UInt_t fClk; ///< regional clock
145 UInt_t fScaler[8]; ///< regional ouput
146 UInt_t fHold; ///< regional hold (dead time)
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
151 static const UInt_t fgkErrorWord; ///< error word when a regional board is missing
153 TClonesArray* fLocalArray; ///< array of local structure
155 ClassDef(AliMUONRegHeader,4) //MUON regional header for trigger