EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
ParticleSvc.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2024 Wouter Deconinck
3
4#pragma once
5
6#include <algorithms/service.h>
7#include <map>
8#include <memory>
9#include <string>
10
11namespace algorithms {
12
13class ParticleSvc : public Service<ParticleSvc> {
14public:
15 struct ParticleData {
17 int charge;
18 double mass;
19 std::string name;
20 };
22 using ParticleMap = std::map<int, Particle>;
23
24public:
25 virtual void init(std::shared_ptr<ParticleMap> map = nullptr);
26
27 virtual std::shared_ptr<ParticleMap> particleMap() const { return m_particleMap; };
28
29 virtual Particle& particle(int pdg) const;
30
31protected:
32 std::shared_ptr<ParticleMap> m_particleMap{nullptr};
33
34 ALGORITHMS_DEFINE_SERVICE(ParticleSvc)
35
36private:
38 static const ParticleMap& getDefaultParticleMap();
39};
40
41} // namespace algorithms
Definition ParticleSvc.h:13
virtual Particle & particle(int pdg) const
Definition ParticleSvc.cc:18
std::shared_ptr< ParticleMap > m_particleMap
Definition ParticleSvc.h:32
virtual std::shared_ptr< ParticleMap > particleMap() const
Definition ParticleSvc.h:27
virtual void init(std::shared_ptr< ParticleMap > map=nullptr)
Definition ParticleSvc.cc:10
std::map< int, Particle > ParticleMap
Definition ParticleSvc.h:22
ParticleData Particle
Definition ParticleSvc.h:21
Definition ActsSvc.h:11
Definition ParticleSvc.h:15
std::string name
Definition ParticleSvc.h:19
double mass
Definition ParticleSvc.h:18
int charge
Definition ParticleSvc.h:17
int pdgCode
Definition ParticleSvc.h:16