ATLAS Offline Software
TileRawChannelMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 #include "StoreGate/ReadHandle.h"
11 
13 
14  ATH_MSG_DEBUG("in initialize()");
15 
16  // initialize superclass
18 
23 
24  m_dac2Charge[0] = 100.* 2.0 * 4.096 / m_tileInfo->ADCmax(); // 100 pF * 2 for legacy or 200 pF for demonstrator
25  m_dac2Charge[1] = 5.2 * 2.0 * 4.096 / m_tileInfo->ADCmax(); // use the same number 5.2 pF as in TileCisDefaultCalibTool
26 
27  if ((m_calibUnit >= 0) && (m_calibUnit <= 3)) {
29  }
30 
34  }
35 
36  ATH_MSG_INFO("Final Units: " << m_finalRawChannelUnit);
37 
38  using Tile = TileCalibUtils;
39  using namespace Monitored;
40 
42 
43  if (m_runTypeIsNotCIS) {
44  m_ampGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelAmp",
45  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
46 
47  m_timeGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTime",
48  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
49 
50  m_timeCorrGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTimeCorr",
51  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
52  } else { // CIS run
53  // For 5 pF capacitor
54  m_ampOverQ5Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelAmpOverQ5",
55  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
56 
57  m_time5Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTime5",
58  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
59 
60  // For 100 pF capacitor
61  m_ampOverQ100Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelAmpOverQ100",
62  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
63 
64  m_time100Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTime100",
65  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
66 
67  if (m_fill2DHistograms) {
68  // For 5 pF capacitor
69  m_ampVsQ5Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelAmpVsQ5",
70  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
71 
72  m_timeVsTime5Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTimeVsTime5",
73  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
74 
75  // For 100 pF capacitor
76  m_ampVsQ100Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelAmpVsQ100",
77  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
78 
79  m_timeVsTime100Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTimeVsTime100",
80  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
81 
82  }
83  }
84 
85 
87  m_dspAmpGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelDspAmp",
88  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
89 
90  m_dspTimeGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelDspTime",
91  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
92 
93  m_dspChi2Groups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelDspChi2",
94  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
95 
96  m_dspChi2VsAmpGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelDspChi2VsAmp",
97  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
98 
99  m_ampDiffGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelAmpDiff",
100  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
101 
102  m_timeDiffGroups = buildToolMap<std::vector<int>>(m_tools, "TileRawChannelTimeDiff",
103  Tile::MAX_ROS - 1, Tile::MAX_DRAWER);
104  }
105 
106 
107  return StatusCode::SUCCESS;
108 }
109 
110 
112 
113  using Tile = TileCalibUtils;
114 
115  // In case you want to measure the execution time
116  auto timer = Monitored::Timer("TIME_execute");
117 
118  if (ctx.evt() % 1000 == 0) {
119  ATH_MSG_ALWAYS(ctx.evt() << " events processed so far");
120  }
121 
123  ATH_CHECK( emScale.isValid() );
124 
125  SG::ReadHandle<TileDQstatus> dqStatusHandle(m_dqStatusKey, ctx);
126  ATH_CHECK( dqStatusHandle.isValid() );
127  const TileDQstatus* dqStatus = dqStatusHandle.get();
128 
129  // array of CIS parameters
130  const uint32_t* cispar = dqStatus->cispar();
131 
132  if (cispar[8] != 0) return StatusCode::SUCCESS;
133 
134  int cap = (cispar[7] > 10) ? 0 : 1; // 100 pF or 5 pF
135  double injectionTime = cispar[5] * 0.104;
136  double chargeForNormalModule = (cispar[6] < 1024) ? cispar[6] * m_dac2Charge[cap] : 0.;
137  // Effective value of small capacitor is twice smaller for demonstrator
138  double chargeForDemonstrator = cap ? chargeForNormalModule * 0.5 : chargeForNormalModule;
139  double invChargeForNormalModule = (chargeForNormalModule != 0) ? 1.0 / chargeForNormalModule : 0.;
140  double invChargeForDemonstrator = (chargeForDemonstrator != 0) ? 1.0 / chargeForDemonstrator : 0.;
141 
142  // Ignore charges below 1 pC in HG
143  // Ignore charges below 10 pC for small capacitor and below 15 pC for big capacitor in LG
144  std::array<double, 2> minChargeForNormalModule = {(cap ? 10. : 15.), 1.};
145  std::array<double, 2> minChargeForDemonstrator = {(cap ? 10. : 15.), 2.};
146 
147  // Ignore charges above 11.5 pC in HG (full range is 12.5 pC)
148  // Ignore charges above 750. pC in LG (full range is 800. pC)
149  std::array<double, 2> maxChargeForNormalModule = {750., 11.5};
150  std::array<double, 2> maxChargeForDemonstrator = {750., 23.0};
151 
152  const std::vector<std::vector<int>>& ampOverQCapGroups = cap ? m_ampOverQ5Groups : m_ampOverQ100Groups;
153  const std::vector<std::vector<int>>& ampVsQCapGroups = cap ? m_ampVsQ5Groups : m_ampVsQ100Groups;
154  const std::vector<std::vector<int>>& timeCapGroups = cap ? m_time5Groups : m_time100Groups;
155  const std::vector<std::vector<int>>& timeVsTimeCapGroups = cap ? m_timeVsTime5Groups : m_timeVsTime100Groups;
156 
157  bool corruptedData[Tile::MAX_ROS - 1][Tile::MAX_DRAWER][Tile::MAX_GAIN][MAX_DMU]={{{{false}}}};
158 
160  ATH_CHECK( digitsContainer.isValid() );
161 
162  for (const TileDigitsCollection* digitsCollection : *digitsContainer) {
163  if (digitsCollection->empty() ) continue;
164 
165  HWIdentifier adc_id = digitsCollection->front()->adc_HWID();
166  int ros = m_tileHWID->ros(adc_id);
167  int drawer = m_tileHWID->drawer(adc_id);
168  int partition = ros - 1;
169 
170  std::vector<uint32_t> headers = digitsCollection->getFragChipHeaderWords();
171  int nDMU = headers.size();
172  if (nDMU > MAX_DMU) nDMU = MAX_DMU;
173 
174  int fragId = digitsCollection->identify();
175  if (!std::binary_search(m_fragIDsToIgnoreDMUerrors.begin(), m_fragIDsToIgnoreDMUerrors.end(), fragId)) {
176  for (int dmu = 0; dmu < nDMU; ++dmu) {
177  bool isDataCorrupted = isDmuHeaderError(headers[dmu]);
178  corruptedData[partition][drawer][0][dmu] = isDataCorrupted;
179  corruptedData[partition][drawer][1][dmu] = isDataCorrupted;
180  }
181  }
182  }
183 
184  int nChannels[Tile::MAX_ROS-1] = {0};
185  float partitionTimeSum[Tile::MAX_ROS-1] = {0};
186 
187  float offlineTime[Tile::MAX_ROS-1][Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN] = {{{{0}}}};
188  float offlineAmplitude[Tile::MAX_ROS-1][Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN] = {{{{0}}}};
189 
190 
192  ATH_CHECK( rawChannelContainer.isValid() );
193 
194  TileRawChannelUnit::UNIT rawChannelUnit = rawChannelContainer->get_unit();
195 
196  for (const TileRawChannelCollection* rawChannelCollection : *rawChannelContainer) {
197  if (rawChannelCollection->empty()) continue;
198 
199  HWIdentifier adc_id = rawChannelCollection->front()->adc_HWID();
200  int ros = m_tileHWID->ros(adc_id);
201  int drawer = m_tileHWID->drawer(adc_id);
202  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
203  int partition = ros - 1;
204 
205  int fragId = rawChannelCollection->identify();
206  bool demonstrator = (std::binary_search(m_fragIDsDemonstrators.begin(), m_fragIDsDemonstrators.end(), fragId));
207 
208  std::array<double, 2>& minCharge = demonstrator ? minChargeForDemonstrator : minChargeForNormalModule;
209  std::array<double, 2>& maxCharge = demonstrator ? maxChargeForDemonstrator : maxChargeForNormalModule;
210  double charge = demonstrator ? chargeForDemonstrator : chargeForNormalModule;
211  double invCharge = demonstrator ? invChargeForDemonstrator : invChargeForNormalModule;
212 
213  for (const TileRawChannel* rawChannel : *rawChannelCollection) {
214  adc_id = rawChannel->adc_HWID();
215  int channel = m_tileHWID->channel(adc_id);
216  int adc = m_tileHWID->adc(adc_id);
217 
218  if (corruptedData[partition][drawer][adc][channel / 3]) continue;
219 
220  std::string channelGainSuffix = "_" + std::to_string(channel) + "_" + std::to_string(adc);
221 
222  float amplitude = rawChannel->amplitude();
223  if (rawChannelUnit != m_finalRawChannelUnit) {
224  // Put everything in PicoCoulomb by default for all run types
225  // For Laser and Physcs calibrate in CesiumPicoCoulomb for all channels, but the MBTS channels,
226  // for which we keep the calibration in PicoCoulombCesium pC for consistency (no Cs calibration is possible)
228  // if EB then check that they are not MBTS channel
229  int index, pmt;
230  rawChannel->cell_ID_index(index, pmt);
231  if (index < -1) { // MBTS channel
232  amplitude = emScale->calibrateChannel(drawerIdx, channel, adc, amplitude, rawChannelUnit, TileRawChannelUnit::PicoCoulombs);
233  }
234  }
235  amplitude = emScale->calibrateChannel(drawerIdx, channel, adc, amplitude, rawChannelUnit, m_finalRawChannelUnit);
236  } // no need to calibrate
237 
238  offlineAmplitude[partition][drawer][channel][adc] = amplitude;
239 
240  float time = rawChannel->time();
241  offlineTime[partition][drawer][channel][adc] = time;
242 
243  if (m_runTypeIsNotCIS) {
244  auto monAmplitude = Monitored::Scalar<float>("amp" + channelGainSuffix, amplitude);
245  fill(m_tools[m_ampGroups[partition][drawer]], monAmplitude);
246 
247  if (time != 0) {
248  // Don't fill the time when it is exactly 0, which is a conventional value to say that it is not
249  // calculated when the difference between the max(samples) - min(samples) < threshold
250  auto monTime = Monitored::Scalar<float>("time" + channelGainSuffix, time);
252  }
253 
255  || amplitude < m_minAmpForCorrectedTime
256  // In EB exclude some channels (most likely single PMT) from calculating average time
257  || ((ros > 2) && (channel < 6 || channel == 12 || channel == 13 || channel == 18 || channel == 19))) {
258  continue;
259  } else {
260  partitionTimeSum[partition] += time;
261  nChannels[partition] += 1;
262  }
263 
264  } else { // It's CIS run
265 
266  if (m_fill2DHistograms) {
267  auto monAmplitude = Monitored::Scalar<float>("amp" + channelGainSuffix, amplitude);
268  auto monCharge = Monitored::Scalar<float>("charge" + channelGainSuffix, charge);
269  fill(m_tools[ampVsQCapGroups[partition][drawer]], monCharge, monAmplitude);
270  }
271 
272  if ((minCharge[adc] < charge) && (charge < maxCharge[adc])) {
273  double ratio = amplitude * invCharge;
274  auto monRatio = Monitored::Scalar<float>("amp_ratio" + channelGainSuffix, ratio);
275  fill(m_tools[ampOverQCapGroups[partition][drawer]], monRatio);
276 
277  auto monTime = Monitored::Scalar<float>("time" + channelGainSuffix, time);
278  fill(m_tools[timeCapGroups[partition][drawer]], monTime);
279 
280  if (m_fill2DHistograms) {
281  auto monInjTime = Monitored::Scalar<float>("inj_time" + channelGainSuffix, injectionTime);
282  fill(m_tools[timeVsTimeCapGroups[partition][drawer]], monInjTime, monTime);
283  }
284  }
285  }
286  }
287  }
288 
289  if (m_runTypeIsNotCIS) {
290  for (unsigned int partition = 0; partition < Tile::MAX_ROS - 1; ++partition) {
291  if (nChannels[partition] > 0) {
292  float averagePartitionTime = partitionTimeSum[partition] / nChannels[partition];
293  for (unsigned int drawer = 0; drawer < Tile::MAX_DRAWER; ++drawer) {
294  for (unsigned int channel = 0; channel < Tile::MAX_CHAN; ++channel) {
295  for (unsigned int gain = 0; gain < Tile::MAX_GAIN; ++gain) {
296  float time = offlineTime[partition][drawer][channel][gain];
297  if (time != 0) {
298  std::string channelGainSuffix = "_" + std::to_string(channel) + "_" + std::to_string(gain);
299  float timeCorrected = time - averagePartitionTime;
300  auto monTimeCorr = Monitored::Scalar<float>("time_corr" + channelGainSuffix, timeCorrected);
301  fill(m_tools[m_timeCorrGroups[partition][drawer]], monTimeCorr);
302  }
303  }
304  }
305  }
306  }
307  }
308  }
309 
310 
312 
314  ATH_CHECK( dspRawChannelContainer.isValid() );
315 
316  TileRawChannelUnit::UNIT dspRawChannelUnit = dspRawChannelContainer->get_unit();
317 
318  for (const TileRawChannelCollection* rawChannelCollection : *dspRawChannelContainer) {
319  if (rawChannelCollection->empty() ) continue;
320 
321  HWIdentifier adc_id = rawChannelCollection->front()->adc_HWID();
322  int ros = m_tileHWID->ros(adc_id);
323  int drawer = m_tileHWID->drawer(adc_id);
324  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
325  int partition = ros - 1;
326 
327  for (const TileRawChannel* rawChannel : *rawChannelCollection) {
328  adc_id = rawChannel->adc_HWID();
329  int channel = m_tileHWID->channel(adc_id);
330  int adc = m_tileHWID->adc(adc_id);
331 
332  if (corruptedData[partition][drawer][adc][channel / 3]) continue;
333 
334  std::string channelGainSuffix = "_" + std::to_string(channel) + "_" + std::to_string(adc);
335 
336  float amplitude = rawChannel->amplitude();
337  if (dspRawChannelUnit != m_finalRawChannelUnit) {
338  // Put everything in PicoCoulomb by default for all run types
339  // For Laser and Physcs calibrate in CesiumPicoCoulomb for all channels, but the MBTS channels,
340  // for which we keep the calibration in PicoCoulombCesium pC for consistency (no Cs calibration is possible)
342  // if EB then check that they are not MBTS channel
343  int index, pmt;
344  rawChannel->cell_ID_index(index, pmt);
345  if (index < -1) { // MBTS channel
346  amplitude = emScale->calibrateChannel(drawerIdx, channel, adc, amplitude, dspRawChannelUnit, TileRawChannelUnit::PicoCoulombs);
347  }
348  }
349  amplitude = emScale->calibrateChannel(drawerIdx, channel, adc, amplitude, dspRawChannelUnit, m_finalRawChannelUnit);
350  } // no need to calibrate
351 
352  auto monAmplitude = Monitored::Scalar<float>("dsp_amp" + channelGainSuffix, amplitude);
353  fill(m_tools[m_dspAmpGroups[partition][drawer]], monAmplitude);
354 
355  float offline_amplitude = offlineAmplitude[partition][drawer][channel][adc];
356  if (offline_amplitude > m_minOfflineAmp) {
357  float amplitudeDiff = (amplitude - offline_amplitude) / offline_amplitude;
358  auto monAmplitudeDiff = Monitored::Scalar<float>("dsp-fit_amp_diff" + channelGainSuffix, amplitudeDiff);
359  fill(m_tools[m_ampDiffGroups[partition][drawer]], monAmplitudeDiff);
360  }
361 
362  float time = rawChannel->time();
363  auto monTime = Monitored::Scalar<float>("dsp_time" + channelGainSuffix, time);
365 
366  float offline_time = offlineTime[partition][drawer][channel][adc];
367  if (offline_time != 0.) {
368  float timeDiff = time - offline_time;
369  auto monTimeDiff = Monitored::Scalar<float>("dsp-fit_time_diff" + channelGainSuffix, timeDiff);
370  fill(m_tools[m_timeDiffGroups[partition][drawer]], monTimeDiff);
371  }
372 
373  float chi2 = rawChannel->quality();
374  auto monChi2 = Monitored::Scalar<float>("dsp_chi2" + channelGainSuffix, chi2);
376 
377  fill(m_tools[m_dspChi2VsAmpGroups[partition][drawer]], monAmplitude, monChi2);
378  }
379  }
380  }
381 
382  fill("TileRawChannelMonExecuteTime", timer);
383 
384  return StatusCode::SUCCESS;
385 }
386 
388 
389  bool error = false;
391  error = true;
392  } else if (isHeaderParityError(header)) {
393  error = true;
394  } else if ((header >> 25) & 0x1) {
395  // Memory Parity Error
396  error = true;
397  } else if ((header >> 24) & 0x1) {
398  // Single Strobe Error
399  error = true;
400  } else if ((header >> 23) & 0x1) {
401  // Double Strobe Error
402  error = true;
403  }
404 
405  return error;
406 }
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
covarianceTool.headers
headers
Definition: covarianceTool.py:537
TileRawChannelMonitorAlgorithm::m_calibUnit
Gaudi::Property< int > m_calibUnit
Definition: TileRawChannelMonitorAlgorithm.h:41
RPDUtils::nChannels
unsigned constexpr int nChannels
Definition: RPDUtils.h:23
TileCalibMonitorAlgorithm::m_tileInfo
const TileInfo * m_tileInfo
Definition: TileCalibMonitorAlgorithm.h:98
TileRawChannelMonitorAlgorithm::m_timeVsTime5Groups
std::vector< std::vector< int > > m_timeVsTime5Groups
Definition: TileRawChannelMonitorAlgorithm.h:73
header
Definition: hcg.cxx:526
TileRawChannelMonitorAlgorithm::m_ampOverQ100Groups
std::vector< std::vector< int > > m_ampOverQ100Groups
Definition: TileRawChannelMonitorAlgorithm.h:76
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TileCalibMonitorAlgorithm::isHeaderFormatError
bool isHeaderFormatError(uint32_t header) const
Definition: TileCalibMonitorAlgorithm.h:42
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TileCalibMonitorAlgorithm::m_runType
Gaudi::Property< int > m_runType
Definition: TileCalibMonitorAlgorithm.h:84
TileRawChannelMonitorAlgorithm::m_ampOverQ5Groups
std::vector< std::vector< int > > m_ampOverQ5Groups
Definition: TileRawChannelMonitorAlgorithm.h:70
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
ReadBchFromCool.pmt
pmt
Definition: ReadBchFromCool.py:62
TileRawChannelUnit::CesiumPicoCoulombs
@ CesiumPicoCoulombs
Definition: TileRawChannelUnit.h:19
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
TileRawChannelMonitorAlgorithm::m_time100Groups
std::vector< std::vector< int > > m_time100Groups
Definition: TileRawChannelMonitorAlgorithm.h:78
TileRawChannelMonitorAlgorithm::m_fill2DHistograms
Gaudi::Property< bool > m_fill2DHistograms
Definition: TileRawChannelMonitorAlgorithm.h:47
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:206
TileCalibMonitorAlgorithm::isHeaderParityError
bool isHeaderParityError(uint32_t header) const
Definition: TileCalibMonitorAlgorithm.h:51
TileInfo.h
TileRawChannelMonitorAlgorithm::m_timeVsTime100Groups
std::vector< std::vector< int > > m_timeVsTime100Groups
Definition: TileRawChannelMonitorAlgorithm.h:79
TileRawChannelMonitorAlgorithm::m_ampGroups
std::vector< std::vector< int > > m_ampGroups
Definition: TileRawChannelMonitorAlgorithm.h:65
TileCalibUtils.h
TileRawChannelMonitorAlgorithm::m_rawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
Definition: TileRawChannelMonitorAlgorithm.h:53
TileRawChannelMonitorAlgorithm::m_emScaleKey
SG::ReadCondHandleKey< TileEMScale > m_emScaleKey
Name of TileEMScale in condition store.
Definition: TileRawChannelMonitorAlgorithm.h:62
TileCalibMonitorAlgorithm::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileCalibMonitorAlgorithm.h:97
TileRawChannelMonitorAlgorithm::m_digitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_digitsContainerKey
Definition: TileRawChannelMonitorAlgorithm.h:50
TileRawChannelUnit::PicoCoulombs
@ PicoCoulombs
Definition: TileRawChannelUnit.h:18
TileRawChannelMonitorAlgorithm::m_dspChi2VsAmpGroups
std::vector< std::vector< int > > m_dspChi2VsAmpGroups
Definition: TileRawChannelMonitorAlgorithm.h:84
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
ReadCondHandle.h
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
TileRawChannelMonitorAlgorithm::m_timeCorrGroups
std::vector< std::vector< int > > m_timeCorrGroups
Definition: TileRawChannelMonitorAlgorithm.h:67
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TileRawChannelMonitorAlgorithm::m_minOfflineAmp
Gaudi::Property< float > m_minOfflineAmp
Definition: TileRawChannelMonitorAlgorithm.h:38
TileRawChannelMonitorAlgorithm::m_fillHistogramsForDSP
Gaudi::Property< bool > m_fillHistogramsForDSP
Definition: TileRawChannelMonitorAlgorithm.h:44
TileRawChannelMonitorAlgorithm::m_runTypeIsNotCIS
bool m_runTypeIsNotCIS
Definition: TileRawChannelMonitorAlgorithm.h:93
TileRawChannelMonitorAlgorithm::m_minAmpForCorrectedTime
Gaudi::Property< float > m_minAmpForCorrectedTime
Definition: TileRawChannelMonitorAlgorithm.h:35
TileRawChannelMonitorAlgorithm::MAX_DMU
static const int MAX_DMU
Definition: TileRawChannelMonitorAlgorithm.h:89
TileEMScale::calibrateChannel
float calibrateChannel(unsigned int drawerIdx, unsigned int channel, unsigned int adc, float amplitude, TileRawChannelUnit::UNIT rawDataUnitIn, TileRawChannelUnit::UNIT rawDataUnitOut) const
Calibrate a Tile channel.
Definition: TileEMScale.cxx:136
TileRawChannelMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TileRawChannelMonitorAlgorithm.cxx:12
TileDQstatus
Class that holds Data Quality fragment information and provides functions to extract the data quality...
Definition: TileDQstatus.h:49
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
TileRawChannelMonitorAlgorithm::m_dspAmpGroups
std::vector< std::vector< int > > m_dspAmpGroups
Definition: TileRawChannelMonitorAlgorithm.h:81
Tile
Definition: TileVolumeBuilder.h:43
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:30
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::ReadHandle::get
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TileRawChannelUnit::Invalid
@ Invalid
Definition: TileRawChannelUnit.h:26
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:523
TileRawChannel
Definition: TileRawChannel.h:35
ATH_MSG_ALWAYS
#define ATH_MSG_ALWAYS(x)
Definition: AthMsgStreamMacros.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TileRawChannelMonitorAlgorithm::m_dspChi2Groups
std::vector< std::vector< int > > m_dspChi2Groups
Definition: TileRawChannelMonitorAlgorithm.h:83
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileRawChannelMonitorAlgorithm::m_timeDiffGroups
std::vector< std::vector< int > > m_timeDiffGroups
Definition: TileRawChannelMonitorAlgorithm.h:87
TileRawChannelUnit::UNIT
UNIT
Definition: TileRawChannelUnit.h:16
TileCalibMonitorAlgorithm::m_fragIDsToIgnoreDMUerrors
Gaudi::Property< std::vector< int > > m_fragIDsToIgnoreDMUerrors
Definition: TileCalibMonitorAlgorithm.h:78
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TileRawChannelMonitorAlgorithm::m_dspRawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_dspRawChannelContainerKey
Definition: TileRawChannelMonitorAlgorithm.h:56
TileCalibMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TileCalibMonitorAlgorithm.cxx:9
TileRawChannelMonitorAlgorithm::m_ampVsQ5Groups
std::vector< std::vector< int > > m_ampVsQ5Groups
Definition: TileRawChannelMonitorAlgorithm.h:71
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
TileDigitsCollection
Definition: TileDigitsCollection.h:18
TileRawChannelMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: TileRawChannelMonitorAlgorithm.cxx:111
TileCalibMonitorAlgorithm::m_dqStatusKey
SG::ReadHandleKey< TileDQstatus > m_dqStatusKey
Definition: TileCalibMonitorAlgorithm.h:87
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
TileRawChannelCollection
Definition: TileRawChannelCollection.h:12
charge
double charge(const T &p)
Definition: AtlasPID.h:756
TileCalibMonitorAlgorithm::CIS_RAMP_RUN
@ CIS_RAMP_RUN
Definition: TileCalibMonitorAlgorithm.h:72
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TileDQstatus::cispar
const uint32_t * cispar() const
CIS parameters.
Definition: TileDQstatus.h:152
TileRawChannelMonitorAlgorithm::m_dac2Charge
double m_dac2Charge[2]
Definition: TileRawChannelMonitorAlgorithm.h:92
DeMoScan.index
string index
Definition: DeMoScan.py:364
TileCablingService::isDisconnected
bool isDisconnected(int ros, int drawer, int channel) const
Definition: TileCablingService.cxx:2461
TileRawChannelMonitorAlgorithm::isDmuHeaderError
bool isDmuHeaderError(uint32_t header) const
Definition: TileRawChannelMonitorAlgorithm.cxx:387
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
python.compareTCTs.ratio
ratio
Definition: compareTCTs.py:295
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
TileRawDataContainer::get_unit
UNIT get_unit() const
Definition: TileRawDataContainer.h:60
TileCalibMonitorAlgorithm::CIS_RUN
@ CIS_RUN
Definition: TileCalibMonitorAlgorithm.h:70
python.Classes.TileCalibUtils
TileCalibUtils
Definition: TileCalib/TileCalibBlobObjs/python/Classes.py:5
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
TileCalibMonitorAlgorithm::PHYS_RUN
@ PHYS_RUN
Definition: TileCalibMonitorAlgorithm.h:66
TileRawChannelMonitorAlgorithm.h
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileAANtupleConfig.rawChannelContainer
rawChannelContainer
Definition: TileAANtupleConfig.py:120
TileRawChannelMonitorAlgorithm::m_time5Groups
std::vector< std::vector< int > > m_time5Groups
Definition: TileRawChannelMonitorAlgorithm.h:72
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
TileRawChannelMonitorAlgorithm::m_ampVsQ100Groups
std::vector< std::vector< int > > m_ampVsQ100Groups
Definition: TileRawChannelMonitorAlgorithm.h:77
ReadHandle.h
Handle class for reading from StoreGate.
TileCalibMonitorAlgorithm::m_fragIDsDemonstrators
Gaudi::Property< std::vector< int > > m_fragIDsDemonstrators
Definition: TileCalibMonitorAlgorithm.h:81
TileRawChannelMonitorAlgorithm::m_finalRawChannelUnit
TileRawChannelUnit::UNIT m_finalRawChannelUnit
Definition: TileRawChannelMonitorAlgorithm.h:90
TileRawChannelMonitorAlgorithm::m_ampDiffGroups
std::vector< std::vector< int > > m_ampDiffGroups
Definition: TileRawChannelMonitorAlgorithm.h:86
get_generator_info.error
error
Definition: get_generator_info.py:40
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
error
Definition: IImpactPoint3dEstimator.h:70
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
TileRawChannelMonitorAlgorithm::m_timeGroups
std::vector< std::vector< int > > m_timeGroups
Definition: TileRawChannelMonitorAlgorithm.h:66
TileInfo::ADCmax
int ADCmax() const
Returns the maximum ADC output (10 bits --> 1023)
Definition: TileInfo.h:71
TileCalibMonitorAlgorithm::m_cabling
const TileCablingService * m_cabling
Definition: TileCalibMonitorAlgorithm.h:96
TileRawChannelMonitorAlgorithm::m_dspTimeGroups
std::vector< std::vector< int > > m_dspTimeGroups
Definition: TileRawChannelMonitorAlgorithm.h:82