AmpGen 2.1
Loading...
Searching...
No Matches
AmplitudeRules.h
Go to the documentation of this file.
1#ifndef AMPGEN_AMPLITUDERULES_H
2#define AMPGEN_AMPLITUDERULES_H
3
4#include <stddef.h>
5#include <complex>
6#include <map>
7#include <string>
8#include <utility>
9#include <vector>
10
11#include "AmpGen/EventType.h"
12#include "AmpGen/Expression.h"
14#include "AmpGen/Event.h"
15#include "AmpGen/Particle.h"
17
18namespace AmpGen
19{
20 class MinuitParameter;
21 class MinuitExpression;
23
25 {
26 public:
27 Coupling(MinuitParameter* re, MinuitParameter* im);
29 Coupling(const Particle& particle, double f);
30 std::string name() const { return m_name; }
31 std::string head() const { return m_particle.name(); }
32 std::string prefix() const { return m_prefix; }
34 MinuitParameter* x() const { return m_re; }
35 MinuitParameter* y() const { return m_im; }
38 const Particle& particle() const { return m_particle ; }
39 bool isCartesian() const { return m_isCartesian; }
40 private:
41 std::string m_prefix = {""};
42 std::string m_name = {""};
43 MinuitParameter* m_re = {nullptr};
44 MinuitParameter* m_im = {nullptr};
45 MinuitExpression* m_expr = {nullptr};
46 Particle m_particle;
47 bool m_isCartesian = {true};
48 double m_sf = {1};
49 };
50
52 {
53 public:
54 TotalCoupling() = default;
55 TotalCoupling( const TotalCoupling& other, const Coupling& pA);
57 std::complex<double> operator()() const;
59 void print() const;
60 Coupling operator[]( const size_t& index ) { return couplings[index]; }
61 bool isFixed() const;
62 bool contains( const std::string& name ) const;
63 size_t size() const { return couplings.size(); }
64 std::vector<Coupling>::const_iterator begin() const { return couplings.begin() ; }
65 std::vector<Coupling>::const_iterator end() const { return couplings.end() ; }
66 private:
67 std::vector<Coupling> couplings;
68 };
69
71 {
72 public:
73 static const AmplitudeRules* get();
75 AmplitudeRules() = default;
77 std::vector<Coupling> rulesForDecay(const std::string& head, const std::string& prefix="") const;
78 bool hasDecay( const std::string& head ) const;
79 const std::map<std::string, std::vector<Coupling>>& rules() const;
80 std::vector<std::pair<Particle, TotalCoupling>> getMatchingRules(
81 const EventType& type, const std::string& prefix="" );
82 std::vector<Coupling> processesThatProduce(const Particle& particle) const;
83
84 std::vector<std::pair<Particle, TotalCoupling>> expand( const Coupling& coupling ) const;
85 void add_rule( const Particle& p , double coupling ) ;
86 private:
87 std::map<std::string, std::vector<Coupling>> m_rules;
88 static AmplitudeRules* gAmplitudeRules;
89 };
90
91} // namespace AmpGen
92
93#endif
std::vector< std::pair< Particle, TotalCoupling > > getMatchingRules(const EventType &type, const std::string &prefix="")
bool hasDecay(const std::string &head) const
const std::map< std::string, std::vector< Coupling > > & rules() const
static const AmplitudeRules * get()
std::vector< Coupling > processesThatProduce(const Particle &particle) const
std::vector< Coupling > rulesForDecay(const std::string &head, const std::string &prefix="") const
static AmplitudeRules * create(const MinuitParameterSet &mps)
AmplitudeRules(const MinuitParameterSet &mps)
std::vector< std::pair< Particle, TotalCoupling > > expand(const Coupling &coupling) const
void add_rule(const Particle &p, double coupling)
complex_t operator()() const
const Particle & particle() const
bool isCartesian() const
Coupling(MinuitExpression *expression)
std::string prefix() const
std::string name() const
Coupling(const Particle &particle, double f)
EventType eventType() const
std::string head() const
MinuitParameter * x() const
MinuitParameter * y() const
Expression to_expression() const
Coupling(MinuitParameter *re, MinuitParameter *im)
Deals with final state configuration of events, specifically dealing with the ordering of particles i...
Definition EventType.h:22
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
Definition Expression.h:135
Describes a particle, its decay process and subsequent decay products, which are also Particles.
Definition Particle.h:103
TotalCoupling(const TotalCoupling &other, const Coupling &pA)
std::vector< Coupling >::const_iterator begin() const
bool isFixed() const
bool contains(const std::string &name) const
Coupling operator[](const size_t &index)
std::complex< double > operator()() const
std::vector< Coupling >::const_iterator end() const
Expression to_expression() const
TotalCoupling(const Coupling &pA)
std::complex< real_t > complex_t
Definition Types.h:7