Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v36r16 (ea80daf8)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ParticlePropertySvc.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #ifndef PARTICLEPROPERTYSVC_PARTICLEPROPERTYSVC_H
12 #define PARTICLEPROPERTYSVC_PARTICLEPROPERTYSVC_H
13 // ============================================================================
14 // Include Files
15 // ============================================================================
16 // STD&STL
17 // ============================================================================
18 #include <deque>
19 #include <map>
20 #include <set>
21 // ============================================================================
22 // GaudiKernel
23 // ============================================================================
25 #include "GaudiKernel/Service.h"
26 
27 class IFileAccess;
28 
29 namespace Gaudi {
30  // ============================================================================
82  class ParticlePropertySvc : public extends<Service, IParticlePropertySvc> {
83  public:
84  // typedefs for container type
93  // Inherited Service overrides:
94 
96  StatusCode initialize() override;
98  StatusCode finalize() override;
111  StatusCode push_back( const std::string& particle, int geantId, int jetsetId, double charge, double mass,
112  double tlife, const std::string& evtName, int pythiaId, double maxWidth ) override;
120  const_iterator begin() const override { return m_vectpp.begin(); }
122  const_iterator end() const override { return m_vectpp.end(); }
124  int size() const override { return m_vectpp.size(); };
126  ParticleProperty* find( int geantId ) override { return m_idmap[geantId]; }
128  ParticleProperty* find( const std::string& name ) override { return m_namemap[name]; }
130  ParticleProperty* findByStdHepID( int stdHepId ) override { return m_stdhepidmap[stdHepId]; }
132  ParticleProperty* findByPythiaID( int pythiaID ) override { return m_pythiaidmap[pythiaID]; }
134  StatusCode erase( int geantId ) override { return erase( find( geantId ) ); }
136  StatusCode erase( const std::string& name ) override { return erase( find( name ) ); }
138  StatusCode eraseByStdHepID( int stdHepId ) override { return erase( findByStdHepID( stdHepId ) ); }
144 
145  protected:
151  const ParticleProperty* anti( const ParticleProperty* pp ) const;
162  StatusCode parse( const std::string& file );
163  // Text file parsing routine.
164  StatusCode parse();
165  // treat additional particles
167  // compare 2 entries
168  bool diff( const ParticleProperty* o, const ParticleProperty* n, const MSG::Level l = MSG::DEBUG ) const;
169 
170  private:
171  Gaudi::Property<std::string> m_filename{ this, "ParticlePropertiesFile", "ParticleTable.txt",
172  "Filename of the particle properties file" };
173  Gaudi::Property<std::vector<std::string>> m_other{ this, "OtherFiles", {}, "additional file names" };
175  this, "Particles", {}, "properties to be redefined explicitly" };
176 
182 
183  // local storage of ALL properties
186 
188  };
189 } // namespace Gaudi
190 // =============================================================================
191 // The END
192 // =============================================================================
193 #endif
Gaudi::ParticlePropertySvc::MapStdHepID
std::map< int, mapped_type > MapStdHepID
Definition: ParticlePropertySvc.h:88
MSG::DEBUG
@ DEBUG
Definition: IMessageSvc.h:25
Gaudi::ParticlePropertySvc::setAntiParticles
StatusCode setAntiParticles()
helper (protected) function to set the valid particle<-->antiparticle relations
Definition: ParticlePropertySvc.cpp:304
std::string
STL class.
Gaudi::ParticlePropertySvc::m_fileAccess
SmartIF< IFileAccess > m_fileAccess
Definition: ParticlePropertySvc.h:187
Gaudi::ParticlePropertySvc::m_idmap
MapID m_idmap
Map for geant IDs.
Definition: ParticlePropertySvc.h:178
Gaudi::ParticlePropertySvc::m_stdhepidmap
MapStdHepID m_stdhepidmap
Map for StdHep Ids.
Definition: ParticlePropertySvc.h:180
Gaudi::ParticlePropertySvc::erase
StatusCode erase(int geantId) override
Erase a property by geant3 id.
Definition: ParticlePropertySvc.h:134
std::vector::size
T size(T... args)
Gaudi::ParticlePropertySvc::parse
StatusCode parse()
Parses the file and fill all the maps.
Definition: ParticlePropertySvc.cpp:219
ISvcLocator
Definition: ISvcLocator.h:46
Gaudi::ParticlePropertySvc::m_namemap
MapName m_namemap
Map for particle names.
Definition: ParticlePropertySvc.h:179
Gaudi::ParticlePropertySvc::begin
const_iterator begin() const override
Get a const reference to the beginning of the container.
Definition: ParticlePropertySvc.h:120
Gaudi::ParticlePropertySvc::findByPythiaID
ParticleProperty * findByPythiaID(int pythiaID) override
Retrieve a property by Pythia id.
Definition: ParticlePropertySvc.h:132
Gaudi::ParticlePropertySvc::m_filename
Gaudi::Property< std::string > m_filename
Definition: ParticlePropertySvc.h:171
IParticlePropertySvc.h
Gaudi::ParticlePropertySvc::finalize
StatusCode finalize() override
Finalise the service.
Definition: ParticlePropertySvc.cpp:109
Gaudi::ParticlePropertySvc::mapped_type
ParticleProperty * mapped_type
Definition: ParticlePropertySvc.h:85
Gaudi::ParticlePropertySvc::m_pythiaidmap
MapPythiaID m_pythiaidmap
Map for Pythia Ids.
Definition: ParticlePropertySvc.h:181
Gaudi::ParticlePropertySvc::find
ParticleProperty * find(const std::string &name) override
Retrieve a property by particle name.
Definition: ParticlePropertySvc.h:128
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:288
Gaudi::ParticlePropertySvc::rebuild
StatusCode rebuild()
rebuild "the linear container" from the map
Definition: ParticlePropertySvc.cpp:324
IFileAccess
Definition: IFileAccess.h:29
ParticleProperty
Definition: ParticleProperty.h:28
Service::name
const std::string & name() const override
Retrieve name of the service
Definition: Service.cpp:332
IParticlePropertySvc::const_iterator
VectPP::const_iterator const_iterator
Definition: IParticlePropertySvc.h:36
StatusCode
Definition: StatusCode.h:65
Gaudi::ParticlePropertySvc::diff
bool diff(const ParticleProperty *o, const ParticleProperty *n, const MSG::Level l=MSG::DEBUG) const
Definition: ParticlePropertySvc.cpp:380
IParticlePropertySvc::iterator
VectPP::iterator iterator
Definition: IParticlePropertySvc.h:37
Gaudi::ParticlePropertySvc::m_particles
Gaudi::Property< std::vector< std::string > > m_particles
Definition: ParticlePropertySvc.h:174
Gaudi::ParticlePropertySvc::erase
StatusCode erase(const std::string &name) override
Erase a property by particle name.
Definition: ParticlePropertySvc.h:136
Gaudi::ParticlePropertySvc::MapName
std::map< std::string, mapped_type > MapName
Definition: ParticlePropertySvc.h:87
Gaudi::ParticlePropertySvc::const_iterator
VectPP::const_iterator const_iterator
Definition: IParticlePropertySvc.h:36
std::deque< ParticleProperty >
SmartIF< IFileAccess >
Gaudi::ParticlePropertySvc
Definition: ParticlePropertySvc.h:82
Gaudi::ParticlePropertySvc::MapPythiaID
std::map< int, mapped_type > MapPythiaID
Definition: ParticlePropertySvc.h:89
std::map< int, mapped_type >
extends
Base class used to extend a class implementing other interfaces.
Definition: extends.h:20
Gaudi
Header file for std:chrono::duration-based Counters.
Definition: __init__.py:1
Gaudi::ParticlePropertySvc::addParticles
StatusCode addParticles()
Definition: ParticlePropertySvc.cpp:340
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:235
Gaudi::ParticlePropertySvc::eraseByStdHepID
StatusCode eraseByStdHepID(int stdHepId) override
Erase a property by StdHep id ???
Definition: ParticlePropertySvc.h:138
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:127
Service.h
Gaudi::ParticlePropertySvc::end
const_iterator end() const override
Get a const reference to the end of the container.
Definition: ParticlePropertySvc.h:122
Gaudi::ParticlePropertySvc::m_owned
std::deque< ParticleProperty > m_owned
Definition: ParticlePropertySvc.h:184
MSG::Level
Level
Definition: IMessageSvc.h:25
Gaudi::ParticlePropertySvc::findByStdHepID
ParticleProperty * findByStdHepID(int stdHepId) override
Retrieve a property by StdHep id.
Definition: ParticlePropertySvc.h:130
Gaudi::ParticlePropertySvc::m_other
Gaudi::Property< std::vector< std::string > > m_other
Definition: ParticlePropertySvc.h:173
IParticlePropertySvc::VectPP
std::vector< ParticleProperty * > VectPP
Definition: IParticlePropertySvc.h:35
Gaudi::ParticlePropertySvc::MapID
std::map< int, mapped_type > MapID
Definition: ParticlePropertySvc.h:86
gaudirun.l
dictionary l
Definition: gaudirun.py:582
Gaudi::ParticlePropertySvc::ParticlePropertySvc
ParticlePropertySvc(const std::string &name, ISvcLocator *svc)
Standard Constructor.
Definition: ParticlePropertySvc.cpp:56
std::vector::begin
T begin(T... args)
Gaudi::ParticlePropertySvc::size
int size() const override
Get the container size.
Definition: ParticlePropertySvc.h:124
Gaudi::ParticlePropertySvc::find
ParticleProperty * find(int geantId) override
Retrieve a property by geant3 id.
Definition: ParticlePropertySvc.h:126
Gaudi::ParticlePropertySvc::initialize
StatusCode initialize() override
Initialise the service.
Definition: ParticlePropertySvc.cpp:64
Gaudi::ParticlePropertySvc::m_replaced
std::set< std::string > m_replaced
Definition: ParticlePropertySvc.h:185
Gaudi::ParticlePropertySvc::m_vectpp
VectPP m_vectpp
Vector of all particle properties.
Definition: ParticlePropertySvc.h:177
std::vector::end
T end(T... args)
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:516
Gaudi::ParticlePropertySvc::VectPP
std::vector< ParticleProperty * > VectPP
Definition: IParticlePropertySvc.h:35
std::set< std::string >
Gaudi::Property< std::string >