ATLAS Offline Software
Loading...
Searching...
No Matches
ZDC::RpdSubtractCentroidTool Class Reference

#include <RpdSubtractCentroidTool.h>

Inheritance diagram for ZDC::RpdSubtractCentroidTool:

Classes

struct  RPDChannelData

Public Types

enum  {
  ValidBit = 0 , HasCentroidBit = 1 , ZDCInvalidBit = 2 , InsufficientZDCEnergyBit = 3 ,
  ExcessiveZDCEnergyBit = 4 , EMInvalidBit = 5 , InsufficientEMEnergyBit = 6 , ExcessiveEMEnergyBit = 7 ,
  RPDInvalidBit = 8 , PileupBit = 9 , ExcessivePileupBit = 10 , ZeroSumBit = 11 ,
  ExcessiveSubtrUnderflowBit = 12 , Row0ValidBit = 13 , Row1ValidBit = 14 , Row2ValidBit = 15 ,
  Row3ValidBit = 16 , Col0ValidBit = 17 , Col1ValidBit = 18 , Col2ValidBit = 19 ,
  Col3ValidBit = 20 , N_STATUS_BITS
}

Public Member Functions

 RpdSubtractCentroidTool (const std::string &name)
 ~RpdSubtractCentroidTool () override=default
 RpdSubtractCentroidTool (RpdSubtractCentroidTool const &)=delete
RpdSubtractCentroidTooloperator= (RpdSubtractCentroidTool const &)=delete
 RpdSubtractCentroidTool (RpdSubtractCentroidTool &&)=delete
RpdSubtractCentroidTooloperator= (RpdSubtractCentroidTool &&)=delete
StatusCode initialize () override
 Dummy implementation of the initialisation function.
StatusCode recoZdcModules (const xAOD::ZdcModuleContainer &moduleContainer, const xAOD::ZdcModuleContainer &moduleSumContainer) override
StatusCode reprocessZdc () override
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

enum class  SubstepStatus { Success , Failure , SkipEvent }
 cosine of difference between reaction plane angles of the two sides More...
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode initializeKey (std::string const &containerName, SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > &writeHandleKey, std::string const &key)
void reset ()
SubstepStatus readAOD (xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer)
bool checkZdcRpdValidity (unsigned int side)
bool subtractRpdAmplitudes (unsigned int side)
void calculateDetectorCentroid (unsigned int side)
void geometryCorrection (unsigned int side)
void subtractAverageCentroid (unsigned int side)
void calculateReactionPlaneAngle (unsigned int side)
void writeAOD (xAOD::ZdcModuleContainer const &moduleSumContainer) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static bool nonNegative (float const x)
static bool anyNonNegative (std::vector< float > const &v)

Private Attributes

std::string m_configuration
std::string m_ZDCModuleContainerName
std::string m_ZDCSumContainerName
bool m_writeAux {}
std::string m_auxSuffix
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMinZDCEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaxZDCEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMinEMEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaxEMEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forcePileupMaxFrac
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaximumNegativeSubtrAmpFrac
RPDUtils::OptionalToolProperty< bool > m_forceUseRPDSumAdc
RPDUtils::OptionalToolProperty< bool > m_forceUseCalibDecorations
std::vector< float > m_minZDCEnergy
std::vector< float > m_maxZDCEnergy
std::vector< float > m_minEMEnergy
std::vector< float > m_maxEMEnergy
std::vector< float > m_pileupMaxFrac
std::vector< float > m_maximumNegativeSubtrAmpFrac
bool m_useRPDSumAdc {}
bool m_useCalibDecorations {}
bool m_initialized = false
bool m_readZDCDecorations = false
std::array< std::bitset< RPDDataAnalyzer::N_STATUS_BITS >, 2 > m_RPDSideStatus {}
std::optional< std::array< unsigned int, 2 > > m_ZDCSideStatus
 RPD analysis status word on each side.
std::optional< std::array< float, 2 > > m_ZDCFinalEnergy
 ZDC analysis status on each side.
std::optional< std::array< float, 2 > > m_EMCalibEnergy
 ZDC final (calibrated) energy on each side.
std::optional< std::array< std::bitset< ZDCPulseAnalyzer::N_STATUS_BITS >, 2 > > m_EMStatus
 EM calibrated energy on each side.
std::array< std::array< std::array< RPDChannelData, RPDUtils::nCols >, RPDUtils::nRows >, 2 > m_RPDChannelData {}
 EM modlue status word on each side.
std::array< float, 2 > m_alignmentXOffset {}
 RPD channel data for each channel (first index row, then index column) on each side.
std::array< float, 2 > m_alignmentYOffset {}
 geometry + crossing angle correction in x (ATLAS coordinates)
std::array< float, 2 > m_avgXCentroid {}
 geometry + crossing angle correction in y (ATLAS coordinates)
std::array< float, 2 > m_avgYCentroid {}
 average x centroid
bool m_eventValid = false
 average y centroid
std::array< std::bitset< N_STATUS_BITS >, 2 > m_centroidStatus {1 << ValidBit, 1 << ValidBit}
 event status
std::array< std::vector< float >, 2 > m_subtrAmp
 centroid status (valid by default) on each side
std::array< std::array< float, RPDUtils::nRows >, 2 > m_subtrAmpRowSum {}
 subtracted amplitude for each channel on each side
std::array< std::array< float, RPDUtils::nCols >, 2 > m_subtrAmpColSum {}
 subtracted amplitude for each row on each side
std::array< float, 2 > m_subtrAmpSum {}
 subtracted amplitude for each column on each side
std::array< float, 2 > m_xCentroidPreGeomCorPreAvgSubtr {}
 subtracted amplitude sum on each side
std::array< float, 2 > m_yCentroidPreGeomCorPreAvgSubtr {}
 x centroid before geomerty correction and before average subtraction (RPD detector coordinates) on each side
std::array< float, 2 > m_xCentroidPreAvgSubtr {}
 y centroid before geomerty correction and before average subtraction (RPD detector coordinates) on each side
std::array< float, 2 > m_yCentroidPreAvgSubtr {}
 x centroid after geomerty correction and before average subtraction on each side
std::array< float, 2 > m_xCentroid {}
 y centroid after geomerty correction and before average subtraction on each side
std::array< float, 2 > m_yCentroid {}
 x centroid after geomerty correction and after average subtraction on each side
std::array< std::vector< float >, 2 > m_xRowCentroid
 y centroid after geomerty correction and after average subtraction on each side
std::array< std::vector< float >, 2 > m_yColCentroid
 the x centroid for each row on each side
std::array< float, 2 > m_reactionPlaneAngle {}
 the y centroid for each column on each side
float m_cosDeltaReactionPlaneAngle = 0
 reaction plane angle on each side
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_centroidEventValidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_centroidStatusKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_RPDChannelSubtrAmpKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_RPDSubtrAmpSumKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_xCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_yCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_xCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_yCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_xCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_yCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_xRowCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_yColCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_reactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_cosDeltaReactionPlaneAngleKey
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 28 of file RpdSubtractCentroidTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
ValidBit 
HasCentroidBit 
ZDCInvalidBit 
InsufficientZDCEnergyBit 
ExcessiveZDCEnergyBit 
EMInvalidBit 
InsufficientEMEnergyBit 
ExcessiveEMEnergyBit 
RPDInvalidBit 
PileupBit 
ExcessivePileupBit 
ZeroSumBit 
ExcessiveSubtrUnderflowBit 
Row0ValidBit 
Row1ValidBit 
Row2ValidBit 
Row3ValidBit 
Col0ValidBit 
Col1ValidBit 
Col2ValidBit 
Col3ValidBit 
N_STATUS_BITS 

Definition at line 31 of file RpdSubtractCentroidTool.h.

