| The Gaudi Framework v32r1 (f65d50dc)

Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
Gaudi::ParticlePropertySvc Class Reference

This service provides access to particle properties. More...

`#include <src/ParticlePropertySvc.h>`

Inheritance diagram for Gaudi::ParticlePropertySvc:
[legend]
Collaboration diagram for Gaudi::ParticlePropertySvc:
[legend]

## Public Types
typedef ParticleProperty * | mapped_type
typedef std::map< int, mapped_type > | MapID
typedef std::map< std::string, mapped_type > | MapName
typedef std::map< int, mapped_type > | MapStdHepID
typedef std::map< int, mapped_type > | MapPythiaID
typedef VectPP::const_iterator | const_iterator
typedef VectPP::iterator | iterator
typedef std::vector< ParticleProperty * > | VectPP
Public Types inherited from extends< Service, IParticlePropertySvc >
using | base_class = extends
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
Public Types inherited from Service
using | Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)>
Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using | base_class = CommonMessaging
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...

## Public Member Functions
StatusCode | initialize () override
| Initialise the service. More...
StatusCode | finalize () override
| Finalise the service. More...
StatusCode | push_back (const std::string &particle, int geantId, int jetsetId, double charge, double mass, double tlife, const std::string &evtName, int pythiaId, double maxWidth) override
| Create a new particle property. More...
StatusCode | push_back (ParticleProperty *pp) override
| Add a new particle property. More...
const_iterator | begin () const override
| Get a const reference to the beginning of the container. More...
const_iterator | end () const override
| Get a const reference to the end of the container. More...
int | size () const override
| Get the container size. More...
ParticleProperty * | find (int geantId) override
| Retrieve a property by geant3 id. More...
ParticleProperty * | find (const std::string &name) override
| Retrieve a property by particle name. More...
ParticleProperty * | findByStdHepID (int stdHepId) override
| Retrieve a property by StdHep id. More...
ParticleProperty * | findByPythiaID (int pythiaID) override
| Retrieve a property by Pythia id. More...
StatusCode | erase (int geantId) override
| Erase a property by geant3 id. More...
StatusCode | erase (const std::string &name) override
| Erase a property by particle name. More...
StatusCode | eraseByStdHepID (int stdHepId) override
| Erase a property by StdHep id ??? More...
| ParticlePropertySvc (const std::string &name, ISvcLocator *svc)
| Standard Constructor. More...
Public Member Functions inherited from extends< Service, IParticlePropertySvc >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
| Declare used tool. More...
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| PropertyHolder ()=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
| Helper to wrap a regular data member and use it as a regular property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
| Declare a PropertyBase instance setting name and documentation. More...
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &n, std::string &v) const override
| convert the property to the string More...
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override
| get all properties More...
bool | hasProperty (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Public Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | msgLevel () const
| get the cached level (originally extracted from the embedded MsgStream) More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const
| Backward compatibility function for getting the output level. More...
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
const SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...

## Protected Member Functions
const ParticleProperty * | anti (const ParticleProperty *pp) const
| helper (protected) function to find an antiparticle for the given particle ID (StdHepID) More...
StatusCode | setAntiParticles ()
| helper (protected) function to set the valid particle<-->antiparticle relations More...
StatusCode | rebuild ()
| rebuild "the linear container" from the map More...
StatusCode | erase (const ParticleProperty *pp)
| remove particle property from all maps More...
StatusCode | parse (const std::string &file)
| parse the file More...
StatusCode | parse ()
| Parses the file and fill all the maps. More...
StatusCode | addParticles ()
bool | diff (const ParticleProperty *o, const ParticleProperty *n, const MSG::Level l=MSG::DEBUG) const
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | setUpMessaging () const
| Set up local caches. More...
MSG::Level | resetMessaging ()
| Reinitialize internal states. More...
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Private Attributes
Gaudi::Property< std::string > | m_filename
Gaudi::Property< std::vector< std::string > > | m_other {this, "OtherFiles", {}, "additional file names"}
Gaudi::Property< std::vector< std::string > > | m_particles
VectPP | m_vectpp
| Vector of all particle properties. More...
MapID | m_idmap
| Map for geant IDs. More...
MapName | m_namemap
| Map for particle names. More...
MapStdHepID | m_stdhepidmap
| Map for StdHep Ids. More...
MapPythiaID | m_pythiaidmap
| Map for Pythia Ids. More...
std::set< std::unique_ptr< ParticleProperty > > | m_owned
std::set< std::string > | m_replaced
SmartIF< IFileAccess > | m_fileAccess

## Additional Inherited Members
Protected Attributes inherited from Service
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::Property< int > | m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"}
Gaudi::Property< bool > | m_auditInit {this, "AuditServices", false, " unused"}
Gaudi::Property< bool > | m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"}
Gaudi::Property< bool > | m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"}
Gaudi::Property< bool > | m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"}
Gaudi::Property< bool > | m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"}
Gaudi::Property< bool > | m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"}
Gaudi::Property< bool > | m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"}
SmartIF< IAuditorSvc > | m_pAuditorSvc
| Auditor Service. More...

## Detailed Description

This service provides access to particle properties.

The settable property of this service is the ParticlePropertiesFile, an ASCII file containing the list of properties for the particles. The default file is: "$PARAMFILESROOT/data/ParticleTable.txt" or if $PARAMFILESROOT is not defined "ParticleTable.txt"

Author
  Iain Last
  Gloria Corti 8/11/1999 change default file from $CDF/particle.cdf to $LHCBDBASE/cdf/particle.cdf on Unix and use environment variable also on WinNT Also introduce finding of particle by StdHepID
  Vanya BELYAEV

Date
  2006-09-22 1) Modified to add possibility to redefine properties of existing particles and to read additional files. New property "OtherFiles" (default is empty vector) is introduces. Service parsed additional files after the main one.

