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