31 {
32 ValidBit = 0, // analysis and output are valid
33 HasCentroidBit = 1, // centroid was calculated but analysis is invalid
34 ZDCInvalidBit = 2, // ZDC analysis on this side failed => analysis is invalid
35 InsufficientZDCEnergyBit = 3, // ZDC energy on this side is below minimum => analysis is invalid
36 ExcessiveZDCEnergyBit = 4, // ZDC energy on this side is above maximum => analysis is invalid
37 EMInvalidBit = 5, // EM analysis on this side failed => analysis is invalid
38 InsufficientEMEnergyBit = 6, // EM energy on this side is below minimum => analysis is invalid
39 ExcessiveEMEnergyBit = 7, // EM energy on this side is above maximum => analysis is invalid
40 RPDInvalidBit = 8, // RPD analysis on this side was invalid => calculation stopped and analysis is invalid
41 PileupBit = 9, // pileup was detected in RPD on this side
42 ExcessivePileupBit = 10, // pileup was detected in RPD on this side and a channel exceeded the fractional limit => analysis is invalid
43 ZeroSumBit = 11, // sum of subtracted RPD amplitudes on this side was not positive => calculation stopped and analysis is invalid
44 ExcessiveSubtrUnderflowBit = 12, // a subtracted RPD amplitude on this side was negative and exceeded the fractional limit => analysis is invalid
45
46 Row0ValidBit = 13, // row 0 x centroid is valid
47 Row1ValidBit = 14, // row 1 x centroid is valid
48 Row2ValidBit = 15, // row 2 x centroid is valid
49 Row3ValidBit = 16, // row 3 x centroid is valid
50 Col0ValidBit = 17, // column 0 y centroid is valid
51 Col1ValidBit = 18, // column 1 y centroid is valid
52 Col2ValidBit = 19, // column 2 y centroid is valid
53 Col3ValidBit = 20, // column 3 y centroid is valid
54
56 };

◆ SubstepStatus

cosine of difference between reaction plane angles of the two sides

Enumerator
Success 
Failure 
SkipEvent 

Definition at line 169 of file RpdSubtractCentroidTool.h.

169 {
170 Success, // continue to next step
171 Failure, // stop (do not proceed to next step) and propagate error to Athena
172 SkipEvent, // stop (do not proceed to next step) and tell Athena the event was a success
173 };

Constructor & Destructor Documentation

◆ RpdSubtractCentroidTool() [1/3]

ZDC::RpdSubtractCentroidTool::RpdSubtractCentroidTool ( const std::string & name)
explicit

Definition at line 18 of file RpdSubtractCentroidTool.cxx.

19 : asg::AsgTool(name)
20{
21 declareProperty("ZDCModuleContainerName", m_ZDCModuleContainerName = "ZdcModules", "Location of ZDC processed data");
22 declareProperty("ZDCSumContainerName", m_ZDCSumContainerName = "ZdcSums", "Location of ZDC processed sums");
23 declareProperty("Configuration", m_configuration = "default");
24 declareProperty("WriteAux", m_writeAux = true, "If true, write AOD decorations");
25 declareProperty("AuxSuffix", m_auxSuffix = "", "Suffix to add to AOD decorations for reading and writing");
26 declareProperty("MinZDCEnergy", m_forceMinZDCEnergy, "Minimum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
27 declareProperty("MaxZDCEnergy", m_forceMaxZDCEnergy, "Maximum (calibrated) ZDC energy for valid centroid (negative to disable); per side");
28 declareProperty("MinEMEnergy", m_forceMinEMEnergy, "Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
29 declareProperty("MaxEMEnergy", m_forceMaxEMEnergy, "Minimum (calibrated) EM energy for valid centroid (negative to disable); per side");
30 declareProperty("PileupMaxFrac", m_forcePileupMaxFrac, "Maximum fractional pileup allowed in an RPD channel for valid centroid; per side");
31 declareProperty("ExcessiveSubtrUnderflowFrac", m_forceMaximumNegativeSubtrAmpFrac, "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");
32 declareProperty("UseRPDSumAdc", m_forceUseRPDSumAdc, "If true, use RPD channel sum ADC for centroid calculation, else use RPD channel max ADC");
33 declareProperty("UseCalibDecorations", m_forceUseCalibDecorations, "If true, use RPD channel sum/max ADC decorations with output calibration factors applied during reconstruction, else use decorations with raw values");
34}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMinZDCEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaximumNegativeSubtrAmpFrac
RPDUtils::OptionalToolProperty< bool > m_forceUseCalibDecorations
RPDUtils::OptionalToolProperty< std::vector< float > > m_forcePileupMaxFrac
RPDUtils::OptionalToolProperty< bool > m_forceUseRPDSumAdc
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMinEMEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaxZDCEnergy
RPDUtils::OptionalToolProperty< std::vector< float > > m_forceMaxEMEnergy

◆ ~RpdSubtractCentroidTool()

ZDC::RpdSubtractCentroidTool::~RpdSubtractCentroidTool ( )
overridedefault

◆ RpdSubtractCentroidTool() [2/3]

ZDC::RpdSubtractCentroidTool::RpdSubtractCentroidTool ( RpdSubtractCentroidTool const & )
delete

◆ RpdSubtractCentroidTool() [3/3]

ZDC::RpdSubtractCentroidTool::RpdSubtractCentroidTool ( RpdSubtractCentroidTool && )
delete

Member Function Documentation

◆ anyNonNegative()

bool ZDC::RpdSubtractCentroidTool::anyNonNegative ( std::vector< float > const & v)
inlinestaticprivate

Definition at line 101 of file RpdSubtractCentroidTool.h.

101{ return std::any_of(v.begin(), v.end(), nonNegative); }
static bool nonNegative(float const x)

◆ calculateDetectorCentroid()

void ZDC::RpdSubtractCentroidTool::calculateDetectorCentroid ( unsigned int side)
private

Definition at line 351 of file RpdSubtractCentroidTool.cxx.

351 {
352 for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
353 m_xCentroidPreGeomCorPreAvgSubtr.at(side) += m_subtrAmpColSum.at(side).at(col)*m_RPDChannelData.at(side).at(0).at(col).xposRel/m_subtrAmpSum.at(side);
354 }
355
356 for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
357 m_yCentroidPreGeomCorPreAvgSubtr.at(side) += m_subtrAmpRowSum.at(side).at(row)*m_RPDChannelData.at(side).at(row).at(0).yposRel/m_subtrAmpSum.at(side);
358 }
359
360 for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
361 if (m_subtrAmpRowSum.at(side).at(row) <= 0) continue;
362 for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
363 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);
364 }
365 m_centroidStatus.at(side).set(Row0ValidBit + row, true);
366 }
367
368 for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
369 if (m_subtrAmpColSum.at(side).at(col) <= 0) continue;
370 for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
371 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);
372 }
373 m_centroidStatus.at(side).set(Col0ValidBit + col, true);
374 }
375}
std::array< std::array< std::array< RPDChannelData, RPDUtils::nCols >, RPDUtils::nRows >, 2 > m_RPDChannelData
EM modlue status word on each side.
std::array< std::array< float, RPDUtils::nRows >, 2 > m_subtrAmpRowSum
subtracted amplitude for each channel on each side
std::array< std::vector< float >, 2 > m_yColCentroid
the x centroid for each row on each side
std::array< float, 2 > m_xCentroidPreGeomCorPreAvgSubtr
subtracted amplitude sum on each side
std::array< float, 2 > m_yCentroidPreGeomCorPreAvgSubtr
x centroid before geomerty correction and before average subtraction (RPD detector coordinates) on ea...
std::array< std::array< float, RPDUtils::nCols >, 2 > m_subtrAmpColSum
subtracted amplitude for each row on each side
std::array< float, 2 > m_subtrAmpSum
subtracted amplitude for each column on each side
std::array< std::bitset< N_STATUS_BITS >, 2 > m_centroidStatus
event status
std::array< std::vector< float >, 2 > m_xRowCentroid
y centroid after geomerty correction and after average subtraction on each side
row
Appending html table to final .html summary file.
unsigned int constexpr nRows
Definition RPDUtils.h:24
unsigned int constexpr nCols
Definition RPDUtils.h:25

