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