Added macro to lauch TOF QA task with extended functionality via plugin
[u/mrichter/AliRoot.git] / TOF / AliTOFChannelOnlineStatusArray.cxx
CommitLineData
17149e6b 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16///////////////////////////////////////////////////////////////////////////////
17// //
18// class for TOF Online calibration: defining channel status //
19// New object created, to use an array instead of a TObjArray. //
20// Storing all the info coming from HW FEE map, pulser runs, and noise //
21// runs in a single object (char). //
22// //
23///////////////////////////////////////////////////////////////////////////////
24
25#include <AliTOFChannelOnlineStatusArray.h>
26#include <AliLog.h>
27
28ClassImp(AliTOFChannelOnlineStatusArray)
29
30//________________________________________________________________
31AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray():
32 TObject(),
33 fSize(0),
02ede0c4 34 fArray(0x0),
35 fLatencyWindow(0x0)
17149e6b 36{
37 //default constructor
38}
39//________________________________________________________________
e88f3330 40AliTOFChannelOnlineStatusArray::~AliTOFChannelOnlineStatusArray()
41{
42 //distructor
43 delete [] fArray;
02ede0c4 44 delete [] fLatencyWindow;
e88f3330 45}
46//________________________________________________________________
17149e6b 47AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(Int_t size):
48 TObject(),
49 fSize(size),
02ede0c4 50 fArray(new UChar_t[size]),
51 fLatencyWindow(new Int_t[size])
17149e6b 52{
53 // ctor with size
54 for (Int_t ich = 0; ich<size; ich ++){
55 SetStatus(ich,kTOFOnlineUnknown);
2bf4d9d6 56 SetLatencyWindow(ich, 0);
17149e6b 57 }
58}
59//________________________________________________________________
60AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(const AliTOFChannelOnlineStatusArray & source):
61 TObject(),
8a190ba2 62 fSize(source.fSize),
227c3238 63 fArray(0x0),
64 fLatencyWindow(0x0)
17149e6b 65{
66 // copy constructor
227c3238 67 fArray = new UChar_t[fSize];
68 fLatencyWindow = new Int_t[fSize];
69 for (Int_t ich = 0; ich<fSize; ich ++){
70 fArray[ich] = source.fArray[ich];
71 fLatencyWindow[ich] = source.fLatencyWindow[ich];
72 }
17149e6b 73}
74//________________________________________________________________
75AliTOFChannelOnlineStatusArray &AliTOFChannelOnlineStatusArray::operator=(const AliTOFChannelOnlineStatusArray & source)
76{
77 // assignment operator
8a190ba2 78
79 if (this == &source)
80 return *this;
81
82 TObject::operator=(source);
83 fSize= source.fSize;
4443810b 84 delete [] fArray;
16e3d8ea 85 fArray = new UChar_t[fSize];
4443810b 86 delete [] fLatencyWindow;
16e3d8ea 87 fLatencyWindow = new Int_t[fSize];
88 memcpy(fArray,source.fArray,sizeof(UChar_t)*fSize);
89 memcpy(fLatencyWindow,source.fLatencyWindow,sizeof(Int_t)*fSize);
90
8a190ba2 91 return *this;
17149e6b 92}
93//________________________________________________________________
94void AliTOFChannelOnlineStatusArray::SetStatus(Int_t pos, UChar_t parr)
95{
96 // setting status for channel at position = pos
97 AliDebug(2,Form("status = %d",(UInt_t)parr));
98 if (pos>-1 && pos < fSize)fArray[pos] = parr;
99 AliDebug(2,Form("fArray[%d] = %d",pos,(UInt_t)fArray[pos]));
100}
101//________________________________________________________________
102void AliTOFChannelOnlineStatusArray::SetHWStatus(Int_t pos, UChar_t parr)
103{
104 // setting status for channel at position = pos
105 AliDebug(2,Form("HW status = %d",(UInt_t)parr));
106 if (pos>-1 && pos < fSize) {
107 fArray[pos] &= kTOFHWReset;
108 fArray[pos] |= parr;
109 }
110 AliDebug(2,Form("fArray[%d] = %d",pos,(UInt_t)fArray[pos]));
111}
112//________________________________________________________________
113void AliTOFChannelOnlineStatusArray::SetPulserStatus(Int_t pos, UChar_t parr)
114{
115 // setting status for channel at position = pos
116 AliDebug(2,Form("Pulser status = %d",(UInt_t)parr));
117 if (pos>-1 && pos < fSize){
118 fArray[pos] &= kTOFPulserReset;
119 fArray[pos] |= parr;
120 }
121 AliDebug(2,Form("fArray[%d] = %d",pos,(UInt_t)fArray[pos]));
122}
123//________________________________________________________________
124void AliTOFChannelOnlineStatusArray::SetNoiseStatus(Int_t pos, UChar_t parr)
125{
126 // setting status for channel at position = pos
127 AliDebug(2,Form("Noise status = %d",(UInt_t)parr));
128 if (pos>-1 && pos < fSize){
129 fArray[pos] &= kTOFNoiseReset;
130 fArray[pos] |= parr;
131 }
132 AliDebug(2,Form("fArray[%d] = %d",pos,(UInt_t)fArray[pos]));
133}
134//________________________________________________________________
02ede0c4 135void AliTOFChannelOnlineStatusArray::SetLatencyWindow(Int_t pos, Int_t parr)
136{
051a7fe6 137 // setting latency window for channel at position = pos
134e5594 138 if (!fLatencyWindow) {
139 AliWarning("couldn't set latency window");
140 return;
141 }
02ede0c4 142 // setting latency window for channel at position = pos
143 AliDebug(2,Form("Latency window = %d",parr));
144 if (pos>-1 && pos < fSize){
145 fLatencyWindow[pos] = parr;
146 }
147 AliDebug(2,Form("fLatencyWindow[%d] = %d",pos,fLatencyWindow[pos]));
148}
149//________________________________________________________________
17149e6b 150UChar_t AliTOFChannelOnlineStatusArray::GetStatus(Int_t pos) const
151{
152 // getting the status for channel at position = pos
153 UChar_t parr = 0x0;
154 if (pos>-1 && pos < fSize)parr = fArray[pos];
155 return parr;
156}
157//________________________________________________________________
158UChar_t AliTOFChannelOnlineStatusArray::GetHWStatus(Int_t pos) const
159{
160 // getting the HW status for channel at position = pos
161 UChar_t parr = 0x0;
162 if (pos>-1 && pos < fSize)parr = fArray[pos];
163 AliDebug(2,Form("parr = %d ",(UInt_t)parr));
164 UChar_t hwSt = parr & kTOFHW;
165 //UChar_t hwSt = parr & 0x3;
166 return hwSt;
167}
168//________________________________________________________________
169UChar_t AliTOFChannelOnlineStatusArray::GetPulserStatus(Int_t pos) const
170{
171 // getting the Pulser status for channel at position = pos
172 UChar_t parr = 0x0;
173 if (pos>-1 && pos < fSize)parr = fArray[pos];
174 AliDebug(2,Form("parr = %d ",(UInt_t)parr));
175 UChar_t pulserSt = parr & kTOFPulser;
176 //UChar_t pulserSt = parr & 0xc;
177 return pulserSt;
178 }
179//________________________________________________________________
180UChar_t AliTOFChannelOnlineStatusArray::GetNoiseStatus(Int_t pos) const
181{
182 // getting the noise status for channel at position = pos
183 UChar_t parr = 0x0;
184 if (pos>-1 && pos < fSize)parr = fArray[pos];
185 AliDebug(2,Form("parr = %d ",(UInt_t)parr));
186 UChar_t noiseSt = parr & kTOFNoise;
187 // UChar_t noiseSt = parr & 0x30;
188 return noiseSt;
189}
02ede0c4 190//________________________________________________________________
191Int_t AliTOFChannelOnlineStatusArray::GetLatencyWindow(Int_t pos) const
192{
193 // getting the latency window for channel at position = pos
2bf4d9d6 194 Int_t lw = 0;
134e5594 195 if (!fLatencyWindow) {
196 AliWarning("cannot get latency window");
197 return lw;
198 }
02ede0c4 199 if (pos>-1 && pos < fSize)lw = fLatencyWindow[pos];
200 AliDebug(2,Form("lw = %d ",lw));
201 return lw;
202}