◆ calculateReactionPlaneAngle()

void ZDC::RpdSubtractCentroidTool::calculateReactionPlaneAngle ( unsigned int side)
private

Definition at line 388 of file RpdSubtractCentroidTool.cxx.

388 {
389 auto angle = std::atan2(m_yCentroid.at(side), m_xCentroid.at(side));
390 // our angles are now simply the angle of the centroid in ATLAS coordinates on either side
391 // however, we expect correlated deflection, so we want the difference between the angles
392 // to be small when the centroids are in opposite quadrants of the two RPDs
393 // therefore, we add pi to side A (chosen arbitrarily)
394 if (side == RPDUtils::sideA) angle += std::numbers::pi_v<float>;
395 // also, restrict to [-pi, pi)
396 // we choose this rather than (-pi, pi] for ease of binning the edge case +/- pi
397 if (angle >= std::numbers::pi) angle -= 2*std::numbers::pi_v<float>;
398 m_reactionPlaneAngle.at(side) = angle;
399}
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
std::array< float, 2 > m_reactionPlaneAngle
the y centroid for each column on each side
std::array< float, 2 > m_xCentroid
y centroid after geomerty correction and before average subtraction on each side
std::array< float, 2 > m_yCentroid
x centroid after geomerty correction and after average subtraction on each side
unsigned int constexpr sideA
Definition RPDUtils.h:16

◆ checkZdcRpdValidity()

bool ZDC::RpdSubtractCentroidTool::checkZdcRpdValidity ( unsigned int side)
private

Definition at line 256 of file RpdSubtractCentroidTool.cxx.

256 {
258 if (m_ZDCSideStatus->at(side) == 0) {
259 // zdc bad
260 m_centroidStatus.at(side).set(ZDCInvalidBit, true);
261 m_centroidStatus.at(side).set(ValidBit, false);
262 } else {
263 // zdc good
264 if (m_ZDCFinalEnergy->at(side) < m_minZDCEnergy.at(side)) {
265 m_centroidStatus.at(side).set(InsufficientZDCEnergyBit, true);
266 m_centroidStatus.at(side).set(ValidBit, false);
267 }
268 if (m_ZDCFinalEnergy->at(side) > m_maxZDCEnergy.at(side)) {
269 m_centroidStatus.at(side).set(ExcessiveZDCEnergyBit, true);
270 m_centroidStatus.at(side).set(ValidBit, false);
271 }
272 }
273
274 if (m_EMStatus->at(side)[ZDCPulseAnalyzer::FailBit]) {
275 // em bad
276 m_centroidStatus.at(side).set(EMInvalidBit, true);
277 m_centroidStatus.at(side).set(ValidBit, false);
278 } else {
279 // em good
280 if (m_EMCalibEnergy->at(side) < m_minEMEnergy.at(side)) {
281 m_centroidStatus.at(side).set(InsufficientEMEnergyBit, true);
282 m_centroidStatus.at(side).set(ValidBit, false);
283 }
284 if (m_EMCalibEnergy->at(side) > m_maxEMEnergy.at(side)) {
285 m_centroidStatus.at(side).set(ExcessiveEMEnergyBit, true);
286 m_centroidStatus.at(side).set(ValidBit, false);
287 }
288 }
289 }
290
292 m_centroidStatus.at(side).set(PileupBit, true);
293 }
294
295 for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
296 for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
297 if (m_RPDChannelData.at(side).at(row).at(col).pileupFrac > m_pileupMaxFrac.at(side)) {
298 m_centroidStatus.at(side).set(ExcessivePileupBit, true);
299 m_centroidStatus.at(side).set(ValidBit, false);
300 }
301 }
302 }
303
305 m_centroidStatus.at(side).set(RPDInvalidBit, true);
306 m_centroidStatus.at(side).set(ValidBit, false);
307 return false;
308 }
309
310 return true;
311}
std::optional< std::array< float, 2 > > m_EMCalibEnergy
ZDC final (calibrated) energy on each side.
std::optional< std::array< unsigned int, 2 > > m_ZDCSideStatus
RPD analysis status word on each side.
std::optional< std::array< std::bitset< ZDCPulseAnalyzer::N_STATUS_BITS >, 2 > > m_EMStatus
EM calibrated energy on each side.
std::optional< std::array< float, 2 > > m_ZDCFinalEnergy
ZDC analysis status on each side.
std::array< std::bitset< RPDDataAnalyzer::N_STATUS_BITS >, 2 > m_RPDSideStatus

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ geometryCorrection()

void ZDC::RpdSubtractCentroidTool::geometryCorrection ( unsigned int side)
private

ROTATIONS CORRECTIONS GO HERE

Definition at line 377 of file RpdSubtractCentroidTool.cxx.

