ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::ActsClusterComparisonAlg Class Reference

#include <ActsClusterComparisonAlg.h>

Inheritance diagram for ActsTrk::ActsClusterComparisonAlg:
Collaboration diagram for ActsTrk::ActsClusterComparisonAlg:

Public Member Functions

virtual StatusCode initialize () override
 Initialize the algorithm.
virtual StatusCode execute (const EventContext &ctx) const override
 Execute the algorithm.
virtual StatusCode finalize () override
 Finalize the algorithm.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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 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

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

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode validateClusters (const EventContext &eventContext, std::unordered_map< const xAOD::PixelCluster *, const xAOD::PixelCluster * > &pixel_cluster_matches, std::unordered_map< const xAOD::StripCluster *, const xAOD::StripCluster * > &strip_cluster_matches) const
StatusCode validatePixelSpacepoints (const EventContext &eventContext, std::unordered_map< const xAOD::PixelCluster *, const xAOD::PixelCluster * > &pixel_cluster_matches) const
void matchPixelClusters (std::vector< const xAOD::PixelCluster * > &monitored_list, std::vector< const xAOD::PixelCluster * > &reference_list, const std::string &module_id, std::vector< std::pair< const xAOD::PixelCluster *, const xAOD::PixelCluster * > > &pairs) const
void matchStripClusters (std::vector< const xAOD::StripCluster * > &monitored_list, std::vector< const xAOD::StripCluster * > &reference_list, const std::string &module_id, std::vector< std::pair< const xAOD::StripCluster *, const xAOD::StripCluster * > > &pairs) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Accumulators::Counter m_pixel_unequal
Gaudi::Accumulators::Counter m_strip_unequal
Gaudi::Accumulators::Counter m_matched_pixel
Gaudi::Accumulators::Counter m_matched_strip
Gaudi::Accumulators::Counter m_pix_unmatched_mon
Gaudi::Accumulators::Counter m_pix_unmatched_ref
Gaudi::Accumulators::Counter m_strip_unmatched_mon
Gaudi::Accumulators::Counter m_strip_unmatched_ref
Gaudi::Accumulators::Counter m_pixel_pos_diff_1sig
Gaudi::Accumulators::Counter m_pixel_pos_diff_0p5sig
Gaudi::Accumulators::Counter m_pixel_pos_diff_0p25sig
Gaudi::Accumulators::Counter m_strip_pos_diff_1sig
Gaudi::Accumulators::Counter m_strip_pos_diff_0p5sig
Gaudi::Accumulators::Counter m_strip_pos_diff_0p25sig
Gaudi::Accumulators::Counter m_nMonSp
Gaudi::Accumulators::Counter m_nRefSp
Gaudi::Accumulators::Counter m_nMatchedSp
Gaudi::Accumulators::Counter m_nUnmatchedMonSp
Gaudi::Accumulators::Counter m_nUnmatchedRefSp
Gaudi::Accumulators::Counter m_nSpPosDiff1mm
Gaudi::Accumulators::Counter m_nSpPosDiff5mm
Gaudi::Accumulators::Counter m_nSpVarRDiff
Gaudi::Accumulators::Counter m_nSpVarZDiff
Gaudi::Property< std::string > m_pixelManagerKey
Gaudi::Property< std::string > m_stripManagerKey
const InDetDD::PixelDetectorManagerm_pixelManager {nullptr}
const InDetDD::SCT_DetectorManagerm_stripManager {nullptr}
const SCT_IDm_stripID {nullptr}
ToolHandle< ISiLorentzAngleToolm_stripLorentzAngleTool
ToolHandle< ISiLorentzAngleToolm_pixelLorentzAngleTool
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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
Boolean varibale turning on/off spacepoint validation

