ATLAS Offline Software
RpdSubtractCentroidTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 #include "TMath.h"
11 
12 namespace ZDC
13 {
14 
16  asg::AsgTool(name),
17  m_name(name),
18  m_init(false)
19 {
20  #ifndef XAOD_STANDALONE
21  declareInterface<IZdcAnalysisTool>(this);
22  #endif
23 
24  declareProperty("ZdcModuleContainerName", m_zdcModuleContainerName = "ZdcModules", "Location of ZDC processed data");
25  declareProperty("ZdcSumContainerName", m_zdcSumContainerName = "ZdcSums", "Location of ZDC processed sums");
26  declareProperty("WriteAux", m_writeAux = true, "If true, write AOD decorations");
27  declareProperty("AuxSuffix", m_auxSuffix = "", "Suffix to add to AOD decorations for reading and writing");
28  declareProperty("MinZdcEnergy", m_minZdcEnergy = {-1.0, -1.0}, "Minimum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
29  declareProperty("MaxZdcEnergy", m_maxZdcEnergy = {-1.0, -1.0}, "Maximum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
30  declareProperty("MinEmEnergy", m_minEmEnergy = {-1.0, -1.0}, "Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
31  declareProperty("MaxEmEnergy", m_maxEmEnergy = {-1.0, -1.0}, "Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
32  declareProperty("PileupMaxFrac", m_pileupMaxFrac = {1.0, 1.0}, "Maximum fractional pileup allowed in an RPD channel for valid centroid; per side");
33  declareProperty("ExcessiveSubtrUnderflowFrac", m_maximumNegativeSubtrAmpFrac = {1.0, 1.0}, "If any RPD channel subtracted amplitude is negative and its fraction of subtracted amplitude sum is greater than or equal to this number, the centroid is invalid; per side");
34  declareProperty("UseRpdSumAdc", m_useRpdSumAdc = true, "If true, use RPD channel sum ADC for centroid calculation, else use RPD channel max ADC");
35  declareProperty("UseCalibDecorations", m_useCalibDecorations = true, "If true, use RPD channel sum/max ADC decorations with output calibration factors applied during reconstruction, else use decorations with raw values");
36 }
37 
39 {
40  ATH_MSG_DEBUG("Deleting RpdSubtractCentroidTool named " << m_name);
41 }
42 
44 {
45  for (unsigned int side : {0, 1}) {
46  if (m_minZdcEnergy.at(side) < 0) m_minZdcEnergy.at(side) = -std::numeric_limits<float>::infinity();
47  if (m_maxZdcEnergy.at(side) < 0) m_maxZdcEnergy.at(side) = std::numeric_limits<float>::infinity();
48  if (m_minEmEnergy.at(side) < 0) m_minEmEnergy.at(side) = -std::numeric_limits<float>::infinity();
49  if (m_maxEmEnergy.at(side) < 0) m_maxEmEnergy.at(side) = std::numeric_limits<float>::infinity();
50  }
51 
53 
54  // zdc modules read keys
56  ATH_CHECK(m_xposRelKey.initialize());
58  ATH_CHECK(m_yposRelKey.initialize());
60  ATH_CHECK(m_rowKey.initialize());
62  ATH_CHECK(m_colKey.initialize());
66  ATH_CHECK(m_ZDCModuleStatusKey.initialize());
68  ATH_CHECK(m_RPDChannelAmplitudeKey.initialize());
69  m_RPDChannelAmplitudeCalibKey = m_zdcModuleContainerName + ".RPDChannelAmplitudeCalib" + m_auxSuffix;
72  ATH_CHECK(m_RPDChannelMaxADCKey.initialize());
78  ATH_CHECK(m_RPDChannelStatusKey.initialize());
79 
80  // zdc sums read keys
82  ATH_CHECK(m_RPDSideStatusKey.initialize());
84  ATH_CHECK(m_ZDCFinalEnergyKey.initialize());
86  ATH_CHECK(m_ZDCStatusKey.initialize());
87 
88  // zdc sums write keys
89  m_centroidEventValidKey = m_zdcSumContainerName + ".centroidEventValid" + m_auxSuffix;
90  ATH_CHECK(m_centroidEventValidKey.initialize());
92  ATH_CHECK(m_centroidStatusKey.initialize());
93  m_RPDChannelSubtrAmpKey = m_zdcSumContainerName + ".RPDChannelSubtrAmp" + m_auxSuffix;
94  ATH_CHECK(m_RPDChannelSubtrAmpKey.initialize());
96  ATH_CHECK(m_RPDSubtrAmpSumKey.initialize());
97  m_xCentroidPreGeomCorPreAvgSubtrKey = m_zdcSumContainerName + ".xCentroidPreGeomCorPreAvgSubtr" + m_auxSuffix;
99  m_yCentroidPreGeomCorPreAvgSubtrKey = m_zdcSumContainerName + ".yCentroidPreGeomCorPreAvgSubtr" + m_auxSuffix;
101  m_xCentroidPreAvgSubtrKey = m_zdcSumContainerName + ".xCentroidPreAvgSubtr" + m_auxSuffix;
102  ATH_CHECK(m_xCentroidPreAvgSubtrKey.initialize());
103  m_yCentroidPreAvgSubtrKey = m_zdcSumContainerName + ".yCentroidPreAvgSubtr" + m_auxSuffix;
104  ATH_CHECK(m_yCentroidPreAvgSubtrKey.initialize());
106  ATH_CHECK(m_xCentroidKey.initialize());
108  ATH_CHECK(m_yCentroidKey.initialize());
110  ATH_CHECK(m_xRowCentroidKey.initialize());
112  ATH_CHECK(m_yColCentroidKey.initialize());
113  m_reactionPlaneAngleKey = m_zdcSumContainerName + ".reactionPlaneAngle" + m_auxSuffix;
114  ATH_CHECK(m_reactionPlaneAngleKey.initialize());
115  m_cosDeltaReactionPlaneAngleKey = m_zdcSumContainerName + ".cosDeltaReactionPlaneAngle" + m_auxSuffix;
117 
118  if (m_writeAux && m_auxSuffix != "") {
119  ATH_MSG_DEBUG("suffix string = " << m_auxSuffix);
120  }
121 
122  m_init = true;
123 
124  return StatusCode::SUCCESS;
125 }
126 
128 {
129  m_eventStatus = false;
130  for (auto& status : m_centroidStatus) {
131  status.reset();
132  status.set(ValidBit, true);
133  }
134  for (auto& sidev : m_subtrAmp) {
135  std::fill(sidev.begin(), sidev.end(), 0.0);
136  }
137  for (auto& sidev : m_subtrAmpRowSum) {
138  std::fill(sidev.begin(), sidev.end(), 0.0);
139  }
140  for (auto& sidev : m_subtrAmpColSum) {
141  std::fill(sidev.begin(), sidev.end(), 0.0);
142  }
143  m_subtrAmpSum = {0.0, 0.0};
146  m_xCentroidPreAvgSubtr = {0.0, 0.0};
147  m_yCentroidPreAvgSubtr = {0.0, 0.0};
148  m_xCentroid = {0.0, 0.0};
149  m_yCentroid = {0.0, 0.0};
150  for (auto& sidev : m_xRowCentroid) {
151  std::fill(sidev.begin(), sidev.end(), 0.0);
152  }
153  for (auto& sidev : m_yColCentroid) {
154  std::fill(sidev.begin(), sidev.end(), 0.0);
155  }
156  m_reactionPlaneAngle = {0.0, 0.0};
158 }
159 
160 bool RpdSubtractCentroidTool::readAOD(xAOD::ZdcModuleContainer const& moduleContainer, xAOD::ZdcModuleContainer const& moduleSumContainer)
161 {
162  // initialize read handles from read handle keys
164  if (!eventInfo.isValid()) {
165  return false;
166  }
182 
183  ATH_MSG_DEBUG("Processing modules");
184 
185  for (auto const& zdcModule : moduleContainer) {
186  int side = -1;
187  if (zdcModule->zdcSide() == -1) {
188  side = 0;
189  } else if (zdcModule->zdcSide() == 1) {
190  side = 1;
191  } else {
192  continue;
193  }
194  if (zdcModule->zdcType() == 0) {
195  // this is a ZDC module
196  if (zdcModule->zdcModule() == 0) {
197  // this is an EM module
198  m_emCalibEnergy.at(side) = zdcModuleCalibEnergyHandle(*zdcModule);
199  m_emStatus.at(side) = zdcModuleStatusHandle(*zdcModule);
200  }
201  } else if (zdcModule->zdcType() == 1) {
202  // this is a Run 3 RPD module
203  // (it is assumed that this tool will not be invoked otherwise)
204  //
205  unsigned int const& rpdChannel = zdcModule->zdcChannel();
206  if (rpdChannel > 15) {
207  ATH_MSG_WARNING("Invalid RPD channel found on side " << side << ", channel number = " << rpdChannel << ", skipping this module");
208  continue;
209  } else {
210  unsigned short const& row = rowHandle(*zdcModule);
211  unsigned short const& col = colHandle(*zdcModule);
212  m_rpdChannelData.at(side).at(row).at(col).channel = rpdChannel;
213  m_rpdChannelData.at(side).at(row).at(col).xposRel = xposRelHandle(*zdcModule);
214  m_rpdChannelData.at(side).at(row).at(col).yposRel = yposRelHandle(*zdcModule);
215  m_rpdChannelData.at(side).at(row).at(col).row = rowHandle(*zdcModule);
216  m_rpdChannelData.at(side).at(row).at(col).col = colHandle(*zdcModule);
217  if (m_useRpdSumAdc) {
218  if (m_useCalibDecorations) {
219  m_rpdChannelData.at(side).at(row).at(col).amp = rpdChannelSumAdcCalibHandle(*zdcModule);
220  } else {
221  m_rpdChannelData.at(side).at(row).at(col).amp = rpdChannelSumAdcHandle(*zdcModule);
222  }
223  } else {
224  if (m_useCalibDecorations) {
225  m_rpdChannelData.at(side).at(row).at(col).amp = rpdChannelMaxADCCalibHandle(*zdcModule);
226  } else {
227  m_rpdChannelData.at(side).at(row).at(col).amp = rpdChannelMaxADCHandle(*zdcModule);
228  }
229  }
230  m_rpdChannelData.at(side).at(row).at(col).pileupFrac = rpdChannelPileupFracHandle(*zdcModule);
231  m_rpdChannelData.at(side).at(row).at(col).status = rpdChannelStatusHandle(*zdcModule);
232  }
233  }
234  }
235 
236  for (auto const& zdcSum: moduleSumContainer) {
237  int side = -1;
238  if (zdcSum->zdcSide() == -1) {
239  side = 0;
240  } else if (zdcSum->zdcSide() == 1) {
241  side = 1;
242  } else {
243  continue;
244  }
245  m_rpdSideStatus.at(side) = rpdSideStatusHandle(*zdcSum);
246  m_zdcSideStatus.at(side) = zdcStatusHandle(*zdcSum);
247  m_zdcFinalEnergy.at(side) = zdcFinalEnergyHandle(*zdcSum);
248  }
249 
250  return true;
251 }
252 
254 {
255  if (!m_zdcSideStatus.at(side)) {
256  // zdc bad
257  m_centroidStatus.at(side).set(ZDCInvalidBit, true);
258  m_centroidStatus.at(side).set(ValidBit, false);
259  } else {
260  // zdc good
261  if (m_zdcFinalEnergy.at(side) < m_minZdcEnergy.at(side)) {
263  m_centroidStatus.at(side).set(ValidBit, false);
264  }
265  if (m_zdcFinalEnergy.at(side) > m_maxZdcEnergy.at(side)) {
267  m_centroidStatus.at(side).set(ValidBit, false);
268  }
269  }
270 
272  // em bad
273  m_centroidStatus.at(side).set(EMInvalidBit, true);
274  m_centroidStatus.at(side).set(ValidBit, false);
275  } else {
276  // em good
277  if (m_emCalibEnergy.at(side) < m_minEmEnergy.at(side)) {
279  m_centroidStatus.at(side).set(ValidBit, false);
280  }
281  if (m_emCalibEnergy.at(side) > m_maxEmEnergy.at(side)) {
283  m_centroidStatus.at(side).set(ValidBit, false);
284  }
285  }
286 
288  m_centroidStatus.at(side).set(PileupBit, true);
289  }
290 
291  for (unsigned int row = 0; row < m_nRows; row++) {
292  for (unsigned int col = 0; col < m_nCols; col++) {
293  if (m_rpdChannelData.at(side).at(row).at(col).pileupFrac > m_pileupMaxFrac.at(side)) {
295  m_centroidStatus.at(side).set(ValidBit, false);
296  }
297  }
298  }
299 
301  m_centroidStatus.at(side).set(RPDInvalidBit, true);
302  m_centroidStatus.at(side).set(ValidBit, false);
303  return false;
304  }
305 
306  return true;
307 }
308 
310 {
311  for (unsigned int row = 0; row < m_nRows; row++) {
312  for (unsigned int col = 0; col < m_nCols; col++) {
313  float subtrAmp;
314  if (row == m_nRows - 1) {
315  // top row -> nothing to subtract
316  subtrAmp = m_rpdChannelData.at(side).at(row).at(col).amp;
317  } else {
318  // other rows -> subtract the tile above this one
319  subtrAmp = m_rpdChannelData.at(side).at(row).at(col).amp - m_rpdChannelData.at(side).at(row + 1).at(col).amp;
320  }
321  m_rpdChannelData.at(side).at(row).at(col).subtrAmp = subtrAmp;
322  m_subtrAmp.at(side).at(m_rpdChannelData.at(side).at(row).at(col).channel) = subtrAmp;
323  m_subtrAmpRowSum.at(side).at(row) += subtrAmp;
324  m_subtrAmpColSum.at(side).at(col) += subtrAmp;
325  m_subtrAmpSum.at(side) += subtrAmp;
326  }
327  }
328 
329  if (m_subtrAmpSum.at(side) <= 0) {
330  m_centroidStatus.at(side).set(ZeroSumBit, true);
331  m_centroidStatus.at(side).set(ValidBit, false);
332  return false;
333  }
334 
335  for (unsigned int row = 0; row < m_nRows; row++) {
336  for (unsigned int col = 0; col < m_nCols; col++) {
337  const float &subtrAmp = m_rpdChannelData.at(side).at(row).at(col).subtrAmp;
338  if (subtrAmp < 0 && -subtrAmp/m_subtrAmpSum.at(side) > m_maximumNegativeSubtrAmpFrac.at(side)) {
340  m_centroidStatus.at(side).set(ValidBit, false);
341  }
342  }
343  }
344 
345  return true;
346 }
347 
349 {
350  for (unsigned int col = 0; col < m_nCols; col++) {
352  }
353 
354  for (unsigned int row = 0; row < m_nRows; row++) {
356  }
357 
358  for (unsigned int row = 0; row < m_nRows; row++) {
359  if (m_subtrAmpRowSum.at(side).at(row) <= 0) continue;
360  for (unsigned int col = 0; col < m_nCols; col++) {
361  m_xRowCentroid.at(side).at(row) += m_rpdChannelData.at(side).at(row).at(col).subtrAmp*m_rpdChannelData.at(side).at(row).at(col).xposRel/m_subtrAmpRowSum.at(side).at(row);
362  }
363  m_centroidStatus.at(side).set(Row0ValidBit + row, true);
364  }
365 
366  for (unsigned int col = 0; col < m_nCols; col++) {
367  if (m_subtrAmpColSum.at(side).at(col) <= 0) continue;
368  for (unsigned int row = 0; row < m_nRows; row++) {
369  m_yColCentroid.at(side).at(col) += m_rpdChannelData.at(side).at(row).at(col).subtrAmp*m_rpdChannelData.at(side).at(row).at(col).yposRel/m_subtrAmpColSum.at(side).at(col);
370  }
371  m_centroidStatus.at(side).set(Col0ValidBit + col, true);
372  }
373 }
374 
376 {
380 }
381 
383 {
386 }
387 
389 {
390  double angle = TMath::ATan2(m_yCentroid.at(side), m_xCentroid.at(side));
391  // our angles are now simply the angle of the centroid in ATLAS coordinates on either side
392  // however, we expect correlated deflection, so we want the difference between the angles
393  // to be small when the centroids are in opposite quadrants of the two RPDs
394  // therefore, we add pi to side A (chosen arbitrarily)
395  if (side == 1) angle += TMath::Pi();
396  // also, restrict to [-pi, pi)
397  // we choose this rather than (-pi, pi] for ease of binning the edge case +/- pi
398  if (angle >= TMath::Pi()) angle -= TMath::TwoPi();
400 }
401 
402 void RpdSubtractCentroidTool::writeAOD(xAOD::ZdcModuleContainer const& moduleSumContainer) const
403 {
404  if (!m_writeAux) return;
405  ATH_MSG_DEBUG("Adding variables with suffix=" + m_auxSuffix);
406 
407  // initialize write handles from write handle keys
422 
423  for (auto const& zdcSum: moduleSumContainer) {
424  int side = -1;
425  if (zdcSum->zdcSide() == -1) {
426  side = 0;
427  } else if (zdcSum->zdcSide() == 1) {
428  side = 1;
429  } else {
430  // global sum container
431  // event status is bool, but stored as char to save disk space
432  centroidEventValidHandle(*zdcSum) = m_eventStatus;
433  cosDeltaReactionPlaneAngleHandle(*zdcSum) = m_cosDeltaReactionPlaneAngle;
434  continue;
435  }
436  centroidStatusHandle(*zdcSum) = static_cast<unsigned int>(m_centroidStatus.at(side).to_ulong());
437  rpdChannelSubtrAmpHandle(*zdcSum) = m_subtrAmp.at(side);
438  rpdSubtrAmpSumHandle(*zdcSum) = m_subtrAmpSum.at(side);
439  xCentroidPreGeomCorPreAvgSubtrHandle(*zdcSum) = m_xCentroidPreGeomCorPreAvgSubtr.at(side);
440  yCentroidPreGeomCorPreAvgSubtrHandle(*zdcSum) = m_yCentroidPreGeomCorPreAvgSubtr.at(side);
441  xCentroidPreAvgSubtrHandle(*zdcSum) = m_xCentroidPreAvgSubtr.at(side);
442  yCentroidPreAvgSubtrHandle(*zdcSum) = m_yCentroidPreAvgSubtr.at(side);
443  xCentroidHandle(*zdcSum) = m_xCentroid.at(side);
444  yCentroidHandle(*zdcSum) = m_yCentroid.at(side);
445  xRowCentroidHandle(*zdcSum) = m_xRowCentroid.at(side);
446  yColCentroidHandle(*zdcSum) = m_yColCentroid.at(side);
447  reactionPlaneAngleHandle(*zdcSum) = m_reactionPlaneAngle.at(side);
448  }
449 }
450 
451 
453 {
454  if (moduleContainer.size() == 0) {
455  // no modules - do nothing
456  return StatusCode::SUCCESS;
457  }
458  reset();
459  if (!readAOD(moduleContainer, moduleSumContainer)) return StatusCode::FAILURE;
460  for (unsigned int side : {0, 1}) {
461  if (!checkZdcRpdValidity(side)) continue; // rpd invalid -> don't calculate centroid
462  if (!subtractRpdAmplitudes(side)) continue; // bad total sum -> don't calculate centroid
467  m_centroidStatus.at(side).set(HasCentroidBit, true);
468  }
471  }
472  if (m_centroidStatus.at(0)[ValidBit] && m_centroidStatus.at(1)[ValidBit]) {
473  m_eventStatus = true; // event is good for analysis
474  }
475  writeAOD(moduleSumContainer);
476  ATH_MSG_DEBUG("Finishing event processing");
477  return StatusCode::SUCCESS;
478 }
479 
481 {
482  if (!m_init) {
483  ATH_MSG_WARNING("Tool not initialized!");
484  return StatusCode::FAILURE;
485  }
486  ATH_MSG_DEBUG("Trying to retrieve " << m_zdcModuleContainerName);
487  xAOD::ZdcModuleContainer const* zdcModules = nullptr;
489  xAOD::ZdcModuleContainer const* zdcSums = nullptr;
491  ATH_CHECK(recoZdcModules(*zdcModules, *zdcSums));
492  return StatusCode::SUCCESS;
493 }
494 
495 } // namespace ZDC
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ZDC::RpdSubtractCentroidTool::m_RPDChannelMaxADCCalibKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelMaxADCCalibKey
Definition: RpdSubtractCentroidTool.h:221
query_example.row
row
Definition: query_example.py:24
ZDC::RpdSubtractCentroidTool::checkZdcRpdValidity
bool checkZdcRpdValidity(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:253
ZDC::RpdSubtractCentroidTool::m_zdcSumContainerName
std::string m_zdcSumContainerName
Definition: RpdSubtractCentroidTool.h:66
ZDC::RpdSubtractCentroidTool::m_init
bool m_init
Definition: RpdSubtractCentroidTool.h:93
ZDC::RpdSubtractCentroidTool::m_ZDCFinalEnergyKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCFinalEnergyKey
Definition: RpdSubtractCentroidTool.h:237
ZDC::RpdSubtractCentroidTool::m_reactionPlaneAngle
std::array< float, 2 > m_reactionPlaneAngle
the y centroid for each column on each side
Definition: RpdSubtractCentroidTool.h:160
ZDC::RpdSubtractCentroidTool::m_maxEmEnergy
std::vector< float > m_maxEmEnergy
Definition: RpdSubtractCentroidTool.h:73
ZDC::RpdSubtractCentroidTool::m_RPDChannelMaxADCKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelMaxADCKey
Definition: RpdSubtractCentroidTool.h:217
ZDC::RpdSubtractCentroidTool::m_subtrAmpColSum
std::array< std::vector< float >, 2 > m_subtrAmpColSum
subtracted amplitude for each row on each side
Definition: RpdSubtractCentroidTool.h:141
ZDC::RpdSubtractCentroidTool::RPDInvalidBit
@ RPDInvalidBit
Definition: RpdSubtractCentroidTool.h:38
ZDC::RpdSubtractCentroidTool::m_centroidStatusKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_centroidStatusKey
Definition: RpdSubtractCentroidTool.h:251
ZDC::RpdSubtractCentroidTool::m_centroidStatus
std::array< std::bitset< 32 >, 2 > m_centroidStatus
event status
Definition: RpdSubtractCentroidTool.h:132
ZDC::RpdSubtractCentroidTool::m_RPDChannelSubtrAmpKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelSubtrAmpKey
Definition: RpdSubtractCentroidTool.h:255
ZDC::RpdSubtractCentroidTool::m_RPDChannelPileupFracKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelPileupFracKey
Definition: RpdSubtractCentroidTool.h:225
ZDC::RpdSubtractCentroidTool::m_reactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_reactionPlaneAngleKey
Definition: RpdSubtractCentroidTool.h:295
ZDC::RpdSubtractCentroidTool::ExcessiveZDCEnergyBit
@ ExcessiveZDCEnergyBit
Definition: RpdSubtractCentroidTool.h:34
ZDCPulseAnalyzer.h
ZDC::RpdSubtractCentroidTool::m_RPDSubtrAmpSumKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDSubtrAmpSumKey
Definition: RpdSubtractCentroidTool.h:259
ZDC::RpdSubtractCentroidTool::m_cosDeltaReactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_cosDeltaReactionPlaneAngleKey
Definition: RpdSubtractCentroidTool.h:299
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
ZDC::RpdSubtractCentroidTool::m_auxSuffix
std::string m_auxSuffix
Definition: RpdSubtractCentroidTool.h:68
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ZDC::RpdSubtractCentroidTool::subtractAverageCentroid
void subtractAverageCentroid(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:382
ZDC::RpdSubtractCentroidTool::PileupBit
@ PileupBit
Definition: RpdSubtractCentroidTool.h:39
ZDC::RpdSubtractCentroidTool::m_subtrAmp
std::array< std::vector< float >, 2 > m_subtrAmp
centroid status (valid by default) on each side
Definition: RpdSubtractCentroidTool.h:133
ZDC::RpdSubtractCentroidTool::m_emCalibEnergy
std::array< float, 2 > m_emCalibEnergy
ZDC final (calibrated) energy on each side.
Definition: RpdSubtractCentroidTool.h:111
ZDC::RpdSubtractCentroidTool::m_RPDSideStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDSideStatusKey
Definition: RpdSubtractCentroidTool.h:233
ZDC::RpdSubtractCentroidTool::Col0ValidBit
@ Col0ValidBit
Definition: RpdSubtractCentroidTool.h:48
ZDC::RpdSubtractCentroidTool::recoZdcModules
StatusCode recoZdcModules(const xAOD::ZdcModuleContainer &moduleContainer, const xAOD::ZdcModuleContainer &moduleSumContainer) override
Definition: RpdSubtractCentroidTool.cxx:452
ZDC::RpdSubtractCentroidTool::m_yCentroid
std::array< float, 2 > m_yCentroid
x centroid after geomerty correction and after average subtraction on each side
Definition: RpdSubtractCentroidTool.h:151
ZDC::RpdSubtractCentroidTool::RpdSubtractCentroidTool
RpdSubtractCentroidTool(const std::string &name)
Definition: RpdSubtractCentroidTool.cxx:15
ZDC::RpdSubtractCentroidTool::m_useRpdSumAdc
bool m_useRpdSumAdc
Definition: RpdSubtractCentroidTool.h:76
asg
Definition: DataHandleTestTool.h:28
ZDC::RpdSubtractCentroidTool::ZDCInvalidBit
@ ZDCInvalidBit
Definition: RpdSubtractCentroidTool.h:32
ZDC::RpdSubtractCentroidTool::ExcessiveEMEnergyBit
@ ExcessiveEMEnergyBit
Definition: RpdSubtractCentroidTool.h:37
ZDC::RpdSubtractCentroidTool::m_subtrAmpSum
std::array< float, 2 > m_subtrAmpSum
subtracted amplitude for each column on each side
Definition: RpdSubtractCentroidTool.h:145
ZDC::RpdSubtractCentroidTool::m_useCalibDecorations
bool m_useCalibDecorations
Definition: RpdSubtractCentroidTool.h:77
ZDC::RpdSubtractCentroidTool::m_yColCentroid
std::array< std::vector< float >, 2 > m_yColCentroid
the x centroid for each row on each side
Definition: RpdSubtractCentroidTool.h:156
ZDC::RpdSubtractCentroidTool::m_xCentroidPreAvgSubtr
std::array< float, 2 > m_xCentroidPreAvgSubtr
y centroid before geomerty correction and before average subtraction (RPD detector coordinates) on ea...
Definition: RpdSubtractCentroidTool.h:148
ZDC::RpdSubtractCentroidTool::m_nCols
unsigned int const m_nCols
Definition: RpdSubtractCentroidTool.h:87
ZDC::RpdSubtractCentroidTool::HasCentroidBit
@ HasCentroidBit
Definition: RpdSubtractCentroidTool.h:31
ZDC::RpdSubtractCentroidTool::m_colKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_colKey
Definition: RpdSubtractCentroidTool.h:197
ZDC::RpdSubtractCentroidTool::ZeroSumBit
@ ZeroSumBit
Definition: RpdSubtractCentroidTool.h:41
ZDC::RpdSubtractCentroidTool::~RpdSubtractCentroidTool
virtual ~RpdSubtractCentroidTool() override
Definition: RpdSubtractCentroidTool.cxx:38
ZDC::RpdSubtractCentroidTool::m_xRowCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xRowCentroidKey
Definition: RpdSubtractCentroidTool.h:287
ZDC::RpdSubtractCentroidTool::m_ZDCStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCStatusKey
Definition: RpdSubtractCentroidTool.h:241
ZDC::RpdSubtractCentroidTool::m_emStatus
std::array< std::bitset< 32 >, 2 > m_emStatus
EM calibrated energy on each side.
Definition: RpdSubtractCentroidTool.h:112
ZDC::RpdSubtractCentroidTool::initialize
StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: RpdSubtractCentroidTool.cxx:43
ZDC::RpdSubtractCentroidTool::m_cosDeltaReactionPlaneAngle
float m_cosDeltaReactionPlaneAngle
reaction plane angle on each side
Definition: RpdSubtractCentroidTool.h:161
TRT::Hit::side
@ side
Definition: HitInfo.h:83
ZDC::RpdSubtractCentroidTool::subtractRpdAmplitudes
bool subtractRpdAmplitudes(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:309
ZDC::RpdSubtractCentroidTool::ValidBit
@ ValidBit
Definition: RpdSubtractCentroidTool.h:30
ZDC::RpdSubtractCentroidTool::m_yCentroidPreAvgSubtr
std::array< float, 2 > m_yCentroidPreAvgSubtr
x centroid after geomerty correction and before average subtraction on each side
Definition: RpdSubtractCentroidTool.h:149
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ZDCPulseAnalyzer::FailBit
@ FailBit
Definition: ZDCPulseAnalyzer.h:28
ZDC::RpdSubtractCentroidTool::m_alignmentYOffset
std::array< float, 2 > m_alignmentYOffset
geometry + crossing angle correction in x (ATLAS coordinates)
Definition: RpdSubtractCentroidTool.h:121
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
ZDC::RpdSubtractCentroidTool::m_alignmentXOffset
std::array< float, 2 > m_alignmentXOffset
RPD channel data for each channel (first index row, then index column) on each side.
Definition: RpdSubtractCentroidTool.h:120
ZDC::RpdSubtractCentroidTool::m_RPDChannelAmplitudeCalibKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelAmplitudeCalibKey
Definition: RpdSubtractCentroidTool.h:213
ZDC::RpdSubtractCentroidTool::m_xposRelKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_xposRelKey
Definition: RpdSubtractCentroidTool.h:185
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ZDC::RpdSubtractCentroidTool::m_yCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:275
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
ZDC::RpdSubtractCentroidTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: RpdSubtractCentroidTool.h:181
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:99
ZDC::RpdSubtractCentroidTool::m_rpdChannelData
std::array< std::vector< std::vector< RpdChannelData > >, 2 > m_rpdChannelData
EM modlue status word on each side.
Definition: RpdSubtractCentroidTool.h:113
ZDC::RpdSubtractCentroidTool::m_ZDCModuleCalibEnergyKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCModuleCalibEnergyKey
Definition: RpdSubtractCentroidTool.h:201
ZDC::RpdSubtractCentroidTool::m_RPDChannelAmplitudeKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelAmplitudeKey
Definition: RpdSubtractCentroidTool.h:209
ZDC::RpdSubtractCentroidTool::m_rpdSideStatus
std::array< std::bitset< 32 >, 2 > m_rpdSideStatus
Definition: RpdSubtractCentroidTool.h:108
ZDC::RpdSubtractCentroidTool::m_rowKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_rowKey
Definition: RpdSubtractCentroidTool.h:193
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ZDC::RpdSubtractCentroidTool::ExcessivePileupBit
@ ExcessivePileupBit
Definition: RpdSubtractCentroidTool.h:40
RPDDataAnalyzer::ValidBit
@ ValidBit
Definition: RPDDataAnalyzer.h:39
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
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ZDC::RpdSubtractCentroidTool::reset
void reset()
cosine of difference between reaction plane angles of the two sides
Definition: RpdSubtractCentroidTool.cxx:127
WriteDecorHandle.h
Handle class for adding a decoration to an object.
ZDC::RpdSubtractCentroidTool::m_ZDCModuleStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_ZDCModuleStatusKey
Definition: RpdSubtractCentroidTool.h:205
ZDC::RpdSubtractCentroidTool::m_writeAux
bool m_writeAux
Definition: RpdSubtractCentroidTool.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ZDC::RpdSubtractCentroidTool::m_RPDChannelStatusKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelStatusKey
Definition: RpdSubtractCentroidTool.h:229
ZDC::RpdSubtractCentroidTool::m_yCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidPreGeomCorPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:267
ZDC::RpdSubtractCentroidTool::m_yCentroidPreGeomCorPreAvgSubtr
std::array< float, 2 > m_yCentroidPreGeomCorPreAvgSubtr
x centroid before geomerty correction and before average subtraction (RPD detector coordinates) on ea...
Definition: RpdSubtractCentroidTool.h:147
ZDC::RpdSubtractCentroidTool::m_eventStatus
bool m_eventStatus
average y centroid
Definition: RpdSubtractCentroidTool.h:131
ZDC::RpdSubtractCentroidTool::m_nRows
unsigned int const m_nRows
Definition: RpdSubtractCentroidTool.h:86
ZDC::RpdSubtractCentroidTool::m_maxZdcEnergy
std::vector< float > m_maxZdcEnergy
Definition: RpdSubtractCentroidTool.h:71
ZDC::RpdSubtractCentroidTool::m_xCentroidPreGeomCorPreAvgSubtr
std::array< float, 2 > m_xCentroidPreGeomCorPreAvgSubtr
subtracted amplitude sum on each side
Definition: RpdSubtractCentroidTool.h:146
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ZDC::RpdSubtractCentroidTool::m_yposRelKey
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_yposRelKey
Definition: RpdSubtractCentroidTool.h:189
RPDDataAnalyzer.h
ZDC::RpdSubtractCentroidTool::m_centroidEventValidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_centroidEventValidKey
Definition: RpdSubtractCentroidTool.h:247
query_example.col
col
Definition: query_example.py:7
ZDC::RpdSubtractCentroidTool::readAOD
bool readAOD(xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer)
Definition: RpdSubtractCentroidTool.cxx:160
ZDC::RpdSubtractCentroidTool::calculateDetectorCentroid
void calculateDetectorCentroid(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:348
ZDC::RpdSubtractCentroidTool::m_xRowCentroid
std::array< std::vector< float >, 2 > m_xRowCentroid
y centroid after geomerty correction and after average subtraction on each side
Definition: RpdSubtractCentroidTool.h:152
ZDC::RpdSubtractCentroidTool::m_pileupMaxFrac
std::vector< float > m_pileupMaxFrac
Definition: RpdSubtractCentroidTool.h:74
ZDC::RpdSubtractCentroidTool::m_xCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidKey
Definition: RpdSubtractCentroidTool.h:279
ZDC::RpdSubtractCentroidTool::m_zdcModuleContainerName
std::string m_zdcModuleContainerName
Definition: RpdSubtractCentroidTool.h:65
ZDC::RpdSubtractCentroidTool::InsufficientZDCEnergyBit
@ InsufficientZDCEnergyBit
Definition: RpdSubtractCentroidTool.h:33
ZDC::RpdSubtractCentroidTool::m_yColCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yColCentroidKey
Definition: RpdSubtractCentroidTool.h:291
ZDC::RpdSubtractCentroidTool::m_xCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidPreGeomCorPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:263
lumiFormat.fill
fill
Definition: lumiFormat.py:111
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ZDC::RpdSubtractCentroidTool::m_maximumNegativeSubtrAmpFrac
std::vector< float > m_maximumNegativeSubtrAmpFrac
Definition: RpdSubtractCentroidTool.h:75
ZDC::RpdSubtractCentroidTool::m_zdcSideStatus
std::array< unsigned int, 2 > m_zdcSideStatus
RPD analysis status word on each side.
Definition: RpdSubtractCentroidTool.h:109
ZDC
Definition: RpdSubtractCentroidTool.cxx:13
ReadDecorHandle.h
Handle class for reading a decoration on an object.
ZDC::RpdSubtractCentroidTool::Row0ValidBit
@ Row0ValidBit
Definition: RpdSubtractCentroidTool.h:44
ZDC::RpdSubtractCentroidTool::writeAOD
void writeAOD(xAOD::ZdcModuleContainer const &moduleSumContainer) const
Definition: RpdSubtractCentroidTool.cxx:402
ZDC::RpdSubtractCentroidTool::m_name
std::string m_name
Definition: RpdSubtractCentroidTool.h:92
ZDC::RpdSubtractCentroidTool::EMInvalidBit
@ EMInvalidBit
Definition: RpdSubtractCentroidTool.h:35
merge.status
status
Definition: merge.py:17
ZDC::RpdSubtractCentroidTool::reprocessZdc
StatusCode reprocessZdc() override
Definition: RpdSubtractCentroidTool.cxx:480
ZDC::RpdSubtractCentroidTool::geometryCorrection
void geometryCorrection(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:375
ZDC::RpdSubtractCentroidTool::calculateReactionPlaneAngle
void calculateReactionPlaneAngle(unsigned int side)
Definition: RpdSubtractCentroidTool.cxx:388
ZDC::RpdSubtractCentroidTool::m_xCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidPreAvgSubtrKey
Definition: RpdSubtractCentroidTool.h:271
ZDC::RpdSubtractCentroidTool::m_minZdcEnergy
std::vector< float > m_minZdcEnergy
Definition: RpdSubtractCentroidTool.h:70
RpdSubtractCentroidTool.h
ZDC::RpdSubtractCentroidTool::ExcessiveSubtrUnderflowBit
@ ExcessiveSubtrUnderflowBit
Definition: RpdSubtractCentroidTool.h:42
RPDDataAnalyzer::OutOfTimePileupBit
@ OutOfTimePileupBit
Definition: RPDDataAnalyzer.h:40
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
ZDC::RpdSubtractCentroidTool::m_minEmEnergy
std::vector< float > m_minEmEnergy
Definition: RpdSubtractCentroidTool.h:72
ZDC::RpdSubtractCentroidTool::m_avgYCentroid
std::array< float, 2 > m_avgYCentroid
average x centroid
Definition: RpdSubtractCentroidTool.h:127
ZDC::RpdSubtractCentroidTool::m_zdcFinalEnergy
std::array< float, 2 > m_zdcFinalEnergy
ZDC analysis status on each side.
Definition: RpdSubtractCentroidTool.h:110
ZDC::RpdSubtractCentroidTool::m_xCentroid
std::array< float, 2 > m_xCentroid
y centroid after geomerty correction and before average subtraction on each side
Definition: RpdSubtractCentroidTool.h:150
ZDC::RpdSubtractCentroidTool::m_avgXCentroid
std::array< float, 2 > m_avgXCentroid
geometry + crossing angle correction in y (ATLAS coordinates)
Definition: RpdSubtractCentroidTool.h:126
ZDC::RpdSubtractCentroidTool::m_yCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidKey
Definition: RpdSubtractCentroidTool.h:283
ZDC::RpdSubtractCentroidTool::InsufficientEMEnergyBit
@ InsufficientEMEnergyBit
Definition: RpdSubtractCentroidTool.h:36
ZDC::RpdSubtractCentroidTool::m_subtrAmpRowSum
std::array< std::vector< float >, 2 > m_subtrAmpRowSum
subtracted amplitude for each channel on each side
Definition: RpdSubtractCentroidTool.h:137
LArGeo::ATan2
GeoGenfun::FunctionNoop ATan2(GeoGenfun::GENFUNCTION y, GeoGenfun::GENFUNCTION x)
Definition: BarrelAuxFunctions.cxx:50