Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <TruthCollectionMaker.h>
|
| TruthCollectionMaker (const std::string &t, const std::string &n, const IInterface *p) |
|
| ~TruthCollectionMaker () |
|
StatusCode | initialize () |
|
StatusCode | finalize () |
|
virtual StatusCode | addBranches () const |
| Pass the thinning service
More...
|
|
StatusCode | initializeParser (const ExpressionParsing::SelectionArg< 1 > &selection_string) |
|
StatusCode | finalizeParser () |
|
virtual bool | updateDataNeeds (const std::vector< const DataObjID * > &input_data_in, const std::vector< const DataObjID * > &output_data_in, std::vector< Gaudi::DataHandle * > &new_input_handles, std::vector< Gaudi::DataHandle * > &new_output_handles) override |
| Inform a dynamic data consumer about all consumed or produced data. More...
|
|
virtual bool | renounceInput (const DataObjID &output_data_id) override |
|
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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
|
std::atomic< unsigned int > | m_ntotpart |
|
std::atomic< unsigned int > | m_npasspart |
|
SG::ReadHandleKey< xAOD::TruthParticleContainer > | m_particlesKey {this, "ParticlesKey", "TruthParticles", "ReadHandleKey for input TruthParticleContainer"} |
|
SG::WriteHandleKey< xAOD::TruthParticleContainer > | m_outputParticlesKey {this, "NewCollectionName", "OutputTruthCollection", "WriteHandleKey for new TruthParticleContainer"} |
|
Gaudi::Property< std::string > | m_partString {this, "ParticleSelectionString", "", "ExpressionEvaluation string for particle selection"} |
|
Gaudi::Property< bool > | m_do_compress {this, "Do_Compress", false, "Removes particles with the same pdgId in a decay chain (but keeps first and last)"} |
|
Gaudi::Property< bool > | m_do_sherpa {this, "Do_Sherpa", false, "Checks if there are truth W bosons in the current record. If not, tries to combine W daughters to create one"} |
|
Gaudi::Property< bool > | m_keep_navigation_info {this, "KeepNavigationInfo", true, "m_do_sherpa currently only works for W+jets"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_linkDecoratorKey {this, "originalTruthParticle", m_outputParticlesKey, "originalTruthParticle", "Name of the decoration linking to the original truth particle"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_originDecoratorKey {this, "classifierParticleOrigin", m_outputParticlesKey, "classifierParticleOrigin", "Name of the decoration which records the particle origin as determined by the MCTruthClassifier"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_typeDecoratorKey {this, "classifierParticleType", m_outputParticlesKey, "classifierParticleType", "Name of the decoration which records the particle type as determined by the MCTruthClassifier"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_outcomeDecoratorKey {this, "classifierParticleOutCome", m_outputParticlesKey, "classifierParticleOutCome", "Name of the decoration which records the particle outcome as determined by the MCTruthClassifier"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_classificationDecoratorKey {this, "Classification", m_outputParticlesKey, "Classification", "Name of the decoration which records the particle classification as determined by the MCTruthClassifier"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_motherIDDecoratorKey {this, "motherID", m_outputParticlesKey, "motherID", "Name of the decoration which records the ID of the particle's mother"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_daughterIDDecoratorKey {this, "daughterID", m_outputParticlesKey, "daughterID", "Name of the decoration which records the ID of the particle's daughter"} |
|
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > | m_hadronOriginDecoratorKey {this, "TopHadronOriginFlag", m_outputParticlesKey, "TopHadronOriginFlag", "Name of the decoration which records the origin of hadrons from top decays"} |
|
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > | m_originReadDecorKey {this, "inputClassifierParticleOrigin", m_particlesKey, "classifierParticleOrigin", "Particle origin"} |
|
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > | m_typeReadDecorKey {this, "inputClassifierParticleType", m_particlesKey, "classifierParticleType", "Particle type"} |
|
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > | m_outcomeReadDecorKey {this, "inputClassifierParticleOutCome", m_particlesKey, "classifierParticleOutCome", "Particle outcome"} |
|
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > | m_classificationReadDecorKey {this, "inputClassification", m_particlesKey, "Classification", "Classification code"} |
|
ServiceHandle< StoreGateSvc > | m_metaStore |
| Handle on the metadata store for init. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 29 of file TruthCollectionMaker.h.
◆ StoreGateSvc_t
◆ TruthCollectionMaker()
DerivationFramework::TruthCollectionMaker::TruthCollectionMaker |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~TruthCollectionMaker()
DerivationFramework::TruthCollectionMaker::~TruthCollectionMaker |
( |
| ) |
|
◆ _initializeParser()
◆ addBranches()
StatusCode DerivationFramework::TruthCollectionMaker::addBranches |
( |
| ) |
const |
|
virtual |
Pass the thinning service
Implements DerivationFramework::IAugmentationTool.
Definition at line 96 of file TruthCollectionMaker.cxx.
99 const EventContext& ctx = Gaudi::Hive::currentContext();
103 static const bool is_sherpa = [
this]() {
104 bool is_sherpa =
false;
112 if (
m_metaStore->retrieve(truthMetaData).isSuccess() && !truthMetaData->empty()){
114 const std::string gens = truthMetaData->at(0)->generators();
115 is_sherpa = (gens.find(
"sherpa")==std::string::npos &&
116 gens.find(
"Sherpa")==std::string::npos &&
117 gens.find(
"SHERPA")==std::string::npos) ?
false :
true;
120 ATH_MSG_WARNING(
"Found xAODTruthMetaDataContainer empty! Configuring to be NOT Sherpa.");
122 ATH_MSG_INFO(
"From metadata configured: Sherpa? " << is_sherpa);
124 ATH_MSG_WARNING(
"Could not find metadata container in storegate; assuming NOT Sherpa");
131 if (!truthParticles.isValid()) {
133 return StatusCode::FAILURE;
138 ATH_CHECK(newParticlesWriteHandle.record(std::make_unique<xAOD::TruthParticleContainer>(),
139 std::make_unique<xAOD::TruthParticleAuxContainer>()));
143 unsigned int nParticles = truthParticles->size();
168 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used TruthParticles?");
169 return StatusCode::FAILURE;
178 bool SherpaW =
false;
179 bool SherpaZ =
false;
186 if ((SherpaW or SherpaZ) && is_sherpa){
193 if ((SherpaW || SherpaZ) && is_sherpa){
195 std::vector<const xAOD::TruthParticle*> status_nonPhysical;
196 for (
unsigned int i=0;
i<nParticles; ++
i) {
198 if (!truthParticles->at(
i))
continue;
202 if (!
MC::isPhysical(truthParticles->at(
i))) status_nonPhysical.push_back( truthParticles->at(
i) );
205 if ((status_nonPhysical.size()==2 || status_nonPhysical.size()==4 || status_nonPhysical.size()==6) && (SherpaZ || SherpaW)){
207 int gens[3] = {0,0,0};
208 for (
size_t i=0;
i<status_nonPhysical.size();++
i){
209 if (status_nonPhysical[
i]->absPdgId()<13) gens[0]++;
210 else if (status_nonPhysical[
i]->absPdgId()<15) gens[1]++;
214 if (gens[0]>2 || gens[0]==1 || gens[1]>2 || gens[1]==1 || gens[2]>2 || gens[2]==1){
216 ATH_MSG_VERBOSE(
"Too many leptons of one generation. Cannot make bosons. Give up");
217 return StatusCode::SUCCESS;
219 std::vector<const xAOD::TruthParticle*> boson;
220 for (
size_t i=0;
i<status_nonPhysical.size();++
i){
221 if (status_nonPhysical[
i]->absPdgId()<13) boson.push_back(status_nonPhysical[
i]);
222 else if (gens[0]==0 && status_nonPhysical[
i]->absPdgId()<15) boson.push_back(status_nonPhysical[
i]);
223 else if (gens[0]==0 && gens[1]==0) boson.push_back(status_nonPhysical[
i]);
224 if (boson.size()==2){
228 if (boson[0]->pdgId()==-boson[1]->pdgId()) pdg_id=23;
229 else if (std::abs(boson[0]->pdgId()+boson[1]->pdgId())!=1){
231 ATH_MSG_WARNING(
"Do not know how to interpret as a boson: " << boson[0]->pdgId() <<
" " << boson[1]->pdgId());
234 pdg_id=24*(boson[0]->pdgId()+boson[1]->pdgId());
236 if ( (SherpaW &&
MC::isW(pdg_id)) ||
237 (SherpaZ &&
MC::isZ(pdg_id)) ){
240 newParticlesWriteHandle->push_back( xTruthParticle );
242 if (boson[0]->hasProdVtx()) {
243 if ((boson[0]->prodVtx()->nIncomingParticles() > 0) && (boson[0]->prodVtx()->incomingParticle(0)!=
nullptr)) {
244 motherIDDecorator(*xTruthParticle) = boson[0]->prodVtx()->incomingParticle(0)->pdgId();
245 }
else {motherIDDecorator(*xTruthParticle) = 0;}
246 }
else {motherIDDecorator(*xTruthParticle) = 0;}
247 if (boson[0]->hasDecayVtx()) {
248 if ((boson[0]->decayVtx()->nOutgoingParticles() > 0) && (boson[0]->decayVtx()->outgoingParticle(0)!=
nullptr)) {
249 daughterIDDecorator(*xTruthParticle) = boson[0]->decayVtx()->outgoingParticle(0)->pdgId();
250 }
else {daughterIDDecorator(*xTruthParticle) = 0;}
251 }
else {daughterIDDecorator(*xTruthParticle) = 0;}
260 xTruthParticle->
setM(new_mom.M());
261 xTruthParticle->
setPx(new_mom.Px());
262 xTruthParticle->
setPy(new_mom.Py());
263 xTruthParticle->
setPz(new_mom.Pz());
264 xTruthParticle->
setE(new_mom.E());
269 if (gens[0]==0 && gens[1]==0) gens[2]=0;
270 else if (gens[0]==0) gens[1]=0;
275 if (status_nonPhysical.size()==1 || status_nonPhysical.size()==3 || status_nonPhysical.size()==5 || status_nonPhysical.size()>6){
276 ATH_MSG_WARNING(status_nonPhysical.size() <<
" leptons found in the Sherpa event record. Not sure how to deal with this.");
278 return StatusCode::SUCCESS;
280 for (
unsigned int i=0;
i<nParticles; ++
i) {
287 bool same_as_mother =
false;
288 bool same_as_daughter =
false;
292 same_as_mother =
true;
299 same_as_daughter =
true;
303 if (same_as_mother && same_as_daughter){
309 newParticlesWriteHandle->push_back( xTruthParticle );
314 }
else {motherIDDecorator(*xTruthParticle) = 0;}
315 }
else {motherIDDecorator(*xTruthParticle) = 0;}
319 }
else {daughterIDDecorator(*xTruthParticle) = 0;}
320 }
else {daughterIDDecorator(*xTruthParticle) = 0;}
323 *xTruthParticle=*theParticle;
325 typeDecorator(*xTruthParticle) =
326 typeReadDecor.withDefault(*theParticle, 0);
328 originDecorator(*xTruthParticle) =
329 originReadDecor.withDefault(*theParticle, 0);
331 outcomeDecorator(*xTruthParticle) =
332 outcomeReadDecor.withDefault(*theParticle, 0);
334 classificationDecorator(*xTruthParticle) =
335 classificationReadDecor.withDefault(*theParticle, 0);
339 hadronOriginDecorator(*xTruthParticle) =
340 TopHadronOriginFlagAcc.withDefault (*theParticle, 0);
351 return StatusCode::SUCCESS;
◆ 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);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ 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]
◆ 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
◆ finalize()
StatusCode DerivationFramework::TruthCollectionMaker::finalize |
( |
| ) |
|
◆ finalizeParser()
◆ initialize()
StatusCode DerivationFramework::TruthCollectionMaker::initialize |
( |
| ) |
|
◆ initializeParser()
◆ 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.
◆ interfaceID()
static const InterfaceID& DerivationFramework::IAugmentationTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
AlgTool interface methods.
Definition at line 31 of file IAugmentationTool.h.
31 {
return IID_IAugmentationTool; }
◆ 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()
◆ renounceInput()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateDataNeeds()
virtual bool ExpressionParserUserBase< AthAlgTool , NUM_PARSER >::updateDataNeeds |
( |
const std::vector< const DataObjID * > & |
input_data_in, |
|
|
const std::vector< const DataObjID * > & |
output_data_in, |
|
|
std::vector< Gaudi::DataHandle * > & |
new_input_handles, |
|
|
std::vector< Gaudi::DataHandle * > & |
new_output_handles |
|
) |
| |
|
overridevirtualinherited |
Inform a dynamic data consumer about all consumed or produced data.
- Parameters
-
input_data_in | the input data object IDs of all algorithms and tools |
output_data_in | the output data object IDs of all algorithms and tools |
new_input_handles | the new input data handles added by this call |
new_output_handles | the new output data handles added by this call |
- Returns
- true if the consumer did update its handles, false otherwise
Implements IDynamicDataConsumer.
◆ updateVHKA()
◆ m_classificationDecoratorKey
◆ m_classificationReadDecorKey
◆ m_daughterIDDecoratorKey
◆ m_detStore
◆ m_do_compress
Gaudi::Property<bool> DerivationFramework::TruthCollectionMaker::m_do_compress {this, "Do_Compress", false, "Removes particles with the same pdgId in a decay chain (but keeps first and last)"} |
|
private |
◆ m_do_sherpa
Gaudi::Property<bool> DerivationFramework::TruthCollectionMaker::m_do_sherpa {this, "Do_Sherpa", false, "Checks if there are truth W bosons in the current record. If not, tries to combine W daughters to create one"} |
|
private |
◆ m_evtStore
◆ m_hadronOriginDecoratorKey
◆ m_keep_navigation_info
Gaudi::Property<bool> DerivationFramework::TruthCollectionMaker::m_keep_navigation_info {this, "KeepNavigationInfo", true, "m_do_sherpa currently only works for W+jets"} |
|
private |
◆ m_linkDecoratorKey
◆ m_metaStore
◆ m_motherIDDecoratorKey
◆ m_npasspart
std::atomic<unsigned int> DerivationFramework::TruthCollectionMaker::m_npasspart |
|
private |
◆ m_ntotpart
std::atomic<unsigned int> DerivationFramework::TruthCollectionMaker::m_ntotpart |
|
mutableprivate |
◆ m_originDecoratorKey
◆ m_originReadDecorKey
◆ m_outcomeDecoratorKey
◆ m_outcomeReadDecorKey
◆ m_outputParticlesKey
◆ m_parser
◆ m_particlesKey
◆ m_partString
Gaudi::Property<std::string> DerivationFramework::TruthCollectionMaker::m_partString {this, "ParticleSelectionString", "", "ExpressionEvaluation string for particle selection"} |
|
private |
◆ m_proxyLoaders
◆ m_renounce
◆ m_typeDecoratorKey
◆ m_typeReadDecorKey
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_xAODProxyLoader
The documentation for this class was generated from the following files:
size_t nOutgoingParticles() const
Get the number of outgoing particles.
StatusCode finalizeParser()
void setStatus(int value)
Set status code.
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_daughterIDDecoratorKey
void setE(float value)
Set the energy of the particle.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::conditional< NUM_PARSER==1, std::unique_ptr< ExpressionParsing::ExpressionParser >, std::array< std::unique_ptr< ExpressionParsing::ExpressionParser >, NUM_PARSER > >::type m_parser
void setBarcode(int value)
Set barcode.
Gaudi::Property< bool > m_do_sherpa
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_outcomeDecoratorKey
Gaudi::Property< bool > m_do_compress
constexpr int INVALID_PARTICLE_ID
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > m_typeReadDecorKey
std::vector< SG::VarHandleKeyArray * > m_vhka
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_particlesKey
void setPx(float value)
Set the x component of the particle's momentum.
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_hadronOriginDecoratorKey
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
std::atomic< unsigned int > m_npasspart
bool isSMLepton(const T &p)
virtual void setOwner(IDataHandleHolder *o)=0
TLorentzVector FourMom_t
Definition of the 4-momentum type.
bool isPhysical(const T &p)
Identify if the particle is physical, i.e. is stable or decayed.
bool hasDecayVtx() const
Check for a decay vertex on this particle.
void setM(float value)
Also store the mass.
Handle class for reading a decoration on an object.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Class describing a truth particle in the MC record.
Handle class for adding a decoration to an object.
TruthParticle_v1 TruthParticle
Typedef to implementation.
bool hasProdVtx() const
Check for a production vertex on this particle.
void setPy(float value)
Set the y component of the particle's momentum.
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_classificationDecoratorKey
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const TruthParticle_v1 * incomingParticle(size_t index) const
Get one of the incoming particles.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_typeDecoratorKey
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > m_originReadDecorKey
std::atomic< unsigned int > m_ntotpart
virtual void renounce()=0
StatusCode initializeParser(const ExpressionParsing::SelectionArg< 1 > &selection_string)
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
const TruthVertex_v1 * decayVtx() const
The decay vertex of this particle.
const TruthVertex_v1 * prodVtx() const
The production vertex of this particle.
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_linkDecoratorKey
void setPdgId(int pid)
Set PDG ID code.
Gaudi::Property< bool > m_keep_navigation_info
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_outputParticlesKey
accumulate
Update flags based on parser line args.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
#define ATH_MSG_WARNING(x)
size_t nIncomingParticles() const
Get the number of incoming particles.
void setPz(float value)
Set the z component of the particle's momentum.
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > m_outcomeReadDecorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_originDecoratorKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
ServiceHandle< StoreGateSvc > m_metaStore
Handle on the metadata store for init.
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_motherIDDecoratorKey
int pdgId() const
PDG ID code.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
const TruthParticle_v1 * outgoingParticle(size_t index) const
Get one of the outgoing particles.
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > m_classificationReadDecorKey
Gaudi::Property< std::string > m_partString