{@

Gaudi::Property< bool > m_checkSpacepoints
Names of input monitored and reference pixel/strip/spacepoint collections

{@

SG::ReadHandleKey< xAOD::SpacePointContainerm_monitoredSpacepointsKey
SG::ReadHandleKey< xAOD::SpacePointContainerm_referenceSpacepointsKey
SG::ReadHandleKey< xAOD::PixelClusterContainerm_monitoredPixelClustersKey
SG::ReadHandleKey< xAOD::StripClusterContainerm_monitoredStripClustersKey
SG::ReadHandleKey< xAOD::PixelClusterContainerm_referencePixelClustersKey
SG::ReadHandleKey< xAOD::StripClusterContainerm_referenceStripClustersKey

Detailed Description

Definition at line 51 of file ActsClusterComparisonAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode ActsTrk::ActsClusterComparisonAlg::execute ( const EventContext & ctx) const
overridevirtual

Execute the algorithm.

Definition at line 58 of file ActsClusterComparisonAlg.cxx.

59{
60
61
62 // Create per-event data structures
63 std::unordered_map<const xAOD::PixelCluster*, const xAOD::PixelCluster*>
64 pixel_cluster_matches;
65
66 std::unordered_map<const xAOD::StripCluster*, const xAOD::StripCluster*>
67 strip_cluster_matches;
68
69
70 ATH_CHECK(validateClusters(ctx, pixel_cluster_matches, strip_cluster_matches));
71
73 ATH_CHECK(validatePixelSpacepoints(ctx, pixel_cluster_matches));
74
75 return StatusCode::SUCCESS;
76}
#define ATH_CHECK
Evaluate an expression and check for errors.
StatusCode validateClusters(const EventContext &eventContext, std::unordered_map< const xAOD::PixelCluster *, const xAOD::PixelCluster * > &pixel_cluster_matches, std::unordered_map< const xAOD::StripCluster *, const xAOD::StripCluster * > &strip_cluster_matches) const
StatusCode validatePixelSpacepoints(const EventContext &eventContext, std::unordered_map< const xAOD::PixelCluster *, const xAOD::PixelCluster * > &pixel_cluster_matches) const

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode ActsTrk::ActsClusterComparisonAlg::finalize ( )
overridevirtual

Finalize the algorithm.

Definition at line 962 of file ActsClusterComparisonAlg.cxx.

963{
964
965 // Print cluster statistics
966 ATH_MSG_INFO("Validation Summary");
967 ATH_MSG_INFO("ValSum ============================================================");
968 ATH_MSG_INFO("ValSum PIXEL CLUSTER MATCHING STATISTICS: ");
969 ATH_MSG_INFO("ValSum Total unmatched clusters mon/ref: " << m_pix_unmatched_mon << " / " << m_pix_unmatched_ref);
970 ATH_MSG_INFO("ValSum Total matched clusters: " << m_matched_pixel);
971 ATH_MSG_INFO("ValSum Clusters with pos diff > 1 sigma: "
972 << m_pixel_pos_diff_1sig << " ("
973 << (m_matched_pixel.value() > 0
974 ? 100.0 * m_pixel_pos_diff_1sig.value() / m_matched_pixel.value()
975 : 0.0)
976 << "%)");
977 ATH_MSG_INFO("ValSum Clusters with pos diff > 0.5 sigma: "
978 << m_pixel_pos_diff_0p5sig << " ("
979 << (m_matched_pixel.value() > 0
980 ? 100.0 * m_pixel_pos_diff_0p5sig.value() / m_matched_pixel.value()
981 : 0.0)
982 << "%)");
983 ATH_MSG_INFO("ValSum Clusters with pos diff > 0.25 sigma: "
984 << m_pixel_pos_diff_0p25sig << " ("
985 << (m_matched_pixel.value() > 0
986 ? 100.0 * m_pixel_pos_diff_0p25sig.value() / m_matched_pixel.value()
987 : 0.0)
988 << "%)");
989 ATH_MSG_INFO("ValSum ============================================================");
990 ATH_MSG_INFO("ValSum ============================================================");
991 ATH_MSG_INFO("ValSum STRIP CLUSTER MATCHING STATISTICS:");
992 ATH_MSG_INFO("ValSum Total unmatched clusters mon/ref: " << m_strip_unmatched_mon << " / " << m_strip_unmatched_ref);
993 ATH_MSG_INFO("ValSum Total matched clusters: " << m_matched_strip);
994 ATH_MSG_INFO("ValSum Clusters with pos diff > 1 sigma: "
995 << m_strip_pos_diff_1sig << " ("
996 << (m_matched_strip.value() > 0
997 ? 100.0 * m_strip_pos_diff_1sig.value() / m_matched_strip.value()
998 : 0.0)
999 << "%)");
1000 ATH_MSG_INFO("ValSum Clusters with pos diff > 0.5 sigma: "
1001 << m_strip_pos_diff_0p5sig << " ("
1002 << (m_matched_strip.value() > 0
1003 ? 100.0 * m_strip_pos_diff_0p5sig.value() / m_matched_strip.value()
1004 : 0.0)
1005 << "%)");
1006 ATH_MSG_INFO("ValSum Clusters with pos diff > 0.25 sigma: "
1007 << m_strip_pos_diff_0p25sig << " ("
1008 << (m_matched_strip.value() > 0
1009 ? 100.0 * m_strip_pos_diff_0p25sig.value() / m_matched_strip.value()
1010 : 0.0)
1011 << "%)");
1012 ATH_MSG_INFO("ValSum ============================================================");
1013
1015 ATH_MSG_INFO("ValSum ============================================================");
1016 ATH_MSG_INFO("ValSum PIXEL SPACEPOINT MATCHING STATISTICS:");
1017 ATH_MSG_INFO("ValSum Total monitored spacepoints: " << m_nMonSp);
1018 ATH_MSG_INFO("ValSum Total reference spacepoints: " << m_nRefSp);
1019 ATH_MSG_INFO("ValSum Matched spacepoints: " << m_nMatchedSp);
1020 ATH_MSG_INFO("ValSum Unmatched monitored spacepoints: " << m_nUnmatchedMonSp);
1021 ATH_MSG_INFO("ValSum Unmatched reference spacepoints: " << m_nUnmatchedRefSp);
1022 ATH_MSG_INFO("ValSum ============================================================");
1023 ATH_MSG_INFO("ValSum SPACEPOINT POSITION COMPARISON:");
1024 ATH_MSG_INFO("ValSum Spacepoints with global pos diff > 1 mm: "
1025 << m_nSpPosDiff1mm << " ("
1026 << (m_nMatchedSp.value() > 0 ? 100.0 * m_nSpPosDiff1mm.value() / m_nMatchedSp.value() : 0.0)
1027 << "%)");
1028 ATH_MSG_INFO("ValSum Spacepoints with global pos diff > 5 mm: "
1029 << m_nSpPosDiff5mm << " ("
1030 << (m_nMatchedSp.value() > 0 ? 100.0 * m_nSpPosDiff5mm.value() / m_nMatchedSp.value() : 0.0)
1031 << "%)");
1032 ATH_MSG_INFO("ValSum ============================================================");
1033 ATH_MSG_INFO("ValSum SPACEPOINT VARIANCE COMPARISON:");
1034 ATH_MSG_INFO("ValSum Spacepoints with >10% variance R difference: "
1035 << m_nSpVarRDiff << " ("
1036 << (m_nMatchedSp.value() > 0 ? 100.0 * m_nSpVarRDiff.value() / m_nMatchedSp.value() : 0.0)
1037 << "%)");
1038 ATH_MSG_INFO("ValSum Spacepoints with >10% variance Z difference: "
1039 << m_nSpVarZDiff << " ("
1040 << (m_nMatchedSp.value() > 0 ? 100.0 * m_nSpVarZDiff.value() / m_nMatchedSp.value() : 0.0)
1041 << "%)");
1042 ATH_MSG_INFO("ValSum ============================================================");
1043 }
1044
1045 return StatusCode::SUCCESS;
1046}
#define ATH_MSG_INFO(x,...)
Gaudi::Accumulators::Counter m_nMatchedSp
Gaudi::Accumulators::Counter m_pix_unmatched_mon
Gaudi::Accumulators::Counter m_strip_unmatched_ref
Gaudi::Accumulators::Counter m_nUnmatchedRefSp
Gaudi::Accumulators::Counter m_pixel_pos_diff_0p25sig
Gaudi::Accumulators::Counter m_nSpPosDiff5mm
Gaudi::Accumulators::Counter m_strip_pos_diff_0p5sig
Gaudi::Accumulators::Counter m_nSpVarRDiff
Gaudi::Accumulators::Counter m_matched_pixel
Gaudi::Accumulators::Counter m_nSpVarZDiff
Gaudi::Accumulators::Counter m_nSpPosDiff1mm
Gaudi::Accumulators::Counter m_strip_pos_diff_0p25sig
Gaudi::Accumulators::Counter m_nUnmatchedMonSp
Gaudi::Accumulators::Counter m_strip_pos_diff_1sig
Gaudi::Accumulators::Counter m_pixel_pos_diff_1sig
Gaudi::Accumulators::Counter m_strip_unmatched_mon
Gaudi::Accumulators::Counter m_matched_strip
Gaudi::Accumulators::Counter m_pix_unmatched_ref
Gaudi::Accumulators::Counter m_pixel_pos_diff_0p5sig

◆ initialize()

StatusCode ActsTrk::ActsClusterComparisonAlg::initialize ( )
overridevirtual

Initialize the algorithm.

Definition at line 33 of file ActsClusterComparisonAlg.cxx.

34{
35 ATH_MSG_INFO("ActsClusterComparisonAlg::initialize");
36
39
40 ATH_CHECK(detStore()->retrieve(m_stripID, "SCT_ID"));
41
44
47
50
53
54 ATH_MSG_INFO("ActsClusterComparisonAlg::initialize complete");
55 return StatusCode::SUCCESS;
56}
SG::ReadHandleKey< xAOD::PixelClusterContainer > m_referencePixelClustersKey
ToolHandle< ISiLorentzAngleTool > m_pixelLorentzAngleTool
SG::ReadHandleKey< xAOD::SpacePointContainer > m_monitoredSpacepointsKey
SG::ReadHandleKey< xAOD::StripClusterContainer > m_referenceStripClustersKey
SG::ReadHandleKey< xAOD::PixelClusterContainer > m_monitoredPixelClustersKey
Gaudi::Property< std::string > m_stripManagerKey
const InDetDD::PixelDetectorManager * m_pixelManager
SG::ReadHandleKey< xAOD::StripClusterContainer > m_monitoredStripClustersKey
ToolHandle< ISiLorentzAngleTool > m_stripLorentzAngleTool
const InDetDD::SCT_DetectorManager * m_stripManager
SG::ReadHandleKey< xAOD::SpacePointContainer > m_referenceSpacepointsKey
Gaudi::Property< std::string > m_pixelManagerKey
const ServiceHandle< StoreGateSvc > & detStore() const

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ matchPixelClusters()

void ActsTrk::ActsClusterComparisonAlg::matchPixelClusters ( std::vector< const xAOD::PixelCluster * > & monitored_list,
std::vector< const xAOD::PixelCluster * > & reference_list,
const std::string & module_id,
std::vector< std::pair< const xAOD::PixelCluster *, const xAOD::PixelCluster * > > & pairs ) const
private

Definition at line 79 of file ActsClusterComparisonAlg.cxx.

85{
86
87 // Extract RDO sets
88 std::vector<std::set<Identifier>> monitored_rdo_sets;
89 std::vector<std::set<Identifier>> reference_rdo_sets;
90
91 for (const auto* c : monitored_list) {
92 const auto& rdoListRange = c->rdoList();
93 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
94 monitored_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
95 }
96
97 for (const auto* c : reference_list) {
98 const auto& rdoListRange = c->rdoList();
99 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
100 reference_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
101 }
102
103 // Match clusters
104 std::vector<std::pair<int, int>> matched_pairs;
105 std::vector<int> unmatched_monitored;
106 std::set<int> unmatched_reference;
107
108 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
109 unmatched_reference.insert(j);
110 }
111
112 for (size_t i = 0; i < monitored_rdo_sets.size(); ++i) {
113
114 bool found_match = false;
115 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
116 if (monitored_rdo_sets[i] == reference_rdo_sets[j]) {
117 matched_pairs.emplace_back(i, j);
118 pairs.emplace_back(monitored_list.at(i), reference_list.at(j));
119 found_match = true;
120 unmatched_reference.erase(j);
121 break;
122 }
123 }
124 if (!found_match) {
125 unmatched_monitored.push_back(i);
126 }
127 }
128
129 // Report mismatches
130 if (!unmatched_monitored.empty() || !unmatched_reference.empty()) {
131 ATH_MSG_DEBUG("[ERROR] Module " << module_id
132 << ": cluster mismatch detected!");
133 if (!unmatched_monitored.empty()) {
134 ATH_MSG_DEBUG(" Unmatched monitored clusters ("
135 << unmatched_monitored.size() << "):");
136 for (int i : unmatched_monitored) {
137 ATH_MSG_DEBUG(" - #" << i);
138 const xAOD::PixelCluster* monitored_cluster = monitored_list.at(i);
139 const auto& monitored_cov = monitored_cluster->localCovariance<1>();
140
141 ATH_MSG_DEBUG("Detailed print of cluster: ");
142
143 ATH_MSG_DEBUG("Local position: ");
145 " Monitored: ("
146 << monitored_cluster->localPosition<2>()[Trk::locX] << ", "
147 << monitored_cluster->localPosition<2>()[Trk::locY] << ")");
148
149 ATH_MSG_DEBUG("Cluster cov: ");
150 ATH_MSG_DEBUG(" Monitored: (" << monitored_cov(0, 0) << ", "
151 << monitored_cov(1, 1) << ")");
152 }
153 m_pix_unmatched_mon+= unmatched_monitored.size();
154 }
155 if (!unmatched_reference.empty()) {
156 ATH_MSG_DEBUG(" Unmatched reference clusters (" << unmatched_reference.size()
157 << "):");
158 for (int j : unmatched_reference) {
159 ATH_MSG_DEBUG(" - #" << j);
160 const xAOD::PixelCluster* reference_cluster = reference_list.at(j);
161 const auto& reference_cov = reference_cluster->localCovariance<1>();
162
163 ATH_MSG_DEBUG("Detailed print of cluster: ");
164
165 ATH_MSG_DEBUG("Local position: ");
166
167 ATH_MSG_DEBUG(" Reference: ("
168 << reference_cluster->localPosition<2>()[Trk::locX] << ", "
169 << reference_cluster->localPosition<2>()[Trk::locY]
170 << ")");
171
172 ATH_MSG_DEBUG("Cluster cov: ");
173
174 ATH_MSG_DEBUG(" Reference: (" << reference_cov(0, 0) << ", "
175 << reference_cov(1, 1) << ")");
176 }
177 m_pix_unmatched_ref+= unmatched_reference.size();
178 }
179 ATH_MSG_DEBUG("------------------------------------------------------------");
180 }
181}
#define ATH_MSG_DEBUG(x,...)
ConstMatrixMap< N > localCovariance() const
Returns the local covariance of the measurement.
ConstVectorMap< N > localPosition() const
Returns the local position of the measurement.
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
@ locY
local cartesian
Definition ParamDefs.h:38
@ locX
Definition ParamDefs.h:37
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.

