an algorithm to merge truth particles collections in the overlay store
More...
#include <MergeTruthParticlesTool.h>
|
| | MergeTruthParticlesTool (const std::string &type, const std::string &name, const IInterface *parent) |
| StatusCode | initialize () override final |
| | Initialize.
|
| virtual StatusCode | prepareEvent (const EventContext &ctx, unsigned int nInputEvents) override final |
| | called before the subevts loop.
|
| virtual StatusCode | mergeEvent (const EventContext &ctx) override final |
| | called at the end of the subevts loop.
|
| virtual StatusCode | processBunchXing (int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final |
| | called for each active bunch-crossing to process current SubEvents bunchXing is in ns
|
| virtual StatusCode | processAllSubEvents (const EventContext &ctx) override final |
| | Merge the Truth TruthParticleContainers using the PileUpMergeSvc.
|
|
| ServiceHandle< PileUpMergeSvc > | m_pMergeSvc {this, "PileUpMergeSvc", "PileUpMergeSvc", ""} |
| Gaudi::Property< std::string > | m_inputTruthParticleCollKey {this, "InputTruthParticleCollKey", "TruthPileupParticles", ""} |
| Gaudi::Property< std::string > | m_inTimeOutputTruthParticleCollKey {this, "InTimeOutputTruthParticleCollKey", "TruthPileupParticles", ""} |
| Gaudi::Property< bool > | m_includeSignalTruthParticles {this, "IncludeSignalTruthParticles", false, ""} |
| xAOD::TruthParticleContainer * | m_inTimeOutputTruthParticleContainer {} |
| bool | m_first_event {true} |
an algorithm to merge truth particles collections in the overlay store
Definition at line 23 of file MergeTruthParticlesTool.h.
◆ MergeTruthParticlesTool()
| MergeTruthParticlesTool::MergeTruthParticlesTool |
( |
const std::string & | type, |
|
|
const std::string & | name, |
|
|
const IInterface * | parent ) |
◆ filterPassed()
| virtual bool PileUpToolBase::filterPassed |
( |
| ) |
const |
|
inlineoverridevirtualinherited |
◆ initialize()
| StatusCode MergeTruthParticlesTool::initialize |
( |
| ) |
|
|
finaloverridevirtual |
Initialize.
Reimplemented from PileUpToolBase.
Definition at line 19 of file MergeTruthParticlesTool.cxx.
20{
23 return StatusCode::SUCCESS;
24}
#define ATH_CHECK
Evaluate an expression and check for errors.
ServiceHandle< PileUpMergeSvc > m_pMergeSvc
◆ mergeEvent()
| StatusCode MergeTruthParticlesTool::mergeEvent |
( |
const EventContext & | ctx | ) |
|
|
finaloverridevirtual |
called at the end of the subevts loop.
Not (necessarily) able to access SubEvents
Definition at line 70 of file MergeTruthParticlesTool.cxx.
71{
73
75 ATH_MSG_ERROR(
"mergeEvent: Failed to record InTimeOutputTruthParticleContainer");
76 return StatusCode::FAILURE;
77 }
78 else {
81 }
82 return StatusCode::SUCCESS;
83}
#define ATH_MSG_VERBOSE(x)
StatusCode record(const xAOD::TruthParticleContainer *pTruthParticles, const std::string &truthParticleContainerName) const
Gaudi::Property< std::string > m_inTimeOutputTruthParticleCollKey
xAOD::TruthParticleContainer * m_inTimeOutputTruthParticleContainer
◆ prepareEvent()
| StatusCode MergeTruthParticlesTool::prepareEvent |
( |
const EventContext & | ctx, |
|
|
unsigned int | nInputEvents ) |
|
finaloverridevirtual |
called before the subevts loop.
Not (necessarily) able to access SubEvents
Definition at line 26 of file MergeTruthParticlesTool.cxx.
27{
29 ATH_MSG_DEBUG (
"prepareEvent: there are " << nInputEvents <<
" subevents in this event." );
33 return StatusCode::SUCCESS;
34}
TruthParticleAuxContainer_v2 TruthParticleAuxContainer
Declare the latest version of the truth particle auxiliary container.
TruthParticleContainer_v1 TruthParticleContainer
Declare the latest version of the truth particle container.
◆ processAllSubEvents()
| StatusCode MergeTruthParticlesTool::processAllSubEvents |
( |
const EventContext & | ctx | ) |
|
|
finaloverridevirtual |
Merge the Truth TruthParticleContainers using the PileUpMergeSvc.
Reimplemented from PileUpToolBase.
Definition at line 109 of file MergeTruthParticlesTool.cxx.
110{
112
116
118 TruthParticleList truthList;
120 if (!truthList.empty()) {
121
122 TruthParticleList::const_iterator truthParticleColl_iter(truthList.begin());
123 const TruthParticleList::const_iterator endOfTruthParticleColls(truthList.end());
124 while (truthParticleColl_iter!=endOfTruthParticleColls) {
125 const int eventNumber{
static_cast<int>((truthParticleColl_iter)->first.index())};
126
129 }
130
131
132
134 ++truthParticleColl_iter;
135 }
136 }
137 else {
138 ATH_MSG_DEBUG (
"processAllSubEvents: TruthParticleList is empty" );
139 }
140 }
141 else {
142 ATH_MSG_ERROR (
"processAllSubEvents: Can not find TruthParticleList" );
143 }
144
146 ATH_MSG_ERROR (
"processAllSubEvents: Failed to record InTimeOutputTruthParticleContainer" );
147 return StatusCode::FAILURE;
148 }
149 else {
152 }
153
154 return StatusCode::SUCCESS;
155}
Gaudi::Property< std::string > m_inputTruthParticleCollKey
virtual StatusCode processTruthParticleContainer(const xAOD::TruthParticleContainer *inputTruthParticleContainer, xAOD::TruthParticleContainer *outputTruthParticleContainer, int eventNumber)
TruthParticleContainer Loop.
Gaudi::Property< bool > m_includeSignalTruthParticles
std::list< value_t > type
type of the collection of timed data object
◆ processBunchXing()
called for each active bunch-crossing to process current SubEvents bunchXing is in ns
Reimplemented from PileUpToolBase.
Definition at line 36 of file MergeTruthParticlesTool.cxx.
39{
42 while (iEvt != eSubEvents) {
45 bunchXing, iEvt).isSuccess()) {
47 if ( !inputTruthParticleContainer ) {
49 return StatusCode::FAILURE;
50 }
51 ATH_MSG_DEBUG (
"processBunchXing: bunch Crossing = " << bunchXing <<
" xAOD::TruthParticleContainer size = " << inputTruthParticleContainer->
size());
53
56 }
57 }
58 else {
59 ATH_MSG_DEBUG (
"processBunchXing: No TruthParticleContainer found." );
60 }
62 ++iEvt;
63 }
64
65
67 return StatusCode::SUCCESS;
68}
size_type size() const noexcept
Returns the number of elements in the collection.
◆ processTruthParticleContainer()
TruthParticleContainer Loop.
Definition at line 158 of file MergeTruthParticlesTool.cxx.
159{
160 if (!inputTruthParticleContainer || !outputTruthParticleContainer) { return StatusCode::FAILURE; }
161
162
164
167 outputTruthParticleContainer->
push_back(xTruthParticle);
168 *xTruthParticle = *theParticle;
169
170 eventNumberAccessor(*xTruthParticle) =
eventNumber;
171 }
172 return StatusCode::SUCCESS;
173}
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::Accessor< T, ALLOC > Accessor
TruthParticle_v1 TruthParticle
Typedef to implementation.
◆ record()
| StatusCode MergeTruthParticlesTool::record |
( |
const xAOD::TruthParticleContainer * | pTruthParticles, |
|
|
const std::string & | truthParticleContainerName ) const |
|
private |
Definition at line 85 of file MergeTruthParticlesTool.cxx.
86{
89 ATH_MSG_DEBUG(
"Check Aux store: " << pTruthParticles <<
" ... " << &pTruthParticles->
auxbase() <<
" ... " << pTruthParticlesAux );
90 if ( !pTruthParticlesAux ) {
91 ATH_MSG_ERROR(
"Unable to retrieve xAOD::TruthParticleAuxContainer");
92 return StatusCode::FAILURE;
93 }
95 if ( evtStore()->
record(pTruthParticlesAux, truthParticleContainerName+
"Aux.").isFailure() ) {
96 ATH_MSG_ERROR(
"Unable to write new xAOD::TruthParticleAuxContainer to event store: " << truthParticleContainerName);
97 return StatusCode::FAILURE;
98 }
100 if ( evtStore()->
record(pTruthParticles, truthParticleContainerName).isFailure() ) {
101 ATH_MSG_ERROR(
"Unable to write new xAOD::TruthParticleContainer to event store: " << truthParticleContainerName);
102 return StatusCode::FAILURE;
103 }
104 ATH_MSG_DEBUG(
"Created new xAOD::TruthParticleContainer in event store: " << truthParticleContainerName);
105 return StatusCode::SUCCESS;
106}
const SG::AuxVectorBase & auxbase() const
Convert to AuxVectorBase.
◆ resetFilter()
| virtual void PileUpToolBase::resetFilter |
( |
| ) |
|
|
inlineoverridevirtualinherited |
◆ toProcess()
| virtual bool PileUpToolBase::toProcess |
( |
int | bunchXing | ) |
const |
|
inlineoverridevirtualinherited |
◆ m_filterPassed
| bool PileUpToolBase::m_filterPassed {true} |
|
protectedinherited |
◆ m_first_event
| bool MergeTruthParticlesTool::m_first_event {true} |
|
private |
◆ m_firstXing
| Gaudi::Property<int> PileUpToolBase::m_firstXing |
|
protectedinherited |
Initial value:{this, "FirstXing", -999,
"First bunch-crossing in which det is live"}
Definition at line 54 of file PileUpToolBase.h.
54 {this, "FirstXing", -999,
55 "First bunch-crossing in which det is live"};
◆ m_includeSignalTruthParticles
| Gaudi::Property<bool> MergeTruthParticlesTool::m_includeSignalTruthParticles {this, "IncludeSignalTruthParticles", false, ""} |
|
private |
◆ m_inputTruthParticleCollKey
| Gaudi::Property<std::string> MergeTruthParticlesTool::m_inputTruthParticleCollKey {this, "InputTruthParticleCollKey", "TruthPileupParticles", ""} |
|
private |
◆ m_inTimeOutputTruthParticleCollKey
| Gaudi::Property<std::string> MergeTruthParticlesTool::m_inTimeOutputTruthParticleCollKey {this, "InTimeOutputTruthParticleCollKey", "TruthPileupParticles", ""} |
|
private |
◆ m_inTimeOutputTruthParticleContainer
◆ m_lastXing
| Gaudi::Property<int> PileUpToolBase::m_lastXing |
|
protectedinherited |
Initial value:{this, "LastXing", 999,
"Last bunch-crossing in which det is live"}
Definition at line 56 of file PileUpToolBase.h.
56 {this, "LastXing", 999,
57 "Last bunch-crossing in which det is live"};
◆ m_pMergeSvc
◆ m_vetoPileUpTruthLinks
| Gaudi::Property<int> PileUpToolBase::m_vetoPileUpTruthLinks |
|
protectedinherited |
Initial value:{this, "VetoPileUpTruthLinks", true,
"Ignore links to suppressed pile-up truth"}
Definition at line 58 of file PileUpToolBase.h.
58 {this, "VetoPileUpTruthLinks", true,
59 "Ignore links to suppressed pile-up truth"};
The documentation for this class was generated from the following files: