BOSS 8.0.0
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//
21#include "EvtResonance.hh"
22#include "EvtComplex.hh"
23#include "EvtConst.hh"
24#include "EvtKine.hh"
25#include "EvtPatches.hh"
26#include "EvtReport.hh"
27#include "EvtVector4R.hh"
28#include <math.h>
29using std::endl;
30
32
33// operator
34
36 if ( &n == this ) return *this;
37 _p4_p = n._p4_p;
38 _p4_d1 = n._p4_d1;
39 _p4_d2 = n._p4_d2;
40 _ampl = n._ampl;
41 _theta = n._theta;
42 _gamma = n._gamma;
43 _spin = n._spin;
44 _bwm = n._bwm;
45 return *this;
46}
47
48// constructor
49
51 const EvtVector4R& p4_d2, double ampl, double theta, double gamma,
52 double bwm, int spin )
53 : _p4_p( p4_p )
54 , _p4_d1( p4_d1 )
55 , _p4_d2( p4_d2 )
56 , _ampl( ampl )
57 , _theta( theta )
58 , _gamma( gamma )
59 , _bwm( bwm )
60 , _spin( spin ) {}
61
62// amplitude function
63
65
66 double pi180inv = 1.0 / EvtConst::radToDegrees;
67
68 EvtComplex ampl;
69 // EvtVector4R _p4_d3 = _p4_p-_p4_d1-_p4_d2;
70
71 // get cos of the angle between the daughters from their 4-momenta
72 // and the 4-momentum of the parent
73
74 // in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle
75 // the missing particle (not listed in the arguments) makes
76 // with part2 in the rest frame of both
77 // listed particles (12)
78
79 // angle 3 makes with 2 in rest frame of 12 (CS3)
80 double cos_phi_0 = EvtDecayAngle( _p4_p, _p4_d1 + _p4_d2, _p4_d1 );
81 // angle 3 makes with 1 in 12 is, of course, -cos_phi_0
82
83 switch ( _spin )
84 {
85
86 case 0:
87 ampl =
88 ( _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) *
89 sqrt( _gamma / EvtConst::twoPi ) *
90 ( 1.0 / ( ( _p4_d1 + _p4_d2 ).mass() - _bwm - EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
91 break;
92
93 case 1:
94 ampl = ( _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) *
95 sqrt( _gamma / EvtConst::twoPi ) *
96 ( cos_phi_0 /
97 ( ( _p4_d1 + _p4_d2 ).mass() - _bwm - EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
98 break;
99
100 case 2:
101 ampl = ( _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) *
102 sqrt( _gamma / EvtConst::twoPi ) *
103 ( ( 1.5 * cos_phi_0 * cos_phi_0 - 0.5 ) /
104 ( ( _p4_d1 + _p4_d2 ).mass() - _bwm - EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
105 break;
106
107 case 3:
108 ampl = ( _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) *
109 sqrt( _gamma / EvtConst::twoPi ) *
110 ( ( 2.5 * cos_phi_0 * cos_phi_0 * cos_phi_0 - 1.5 * cos_phi_0 ) /
111 ( ( _p4_d1 + _p4_d2 ).mass() - _bwm - EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
112 break;
113
114 default:
115 report( DEBUG, "EvtGen" ) << "EvtGen: wrong spin in EvtResonance" << endl;
116 ampl = EvtComplex( 0.0 );
117 break;
118 }
119
120 return ampl;
121}
122
124
125 // this function returns relativistic Breit-Wigner amplitude
126 // for a given resonance (for P-wave decays of scalars only at the moment!)
127
128 EvtComplex BW;
129 EvtVector4R _p4_d3 = _p4_p - _p4_d1 - _p4_d2;
130 EvtVector4R _p4_12 = _p4_d1 + _p4_d2;
131
132 // EvtVector4R _p4_pm3 = _p4_p - _p4_d3;
133 // EvtVector4R _p4_1m2 = _p4_d1 - _p4_d2;
134
135 // double msq12 = _p4_12.mass2();
136 double msq13 = ( _p4_d1 + _p4_d3 ).mass2();
137 double msq23 = ( _p4_d2 + _p4_d3 ).mass2();
138 double msqParent = _p4_p.mass2();
139 double msq1 = _p4_d1.mass2();
140 double msq2 = _p4_d2.mass2();
141 double msq3 = _p4_d3.mass2();
142
143 double M;
144
145 double p2 = sqrt( ( _p4_12.mass2() -
146 ( _p4_d1.mass() + _p4_d2.mass() ) * ( _p4_d1.mass() + _p4_d2.mass() ) ) *
147 ( _p4_12.mass2() - ( _p4_d1.mass() - _p4_d2.mass() ) *
148 ( _p4_d1.mass() - _p4_d2.mass() ) ) ) /
149 ( 2.0 * _p4_12.mass() );
150
151 double p2R = sqrt( ( _bwm * _bwm - ( _p4_d1.mass() + _p4_d2.mass() ) *
152 ( _p4_d1.mass() + _p4_d2.mass() ) ) *
153 ( _bwm * _bwm - ( _p4_d1.mass() - _p4_d2.mass() ) *
154 ( _p4_d1.mass() - _p4_d2.mass() ) ) ) /
155 ( 2.0 * _bwm );
156
157 double gam, R;
158
159 if ( i == 1 )
160 {
161 // consider this the K resonance
162
163 R = 2.0 / ( 0.197 );
164 }
165 else R = 5.0 / ( 0.197 );
166
167 gam = _gamma * ( _bwm / _p4_12.mass() ) * ( p2 / p2R ) * ( p2 / p2R ) * ( p2 / p2R ) *
168 ( ( 1 + R * R * p2R * p2R ) / ( 1 + R * R * p2 * p2 ) );
169 M = ( msq13 - msq23 - ( msqParent - msq3 ) * ( msq1 - msq2 ) / ( _bwm * _bwm ) ) *
170 sqrt( ( 1 + R * R * p2R * p2R ) / ( 1 + R * R * p2 * p2 ) );
171 // M = (msq13 - msq23 - (msqParent - msq3)*(msq1 - msq2)/(_p4_12.mass2()))*sqrt((1 +
172 // R*R*p2R*p2R)/(1 + R*R*p2*p2));
173
174 BW = sqrt( _gamma ) * M /
175 ( ( _bwm * _bwm - _p4_12.mass2() ) - EvtComplex( 0.0, 1.0 ) * gam * _bwm );
176
177 return BW;
178}
double p2[4]
const Int_t n
double EvtDecayAngle(const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
Definition EvtKine.cc:31
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ DEBUG
Definition EvtReport.hh:53
static const double radToDegrees
Definition EvtConst.hh:29
static const double twoPi
Definition EvtConst.hh:28
const EvtVector4R & p4_d2()
const EvtVector4R & p4_d1()
EvtResonance & operator=(const EvtResonance &)
EvtComplex relBrWig(int i)
double gamma()
EvtComplex resAmpl()
virtual ~EvtResonance()
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)
const EvtVector4R & p4_p()
double theta()
double mass() const
double mass2() const