377 {
381}
std::array< float, 2 > m_xCentroidPreAvgSubtr
y centroid before geomerty correction and before average subtraction (RPD detector coordinates) on ea...
std::array< float, 2 > m_alignmentYOffset
geometry + crossing angle correction in x (ATLAS coordinates)
std::array< float, 2 > m_yCentroidPreAvgSubtr
x centroid after geomerty correction and before average subtraction on each side
std::array< float, 2 > m_alignmentXOffset
RPD channel data for each channel (first index row, then index column) on each side.

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void * ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119 {
120
121#ifdef XAOD_STANDALONE
122 // In case we use @c xAOD::TEvent, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ getName()

const std::string & asg::AsgTool::getName ( const void * ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106 {
107
108#ifdef XAOD_STANDALONE
109 // In case we use @c xAOD::TEvent, we have a direct function call
110 // for this.
111 return evtStore()->event()->getName( ptr );
112#else
113 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114 static const std::string dummy = "";
115 return ( proxy == nullptr ? dummy : proxy->name() );
116#endif // XAOD_STANDALONE
117 }

◆ getProperty()

template<class T>
const T * asg::AsgTool::getProperty ( const std::string & name) const
inherited

Get one of the tool's properties.

◆ initialize()

StatusCode ZDC::RpdSubtractCentroidTool::initialize ( void )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 41 of file RpdSubtractCentroidTool.cxx.

41 {
42 // first initialize reconstruction parameters
43 m_minZDCEnergy = {-1.0, -1.0};
44 m_maxZDCEnergy = {-1.0, -1.0};
45 m_minEMEnergy = {-1.0, -1.0};
46 m_maxEMEnergy = {-1.0, -1.0};
47 m_pileupMaxFrac = {1.0, 1.0};
49 m_useRPDSumAdc = true;
51
52 // then overwrite inidividual parameters from configuration if any were provided
53 if (m_forceMinZDCEnergy.has_value()) {
55 }
56 if (m_forceMaxZDCEnergy.has_value()) {
58 }
59 if (m_forceMinEMEnergy.has_value()) {
61 }
62 if (m_forceMaxEMEnergy.has_value()) {
64 }
65 if (m_forcePileupMaxFrac.has_value()) {
67 }
68 if (m_forceMaximumNegativeSubtrAmpFrac.has_value()) {
70 }
71 if (m_forceUseRPDSumAdc.has_value()) {
73 }
74 if (m_forceUseCalibDecorations.has_value()) {
76 }
77
78 // if any ZDC/EM energy threshold is nonnegative, ZDC decorations must be read
80
81 for (auto const side : RPDUtils::sides) {
82 if (m_minZDCEnergy.at(side) < 0) m_minZDCEnergy.at(side) = -std::numeric_limits<float>::infinity();
83 if (m_maxZDCEnergy.at(side) < 0) m_maxZDCEnergy.at(side) = std::numeric_limits<float>::infinity();
84 if (m_minEMEnergy.at(side) < 0) m_minEMEnergy.at(side) = -std::numeric_limits<float>::infinity();
85 if (m_maxEMEnergy.at(side) < 0) m_maxEMEnergy.at(side) = std::numeric_limits<float>::infinity();
86 }
87
88 ATH_MSG_DEBUG("RpdSubtractCentroidTool reconstruction parameters:");
89 ATH_MSG_DEBUG("config = " << m_configuration);
95 ATH_MSG_DEBUG("maximumNegativeSubtrAmpFrac = " << RPDUtils::vecToString(m_maximumNegativeSubtrAmpFrac));
96 ATH_MSG_DEBUG("useRPDSumAdc = " << m_useRPDSumAdc);
97 ATH_MSG_DEBUG("useCalibDecorations = " << m_useCalibDecorations);
98
100 ATH_MSG_DEBUG("RpdSubtractCentroidTool is configured to check ZDC or EM energy; ZDC-related ReadDecorHandleKey's will be initialized");
101 m_ZDCSideStatus = {0, 0};
102 m_ZDCFinalEnergy = {0, 0};
103 m_EMCalibEnergy = {0, 0};
104 m_EMStatus = {0, 0};
105 }
106
107 ATH_CHECK(m_eventInfoKey.initialize());
108
123
124 if (m_writeAux && !m_auxSuffix.empty()) {
125 ATH_MSG_DEBUG("suffix string = " << m_auxSuffix);
126 }
127
128 m_initialized = true;
129
130 return StatusCode::SUCCESS;
131}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_centroidStatusKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidPreGeomCorPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDChannelSubtrAmpKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xRowCentroidKey
StatusCode initializeKey(std::string const &containerName, SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > &writeHandleKey, std::string const &key)
std::vector< float > m_maximumNegativeSubtrAmpFrac
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yColCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_cosDeltaReactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_centroidEventValidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidPreAvgSubtrKey
static bool anyNonNegative(std::vector< float > const &v)
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_reactionPlaneAngleKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_RPDSubtrAmpSumKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_xCentroidPreAvgSubtrKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_yCentroidKey
std::initializer_list< unsigned int > constexpr sides
Definition RPDUtils.h:17
std::string vecToString(std::vector< T > const &v)
Definition RPDUtils.cxx:57

◆ initializeKey()

StatusCode ZDC::RpdSubtractCentroidTool::initializeKey ( std::string const & containerName,
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > & writeHandleKey,
std::string const & key )
private

Definition at line 36 of file RpdSubtractCentroidTool.cxx.

36 {
37 writeHandleKey = containerName + key + m_auxSuffix;
38 return writeHandleKey.initialize();
39}
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101 {
102
103 return MSG::name( msg().level() );
104 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ nonNegative()

bool ZDC::RpdSubtractCentroidTool::nonNegative ( float const x)
inlinestaticprivate

Definition at line 100 of file RpdSubtractCentroidTool.h.

100{ return x >= 0; }
#define x

◆ operator=() [1/2]

RpdSubtractCentroidTool & ZDC::RpdSubtractCentroidTool::operator= ( RpdSubtractCentroidTool && )
delete

◆ operator=() [2/2]

RpdSubtractCentroidTool & ZDC::RpdSubtractCentroidTool::operator= ( RpdSubtractCentroidTool const & )
delete

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print()

◆ readAOD()

RpdSubtractCentroidTool::SubstepStatus ZDC::RpdSubtractCentroidTool::readAOD ( xAOD::ZdcModuleContainer const & moduleContainer,
xAOD::ZdcModuleContainer const & moduleSumContainer )
private

Definition at line 155 of file RpdSubtractCentroidTool.cxx.

155 {
156 // initialize read handles from read handle keys
157 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey);
158 if (!eventInfo.isValid()) {
160 }
161 // RPD decorations are always needed
162 if (eventInfo->isEventFlagBitSet(xAOD::EventInfo::ForwardDet, ZdcEventInfo::RPDDECODINGERROR)) {
163 ATH_MSG_WARNING("RPD decoding error found - abandoning RPD centroid reco!");
165 }
166 // ZDC decorations are sometimes needed
168 ATH_MSG_WARNING("ZDC decoding error found - abandoning RPD centroid reco!");
170 }
171
172 // nominally, aux suffix is added to read key, since upstream tools were probably configured to write decorations with the same suffix
173 // however, certain decorations remain unchanged in a reprocessing (e.g., those written by ZdcRecChannelToolLucrod), in which case the suffix should NOT be added
174 static SG::ConstAccessor<float> const xposRelAcc("xposRel");
175 static SG::ConstAccessor<float> const yposRelAcc("yposRel");
176 static SG::ConstAccessor<unsigned short> const rowAcc("row");
177 static SG::ConstAccessor<unsigned short> const colAcc("col");
178 static SG::ConstAccessor<float> const rpdChannelSumAdcAcc("RPDChannelAmplitude" + m_auxSuffix);
179 static SG::ConstAccessor<float> const rpdChannelSumAdcCalibAcc("RPDChannelAmplitudeCalib" + m_auxSuffix);
180 static SG::ConstAccessor<float> const rpdChannelMaxADCAcc("RPDChannelMaxADC" + m_auxSuffix);
181 static SG::ConstAccessor<float> const rpdChannelMaxADCCalibAcc("RPDChannelMaxADCCalib" + m_auxSuffix);
182 static SG::ConstAccessor<float> const rpdChannelPileupFracAcc("RPDChannelPileupFrac" + m_auxSuffix);
183 static SG::ConstAccessor<unsigned int> const rpdChannelStatusAcc("RPDChannelStatus" + m_auxSuffix);
184 static SG::ConstAccessor<unsigned int> const rpdSideStatusAcc("RPDStatus" + m_auxSuffix);
185 static auto const zdcModuleCalibEnergyAcc = m_readZDCDecorations
186 ? std::optional<SG::ConstAccessor<float>>("CalibEnergy" + m_auxSuffix)
187 : std::nullopt;
188 static auto const zdcModuleStatusAcc = m_readZDCDecorations
189 ? std::optional<SG::ConstAccessor<unsigned int>>("Status" + m_auxSuffix)
190 : std::nullopt;
191 static auto const zdcFinalEnergyAcc = m_readZDCDecorations
192 ? std::optional<SG::ConstAccessor<float>>("FinalEnergy" + m_auxSuffix)
193 : std::nullopt;
194 static auto const zdcStatusAcc = m_readZDCDecorations
195 ? std::optional<SG::ConstAccessor<unsigned int>>("Status" + m_auxSuffix)
196 : std::nullopt;
197
198 ATH_MSG_DEBUG("Processing modules");
199
200 for (auto const * const zdcModule : moduleContainer) {
201 unsigned int const side = RPDUtils::ZDCSideToSideIndex(zdcModule->zdcSide());
202 if (zdcModule->zdcType() == RPDUtils::ZDCModuleZDCType && zdcModule->zdcModule() == RPDUtils::ZDCModuleEMModule) {
203 // this is a ZDC module and this is an EM module
205 m_EMCalibEnergy->at(side) = (*zdcModuleCalibEnergyAcc)(*zdcModule);
206 m_EMStatus->at(side) = (*zdcModuleStatusAcc)(*zdcModule);
207 }
208 } else if (zdcModule->zdcType() == RPDUtils::ZDCModuleRPDType) {
209 // this is a Run 3 RPD module
210 // (it is assumed that this tool will not be invoked otherwise)
211 //
212 if (zdcModule->zdcChannel() < 0 || static_cast<unsigned int>(zdcModule->zdcChannel()) > RPDUtils::nChannels - 1) {
213 ATH_MSG_ERROR("Invalid RPD channel found on side " << side << ": channel number = " << zdcModule->zdcChannel());
214 }
215 // channel numbers are fixed in mapping in ZdcConditions, numbered 0-15
216 auto const channel = zdcModule->zdcChannel();
217 auto const& row = rowAcc(*zdcModule);
218 auto const& col = colAcc(*zdcModule);
219 m_RPDChannelData.at(side).at(row).at(col).channel = static_cast<unsigned int>(channel);
220 m_RPDChannelData.at(side).at(row).at(col).xposRel = xposRelAcc(*zdcModule);
221 m_RPDChannelData.at(side).at(row).at(col).yposRel = yposRelAcc(*zdcModule);
222 m_RPDChannelData.at(side).at(row).at(col).row = rowAcc(*zdcModule);
223 m_RPDChannelData.at(side).at(row).at(col).col = colAcc(*zdcModule);
224 if (m_useRPDSumAdc) {
226 m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelSumAdcCalibAcc(*zdcModule);
227 } else {
228 m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelSumAdcAcc(*zdcModule);
229 }
230 } else {
232 m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelMaxADCCalibAcc(*zdcModule);
233 } else {
234 m_RPDChannelData.at(side).at(row).at(col).amp = rpdChannelMaxADCAcc(*zdcModule);
235 }
236 }
237 m_RPDChannelData.at(side).at(row).at(col).pileupFrac = rpdChannelPileupFracAcc(*zdcModule);
238 m_RPDChannelData.at(side).at(row).at(col).status = rpdChannelStatusAcc(*zdcModule);
239 }
240 }
241
242 for (auto const * const zdcSum: moduleSumContainer) {
243 if (zdcSum->zdcSide() == RPDUtils::ZDCSumsGlobalZDCSide) {
244 // skip global sum (it's like the side between sides)
245 continue;
246 }
247 unsigned int const side = RPDUtils::ZDCSideToSideIndex(zdcSum->zdcSide());
248 m_RPDSideStatus.at(side) = rpdSideStatusAcc(*zdcSum);
249 if (m_ZDCSideStatus) m_ZDCSideStatus->at(side) = (*zdcStatusAcc)(*zdcSum);
250 if (m_ZDCFinalEnergy) m_ZDCFinalEnergy->at(side) = (*zdcFinalEnergyAcc)(*zdcSum);
251 }
252
254}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
@ ForwardDet
The forward detectors.
unsigned int ZDCSideToSideIndex(int const ZDCSide)
Definition RPDUtils.cxx:7
int constexpr ZDCSumsGlobalZDCSide
Definition RPDUtils.h:19
unsigned int constexpr nChannels
Definition RPDUtils.h:23
unsigned int constexpr ZDCModuleRPDType
Definition RPDUtils.h:21
unsigned int constexpr ZDCModuleZDCType
Definition RPDUtils.h:20
unsigned int constexpr ZDCModuleEMModule
Definition RPDUtils.h:22