// read additional properties
ParticlePropertySvc.OtherFiles = {
"$SOMELOCATION1/file1.txt" ,
"$SOMELOCATION2/file2.txt"
} ;

2) Add possibility to modify only certain particles through the new property "Particles" (default is empty list), Each line is interpreted as a line in particle data table, e.g.

// redefine the properties of H_20 and H_30 particles:
ParticlePropertySvc.Particles = {
"H_20 88 35 0.0 120.0 9.4e-26 Higgs'0 35 0.0e+00" ,
"H_30 89 36 0.0 40.0 1.0e-12 A0 36 0.0e+00"
} ;

The replaces/modified particles are reported.

Definition at line 71 of file ParticlePropertySvc.h.

## Member Typedef Documentation

## ◆ const_iterator

typedef VectPP::const_iterator IParticlePropertySvc::const_iterator

Definition at line 26 of file IParticlePropertySvc.h.

## ◆ iterator

typedef VectPP::iterator IParticlePropertySvc::iterator

Definition at line 27 of file IParticlePropertySvc.h.

## ◆ MapID

typedef std::map<int, mapped_type> Gaudi::ParticlePropertySvc::MapID

Definition at line 75 of file ParticlePropertySvc.h.

## ◆ MapName

typedef std::map<std::string, mapped_type> Gaudi::ParticlePropertySvc::MapName

Definition at line 76 of file ParticlePropertySvc.h.

## ◆ mapped_type

typedef ParticleProperty* Gaudi::ParticlePropertySvc::mapped_type

Definition at line 74 of file ParticlePropertySvc.h.

## ◆ MapPythiaID

typedef std::map<int, mapped_type> Gaudi::ParticlePropertySvc::MapPythiaID

Definition at line 78 of file ParticlePropertySvc.h.

## ◆ MapStdHepID

typedef std::map<int, mapped_type> Gaudi::ParticlePropertySvc::MapStdHepID

Definition at line 77 of file ParticlePropertySvc.h.

## ◆ VectPP

typedef std::vector<ParticleProperty*> IParticlePropertySvc::VectPP

Definition at line 25 of file IParticlePropertySvc.h.

## Constructor & Destructor Documentation

## ◆ ParticlePropertySvc()

Gaudi::ParticlePropertySvc::ParticlePropertySvc | ( | const std::string & | name,
|  | ISvcLocator * | svc
| ) |  |

Standard Constructor.

Parameters

  name | String with service name
  svc | Pointer to service locator interface

Todo:
  : remove reference to LHCb-specific environment variable

Definition at line 46 of file ParticlePropertySvc.cpp.

46 : base_class( name, svc ) {
48 // Redefine the default name:
49 if ( System::getEnv( "PARAMFILESROOT", m_filename.value() ) ) { m_filename.value() += "/data/ParticleTable.txt"; }
50 }
System::getEnv
GAUDI_API std::string getEnv(const char *var)
get a particular environment variable (returning "UNKNOWN" if not set)
Definition: System.cpp:369
extends< Service, IParticlePropertySvc >::base_class
extends base_class
Typedef to this class.
Definition: extends.h:14
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
Gaudi::ParticlePropertySvc::m_filename
Gaudi::Property< std::string > m_filename
Definition: ParticlePropertySvc.h:160

## Member Function Documentation

## ◆ addParticles()

StatusCode Gaudi::ParticlePropertySvc::addParticles | ( |  | ) |
| protected

Definition at line 338 of file ParticlePropertySvc.cpp.

338 {
339 // loop over all "explicit" particles
340 for ( const auto& item : m_particles ) {
341 std::istringstream input( item );
342 // get the name
343 std::string p_name;
344 int p_geant;
345 int p_jetset;
346 double p_charge;
347 double p_mass;
348 double p_ltime;
349 std::string p_evtgen;
350 int p_pythia;
351 double p_maxwid;
352 if ( input >> p_name >> p_geant >> p_jetset >> p_charge >> p_mass >> p_ltime >> p_evtgen >> p_pythia >>
353 p_maxwid ) {
354 always() << " Add/Modify the particle: "
355 << " name='" << p_name << "'"
356 << " geant=" << p_geant << " jetset=" << p_jetset << " charge=" << p_charge << " mass=" << p_mass
357 << " ltime=" << p_ltime << " evtgen='" << p_evtgen << "'"
358 << " pythia=" << p_pythia << " maxwid=" << p_maxwid << endmsg;
359 //
360 StatusCode sc = push_back( p_name, p_geant, p_jetset, p_charge, p_mass * Gaudi::Units::GeV,
361 p_ltime * Gaudi::Units::s, p_evtgen, p_pythia, p_maxwid * Gaudi::Units::GeV );
362 if ( sc.isFailure() ) { return sc; } // RETURN
363 } else {
364 error() << " could not parse '" << item << "'" << endmsg;
365 return StatusCode::FAILURE; // RETURN
366 }
367 }
368 //
369 return StatusCode::SUCCESS;
370 }
Gaudi::Units::s
constexpr double s
Definition: SystemOfUnits.h:133
std::istringstream
STL class.
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
CommonMessagingBase::always
MsgStream & always() const
shortcut for the method msgStream(MSG::ALWAYS)
Definition: CommonMessaging.h:89
Gaudi::ParticlePropertySvc::push_back
StatusCode push_back(const std::string &particle, int geantId, int jetsetId, double charge, double mass, double tlife, const std::string &evtName, int pythiaId, double maxWidth) override
Create a new particle property.
Definition: ParticlePropertySvc.cpp:123
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::ParticlePropertySvc::m_particles
Gaudi::Property< std::vector< std::string > > m_particles
Definition: ParticlePropertySvc.h:163
Gaudi::Units::GeV
constexpr double GeV
Definition: SystemOfUnits.h:159
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ anti()