◆ matchStripClusters()

void ActsTrk::ActsClusterComparisonAlg::matchStripClusters ( std::vector< const xAOD::StripCluster * > & monitored_list,
std::vector< const xAOD::StripCluster * > & reference_list,
const std::string & module_id,
std::vector< std::pair< const xAOD::StripCluster *, const xAOD::StripCluster * > > & pairs ) const
private

Definition at line 184 of file ActsClusterComparisonAlg.cxx.

190{
191
192 // Extract RDO sets
193 std::vector<std::set<Identifier>> monitored_rdo_sets;
194 std::vector<std::set<Identifier>> reference_rdo_sets;
195
196 for (const auto* c : monitored_list) {
197 const auto& rdoListRange = c->rdoList();
198 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
199 monitored_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
200 }
201
202 for (const auto* c : reference_list) {
203 const auto& rdoListRange = c->rdoList();
204 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
205 reference_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
206 }
207
208 // Match clusters
209 std::vector<std::pair<int, int>> matched_pairs;
210 std::vector<int> unmatched_monitored;
211 std::set<int> unmatched_reference;
212
213 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
214 unmatched_reference.insert(j);
215 }
216
217 for (size_t i = 0; i < monitored_rdo_sets.size(); ++i) {
218 bool found_match = false;
219 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
220 if (monitored_rdo_sets[i] == reference_rdo_sets[j]) {
221 matched_pairs.emplace_back(i, j);
222 pairs.emplace_back(monitored_list.at(i), reference_list.at(j));
223 found_match = true;
224 unmatched_reference.erase(j);
225 break;
226 }
227 }
228 if (!found_match) {
229 unmatched_monitored.push_back(i);
230 }
231 }
232
233 // Report mismatches
234 if (!unmatched_monitored.empty() || !unmatched_reference.empty()) {
235 ATH_MSG_DEBUG("[ERROR] Module " << module_id
236 << ": cluster mismatch detected!");
237 if (!unmatched_monitored.empty()) {
238 ATH_MSG_DEBUG(" Unmatched monitored clusters ("
239 << unmatched_monitored.size() << "):");
240 for (int i : unmatched_monitored) {
241 ATH_MSG_DEBUG(" - #" << i);
242 const xAOD::StripCluster* monitored_cluster = monitored_list.at(i);
243 const auto& monitored_cov = monitored_cluster->localCovariance<1>();
244
245 ATH_MSG_DEBUG("Detailed print of cluster: ");
246
247 ATH_MSG_DEBUG("Local position: ");
249 " Monitored: ("
250 << monitored_cluster->localPosition<1>()[Trk::locX] << ")");
251
252 ATH_MSG_DEBUG("Cluster cov: ");
253 ATH_MSG_DEBUG(" Monitored: (" << monitored_cov(0, 0) << ")");
254 }
255 m_strip_unmatched_mon+= unmatched_monitored.size();
256 }
257 if (!unmatched_reference.empty()) {
258 ATH_MSG_DEBUG(" Unmatched reference clusters (" << unmatched_reference.size()
259 << "):");
260 for (int j : unmatched_reference) {
261 ATH_MSG_DEBUG(" - #" << j);
262 const xAOD::StripCluster* reference_cluster = reference_list.at(j);
263 const auto& reference_cov = reference_cluster->localCovariance<1>();
264
265 ATH_MSG_DEBUG("Detailed print of cluster: ");
266
267 ATH_MSG_DEBUG("Local position: ");
268
269 ATH_MSG_DEBUG(" Reference: ("
270 << reference_cluster->localPosition<1>()[Trk::locX] << ")");
271
272 ATH_MSG_DEBUG("Cluster cov: ");
273
274 ATH_MSG_DEBUG(" Reference: (" << reference_cov(0, 0) << ")");
275 }
276 m_strip_unmatched_ref+= unmatched_reference.size();
277 }
278 ATH_MSG_DEBUG("------------------------------------------------------------");
279 }
280}
StripCluster_v1 StripCluster
Define the version of the strip cluster class.

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ 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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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 }

◆ validateClusters()

StatusCode ActsTrk::ActsClusterComparisonAlg::validateClusters ( const EventContext & eventContext,
std::unordered_map< const xAOD::PixelCluster *, const xAOD::PixelCluster * > & pixel_cluster_matches,
std::unordered_map< const xAOD::StripCluster *, const xAOD::StripCluster * > & strip_cluster_matches ) const
private

Definition at line 282 of file ActsClusterComparisonAlg.cxx.

