evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtDalitzPoint.hh
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #ifndef EVT_DALITZ_POINT_HH
22 #define EVT_DALITZ_POINT_HH
23 
24 #include "EvtGenBase/EvtCyclic3.hh"
27 
28 // This class describes the complete kinematics of the Dalitz decay.
29 // It holds all the six invariant momentum products, three daughter
30 // particle masses and three invariant masses of pairs of particles.
31 // This description is completely symmetric with respect to particle
32 // permutations.
33 //
34 // Another way to slice the six coordinate is to make a transformation
35 // to the mass of the decaying particle. The four masses make up a
36 // Dalitz plot. The other two are coordinates of a point in the plot.
37 
38 class EvtDalitzPoint final {
39  public:
41  EvtDalitzPoint( double mA, double mB, double mC, double qAB, double qBC,
42  double qCA );
43  EvtDalitzPoint( double mA, double mB, double mC, EvtCyclic3::Pair i,
44  double qres, double qhel, double qsum );
46 
49 
50  double q( EvtCyclic3::Pair ) const;
51  double bigM() const;
52  double m( EvtCyclic3::Index ) const;
53 
54  // Zemach variables
55 
56  double qres( EvtCyclic3::Pair i ) const;
57  double qhel( EvtCyclic3::Pair i ) const;
58  double qsum() const;
59 
60  // Kinematic quantities
61  //
62  // pp - 4 momentum product
63  // e,p,cosTh - energy/moementum in rest-frame of j
64 
65  double qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const;
66  double qMax( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const;
67  double pp( EvtCyclic3::Index i, EvtCyclic3::Index j ) const;
68  double e( EvtCyclic3::Index i, EvtCyclic3::Pair j ) const;
69  double p( EvtCyclic3::Index i, EvtCyclic3::Pair j ) const;
70  double cosTh( EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes ) const;
71 
72  bool isValid() const;
73 
74  void print() const;
75 
76  private:
77  double _mA, _mB, _mC; // masses
78  double _qAB, _qBC, _qCA; // masses squared
79 };
80 
81 #endif
bool isValid() const
double bigM() const
double qhel(EvtCyclic3::Pair i) const
EvtDalitzCoord getDalitzPoint(EvtCyclic3::Pair i, EvtCyclic3::Pair j) const
double qres(EvtCyclic3::Pair i) const
void print() const
double m(EvtCyclic3::Index) const
EvtDalitzPlot getDalitzPlot() const
double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j) const
double pp(EvtCyclic3::Index i, EvtCyclic3::Index j) const
double q(EvtCyclic3::Pair) const
double qsum() const
double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j) const
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j) const
double cosTh(EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes) const
double e(EvtCyclic3::Index i, EvtCyclic3::Pair j) const