ATLAS Offline Software
Loading...
Searching...
No Matches
python.Lib.PyWriteThinnedData Class Reference
Inheritance diagram for python.Lib.PyWriteThinnedData:
Collaboration diagram for python.Lib.PyWriteThinnedData:

Public Member Functions

 __init__ (self, name="PyWriteThinnedData", **kw)
 initialize (self)
 execute (self)
 test (self, testName)
 doThinningTest1 (self, particles, dec)
 doThinningTest2 (self, particles, dec)
 doThinningTest3 (self, iparticles, dec)
 finalize (self)
virtual StatusCode reinitialize () override
virtual StatusCode start () override
virtual StatusCode stop () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const char * typeName () const override
 return the std::type_info name of the underlying py-component This is used by concrete implementations to connect a python component to its C++ counter-part
virtual PyObjectself () override
 return associated python object.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Public Attributes

 Particles = kw.get('Particles', "Particles")
 Decay = kw.get('Decay', "TwoBodyDecay")
 Elephantino = kw.get('Elephantino', "PinkElephantino")
 Filter = kw.get('Filter', [False]*10)
 name
 sg = PyAthena.py_svc("StoreGateSvc")
 storegate
 filter = self.Filter
 Datavector stuff.

Protected Member Functions

virtual bool setPyAttr (PyObject *pyobj) override
 attach the C++ component to its python cousin
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Protected Attributes

PyObjectm_self
 Pointer to self (from the python world)

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

A simple python algorithm to thin data

Definition at line 28 of file AthenaExamples/AthExThinning/python/Lib.py.

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

◆ __init__()

python.Lib.PyWriteThinnedData.__init__ ( self,
name = "PyWriteThinnedData",
** kw )

Definition at line 31 of file AthenaExamples/AthExThinning/python/Lib.py.

31 def __init__(self, name = "PyWriteThinnedData", **kw):
32
33 kw['name'] = name
34 super(PyWriteThinnedData,self).__init__(**kw)
35
36 self.Particles = kw.get('Particles', "Particles")
37 self.Decay = kw.get('Decay', "TwoBodyDecay")
38 self.Elephantino = kw.get('Elephantino', "PinkElephantino")
39 self.Filter = kw.get('Filter', [False]*10)
40

Member Function Documentation

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ doThinningTest1()

python.Lib.PyWriteThinnedData.doThinningTest1 ( self,
particles,
dec )

Definition at line 159 of file AthenaExamples/AthExThinning/python/Lib.py.