const ParticleProperty * Gaudi::ParticlePropertySvc::anti | ( | const ParticleProperty * | pp | ) | const
| protected

helper (protected) function to find an antiparticle for the given particle ID (StdHepID)

Helper (protected) function to find an antiparticle for the given particle ID (StdHepID)

Parameters

  pp | pointer to particle property

Returns
  pointer to antiparticle

Definition at line 286 of file ParticlePropertySvc.cpp.

286 {
287 if ( !pp ) { return nullptr; }
288 const int ID = pp->pdgID();
289 const int antiID = -1 * ID;
290 for ( const auto& ap : m_vectpp ) {
291 if ( ap && antiID == ap->pdgID() ) { return ap; } // RETURN
292 };
293 //
294 return pp; // RETURN
295 }
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:495
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:166

## ◆ begin()

const_iterator Gaudi::ParticlePropertySvc::begin | ( |  | ) | const
| inline override

Get a const reference to the beginning of the container.

Definition at line 109 of file ParticlePropertySvc.h.

109 { return m_vectpp.begin(); }
std::vector::begin
T begin(T... args)
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:166

## ◆ diff()

bool Gaudi::ParticlePropertySvc::diff | ( | const ParticleProperty * | o,
|  | const ParticleProperty * | n,
|  | const MSG::Level | l = `MSG::DEBUG`
| ) |  | const
| protected

Definition at line 378 of file ParticlePropertySvc.cpp.

378 {
379 //
380 if ( o == n ) { return false; }
381 //
382 auto& log = msgStream();
383 log << l;
384 if ( !o || !n ) {
385 log << MSG::WARNING << " ParticleProperty* point to NULL" << endmsg;
386 return true; // RETURN
387 }
388 //
389 bool result = false;
390 if ( o->particle() != n->particle() ) {
391 result = true;
392 log << " Name:'" << o->particle() << "'/'" << n->particle() << "'";
393 }
394 if ( o->geantID() != n->geantID() ) {
395 result = true;
396 log << " G3ID:" << o->geantID() << "/" << n->geantID() << "'";
397 }
398 if ( o->pdgID() != n->pdgID() ) {
399 result = true;
400 log << " PDGID:" << o->pdgID() << "/" << n->pdgID() << "'";
401 }
402 if ( o->pythiaID() != n->pythiaID() ) {
403 result = true;
404 log << " PYID:" << o->pythiaID() << "/" << n->pythiaID() << "'";
405 }
406 if ( o->charge() != n->charge() ) {
407 result = true;
408 log << " Q:" << o->charge() << "/" << n->charge() << "'";
409 }
410 if ( o->mass() != n->mass() ) {
411 result = true;
412 log << " M:" << o->mass() << "/" << n->mass() << "'";
413 }
414 if ( o->lifetime() != n->lifetime() ) {
415 result = true;
416 log << " T:" << o->lifetime() << "/" << n->lifetime() << "'";
417 }
418 if ( o->evtGenName() != n->evtGenName() ) {
419 result = true;
420 log << " EvtGen:" << o->evtGenName() << "/" << n->evtGenName() << "'";
421 }
422 if ( o->maxWidth() != n->maxWidth() ) {
423 result = true;
424 log << " WMAX:" << o->maxWidth() << "/" << n->maxWidth() << "'";
425 }
426 if ( result ) { log << endmsg; }
427 //
428 return result;
429 }
ParticleProperty::pythiaID
int pythiaID() const
Get the Pythia ID.
Definition: ParticleProperty.h:87
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
ParticleProperty::maxWidth
double maxWidth() const
Get the max width deviation.
Definition: ParticleProperty.h:93
ParticleProperty::pdgID
int pdgID() const
Get the PDG (= JETSET) ID.
Definition: ParticleProperty.h:51
CommonMessagingBase::msgStream
MsgStream & msgStream() const
Return an uninitialized MsgStream.
Definition: CommonMessaging.h:71
gaudirun.l
dictionary l
Definition: gaudirun.py:521
ParticleProperty::evtGenName
const std::string & evtGenName() const
Get the EvtGen name.
Definition: ParticleProperty.h:81
ParticleProperty::geantID
int geantID() const
Get the GEANT3 ID.
Definition: ParticleProperty.h:45
MSG::WARNING
Definition: IMessageSvc.h:15
ParticleProperty::particle
const std::string & particle() const
Get the particle name.
Definition: ParticleProperty.h:39
ParticleProperty::mass
double mass() const
Get the particle mass.
Definition: ParticleProperty.h:69
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
ParticleProperty::lifetime
double lifetime() const
Get the particle lifetime.
Definition: ParticleProperty.h:75
ParticleProperty::charge
double charge() const
Get the particle charge.
Definition: ParticleProperty.h:63
Gaudi.Configuration.log
log
Definition: Configuration.py:13

