|
ATLAS Offline Software
|
#include <OldSpclMcFilterTool.h>
|
| OldSpclMcFilterTool (const std::string &type, const std::string &name, const IInterface *parent) |
| Constructor with parameters: More...
|
|
virtual | ~OldSpclMcFilterTool () |
| Destructor: More...
|
|
StatusCode | buildMcAod (const McEventCollection *in, McEventCollection *out) |
| This method will check the validity of the input McEventCollection and build a filtered one from the strategy implemented by this concrete tool. More...
|
|
StatusCode | initialize () |
| Athena Algorithm's Hooks. More...
|
|
StatusCode | execute () |
|
StatusCode | finalize () |
|
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 |
|
Definition at line 29 of file OldSpclMcFilterTool.h.
◆ IsolTool_t
◆ McVtxFilterTool_t
◆ StoreGateSvc_t
◆ OldSpclMcFilterTool() [1/2]
OldSpclMcFilterTool::OldSpclMcFilterTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
Constructor with parameters:
Definition at line 41 of file OldSpclMcFilterTool.cxx.
54 "DeltaR isolation energy cut for electrons, muons, "
59 "Minimum threshold for transverse momentum of photons" );
63 "Minimum threshold for transverse momentum for all particles.\n"
64 "Warning: this cut is applied *before* Pt photon cut !" );
68 "Eta acceptance cut applied on all stable particles" );
74 "Switch to include or not particles from detector simulation "
79 "Switch to include or not parton showers" );
83 "Switch to remove particles which decay into themselves (t->tg) "
84 "*but* only for generated particles, not the ones from the "
85 "Geant4 interactions" );
◆ ~OldSpclMcFilterTool()
OldSpclMcFilterTool::~OldSpclMcFilterTool |
( |
| ) |
|
|
virtual |
◆ OldSpclMcFilterTool() [2/2]
OldSpclMcFilterTool::OldSpclMcFilterTool |
( |
| ) |
|
|
protected |
◆ buildMcAod()
This method will check the validity of the input McEventCollection and build a filtered one from the strategy implemented by this concrete tool.
Implements ITruthParticleFilterTool.
Definition at line 101 of file OldSpclMcFilterTool.cxx.
104 if (
nullptr == in ||
nullptr ==
out ) {
106 <<
" in: " << in <<
endmsg
108 return StatusCode::FAILURE;
112 out->operator=( *in );
116 ATH_MSG_ERROR(
"Could not select the \"special\" barcodes !!");
117 return StatusCode::FAILURE;
122 ATH_MSG_ERROR(
"Could not remove the not \"special\" particles from the "\
123 "filtered McEventCollection !!");
124 return StatusCode::FAILURE;
129 ATH_MSG_ERROR(
"Could not reconnect the particles in the filtered "\
130 "McEventCollection !!");
131 return StatusCode::FAILURE;
134 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]
◆ execute()
StatusCode TruthParticleFilterBaseTool::execute |
( |
| ) |
|
|
virtualinherited |
Implements ITruthParticleFilterTool.
Definition at line 120 of file TruthParticleFilterBaseTool.cxx.
127 if (!mcEventsReadHandle.isValid()){
129 return StatusCode::FAILURE;
134 ATH_CHECK(mcEventsOutputWriteHandle.record(std::make_unique<McEventCollection>()));
136 if (!mcEventsOutputWriteHandle.isValid()){
137 ATH_MSG_ERROR(
"Invalid WriteHamdle for McEventCollection with key ["
139 return StatusCode::FAILURE;
147 return StatusCode::FAILURE;
151 if ( this->
buildMcAod( mcEventsReadHandle.ptr(), mcEventsOutputWriteHandle.ptr() ).isFailure() ) {
153 return StatusCode::FAILURE;
164 "isolation energies !");
167 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
◆ finalize()
StatusCode TruthParticleFilterBaseTool::finalize |
( |
| ) |
|
|
virtualinherited |
◆ finalizeTool()
StatusCode TruthParticleFilterBaseTool::finalizeTool |
( |
| ) |
|
|
inlineprotectedvirtualinherited |
◆ initialize()
StatusCode TruthParticleFilterBaseTool::initialize |
( |
| ) |
|
|
virtualinherited |
◆ initializeTool()
StatusCode OldSpclMcFilterTool::initializeTool |
( |
| ) |
|
|
protectedvirtual |
◆ 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()
const InterfaceID & ITruthParticleFilterTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ 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.
◆ rebuildLinks()
Rebuild the links between particles which were connected, eg by a long FSR chain.
Definition at line 485 of file OldSpclMcFilterTool.cxx.
492 return StatusCode::FAILURE;
495 if ( mcPart->end_vertex() ) {
496 ATH_MSG_VERBOSE(
"GenParticle has already a decay vertex : nothing to do");
497 return StatusCode::SUCCESS;
502 return StatusCode::FAILURE;
507 return StatusCode::FAILURE;
510 return StatusCode::SUCCESS;
513 const int pdgId = mcPart->pdg_id();
521 ATH_MSG_VERBOSE(
"No decay vertex for the particle #" << bc <<
" : " <<
"No link to rebuild...");
522 return StatusCode::SUCCESS;
525 std::list<int> bcChildPart;
526 std::list<int> bcChildVert;
532 const HepMC::GenVertex::vertex_iterator endVtx = dcyVtx->vertices_end(HepMC::descendants);
533 for ( HepMC::GenVertex::vertex_iterator itrVtx = dcyVtx->vertices_begin( HepMC::descendants );
536 bool foundPdgId =
false;
537 HepMC::GenVertex::particles_in_const_iterator endPart = (*itrVtx)->particles_in_const_end();
538 for ( HepMC::GenVertex::particles_in_const_iterator itrPart = (*itrVtx)->particles_in_const_begin();
544 bcChildPart.push_front( (*itrPart)->barcode() );
546 if ( (*itrPart)->pdg_id() == pdgId ) {
552 bcChildVert.push_front( (*itrVtx)->barcode() );
561 std::list<int>::const_iterator bcVtxEnd = bcChildVert.end();
562 for ( std::list<int>::const_iterator itrBcVtx = bcChildVert.begin();
563 itrBcVtx != bcVtxEnd;
565 HepMC::GenVertex * childVtx = outEvt->barcode_to_vertex(*itrBcVtx);
567 if ( childVtx->particles_in_size() > 0 ) {
568 HepMC::GenVertex::particles_in_const_iterator endPart = childVtx->particles_in_const_end();
569 for ( HepMC::GenVertex::particles_in_const_iterator itrPart = childVtx->particles_in_const_begin();
572 if ( (*itrPart)->pdg_id() == pdgId ) {
573 HepMC::GenVertex * prodVtx = (*itrPart)->production_vertex();
575 if ( prodVtx->particles_in_size() > 0 ) {
580 <<
"found a particle = "
581 << (*itrPart) <<
", "
582 <<
"but its production vertex has incoming particles !"
590 outEvt->add_vertex( linkVtx );
591 linkVtx->add_particle_in( mcPart );
592 linkVtx->add_particle_out( *itrPart );
595 <<
"====================================================="
597 <<
"Created a GenVertex - link !"
599 std::stringstream vtxLink(
"");
600 linkVtx->print(vtxLink);
604 <<
"====================================================="
613 childVtx->add_particle_in(mcPart);
614 msg(MSG::WARNING) <<
"Odd situation:" << std::endl;
615 std::stringstream vtxDump(
"" );
616 childVtx->print(vtxDump);
617 msg(MSG::WARNING) << vtxDump.str() <<
endmsg;
618 return StatusCode::SUCCESS;
622 return StatusCode::FAILURE;
◆ reconnectParticles()
Reconnect the particles of the filtered McEventCollection.
We need the original McEventCollection to know if 2 particles were connected
Definition at line 429 of file OldSpclMcFilterTool.cxx.
432 if (
nullptr == in ||
nullptr ==
out ) {
434 <<
" in: " << in <<
endmsg
436 return StatusCode::FAILURE;
439 return StatusCode::SUCCESS;
441 for (
unsigned int iEvt = 0; iEvt != in->size(); ++iEvt) {
442 const HepMC::GenEvent *
evt = (*in)[iEvt];
443 HepMC::GenEvent * outEvt = (*out)[iEvt];
447 for (
const auto& itrPart: *outEvt) {
448 if ( itrPart->end_vertex() ) {
452 ATH_MSG_WARNING(
"Could not rebuild links for this particle = "<< itrPart);
455 <<
"==========================================================="
456 <<
endmsg <<
"Production vertex for particle " << itrPart <<
" : ";
457 if ( itrPart->production_vertex() ) {
458 std::stringstream prodVtx(
"");
467 if ( itrPart->end_vertex() ) {
468 std::stringstream dcyVtx(
"");
481 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ selectSpclMcBarcodes()
StatusCode OldSpclMcFilterTool::selectSpclMcBarcodes |
( |
| ) |
|
|
protected |
Retrieve the GenParticles from the GenEvent object (located into the McEventCollection container), filter them and store their barcode into the list of barcodes of particles to keep.
skip stuff with no end-vertex
stable particles
Save photons
Save photon only if it does not decay (ie no end_vertex)
ask McVtxFilterTool for its decision ie: final word is given to the user
Definition at line 140 of file OldSpclMcFilterTool.cxx.
146 std::vector<HepMC::ConstGenParticlePtr>
particles;
152 if (
sc.isFailure() ) {
153 ATH_MSG_ERROR(
"Could not get Monte Carlo particles from TDS at : "
155 return StatusCode::FAILURE;
165 const int id =
part->pdg_id();
166 const int ida = std::abs(
id);
167 const HepMC::FourVector hlv =
part->momentum();
168 const double pt = hlv.perp();
169 const double eta = hlv.pseudoRapidity();
170 const double mass = hlv.m();
201 if (
nullptr ==
part->end_vertex() ) {
208 if( ida>100 && ida<1000) ifl=ida/100;
209 if( ida>1000 && ida<10000) ifl=ida/1000;
211 if( (ifl==5 && jj1<3 &&
mass<9.0*
GeV) || ( ifl==4 && jj1<3 &&
mass<2.4*
GeV) ) {
212 if (
accept) isSpcl =
true;
217 if( ida>5 && ida!=21 && ida!=9 &&
mass>9.*
GeV &&
accept ) isSpcl=
true;
220 if (ida >= 1 && ida <= 5 &&
accept ) isSpcl =
true;
223 if ( ida == 21 &&
accept ) isSpcl =
true;
226 if ( (ida == 9900041 || ida == 9900042) &&
accept ) isSpcl =
true;
229 if( ida>1000000 && ida<3000000 &&
accept ) isSpcl =
true;
236 if( ida>80 && ida<101 ) isSpcl=
false;
242 if( isSpcl && decayVtx ) {
243 auto dcyVtx =
part->end_vertex();
244 for(
const auto& child: *dcyVtx) {
245 if( child->pdg_id()==
id &&
275 if( !isSpcl )
continue;
279 if( isSpcl && decayVtx ) {
280 for(
const auto& child: *(
part->end_vertex())) {
289 <<
" and selected " <<
m_barcodes.size() <<
" particles");
291 return StatusCode::SUCCESS;
◆ shapeGenEvent()
Build the out McEventCollection by removing all the GenParticles whose barcode is not in the list of barcodes to keep.
Remove also the dead vertices.
Definition at line 294 of file OldSpclMcFilterTool.cxx.
298 std::vector<HepMC::GenParticlePtr> going_out;
306 going_out.push_back(
p);
307 auto pvtx =
p->production_vertex();
308 auto evtx =
p->end_vertex();
309 if (pvtx) pvtx->remove_particle_out(
p);
312 for (
auto& pp: evtx->particles_out()) {
313 pvtx->add_particle_out(pp);
316 evtx->remove_particle_out(
p);
320 std::list<int> evtBarcodes;
321 for (
const auto&
p: **
evt ) {
324 for ( std::list<int>::const_iterator itrBc = evtBarcodes.begin();itrBc != evtBarcodes.end(); ++itrBc ) {
330 going_out.push_back(
p);
331 auto pvtx =
p->production_vertex();
332 auto evtx =
p->end_vertex();
333 if (pvtx) pvtx->remove_particle(
p);
339 while ( evtx->particles_out_const_begin() != evtx->particles_out_const_end()) {
340 HepMC::GenVertex::particles_out_const_iterator
np = evtx->particles_out_const_begin();
341 pvtx->add_particle_out(*
np);
344 evtx->remove_particle(
p);
354 std::vector<HepMC::ConstGenVertexPtr> going_out_again;
355 for (
auto&
v: (*evt)->vertices()) {
356 if (
v->particles_in().empty() &&
v->particles_out().empty() ){
357 going_out_again.push_back(
v);
364 d != going_out.end();
371 std::vector<HepMC::GenVertex*> going_out_again;
372 for ( HepMC::GenEvent::vertex_const_iterator
v = (*evt)->vertices_begin();
373 v != (*evt)->vertices_end(); ++
v ) {
374 if ( (*v)->particles_in_size() == 0 && (*v)->particles_out_size() == 0 ){
375 going_out_again.push_back(*
v);
381 d != going_out_again.end();
393 if (!sigProcVtx)
continue;
395 bool isInColl =
false;
396 for (
const auto& itrVtx: (*evt)->vertices() ) {
404 (*evt)->remove_attribute(
"signal_process_vertex");
407 const HepMC::GenVertex * sigProcVtx = (*evt)->signal_process_vertex();
408 if ( 0 != sigProcVtx ) {
409 const int sigProcBC = sigProcVtx->barcode();
410 bool isInColl =
false;
411 for ( HepMC::GenEvent::vertex_const_iterator itrVtx = (*evt)->vertices_begin();
412 itrVtx != (*evt)->vertices_end();
414 if ( sigProcBC == (*itrVtx)->barcode() ) {
420 (*evt)->set_signal_process_vertex(0);
426 return StatusCode::SUCCESS;
◆ 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.
◆ updateVHKA()
◆ m_barcodes
std::set<int> OldSpclMcFilterTool::m_barcodes |
|
protected |
List of particles (in fact their unique barcode) which have been labelled as "special".
Definition at line 103 of file OldSpclMcFilterTool.h.
◆ m_detStore
◆ m_doEtIsolation
BooleanProperty TruthParticleFilterBaseTool::m_doEtIsolation |
|
protectedinherited |
◆ m_etaRange
DoubleProperty OldSpclMcFilterTool::m_etaRange |
|
protected |
◆ m_evtStore
◆ m_includePartonShowers
BooleanProperty OldSpclMcFilterTool::m_includePartonShowers |
|
protected |
◆ m_includeSimul
BooleanProperty OldSpclMcFilterTool::m_includeSimul |
|
protected |
Switch to include or not particles from detector simulation (Geant4)
Definition at line 124 of file OldSpclMcFilterTool.h.
◆ m_isolationTool
IsolTool_t TruthParticleFilterBaseTool::m_isolationTool |
|
protectedinherited |
◆ m_mcEventsOutputWriteHandleKey
◆ m_mcEventsReadHandleKey
◆ m_mcVtxFilterTool
◆ m_ptGamMin
DoubleProperty OldSpclMcFilterTool::m_ptGamMin |
|
protected |
◆ m_ptMin
DoubleProperty OldSpclMcFilterTool::m_ptMin |
|
protected |
Minimum threshold for transverse momentum for all particles.
Warning: this cut is applied before Pt photon cut !
Definition at line 116 of file OldSpclMcFilterTool.h.
◆ m_removeDecayToSelf
BooleanProperty OldSpclMcFilterTool::m_removeDecayToSelf |
|
protected |
Switch to remove particles which decay into themselves (t->tg) but only for generated particles, not the ones from the Geant4 interactions.
Definition at line 137 of file OldSpclMcFilterTool.h.
◆ m_rIsol
DoubleProperty OldSpclMcFilterTool::m_rIsol |
|
protected |
deltaR isolation energy cut for electrons, muons, taus and photons
Definition at line 107 of file OldSpclMcFilterTool.h.
◆ m_tesIO
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
HepMC::GenVertex * GenVertexPtr
JetConstituentVector::iterator iterator
BooleanProperty m_doEtIsolation
Switch to compute or not the Et-isolations for TruthParticle (and their underlying HepMC::GenParticle...
Scalar eta() const
pseudorapidity method
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
virtual StatusCode buildMcAod(const McEventCollection *in, McEventCollection *filtered)=0
This method will check the validity of the input McEventCollection and build a filtered one from the ...
StatusCode accept(const xAOD::Muon *mu)
GenParticle * GenParticlePtr
virtual StatusCode finalizeTool()
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
void line(std::ostream &os, const GenEvent &e)
bool isGenStable(const T &p)
Determine if the particle is stable at the generator (not det-sim) level,.
virtual StatusCode initializeTool()
I/O operators.
bool isSMLepton(const T &p)
virtual void setOwner(IDataHandleHolder *o)=0
GenParticle * barcode_to_particle(const GenEvent *e, int id)
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
(Non-const) Iterator class for DataVector/DataList.
GenVertexPtr newGenVertexPtr(const HepMC::FourVector &pos=HepMC::FourVector(0.0, 0.0, 0.0, 0.0), const int i=0)
SG::ReadHandleKey< McEventCollection > m_mcEventsReadHandleKey
ReadHandleKey for the input McEventCollection one wants to filter.
::StatusCode StatusCode
StatusCode definition for legacy code.
McVtxFilterTool_t m_mcVtxFilterTool
Pointer to the McVtxFilterTool to be able to select additional vertices on some decay pattern criteri...
IsolTool_t m_isolationTool
Pointer to the TruthIsolationTool to be able to compute transverse energy isolations for various isol...
StatusCode getMC(MCParticleCollection &mcParticles, const bool ifgen=false, const std::string &key="GEN_EVENT") const
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.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
TruthParticleFilterBaseTool()
Default constructor:
bool isStable(const T &p)
Identify if the particle is stable, i.e. has not decayed.
#define ATH_MSG_WARNING(x)
bool isPhoton(const xAOD::Egamma *eg)
is the object a photon
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
const HepMC::GenVertex * ConstGenVertexPtr
bool isSimStable(const T &p)
Identify if the particle is considered stable at the post-detector-sim stage.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
SG::WriteHandleKey< McEventCollection > m_mcEventsOutputWriteHandleKey
Location of the output McEventCollection which has been filtered.
GenVertex * signal_process_vertex(const GenEvent *e)