159 def doThinningTest1(self, particles, dec):
160 filter = self.filter[:]
161 RemovedIdx = ROOT.SG.ThinningDecisionBase.RemovedIdx
162 self.msg.info( "Particles | filter :" )
163 for i in range(particles.size()):
164 if filter[i]: kr = "keep"
165 else: kr = "remove"
166 self.msg.info( "%9s | %s", (i+1)*10, kr )
167 self.msg.info( "="*19 )
168
169 filter[len(filter)//2:] = [True]*(len(filter)//2)
170 self.msg.info( "Filter %r", filter )
171
172 self.msg.info( "... Processing [pre-thinning] ..." )
173 keep (dec, filter)
174
175 self.msg.info( "======== Index table =========" )
176 tmp = ROOT.SG.ThinningDecisionBase (dec)
177 tmp.buildIndexMap()
178 import os
179 os.sys.stdout.flush()
180 for i in range(particles.size()):
181 newIdx = tmp.index(i)
182 if newIdx == RemovedIdx: newIdx = "-"
183 self.msg.info( " idx %i -> %s", i, newIdx )
184
185 filter = self.filter[:]
186 filter[:len(filter)//2] = [True]*(len(filter)//2)
187 self.msg.info( "Filter %r", filter )
188
189 self.msg.info( "... Processing [thinning] ..." )
190 keep (dec, filter, 'and')
191
192 self.msg.info( "======== Index table =========" )
193 tmp = ROOT.SG.ThinningDecisionBase (dec)
194 tmp.buildIndexMap()
195 for i in range(particles.size()):
196 newIdx = tmp.index(i)
197 if newIdx == RemovedIdx: newIdx = "-"
198 self.msg.info( " idx %i -> %s", i, newIdx )
199
200 return StatusCode.Success
201

◆ doThinningTest2()

python.Lib.PyWriteThinnedData.doThinningTest2 ( self,
particles,
dec )

Definition at line 202 of file AthenaExamples/AthExThinning/python/Lib.py.

202 def doThinningTest2(self, particles, dec):
203 filter = self.filter[:]
204 RemovedIdx = ROOT.SG.ThinningDecisionBase.RemovedIdx
205 self.msg.info( "Particles | filter :" )
206 for i in range(particles.size()):
207 if filter[i]: kr = "keep"
208 else: kr = "remove"
209 self.msg.info( "%9s | %s", (i+1)*10, kr )
210 self.msg.info( "="*19 )
211
212 filter[len(filter)//2:] = [False]*(len(filter)//2)
213 self.msg.info( "Filter %s", filter )
214
215 self.msg.info( "... Processing [pre-thinning] ..." )
216 keep (dec, filter)
217
218 self.msg.info( "======== Index table =========" )
219 tmp = ROOT.SG.ThinningDecisionBase (dec)
220 tmp.buildIndexMap()
221 for i in range(particles.size()):
222 newIdx = tmp.index(i)
223 if newIdx == RemovedIdx: newIdx = "-"
224 self.msg.info( " idx %i -> %s", i, newIdx )
225
226 filter = self.filter[:]
227 filter[:len(filter)//2] = [False]*(len(filter)//2)
228 self.msg.info( "Filter %s", filter )
229
230 self.msg.info( "... Processing [thinning] ..." )
231 keep (dec, filter, 'or')
232
233 self.msg.info( "======== Index table =========" )
234 tmp = ROOT.SG.ThinningDecisionBase (dec)
235 tmp.buildIndexMap()
236 for i in range(particles.size()):
237 newIdx = tmp.index(i)
238 if newIdx == RemovedIdx: newIdx = "-"
239 self.msg.info( " idx %i -> %s", i, newIdx )
240
241 return StatusCode.Success
242

◆ doThinningTest3()

python.Lib.PyWriteThinnedData.doThinningTest3 ( self,
iparticles,
dec )

Definition at line 243 of file AthenaExamples/AthExThinning/python/Lib.py.

243 def doThinningTest3(self, iparticles, dec):
244 filter = self.filter[:]
245 RemovedIdx = ROOT.SG.ThinningDecisionBase.RemovedIdx
246 self.msg.info( "IParticles | filter :" )
247 for i in range(iparticles.size()):
248 if filter[i]: kr = "keep"
249 else: kr = "remove"
250 self.msg.info( "%9s | %s", (i+1)*10, kr )
251 self.msg.info( "="*19 )
252
253 filter[len(filter)//2:] = [True]*(len(filter)//2)
254 self.msg.info( "Filter %r", filter )
255
256 self.msg.info( "... Processing [pre-thinning] ..." )
257 keep (dec, filter)
258
259 self.msg.info( "======== Index table =========" )
260 tmp = ROOT.SG.ThinningDecisionBase (dec)
261 tmp.buildIndexMap()
262 for i in range(iparticles.size()):
263 newIdx = tmp.index(i)
264 if newIdx == RemovedIdx: newIdx = "-"
265 self.msg.info( " idx %i -> %s", i, newIdx )
266
267 filter = self.filter[:]
268 filter[:len(filter)//2] = [True]*(len(filter)//2)
269 self.msg.info( "Filter %r", filter )
270
271 self.msg.info( "... Processing [thinning] ..." )
272 keep (dec, filter, 'and')
273
274 self.msg.info( "======== Index table =========" )
275 tmp = ROOT.SG.ThinningDecisionBase (dec)
276 tmp.buildIndexMap()
277 for i in range(iparticles.size()):
278 newIdx = tmp.index(i)
279 if newIdx == RemovedIdx: newIdx = "-"
280 self.msg.info( " idx %i -> %s", i, newIdx )
281
282 return StatusCode.Success
283

◆ evtStore()

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.

◆ execute()

python.Lib.PyWriteThinnedData.execute ( self)

Definition at line 53 of file AthenaExamples/AthExThinning/python/Lib.py.

53 def execute(self):
54 self.msg.debug( "Executing %s...", self.name )
55 allGood = True
56 for t in ("test1","test2","test3",):
57 if self.test(t) != StatusCode.Success:
58 self.msg.warning( "Could not perform 'thinning %s'",t )
59 allGood = False
60 if allGood: return StatusCode.Success
61 return StatusCode.Failure
62
const bool debug

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

◆ finalize()

python.Lib.PyWriteThinnedData.finalize ( self)

Definition at line 284 of file AthenaExamples/AthExThinning/python/Lib.py.

284 def finalize(self):
285 self.msg.info( "Finalizing %s...", self.name )
286 return StatusCode.Success
287

◆ initialize()

python.Lib.PyWriteThinnedData.initialize ( self)

Definition at line 41 of file AthenaExamples/AthExThinning/python/Lib.py.

41 def initialize(self):
42 self.msg.info( "Initializing %s", self.name )
43
44 self.sg = PyAthena.py_svc("StoreGateSvc")
45
46
47 import cppyy
48 cppyy.load_library("libAthExThinningEventDict")
49 from RootUtils import PyROOTFixes # noqa: 401
50 self.filter = self.Filter
51 return StatusCode.Success
52
void initialize()

◆ 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.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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.

◆ reinitialize()

StatusCode Alg::reinitialize ( )
overridevirtualinherited

Definition at line 67 of file PyAthenaAlg.cxx.

68{
69 ATH_MSG_INFO("Re-Initializing " << name() << "...");
70 return PyAthena::callPyMethod( m_self, "sysReinitialize" );
71}
#define ATH_MSG_INFO(x)
PyObject * m_self
Pointer to self (from the python world)
Definition PyAthenaAlg.h:96

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ self()

virtual PyObject * PyAthena::Alg::self ( )
inlineoverridevirtualinherited

return associated python object.

BORROWED reference.

Implements IPyComponent.

Definition at line 71 of file PyAthenaAlg.h.

71{ return m_self; }

◆ setPyAttr()

bool Alg::setPyAttr ( PyObject * pyobj)
overrideprotectedvirtualinherited

attach the C++ component to its python cousin

Implements IPyComponent.

Definition at line 143 of file PyAthenaAlg.cxx.

144{
145 // now we tell the PyObject which C++ object it is the cousin of.
146 RootUtils::PyGILStateEnsure ensure;
147 PyObject* pyobj = TPython::CPPInstance_FromVoidPtr
148 ( (void*)this, this->typeName() );
149 if ( !pyobj ) {
150 PyErr_Clear();
151 // try PyAthena::Alg
152 pyobj = TPython::CPPInstance_FromVoidPtr ((void*)this, "PyAthena::Alg");
154 ("could not dyncast component [" << name() << "] to a python "
155 << "object of type [" << this->typeName() << "] (probably a missing "
156 << "dictionary)" << endmsg
157 << "fallback to [PyAthena::Alg]...");
158 }
159 if ( !pyobj ) {
160 PyErr_Clear();
161 ATH_MSG_WARNING("Could not dyncast component ["
162 << name() << "] to a pyobject of type ["
163 << this->typeName() << "]");
164 } else {
165 if ( -1 == PyObject_SetAttrString(o, "_cppHandle", pyobj) ) {
166 PyErr_Clear();
168 ("Could not attach C++ handle [" << name() << "] to its python "
169 << "cousin !");
170 if ( -1 == PyObject_SetAttrString(o, "_cppHandle", Py_None) ) {
171 PyErr_Clear();
173 ("could not attach a dummy C++ handle [" << name() << "] to its "
174 "python cousin !");
175 }
176 } else {
177 return true;
178 }
179 }
180 return false;
181}
#define endmsg
#define ATH_MSG_WARNING(x)
_object PyObject
virtual const char * typeName() const override
return the std::type_info name of the underlying py-component This is used by concrete implementation...

◆ start()

StatusCode Alg::start ( )
overridevirtualinherited

Definition at line 74 of file PyAthenaAlg.cxx.

75{
76 return PyAthena::callPyMethod( m_self, "sysStart" );
77}

◆ stop()

StatusCode Alg::stop ( )
overridevirtualinherited

Definition at line 80 of file PyAthenaAlg.cxx.

81{
82 return PyAthena::callPyMethod( m_self, "sysStop" );
83}

◆ sysInitialize()

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

Definition at line 105 of file PyAthenaAlg.cxx.

106{
107 ServiceHandle<IPyComponentMgr> pyMgr
108 ( "PyAthena::PyComponentMgr/PyComponentMgr", name() );
109 if ( !pyMgr.retrieve().isSuccess() ) {
110 ATH_MSG_ERROR("Could not retrieve service [" << pyMgr.typeAndName()
111 << "] !!");
112 return StatusCode::FAILURE;
113 }
114
115 // first retrieve our python object cousin...
116 m_self = pyMgr->pyObject( this );
117
118 if ( m_self == Py_None ) {
119 ATH_MSG_ERROR("Wrapped PyObject is NONE !");
120 return StatusCode::FAILURE;
121 }
122
123 // re-route to usual sysInit...
125}
#define ATH_MSG_ERROR(x)
virtual StatusCode sysInitialize() override
Override sysInitialize.

◆ 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.

◆ test()

python.Lib.PyWriteThinnedData.test ( self,
testName )

Definition at line 63 of file AthenaExamples/AthExThinning/python/Lib.py.

63 def test(self, testName):
64 self.msg.info( "Performing thinning test [%s]...", testName )
65
66 # fetch particles
67 particlesName = "%s_%s" % (self.Particles,testName)
68 particles = self.sg.retrieve( "AthExParticles", particlesName )
69 if particles is None:
70 self.msg.warning( "Could not fetch particles at [%s] !!",
71 self.Particles )
72 return StatusCode.Failure
73 self.msg.info( "particles: %i", particles.size() )
74
75 # fetch iparticles
76 iparticles = self.sg.retrieve( "AthExIParticles", particlesName )
77 if iparticles is None:
78 self.msg.warning( "Could not fetch iparticles at [%s] !!",
79 self.Particles )
80 return StatusCode.Failure
81 self.msg.info( "iparticles: %i", iparticles.size() )
82
83 if ( iparticles.size() != particles.size() or
84 iparticles.at(0).px() != particles.at(0).px() ):
85 self.msg.error( "symlinked containers are corrupted: " )
86 self.msg.error( " #iparticles: %i", iparticles.size() )
87 self.msg.error( " # particles: %i", particles.size() )
88 self.msg.error( " ipx[0] = %r", iparticles.at(0).px() )
89 self.msg.error( " px[0] = %r", particles.at(0).px() )
90 return StatusCode.Failure
91
92 # fetch decay
93 decay = self.sg.retrieve( "AthExDecay",
94 "%s_%s" % (self.Decay, testName) )
95 if decay is None:
96 self.msg.warning( "Could not fetch Decay at [%s] !!",
97 self.Decay )
98 return StatusCode.Failure
99
100 # fetch elephantino
101 elephantino = self.sg.retrieve( "AthExElephantino",
102 "%s_%s" % (self.Elephantino, testName) )
103 if elephantino is None:
104 self.msg.warning( "Could not fetch Elephantino at [%s] !!",
105 self.Elephantino )
106 return StatusCode.Failure
107
108 self.msg.info( "IN particles: %i", particles.size() )
109 self.msg.info( "IN decay:" )
110 self.msg.info( " p1: px= %r", decay.p1().px() / Units.GeV )
111 self.msg.info( " p2: px= %r", decay.p2().px() / Units.GeV )
112 self.msg.info( " l1: px= %r", decay.l1().px() / Units.GeV )
113 self.msg.info( " l2: px= %r", decay.l2().px() / Units.GeV )
114
115 self.msg.info( "IN elephantino:" )
116 self.msg.info( " leg1: px= %r", elephantino.leg1().px() / Units.GeV )
117 self.msg.info( " leg2: px= %r", elephantino.leg2().px() / Units.GeV )
118 self.msg.info( " leg3: px= %r", elephantino.leg3().px() / Units.GeV )
119 self.msg.info( " leg4: px= %r", elephantino.leg4().px() / Units.GeV )
120 self.msg.info( " ear1: px= %r", elephantino.ear1().px() / Units.GeV )
121 self.msg.info( " ear2: px= %r", elephantino.ear2().px() / Units.GeV )
122
123
124 dec = ROOT.SG.ThinningDecision (particlesName)
125 if testName == "test1":
126 if self.doThinningTest1( particles, dec) != StatusCode.Success:
127 self.msg.warning( "Could not exercize Thinning !!" )
128 elif testName == "test2":
129 if self.doThinningTest2( particles, dec) != StatusCode.Success:
130 self.msg.warning( "Could not exercize Thinning !!" )
131 elif testName == "test3":
132 if self.doThinningTest3(iparticles, dec) != StatusCode.Success:
133 self.msg.warning( "Could not exercize Thinning !!" )
134 else:
135 self.msg.error( "Unknown test [%s]", testName )
136 return StatusCode.Failure
137 dec.lock()
138 if not self.sg.record (dec, particlesName + '_THINNED_StreamUSR_0'):
139 return StatusCode.Failure
140 ROOT.SetOwnership (dec, False)
141
142 self.msg.info( "Decay is now:" )
143 self.msg.info( " p1: px= %r", decay.p1().px() / Units.GeV )
144 self.msg.info( " p2: px= %r", decay.p2().px() / Units.GeV )
145 self.msg.info( " l1: px= %r", decay.l1().px() / Units.GeV )
146 self.msg.info( " l2: px= %r", decay.l2().px() / Units.GeV )
147
148 self.msg.info( "Elephantino is now: " )
149 self.msg.info( " leg1: px= %r", elephantino.leg1().px() / Units.GeV )
150 self.msg.info( " leg2: px= %r", elephantino.leg2().px() / Units.GeV )
151 self.msg.info( " leg3: px= %r", elephantino.leg3().px() / Units.GeV )
152 self.msg.info( " leg4: px= %r", elephantino.leg4().px() / Units.GeV )
153 self.msg.info( " ear1: px= %r", elephantino.ear1().px() / Units.GeV )
154 self.msg.info( " ear2: px= %r", elephantino.ear2().px() / Units.GeV )
155
156 self.msg.info( "[%s] has been performed.", testName )
157 return StatusCode.Success
158

◆ typeName()

const char * Alg::typeName ( ) const
overridevirtualinherited

return the std::type_info name of the underlying py-component This is used by concrete implementations to connect a python component to its C++ counter-part

Implements IPyComponent.

Definition at line 132 of file PyAthenaAlg.cxx.

133{
134 static const std::string tname = System::typeinfoName(typeid(*this));
135 return tname.c_str();
136}

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ Decay

python.Lib.PyWriteThinnedData.Decay = kw.get('Decay', "TwoBodyDecay")

Definition at line 37 of file AthenaExamples/AthExThinning/python/Lib.py.

◆ Elephantino

python.Lib.PyWriteThinnedData.Elephantino = kw.get('Elephantino', "PinkElephantino")

Definition at line 38 of file AthenaExamples/AthExThinning/python/Lib.py.

◆ Filter

python.Lib.PyWriteThinnedData.Filter = kw.get('Filter', [False]*10)

Definition at line 39 of file AthenaExamples/AthExThinning/python/Lib.py.

◆ filter

python.Lib.PyWriteThinnedData.filter = self.Filter

Datavector stuff.

Definition at line 50 of file AthenaExamples/AthExThinning/python/Lib.py.

◆ 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_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_self

PyObject* PyAthena::Alg::m_self
protectedinherited

Pointer to self (from the python world)

Definition at line 96 of file PyAthenaAlg.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.

◆ name

python.Lib.PyWriteThinnedData.name

Definition at line 42 of file AthenaExamples/AthExThinning/python/Lib.py.

◆ Particles

python.Lib.PyWriteThinnedData.Particles = kw.get('Particles', "Particles")

Definition at line 36 of file AthenaExamples/AthExThinning/python/Lib.py.

◆ sg

python.Lib.PyWriteThinnedData.sg = PyAthena.py_svc("StoreGateSvc")

storegate

Definition at line 44 of file AthenaExamples/AthExThinning/python/Lib.py.


The documentation for this class was generated from the following file: