MINT2
Functions | Variables
phaseSpaceIntegrals.cpp File Reference
#include "Mint/phaseSpaceIntegrals.h"
#include "Mint/CLHEPPhysicalConstants.h"
#include "Mint/lambda.h"
#include <iostream>
#include <cmath>
#include "TF2.h"

Go to the source code of this file.

Functions

double d4body_by_ds12 (Double_t *x, Double_t *p)
 
double d3body_by_ds12 (Double_t *x, Double_t *p)
 
double d_ps4_by_ds12ds34_withFct (Double_t *x, Double_t *p)
 
double d_ps4_by_ds123ds12_withFct (Double_t *x, Double_t *p)
 
double phaseSpaceIntegral_upTo4body (const DalitzEventPattern &pat)
 

Variables

IGenFctGlobal_s12Fct =0
 
IGenFctGlobal_s34Fct =0
 
IGenFctGlobal_s123Fct =0
 

Function Documentation

◆ d3body_by_ds12()

double d3body_by_ds12 ( Double_t *  x,
Double_t *  p 
)

Definition at line 52 of file phaseSpaceIntegrals.cpp.

52  {
53  bool dbThis=false;
54 
55  double s12 = x[0];
56  if(s12 < 0) return 0;
57  double m12 = sqrt(s12);
58  double mum = p[0];
59  double m1 = p[1];
60  double m2 = p[2];
61  double m3 = p[3];
62  if(dbThis) cout << " d3body_by_ds12 called with "
63  << mum << ", "
64  << m1 << ", "
65  << m2 << ", "
66  << m3 << endl;
67 
68  return phaseSpaceIntegral2body(mum, m12, m3)
69  * phaseSpaceIntegral2body(m12, m1, m2);
70 }
double phaseSpaceIntegral2body(double mum, double d1, double d2)
static const double m2
static const double m3

◆ d4body_by_ds12()

double d4body_by_ds12 ( Double_t *  x,
Double_t *  p 
)

Definition at line 22 of file phaseSpaceIntegrals.cpp.

22  {
23  bool dbThis=false;
24  double s12 = x[0];
25  if(s12 < 0) return 0;
26  double m12 = sqrt(s12);
27  double mum = p[0];
28  double m1 = p[1];
29  double m2 = p[2];
30  double m3 = p[3];
31  double m4 = p[4];
32 
33  if(dbThis) cout << " d4body_by_ds12 called with "
34  << mum << ", "
35  << m1 << ", "
36  << m2 << ", "
37  << m3 << ", "
38  << m4 << endl;
39 
41 
42  double p3val = p3.getVal(mum, m12, m3, m4);
43  double p2val = phaseSpaceIntegral2body(m12, m1, m2);
44  if(dbThis){
45  cout << " d4body_by_ds12: returning " << p2val << " * " << p3val
46  << " = " << p2val * p3val
47  << endl;
48  }
49  return p2val * p3val;
50 }
double phaseSpaceIntegral2body(double mum, double d1, double d2)
double getVal(const DalitzEventPattern &_pat)
static const double m2
static const double m3

◆ d_ps4_by_ds123ds12_withFct()

double d_ps4_by_ds123ds12_withFct ( Double_t *  x,
Double_t *  p 
)

Definition at line 115 of file phaseSpaceIntegrals.cpp.

