YAP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ParticleFactory.h
Go to the documentation of this file.
1 /* YAP - Yet another PWA toolkit
2  Copyright 2015, Technische Universitaet Muenchen,
3  Authors: Daniel Greenwald, Johannes Rauch
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
20 
21 #ifndef yap_ParticleFactory_h
22 #define yap_ParticleFactory_h
23 
24 #include "fwd/DecayingParticle.h"
25 #include "fwd/FinalStateParticle.h"
26 #include "fwd/MassShape.h"
27 #include "fwd/ParticleFactory.h"
28 #include "fwd/PhaseSpaceFactor.h"
29 #include "fwd/Resonance.h"
30 
31 #include "QuantumNumbers.h"
32 
33 #include <memory>
34 #include <string>
35 #include <vector>
36 
37 namespace yap {
38 
50  ParticleTableEntry(int pdg = 0, std::string name = "", QuantumNumbers q = QuantumNumbers(), double mass = -1, std::vector<double> parameters = {});
51 
53  bool consistent() const override;
54 
56  int PDG;
57 
59  std::string Name;
60 
62  double Mass;
63 
65  std::vector<double> MassShapeParameters;
66 };
67 
74 {
75 public:
76 
80 
83  using iterator = ParticleTableMap::iterator;
84 
88  std::shared_ptr<FinalStateParticle> fsp(int PDG) const;
89 
94  std::shared_ptr<DecayingParticle> decayingParticle(int PDG, double radialSize, std::shared_ptr<PhaseSpaceFactorFactory> phsp_factory = DefaultPHSPFactory) const;
95 
101  std::shared_ptr<Resonance> resonance(int PDG, double radialSize, std::shared_ptr<MassShape> massShape, std::shared_ptr<PhaseSpaceFactorFactory> phsp_factory = DefaultPHSPFactory) const;
102 
106 
109 
112  const ParticleTableEntry& operator[](int PDG) const;
113 
116  const ParticleTableEntry& operator[](std::string name) const
117  { return (*this)[pdgCode(name)]; }
118 
121  const QuantumNumbers& quantumNumbers(int PDG) const
122  { return static_cast<const QuantumNumbers&>((*this)[PDG]); }
123 
126  const QuantumNumbers& quantumNumbers(std::string name) const
127  { return static_cast<const QuantumNumbers&>((*this)[name]); }
128 
131  std::pair<ParticleTableMap::iterator, bool> insert(const ParticleTableEntry& entry);
132 
134  ParticleTableMap::iterator insert(ParticleTableMap::iterator hint, const ParticleTableEntry& entry);
135 
137  friend std::insert_iterator<ParticleFactory> inserter(ParticleFactory& F)
138  { return std::insert_iterator<ParticleFactory>(F, F.ParticleTable_.end()); }
139 
140  // find PDG number by particle name
141  // \return PDG code number
142  // \param name Particle name as listed in particle table
143  int pdgCode(std::string name) const;
144 
146 
147 private:
148 
150  ParticleTableMap ParticleTable_;
151 };
152 
153 }
154 
155 #endif
std::vector< double > MassShapeParameters
further parameters of particle (implementation dependent)
Definition: ParticleFactory.h:65
ParticleTableMap ParticleTable_
maps PDGCodes to ParticleTableEntry's
Definition: ParticleFactory.h:150
friend std::insert_iterator< ParticleFactory > inserter(ParticleFactory &F)
#ParticleFactory's own inserter
Definition: ParticleFactory.h:137
std::shared_ptr< Resonance > resonance(int PDG, double radialSize, std::shared_ptr< MassShape > massShape, std::shared_ptr< PhaseSpaceFactorFactory > phsp_factory=DefaultPHSPFactory) const
Definition: ParticleFactory.cxx:54
Data container for storing particle information in database.
Definition: ParticleFactory.h:43
const QuantumNumbers & quantumNumbers(int PDG) const
Definition: ParticleFactory.h:121
int PDG
PDG code of particle.
Definition: ParticleFactory.h:56
Factory class for easy creation of Particle objects from PDG codes.
Definition: ParticleFactory.h:73
std::shared_ptr< DecayingParticle > decayingParticle(int PDG, double radialSize, std::shared_ptr< PhaseSpaceFactorFactory > phsp_factory=DefaultPHSPFactory) const
Definition: ParticleFactory.cxx:47
const ParticleTableEntry & operator[](std::string name) const
Definition: ParticleFactory.h:116
const ParticleTableEntry & operator[](int PDG) const
Definition: ParticleFactory.cxx:71
std::pair< ParticleTableMap::iterator, bool > insert(const ParticleTableEntry &entry)
Definition: ParticleFactory.cxx:80
ParticleFactory & operator+=(const ParticleFactory &rhs)
Definition: ParticleFactory.cxx:62
QuantumNumbers()
Definition: QuantumNumbers.h:60
std::shared_ptr< FinalStateParticle > fsp(int PDG) const
Definition: ParticleFactory.cxx:40
ParticleTableMap::iterator iterator
Definition: ParticleFactory.h:83
double Mass
Mass of particle.
Definition: ParticleFactory.h:62
ParticleTableEntry(int pdg=0, std::string name="", QuantumNumbers q=QuantumNumbers(), double mass=-1, std::vector< double > parameters={})
Definition: ParticleFactory.cxx:17
bool consistent() const override
Definition: ParticleFactory.cxx:27
std::string Name
Name of particle.
Definition: ParticleFactory.h:59
Quantum numbers of a Particle.
Definition: QuantumNumbers.h:35
const QuantumNumbers & quantumNumbers(std::string name) const
Definition: ParticleFactory.h:126