]> git.uio.no Git - u/mrichter/AliRoot.git/blame - VZERO/AliVZEROTriggerData.cxx
Bug fixed
[u/mrichter/AliRoot.git] / VZERO / AliVZEROTriggerData.cxx
CommitLineData
a08520b8 1\r
2/**************************************************************************\r
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
4 * *\r
5 * Author: The ALICE Off-line Project. *\r
6 * Contributors are mentioned in the code where appropriate. *\r
7 * *\r
8 * Permission to use, copy, modify and distribute this software and its *\r
9 * documentation strictly for non-commercial purposes is hereby granted *\r
10 * without fee, provided that the above copyright notice appears in all *\r
11 * copies and that both the copyright notice and this permission notice *\r
12 * appear in the supporting documentation. The authors make no claims *\r
13 * about the suitability of this software for any purpose. It is *\r
14 * provided "as is" without express or implied warranty. *\r
15 **************************************************************************/\r
16\r
17\r
18// \r
19// \r
20// \r
21#include <TObjString.h>\r
22\r
23#include "AliLog.h"\r
24#include "AliDCSValue.h"\r
25#include "AliVZEROTriggerData.h"\r
26\r
27ClassImp(AliVZEROTriggerData)\r
28//________________________________________________________________\r
29\r
30AliVZEROTriggerData::AliVZEROTriggerData() :\r
31 TNamed(),\r
32 fBBAThreshold(0),\r
33 fBBCThreshold(0) , \r
34 fBGAThreshold(0) , \r
35 fBGCThreshold(0) , \r
36 fBBAForBGThreshold(0) , \r
37 fBBCForBGThreshold(0) , \r
38 fCentralityVOAThrLow(0) , \r
39 fCentralityVOAThrHigh(0) , \r
40 fCentralityVOCThrLow(0) , \r
41 fCentralityVOCThrHigh(0) , \r
42 fMultV0AThrLow(0) , \r
43 fMultV0AThrHigh(0) , \r
44 fMultV0CThrLow(0) , \r
45 fMultV0CThrHigh(0),\r
46 fRun(0),\r
47 fStartTime(0),\r
48 fEndTime(0),\r
49 fIsProcessed(kFALSE) \r
50\r
51{\r
52 for(int i=0; i<kNCIUBoards ;i++) {\r
53 fClk1Win1[i] = fClk1Win2[i] = 0;\r
54 fDelayClk1Win1[i] = fDelayClk1Win2[i] = 0;\r
55 fClk2Win1[i] = fClk2Win2[i] = 0;\r
56 fDelayClk2Win1[i] = fDelayClk2Win2[i] = 0;\r
57 fLatchWin1[i] = fLatchWin2[i] = 0;\r
58 fResetWin1[i] = fResetWin2[i] = 0;\r
59 fPedestalSubtraction[i] = kFALSE;\r
60 }\r
61}\r
62//________________________________________________________________\r
63AliVZEROTriggerData::AliVZEROTriggerData(Int_t nRun, UInt_t startTime, UInt_t endTime) :\r
64 TNamed(),\r
65 fBBAThreshold(0),\r
66 fBBCThreshold(0) , \r
67 fBGAThreshold(0) , \r
68 fBGCThreshold(0) , \r
69 fBBAForBGThreshold(0) , \r
70 fBBCForBGThreshold(0) , \r
71 fCentralityVOAThrLow(0) , \r
72 fCentralityVOAThrHigh(0) , \r
73 fCentralityVOCThrLow(0) , \r
74 fCentralityVOCThrHigh(0) , \r
75 fMultV0AThrLow(0) , \r
76 fMultV0AThrHigh(0) , \r
77 fMultV0CThrLow(0) , \r
78 fMultV0CThrHigh(0),\r
79 fRun(nRun),\r
80 fStartTime(startTime),\r
81 fEndTime(endTime),\r
82 fIsProcessed(kFALSE)\r
83{\r
84 for(int i=0; i<kNCIUBoards ;i++) {\r
85 fClk1Win1[i] = fClk1Win2[i] = 0;\r
86 fDelayClk1Win1[i] = fDelayClk1Win2[i] = 0;\r
87 fClk2Win1[i] = fClk2Win2[i] = 0;\r
88 fDelayClk2Win1[i] = fDelayClk2Win2[i] = 0;\r
89 fLatchWin1[i] = fLatchWin2[i] = 0;\r
90 fResetWin1[i] = fResetWin2[i] = 0;\r
91 fPedestalSubtraction[i] = kFALSE;\r
92 }\r
93 TString namst = "Trigger_FEE";\r
94 SetName(namst.Data());\r
95 SetTitle(namst.Data());\r
96 \r
97}\r
98//________________________________________________________________\r
99AliVZEROTriggerData::AliVZEROTriggerData(const AliVZEROTriggerData& triggerdata) :\r
100TNamed(),\r
101fBBAThreshold(0),\r
102fBBCThreshold(0) , \r
103fBGAThreshold(0) , \r
104fBGCThreshold(0) , \r
105fBBAForBGThreshold(0) , \r
106fBBCForBGThreshold(0) , \r
107fCentralityVOAThrLow(0) , \r
108fCentralityVOAThrHigh(0) , \r
109fCentralityVOCThrLow(0) , \r
110fCentralityVOCThrHigh(0) , \r
111fMultV0AThrLow(0) , \r
112fMultV0AThrHigh(0) , \r
113fMultV0CThrLow(0) , \r
114fMultV0CThrHigh(0),\r
115fRun(0),\r
116fStartTime(0),\r
117fEndTime(0),\r
118fIsProcessed(kFALSE) \r
119{\r
120 // copy constructor\r
121 \r
122 AliInfo("Not implemented");\r
123}\r
124\r
125//________________________________________________________________\r
126AliVZEROTriggerData::~AliVZEROTriggerData(){\r
127}\r
128//_____________________________________________________________________________\r
129void AliVZEROTriggerData::FillData(AliVZERODataFEE * data){\r
130 TMap * params = data->GetParameters();\r
131 TIter iter(params); \r
132 TObjString* aliasName;\r
133 \r
134 while (( aliasName = (TObjString*) iter.Next() )) {\r
135 AliDCSValue* aValue = (AliDCSValue*) params->GetValue(aliasName);\r
136 Float_t val = aValue->GetFloat();\r
137 //AliInfo(Form("%s : %f",aliasName->String().Data(), val));\r
138 SetParameter(aliasName->String(),val);\r
139 \r
140 } \r
141}\r
142\r
143//_____________________________________________________________________________\r
144void AliVZEROTriggerData::SetParameter(TString name, Float_t val){\r
145 Int_t iBoard = -1;\r
146 Int_t iChannel = -1;\r
147\r
148 TSeqCollection* nameSplit = name.Tokenize("/");\r
149 TObjString * boardName = (TObjString *)nameSplit->At(2);\r
150 if(!boardName->String().Contains("CCIU")) sscanf(boardName->String().Data(),"CIU%d",&iBoard);\r
151 \r
152 TString paramName = ((TObjString *)nameSplit->At(3))->String();\r
153 Char_t channel[2] ; channel[1] = '\0';\r
154 channel[0] = paramName[paramName.Sizeof()-2];\r
155 sscanf(channel,"%d",&iChannel);\r
156 \r
157 if(name.Contains("DelayClk1Win1")) SetDelayClk1Win1((UShort_t) val,iBoard-1);\r
158 else if(name.Contains("Clk1Win1")) SetClk1Win1((UShort_t) val,iBoard-1);\r
159 else if(name.Contains("DelayClk1Win2")) SetDelayClk1Win2((UShort_t) val,iBoard-1);\r
160 else if(name.Contains("Clk1Win2")) SetClk1Win2((UShort_t) val,iBoard-1);\r
161 else if(name.Contains("DelayClk2Win1")) SetDelayClk2Win1((UShort_t) val,iBoard-1);\r
162 else if(name.Contains("Clk2Win1")) SetClk2Win1((UShort_t) val,iBoard-1);\r
163 else if(name.Contains("DelayClk2Win2")) SetDelayClk2Win2((UShort_t) val,iBoard-1);\r
164 else if(name.Contains("Clk2Win2")) SetClk2Win2((UShort_t) val,iBoard-1);\r
165 else if(name.Contains("LatchWin1")) SetLatchWin1((UShort_t) val,iBoard-1);\r
166 else if(name.Contains("LatchWin2")) SetLatchWin2((UShort_t) val,iBoard-1);\r
167 else if(name.Contains("ResetWin1")) SetResetWin1((UShort_t) val,iBoard-1);\r
168 else if(name.Contains("ResetWin2")) SetResetWin2((UShort_t) val,iBoard-1);\r
169 else if(name.Contains("PedestalSubtraction")) SetPedestalSubtraction((Bool_t) val,iBoard-1);\r
170 else if(name.Contains("BBAThreshold")) SetBBAThreshold((UShort_t) val);\r
171 else if(name.Contains("BBCThreshold")) SetBBCThreshold((UShort_t) val);\r
172 else if(name.Contains("BGAThreshold")) SetBGAThreshold((UShort_t) val);\r
173 else if(name.Contains("BGCThreshold")) SetBGCThreshold((UShort_t) val);\r
174 else if(name.Contains("BBAForBGThreshold")) SetBBAForBGThreshold((UShort_t) val);\r
175 else if(name.Contains("BBCForBGThreshold")) SetBBCForBGThreshold((UShort_t) val);\r
176 else if(name.Contains("CentralityV0AThrLow")) SetCentralityV0AThrLow((UShort_t) val);\r
177 else if(name.Contains("CentralityV0AThrHigh")) SetCentralityV0AThrHigh((UShort_t) val);\r
178 else if(name.Contains("CentralityV0CThrLow")) SetCentralityV0CThrLow((UShort_t) val);\r
179 else if(name.Contains("CentralityV0CThrHigh")) SetCentralityV0CThrHigh((UShort_t) val);\r
180 else if(name.Contains("MultV0AThrLow")) SetMultV0AThrLow((UShort_t) val);\r
181 else if(name.Contains("MultV0AThrHigh")) SetMultV0AThrHigh((UShort_t) val);\r
182 else if(name.Contains("MultV0CThrLow")) SetMultV0CThrLow((UShort_t) val);\r
183 else if(name.Contains("MultV0CThrHigh")) SetMultV0CThrHigh((UShort_t) val);\r
184 else if(name.Contains("TriggerSelect")) SetTriggerSelected((UShort_t) val, iBoard -1);\r
185 else if(name.Contains("EnableCharge")) SetEnableCharge((Bool_t) val, iBoard -1, iChannel-1);\r
186 else if(name.Contains("EnableTiming")) SetEnableTiming((Bool_t) val, iBoard -1, iChannel-1);\r
187 else if(name.Contains("DiscriThr")) SetDiscriThr((UShort_t) val, iBoard -1, iChannel-1);\r
188 else if(name.Contains("DelayHit")) SetDelayHit((UShort_t) val, iBoard -1, iChannel-1);\r
189 else if(name.Contains("PedOdd")) SetPedestal((UShort_t) val, 1, iBoard -1, iChannel-1);\r
190 else if(name.Contains("PedEven")) SetPedestal((UShort_t) val, 0, iBoard -1, iChannel-1);\r
191 else if(name.Contains("PedCutOdd")) SetPedestalCut((UShort_t) val, 1, iBoard -1, iChannel-1);\r
192 else if(name.Contains("PedCutEven")) SetPedestalCut((UShort_t) val, 0, iBoard -1, iChannel-1);\r
193 else AliError(Form("No Setter found for FEE parameter : %s",name.Data()));\r
194}\r
195//________________________________________________________________\r
196void AliVZEROTriggerData::SetPedestalCut(UShort_t val,Int_t integrator, Int_t board, Int_t channel)\r
197{\r
198 if(board<kNCIUBoards && channel<kNChannels) {\r
199 if(integrator) fPedestalCutOdd[board][channel] = val;\r
200 else fPedestalCutEven[board][channel] = val;\r
201 } else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));\r
202}\r
203//________________________________________________________________\r
204UShort_t AliVZEROTriggerData::GetPedestalCut(Int_t integrator, Int_t board, Int_t channel)\r
205{\r
206 if(board<kNCIUBoards && channel<kNChannels) {\r
207 if(integrator) return(fPedestalCutOdd[board][channel]);\r
208 else return(fPedestalCutEven[board][channel]);\r
209 }else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));\r
210 return 0;\r
211}\r
212//________________________________________________________________\r
213void AliVZEROTriggerData::SetPedestal(UShort_t val, Int_t integrator, Int_t board, Int_t channel)\r
214{\r
215 if(board<kNCIUBoards && channel<kNChannels) {\r
216 if(integrator) fPedestalOdd[board][channel] = val;\r
217 else fPedestalEven[board][channel] = val;\r
218 } else AliError(Form("Impossible to write at : Board %d ; Channel %d ; Integrator %d ",board,channel,integrator));\r
219}\r
220//________________________________________________________________\r
221UShort_t AliVZEROTriggerData::GetPedestal(Int_t integrator, Int_t board, Int_t channel)\r
222{\r
223 if(board<kNCIUBoards && channel<kNChannels) {\r
224 if(integrator) return(fPedestalOdd[board][channel]);\r
225 else return(fPedestalEven[board][channel]);\r
226 } else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));\r
227 return 0;\r
228}\r
229//________________________________________________________________\r
230void AliVZEROTriggerData::SetDelayHit(UShort_t val,Int_t board, Int_t channel)\r
231{\r
232 if(board<kNCIUBoards && channel<kNChannels) fDelayHit[board][channel] = val;\r
233 else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));\r
234}\r
235//________________________________________________________________\r
236UShort_t AliVZEROTriggerData::GetDelayHit(Int_t board, Int_t channel)\r
237{\r
238 if(board<kNCIUBoards && channel<kNChannels) return(fDelayHit[board][channel]);\r
239 else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));\r
240 return 0;\r
241}\r
242//________________________________________________________________\r
243void AliVZEROTriggerData::SetDiscriThr(UShort_t val,Int_t board, Int_t channel)\r
244{\r
245 if(board<kNCIUBoards && channel<kNChannels) fDiscriThr[board][channel] = val;\r
246 else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));\r
247}\r
248//________________________________________________________________\r
249UShort_t AliVZEROTriggerData::GetDiscriThr(Int_t board, Int_t channel)\r
250{\r
251 if(board<kNCIUBoards && channel<kNChannels) return(fDiscriThr[board][channel]);\r
252 else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));\r
253 return 0;\r
254}\r
255//________________________________________________________________\r
256void AliVZEROTriggerData::SetEnableCharge(Bool_t val,Int_t board, Int_t channel)\r
257{\r
258 if(board<kNCIUBoards && channel<kNChannels) fEnableCharge[board][channel] = val;\r
259 else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));\r
260}\r
261//________________________________________________________________\r
262Bool_t AliVZEROTriggerData::GetEnableCharge(Int_t board, Int_t channel)\r
263{\r
264 if(board<kNCIUBoards && channel<kNChannels) return(fEnableCharge[board][channel]);\r
265 else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));\r
266 return kFALSE;\r
267}\r
268//________________________________________________________________\r
269void AliVZEROTriggerData::SetEnableTiming(Bool_t val,Int_t board, Int_t channel)\r
270{\r
271 if(board<kNCIUBoards && channel<kNChannels) fEnableTiming[board][channel] = val;\r
272 else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));\r
273}\r
274//________________________________________________________________\r
275Bool_t AliVZEROTriggerData::GetEnableTiming(Int_t board, Int_t channel)\r
276{\r
277 if(board<kNCIUBoards && channel<kNChannels) return(fEnableTiming[board][channel]);\r
278 else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));\r
279 return kFALSE;\r
280}\r
281//________________________________________________________________\r
282void AliVZEROTriggerData::SetTriggerSelected(UShort_t trigger, Int_t output)\r
283{\r
284 if(output<kNTriggerOutputs) fTriggerSelected[output] = trigger;\r
285 else AliError(Form("Trigger output number %d not valid",output));\r
286}\r
287\r
288//________________________________________________________________\r
289void AliVZEROTriggerData::SetClk1Win1(UShort_t* clks)\r
290{\r
291 if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk1Win1(clks[t],t);\r
292 else AliFatal("Profil Clock1 Win1 Not defined.");\r
293}\r
294//________________________________________________________________\r
295void AliVZEROTriggerData::SetClk2Win1(UShort_t* clks)\r
296{\r
297 if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk2Win1(clks[t],t);\r
298 else AliFatal("Profil Clock2 Win1 Not defined.");\r
299}\r
300//________________________________________________________________\r
301void AliVZEROTriggerData::SetClk1Win1(UShort_t clk, Int_t board)\r
302{\r
303 if(IsClkValid(clk) && (board<kNCIUBoards)) fClk1Win1[board] = clk;\r
304 else AliError(Form("Profil Clock1 Win1 of board %d is not valid : %d",board,clk));\r
305}\r
306//________________________________________________________________\r
307void AliVZEROTriggerData::SetClk2Win1(UShort_t clk, Int_t board)\r
308{\r
309 if(IsClkValid(clk) && (board<kNCIUBoards)) fClk2Win1[board] = clk;\r
310 else AliError(Form("Profil Clock2 Win1 of board %d is not valid",board));\r
311}\r
312//________________________________________________________________\r
313void AliVZEROTriggerData::SetClk1Win2(UShort_t* clks)\r
314{\r
315 if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk1Win2(clks[t],t);\r
316 else AliFatal("Profil Clock1 Win2 Not defined.");\r
317}\r
318//________________________________________________________________\r
319void AliVZEROTriggerData::SetClk2Win2(UShort_t* clks)\r
320{\r
321 if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk2Win2(clks[t],t);\r
322 else AliFatal("Profil Clock2 Win2 Not defined.");\r
323}\r
324//________________________________________________________________\r
325void AliVZEROTriggerData::SetClk1Win2(UShort_t clk, Int_t board)\r
326{\r
327 if(IsClkValid(clk) && (board<kNCIUBoards)) fClk1Win2[board] = clk;\r
328 else AliError(Form("Profil Clock1 Win2 of board %d is not valid",board));\r
329}\r
330//________________________________________________________________\r
331void AliVZEROTriggerData::SetClk2Win2(UShort_t clk, Int_t board)\r
332{\r
333 if(IsClkValid(clk) && (board<kNCIUBoards)) fClk2Win2[board] = clk;\r
334 else AliError(Form("Profil Clock2 Win2 of board %d is not valid",board));\r
335}\r
336//________________________________________________________________\r
337void AliVZEROTriggerData::SetDelayClk1Win1(UShort_t* delays)\r
338{\r
339 if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk1Win1(delays[t],t);\r
340 else AliFatal("Profil Clock1 Win1 Delays Not defined.");\r
341}\r
342//________________________________________________________________\r
343void AliVZEROTriggerData::SetDelayClk1Win1(UShort_t delay, Int_t board)\r
344{\r
345 if(delay>1023){\r
346 AliWarning(Form("Profil Clock1 Win1 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));\r
347 delay = delay & 0x3FF;\r
348 }\r
349 if(board<kNCIUBoards) fDelayClk1Win1[board] = delay;\r
350 else AliError("Trying to write out of the array");\r
351}\r
352//________________________________________________________________\r
353void AliVZEROTriggerData::SetDelayClk2Win1(UShort_t* delays)\r
354{\r
355 if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk2Win1(delays[t],t);\r
356 else AliFatal("Profil Clock2 Win1 Delays Not defined.");\r
357}\r
358//________________________________________________________________\r
359void AliVZEROTriggerData::SetDelayClk2Win1(UShort_t delay, Int_t board)\r
360{\r
361 if(delay>1023){\r
362 AliWarning(Form("Profil Clock2 Win1 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));\r
363 delay = delay & 0x3FF;\r
364 }\r
365 if(board<kNCIUBoards) fDelayClk2Win1[board] = delay;\r
366 else AliError("Trying to write out of the array");\r
367}\r
368//________________________________________________________________\r
369void AliVZEROTriggerData::SetDelayClk1Win2(UShort_t* delays)\r
370{\r
371 if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk1Win2(delays[t],t);\r
372 else AliFatal("Profil Clock1 Win2 Delays Not defined.");\r
373}\r
374//________________________________________________________________\r
375void AliVZEROTriggerData::SetDelayClk1Win2(UShort_t delay, Int_t board)\r
376{\r
377 if(delay>1023){\r
378 AliWarning(Form("Profil Clock1 Win2 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));\r
379 delay = delay & 0x3FF;\r
380 }\r
381 if(board<kNCIUBoards) fDelayClk1Win2[board] = delay;\r
382 else AliError("Trying to write out of the array");\r
383}\r
384//________________________________________________________________\r
385void AliVZEROTriggerData::SetDelayClk2Win2(UShort_t* delays)\r
386{\r
387 if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk2Win2(delays[t],t);\r
388 else AliFatal("Profil Clock2 Win2 Delays Not defined.");\r
389}\r
390//________________________________________________________________\r
391void AliVZEROTriggerData::SetDelayClk2Win2(UShort_t delay, Int_t board)\r
392{\r
393 if(delay>1023){\r
394 AliWarning(Form("Profil Clock2 Win2 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));\r
395 delay = delay & 0x3FF;\r
396 }\r
397 if(board<kNCIUBoards) fDelayClk2Win2[board] = delay;\r
398 else AliError("Trying to write out of the array");\r
399}\r
400//________________________________________________________________\r
401void AliVZEROTriggerData::SetLatchWin1(UShort_t *latchs){\r
402 if(latchs) for(int t=0; t<kNCIUBoards; t++) SetLatchWin1(latchs[t],t);\r
403 else AliFatal("Latch Win1 profil Not defined.");\r
404}\r
405//________________________________________________________________\r
406void AliVZEROTriggerData::SetLatchWin1(UShort_t latch, Int_t board)\r
407{\r
408 if(IsClkValid(latch) && (board<kNCIUBoards)) fLatchWin1[board] = latch;\r
409 else AliError(Form("Latch Win1 profil of board %d is not valid",board));\r
410}\r
411//________________________________________________________________\r
412void AliVZEROTriggerData::SetLatchWin2(UShort_t *latchs){\r
413 if(latchs) for(int t=0; t<kNCIUBoards; t++) SetLatchWin2(latchs[t],t);\r
414 else AliFatal("Latch Win2 profil Not defined.");\r
415}\r
416//________________________________________________________________\r
417void AliVZEROTriggerData::SetLatchWin2(UShort_t latch, Int_t board)\r
418{\r
419 if(IsClkValid(latch) && (board<kNCIUBoards)) fLatchWin2[board] = latch;\r
420 else AliError(Form("Latch Win2 profil of board %d is not valid",board));\r
421}\r
422//________________________________________________________________\r
423void AliVZEROTriggerData::SetResetWin1(UShort_t *resets){\r
424 if(resets) for(int t=0; t<kNCIUBoards; t++) SetResetWin1(resets[t],t);\r
425 else AliFatal("Reset Win1 profil Not defined.");\r
426}\r
427//________________________________________________________________\r
428void AliVZEROTriggerData::SetResetWin1(UShort_t reset, Int_t board)\r
429{\r
430 if(IsClkValid(reset) && (board<kNCIUBoards)) fResetWin1[board] = reset;\r
431 else AliError(Form("Reset Win1 profil of board %d is not valid",board));\r
432}\r
433//________________________________________________________________\r
434void AliVZEROTriggerData::SetResetWin2(UShort_t *resets){\r
435 if(resets) for(int t=0; t<kNCIUBoards; t++) SetResetWin2(resets[t],t);\r
436 else AliFatal("Reset Win2 profil Not defined.");\r
437}\r
438//________________________________________________________________\r
439void AliVZEROTriggerData::SetResetWin2(UShort_t reset, Int_t board)\r
440{\r
441 if(IsClkValid(reset) && (board<kNCIUBoards)) fResetWin2[board] = reset;\r
442 else AliError(Form("Reset Win2 profil of board %d is not valid",board));\r
443}\r
444//________________________________________________________________\r
445void AliVZEROTriggerData::SetPedestalSubtraction(Bool_t *peds){\r
446 if(peds) for(int t=0; t<kNCIUBoards; t++) SetPedestalSubtraction(peds[t],t);\r
447 else AliFatal("Pedestal Subtraction Not defined.");\r
448 \r
449}\r
450//________________________________________________________________\r
451void AliVZEROTriggerData::SetPedestalSubtraction(Bool_t ped, Int_t board)\r
452{\r
453 if((board<kNCIUBoards)) fPedestalSubtraction[board] = ped;\r
454 else AliError(Form("Board %d is not valid",board));\r
455}\r
456\r
457//________________________________________________________________\r
458Bool_t AliVZEROTriggerData::IsClkValid(UShort_t clock){\r
459 Bool_t word[5];\r
460 Bool_t isValid = kTRUE;\r
461 Short_t RisingEdge = 0;\r
462 Short_t FallingEdge = 0;\r
463 for(int i=0 ; i<5 ; i++) word[i] = (clock >> i) & 0x1;\r
464 \r
465 if(word[0] != word[4]){\r
466 if(word[4]) FallingEdge++;\r
467 else RisingEdge++;\r
468 } \r
469 for(int i=1 ; i<5 ; i++){\r
470 if(word[i] != word[i-1]) {\r
471 if(word[i-1]) FallingEdge++;\r
472 else RisingEdge++;\r
473 }\r
474 }\r
475 if((FallingEdge>1)||(RisingEdge>1)) isValid = kFALSE;\r
476 if(((RisingEdge==0)&&(FallingEdge==0)) &&(!word[0])) isValid = kFALSE;\r
477 return isValid;\r
478}\r
479\r