AmpGen 2.1
Loading...
Searching...
No Matches
ThreeBodyCalculators.h
Go to the documentation of this file.
1#ifndef AMPGEN_THREEBODYCALCULATORS_H
2#define AMPGEN_THREEBODYCALCULATORS_H
3
5#include "AmpGen/Expression.h"
7#include "AmpGen/Tensor.h"
8
9class TGraph;
10
11namespace AmpGen {
13
15 private:
16 struct PartialWidth {
17 CoherentSum fcs;
18 DalitzIntegrator integrator;
19 CompiledExpression<complex_v(const real_t *, const real_v *)> totalWidth;
20 EventType type;
21 std::vector<CompiledExpression<complex_v(const real_t *, const real_v *)>> partialWidths;
22 double getWidth(const double &m);
23 PartialWidth(const EventType &type, MinuitParameterSet &mps);
24 Expression spinAverageMatrixElement(const std::vector<std::pair<Particle, TotalCoupling>> &elements, DebugSymbols *msym);
25 };
26 Expression calculateSAME(const std::string &particle);
27
28 double m_min;
29 double m_max;
30 double m_norm;
31 double m_step;
32 size_t m_nKnots;
33 std::string m_name;
34 std::vector<PartialWidth> m_widths;
35 MinuitParameterSet *m_mps;
36
37 public:
38 ThreeBodyCalculator(const std::string &head, MinuitParameterSet &mps, const size_t &nKnots = 999, const double &min = -1, const double &max = -1);
39
40 TGraph *widthGraph(const double &mNorm = -1);
41 TGraph *widthGraph(const size_t &steps, const double &min, const double &max);
42 TGraph *runningMass(const double &mass, const double &min, const double &max, const size_t &nSteps, const size_t &nSubtractions = 2);
43 TGraph *fastRunningMass(const double &mass, const double &min, const double &max, const size_t &nSteps, const size_t &nSubtractions = 2);
44
45 double getWidth(const double &);
46
47 void updateRunningWidth(MinuitParameterSet &mps, const double &mNorm = 0);
48 void setNorm(const double &mNorm);
49 void setAxis(const size_t &nKnots, const double &min, const double &max);
50 void prepare();
51 void makePlots(const double &mass = -1, const size_t &x = 0, const size_t &y = 0);
52 void debug(const double &m, const double &theta);
53 };
54} // namespace AmpGen
55#endif /* end of include guard: AMPGEN_THREEBODYCALCULATORS_H */
A coherent sum of amplitudes.
Definition CoherentSum.h:45
Class for doing 2D integrals using the Square Dalitz Plot (SQDP) method.
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
TGraph * fastRunningMass(const double &mass, const double &min, const double &max, const size_t &nSteps, const size_t &nSubtractions=2)
void debug(const double &m, const double &theta)
void setAxis(const size_t &nKnots, const double &min, const double &max)
TGraph * widthGraph(const double &mNorm=-1)
void setNorm(const double &mNorm)
void updateRunningWidth(MinuitParameterSet &mps, const double &mNorm=0)
double getWidth(const double &)
TGraph * widthGraph(const size_t &steps, const double &min, const double &max)
TGraph * runningMass(const double &mass, const double &min, const double &max, const size_t &nSteps, const size_t &nSubtractions=2)
void makePlots(const double &mass=-1, const size_t &x=0, const size_t &y=0)
ThreeBodyCalculator(const std::string &head, MinuitParameterSet &mps, const size_t &nKnots=999, const double &min=-1, const double &max=-1)
double real_t
Definition Types.h:6
AVX::real_v real_v
Definition utils.h:47
AVX::complex_v complex_v
Definition utils.h:48
std::vector< DebugSymbol > DebugSymbols
Definition Expression.h:111