1#ifndef AMPGEN_AMPLITUDERULES_H
2#define AMPGEN_AMPLITUDERULES_H
20 class MinuitParameter;
27 Coupling(MinuitParameter* re, MinuitParameter* im);
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; }
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};
47 bool m_isCartesian = {
true};
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() ; }
67 std::vector<Coupling> couplings;
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;
81 const EventType& type,
const std::string& prefix=
"" );
84 std::vector<std::pair<Particle, TotalCoupling>>
expand(
const Coupling& coupling )
const;
87 std::map<std::string, std::vector<Coupling>> m_rules;
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
Coupling(MinuitExpression *expression)
std::string prefix() const
Coupling(const Particle &particle, double f)
EventType eventType() 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...
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
Describes a particle, its decay process and subsequent decay products, which are also Particles.
TotalCoupling(const TotalCoupling &other, const Coupling &pA)
std::vector< Coupling >::const_iterator begin() 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