284{
285
287 "============================================================");
288 // retrieve the clusters in form of xAOD containers
289 ATH_MSG_INFO("Reading monitored clusters: " << m_monitoredPixelClustersKey.key()
290 << " and "
292 ATH_MSG_INFO("Reading reference clusters: " << m_referencePixelClustersKey.key()
293 << " and "
296 "============================================================");
297
298 SG::ReadHandle<xAOD::PixelClusterContainer> monitoredPixelClustersHandle =
300 ATH_CHECK(monitoredPixelClustersHandle.isValid());
301 const xAOD::PixelClusterContainer* monitoredPixelClusters =
302 monitoredPixelClustersHandle.cptr();
303
304 SG::ReadHandle<xAOD::StripClusterContainer> monitoredStripClustersHandle =
306 ATH_CHECK(monitoredStripClustersHandle.isValid());
307 const xAOD::StripClusterContainer* monitoredStripClusters =
308 monitoredStripClustersHandle.cptr();
309
310 SG::ReadHandle<xAOD::PixelClusterContainer> referencePixelClustersHandle =
312 ATH_CHECK(referencePixelClustersHandle.isValid());
313 const xAOD::PixelClusterContainer* referencePixelClusters =
314 referencePixelClustersHandle.cptr();
315
316 SG::ReadHandle<xAOD::StripClusterContainer> referenceStripClustersHandle =
318 ATH_CHECK(referenceStripClustersHandle.isValid());
319 const xAOD::StripClusterContainer* referenceStripClusters =
320 referenceStripClustersHandle.cptr();
321
322 size_t t_n_pixel = monitoredPixelClusters->size();
323 size_t t_n_strip = monitoredStripClusters->size();
324 size_t a_n_pixel = referencePixelClusters->size();
325 size_t a_n_strip = referenceStripClusters->size();
326
327 ATH_MSG_DEBUG(" Monitored/reference pixel clusters " << t_n_pixel << " / "
328 << a_n_pixel);
329 ATH_MSG_DEBUG(" Monitored/reference strip clusters " << t_n_strip << " / "
330 << a_n_strip);
331
332 if (t_n_pixel != a_n_pixel) {
333 ATH_MSG_DEBUG("[ERROR] mismatched pixel cluster numbers found!");
334 ATH_MSG_DEBUG(" Monitored/reference clusters " << t_n_pixel << " / "
335 << a_n_pixel);
336 }
337 if (t_n_strip != a_n_strip) {
338 ATH_MSG_DEBUG("[ERROR] mismatched strip cluster numbers found!");
339 ATH_MSG_DEBUG(" Monitored/reference clusters " << t_n_strip << " / "
340 << a_n_strip);
341 }
342
343 // Group by module
344 std::map<std::string, std::vector<const xAOD::PixelCluster*>>
345 monitored_pixel_map, reference_pixel_map;
346 std::map<std::string, std::vector<const xAOD::StripCluster*>>
347 monitored_strip_map, reference_strip_map;
348
349 for (const auto* c : *monitoredPixelClusters) {
350 monitored_pixel_map[std::to_string(c->identifierHash())].push_back(c);
351 }
352 for (const auto* c : *monitoredStripClusters) {
353 monitored_strip_map[std::to_string(c->identifierHash())].push_back(c);
354 }
355 for (const auto* c : *referencePixelClusters) {
356 reference_pixel_map[std::to_string(c->identifierHash())].push_back(c);
357 }
358 for (const auto* c : *referenceStripClusters) {
359 reference_strip_map[std::to_string(c->identifierHash())].push_back(c);
360 }
361
362 // Collect all module IDs
363 std::set<std::string> pixel_modules, strip_modules;
364 for (const auto& [key, _] : monitored_pixel_map)
365 pixel_modules.insert(key);
366 for (const auto& [key, _] : reference_pixel_map)
367 pixel_modules.insert(key);
368 for (const auto& [key, _] : monitored_strip_map)
369 strip_modules.insert(key);
370 for (const auto& [key, _] : reference_strip_map)
371 strip_modules.insert(key);
372
373 int pixel_unequal = 0, strip_unequal = 0;
374 int matched_pixel = 0, matched_strip = 0;
375 int pixel_pos_diff_0p5sig = 0;
376 int pixel_pos_diff_0p25sig = 0;
377 int pixel_pos_diff_1sig = 0;
378 int strip_pos_diff_0p5sig = 0;
379 int strip_pos_diff_0p25sig = 0;
380 int strip_pos_diff_1sig = 0;
381
382 ATH_MSG_DEBUG("Pixel/Strip modules " << pixel_modules.size() << " / "
383 << strip_modules.size());
384 ATH_MSG_DEBUG("Pixel cluster validation: ");
386 "============================================================");
387
388 // Process pixel modules
389 for (const auto& hid : pixel_modules) {
390 auto& tpixel = monitored_pixel_map[hid];
391 auto& apixel = reference_pixel_map[hid];
392
393 if (tpixel.empty() && apixel.empty())
394 continue;
395
396 if (tpixel.size() != apixel.size()) {
397 ATH_MSG_DEBUG("[ERROR] Pixel Module " << hid
398 << ": mismatched clusters found!");
399 ATH_MSG_DEBUG(" Reference found " << apixel.size()
400 << " and monitored found " << tpixel.size() << " clusters!");
401 pixel_unequal++;
402 continue;
403 }
404
405 std::vector<
406 std::pair<const xAOD::PixelCluster*, const xAOD::PixelCluster*>>
407 pixel_pairs;
408 matchPixelClusters(tpixel, apixel, hid, pixel_pairs);
409
410 matched_pixel += pixel_pairs.size();
411
412 // Add matched pairs and check position differences
413 for (const auto& pair : pixel_pairs) {
414 const xAOD::PixelCluster* monitored_cluster = pair.first;
415 const xAOD::PixelCluster* reference_cluster = pair.second;
416
417 (pixel_cluster_matches)[pair.first] = pair.second;
418
419 // Calculate local position difference
420 double l_dx = monitored_cluster->localPosition<2>()[Trk::locX] -
421 reference_cluster->localPosition<2>()[Trk::locX];
422 double l_dy = monitored_cluster->localPosition<2>()[Trk::locY] -
423 reference_cluster->localPosition<2>()[Trk::locY];
424 double l_pos_diff = std::sqrt(l_dx * l_dx + l_dy * l_dy);
425
426 // Calculate global position difference
427 float g_dx = (monitored_cluster->globalPosition()).x() -
428 (reference_cluster->globalPosition()).x();
429 float g_dy = (monitored_cluster->globalPosition()).y() -
430 (reference_cluster->globalPosition()).y();
431 float g_dz = (monitored_cluster->globalPosition()).z() -
432 (reference_cluster->globalPosition()).z();
433 float g_pos_diff =
434 std::sqrt(g_dx * g_dx + g_dy * g_dy + g_dz * g_dz);
435
436 // Calculate error difference
437 Eigen::Matrix<float, 2, 2> monitored_cov =
438 monitored_cluster->localCovariance<2>();
439 Eigen::Matrix<float, 2, 2> reference_cov =
440 reference_cluster->localCovariance<2>();
441
442 const InDetDD::SiDetectorElement* monitored_element =
443 m_pixelManager->getDetectorElement(
444 monitored_cluster->identifierHash());
445 const InDetDD::PixelModuleDesign& design =
446 static_cast<const InDetDD::PixelModuleDesign&>(
447 monitored_element->design());
448
449 const Identifier monitored_Pixel_ModuleID =
450 monitored_element->identify();
451 double monitored_lorentz_shift =
452 m_pixelLorentzAngleTool->getLorentzShift(
453 monitored_element->identifyHash(), eventContext);
454
455
456 if (std::abs(l_dx / (std::sqrt(monitored_cov(0, 0)))) > 0.25 ||
457 std::abs(l_dy / (std::sqrt(monitored_cov(1, 1)))) > 0.25) {
458 pixel_pos_diff_0p25sig++;
459
460 ATH_MSG_DEBUG("Detailed print of cluster discrepancy: ");
461 ATH_MSG_DEBUG("On module: " << monitored_Pixel_ModuleID);
462 ATH_MSG_DEBUG("Lorentz shift: " << std::fixed << std::setprecision(9) << monitored_lorentz_shift);
463
464 ATH_MSG_DEBUG("Local position: ");
466 " Monitored: ("
467 << monitored_cluster->localPosition<2>()[Trk::locX] << ", "
468 << monitored_cluster->localPosition<2>()[Trk::locY] << ")");
469 ATH_MSG_DEBUG(" Reference: ("
470 << reference_cluster->localPosition<2>()[Trk::locX] << ", "
471 << reference_cluster->localPosition<2>()[Trk::locY]
472 << ")");
473 ATH_MSG_DEBUG(" Δx = " << l_dx << ", Δy = " << l_dy
474 << ", Δr = " << l_pos_diff);
475 ATH_MSG_DEBUG("Cluster cov: ");
476 ATH_MSG_DEBUG(" Monitored: (" << monitored_cov(0, 0) << ", "
477 << monitored_cov(1, 1) << ")");
478 ATH_MSG_DEBUG(" Reference: (" << reference_cov(0, 0) << ", "
479 << reference_cov(1, 1) << ")");
480 ATH_MSG_DEBUG(" Δx = " << monitored_cov(0, 0) - reference_cov(0, 0)
481 << ", Δy = "
482 << monitored_cov(1, 1) - reference_cov(1, 1));
483
484
485 const auto& rdoListRange = monitored_cluster->rdoList();
486 std::vector<Identifier> monitored_rdoList(
487 rdoListRange.begin(), rdoListRange.end());
488 for (auto rdoIter : monitored_rdoList) {
489 const InDetDD::SiCellId& chargeCellId =
490 monitored_element->cellIdFromIdentifier(rdoIter);
491 std::array<InDetDD::PixelDiodeTree::CellIndexType, 2>
493 chargeCellId.phiIndex(), chargeCellId.etaIndex());
494
495 InDetDD::PixelDiodeTree::DiodeProxyWithPosition si_param(
496 design.diodeProxyFromIdxCachePosition(diode_idx));
497 ATH_MSG_DEBUG("hit id for this cell: "
498 << chargeCellId
499 << ", position: " << si_param.position()[0]
500 << ", " << si_param.position()[1]);
501 }
502
503 // Calculate width difference
504 ATH_MSG_DEBUG("Cluster width: ");
505 ATH_MSG_DEBUG(" Monitored phi/eta channels, eta width: ("
506 << monitored_cluster->channelsInPhi() << ", "
507 << monitored_cluster->channelsInEta() << ", "
508 << monitored_cluster->widthInEta() << ")");
509 ATH_MSG_DEBUG(" Reference phi/eta channels, eta width: ("
510 << reference_cluster->channelsInPhi() << ", "
511 << reference_cluster->channelsInEta() << ", "
512 << reference_cluster->widthInEta() << ")");
513
514 ATH_MSG_DEBUG(" Δphi = " << monitored_cluster->channelsInPhi() -
515 reference_cluster->channelsInPhi()
516 << ", Δeta = "
517 << monitored_cluster->channelsInEta() -
518 reference_cluster->channelsInEta()
519 << ", Δwidth = "
520 << monitored_cluster->widthInEta() -
521 reference_cluster->widthInEta());
522 }
523 if (std::abs(l_dx / (std::sqrt(monitored_cov(0, 0)))) > 0.5 ||
524 std::abs(l_dy / (std::sqrt(monitored_cov(1, 1)))) > 0.5) {
525 pixel_pos_diff_0p5sig++;
526 }
527 if (std::abs(l_dx / (std::sqrt(monitored_cov(0, 0)))) > 1 ||
528 std::abs(l_dy / (std::sqrt(monitored_cov(1, 1)))) > 1) {
529 pixel_pos_diff_1sig++;
530 }
531
532
533 ATH_MSG_VERBOSE("Global position: ");
534 ATH_MSG_VERBOSE(" Monitored: ("
535 << (monitored_cluster->globalPosition()).x() << ", "
536 << (monitored_cluster->globalPosition()).y() << ", "
537 << (monitored_cluster->globalPosition()).z() << ")");
538 ATH_MSG_VERBOSE(" Reference: ("
539 << (reference_cluster->globalPosition()).x() << ", "
540 << (reference_cluster->globalPosition()).y() << ", "
541 << (reference_cluster->globalPosition()).z() << ")");
542 ATH_MSG_VERBOSE(" Δx = " << g_dx << ", Δy = " << g_dy << ", Δz = "
543 << g_dz << ", Δr = " << g_pos_diff);
544
545 }
546 }
547
549 "============================================================");
550 ATH_MSG_DEBUG("Strip cluster validation: ");
552 "============================================================");
553 // Process strip modules
554 for (const auto& hid : strip_modules) {
555 auto& tstrip = monitored_strip_map[hid];
556 auto& astrip = reference_strip_map[hid];
557
558 if (tstrip.empty() && astrip.empty())
559 continue;
560
561 if (tstrip.size() != astrip.size()) {
562 ATH_MSG_DEBUG("[ERROR] Strip Module "
563 << hid << ": mismatched clusters found!");
564 ATH_MSG_DEBUG(" Reference found " << astrip.size()
565 << " and monitored found "
566 << tstrip.size() << " clusters!");
567 strip_unequal++;
568 continue;
569 }
570
571 std::vector<
572 std::pair<const xAOD::StripCluster*, const xAOD::StripCluster*>>
573 strip_pairs;
574 matchStripClusters(tstrip, astrip, hid, strip_pairs);
575
576 matched_strip += strip_pairs.size();
577
578 // Add matched pairs and check position differences
579 for (const auto& pair : strip_pairs) {
580 const xAOD::StripCluster* monitored_cluster = pair.first;
581 const xAOD::StripCluster* reference_cluster = pair.second;
582
583 (strip_cluster_matches)[pair.first] = pair.second;
584
585 // Calculate position difference
586 double pos_diff = monitored_cluster->localPosition<1>()[Trk::locX] -
587 reference_cluster->localPosition<1>()[Trk::locX];
588
589
590 // Calculate error difference
591 Eigen::Matrix<float, 1, 1> monitored_cov =
592 monitored_cluster->localCovariance<1>();
593 Eigen::Matrix<float, 1, 1> reference_cov =
594 reference_cluster->localCovariance<1>();
595
596 const InDetDD::SiDetectorElement* monitored_element =
597 m_stripManager->getDetectorElement(monitored_cluster->identifierHash());
598
599
600 if (std::abs(pos_diff / (std::sqrt(monitored_cov(0, 0)))) > 0.25) {
601 strip_pos_diff_0p25sig++;
602
603 int side = m_stripID->side(monitored_element->identify());
604 const Identifier strip_moduleID = m_stripID->module_id(monitored_element->identify());
605 const IdentifierHash Strip_ModuleHash = m_stripID->wafer_hash(strip_moduleID);
606 double monitored_lorentz_shift =
607 m_stripLorentzAngleTool->getLorentzShift(Strip_ModuleHash + side, eventContext);
608
609 ATH_MSG_DEBUG("Detailed print of cluster discrepancy: ");
610 ATH_MSG_DEBUG("On module: " << strip_moduleID << ", side: " << m_stripID->side(monitored_element->identify()));
611 ATH_MSG_DEBUG("Lorentz shift: " << std::fixed << std::setprecision(9) << monitored_lorentz_shift);
612
613 ATH_MSG_DEBUG("Local position: ");
615 " Monitored: ("
616 << monitored_cluster->localPosition<1>()[Trk::locX] << ")");
617 ATH_MSG_DEBUG(" Reference: ("
618 << reference_cluster->localPosition<1>()[Trk::locX] << ")");
619 ATH_MSG_DEBUG(" Δx = " << pos_diff );
620 ATH_MSG_DEBUG("Cluster cov: ");
621 ATH_MSG_DEBUG(" Monitored: (" << monitored_cov(0, 0) << ")");
622 ATH_MSG_DEBUG(" Reference: (" << reference_cov(0, 0) << ")");
623 ATH_MSG_DEBUG(" Δx = " << monitored_cov(0, 0) - reference_cov(0, 0));
624
625 const auto& rdoListRange = monitored_cluster->rdoList();
626 std::vector<Identifier> monitored_rdoList(
627 rdoListRange.begin(), rdoListRange.end());
628
629 if (monitored_element->isBarrel()) {
630 const InDetDD::SCT_BarrelModuleSideDesign* s_design = (static_cast<const InDetDD::SCT_BarrelModuleSideDesign*>(&monitored_element->design()));
631
632 for (auto rdoIter : monitored_rdoList) {
633 const InDetDD::SiCellId& chargeCellId =
634 monitored_element->cellIdFromIdentifier(rdoIter);
635 InDetDD::SiLocalPosition si_pos =
636 s_design->localPositionOfCell(chargeCellId);
637 Amg::Vector2D loc_pos(si_pos.xPhi(), si_pos.xEta());
638 ATH_MSG_DEBUG("hit id for this cell: "
639 << chargeCellId
640 << ", position: " << loc_pos[0]
641 << ", " << loc_pos[1]);
642 }
643
644 }else{
645
646 const InDetDD::StripStereoAnnulusDesign* annulus_design = (static_cast<const InDetDD::StripStereoAnnulusDesign*>(&monitored_element->design()));
647
648 for (auto rdoIter : monitored_rdoList) {
649 const InDetDD::SiCellId& chargeCellId =
650 monitored_element->cellIdFromIdentifier(rdoIter);
651
652 InDetDD::SiLocalPosition si_pos =
653 annulus_design->localPositionOfCell(chargeCellId);
654 Amg::Vector2D loc_pos(si_pos.xPhi(), si_pos.xEta());
655 ATH_MSG_DEBUG("hit id for this cell: "
656 << chargeCellId
657 << ", posiiton: " << loc_pos[0]
658 << ", " << loc_pos[1]);
659 }
660
661 }
662
663 // Calculate width difference
664 ATH_MSG_DEBUG("Cluster width: ");
665 ATH_MSG_DEBUG(" Monitored phi channels: ("
666 << monitored_cluster->channelsInPhi() << ")");
667 ATH_MSG_DEBUG(" Reference phi channels: ("
668 << reference_cluster->channelsInPhi() << ")");
669
670 ATH_MSG_DEBUG(" Δphi = " << monitored_cluster->channelsInPhi() -
671 reference_cluster->channelsInPhi());
672
673 }
674 if (std::abs(pos_diff / (std::sqrt(monitored_cov(0, 0)))) > 0.5) {
675 strip_pos_diff_0p5sig++;
676 }
677 if (std::abs(pos_diff / (std::sqrt(monitored_cov(0, 0)))) > 1) {
678 strip_pos_diff_1sig++;
679 }
680
681 }
682 }
683
685 "============================================================");
686
687 // Print statistics
689 "============================================================");
690 ATH_MSG_DEBUG("PIXEL CLUSTER MATCHING STATISTICS: ");
691 ATH_MSG_DEBUG(" Total matched clusters: " << matched_pixel);
692 ATH_MSG_DEBUG(" Clusters with pos diff > 1 sigma: "
693 << pixel_pos_diff_1sig << " ("
694 << (matched_pixel > 0
695 ? 100.0 * pixel_pos_diff_1sig / matched_pixel
696 : 0.0)
697 << "%)");
698 ATH_MSG_DEBUG(" Clusters with pos diff > 0.5 sigma: "
699 << pixel_pos_diff_0p5sig << " ("
700 << (matched_pixel > 0
701 ? 100.0 * pixel_pos_diff_0p5sig / matched_pixel
702 : 0.0)
703 << "%)");
704 ATH_MSG_DEBUG(" Clusters with pos diff > 0.25 sigma: "
705 << pixel_pos_diff_0p25sig << " ("
706 << (matched_pixel > 0
707 ? 100.0 * pixel_pos_diff_0p25sig / matched_pixel
708 : 0.0)
709 << "%)");
711 "============================================================");
713 "============================================================");
714 ATH_MSG_DEBUG("STRIP CLUSTER MATCHING STATISTICS:");
715 ATH_MSG_DEBUG(" Total matched clusters: " << matched_strip);
716 ATH_MSG_DEBUG(" Clusters with pos diff > 1 sigma: "
717 << strip_pos_diff_1sig << " ("
718 << (matched_strip > 0
719 ? 100.0 * strip_pos_diff_1sig / matched_strip
720 : 0.0)
721 << "%)");
722 ATH_MSG_DEBUG(" Clusters with pos diff > 0.5 sigma: "
723 << strip_pos_diff_0p5sig << " ("
724 << (matched_strip > 0
725 ? 100.0 * strip_pos_diff_0p5sig / matched_strip
726 : 0.0)
727 << "%)");
728 ATH_MSG_DEBUG(" Clusters with pos diff > 0.25 sigma: "
729 << strip_pos_diff_0p25sig << " ("
730 << (matched_strip > 0
731 ? 100.0 * strip_pos_diff_0p25sig / matched_strip
732 : 0.0)
733 << "%)");
735 "============================================================");
736
737 m_pixel_unequal += pixel_unequal;
738 m_strip_unequal += strip_unequal;
739 m_matched_pixel += matched_pixel;
740 m_matched_strip += matched_strip;
741 m_pixel_pos_diff_1sig += pixel_pos_diff_1sig;
742 m_pixel_pos_diff_0p5sig += pixel_pos_diff_0p5sig;
743 m_pixel_pos_diff_0p25sig += pixel_pos_diff_0p25sig;
744 m_strip_pos_diff_1sig += strip_pos_diff_1sig;
745 m_strip_pos_diff_0p5sig += strip_pos_diff_0p5sig;
746 m_strip_pos_diff_0p25sig += strip_pos_diff_0p25sig;
747
748 return StatusCode::SUCCESS;
749}
#define ATH_MSG_VERBOSE(x,...)
void matchPixelClusters(std::vector< const xAOD::PixelCluster * > &monitored_list, std::vector< const xAOD::PixelCluster * > &reference_list, const std::string &module_id, std::vector< std::pair< const xAOD::PixelCluster *, const xAOD::PixelCluster * > > &pairs) const
Gaudi::Accumulators::Counter m_pixel_unequal
Gaudi::Accumulators::Counter m_strip_unequal
void matchStripClusters(std::vector< const xAOD::StripCluster * > &monitored_list, std::vector< const xAOD::StripCluster * > &reference_list, const std::string &module_id, std::vector< std::pair< const xAOD::StripCluster *, const xAOD::StripCluster * > > &pairs) const
size_type size() const noexcept
Returns the number of elements in the collection.
static constexpr std::array< PixelDiodeTree::CellIndexType, 2 > makeCellIndex(T local_x_idx, T local_y_idx)
Create a 2D cell index from the indices in local-x (phi, row) and local-y (eta, column) direction.
PixelDiodeTree::DiodeProxyWithPosition diodeProxyFromIdxCachePosition(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
id -> position
int phiIndex() const
Get phi index. Equivalent to strip().
Definition SiCellId.h:122
int etaIndex() const
Get eta index.
Definition SiCellId.h:114
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
double xPhi() const
position along phi direction:
double xEta() const
position along eta direction:
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
virtual Identifier identify() const override final
identifier of this detector element (inline)
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const override
id -> position
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
Eigen::Matrix< double, 2, 1 > Vector2D
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
PixelClusterContainer_v1 PixelClusterContainer
Define the version of the pixel cluster container.
StripClusterContainer_v1 StripClusterContainer
Define the version of the strip cluster container.

◆ validatePixelSpacepoints()

StatusCode ActsTrk::ActsClusterComparisonAlg::validatePixelSpacepoints ( const EventContext & eventContext,
std::unordered_map< const xAOD::PixelCluster *, const xAOD::PixelCluster * > & pixel_cluster_matches ) const
private

Definition at line 751 of file ActsClusterComparisonAlg.cxx.

753{
754
755 // retrieve the spacepoints in form of xAOD containers
757 "Reading monitored spacepoints: " << m_monitoredSpacepointsKey.key());
758 ATH_MSG_INFO("Reading reference spacepoints: " << m_referenceSpacepointsKey.key());
759
760 SG::ReadHandle<xAOD::SpacePointContainer> monitoredSpacepointsHandle =
762 ATH_CHECK(monitoredSpacepointsHandle.isValid());
763 const xAOD::SpacePointContainer* monitoredSpacepoints =
764 monitoredSpacepointsHandle.cptr();
765
766 SG::ReadHandle<xAOD::SpacePointContainer> referenceSpacepointsHandle =
768 ATH_CHECK(referenceSpacepointsHandle.isValid());
769 const xAOD::SpacePointContainer* referenceSpacepoints =
770 referenceSpacepointsHandle.cptr();
771
772 size_t t_n_sp = monitoredSpacepoints->size();
773 size_t a_n_sp = referenceSpacepoints->size();
774
775 ATH_MSG_DEBUG(" Monitored/reference spacepoints " << t_n_sp << " / " << a_n_sp);
776
777 if (t_n_sp != a_n_sp) {
778 ATH_MSG_DEBUG("[ERROR] mismatched spacepoint numbers found!");
779 ATH_MSG_DEBUG(" Monitored/reference spacepoints " << t_n_sp << " / "
780 << a_n_sp);
781 }
782
783 // Now match spacepoints based on their constituent clusters
784 int matched_sp = 0;
785 int unmatched_monitored_sp = 0;
786 int unmatched_reference_sp = 0;
787 int sp_global_pos_diff_1mm = 0;
788 int sp_global_pos_diff_5mm = 0;
789 int sp_variance_r_diff = 0;
790 int sp_variance_z_diff = 0;
791
792 std::vector<std::pair<const xAOD::SpacePoint*, const xAOD::SpacePoint*>>
793 sp_matches;
794 std::set<const xAOD::SpacePoint*> matched_reference_sp;
795
796 for (const auto* monitored_sp : *monitoredSpacepoints) {
797
798 const auto& monitored_measurements = monitored_sp->measurements();
799
800 // Find matching ACTS spacepoint by comparing cluster content
801 bool found_match = false;
802 for (const auto* reference_sp : *referenceSpacepoints) {
803
804 const auto& reference_measurements = reference_sp->measurements();
805
806 // Check if measurements sizes match
807 if (monitored_measurements.size() != reference_measurements.size())
808 continue;
809
810 // Check if all clusters match
811 bool all_clusters_match = true;
812 for (size_t i = 0; i < monitored_measurements.size(); ++i) {
813 const xAOD::UncalibratedMeasurement* monitored_meas =
814 monitored_measurements[i];
815 const xAOD::UncalibratedMeasurement* reference_meas =
816 reference_measurements[i];
817
818 // Try pixel cluster matching
819 auto monitored_pixel =
820 dynamic_cast<const xAOD::PixelCluster*>(monitored_meas);
821 auto reference_pixel =
822 dynamic_cast<const xAOD::PixelCluster*>(reference_meas);
823
824 if (monitored_pixel && reference_pixel) {
825 auto it = pixel_cluster_matches.find(monitored_pixel);
826 if (it == pixel_cluster_matches.end() ||
827 it->second != reference_pixel) {
828 all_clusters_match = false;
829 break;
830 }
831 } else {
832 // Only pixel spacepoints are supported for now
833 ATH_MSG_WARNING("Non-pixel measurement in spacepoint comparison — "
834 "strip spacepoints are not yet handled, skipping pair");
835 all_clusters_match = false;
836 break;
837 }
838 }
839
840 if (all_clusters_match) {
841
842 // Found matching spacepoint pair
843 matched_sp++;
844 sp_matches.push_back(std::make_pair(monitored_sp, reference_sp));
845 matched_reference_sp.insert(reference_sp);
846 found_match = true;
847
848 break;
849 }
850 }
851
852 if (!found_match) {
853 unmatched_monitored_sp++;
854 }
855 }
856
857 for (auto& sp_pair : sp_matches) {
858
859 const xAOD::SpacePoint* monitored_sp = sp_pair.first;
860 const xAOD::SpacePoint* reference_sp = sp_pair.second;
861
862 double dx = monitored_sp->x() - reference_sp->x();
863 double dy = monitored_sp->y() - reference_sp->y();
864 double dz = monitored_sp->z() - reference_sp->z();
865 double pos_diff = std::sqrt(dx * dx + dy * dy + dz * dz);
866
867 // Calculate global position difference
868 ATH_MSG_DEBUG("Spacepoint global position: ");
869 ATH_MSG_DEBUG(" Monitored: (" << monitored_sp->x() << ", " << monitored_sp->y()
870 << ", " << monitored_sp->z() << ")");
871 ATH_MSG_DEBUG(" Reference: (" << reference_sp->x() << ", " << reference_sp->y()
872 << ", " << reference_sp->z() << ")");
873 ATH_MSG_DEBUG(" Δx = " << dx << ", Δy = " << dy << ", Δz = " << dz
874 << ", Δr = " << pos_diff);
875
876 if (pos_diff > 1.0)
877 sp_global_pos_diff_1mm++;
878 if (pos_diff > 5.0)
879 sp_global_pos_diff_5mm++;
880
881 // Calculate covariance difference
882 ATH_MSG_DEBUG("Spacepoint cov and radius: ");
883 ATH_MSG_DEBUG(" Monitored r/z and radius: ("
884 << monitored_sp->varianceR() << ", "
885 << monitored_sp->varianceZ() << ", " << monitored_sp->radius()
886 << ")");
887 ATH_MSG_DEBUG(" Reference r/z and radius: (" << reference_sp->varianceR() << ", "
888 << reference_sp->varianceZ() << ", "
889 << reference_sp->radius() << ")");
890 ATH_MSG_DEBUG(" Δcov_r = "
891 << monitored_sp->varianceR() - reference_sp->varianceR()
892 << ", Δcov_z = "
893 << monitored_sp->varianceZ() - reference_sp->varianceZ()
894 << ", Δradius = "
895 << monitored_sp->radius() - reference_sp->radius());
896
897 if (reference_sp->varianceR() > 0 &&
898 std::abs(monitored_sp->varianceR() - reference_sp->varianceR()) /
899 reference_sp->varianceR() > 0.1)
900 sp_variance_r_diff++;
901 if (reference_sp->varianceZ() > 0 &&
902 std::abs(monitored_sp->varianceZ() - reference_sp->varianceZ()) /
903 reference_sp->varianceZ() > 0.1)
904 sp_variance_z_diff++;
905
906 }
907
908 unmatched_reference_sp = referenceSpacepoints->size() - matched_reference_sp.size();
909
910 // Print statistics
912 "============================================================");
913 ATH_MSG_INFO("SPACEPOINT MATCHING STATISTICS:");
914 ATH_MSG_INFO(" Total monitored spacepoints: " << t_n_sp);
915 ATH_MSG_INFO(" Total reference spacepoints: " << a_n_sp);
916 ATH_MSG_INFO(" Matched spacepoints: " << matched_sp);
917 ATH_MSG_INFO(" Unmatched monitored spacepoints: " << unmatched_monitored_sp);
918 ATH_MSG_INFO(" Unmatched reference spacepoints: " << unmatched_reference_sp);
920 "============================================================");
921 ATH_MSG_INFO("SPACEPOINT POSITION COMPARISON:");
923 " Spacepoints with global pos diff > 1 mm: "
924 << sp_global_pos_diff_1mm << " ("
925 << (matched_sp > 0 ? 100.0 * sp_global_pos_diff_1mm / matched_sp : 0.0)
926 << "%)");
928 " Spacepoints with global pos diff > 5 mm: "
929 << sp_global_pos_diff_5mm << " ("
930 << (matched_sp > 0 ? 100.0 * sp_global_pos_diff_5mm / matched_sp : 0.0)
931 << "%)");
933 "============================================================");
934 ATH_MSG_INFO("SPACEPOINT VARIANCE COMPARISON:");
936 " Spacepoints with >10% variance R difference: "
937 << sp_variance_r_diff << " ("
938 << (matched_sp > 0 ? 100.0 * sp_variance_r_diff / matched_sp : 0.0)
939 << "%)");
941 " Spacepoints with >10% variance Z difference: "
942 << sp_variance_z_diff << " ("
943 << (matched_sp > 0 ? 100.0 * sp_variance_z_diff / matched_sp : 0.0)
944 << "%)");
946 "============================================================");
947
948
949 m_nMonSp += t_n_sp;
950 m_nRefSp += a_n_sp;
951 m_nMatchedSp += matched_sp;
952 m_nUnmatchedMonSp += unmatched_monitored_sp;
953 m_nUnmatchedRefSp += unmatched_reference_sp;
954 m_nSpPosDiff1mm += sp_global_pos_diff_1mm;
955 m_nSpPosDiff5mm += sp_global_pos_diff_5mm;
956 m_nSpVarRDiff += sp_variance_r_diff;
957 m_nSpVarZDiff += sp_variance_z_diff;
958
959 return StatusCode::SUCCESS;
960}
float varianceZ() const
float varianceR() const
Returns the variances.
float z() const
float y() const
float x() const
float radius() const
SpacePointContainer_v1 SpacePointContainer
Define the version of the space point container.
UncalibratedMeasurement_v1 UncalibratedMeasurement
Define the version of the uncalibrated measurement class.

Member Data Documentation

◆ m_checkSpacepoints

Gaudi::Property<bool> ActsTrk::ActsClusterComparisonAlg::m_checkSpacepoints
private
Initial value:
{
this, "checkSpacepoints", false,
"If you also want to validate spacepounts."}

Definition at line 80 of file ActsClusterComparisonAlg.h.

80 {
81 this, "checkSpacepoints", false,
82 "If you also want to validate spacepounts."};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_matched_pixel

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_matched_pixel
mutableprivate

Definition at line 116 of file ActsClusterComparisonAlg.h.

◆ m_matched_strip

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_matched_strip
mutableprivate

Definition at line 117 of file ActsClusterComparisonAlg.h.

◆ m_monitoredPixelClustersKey

SG::ReadHandleKey<xAOD::PixelClusterContainer> ActsTrk::ActsClusterComparisonAlg::m_monitoredPixelClustersKey
private
Initial value:
{
this, "monitoredPixelClustersKey", "xAODPixelClustersFromTracccCluster",
"Input monitored pixel clusters"}

Definition at line 95 of file ActsClusterComparisonAlg.h.

95 {
96 this, "monitoredPixelClustersKey", "xAODPixelClustersFromTracccCluster",
97 "Input monitored pixel clusters"};

◆ m_monitoredSpacepointsKey