◆ recoZdcModules()

StatusCode ZDC::RpdSubtractCentroidTool::recoZdcModules ( const xAOD::ZdcModuleContainer & moduleContainer,
const xAOD::ZdcModuleContainer & moduleSumContainer )
overridevirtual

Implements ZDC::IZdcAnalysisTool.

Definition at line 445 of file RpdSubtractCentroidTool.cxx.

445 {
446 if (moduleContainer.empty()) {
447 // no modules - do nothing
448 return StatusCode::SUCCESS;
449 }
450 reset();
451 switch (readAOD(moduleContainer, moduleSumContainer)) {
453 // do nothing - proceed
454 break;
456 // stop and propagate error to Athena
457 return StatusCode::FAILURE;
459 // stop and tell Athena the event was a success
460 return StatusCode::SUCCESS;
461 }
462 for (auto const side : RPDUtils::sides) {
463 if (!checkZdcRpdValidity(side)) continue; // rpd invalid -> don't calculate centroid
464 if (!subtractRpdAmplitudes(side)) continue; // bad total sum -> don't calculate centroid
466 geometryCorrection(side);
469 m_centroidStatus.at(side).set(HasCentroidBit, true);
470 }
473 }
475 m_eventValid = true; // event is good for analysis
476 }
477 writeAOD(moduleSumContainer);
478 ATH_MSG_DEBUG("Finishing event processing");
479 return StatusCode::SUCCESS;
480}
bool empty() const noexcept
Returns true if the collection is empty.
bool subtractRpdAmplitudes(unsigned int side)
void geometryCorrection(unsigned int side)
SubstepStatus readAOD(xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer)
void writeAOD(xAOD::ZdcModuleContainer const &moduleSumContainer) const
void subtractAverageCentroid(unsigned int side)
void calculateDetectorCentroid(unsigned int side)
void calculateReactionPlaneAngle(unsigned int side)
float m_cosDeltaReactionPlaneAngle
reaction plane angle on each side
bool checkZdcRpdValidity(unsigned int side)
unsigned int constexpr sideC
Definition RPDUtils.h:15

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ reprocessZdc()

StatusCode ZDC::RpdSubtractCentroidTool::reprocessZdc ( )
overridevirtual

Implements ZDC::IZdcAnalysisTool.

Definition at line 482 of file RpdSubtractCentroidTool.cxx.

482 {
483 if (!m_initialized) {
484 ATH_MSG_WARNING("Tool not initialized!");
485 return StatusCode::FAILURE;
486 }
487 ATH_MSG_DEBUG("Trying to retrieve " << m_ZDCModuleContainerName);
488 xAOD::ZdcModuleContainer const* zdcModules = nullptr;
490 xAOD::ZdcModuleContainer const* zdcSums = nullptr;
492 ATH_CHECK(recoZdcModules(*zdcModules, *zdcSums));
493 return StatusCode::SUCCESS;
494}
StatusCode recoZdcModules(const xAOD::ZdcModuleContainer &moduleContainer, const xAOD::ZdcModuleContainer &moduleSumContainer) override
retrieve(aClass, aKey=None)
Definition PyKernel.py:110
ZdcModuleContainer_v1 ZdcModuleContainer

◆ reset()

◆ subtractAverageCentroid()

void ZDC::RpdSubtractCentroidTool::subtractAverageCentroid ( unsigned int side)
private

Definition at line 383 of file RpdSubtractCentroidTool.cxx.

383 {
384 m_xCentroid.at(side) = m_xCentroidPreAvgSubtr.at(side) - m_avgXCentroid.at(side);
385 m_yCentroid.at(side) = m_yCentroidPreAvgSubtr.at(side) - m_avgYCentroid.at(side);
386}
std::array< float, 2 > m_avgYCentroid
average x centroid
std::array< float, 2 > m_avgXCentroid
geometry + crossing angle correction in y (ATLAS coordinates)

◆ subtractRpdAmplitudes()

bool ZDC::RpdSubtractCentroidTool::subtractRpdAmplitudes ( unsigned int side)
private

Definition at line 313 of file RpdSubtractCentroidTool.cxx.