## ◆ end()

const_iterator Gaudi::ParticlePropertySvc::end | ( |  | ) | const
| inline override

Get a const reference to the end of the container.

Definition at line 111 of file ParticlePropertySvc.h.

111 { return m_vectpp.end(); }
std::vector::end
T end(T... args)
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:166

## ◆ erase() [1/3]

StatusCode Gaudi::ParticlePropertySvc::erase | ( | int | geantId | ) |
| inline override

Erase a property by geant3 id.

Definition at line 123 of file ParticlePropertySvc.h.

123 { return erase( find( geantId ) ); }
Gaudi::ParticlePropertySvc::erase
StatusCode erase(int geantId) override
Erase a property by geant3 id.
Definition: ParticlePropertySvc.h:123
Gaudi::ParticlePropertySvc::find
ParticleProperty * find(int geantId) override
Retrieve a property by geant3 id.
Definition: ParticlePropertySvc.h:115

## ◆ erase() [2/3]

StatusCode Gaudi::ParticlePropertySvc::erase | ( | const std::string & | name | ) |
| inline override

Erase a property by particle name.

Definition at line 125 of file ParticlePropertySvc.h.

125 { return erase( find( name ) ); }
Gaudi::ParticlePropertySvc::erase
StatusCode erase(int geantId) override
Erase a property by geant3 id.
Definition: ParticlePropertySvc.h:123
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
Gaudi::ParticlePropertySvc::find
ParticleProperty * find(int geantId) override
Retrieve a property by geant3 id.
Definition: ParticlePropertySvc.h:115

## ◆ erase() [3/3]

StatusCode Gaudi::ParticlePropertySvc::erase | ( | const ParticleProperty * | pp | ) |
| protected

remove particle property from all maps

Definition at line 204 of file ParticlePropertySvc.cpp.

204 {
205 if ( !pp ) { return StatusCode::FAILURE; }
206
207 _remove_( m_idmap, pp );
208 _remove_( m_namemap, pp );
209 _remove_( m_stdhepidmap, pp );
210 _remove_( m_pythiaidmap, pp );
211 //
212 return rebuild();
213 }
Gaudi::ParticlePropertySvc::rebuild
StatusCode rebuild()
rebuild "the linear container" from the map
Definition: ParticlePropertySvc.cpp:322
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:168
Gaudi::ParticlePropertySvc::m_stdhepidmap
MapStdHepID m_stdhepidmap
Map for StdHep Ids.
Definition: ParticlePropertySvc.h:169
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:495
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::ParticlePropertySvc::m_idmap
MapID m_idmap
Map for geant IDs.
Definition: ParticlePropertySvc.h:167
Gaudi::ParticlePropertySvc::m_pythiaidmap
MapPythiaID m_pythiaidmap
Map for Pythia Ids.
Definition: ParticlePropertySvc.h:170

## ◆ eraseByStdHepID()

StatusCode Gaudi::ParticlePropertySvc::eraseByStdHepID | ( | int | stdHepId | ) |
| inline override

Erase a property by StdHep id ???

Definition at line 127 of file ParticlePropertySvc.h.

127 { return erase( findByStdHepID( stdHepId ) ); }
Gaudi::ParticlePropertySvc::erase
StatusCode erase(int geantId) override
Erase a property by geant3 id.
Definition: ParticlePropertySvc.h:123
Gaudi::ParticlePropertySvc::findByStdHepID
ParticleProperty * findByStdHepID(int stdHepId) override
Retrieve a property by StdHep id.
Definition: ParticlePropertySvc.h:119

## ◆ finalize()

StatusCode Gaudi::ParticlePropertySvc::finalize | ( |  | ) |
| override

Finalise the service.

finalize

finalize the base class

Definition at line 105 of file ParticlePropertySvc.cpp.

105 {
106 if ( !m_other.empty() ) {
107 info() << "Additional Properties have been read from files: " << Gaudi::Utils::toString( m_other ) << endmsg;
108 }
109
110 if ( !m_replaced.empty() ) {
111 always() << "Properties have been redefined for " << m_replaced.size()
112 << " particles : " << Gaudi::Utils::toString( m_replaced ) << endmsg;
113 }
114
115 m_fileAccess.reset();
116
118 return Service::finalize();
119 }
std::set::empty
T empty(T... args)
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:164
Gaudi::Utils::toString
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
Definition: ToStream.h:334
CommonMessagingBase::always
MsgStream & always() const
shortcut for the method msgStream(MSG::ALWAYS)
Definition: CommonMessaging.h:89
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:104
Gaudi::ParticlePropertySvc::m_fileAccess
SmartIF< IFileAccess > m_fileAccess
Definition: ParticlePropertySvc.h:176
Gaudi::ParticlePropertySvc::m_replaced
std::set< std::string > m_replaced
Definition: ParticlePropertySvc.h:174
std::set::size
T size(T... args)
Gaudi::ParticlePropertySvc::m_other
Gaudi::Property< std::vector< std::string > > m_other
Definition: ParticlePropertySvc.h:162
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:86
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ find() [1/2]

