BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtResonance Class Reference

#include <EvtResonance.hh>

Public Member Functions

EvtResonanceoperator= (const 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)
virtual ~EvtResonance ()
const EvtVector4Rp4_p ()
const EvtVector4Rp4_d1 ()
const EvtVector4Rp4_d2 ()
double amplitude ()
double theta ()
double gamma ()
double bwm ()
int spin ()
EvtComplex resAmpl ()
EvtComplex relBrWig (int i)

Detailed Description

Definition at line 30 of file EvtResonance.hh.

Constructor & Destructor Documentation

◆ EvtResonance()

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 )

Definition at line 50 of file EvtResonance.cc.

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 ) {}
const EvtVector4R & p4_d2()
const EvtVector4R & p4_d1()
double gamma()
const EvtVector4R & p4_p()
double theta()

Referenced by operator=().

◆ ~EvtResonance()

EvtResonance::~EvtResonance ( )
virtual

Definition at line 31 of file EvtResonance.cc.

31{}

Member Function Documentation

◆ amplitude()

double EvtResonance::amplitude ( )
inline

Definition at line 50 of file EvtResonance.hh.

50{ return _ampl; }

◆ bwm()

double EvtResonance::bwm ( )
inline

Definition at line 59 of file EvtResonance.hh.

59{ return _bwm; }

Referenced by EvtResonance().

◆ gamma()

double EvtResonance::gamma ( )
inline

Definition at line 56 of file EvtResonance.hh.

56{ return _gamma; }

Referenced by EvtResonance().

◆ operator=()

EvtResonance & EvtResonance::operator= ( const EvtResonance & n)

Definition at line 35 of file EvtResonance.cc.

35 {
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}
const Int_t n

◆ p4_d1()

const EvtVector4R & EvtResonance::p4_d1 ( )
inline

Definition at line 46 of file EvtResonance.hh.

46{ return _p4_d1; }

Referenced by EvtResonance().

◆ p4_d2()

const EvtVector4R & EvtResonance::p4_d2 ( )
inline

Definition at line 47 of file EvtResonance.hh.

47{ return _p4_d2; }

Referenced by EvtResonance().

◆ p4_p()

const EvtVector4R & EvtResonance::p4_p ( )
inline

Definition at line 45 of file EvtResonance.hh.

45{ return _p4_p; }

Referenced by EvtResonance().

◆ relBrWig()

EvtComplex EvtResonance::relBrWig ( int i)

Definition at line 123 of file EvtResonance.cc.

123 {
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]
double mass() const
double mass2() const
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)
Definition TUtil.h:22

◆ resAmpl()

EvtComplex EvtResonance::resAmpl ( )

Definition at line 64 of file EvtResonance.cc.

64 {
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}
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

◆ spin()

int EvtResonance::spin ( )
inline

Definition at line 62 of file EvtResonance.hh.

62{ return _spin; }

Referenced by EvtResonance().

◆ theta()

double EvtResonance::theta ( )
inline

Definition at line 53 of file EvtResonance.hh.

53{ return _theta; }

Referenced by EvtResonance().


The documentation for this class was generated from the following files: