ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
AthExThinning::CreateData Class Reference

#include <CreateData.h>

Inheritance diagram for AthExThinning::CreateData:
Collaboration diagram for AthExThinning::CreateData:

Public Member Functions

 CreateData (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor with parameters: More...
 
virtual ~CreateData ()
 Destructor: More...
 
virtual StatusCode initialize ()
 
virtual StatusCode execute ()
 
virtual StatusCode finalize ()
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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
 

Protected Member Functions

 CreateData ()
 Default constructor: More...
 
StatusCode makeData (const std::string &testName)
 make data for a test More...
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Protected Attributes

std::vector< std::string > m_testNames
 list of test-names to create data for (default: test1,test2,test3) More...
 
StringProperty m_particlesOutputName
 Particles output location. More...
 
UnsignedIntegerProperty m_nbrParticles
 Number of particles to generate. More...
 
StringProperty m_decayOutputName
 Decay object output location. More...
 
StringProperty m_elephantinoOutputName
 Elephantino object output location. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

DataObjIDColl m_extendedExtraObjects
 
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
 

Detailed Description

algorithm to create dummy 4-momentum-like data classes: AthExParticle as well as dummy decays (AthExDecay) made up from 2 AthExParticle and a more involved class (AthExElephantino) holding 4 pointers to some elements of the AthExParticles container.

Definition at line 32 of file CreateData.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ CreateData() [1/2]

CreateData::CreateData ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Constructor with parameters:

Definition at line 41 of file CreateData.cxx.

42  :
43  AthAlgorithm( name, pSvcLocator )
44 {
45  //
46  // Property declaration
47  //
48  //declareProperty( "Property", m_nProperty );
49 
50  declareProperty( "ParticlesOutput",
51  m_particlesOutputName = "Particles",
52  "Output location of the particles" );
53 
54  declareProperty( "NbrOfParticles",
55  m_nbrParticles = 10,
56  "Number of particles to create" );
57 
58  declareProperty( "DecayOutput",
59  m_decayOutputName = "TwoBodyDecay",
60  "Output location of a 2-body decay" );
61 
62  declareProperty( "ElephantinoOutput",
63  m_elephantinoOutputName = "PinkElephantino",
64  "Output location of an Elephantino with 4 legs" );
65 
66  declareProperty( "TestNames",
68  "list of test-names to create data for "
69  "(default: test1,test2,test3)" );
70  m_testNames = std::vector<std::string>(3);
71  m_testNames[0] = "test1";
72  m_testNames[1] = "test2";
73  m_testNames[2] = "test3";
74 }

◆ ~CreateData()

CreateData::~CreateData ( )
virtual

Destructor:

Definition at line 78 of file CreateData.cxx.

79 {}

◆ CreateData() [2/2]

AthExThinning::CreateData::CreateData ( )
protected

Default constructor:

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode CreateData::execute ( )
virtual

Definition at line 95 of file CreateData.cxx.

96 {
97  ATH_MSG_DEBUG ("Executing " << name() << "...");
98 
99  for ( std::vector<std::string>::const_iterator
100  itr = m_testNames.begin(),
101  iEnd = m_testNames.end();
102  itr != iEnd;
103  ++itr ) {
104  ATH_MSG_INFO("Generating data for [" << *itr << "]...");
105  if ( !makeData(*itr).isSuccess() ) {
106  ATH_MSG_ERROR ("Could not generate data for [" << *itr << "] !!");
107  return StatusCode::FAILURE;
108  }
109  }
110 
111  return StatusCode::SUCCESS;
112 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

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 & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ finalize()

StatusCode CreateData::finalize ( )
virtual

Definition at line 89 of file CreateData.cxx.

90 {
91  ATH_MSG_INFO ("Finalizing " << name() << "...");
92  return StatusCode::SUCCESS;
93 }

◆ initialize()

StatusCode CreateData::initialize ( )
virtual

Definition at line 83 of file CreateData.cxx.

84 {
85  ATH_MSG_INFO ("Initializing " << name() << "...");
86  return StatusCode::SUCCESS;
87 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ makeData()

StatusCode CreateData::makeData ( const std::string &  testName)
protected

make data for a test

Definition at line 114 of file CreateData.cxx.

115 {
116  const std::string testName = "_"+test;
117  const std::string particlesOutputName = m_particlesOutputName.value()
118  + testName;
119  // create particles
121  if ( !evtStore()->record(particles, particlesOutputName).isSuccess() ) {
122  ATH_MSG_ERROR("Could not store particles at ["
123  << particlesOutputName << "]");
124  delete particles;
125  particles = 0;
126  return StatusCode::RECOVERABLE;
127  }
128  if ( !evtStore()->setConst(particles).isSuccess() ) {
129  ATH_MSG_WARNING("Could not setConst particles at ["
130  << particlesOutputName << "]");
131  }
132 
133  for ( unsigned int i = 0; i != m_nbrParticles.value(); ++i ) {
134  AthExParticle * p = new AthExParticle( (i+1) * 10. * Gaudi::Units::GeV,
135  (i+1) * 10. * Gaudi::Units::GeV,
136  (i+1) * 10. * Gaudi::Units::GeV,
137  (i+2) * 10. * Gaudi::Units::GeV );
138  particles->push_back(p);
139  }
140 
141  ATH_MSG_DEBUG ("particles: " << particles->size()
142  << " [" << particles << "]");
143 
144  const std::string decayOutputName = m_decayOutputName.value() + testName;
145  // create a dumb object from 2 particles
146  AthExDecay * dcy = new AthExDecay;
147  if ( !evtStore()->record(dcy, decayOutputName).isSuccess() ) {
148  ATH_MSG_ERROR("Could not store Decay at [" << decayOutputName << "] !!");
149  delete dcy;
150  dcy = 0;
151  return StatusCode::RECOVERABLE;
152  }
153  if ( !evtStore()->setConst(dcy).isSuccess() ) {
154  ATH_MSG_WARNING("Could not setConst Decay at [" << decayOutputName << "]");
155  }
156 
157  if ( particles->size() < 5 ) {
158  ATH_MSG_WARNING("Not enough particles to make a Decay !!");
159  return StatusCode::RECOVERABLE;
160  }
161 
162  // we need to test all the possible states of ElementLinks
163  // -> created from an index
165  // -> created from a pointer
167 
168  // -> created from an index
170  // -> created from a pointer
172 
173  dcy->setDecay( p1, p2, l1, l2 );
174 
175  const double igev = 1. / Gaudi::Units::GeV;
177  ("Created a Decay from :" << endmsg
178  << " p1: px= " << dcy->p1()->px() * igev << endmsg
179  << " p2: px= " << dcy->p2()->px() * igev << endmsg
180  << " l1: px= " << dcy->l1()->px() * igev << endmsg
181  << " l2: px= " << dcy->l2()->px() * igev
182  );
183 
184  // create the elephantino
185  const std::string elephantinoOutputName = m_elephantinoOutputName.value()
186  + testName;
187  AthExElephantino * eleph = new AthExElephantino;
188  if ( !evtStore()->record(eleph, elephantinoOutputName).isSuccess() ) {
189  ATH_MSG_ERROR("Could not store Elephantino at ["
190  << elephantinoOutputName << "] !!");
191  delete eleph;
192  eleph = 0;
193  return StatusCode::RECOVERABLE;
194  }
195  if ( !evtStore()->setConst(eleph).isSuccess() ) {
196  ATH_MSG_WARNING("Could not setConst Elephantino at ["
197  << elephantinoOutputName << "]");
198  }
199 
200  {
201  const AthExIParticles* iparticles = 0;
202  if ( !evtStore()->symLink( particles, iparticles ).isSuccess() ) {
203  ATH_MSG_WARNING("Could not symlink AthExParticles to AthExIParticles !!");
204  return StatusCode::RECOVERABLE;
205  }
206  }
207 
208  const AthExIParticles* iparticles = 0;
209  if ( !evtStore()->retrieve( iparticles, particlesOutputName).isSuccess() ||
210  0 == iparticles ) {
211  ATH_MSG_WARNING("Could not retrieve the (symlinked) AthExIParticles at ["
212  << particlesOutputName << "] !!");
213  return StatusCode::RECOVERABLE;
214  }
215 
216  if ( iparticles->size() < 9 ) {
217  ATH_MSG_WARNING("Not enough particles to make an Elephantino !!");
218  return StatusCode::RECOVERABLE;
219  }
220 
221  ATH_MSG_INFO(" particles: " << particles->size()
222  << endmsg <<
223  " iparticles: " << iparticles->size());
224 
225  if ( iparticles->size() != particles->size() ) {
226  ATH_MSG_ERROR("Error performing the symlink !" << endmsg
227  << " #iparticles: " << iparticles->size() << endmsg
228  << " #particles: " << particles->size() << endmsg
229  << " @iparticles: " << iparticles << endmsg
230  << " @particles: " << particles << endmsg
231  << "=== StoreGate content ===\n"
232  << evtStore()->dump());
233  return StatusCode::FAILURE;
234  }
235 
236  // we need to test all the possible states of ElementLinks
237  // -> created from an index
238  // -> created from a pointer
239  const ElementLink<AthExIParticles> ip1( *iparticles, 0 );
240  const ElementLink<AthExIParticles> ip2( (*iparticles)[4], *iparticles );
241  const ElementLink<AthExIParticles> ip3( *iparticles, 7 );
242  const ElementLink<AthExIParticles> ip4( (*iparticles)[8], *iparticles );
243 
244  eleph->setLegs( ip1, ip2, ip3, ip4 );
245 
246  const ElementLink<AthExIParticles> ie1( *iparticles, 1 );
247  const ElementLink<AthExIParticles> ie2( (*iparticles)[9], *iparticles );
248  eleph->setEars( ie1, ie2 );
249 
250  ATH_MSG_INFO("Created an Elephantino from :" << endmsg
251  << " leg1: px= " << eleph->leg1()->px() * igev << endmsg
252  << " leg2: px= " << eleph->leg2()->px() * igev << endmsg
253  << " leg3: px= " << eleph->leg3()->px() * igev << endmsg
254  << " leg4: px= " << eleph->leg4()->px() * igev << endmsg
255  << " ear1: px= " << eleph->ear1()->px() * igev << endmsg
256  << " ear2: px= " << eleph->ear2()->px() * igev);
257 
258  return StatusCode::SUCCESS;
259 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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()

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> AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

StatusCode AthAlgorithm::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< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_decayOutputName

StringProperty AthExThinning::CreateData::m_decayOutputName
protected

Decay object output location.

Definition at line 84 of file CreateData.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_elephantinoOutputName

StringProperty AthExThinning::CreateData::m_elephantinoOutputName
protected

Elephantino object output location.

Definition at line 87 of file CreateData.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_nbrParticles

UnsignedIntegerProperty AthExThinning::CreateData::m_nbrParticles
protected

Number of particles to generate.

Definition at line 81 of file CreateData.h.

◆ m_particlesOutputName

StringProperty AthExThinning::CreateData::m_particlesOutputName
protected

Particles output location.

Definition at line 78 of file CreateData.h.

◆ m_testNames

std::vector<std::string> AthExThinning::CreateData::m_testNames
protected

list of test-names to create data for (default: test1,test2,test3)

Definition at line 73 of file CreateData.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
AthExThinning::CreateData::m_decayOutputName
StringProperty m_decayOutputName
Decay object output location.
Definition: CreateData.h:84
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
AthExElephantino
AthExElephantino
Definition: AthExTPCnv.cxx:22
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
AthExThinning::CreateData::m_testNames
std::vector< std::string > m_testNames
list of test-names to create data for (default: test1,test2,test3)
Definition: CreateData.h:73
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
AthExThinning::CreateData::m_nbrParticles
UnsignedIntegerProperty m_nbrParticles
Number of particles to generate.
Definition: CreateData.h:81
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
AthExThinning::CreateData::m_particlesOutputName
StringProperty m_particlesOutputName
Particles output location.
Definition: CreateData.h:78
AthExParticles
Athena::TPCnvVers::Current AthExParticles
Definition: AthExTPCnv.cxx:32
AthExParticle::px
virtual double px() const
Implementation of the AthExIParticle interface.
Definition: AthExParticle.h:78
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:148
AthExElephantino::leg4
const AthExIParticle * leg4() const
Definition: AthExElephantino.cxx:77
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:88
AthExElephantino::ear2
const AthExIParticle * ear2() const
Definition: AthExElephantino.cxx:93
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
skel.l2
l2
Definition: skel.GENtoEVGEN.py:426
AthExElephantino::ear1
const AthExIParticle * ear1() const
Definition: AthExElephantino.cxx:85
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
AthExElephantino::leg2
const AthExIParticle * leg2() const
Definition: AthExElephantino.cxx:61
lumiFormat.i
int i
Definition: lumiFormat.py:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthExElephantino
Definition: AthExElephantino.h:33
AthExDecay::l1
const AthExParticle * l1() const
Definition: AthExDecay.cxx:73
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
AthExDecay::setDecay
void setDecay(const ElementLink< AthExParticles > &p1, const ElementLink< AthExParticles > &p2, const ElementLink< AthExParticles > &l1, const ElementLink< AthExParticles > &l2)
Definition: AthExDecay.cxx:91
AthExThinning::CreateData::m_elephantinoOutputName
StringProperty m_elephantinoOutputName
Elephantino object output location.
Definition: CreateData.h:87
AthExDecay
Definition: AthExDecay.h:28
AthExIParticles
Definition: AthExIParticles.h:29
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
AthExElephantino::setLegs
void setLegs(const ElementLink< AthExIParticles > &p1, const ElementLink< AthExIParticles > &p2, const ElementLink< AthExIParticles > &p3, const ElementLink< AthExIParticles > &p4)
Definition: AthExElephantino.cxx:105
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
a
TList * a
Definition: liststreamerinfos.cxx:10
h
AthExIParticle::px
virtual double px() const =0
AthExIParticle interface.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthExDecay::p2
const AthExParticle * p2() const
Definition: AthExDecay.cxx:66
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
AthExElephantino::leg1
const AthExIParticle * leg1() const
Definition: AthExElephantino.cxx:53
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
AthExDecay::p1
const AthExParticle * p1() const
Definition: AthExDecay.cxx:59
AthExParticle
Definition: AthExParticle.h:24
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
skel.l1
l1
Definition: skel.GENtoEVGEN.py:425
AthExThinning::CreateData::makeData
StatusCode makeData(const std::string &testName)
make data for a test
Definition: CreateData.cxx:114
AthExElephantino::leg3
const AthExIParticle * leg3() const
Definition: AthExElephantino.cxx:69
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
AthExParticles
Definition: AthExParticles.h:37
AthExDecay::l2
const AthExParticle * l2() const
Definition: AthExDecay.cxx:80
fitman.k
k
Definition: fitman.py:528
AthExElephantino::setEars
void setEars(const ElementLink< AthExIParticles > &e1, const ElementLink< AthExIParticles > &e4)
Definition: AthExElephantino.cxx:118
ServiceHandle< ICondSvc >