SG::ReadHandleKey<xAOD::SpacePointContainer> ActsTrk::ActsClusterComparisonAlg::m_monitoredSpacepointsKey
private
Initial value:
{
this, "monitoredSpacepointsKey", "xAODSpacepointsFromTracccCluster",
"Input monitored spacepoints"}

Definition at line 87 of file ActsClusterComparisonAlg.h.

87 {
88 this, "monitoredSpacepointsKey", "xAODSpacepointsFromTracccCluster",
89 "Input monitored spacepoints"};

◆ m_monitoredStripClustersKey

SG::ReadHandleKey<xAOD::StripClusterContainer> ActsTrk::ActsClusterComparisonAlg::m_monitoredStripClustersKey
private
Initial value:
{
this, "monitoredStripClustersKey", "xAODStripClustersFromTracccCluster",
"Input monitored strip clusters"}

Definition at line 99 of file ActsClusterComparisonAlg.h.

99 {
100 this, "monitoredStripClustersKey", "xAODStripClustersFromTracccCluster",
101 "Input monitored strip clusters"};

◆ m_nMatchedSp

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nMatchedSp
mutableprivate

Definition at line 132 of file ActsClusterComparisonAlg.h.

◆ m_nMonSp

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nMonSp
mutableprivate

Definition at line 130 of file ActsClusterComparisonAlg.h.

