CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtResonance.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtResonance.cc
12//
13// Description: resonance-defining class
14//
15// Modification history:
16//
17// NK September 4, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <math.h>
24#include "EvtGenBase/EvtKine.hh"
29using std::endl;
30
32
33//operator
34
36{
37 if ( &n == this ) return *this;
38 _p4_p = n._p4_p;
39 _p4_d1 = n._p4_d1;
40 _p4_d2 = n._p4_d2;
41 _ampl = n._ampl;
42 _theta = n._theta;
43 _gamma = n._gamma;
44 _spin = n._spin;
45 _bwm = n._bwm;
46 return *this;
47}
48
49//constructor
50
52 const EvtVector4R& p4_d2, double ampl,
53 double theta, double gamma, double bwm, int spin):
54 _p4_p(p4_p),_p4_d1(p4_d1), _p4_d2(p4_d2),_ampl(ampl), _theta(theta),
55 _gamma(gamma), _bwm(bwm), _spin(spin) {}
56
57//amplitude function
58
60
61 double pi180inv = 1.0/EvtConst::radToDegrees;
62
63 EvtComplex ampl;
64 //EvtVector4R _p4_d3 = _p4_p-_p4_d1-_p4_d2;
65
66 //get cos of the angle between the daughters from their 4-momenta
67 //and the 4-momentum of the parent
68
69 //in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle
70 //the missing particle (not listed in the arguments) makes
71 //with part2 in the rest frame of both
72 //listed particles (12)
73
74 //angle 3 makes with 2 in rest frame of 12 (CS3)
75 double cos_phi_0 = EvtDecayAngle(_p4_p, _p4_d1+_p4_d2, _p4_d1);
76 //angle 3 makes with 1 in 12 is, of course, -cos_phi_0
77
78 switch (_spin) {
79
80 case 0 :
81 ampl=(_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
82 sqrt(_gamma/EvtConst::twoPi)*
83 (1.0/((_p4_d1+_p4_d2).mass()-_bwm-EvtComplex(0.0,0.5*_gamma))));
84 break;
85
86 case 1 :
87 ampl=(_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
88 sqrt(_gamma/EvtConst::twoPi)*
89 (cos_phi_0/((_p4_d1+_p4_d2).mass()-_bwm-EvtComplex(0.0,0.5*_gamma))));
90 break;
91
92 case 2:
93 ampl=(_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
94 sqrt(_gamma/EvtConst::twoPi)*
95 ((1.5*cos_phi_0*cos_phi_0-0.5)/((_p4_d1+_p4_d2).mass()-_bwm-EvtComplex(0.0, 0.5*_gamma))));
96 break;
97
98 case 3:
99 ampl=(_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
100 sqrt(_gamma/EvtConst::twoPi)*
101 ((2.5*cos_phi_0*cos_phi_0*cos_phi_0-1.5*cos_phi_0)/((_p4_d1+_p4_d2).mass()-_bwm-EvtComplex(0.0, 0.5*_gamma))));
102 break;
103
104 default:
105 report(DEBUG,"EvtGen") << "EvtGen: wrong spin in EvtResonance" << endl;
106 ampl = EvtComplex(0.0);
107 break;
108
109 }
110
111 return ampl;
112}
113
115
116//this function returns relativistic Breit-Wigner amplitude
117//for a given resonance (for P-wave decays of scalars only at the moment!)
118
119 EvtComplex BW;
120 EvtVector4R _p4_d3 = _p4_p-_p4_d1-_p4_d2;
121 EvtVector4R _p4_12 = _p4_d1 + _p4_d2;
122
123 //EvtVector4R _p4_pm3 = _p4_p - _p4_d3;
124 //EvtVector4R _p4_1m2 = _p4_d1 - _p4_d2;
125
126 //double msq12 = _p4_12.mass2();
127 double msq13 = (_p4_d1 + _p4_d3).mass2();
128 double msq23 = (_p4_d2 + _p4_d3).mass2();
129 double msqParent = _p4_p.mass2();
130 double msq1 = _p4_d1.mass2();
131 double msq2 = _p4_d2.mass2();
132 double msq3 = _p4_d3.mass2();
133
134 double M;
135
136 double p2 = sqrt((_p4_12.mass2() - (_p4_d1.mass() + _p4_d2.mass())*(_p4_d1.mass() + _p4_d2.mass()))*(_p4_12.mass2() - (_p4_d1.mass() - _p4_d2.mass())*(_p4_d1.mass() - _p4_d2.mass())))/(2.0*_p4_12.mass());
137
138 double p2R = sqrt((_bwm*_bwm - (_p4_d1.mass() + _p4_d2.mass())*(_p4_d1.mass() + _p4_d2.mass()))*(_bwm*_bwm - (_p4_d1.mass() - _p4_d2.mass())*(_p4_d1.mass() - _p4_d2.mass())))/(2.0*_bwm);
139
140 double gam, R;
141
142if (i == 1) {
143//consider this the K resonance
144
145 R = 2.0/(0.197);
146
147}
148else R = 5.0/(0.197);
149
150 gam = _gamma*(_bwm/_p4_12.mass())*(p2/p2R)*(p2/p2R)*(p2/p2R)*((1 + R*R*p2R*p2R)/(1 + R*R*p2*p2));
151 M = (msq13 - msq23 - (msqParent - msq3)*(msq1 - msq2)/(_bwm*_bwm))*sqrt((1 + R*R*p2R*p2R)/(1 + R*R*p2*p2));
152 //M = (msq13 - msq23 - (msqParent - msq3)*(msq1 - msq2)/(_p4_12.mass2()))*sqrt((1 + R*R*p2R*p2R)/(1 + R*R*p2*p2));
153
154 BW = sqrt(_gamma)*M/((_bwm*_bwm - _p4_12.mass2()) - EvtComplex(0.0,1.0)*gam*_bwm);
155
156 return BW;
157
158}
159
160
double mass
const Int_t n
double EvtDecayAngle(const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
Definition: EvtKine.cc:33
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ DEBUG
Definition: EvtReport.hh:53
double sin(const BesAngle a)
double cos(const BesAngle a)
static const double radToDegrees
Definition: EvtConst.hh:30
static const double twoPi
Definition: EvtConst.hh:29
EvtResonance & operator=(const EvtResonance &)
Definition: EvtResonance.cc:35
EvtComplex relBrWig(int i)
EvtComplex resAmpl()
Definition: EvtResonance.cc:59
virtual ~EvtResonance()
Definition: EvtResonance.cc:31
EvtResonance(const EvtVector4R &p4_p, const EvtVector4R &p4_d1, const EvtVector4R &p4_d2, double ampl=0.0, double theta=0.0, double gamma=0.0, double bwm=0.0, int spin=0)
Definition: EvtResonance.cc:51
double mass() const
Definition: EvtVector4R.cc:39
double mass2() const
Definition: EvtVector4R.hh:116