27 "Whether to check if two objects are shallow copies of each other. "
28 "If this is not true then pointer equality will be used.");
30 "If greater than 0 then use the DR between two objects to check if "
31 "they are the same object.");
33 "The input prefix to expect at the beginning of the TrigComposite "
37 "Whether to remap element links which are broken in some derivations for AnalysisBase");
39 "Containers whose links need remapping");
40 declareProperty(
"RemapCLIDs", m_remapCLIDs,
"CLIDs for those containers");
49 ATH_MSG_INFO(
"Remap broken links? " << m_remapBrokenLinks);
50 if (m_remapBrokenLinks)
52 if (m_remapContainers.size() != m_remapCLIDs.size())
54 ATH_MSG_ERROR(
"Number of containers and CLIDs to remap do not match!");
55 return StatusCode::FAILURE;
58 for (std::size_t idx = 0; idx < m_remapContainers.size(); ++idx)
60 const std::string &name = m_remapContainers[idx];
61 m_keyRemap[hashContainer(name, iparticleCLID)] = hashContainer(name, m_remapCLIDs[idx]);
69 return StatusCode::SUCCESS;
74 std::string_view chain,
77 return match({&recoObject}, chain);
81 const std::vector<const xAOD::IParticle*>& recoObjects,
82 std::string_view chain,
86 containerName.append(chain);
89 std::replace(containerName.begin(), containerName.end(),
'.',
'_');
91 if (
evtStore()->retrieve(composites, containerName).isFailure() ){
92 ATH_MSG_ERROR(
"Failed to retrieve composite container for chain "<< chain);
93 ATH_MSG_ERROR(
"Please check your derivation to see if the container is there");
94 ATH_MSG_ERROR(
"This likely means the trigger is not in your file's menu");
95 throw std::runtime_error(
96 std::format(
"Failed to retrieve composite corresponding to chain {}",chain));
109 const std::vector<const xAOD::IParticle*>&
offline)
const
114 std::vector<const xAOD::IParticle*> online;
115 online.reserve(onlineLinks.size() );
123 online.push_back(*link);
124#ifdef XAOD_STANDALONE
125 else if (m_remapBrokenLinks)
135 bool isMatched =
false;
136 for (
auto itr = online.begin(); itr != online.end(); ++itr) {
162 static const SG::AuxElement::ConstAccessor<
169 return lhsOrig == rhsOrig;
uint32_t CLID
The Class ID type.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
ElementLink implementation for ROOT usage.
Class providing the definition of the 4-vector interface.
XAOD_AUXDATA_DEPRECATED bool isAvailable(const std::string &name, const std::string &clsname="") const
Check if a user property is available for reading or not.
A crc-64 implementation, using pclmul where possible.
uint64_t crc64(const CRCTable &table, const char *data, size_t data_len)
Find the CRC-64 of a string,.
uint64_t crc64addint(uint64_t crc, uint64_t x)
Extend a previously-calculated CRC to include an int.
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
The common trigger namespace for trigger analysis tools.
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
TrigCompositeContainer_v1 TrigCompositeContainer
Declare the latest version of the container.
TrigComposite_v1 TrigComposite
Declare the latest version of the class.
static constexpr CLID ID()