Juggler
Juggling algorithms and event processing using gaudi framework
ParticleSvc.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-or-later
2 // Copyright (C) 2022 Whitney Armstrong, Sylvester Joosten
3 
4 #ifndef PARTICLESVC_H
5 #define PARTICLESVC_H
6 
7 #include <map>
8 
9 #include "GaudiKernel/Service.h"
10 
11 #include "JugBase/IParticleSvc.h"
12 
13 /** Simple particle service.
14  *
15  * This meant to provide basic particle information for reconstruction purposes.
16  * If particle data is needed, be sure to grab everything you can in an initialization
17  * step. Currently the returned Particle/ParticleMap are by value.
18  */
19 class ParticleSvc : public extends<Service, IParticleSvc> {
20 public:
22  using ParticleMap = std::map<int, Particle>;
23 
25 
26 public:
27  ParticleSvc(const std::string& name, ISvcLocator* svc);
28 
29  virtual ~ParticleSvc();
30 
31  virtual StatusCode initialize() final;
32  virtual StatusCode finalize() final { return StatusCode::SUCCESS; }
33 
34  virtual ParticleMap particleMap() const { return m_particleMap; }
35  virtual Particle particle(int pdg) const {
36  if (m_particleMap.count(pdg) == 0) {
37  // error
38  return m_particleMap.at(0);
39  }
40  return m_particleMap.at(pdg);
41  }
42 };
43 
44 #endif
Jug::Base::ParticleData
Definition: IParticleSvc.h:15
ParticleSvc
Definition: ParticleSvc.h:19
ParticleSvc::ParticleMap
std::map< int, Particle > ParticleMap
Definition: ParticleSvc.h:22
ParticleSvc::particle
virtual Particle particle(int pdg) const
Definition: ParticleSvc.h:35
ParticleSvc::initialize
virtual StatusCode initialize() final
Definition: ParticleSvc.cpp:257
IParticleSvc.h
ParticleSvc::m_particleMap
const ParticleMap m_particleMap
Definition: ParticleSvc.h:24
ParticleSvc::particleMap
virtual ParticleMap particleMap() const
Definition: ParticleSvc.h:34
ParticleSvc::ParticleSvc
ParticleSvc(const std::string &name, ISvcLocator *svc)
Definition: ParticleSvc.cpp:252
ParticleSvc::~ParticleSvc
virtual ~ParticleSvc()
ParticleSvc::finalize
virtual StatusCode finalize() final
Definition: ParticleSvc.h:32