115  {
116 
117 
118  double rho123 = x[0];
119  double rho12 = x[1];
120 
121  double s123 = Global_s123Fct->coordTransformToS(rho123);
122  double s12 = Global_s12Fct->coordTransformToS(rho12);
123 
124 
125 
126  if(s123 < 0) return 0;
127  double m123 = sqrt(s123);
128  if(m123 + p[4] > p[0]) return 0;
129  if(m123 < p[1] + p[2] + p[3]) return 0;
130 
131  if(s12 < 0) return 0;
132  double m12 = sqrt(s12);
133  if(m12 + p[3] > m123)return 0;
134  if(m12 < p[1] + p[2]) return 0;
135 
136 
137  double ps1 = phaseSpaceIntegral2body(p[0]
138  , m123
139  , p[4]);
140 
141  if(ps1 <=0) return 0;
142 
143 
144  double ps2 = phaseSpaceIntegral2body(m123
145  , sqrt(s12)
146  , p[3]);
147 
148  if(ps2 <=0) return 0;
149 
150  double ps3 = phaseSpaceIntegral2body(m12
151  , p[1]
152  , p[2]);
153 
154  if(ps3 <=0) return 0;
155 
156  double fct123 = Global_s123Fct->transformedFctValue(rho123);
157  double fct12 = Global_s12Fct->transformedFctValue(rho12);
158 
159  return fct123*fct12 * ps1*ps2*ps3;
160 
161 }
IGenFct * Global_s12Fct
virtual double transformedFctValue(double rho) const
Definition: IGenFct.h:34
double phaseSpaceIntegral2body(double mum, double d1, double d2)
IGenFct * Global_s123Fct
virtual double coordTransformToS(double rho) const
Definition: IGenFct.h:33

◆ d_ps4_by_ds12ds34_withFct()

double d_ps4_by_ds12ds34_withFct ( Double_t *  x,
Double_t *  p 
)

Definition at line 72 of file phaseSpaceIntegrals.cpp.

72  {
73  //bool dbThis=false;
74 
75  double rho12 = x[0];
76  double rho34 = x[1];
77  double s12= Global_s12Fct->coordTransformToS(rho12);
78  double s34= Global_s34Fct->coordTransformToS(rho34);
79 
80 
81  if(s12 < 0) return 0;
82  double m12 = sqrt(s12);
83  if(m12 < p[1] + p[2]) return 0;
84 
85  if(s34 < 0) return 0;
86  double m34 = sqrt(s34);
87  if(m34 < p[3] + p[4]) return 0;
88  if(m12 + m34 > p[0]) return 0;
89 
90 
91  double ps1 = phaseSpaceIntegral2body(p[0]
92  , m12
93  , m34);
94 
95  if(ps1 <=0) return 0;
96 
97  double ps2 = phaseSpaceIntegral2body(m12
98  , p[1]
99  , p[2]);
100 
101  if(ps2 <=0) return 0;
102 
103  double ps3 = phaseSpaceIntegral2body(m34
104  , p[3]
105  , p[4]);
106  if(ps3 <=0) return 0;
107 
108 
109  double fct12 = Global_s12Fct->transformedFctValue(rho12);
110  double fct34 = Global_s34Fct->transformedFctValue(rho34);
111 
112  return fct12 * fct34 * ps1*ps2*ps3;
113 }
IGenFct * Global_s34Fct
IGenFct * Global_s12Fct
virtual double transformedFctValue(double rho) const
Definition: IGenFct.h:34
double phaseSpaceIntegral2body(double mum, double d1, double d2)
virtual double coordTransformToS(double rho) const
Definition: IGenFct.h:33

◆ phaseSpaceIntegral_upTo4body()

double phaseSpaceIntegral_upTo4body ( const DalitzEventPattern pat)

Definition at line 488 of file phaseSpaceIntegrals.cpp.

488  {
489 
490  if(pat.numDaughters() < 2 ){
491  return 0;
492  }else if(pat.numDaughters() == 2 ){
493  return phaseSpaceIntegral2body(pat);
494  }else if(pat.numDaughters() == 3){
496  return p3.getVal(pat);
497  }else if(pat.numDaughters() == 4){
499  return p4.getVal(pat);
500  }else{
501  return -9999;
502  }
503 
504 }
double phaseSpaceIntegral2body(double mum, double d1, double d2)
double getVal(const DalitzEventPattern &_pat)
double getVal(const DalitzEventPattern &_pat)

Variable Documentation

◆ Global_s123Fct

IGenFct* Global_s123Fct =0

Definition at line 20 of file phaseSpaceIntegrals.cpp.

◆ Global_s12Fct

IGenFct* Global_s12Fct =0

Definition at line 18 of file phaseSpaceIntegrals.cpp.

◆ Global_s34Fct

IGenFct* Global_s34Fct =0

Definition at line 19 of file phaseSpaceIntegrals.cpp.