313 {
314 for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
315 for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
316 float subtrAmp {};
317 if (row == RPDUtils::nRows - 1) {
318 // top row -> nothing to subtract
319 subtrAmp = m_RPDChannelData.at(side).at(row).at(col).amp;
320 } else {
321 // other rows -> subtract the tile above this one
322 subtrAmp = m_RPDChannelData.at(side).at(row).at(col).amp - m_RPDChannelData.at(side).at(row + 1).at(col).amp;
323 }
324 m_RPDChannelData.at(side).at(row).at(col).subtrAmp = subtrAmp;
325 m_subtrAmp.at(side).at(m_RPDChannelData.at(side).at(row).at(col).channel) = subtrAmp;
326 m_subtrAmpRowSum.at(side).at(row) += subtrAmp;
327 m_subtrAmpColSum.at(side).at(col) += subtrAmp;
328 m_subtrAmpSum.at(side) += subtrAmp;
329 }
330 }
331
332 if (m_subtrAmpSum.at(side) <= 0) {
333 m_centroidStatus.at(side).set(ZeroSumBit, true);
334 m_centroidStatus.at(side).set(ValidBit, false);
335 return false;
336 }
337
338 for (unsigned int row = 0; row < RPDUtils::nRows; row++) {
339 for (unsigned int col = 0; col < RPDUtils::nCols; col++) {
340 const float &subtrAmp = m_RPDChannelData.at(side).at(row).at(col).subtrAmp;
341 if (subtrAmp < 0 && -subtrAmp/m_subtrAmpSum.at(side) > m_maximumNegativeSubtrAmpFrac.at(side)) {
343 m_centroidStatus.at(side).set(ValidBit, false);
344 }
345 }
346 }
347
348 return true;
349}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ writeAOD()

void ZDC::RpdSubtractCentroidTool::writeAOD ( xAOD::ZdcModuleContainer const & moduleSumContainer) const
private

Definition at line 401 of file RpdSubtractCentroidTool.cxx.

401 {
402 if (!m_writeAux) return;
403 ATH_MSG_DEBUG("Adding variables with suffix = " + m_auxSuffix);
404
405 // initialize write handles from write handle keys
406 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, char> centroidEventValidHandle(m_centroidEventValidKey);
407 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, unsigned int> centroidStatusHandle(m_centroidStatusKey);
408 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, std::vector<float>> rpdChannelSubtrAmpHandle(m_RPDChannelSubtrAmpKey);
409 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> rpdSubtrAmpSumHandle(m_RPDSubtrAmpSumKey);
410 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> xCentroidPreGeomCorPreAvgSubtrHandle(m_xCentroidPreGeomCorPreAvgSubtrKey);
411 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> yCentroidPreGeomCorPreAvgSubtrHandle(m_yCentroidPreGeomCorPreAvgSubtrKey);
412 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> xCentroidPreAvgSubtrHandle(m_xCentroidPreAvgSubtrKey);
413 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> yCentroidPreAvgSubtrHandle(m_yCentroidPreAvgSubtrKey);
414 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> xCentroidHandle(m_xCentroidKey);
415 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> yCentroidHandle(m_yCentroidKey);
416 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, std::vector<float>> xRowCentroidHandle(m_xRowCentroidKey);
417 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, std::vector<float>> yColCentroidHandle(m_yColCentroidKey);
418 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> reactionPlaneAngleHandle(m_reactionPlaneAngleKey);
419 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> cosDeltaReactionPlaneAngleHandle(m_cosDeltaReactionPlaneAngleKey);
420
421 for (auto const * const zdcSum: moduleSumContainer) {
422 if (zdcSum->zdcSide() == RPDUtils::ZDCSumsGlobalZDCSide) {
423 // global sum container
424 // event status is bool, but stored as char to save disk space
425 centroidEventValidHandle(*zdcSum) = static_cast<char>(m_eventValid);
426 cosDeltaReactionPlaneAngleHandle(*zdcSum) = m_cosDeltaReactionPlaneAngle;
427 continue;
428 }
429 unsigned int const side = RPDUtils::ZDCSideToSideIndex(zdcSum->zdcSide());
430 centroidStatusHandle(*zdcSum) = static_cast<unsigned int>(m_centroidStatus.at(side).to_ulong());
431 rpdChannelSubtrAmpHandle(*zdcSum) = m_subtrAmp.at(side);
432 rpdSubtrAmpSumHandle(*zdcSum) = m_subtrAmpSum.at(side);
433 xCentroidPreGeomCorPreAvgSubtrHandle(*zdcSum) = m_xCentroidPreGeomCorPreAvgSubtr.at(side);
434 yCentroidPreGeomCorPreAvgSubtrHandle(*zdcSum) = m_yCentroidPreGeomCorPreAvgSubtr.at(side);
435 xCentroidPreAvgSubtrHandle(*zdcSum) = m_xCentroidPreAvgSubtr.at(side);
436 yCentroidPreAvgSubtrHandle(*zdcSum) = m_yCentroidPreAvgSubtr.at(side);
437 xCentroidHandle(*zdcSum) = m_xCentroid.at(side);
438 yCentroidHandle(*zdcSum) = m_yCentroid.at(side);
439 xRowCentroidHandle(*zdcSum) = m_xRowCentroid.at(side);
440 yColCentroidHandle(*zdcSum) = m_yColCentroid.at(side);
441 reactionPlaneAngleHandle(*zdcSum) = m_reactionPlaneAngle.at(side);
442 }
443}

Member Data Documentation

◆ m_alignmentXOffset

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_alignmentXOffset {}
private

RPD channel data for each channel (first index row, then index column) on each side.

Definition at line 130 of file RpdSubtractCentroidTool.h.

130{};

◆ m_alignmentYOffset

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_alignmentYOffset {}
private

geometry + crossing angle correction in x (ATLAS coordinates)

Definition at line 131 of file RpdSubtractCentroidTool.h.

131{};

◆ m_auxSuffix

std::string ZDC::RpdSubtractCentroidTool::m_auxSuffix
private

Definition at line 78 of file RpdSubtractCentroidTool.h.

◆ m_avgXCentroid

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_avgXCentroid {}
private

geometry + crossing angle correction in y (ATLAS coordinates)

ROTATIONS GO HERE

Definition at line 136 of file RpdSubtractCentroidTool.h.

136{};

◆ m_avgYCentroid

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_avgYCentroid {}
private

average x centroid

Definition at line 137 of file RpdSubtractCentroidTool.h.

137{};

◆ m_centroidEventValidKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_centroidEventValidKey
private
Initial value:
{
this, "centroidEventValidKey", "",
"Event status: true if both centroids are valid, else false"
}

Definition at line 193 of file RpdSubtractCentroidTool.h.

193 {
194 this, "centroidEventValidKey", "",
195 "Event status: true if both centroids are valid, else false"
196 };

◆ m_centroidStatus

std::array<std::bitset<N_STATUS_BITS>, 2> ZDC::RpdSubtractCentroidTool::m_centroidStatus {1 << ValidBit, 1 << ValidBit}
private

event status

Definition at line 142 of file RpdSubtractCentroidTool.h.

142{1 << ValidBit, 1 << ValidBit};

◆ m_centroidStatusKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_centroidStatusKey
private
Initial value:
{
this, "centroidStatusKey", "",
"Centroid status word"
}

Definition at line 197 of file RpdSubtractCentroidTool.h.

197 {
198 this, "centroidStatusKey", "",
199 "Centroid status word"
200 };

◆ m_configuration

std::string ZDC::RpdSubtractCentroidTool::m_configuration
private

Definition at line 74 of file RpdSubtractCentroidTool.h.

◆ m_cosDeltaReactionPlaneAngle

float ZDC::RpdSubtractCentroidTool::m_cosDeltaReactionPlaneAngle = 0
private

reaction plane angle on each side

Definition at line 165 of file RpdSubtractCentroidTool.h.

◆ m_cosDeltaReactionPlaneAngleKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_cosDeltaReactionPlaneAngleKey
private
Initial value:
{
this, "cosDeltaReactionPlaneAngleKey", "",
"Cosine of the difference between the reaction plane angles of the two sides"
}

Definition at line 245 of file RpdSubtractCentroidTool.h.

245 {
246 this, "cosDeltaReactionPlaneAngleKey", "",
247 "Cosine of the difference between the reaction plane angles of the two sides"
248 };

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_EMCalibEnergy

std::optional<std::array<float, 2> > ZDC::RpdSubtractCentroidTool::m_EMCalibEnergy
private

ZDC final (calibrated) energy on each side.