◆ m_nRefSp

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nRefSp
mutableprivate

Definition at line 131 of file ActsClusterComparisonAlg.h.

◆ m_nSpPosDiff1mm

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nSpPosDiff1mm
mutableprivate

Definition at line 135 of file ActsClusterComparisonAlg.h.

◆ m_nSpPosDiff5mm

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nSpPosDiff5mm
mutableprivate

Definition at line 136 of file ActsClusterComparisonAlg.h.

◆ m_nSpVarRDiff

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nSpVarRDiff
mutableprivate

Definition at line 137 of file ActsClusterComparisonAlg.h.

◆ m_nSpVarZDiff

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nSpVarZDiff
mutableprivate

Definition at line 138 of file ActsClusterComparisonAlg.h.

◆ m_nUnmatchedMonSp

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nUnmatchedMonSp
mutableprivate

Definition at line 133 of file ActsClusterComparisonAlg.h.

◆ m_nUnmatchedRefSp

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_nUnmatchedRefSp
mutableprivate

Definition at line 134 of file ActsClusterComparisonAlg.h.

◆ m_pix_unmatched_mon

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_pix_unmatched_mon
mutableprivate

Definition at line 118 of file ActsClusterComparisonAlg.h.

◆ m_pix_unmatched_ref

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_pix_unmatched_ref
mutableprivate

