22 Logger::print(0,
"%20.20s INFO: Creating Dalitz phase space for mother of mass %f and daughters of masses %f, %f, %f\n",
31 m_MinAB = TMath::Power(m_a + m_b, 2);
32 m_MaxAB = TMath::Power(m_d - m_c, 2);
33 m_MinBC = TMath::Power(m_b + m_c, 2);
34 m_MaxBC = TMath::Power(m_d - m_a, 2);
48 if (m2ab < m_MinAB || m2ab >
m_MaxAB || m2bc < m_MinBC || m2bc >
m_MaxBC)
return 0;
52 Double_t eb = (m2ab -
m_a2 +
m_b2)/2./TMath::Sqrt(m2ab);
53 Double_t ec = (
m_d2 - m2ab -
m_c2)/2./TMath::Sqrt(m2ab);
55 Double_t p2b = TMath::Power(eb, 2) -
m_b2;
56 Double_t p2c = TMath::Power(ec, 2) -
m_c2;
58 if (p2c<0 || p2b<0)
return 0;
62 Double_t m2bc_max = TMath::Power(eb+ec, 2) - TMath::Power(sqrt(p2b) - sqrt(p2c), 2);
63 Double_t m2bc_min = TMath::Power(eb+ec, 2) - TMath::Power(sqrt(p2b) + sqrt(p2c), 2);
65 if (m2bc < m2bc_min || m2bc > m2bc_max)
return 0;
93 Double_t* lower, Double_t* upper) {
97 if (m2bc < m_MinBC || m2bc >
m_MaxBC)
return 0;
99 Double_t eb = (m2bc +
m_b2 -
m_c2)/2./TMath::Sqrt(m2bc);
100 Double_t ea = (
m_d2 - m2bc -
m_a2)/2./TMath::Sqrt(m2bc);
102 Double_t p2b = TMath::Power(eb, 2) -
m_b2;
103 Double_t p2a = TMath::Power(ea, 2) -
m_a2;
105 if (p2a<0 || p2b<0)
return 0;
109 *upper = TMath::Power(ea+eb, 2) - TMath::Power(sqrt(p2a) - sqrt(p2b), 2);
110 *lower = TMath::Power(ea+eb, 2) - TMath::Power(sqrt(p2a) + sqrt(p2b), 2);
115 Double_t m2ab = x[0];
116 if (m2ab < m_MinAB || m2ab >
m_MaxAB)
return 0;
118 Double_t eb = (m2ab -
m_a2 +
m_b2)/2./TMath::Sqrt(m2ab);
119 Double_t ec = (
m_d2 - m2ab -
m_c2)/2./TMath::Sqrt(m2ab);
121 Double_t p2b = TMath::Power(eb, 2) -
m_b2;
122 Double_t p2c = TMath::Power(ec, 2) -
m_c2;
124 if (p2c<0 || p2b<0)
return 0;
128 *upper = TMath::Power(eb+ec, 2) - TMath::Power(sqrt(p2b) - sqrt(p2c), 2);
129 *lower = TMath::Power(eb+ec, 2) - TMath::Power(sqrt(p2b) + sqrt(p2c), 2);
Double_t lowerLimit(UInt_t var)
Get lower limit.
Double_t m_a
Mass of the particle A.
Double_t m_c
Mass of the particle C.
Double_t m_d
Mass of the mother particle.
Double_t m_MaxBC
Upper limit of BC invariant mass values.
char m_name[256]
Phase space name.
Double_t upperLimit(UInt_t var)
Get upper limit.
Double_t m_MinBC
Lower limit of BC invariant mass values.
Double_t m_c2
Squared mass of the particle C.
void print(int level, const char *format,...)
Bool_t limits(UInt_t var, std::vector< Double_t > &x, Double_t *lower, Double_t *upper)
Return limits (lower and upper) for the variable at the certain point of the phase space...
Double_t m_d2
Squared mass of the mother particle.
Double_t m_b
Mass of the particle B.
Abstract class which defines phase space interface.
Double_t m_b2
Squared mass of the particle B.
DalitzPhaseSpace(const char *phaseSpaceName, Double_t mD, Double_t mA, Double_t mB, Double_t mC)
Constructor.
Bool_t withinLimits(std::vector< Double_t > &x)
Check if the point is within the phase space limits.
Double_t m_SqSum
Sum of squared masses of daughter and mother particles.
Double_t m_MaxAB
Upper limit of AB invariant mass values.
Double_t m_a2
Squared mass of the particle A.
Double_t m_MinAB
Lower limit of AB invariant mass values.
virtual ~DalitzPhaseSpace()
Destructor.