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
12{
14
16 {
17 private:
18 struct PartialWidth {
19 CoherentSum fcs;
20 DalitzIntegrator integrator;
21 CompiledExpression<complex_v(const real_t*, const real_v*) > totalWidth;
22 EventType type;
23 std::vector<CompiledExpression< complex_v(const real_t*, const real_v*)>> partialWidths;
24 double getWidth( const double& m );
25 PartialWidth( const EventType& type, MinuitParameterSet& mps );
26 Expression spinAverageMatrixElement( const std::vector<std::pair<Particle, TotalCoupling> >& elements,
27 DebugSymbols* msym );
28 };
29 Expression calculateSAME( const std::string& particle );
30
31 double m_min;
32 double m_max;
33 double m_norm;
34 double m_step;
35 size_t m_nKnots;
36 std::string m_name;
37 std::vector<PartialWidth> m_widths;
38 MinuitParameterSet* m_mps;
39 public:
40 ThreeBodyCalculator( const std::string& head, MinuitParameterSet& mps, const size_t& nKnots=999, const double& min=-1, const double& max=-1 );
41
42 TGraph* widthGraph( const double& mNorm=-1 );
43 TGraph* widthGraph( const size_t& steps, const double& min, const double& max );
44 TGraph* runningMass( const double& mass, const double& min, const double& max, const size_t& nSteps, const size_t& nSubtractions=2 );
45 TGraph* fastRunningMass( const double& mass, const double& min, const double& max, const size_t& nSteps, const size_t& nSubtractions=2 );
46
47 double getWidth( const double& );
48
49 void updateRunningWidth( MinuitParameterSet& mps, const double& mNorm = 0 );
50 void setNorm( const double& mNorm );
51 void setAxis( const size_t& nKnots, const double& min, const double& max );
52 void prepare();
53 void makePlots(const double& mass=-1, const size_t& x=0, const size_t& y=0);
54 void debug( const double& m, const double& theta );
55 };
56} // namespace AmpGen
57#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:46
AVX::complex_v complex_v
Definition utils.h:47
std::vector< DebugSymbol > DebugSymbols
Definition Expression.h:111