]> git.uio.no Git - u/mrichter/AliRoot.git/blob - VZERO/AliVZEROTriggerData.h
Copy constructor and assignment operator
[u/mrichter/AliRoot.git] / VZERO / AliVZEROTriggerData.h
1 #ifndef ALIVZEROTRIGGERDATA_H\r
2 #define ALIVZEROTRIGGERDATA_H\r
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights\r
4  * reserved. \r
5  *\r
6  * See cxx source for full Copyright notice                               \r
7  */\r
8 #include "AliVZERODataFEE.h"\r
9 \r
10 #include <TNamed.h>\r
11 \r
12 class AliVZEROTriggerData : public TNamed {\r
13 public:\r
14         AliVZEROTriggerData();\r
15         AliVZEROTriggerData(Int_t nRun, UInt_t startTime, UInt_t endTime);\r
16         ~AliVZEROTriggerData();\r
17         \r
18         void FillData(AliVZERODataFEE * data);\r
19 \r
20         // ----- Setters -----\r
21 \r
22         void SetClk1Win1(UShort_t* clks);\r
23         void SetClk1Win1(UShort_t clk, Int_t board);\r
24         void SetClk2Win1(UShort_t* clks);\r
25         void SetClk2Win1(UShort_t clk, Int_t board);\r
26         \r
27         void SetClk1Win2(UShort_t* clks);\r
28         void SetClk1Win2(UShort_t clk, Int_t board);\r
29         void SetClk2Win2(UShort_t* clks);\r
30         void SetClk2Win2(UShort_t clk, Int_t board);\r
31         \r
32         void SetDelayClk1Win1(UShort_t* delays);\r
33         void SetDelayClk1Win1(UShort_t delay, Int_t board);\r
34         void SetDelayClk2Win1(UShort_t* delays);\r
35         void SetDelayClk2Win1(UShort_t delay, Int_t board);\r
36         \r
37         void SetDelayClk1Win2(UShort_t* delays);\r
38         void SetDelayClk1Win2(UShort_t delay, Int_t board);\r
39         void SetDelayClk2Win2(UShort_t* delays);\r
40         void SetDelayClk2Win2(UShort_t delay, Int_t board);\r
41         \r
42         void SetLatchWin1(UShort_t *latchs);\r
43         void SetLatchWin1(UShort_t latch, Int_t board);\r
44         void SetLatchWin2(UShort_t *latchs);\r
45         void SetLatchWin2(UShort_t latch, Int_t board);\r
46         \r
47         void SetResetWin1(UShort_t *resets);\r
48         void SetResetWin1(UShort_t reset, Int_t board);\r
49         void SetResetWin2(UShort_t *resets);\r
50         void SetResetWin2(UShort_t reset, Int_t board);\r
51         \r
52         void SetPedestalSubtraction(Bool_t *peds);\r
53         void SetPedestalSubtraction(Bool_t ped, Int_t board);\r
54         \r
55         void SetBBAThreshold(UShort_t th) {fBBAThreshold = th;};\r
56         void SetBBCThreshold(UShort_t th) {fBBCThreshold = th;};\r
57 \r
58         void SetBGAThreshold(UShort_t th) {fBGAThreshold = th;};\r
59         void SetBGCThreshold(UShort_t th) {fBGCThreshold = th;};\r
60 \r
61         void SetBBAForBGThreshold(UShort_t th) {fBBAForBGThreshold = th;};\r
62         void SetBBCForBGThreshold(UShort_t th) {fBBCForBGThreshold = th;};\r
63         \r
64         void SetCentralityV0AThrLow(UShort_t th) {fCentralityVOAThrLow = th;};\r
65         void SetCentralityV0AThrHigh(UShort_t th) {fCentralityVOAThrHigh = th;};\r
66         \r
67         void SetCentralityV0CThrLow(UShort_t th) {fCentralityVOCThrLow = th;};\r
68         void SetCentralityV0CThrHigh(UShort_t th) {fCentralityVOCThrHigh = th;};\r
69         \r
70         void SetMultV0AThrLow(UShort_t th) {fMultV0AThrLow = th;};\r
71         void SetMultV0AThrHigh(UShort_t th) {fMultV0AThrHigh = th;};\r
72         \r
73         void SetMultV0CThrLow(UShort_t th) {fMultV0CThrLow = th;};\r
74         void SetMultV0CThrHigh(UShort_t th) {fMultV0CThrHigh = th;};\r
75         \r
76         void SetTriggerSelected(UShort_t trigger, Int_t output);\r
77         \r
78         void SetEnableCharge(Bool_t val, Int_t board, Int_t channel);\r
79         void SetEnableTiming(Bool_t val, Int_t board, Int_t channel);\r
80         void SetDiscriThr(UShort_t val, Int_t board, Int_t channel);\r
81         void SetDelayHit(UShort_t val, Int_t board, Int_t channel);\r
82         void SetPedestal(UShort_t val, Int_t integrator, Int_t board, Int_t channel);\r
83         void SetPedestalCut(UShort_t val, Int_t integrator, Int_t board, Int_t channel);\r
84 \r
85         \r
86         // ----- Getters -----\r
87         \r
88         UShort_t * GetClk1Win1() const {return (UShort_t*)fClk1Win1;};\r
89         UShort_t GetClk1Win1(Int_t board ) const {return (board<kNCIUBoards?fClk1Win1[board]:0);};\r
90         UShort_t * GetClk2Win1() const {return (UShort_t*)fClk2Win1;};\r
91         UShort_t GetClk2Win1(Int_t board ) const {return (board<kNCIUBoards?fClk2Win1[board]:0);};\r
92 \r
93         UShort_t * GetClk1Win2() const {return (UShort_t*)fClk1Win2;};\r
94         UShort_t GetClk1Win2(Int_t board ) const {return (board<kNCIUBoards?fClk1Win2[board]:0);};\r
95         UShort_t * GetClk2Win2() const {return (UShort_t*)fClk2Win2;};\r
96         UShort_t GetClk2Win2(Int_t board ) const {return (board<kNCIUBoards?fClk2Win2[board]:0);};\r
97 \r
98         UShort_t * GetDelayClk1Win1() const {return (UShort_t*)fDelayClk1Win1;};\r
99         UShort_t GetDelayClk1Win1(Int_t board ) const {return (board<kNCIUBoards?fDelayClk1Win1[board]:0);};\r
100         UShort_t * GetDelayClk2Win1() const {return (UShort_t*)fDelayClk2Win1;};\r
101         UShort_t GetDelayClk2Win1(Int_t board ) const {return (board<kNCIUBoards?fDelayClk2Win1[board]:0);};\r
102         \r
103         UShort_t * GetDelayClk1Win2() const {return (UShort_t*)fDelayClk1Win2;};\r
104         UShort_t GetDelayClk1Win2(Int_t board ) const {return (board<kNCIUBoards?fDelayClk1Win2[board]:0);};\r
105         UShort_t * GetDelayClk2Win2() const {return (UShort_t*)fDelayClk2Win2;};\r
106         UShort_t GetDelayClk2Win2(Int_t board ) const {return (board<kNCIUBoards?fDelayClk2Win2[board]:0);};\r
107         \r
108         UShort_t * GetLatchWin1() const {return (UShort_t*)fLatchWin1;};\r
109         UShort_t GetLatchWin1(Int_t board ) const  {return (board<kNCIUBoards?fLatchWin1[board]:0);};\r
110         UShort_t * GetLatchWin2() const {return (UShort_t*)fLatchWin2;};\r
111         UShort_t GetLatchWin2(Int_t board ) const  {return (board<kNCIUBoards?fLatchWin2[board]:0);};\r
112         \r
113         UShort_t * GetResetWin1() const {return (UShort_t*)fResetWin1;};\r
114         UShort_t GetResetWin1(Int_t board ) const  {return (board<kNCIUBoards?fResetWin1[board]:0);};\r
115         UShort_t * GetResetWin2() const {return (UShort_t*)fResetWin2;};\r
116         UShort_t GetResetWin2(Int_t board ) const  {return (board<kNCIUBoards?fResetWin2[board]:0);};\r
117         \r
118         Bool_t * GetPedestalSubtraction() const {return (Bool_t*) fPedestalSubtraction;};\r
119         Bool_t GetPedestalSubtraction(Int_t board ) const  {return (board<kNCIUBoards?fPedestalSubtraction[board]:0);};\r
120 \r
121         UShort_t GetBBAThreshold() const {return fBBAThreshold;};\r
122         UShort_t GetBBCThreshold() const {return fBBCThreshold;};\r
123 \r
124         UShort_t GetBGAThreshold() const {return fBGAThreshold;};\r
125         UShort_t GetBGCThreshold() const {return fBGCThreshold;};\r
126 \r
127         UShort_t GetBBAForBGThreshold() const {return fBBAForBGThreshold;};\r
128         UShort_t GetBBCForBGThreshold() const {return fBBCForBGThreshold;};\r
129         \r
130         UShort_t GetCentralityV0AThrLow() const {return fCentralityVOAThrLow;};\r
131         UShort_t GetCentralityV0AThrHigh() const {return fCentralityVOAThrHigh;};\r
132         \r
133         UShort_t GetCentralityV0CThrLow() const {return fCentralityVOCThrLow;};\r
134         UShort_t GetCentralityV0CThrHigh() const {return fCentralityVOCThrHigh;};\r
135 \r
136         UShort_t GetMultV0AThrLow() const {return fMultV0AThrLow;};\r
137         UShort_t GetMultV0AThrHigh() const {return fMultV0AThrHigh;};\r
138 \r
139         UShort_t GetMultV0CThrLow() const {return fMultV0CThrLow;};\r
140         UShort_t GetMultV0CThrHigh() const {return fMultV0CThrHigh;};\r
141 \r
142         UShort_t GetTriggerSelected(Int_t output) const {return (output<kNTriggerOutputs?fTriggerSelected[output]:0);};\r
143         \r
144         Bool_t GetEnableCharge(Int_t board, Int_t channel);\r
145         Bool_t GetEnableTiming(Int_t board, Int_t channel);\r
146         UShort_t GetDiscriThr(Int_t board, Int_t channel);\r
147         UShort_t GetDelayHit(Int_t board, Int_t channel);\r
148         UShort_t GetPedestal(Int_t integrator, Int_t board, Int_t channel);\r
149         UShort_t GetPedestalCut(Int_t integrator, Int_t board, Int_t channel);\r
150 \r
151         enum {\r
152                 kNCIUBoards = AliVZERODataFEE::kNCIUBoards,\r
153                 kNAliases = AliVZERODataFEE::kNAliases,\r
154                 kNTriggerOutputs = 5,\r
155                 kNChannels = 8\r
156         };\r
157         \r
158 private:\r
159         AliVZEROTriggerData(const AliVZEROTriggerData &/*triggerData*/);\r
160         AliVZEROTriggerData& operator= (const AliVZEROTriggerData &/*triggerData*/);\r
161         \r
162         UShort_t fClk1Win1[kNCIUBoards]; //Profil of the Clock 1  of the Window 1 (BB window)\r
163         UShort_t fClk2Win1[kNCIUBoards]; //Profil of the Clock 2  of the Window 1 (BB window)\r
164         UShort_t fClk1Win2[kNCIUBoards]; //Profil of the Clock 1  of the Window 2 (BG window)\r
165         UShort_t fClk2Win2[kNCIUBoards]; //Profil of the Clock 2  of the Window 2 (BG window)\r
166         UShort_t fDelayClk1Win1[kNCIUBoards]; // Delays of the Clock 1  of the Window 1 (BB window)\r
167         UShort_t fDelayClk2Win1[kNCIUBoards]; // Delays of the Clock 2 of the Window 1 (BB window)\r
168         UShort_t fDelayClk1Win2[kNCIUBoards]; // Delays of the Clock 1  of the Window 2 (BG window)\r
169         UShort_t fDelayClk2Win2[kNCIUBoards]; // Delays of the Clock 2 of the Window 2 (BG window)\r
170         UShort_t fLatchWin1[kNCIUBoards]; //Profil of the Clock of the Latch signal of Window 1 (BB window)\r
171         UShort_t fLatchWin2[kNCIUBoards]; //Profil of the Clock of the Latch signal of Window 2 (BG window)\r
172         UShort_t fResetWin1[kNCIUBoards]; //Profil of the Clock of the Reset signal of Window 1 (BB window)\r
173         UShort_t fResetWin2[kNCIUBoards]; //Profil of the Clock of the Reset signal of Window 2 (BG window)\r
174         Bool_t   fPedestalSubtraction[kNCIUBoards]; // Flag to en(dis)able pedestal subtraction before centrality trigger calculation\r
175         UShort_t fBBAThreshold;  // Minimum bias Threshold in number of channel hit for V0A\r
176         UShort_t fBBCThreshold;  // Minimum bias Threshold in number of channel hit for V0C\r
177         UShort_t fBGAThreshold;  // Beam Gas Threshold in number of channel hit for V0A\r
178         UShort_t fBGCThreshold;  // Beam Gas Threshold in number of channel hit for V0C\r
179         UShort_t fBBAForBGThreshold;  // BBA threshold for Beam Gas triggers (i.e. BBA and BGC)\r
180         UShort_t fBBCForBGThreshold;  // BBC threshold for Beam Gas triggers (i.e. BBC and BGA)\r
181         UShort_t fCentralityVOAThrLow;  // Threshold used for centrality triggers (i.e. CTA1 and CTC1)\r
182         UShort_t fCentralityVOAThrHigh; // Threshold used for centrality triggers (i.e. CTA2 and CTC2)\r
183         UShort_t fCentralityVOCThrLow;  // Threshold used for centrality triggers (i.e. CTA1 and CTC1)\r
184         UShort_t fCentralityVOCThrHigh; // Threshold used for centrality triggers (i.e. CTA2 and CTC2)\r
185         UShort_t fMultV0AThrLow;  // Threshold used for multiplicity triggers (i.e. MTA and MTC)\r
186         UShort_t fMultV0AThrHigh; // Threshold used for multiplicity triggers (i.e. MTA and MTC)\r
187         UShort_t fMultV0CThrLow;  // Threshold used for multiplicity triggers (i.e. MTA and MTC)\r
188         UShort_t fMultV0CThrHigh; // Threshold used for multiplicity triggers (i.e. MTA and MTC)\r
189         UShort_t fTriggerSelected[kNTriggerOutputs]; // Triggers selected on the 5 outputs to CTP\r
190         Bool_t   fEnableCharge[kNCIUBoards][kNChannels]; // Flag to know is a channel is participating to the Charge triggers\r
191         Bool_t   fEnableTiming[kNCIUBoards][kNChannels]; // Flag to know is a channel is participating to the Timing triggers\r
192         UShort_t fDiscriThr[kNCIUBoards][kNChannels]; // Threshold of each discriminator\r
193         UShort_t fDelayHit[kNCIUBoards][kNChannels]; // Individual delays of each channel \r
194         UShort_t fPedestalOdd[kNCIUBoards][kNChannels]; // Pedestals for the Odd integrators\r
195         UShort_t fPedestalEven[kNCIUBoards][kNChannels]; // Pedestals for the Even integrators\r
196         UShort_t fPedestalCutOdd[kNCIUBoards][kNChannels]; // Pedestals Cut for the Odd integrators\r
197         UShort_t fPedestalCutEven[kNCIUBoards][kNChannels]; // Pedestals Cut for the Even integrators\r
198 \r
199         Int_t fRun;       // Run number\r
200         Int_t fStartTime; // Start time\r
201         Int_t fEndTime;   // End time\r
202         TString fAliasNames[kNAliases]; // aliases for DCS data\r
203         Bool_t fIsProcessed; // bool to know processing status\r
204         \r
205         Bool_t  IsClkValid(UShort_t clock);\r
206         void SetParameter(TString name, Float_t val);\r
207         \r
208         \r
209         ClassDef( AliVZEROTriggerData, 1 )  \r
210 \r
211 };\r
212 \r
213 #endif // ALIVZEROTRIGGERDATA_H\r
214