ParticleProperty* Gaudi::ParticlePropertySvc::find | ( | int | geantId | ) |
| inline override

Retrieve a property by geant3 id.

Definition at line 115 of file ParticlePropertySvc.h.

115 { return m_idmap[geantId]; }
Gaudi::ParticlePropertySvc::m_idmap
MapID m_idmap
Map for geant IDs.
Definition: ParticlePropertySvc.h:167

## ◆ find() [2/2]

ParticleProperty* Gaudi::ParticlePropertySvc::find | ( | const std::string & | name | ) |
| inline override

Retrieve a property by particle name.

Definition at line 117 of file ParticlePropertySvc.h.

117 { return m_namemap[name]; }
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:168
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274

## ◆ findByPythiaID()

ParticleProperty* Gaudi::ParticlePropertySvc::findByPythiaID | ( | int | pythiaID | ) |
| inline override

Retrieve a property by Pythia id.

Definition at line 121 of file ParticlePropertySvc.h.

121 { return m_pythiaidmap[pythiaID]; }
Gaudi::ParticlePropertySvc::m_pythiaidmap
MapPythiaID m_pythiaidmap
Map for Pythia Ids.
Definition: ParticlePropertySvc.h:170

## ◆ findByStdHepID()

ParticleProperty* Gaudi::ParticlePropertySvc::findByStdHepID | ( | int | stdHepId | ) |
| inline override

Retrieve a property by StdHep id.

Definition at line 119 of file ParticlePropertySvc.h.

119 { return m_stdhepidmap[stdHepId]; }
Gaudi::ParticlePropertySvc::m_stdhepidmap
MapStdHepID m_stdhepidmap
Map for StdHep Ids.
Definition: ParticlePropertySvc.h:169

## ◆ initialize()

StatusCode Gaudi::ParticlePropertySvc::initialize | ( |  | ) |
| override

Initialise the service.

initialize the service and setProperties

Definition at line 54 of file ParticlePropertySvc.cpp.

