|
ATLAS Offline Software
|
#include <MuonTruthAssociationAlg.h>
|
| MuonTruthAssociationAlg (const std::string &name, ISvcLocator *pSvcLocator) |
|
StatusCode | initialize () override |
|
StatusCode | execute (const EventContext &ctx) const override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
Definition at line 16 of file MuonTruthAssociationAlg.h.
◆ StoreGateSvc_t
◆ MuonTruthAssociationAlg()
MuonTruthAssociationAlg::MuonTruthAssociationAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ clear_dummys()
void MuonTruthAssociationAlg::clear_dummys |
( |
const std::vector< unsigned long long > & |
identifiers, |
|
|
std::vector< unsigned int > & |
vec |
|
) |
| const |
|
private |
If the identifiers are empty then there is no change that a dummy value could be cleared from this list
Definition at line 352 of file MuonTruthAssociationAlg.cxx.
356 for (
unsigned int i = 0;
i <
vec.size(); ++
i) {
357 if (
vec[
i] != dummy_unsigned)
continue;
358 for (
unsigned j = 0; j <
identifiers.size(); ++j) {
◆ count_chamber_layers()
void MuonTruthAssociationAlg::count_chamber_layers |
( |
const xAOD::IParticle * |
truth_particle, |
|
|
const Trk::Track * |
ptrk, |
|
|
std::vector< unsigned int > & |
nprecHitsPerChamberLayer, |
|
|
std::vector< unsigned int > & |
nphiHitsPerChamberLayer, |
|
|
std::vector< unsigned int > & |
ntrigEtaHitsPerChamberLayer |
|
) |
| const |
|
private |
Definition at line 247 of file MuonTruthAssociationAlg.cxx.
252 if (!truthParticle || !truthMdtHitsAcc.isAvailable(*truthParticle)) {
253 ATH_MSG_DEBUG(
"muon has no truth hits vector in the truth association alg");
254 nprecHitsPerChamberLayer.clear();
255 nphiHitsPerChamberLayer.clear();
256 ntrigEtaHitsPerChamberLayer.clear();
259 const std::vector<unsigned long long>& mdtTruth = truthMdtHitsAcc(*truthParticle);
260 std::vector<unsigned long long> cscTruth;
262 truthCscHitsAcc(
"truthCscHits");
264 truthRpcHitsAcc(
"truthRpcHits");
266 truthTgcHitsAcc(
"truthTgcHits");
267 if (
m_idHelperSvc->hasCSC()) cscTruth = truthCscHitsAcc(*truthParticle);
268 const std::vector<unsigned long long>& rpcTruth = truthRpcHitsAcc(*truthParticle);
269 const std::vector<unsigned long long>& tgcTruth = truthTgcHitsAcc(*truthParticle);
272 if (!tsit || !tsit->trackParameters() || !tsit->measurementOnTrack())
continue;
288 for (
unsigned int i = 0;
i < mdtTruth.size(); ++
i) {
289 if (
id == mdtTruth[
i]) {
291 increment_unsigned(nprecHitsPerChamberLayer.at(chIndex));
297 for (
unsigned int i = 0;
i < cscTruth.size(); ++
i) {
298 if (
id != cscTruth[
i])
continue;
302 increment_unsigned(nphiHitsPerChamberLayer.at(
index));
306 increment_unsigned(nprecHitsPerChamberLayer.at(chIndex));
312 for (
unsigned int i = 0;
i < rpcTruth.size(); ++
i) {
313 if (
id != rpcTruth[
i]) {
continue; }
317 increment_unsigned(nphiHitsPerChamberLayer.at(
index));
319 increment_unsigned(ntrigEtaHitsPerChamberLayer.at(
index));
325 for (
unsigned int i = 0;
i < tgcTruth.size(); ++
i) {
326 if (
id != tgcTruth[
i]) {
continue; }
330 increment_unsigned(nphiHitsPerChamberLayer.at(
index));
332 increment_unsigned(ntrigEtaHitsPerChamberLayer.at(
index));
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode MuonTruthAssociationAlg::execute |
( |
const EventContext & |
ctx | ) |
const |
|
override |
Link the truth particle to the muon
Check first if the truth link already exists
May be both muons are reconstructed by the same author but one is commissioning
The last judge is a simple dR cut but this will hopefully never trigger
Zero supression do not want to store meaningless zeros
Decorate the results
Patch for STACO muons: Copy the truth information from the muon back to the combined track to avoid file corruptions reported in ATLASRECTS-6454
one more thing: need to have muonlink set for all truth particles to avoid ELReset errors
Definition at line 68 of file MuonTruthAssociationAlg.cxx.
70 if (!muonTruthContainer.isValid()) {
72 return StatusCode::FAILURE;
74 std::unique_ptr<SG::WriteDecorHandle<xAOD::TruthParticleContainer, ElementLink<xAOD::MuonContainer>>> muonTruthParticleRecoLink{};
76 muonTruthParticleRecoLink = std::make_unique<SG::WriteDecorHandle<xAOD::TruthParticleContainer, ElementLink<xAOD::MuonContainer>>>(
m_muonTruthRecoLink, ctx);
81 if (!muonTruthParticleLink.isValid()) {
83 return StatusCode::FAILURE;
93 bool saw_staco =
false;
94 bool decor_staco =
false;
104 tp =
muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
106 tp =
muon->primaryTrackParticle();
109 bool foundTruth{
false}, setOrigin{
false};
114 if (acc_origin.isAvailable(*
tp) && acc_origin(*
tp) != 0) {
115 muonTruthParticleOrigin(*
muon) = acc_origin(*
tp);
116 muonTruthParticleType(*
muon) = acc_type(*
tp);
121 if (acc_link.isAvailable(*
tp)) {
122 truthLink = acc_link(*
tp);
124 ATH_MSG_DEBUG(
"Could not find any truth link associated with track having pt:"<<
tp->pt()<<
" MeV, eta: "<<
tp->eta()<<
", phi: "<<
tp->phi()<<
", charge: "<<
tp->charge()<<
". d0:"<<
tp->d0()<<
", z0: "<<
tp->z0());
142 truthParticle->
index(),
144 muonTruthLink.toPersistent();
145 muonTruthParticleLink(*
muon) = muonTruthLink;
147 muonTruthParticleOrigin(*
muon) = acc_origin(*
tp);
148 muonTruthParticleType(*
muon) = acc_type(*
tp);
152 if (muonTruthParticleRecoLink && muonTruthParticleRecoLink->operator()(*truthParticle).isValid()){
153 const xAOD::Muon* decor_muon = *muonTruthParticleRecoLink->operator()(*truthParticle);
154 ATH_MSG_VERBOSE(
"Truth particle is already decorated with reco muon "<<decor_muon->
pt()*1.e-3
155 <<
" eta: "<<decor_muon->
eta()<<
" phi: "<<decor_muon->
phi()<<
" charge: "<<
156 decor_muon->
charge()<<
" author: "<<decor_muon->
author()<<
" all authors: "<<
161 ATH_MSG_DEBUG(
"Author of the decorated muon is better than the one of the new candidate");
165 const int com_score = (
muon->allAuthors() & com_bit) - (decor_muon->
allAuthors() &com_bit);
167 ATH_MSG_DEBUG(
"Found two muons reconstructed by an equivalent author. But this one is from the commissioning chain");
187 tp->track(), nprecHitsPerChamberLayer, nphiHitsPerChamberLayer, ntrigEtaHitsPerChamberLayer);
189 muonTruthParticleNPrecMatched(*
muon) = nprecHitsPerChamberLayer;
190 muonTruthParticleNPhiMatched(*
muon) = nphiHitsPerChamberLayer;
191 muonTruthParticleNTrigEtaMatched(*
muon) = ntrigEtaHitsPerChamberLayer;
193 if (muonTruthParticleRecoLink) (*muonTruthParticleRecoLink)(*truthParticle) = muonLink;
200 ATH_MSG_WARNING(
"Could not find the appropiate track particle for muon with pT: " <<
muon->pt() * 1.e-3 <<
" GeV, eta: "
201 <<
muon->eta() <<
", phi: " <<
muon->phi()
202 <<
" author: " <<
muon->author());
206 muonTruthParticleOrigin(*
muon) = 0;
207 muonTruthParticleType(*
muon) = 0;
212 muonTruthParticleNPrecMatched(*
muon) = std::vector<unsigned int>{};
213 muonTruthParticleNPhiMatched(*
muon) = std::vector<unsigned int>{};
214 muonTruthParticleNTrigEtaMatched(*
muon) = std::vector<unsigned int>{};
226 decor_staco = !dec_origin.isAvailable (*cmb_trk);
229 dec_origin(*cmb_trk) = acc_origin(*
muon);
230 dec_type(*cmb_trk) = acc_type(*
muon);
231 dec_link(*cmb_trk) = acc_link(*
muon);
237 if (muonTruthParticleRecoLink && !muonTruthParticleRecoLink->isAvailable()) {
244 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
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 & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ initialize()
StatusCode MuonTruthAssociationAlg::initialize |
( |
| ) |
|
|
override |
◆ inputHandles()
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()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, InDet::SiSPGNNTrackMaker, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::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.
Definition at line 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::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 InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_associateWithInDetTP
Gaudi::Property<bool> MuonTruthAssociationAlg::m_associateWithInDetTP {this, "AssociateWithInDetTP", false, "force use of ID track particles for association"} |
|
private |
◆ m_assocTrkContainers
Gaudi::Property<std::vector<std::string> > MuonTruthAssociationAlg::m_assocTrkContainers |
|
private |
Initial value:{this, "TrackContainers", {"CombinedMuonTrackParticles",
"ExtrapolatedMuonTrackParticles",
"InDetTrackParticles",
"MSOnlyExtrapolatedMuonTrackParticles"},
"Collection of track containers to be decorated before this alg can be scheduled. truthLink decoration exploited "}
Definition at line 61 of file MuonTruthAssociationAlg.h.
◆ m_detStore
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_idHelperSvc
◆ m_muonTruthParticleLink
Initial value:{
this,
"MuonTruthParticleLink",
m_recoMuKey,
"truthParticleLink",
"muon truth particle link auxdata name; name will be reset in initialize() based on m_muonName"}
Definition at line 37 of file MuonTruthAssociationAlg.h.
◆ m_muonTruthParticleNPhiMatched
Initial value:{
this,
"MuonTruthParticleNPhiMatched",
m_recoMuKey,
"nphiMatchedHitsPerChamberLayer",
"muon vector of number of phi matched hits per chamber layer auxdata name; name will be reset in initialize() based on m_muonName"}
Definition at line 50 of file MuonTruthAssociationAlg.h.
◆ m_muonTruthParticleNPrecMatched
Initial value:{
this,
"MuonTruthParticleNPrecMatched",
m_recoMuKey,
"nprecMatchedHitsPerChamberLayer",
"muon vector of number of precision matched hits per chamber layer auxdata name; name will be reset in initialize() based on "
"m_muonName"}
Definition at line 46 of file MuonTruthAssociationAlg.h.
◆ m_muonTruthParticleNTrigEtaMatched
Initial value:{
this,
"MuonTruthParticleNTrigEtaMatched",
m_recoMuKey,
"ntrigEtaMatchedHitsPerChamberLayer",
"muon vector of number of phi matched hits per chamber layer auxdata name; name will be reset in initialize() based on m_muonName"}
Definition at line 53 of file MuonTruthAssociationAlg.h.
◆ m_muonTruthParticleOrigin
Initial value:{
this,
"MuonTruthParticleOrigin",
m_recoMuKey,
"truthOrigin",
"muon truth origin auxdata name; name will be reset in initialize() based on m_muonName"}
Definition at line 43 of file MuonTruthAssociationAlg.h.
◆ m_muonTruthParticleType
Initial value:{
this,
"MuonTruthParticleType",
m_recoMuKey,
"truthType",
"muon truth type auxdata name; name will be reset in initialize() based on m_muonName"}
Definition at line 40 of file MuonTruthAssociationAlg.h.
◆ m_muonTruthRecoLink
Initial value:{
"container name for muon truth particles; the full handle name, including the reco muon link auxdata, is set in initialize()"}
Definition at line 34 of file MuonTruthAssociationAlg.h.
◆ m_recoLink
Gaudi::Property<std::string> MuonTruthAssociationAlg::m_recoLink {this, "RecoLinkName", "recoMuonLink" , "Decoration to the truth particle pointing to the muon"} |
|
private |
◆ m_recoMuKey
Initial value:{
this, "MuonContainerName", "Muons",
"container name for muon truth particles; the full handle name, including the reco muon link auxdata, is set in initialize()"}
Definition at line 30 of file MuonTruthAssociationAlg.h.
◆ m_trkTruthKeys
Initial value:{
this, "TrkTruthLinkKeys", {},
"Declare the decoration dependencies of this algorithm. Steer via TrackContainers property"}
Definition at line 58 of file MuonTruthAssociationAlg.h.
◆ m_truthMuKey
Initial value:{
this, "MuonTruthParticleContainerName", "MuonTruthParticles",
"container name for muon truth particles; the full handle name, including the reco muon link auxdata, is set in initialize()"}
Definition at line 26 of file MuonTruthAssociationAlg.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_muonTruthRecoLink
uint16_t allAuthors() const
Get all the authors of this Muon.
SG::ReadHandleKey< xAOD::MuonContainer > m_recoMuKey
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
virtual double phi() const
The azimuthal angle ( ) of the particle.
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)
virtual double eta() const
The pseudorapidity ( ) of the particle.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
std::vector< size_t > vec
Helper class to provide constant type-safe access to aux data.
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonTruthParticleNPrecMatched
#define ATH_MSG_VERBOSE(x)
double deltaR2(double rapidity1, double phi1, double rapidity2, double phi2)
from bare rapidity,phi
PhiIndex
enum to classify the different phi layers in the muon spectrometer
bool isValid() const
Test to see if the link can be dereferenced.
virtual void setOwner(IDataHandleHolder *o)=0
int authorRank(const xAOD::Muon::Author &a)
void count_chamber_layers(const xAOD::IParticle *truth_particle, const Trk::Track *ptrk, std::vector< unsigned int > &nprecHitsPerChamberLayer, std::vector< unsigned int > &nphiHitsPerChamberLayer, std::vector< unsigned int > &ntrigEtaHitsPerChamberLayer) const
SG::ReadDecorHandleKeyArray< xAOD::TrackParticleContainer > m_trkTruthKeys
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonTruthParticleOrigin
AthReentrantAlgorithm()
Default constructor:
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
Gaudi::Property< bool > m_associateWithInDetTP
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonTruthParticleType
::StatusCode StatusCode
StatusCode definition for legacy code.
Class describing a truth particle in the MC record.
Handle class for adding a decoration to an object.
virtual double pt() const
The transverse momentum ( ) of the particle.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonTruthParticleNPhiMatched
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
represents the track state (measurement, material, fit parameters and quality) at a surface.
virtual StatusCode sysInitialize() override
Override sysInitialize.
const std::vector< const MuonClusterOnTrack * > & containedROTs() const
returns the vector of SCT_ClusterOnTrack objects .
Gaudi::Property< std::string > m_recoLink
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonTruthParticleNTrigEtaMatched
bool isStable(const T &p)
Identify if the particle is stable, i.e. has not decayed.
std::vector< Identifier > identifiers(const InDetSimDataCollection &coll)
#define ATH_MSG_WARNING(x)
Identifier identify() const
return the identifier -extends MeasurementBase
index_type index() const
Get the index of the element inside of its container.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
ChIndex
enum to classify the different chamber layers in the muon spectrometer
void clear_dummys(const std::vector< unsigned long long > &identifiers, std::vector< unsigned int > &vec) const
@ STACO
Tracks produced by STACO.
bool is_sim_descendant(const T1 &p1, const T2 &p2)
Method to check if the first particle is a descendant of the second in the simulation,...
Class describing a TrackParticle.
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthMuKey
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Gaudi::Property< std::vector< std::string > > m_assocTrkContainers
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_muonTruthParticleLink