Definition at line 119 of file ActsClusterComparisonAlg.h.

◆ m_pixel_pos_diff_0p25sig

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_pixel_pos_diff_0p25sig
mutableprivate

Definition at line 124 of file ActsClusterComparisonAlg.h.

◆ m_pixel_pos_diff_0p5sig

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_pixel_pos_diff_0p5sig
mutableprivate

Definition at line 123 of file ActsClusterComparisonAlg.h.

◆ m_pixel_pos_diff_1sig

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_pixel_pos_diff_1sig
mutableprivate

Definition at line 122 of file ActsClusterComparisonAlg.h.

◆ m_pixel_unequal

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_pixel_unequal
mutableprivate

Definition at line 114 of file ActsClusterComparisonAlg.h.

◆ m_pixelLorentzAngleTool

ToolHandle<ISiLorentzAngleTool> ActsTrk::ActsClusterComparisonAlg::m_pixelLorentzAngleTool
private
Initial value:
{
this, "PixelLorentzAngleTool", "",
"Tool to retreive Lorentz angle of Pixel"}

Definition at line 150 of file ActsClusterComparisonAlg.h.

150 {
151 this, "PixelLorentzAngleTool", "",
152 "Tool to retreive Lorentz angle of Pixel"};

◆ m_pixelManager

const InDetDD::PixelDetectorManager* ActsTrk::ActsClusterComparisonAlg::m_pixelManager {nullptr}
private

Definition at line 144 of file ActsClusterComparisonAlg.h.

144{nullptr};

◆ m_pixelManagerKey

Gaudi::Property<std::string> ActsTrk::ActsClusterComparisonAlg::m_pixelManagerKey
private
Initial value:
{
this, "PixelManager", "ITkPixel"}

Definition at line 140 of file ActsClusterComparisonAlg.h.

140 {
141 this, "PixelManager", "ITkPixel"};

◆ m_referencePixelClustersKey

SG::ReadHandleKey<xAOD::PixelClusterContainer> ActsTrk::ActsClusterComparisonAlg::m_referencePixelClustersKey
private
Initial value:
{
this, "referencePixelClustersKey", "ITkPixelClusters",
"Input reference pixel clusters"}

Definition at line 103 of file ActsClusterComparisonAlg.h.

103 {
104 this, "referencePixelClustersKey", "ITkPixelClusters",
105 "Input reference pixel clusters"};

◆ m_referenceSpacepointsKey

SG::ReadHandleKey<xAOD::SpacePointContainer> ActsTrk::ActsClusterComparisonAlg::m_referenceSpacepointsKey
private
Initial value:
{
this, "referenceSpacepointsKey", "ITkPixelSpacePoints",
"Input reference spacepoints"}

Definition at line 91 of file ActsClusterComparisonAlg.h.

91 {
92 this, "referenceSpacepointsKey", "ITkPixelSpacePoints",
93 "Input reference spacepoints"};

◆ m_referenceStripClustersKey

SG::ReadHandleKey<xAOD::StripClusterContainer> ActsTrk::ActsClusterComparisonAlg::m_referenceStripClustersKey
private
Initial value:
{
this, "referenceStripClustersKey", "ITkStripClusters",
"Input reference strip clusters"}

Definition at line 107 of file ActsClusterComparisonAlg.h.

107 {
108 this, "referenceStripClustersKey", "ITkStripClusters",
109 "Input reference strip clusters"};

◆ m_strip_pos_diff_0p25sig

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_strip_pos_diff_0p25sig
mutableprivate

Definition at line 127 of file ActsClusterComparisonAlg.h.

◆ m_strip_pos_diff_0p5sig

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_strip_pos_diff_0p5sig
mutableprivate

Definition at line 126 of file ActsClusterComparisonAlg.h.

◆ m_strip_pos_diff_1sig

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_strip_pos_diff_1sig
mutableprivate

Definition at line 125 of file ActsClusterComparisonAlg.h.

◆ m_strip_unequal

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_strip_unequal
mutableprivate

Definition at line 115 of file ActsClusterComparisonAlg.h.

◆ m_strip_unmatched_mon

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_strip_unmatched_mon
mutableprivate

Definition at line 120 of file ActsClusterComparisonAlg.h.

◆ m_strip_unmatched_ref

Gaudi::Accumulators::Counter ActsTrk::ActsClusterComparisonAlg::m_strip_unmatched_ref
mutableprivate

Definition at line 121 of file ActsClusterComparisonAlg.h.

◆ m_stripID

const SCT_ID* ActsTrk::ActsClusterComparisonAlg::m_stripID {nullptr}
private

Definition at line 146 of file ActsClusterComparisonAlg.h.

146{nullptr};

◆ m_stripLorentzAngleTool

ToolHandle<ISiLorentzAngleTool> ActsTrk::ActsClusterComparisonAlg::m_stripLorentzAngleTool
private
Initial value:
{
this, "StripLorentzAngleTool", "SiLorentzAngleTool",
"Tool to retrieve Lorentz angle of Strip"}

Definition at line 147 of file ActsClusterComparisonAlg.h.

147 {
148 this, "StripLorentzAngleTool", "SiLorentzAngleTool",
149 "Tool to retrieve Lorentz angle of Strip"};

◆ m_stripManager

const InDetDD::SCT_DetectorManager* ActsTrk::ActsClusterComparisonAlg::m_stripManager {nullptr}
private

Definition at line 145 of file ActsClusterComparisonAlg.h.

145{nullptr};

◆ m_stripManagerKey

Gaudi::Property<std::string> ActsTrk::ActsClusterComparisonAlg::m_stripManagerKey
private
Initial value:
{
this, "StripManager", "ITkStrip"}

Definition at line 142 of file ActsClusterComparisonAlg.h.

142 {
143 this, "StripManager", "ITkStrip"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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