Definition at line 124 of file RpdSubtractCentroidTool.h.

◆ m_EMStatus

std::optional<std::array<std::bitset<ZDCPulseAnalyzer::N_STATUS_BITS>, 2> > ZDC::RpdSubtractCentroidTool::m_EMStatus
private

EM calibrated energy on each side.

Definition at line 125 of file RpdSubtractCentroidTool.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> ZDC::RpdSubtractCentroidTool::m_eventInfoKey
private
Initial value:
{
this, "EventInfoKey", "EventInfo",
"Location of the event info"
}

Definition at line 188 of file RpdSubtractCentroidTool.h.

188 {
189 this, "EventInfoKey", "EventInfo",
190 "Location of the event info"
191 };

◆ m_eventValid

bool ZDC::RpdSubtractCentroidTool::m_eventValid = false
private

average y centroid

Definition at line 141 of file RpdSubtractCentroidTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_forceMaxEMEnergy

RPDUtils::OptionalToolProperty<std::vector<float> > ZDC::RpdSubtractCentroidTool::m_forceMaxEMEnergy
private

Definition at line 83 of file RpdSubtractCentroidTool.h.

◆ m_forceMaximumNegativeSubtrAmpFrac

RPDUtils::OptionalToolProperty<std::vector<float> > ZDC::RpdSubtractCentroidTool::m_forceMaximumNegativeSubtrAmpFrac
private

Definition at line 85 of file RpdSubtractCentroidTool.h.

◆ m_forceMaxZDCEnergy

RPDUtils::OptionalToolProperty<std::vector<float> > ZDC::RpdSubtractCentroidTool::m_forceMaxZDCEnergy
private

Definition at line 81 of file RpdSubtractCentroidTool.h.

◆ m_forceMinEMEnergy

RPDUtils::OptionalToolProperty<std::vector<float> > ZDC::RpdSubtractCentroidTool::m_forceMinEMEnergy
private

Definition at line 82 of file RpdSubtractCentroidTool.h.

◆ m_forceMinZDCEnergy

RPDUtils::OptionalToolProperty<std::vector<float> > ZDC::RpdSubtractCentroidTool::m_forceMinZDCEnergy
private

Definition at line 80 of file RpdSubtractCentroidTool.h.

◆ m_forcePileupMaxFrac

RPDUtils::OptionalToolProperty<std::vector<float> > ZDC::RpdSubtractCentroidTool::m_forcePileupMaxFrac
private

Definition at line 84 of file RpdSubtractCentroidTool.h.

◆ m_forceUseCalibDecorations

RPDUtils::OptionalToolProperty<bool> ZDC::RpdSubtractCentroidTool::m_forceUseCalibDecorations
private

Definition at line 87 of file RpdSubtractCentroidTool.h.

◆ m_forceUseRPDSumAdc

RPDUtils::OptionalToolProperty<bool> ZDC::RpdSubtractCentroidTool::m_forceUseRPDSumAdc
private

Definition at line 86 of file RpdSubtractCentroidTool.h.

◆ m_initialized

bool ZDC::RpdSubtractCentroidTool::m_initialized = false
private

Definition at line 105 of file RpdSubtractCentroidTool.h.

◆ m_maxEMEnergy

std::vector<float> ZDC::RpdSubtractCentroidTool::m_maxEMEnergy
private

Definition at line 93 of file RpdSubtractCentroidTool.h.

◆ m_maximumNegativeSubtrAmpFrac

std::vector<float> ZDC::RpdSubtractCentroidTool::m_maximumNegativeSubtrAmpFrac
private

Definition at line 95 of file RpdSubtractCentroidTool.h.

◆ m_maxZDCEnergy

std::vector<float> ZDC::RpdSubtractCentroidTool::m_maxZDCEnergy
private

Definition at line 91 of file RpdSubtractCentroidTool.h.

◆ m_minEMEnergy

std::vector<float> ZDC::RpdSubtractCentroidTool::m_minEMEnergy
private

Definition at line 92 of file RpdSubtractCentroidTool.h.

◆ m_minZDCEnergy

std::vector<float> ZDC::RpdSubtractCentroidTool::m_minZDCEnergy
private

Definition at line 90 of file RpdSubtractCentroidTool.h.

◆ m_pileupMaxFrac

std::vector<float> ZDC::RpdSubtractCentroidTool::m_pileupMaxFrac
private

Definition at line 94 of file RpdSubtractCentroidTool.h.

◆ m_reactionPlaneAngle

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_reactionPlaneAngle {}
private

the y centroid for each column on each side

Definition at line 164 of file RpdSubtractCentroidTool.h.

164{};

◆ m_reactionPlaneAngleKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_reactionPlaneAngleKey
private
Initial value:
{
this, "reactionPlaneAngleKey", "",
"Reaction plane angle in [-pi, pi) from the positive x axis"
}

Definition at line 241 of file RpdSubtractCentroidTool.h.

241 {
242 this, "reactionPlaneAngleKey", "",
243 "Reaction plane angle in [-pi, pi) from the positive x axis"
244 };

◆ m_readZDCDecorations

bool ZDC::RpdSubtractCentroidTool::m_readZDCDecorations = false
private

Definition at line 106 of file RpdSubtractCentroidTool.h.

◆ m_RPDChannelData

std::array<std::array<std::array<RPDChannelData, RPDUtils::nCols>, RPDUtils::nRows>, 2> ZDC::RpdSubtractCentroidTool::m_RPDChannelData {}
private

EM modlue status word on each side.

Definition at line 126 of file RpdSubtractCentroidTool.h.

126{};

◆ m_RPDChannelSubtrAmpKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_RPDChannelSubtrAmpKey
private
Initial value:
{
this, "RPDChannelSubtrAmpKey", "",
"RPD channel subtracted amplitudes (tile mass) used in centroid calculation"
}

Definition at line 201 of file RpdSubtractCentroidTool.h.

201 {
202 this, "RPDChannelSubtrAmpKey", "",
203 "RPD channel subtracted amplitudes (tile mass) used in centroid calculation"
204 };

◆ m_RPDSideStatus

std::array<std::bitset<RPDDataAnalyzer::N_STATUS_BITS>, 2> ZDC::RpdSubtractCentroidTool::m_RPDSideStatus {}
private

Definition at line 121 of file RpdSubtractCentroidTool.h.

121{};

◆ m_RPDSubtrAmpSumKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_RPDSubtrAmpSumKey
private
Initial value:
{
this, "RPDSubtrAmpSumKey", "",
"Sum of RPD channel subtracted amplitudes (total mass) used in centroid calculation"
}

Definition at line 205 of file RpdSubtractCentroidTool.h.

205 {
206 this, "RPDSubtrAmpSumKey", "",
207 "Sum of RPD channel subtracted amplitudes (total mass) used in centroid calculation"
208 };

◆ m_subtrAmp

std::array<std::vector<float>, 2> ZDC::RpdSubtractCentroidTool::m_subtrAmp
private
Initial value:
= {
std::vector<float>(RPDUtils::nChannels, 0.0),
std::vector<float>(RPDUtils::nChannels, 0.0)
}

centroid status (valid by default) on each side

Definition at line 143 of file RpdSubtractCentroidTool.h.

143 {
144 std::vector<float>(RPDUtils::nChannels, 0.0),
145 std::vector<float>(RPDUtils::nChannels, 0.0)
146 };

◆ m_subtrAmpColSum

std::array<std::array<float, RPDUtils::nCols>, 2> ZDC::RpdSubtractCentroidTool::m_subtrAmpColSum {}
private

subtracted amplitude for each row on each side

Definition at line 148 of file RpdSubtractCentroidTool.h.

148{};

◆ m_subtrAmpRowSum

std::array<std::array<float, RPDUtils::nRows>, 2> ZDC::RpdSubtractCentroidTool::m_subtrAmpRowSum {}
private