54 {
55 StatusCode sc = Service::initialize();
56 if ( sc.isFailure() ) { return sc; }
57
58 sc = setProperties();
59 if ( sc.isFailure() ) {
60 error() << " Could not set the properties " << endmsg;
61 return sc;
62 }
63
64 m_fileAccess = service( "VFSSvc" );
65 if ( !m_fileAccess ) {
66 error() << " Cannot retrieve the VFS service " << endmsg;
67 return StatusCode::FAILURE;
68 }
69
70 sc = parse();
71 if ( sc.isFailure() ) {
72 error() << " Could not parse the file " << endmsg;
73 return sc;
74 }
75 if ( !m_particles.empty() ) {
76 sc = addParticles();
77 if ( sc.isFailure() ) {
78 error() << " Could not treat particles! " << endmsg;
79 return sc;
80 }
81 }
82 debug() << "ParticleProperties parsed successfully" << endmsg;
83
84 debug() << "Access properties" << endmsg;
85 // For debugging purposes print out the size of the internal maps
86 // particle name as key: all particles in database are present here
87 debug() << "NameMap size =" << m_namemap.size() << endmsg;
88 // Geant3 ID as key: all particles in database are present here
89 debug() << "GeantID Map size =" << m_idmap.size() << endmsg;
90 // StdHep ID as key: some particles have no valid StdHep ID
91 debug() << "StdHepID Map size =" << m_stdhepidmap.size() << endmsg;
92 // Pythia ID as key: some particles are not defined in Pythia
93 debug() << "PythiaID Map size =" << m_pythiaidmap.size() << endmsg;
94
95 if ( !m_replaced.empty() ) {
96 info() << "Properties have been redefined for " << m_replaced.size()
97 << " particles : " << Gaudi::Utils::toString( m_replaced ) << endmsg;
98 }
99
100 return StatusCode::SUCCESS;
101 }
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:60
std::set::empty
T empty(T... args)
Gaudi::Utils::toString
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
Definition: ToStream.h:334
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:168
Gaudi::ParticlePropertySvc::parse
StatusCode parse()
Parses the file and fill all the maps.
Definition: ParticlePropertySvc.cpp:217
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:104
Gaudi::ParticlePropertySvc::m_fileAccess
SmartIF< IFileAccess > m_fileAccess
Definition: ParticlePropertySvc.h:176
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
Gaudi::ParticlePropertySvc::m_replaced
std::set< std::string > m_replaced
Definition: ParticlePropertySvc.h:174
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:107
Service::setProperties
StatusCode setProperties()
Method for setting declared properties to the values specified for the job.
Definition: Service.cpp:280
Gaudi::ParticlePropertySvc::m_stdhepidmap
MapStdHepID m_stdhepidmap
Map for StdHep Ids.
Definition: ParticlePropertySvc.h:169
std::map::size
T size(T... args)
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::ParticlePropertySvc::addParticles
StatusCode addParticles()
Definition: ParticlePropertySvc.cpp:338
Gaudi::ParticlePropertySvc::m_idmap
MapID m_idmap
Map for geant IDs.
Definition: ParticlePropertySvc.h:167
Service::service
StatusCode service(const std::string &name, const T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn't already exist.
Definition: Service.h:83
Gaudi::ParticlePropertySvc::m_particles
Gaudi::Property< std::vector< std::string > > m_particles
Definition: ParticlePropertySvc.h:163
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi::ParticlePropertySvc::m_pythiaidmap
MapPythiaID m_pythiaidmap
Map for Pythia Ids.
Definition: ParticlePropertySvc.h:170

## ◆ parse() [1/2]

StatusCode Gaudi::ParticlePropertySvc::parse | ( | const std::string & | file | ) |
| protected

parse the file

Definition at line 240 of file ParticlePropertySvc.cpp.

240 {
241 auto infile = ( m_fileAccess ? m_fileAccess->open( file ) : nullptr );
242 if ( !infile ) {
243 error() << "Unable to open properties file : " << file << endmsg;
244 return StatusCode::FAILURE;
245 }
246
247 StatusCode sc = StatusCode::SUCCESS;
248 info() << "Opened particle properties file : " << file << endmsg;
249
250 std::vector<std::string> tokens;
251 tokens.reserve( 9 );
252 std::string line;
253 while ( std::getline( *infile, line ) ) {
254 // parse each line of the file (comment lines begin with # in the cdf
255 // file,
256 if ( line.front() == '#' ) continue;
257
258 tokens.clear();
259 ba::trim_left_if( line, ba::is_space() );
260 ba::split( tokens, line, ba::is_space(), boost::token_compress_on );
261 if ( tokens.size() != 9 ) continue;
262
263 auto gid = std::stoi( tokens[1] );
264 auto jid = std::stoi( tokens[2] );
265 // Change the particles that do not correspond to a pdg number
266 if ( jid == 0 ) jid = 10000000 * gid;
267
268 // add a particle property
269 sc = push_back( tokens[0], gid, jid, std::stod( tokens[3] ), std::stod( tokens[4] ) * Gaudi::Units::GeV,
270 std::stod( tokens[5] ) * Gaudi::Units::s, tokens[6], std::stoi( tokens[7] ),
271 std::stod( tokens[8] ) * Gaudi::Units::GeV );
272
273 if ( sc.isFailure() ) {
274 error() << "Error from ParticlePropertySvc::push_back for particle='" << tokens[0] << "'" << endmsg;
275 }
276 }
277 return StatusCode::SUCCESS;
278 }
Gaudi::Units::s
constexpr double s
Definition: SystemOfUnits.h:133
std::stod
T stod(T... args)
std::getline
T getline(T... args)
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:104
Gaudi::ParticlePropertySvc::m_fileAccess
SmartIF< IFileAccess > m_fileAccess
Definition: ParticlePropertySvc.h:176
Gaudi::ParticlePropertySvc::push_back
StatusCode push_back(const std::string &particle, int geantId, int jetsetId, double charge, double mass, double tlife, const std::string &evtName, int pythiaId, double maxWidth) override
Create a new particle property.
Definition: ParticlePropertySvc.cpp:123
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
std::vector::clear
T clear(T... args)
std::vector::size
T size(T... args)
std::vector< std::string >
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::Units::GeV
constexpr double GeV
Definition: SystemOfUnits.h:159
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
std::stoi
T stoi(T... args)
IFileAccess::open
virtual std::unique_ptr< std::istream > open(const std::string &url)=0
Find the URL and returns a unique_ptr to an input stream interface of an object that can be used to r...
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
plotSpeedupsPyRoot.line
line
Definition: plotSpeedupsPyRoot.py:170
std::vector::reserve
T reserve(T... args)

## ◆ parse() [2/2]

StatusCode Gaudi::ParticlePropertySvc::parse | ( |  | ) |
| protected

Parses the file and fill all the maps.

Definition at line 217 of file ParticlePropertySvc.cpp.

217 {
218
219 // parse "the main" file
220 StatusCode sc = parse( m_filename );
221 if ( sc.isFailure() ) { return sc; }
222
223 // parse "other" files
224 for ( auto& file : m_other ) {
225 sc = parse( file );
226 if ( sc.isFailure() ) { return sc; }
227 }
228
229 // Now check that the file format was consistent with what parser
230 // expected
231 if ( m_namemap.empty() ) {
232 error() << "Format of input file inconsistent with what expected"
233 << " - Check you are using ParticleData.txt" << endmsg;
234 return StatusCode::FAILURE;
235 }
236
237 return sc;
238 }
std::map::empty
T empty(T... args)
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:168
Gaudi::ParticlePropertySvc::parse
StatusCode parse()
Parses the file and fill all the maps.
Definition: ParticlePropertySvc.cpp:217
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Gaudi::ParticlePropertySvc::m_other
Gaudi::Property< std::vector< std::string > > m_other
Definition: ParticlePropertySvc.h:162
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::ParticlePropertySvc::m_filename
Gaudi::Property< std::string > m_filename
Definition: ParticlePropertySvc.h:160
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ push_back() [1/2]

StatusCode Gaudi::ParticlePropertySvc::push_back | ( | const std::string & | particle,
|  | int | geantId,
|  | int | jetsetId,
|  | double | charge,
|  | double | mass,
|  | double | tlife,
|  | const std::string & | evtName,
|  | int | pythiaId,
|  | double | maxWidth
| ) |  |
| override

Create a new particle property.

Create a particle property and insert it in the maps.

Attention
  ParticlePropertySvc IS the owner if this property! @paramparticle String name of the particle.

Parameters

  geantId | Geant3 ID of the particle.
  jetsetId | Jetset ID of the particle.
  charge | Particle charge (/e).
  mass | Particle mass (GeV).
  tlife | Particle lifetime (s).
  evtName | String name of the particle in EvtGen.
  pythiaId | Pythia ID of the particle.

Returns
  StatusCode - SUCCESS if the particle property was added.

Definition at line 123 of file ParticlePropertySvc.cpp.

125 {
126 //
127 auto i = m_owned.insert( std::make_unique<ParticleProperty>( particle, geantId, jetsetId, charge, mass, tlife,
128 evtName, pythiaId, maxWidth ) );
129 //
130 return i.second ? push_back( i.first->get() ) : StatusCode::FAILURE;
131 }
Gaudi::ParticlePropertySvc::push_back
StatusCode push_back(const std::string &particle, int geantId, int jetsetId, double charge, double mass, double tlife, const std::string &evtName, int pythiaId, double maxWidth) override
Create a new particle property.
Definition: ParticlePropertySvc.cpp:123
std::set::insert
T insert(T... args)
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::ParticlePropertySvc::m_owned
std::set< std::unique_ptr< ParticleProperty > > m_owned
Definition: ParticlePropertySvc.h:173

## ◆ push_back() [2/2]

StatusCode Gaudi::ParticlePropertySvc::push_back | ( | ParticleProperty * | pp | ) |
| override

Add a new particle property.

Add a particle property.

Attention
  ParticlePropertySvc is not the owner of this property!

Parameters

  pp,a | particle property class.

Returns
  StatusCode - SUCCESS if the particle property was added.

Definition at line 135 of file ParticlePropertySvc.cpp.

135 {
136 if ( !pp ) { return StatusCode::FAILURE; }
137 //
138 { // try to add into Geant(3)ID map
139 const int ID = pp->geantID();
140 // is this already in the map?
141 auto ifind = m_idmap.find( ID );
142 if ( m_idmap.end() != ifind && 0 != m_idmap[ID] ) {
143 diff( ifind->second, pp );
144 m_replaced.insert( m_idmap[ID]->particle() );
145 }
146 // put it into the map
147 m_idmap[ID] = pp;
148 }
149 //
150 { // try to add into Name map
151 const std::string& particle = pp->particle();
152 // is this already in the map?
153 auto ifind = m_namemap.find( particle );
154 if ( ifind != m_namemap.end() && ifind->second ) {
155 diff( ifind->second, pp );
156 m_replaced.insert( ifind->second->particle() );
157 }
158 // put it into the map
159 m_namemap[particle] = pp;
160 }
161 //
162 // add to StdHep map only if StdHep ID different from zero and if
163 // not Cerenkov (StdHep ID = gamma)
164 if ( 0 != pp->jetsetID() && "Tcherenkov" != pp->particle() ) { // try to add into StdHepID map
165 const int ID = pp->jetsetID();
166 // is this already in the map?
167 auto ifind = m_stdhepidmap.find( ID );
168 if ( m_stdhepidmap.end() != ifind && ifind->second ) {
169 diff( ifind->second, pp );
170 m_replaced.insert( ifind->second->particle() );
171 }
172 // put it into the map
173 m_stdhepidmap[ID] = pp;
174 }
175 //
176 // add to Pythia map only if Pythia ID is different from
177 // zero ( StdHep id is always different from zero in this case )
178 if ( 0 != pp->pythiaID() && 0 != pp->jetsetID() && "Tcherenkov" != pp->particle() ) { // try to add into PythiaID
179 // map
180 const int ID = pp->pythiaID();
181 // is this already in the map?
182 auto ifind = m_pythiaidmap.find( ID );
183 if ( m_pythiaidmap.end() != ifind && ifind->second ) {
184 diff( ifind->second, pp );
185 m_replaced.insert( ifind->second->particle() );
186 }
187 // put it into the map
188 m_pythiaidmap[ID] = pp;
189 }
190 //
191 return rebuild();
192 }
Gaudi::ParticlePropertySvc::diff
bool diff(const ParticleProperty *o, const ParticleProperty *n, const MSG::Level l=MSG::DEBUG) const
Definition: ParticlePropertySvc.cpp:378
Gaudi::ParticlePropertySvc::rebuild
StatusCode rebuild()
rebuild "the linear container" from the map
Definition: ParticlePropertySvc.cpp:322
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:168
std::map::end
T end(T... args)
std::string
STL class.
Gaudi::ParticlePropertySvc::m_replaced
std::set< std::string > m_replaced
Definition: ParticlePropertySvc.h:174
Gaudi::ParticlePropertySvc::m_stdhepidmap
MapStdHepID m_stdhepidmap
Map for StdHep Ids.
Definition: ParticlePropertySvc.h:169
std::set::insert
T insert(T... args)
std::map::find
T find(T... args)
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:495
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::ParticlePropertySvc::m_idmap
MapID m_idmap
Map for geant IDs.
Definition: ParticlePropertySvc.h:167
Gaudi::ParticlePropertySvc::m_pythiaidmap
MapPythiaID m_pythiaidmap
Map for Pythia Ids.
Definition: ParticlePropertySvc.h:170

## ◆ rebuild()

StatusCode Gaudi::ParticlePropertySvc::rebuild | ( |  | ) |
| protected

rebuild "the linear container" from the map

Definition at line 322 of file ParticlePropertySvc.cpp.

322 {
323 std::set<mapped_type> local;
324 m_vectpp.clear();
325 m_vectpp.reserve( m_idmap.size() + 100 );
326 // load information from maps into the set
327 _load_( m_idmap, local );
328 _load_( m_namemap, local );
329 _load_( m_stdhepidmap, local );
330 _load_( m_pythiaidmap, local );
331 // load information from set to the linear container vector
332 std::copy( std::begin( local ), std::end( local ), std::back_inserter( m_vectpp ) );
333 return setAntiParticles();
334 }
std::copy
T copy(T... args)
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:168
std::end
T end(T... args)
std::vector::clear
T clear(T... args)
Gaudi::ParticlePropertySvc::m_stdhepidmap
MapStdHepID m_stdhepidmap
Map for StdHep Ids.
Definition: ParticlePropertySvc.h:169
std::map::size
T size(T... args)
std::set
STL class.
std::begin
T begin(T... args)
std::back_inserter
T back_inserter(T... args)
Gaudi::ParticlePropertySvc::m_idmap
MapID m_idmap
Map for geant IDs.
Definition: ParticlePropertySvc.h:167
Gaudi::ParticlePropertySvc::setAntiParticles
StatusCode setAntiParticles()
helper (protected) function to set the valid particle<-->antiparticle relations
Definition: ParticlePropertySvc.cpp:302
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:166
Gaudi::ParticlePropertySvc::m_pythiaidmap
MapPythiaID m_pythiaidmap
Map for Pythia Ids.
Definition: ParticlePropertySvc.h:170
std::vector::reserve
T reserve(T... args)

## ◆ setAntiParticles()

StatusCode Gaudi::ParticlePropertySvc::setAntiParticles | ( |  | ) |
| protected

helper (protected) function to set the valid particle<-->antiparticle relations

Returns
  status code

Definition at line 302 of file ParticlePropertySvc.cpp.

302 {
303 // initialize particle<-->antiParticle relations
304 for ( auto& pp : m_vectpp ) {
305 if ( !pp ) { continue; } // CONTINUE
306 const ParticleProperty* ap = anti( pp );
307 if ( ap ) { pp->setAntiParticle( ap ); }
308 }
309 return StatusCode::SUCCESS;
310 }
ParticleProperty
A trivial class to hold information about a single particle properties.
Definition: ParticleProperty.h:18
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::ParticlePropertySvc::anti
const ParticleProperty * anti(const ParticleProperty *pp) const
helper (protected) function to find an antiparticle for the given particle ID (StdHepID)
Definition: ParticlePropertySvc.cpp:286
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:495
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:166

## ◆ size()

int Gaudi::ParticlePropertySvc::size | ( |  | ) | const
| inline override

Get the container size.

Definition at line 113 of file ParticlePropertySvc.h.

113 { return m_vectpp.size(); };
std::vector::size
T size(T... args)
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:166

## Member Data Documentation

## ◆ m_fileAccess

SmartIF<IFileAccess> Gaudi::ParticlePropertySvc::m_fileAccess
| private

Definition at line 176 of file ParticlePropertySvc.h.

## ◆ m_filename

Gaudi::Property<std::string> Gaudi::ParticlePropertySvc::m_filename
| private

Initial value:
{this, "ParticlePropertiesFile", "ParticleTable.txt",
"Filename of the particle properties file"}

Definition at line 160 of file ParticlePropertySvc.h.

## ◆ m_idmap

MapID Gaudi::ParticlePropertySvc::m_idmap
| private

Map for geant IDs.

Definition at line 167 of file ParticlePropertySvc.h.

## ◆ m_namemap

MapName Gaudi::ParticlePropertySvc::m_namemap
| private

Map for particle names.

Definition at line 168 of file ParticlePropertySvc.h.

## ◆ m_other

Gaudi::Property<std::vector<std::string> > Gaudi::ParticlePropertySvc::m_other {this, "OtherFiles", {}, "additional file names"}
| private

Definition at line 162 of file ParticlePropertySvc.h.

## ◆ m_owned

std::set<std::unique_ptr<ParticleProperty> > Gaudi::ParticlePropertySvc::m_owned
| private

Definition at line 173 of file ParticlePropertySvc.h.

## ◆ m_particles

Gaudi::Property<std::vector<std::string> > Gaudi::ParticlePropertySvc::m_particles
| private

Initial value:
{
this, "Particles", {}, "properties to be redefined explicitly"}

Definition at line 163 of file ParticlePropertySvc.h.

## ◆ m_pythiaidmap

MapPythiaID Gaudi::ParticlePropertySvc::m_pythiaidmap
| private

Map for Pythia Ids.

Definition at line 170 of file ParticlePropertySvc.h.

## ◆ m_replaced

std::set<std::string> Gaudi::ParticlePropertySvc::m_replaced
| private

Definition at line 174 of file ParticlePropertySvc.h.

## ◆ m_stdhepidmap

MapStdHepID Gaudi::ParticlePropertySvc::m_stdhepidmap
| private

Map for StdHep Ids.

Definition at line 169 of file ParticlePropertySvc.h.

## ◆ m_vectpp

VectPP Gaudi::ParticlePropertySvc::m_vectpp
| private

Vector of all particle properties.

Definition at line 166 of file ParticlePropertySvc.h.

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

- GaudiPartProp/src/ParticlePropertySvc.h
- GaudiPartProp/src/ParticlePropertySvc.cpp