]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenBase/EvtDalitzPlot.hh
Centrality update (Alberica)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtDalitzPlot.hh
CommitLineData
da0e9ce3 1//-----------------------------------------------------------------------
2// File and Version Information:
3// $Id: EvtDalitzPlot.hh,v 1.16 2003/06/20 17:20:03 dvoretsk Exp $
4//
5// Environment:
6// This software is part of the EvtGen package developed jointly
7// for the BaBar and CLEO collaborations. If you use all or part
8// of it, please give an appropriate acknowledgement.
9//
10// Copyright Information:
11// Copyright (C) 1998 Caltech, UCSB
12//
13// Module creator:
14// Alexei Dvoretskii, Caltech, 2001-2002.
15//-----------------------------------------------------------------------
16
17#ifndef EVT_DALITZ_PLOT_HH
18#define EVT_DALITZ_PLOT_HH
19
20#include <assert.h>
21#include "EvtGenBase/EvtCyclic3.hh"
22#include "EvtGenBase/EvtTwoBodyVertex.hh"
23#include "EvtGenBase/EvtDecayMode.hh"
24
25class EvtDalitzPlot {
26public:
27
28 EvtDalitzPlot();
29 EvtDalitzPlot(double mA, double mB, double mC, double bigM, double ldel = 0., double rdel = 0.);
30 EvtDalitzPlot(const EvtDecayMode& mode, double ldel = 0., double rdel = 0.);
31 EvtDalitzPlot(const EvtDalitzPlot& other);
32 ~EvtDalitzPlot();
33 bool operator==(const EvtDalitzPlot& other) const;
34 const EvtDalitzPlot* clone() const;
35
36
37 // Absolute limits for masses squared in the Dalitz plot
38 // e.g. qAbsMin(0) is the lowest possible value
39 // for m2 of particles {12}
40
41 double qAbsMin(EvtCyclic3::Pair i) const;
42 double qAbsMax(EvtCyclic3::Pair i) const;
43 double mAbsMin(EvtCyclic3::Pair i) const;
44 double mAbsMax(EvtCyclic3::Pair i) const;
45
46 // Absolute limits for Zemach coordinate qres and qhel (approximate)
47 // qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
48
49 double qResAbsMin(EvtCyclic3::Pair i) const;
50 double qResAbsMax(EvtCyclic3::Pair i) const;
51 double qHelAbsMin(EvtCyclic3::Pair i) const;
52 double qHelAbsMax(EvtCyclic3::Pair i) const;
53 inline double qSumMin() const { return sum() + _ldel; }
54 inline double qSumMax() const { return sum() + _rdel; }
55 inline bool fuzzy() const { return (_rdel - _ldel != 0.); }
56
57 // Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are used).
58 // Very large numbers of N can result in a very long calculation. It should not
59 // matter which two pairs f variables are used. The integral should eventually
60 // converge to the same number
61
62 double getArea(int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB, EvtCyclic3::Pair j = EvtCyclic3::BC) const;
63
64 // Limits for masses squared when one mass squared is known
65
66 double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
67 double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
68
69
70 // Coordinate transformations
71
72 double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const;
73 double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
74 double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
75
76 double q(EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const;
77
78 // |J| of transformation of qi to cosTh in the rest-frame of j
79
80 double jacobian(EvtCyclic3::Pair i, double q) const;
81
82
83 // Given resonance index and mass returns decay
84 // and birth vertices
85
86 EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const;
87 EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const;
88
89 // Accessors
90
91 double sum() const;
92 inline double bigM() const { return _bigM; }
93 inline double mA() const { return _mA; }
94 inline double mB() const { return _mB; }
95 inline double mC() const { return _mC; }
96 double m(EvtCyclic3::Index i) const;
97
98
99 void print() const;
100
101 void sanityCheck() const;
102
103protected:
104
105 // Defines two dimensional dalitz plot
106
107 double _mA;
108 double _mB;
109 double _mC;
110 double _bigM;
111
112 // Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
113
114 double _ldel;
115 double _rdel;
116
117};
118
119#endif
120
121