subtracted amplitude for each channel on each side

Definition at line 147 of file RpdSubtractCentroidTool.h.

147{};

◆ m_subtrAmpSum

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_subtrAmpSum {}
private

subtracted amplitude for each column on each side

Definition at line 149 of file RpdSubtractCentroidTool.h.

149{};

◆ m_useCalibDecorations

bool ZDC::RpdSubtractCentroidTool::m_useCalibDecorations {}
private

Definition at line 97 of file RpdSubtractCentroidTool.h.

97{};

◆ m_useRPDSumAdc

bool ZDC::RpdSubtractCentroidTool::m_useRPDSumAdc {}
private

Definition at line 96 of file RpdSubtractCentroidTool.h.

96{};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeAux

bool ZDC::RpdSubtractCentroidTool::m_writeAux {}
private

Definition at line 77 of file RpdSubtractCentroidTool.h.

77{};

◆ m_xCentroid

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_xCentroid {}
private

y centroid after geomerty correction and before average subtraction on each side

Definition at line 154 of file RpdSubtractCentroidTool.h.

154{};

◆ m_xCentroidKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_xCentroidKey
private
Initial value:
{
this, "xCentroidKey", "",
"X centroid after geometry corrections and after average centroid subtraction"
}

Definition at line 225 of file RpdSubtractCentroidTool.h.

225 {
226 this, "xCentroidKey", "",
227 "X centroid after geometry corrections and after average centroid subtraction"
228 };

◆ m_xCentroidPreAvgSubtr

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_xCentroidPreAvgSubtr {}
private

y centroid before geomerty correction and before average subtraction (RPD detector coordinates) on each side

Definition at line 152 of file RpdSubtractCentroidTool.h.

152{};

◆ m_xCentroidPreAvgSubtrKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_xCentroidPreAvgSubtrKey
private
Initial value:
{
this, "xCentroidPreAvgSubtrKey", "",
"X centroid after geometry corrections and before average centroid subtraction"
}

Definition at line 217 of file RpdSubtractCentroidTool.h.

217 {
218 this, "xCentroidPreAvgSubtrKey", "",
219 "X centroid after geometry corrections and before average centroid subtraction"
220 };

◆ m_xCentroidPreGeomCorPreAvgSubtr

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_xCentroidPreGeomCorPreAvgSubtr {}
private

subtracted amplitude sum on each side

Definition at line 150 of file RpdSubtractCentroidTool.h.

150{};

◆ m_xCentroidPreGeomCorPreAvgSubtrKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_xCentroidPreGeomCorPreAvgSubtrKey
private
Initial value:
{
this, "xCentroidPreGeomCorPreAvgSubtrKey", "",
"X centroid before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
}

Definition at line 209 of file RpdSubtractCentroidTool.h.

209 {
210 this, "xCentroidPreGeomCorPreAvgSubtrKey", "",
211 "X centroid before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
212 };

◆ m_xRowCentroid

std::array<std::vector<float>, 2> ZDC::RpdSubtractCentroidTool::m_xRowCentroid
private
Initial value:
= {
std::vector<float>(RPDUtils::nRows, 0.0),
std::vector<float>(RPDUtils::nRows, 0.0)
}

y centroid after geomerty correction and after average subtraction on each side

Definition at line 156 of file RpdSubtractCentroidTool.h.

156 {
157 std::vector<float>(RPDUtils::nRows, 0.0),
158 std::vector<float>(RPDUtils::nRows, 0.0)
159 };

◆ m_xRowCentroidKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_xRowCentroidKey
private
Initial value:
{
this, "xRowCentroidKey", "",
"Row X centroids before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
}

Definition at line 233 of file RpdSubtractCentroidTool.h.

233 {
234 this, "xRowCentroidKey", "",
235 "Row X centroids before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
236 };

◆ m_yCentroid

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_yCentroid {}
private

x centroid after geomerty correction and after average subtraction on each side

Definition at line 155 of file RpdSubtractCentroidTool.h.

155{};

◆ m_yCentroidKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_yCentroidKey
private
Initial value:
{
this, "yCentroidKey", "",
"Y centroid after geometry corrections and after average centroid subtraction"
}

Definition at line 229 of file RpdSubtractCentroidTool.h.

229 {
230 this, "yCentroidKey", "",
231 "Y centroid after geometry corrections and after average centroid subtraction"
232 };

◆ m_yCentroidPreAvgSubtr

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_yCentroidPreAvgSubtr {}
private

x centroid after geomerty correction and before average subtraction on each side

Definition at line 153 of file RpdSubtractCentroidTool.h.

153{};

◆ m_yCentroidPreAvgSubtrKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_yCentroidPreAvgSubtrKey
private
Initial value:
{
this, "yCentroidPreAvgSubtrKey", "",
"Y centroid after geometry corrections and before average centroid subtraction"
}

Definition at line 221 of file RpdSubtractCentroidTool.h.

221 {
222 this, "yCentroidPreAvgSubtrKey", "",
223 "Y centroid after geometry corrections and before average centroid subtraction"
224 };

◆ m_yCentroidPreGeomCorPreAvgSubtr

std::array<float, 2> ZDC::RpdSubtractCentroidTool::m_yCentroidPreGeomCorPreAvgSubtr {}
private

x centroid before geomerty correction and before average subtraction (RPD detector coordinates) on each side

Definition at line 151 of file RpdSubtractCentroidTool.h.

151{};

◆ m_yCentroidPreGeomCorPreAvgSubtrKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_yCentroidPreGeomCorPreAvgSubtrKey
private
Initial value:
{
this, "yCentroidPreGeomCorPreAvgSubtrKey", "",
"Y centroid before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
}

Definition at line 213 of file RpdSubtractCentroidTool.h.

213 {
214 this, "yCentroidPreGeomCorPreAvgSubtrKey", "",
215 "Y centroid before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
216 };

◆ m_yColCentroid

std::array<std::vector<float>, 2> ZDC::RpdSubtractCentroidTool::m_yColCentroid
private
Initial value:
= {
std::vector<float>(RPDUtils::nCols, 0.0),
std::vector<float>(RPDUtils::nCols, 0.0)
}

the x centroid for each row on each side

Definition at line 160 of file RpdSubtractCentroidTool.h.

160 {
161 std::vector<float>(RPDUtils::nCols, 0.0),
162 std::vector<float>(RPDUtils::nCols, 0.0)
163 };

◆ m_yColCentroidKey

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::RpdSubtractCentroidTool::m_yColCentroidKey
private
Initial value:
{
this, "yColCentroidKey", "",
"Column Y centroids before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
}

Definition at line 237 of file RpdSubtractCentroidTool.h.

237 {
238 this, "yColCentroidKey", "",
239 "Column Y centroids before geometry corrections and before average centroid subtraction (RPD detector coordinates)"
240 };

◆ m_ZDCFinalEnergy

std::optional<std::array<float, 2> > ZDC::RpdSubtractCentroidTool::m_ZDCFinalEnergy
private

ZDC analysis status on each side.

Definition at line 123 of file RpdSubtractCentroidTool.h.

◆ m_ZDCModuleContainerName

std::string ZDC::RpdSubtractCentroidTool::m_ZDCModuleContainerName
private

Definition at line 75 of file RpdSubtractCentroidTool.h.

◆ m_ZDCSideStatus

std::optional<std::array<unsigned int, 2> > ZDC::RpdSubtractCentroidTool::m_ZDCSideStatus
private

RPD analysis status word on each side.

Definition at line 122 of file RpdSubtractCentroidTool.h.

◆ m_ZDCSumContainerName

std::string ZDC::RpdSubtractCentroidTool::m_ZDCSumContainerName
private

Definition at line 76 of file RpdSubtractCentroidTool.h.


The documentation for this class was generated from the following files: