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

#include <EvtResonance2.hh>

Public Member Functions

EvtResonance2operator= (const EvtResonance2 &)
 EvtResonance2 (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, bool invmass_angdenom=false, bool usemD=true)
virtual ~EvtResonance2 ()
const EvtVector4Rp4_p ()
const EvtVector4Rp4_d1 ()
const EvtVector4Rp4_d2 ()
double amplitude ()
double theta ()
double gamma ()
double bwm ()
int spin ()
EvtComplex resAmpl ()

Detailed Description

Definition at line 30 of file EvtResonance2.hh.

Constructor & Destructor Documentation

◆ EvtResonance2()

EvtResonance2::EvtResonance2 ( 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,
bool invmass_angdenom = false,
bool usemD = true )

Definition at line 51 of file EvtResonance2.cc.

55 : ////////////////////////////////////////////////////
56 _p4_p( p4_p )
57 , _p4_d1( p4_d1 )
58 , _p4_d2( p4_d2 )
59 , _ampl( ampl )
60 , _theta( theta )
61 , _gamma( gamma )
62 , _bwm( bwm )
63 , _spin( spin )
64 , _invmass_angdenom( invmass_angdenom )
65 , _use_mD( usemD ) {} ///////////////////////////////////////////////////////////////////
const EvtVector4R & p4_d2()
const EvtVector4R & p4_p()
const EvtVector4R & p4_d1()

Referenced by operator=().

◆ ~EvtResonance2()

EvtResonance2::~EvtResonance2 ( )
virtual

Definition at line 30 of file EvtResonance2.cc.

30{}

Member Function Documentation

◆ amplitude()

double EvtResonance2::amplitude ( )
inline

Definition at line 52 of file EvtResonance2.hh.

52{ return _ampl; }

◆ bwm()

double EvtResonance2::bwm ( )
inline

Definition at line 61 of file EvtResonance2.hh.

61{ return _bwm; }

Referenced by EvtResonance2().

◆ gamma()

double EvtResonance2::gamma ( )
inline

Definition at line 58 of file EvtResonance2.hh.

58{ return _gamma; }

Referenced by EvtResonance2().

◆ operator=()

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

Definition at line 34 of file EvtResonance2.cc.

34 {
35 if ( &n == this ) return *this;
36 _p4_p = n._p4_p;
37 _p4_d1 = n._p4_d1;
38 _p4_d2 = n._p4_d2;
39 _ampl = n._ampl;
40 _theta = n._theta;
41 _gamma = n._gamma;
42 _spin = n._spin;
43 _bwm = n._bwm;
44 _invmass_angdenom = n._invmass_angdenom;
45 _use_mD = n._use_mD;
46 return *this;
47}
const Int_t n

◆ p4_d1()

const EvtVector4R & EvtResonance2::p4_d1 ( )
inline

Definition at line 48 of file EvtResonance2.hh.

48{ return _p4_d1; }

Referenced by EvtResonance2().

◆ p4_d2()

const EvtVector4R & EvtResonance2::p4_d2 ( )
inline

Definition at line 49 of file EvtResonance2.hh.

49{ return _p4_d2; }

Referenced by EvtResonance2().

◆ p4_p()

const EvtVector4R & EvtResonance2::p4_p ( )
inline

Definition at line 47 of file EvtResonance2.hh.

47{ return _p4_p; }

Referenced by EvtResonance2().

◆ resAmpl()

EvtComplex EvtResonance2::resAmpl ( )

Definition at line 69 of file EvtResonance2.cc.

69 {
70
71 double pi180inv = 1.0 / EvtConst::radToDegrees;
72
73 EvtComplex ampl;
74 EvtVector4R p4_d3 = _p4_p - _p4_d1 - _p4_d2;
75
76 // get cos of the angle between the daughters from their 4-momenta
77 // and the 4-momentum of the parent
78
79 // in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle
80 // the missing particle (not listed in the arguments) makes
81 // with part2 in the rest frame of both
82 // listed particles (12)
83
84 // angle 3 makes with 2 in rest frame of 12 (CS3)
85 // double cos_phi_0 = EvtDecayAngle(_p4_p, _p4_d1+_p4_d2, _p4_d1);
86 // angle 3 makes with 1 in 12 is, of course, -cos_phi_0
87
88 // first compute several quantities...follow CLEO preprint 00-23
89
90 double mAB = ( _p4_d1 + _p4_d2 ).mass();
91 double mBC = ( _p4_d2 + p4_d3 ).mass();
92 double mAC = ( _p4_d1 + p4_d3 ).mass();
93 double mA = _p4_d1.mass();
94 double mB = _p4_d2.mass();
95 double mD = _p4_p.mass();
96 double mC = p4_d3.mass();
97
98 double mR = _bwm;
99 double gammaR = _gamma;
100 double mdenom =
101 _invmass_angdenom ? mAB : mR; /////////////////////////////////////////////////////////
102 double pAB =
103 sqrt( ( ( ( mAB * mAB - mA * mA - mB * mB ) * ( mAB * mAB - mA * mA - mB * mB ) / 4.0 ) -
104 mA * mA * mB * mB ) /
105 ( mAB * mAB ) );
106 double pR =
107 sqrt( ( ( ( mR * mR - mA * mA - mB * mB ) * ( mR * mR - mA * mA - mB * mB ) / 4.0 ) -
108 mA * mA * mB * mB ) /
109 ( mR * mR ) );
110
111 double md = _use_mD ? mD : mR;
112 double pD = ( ( ( mD * mD - mR * mR - mC * mC ) * ( mD * mD - mR * mR - mC * mC ) / 4.0 ) -
113 mR * mR * mC * mC ) /
114 ( md * md );
115 if ( pD > 0 ) { pD = sqrt( pD ); }
116 else { pD = 0; }
117 md = _use_mD ? mD : mAB;
118 double pDAB =
119 sqrt( ( ( ( mD * mD - mAB * mAB - mC * mC ) * ( mD * mD - mAB * mAB - mC * mC ) / 4.0 ) -
120 mAB * mAB * mC * mC ) /
121 ( md * md ) );
122
123 // report(INFO,"EvtGen") << mAB<<" "<< mBC<<" "<< mAC<<" "<< mA<<" "<< mB<<" "<< mC<<" "
124 // << mD<<" "<< mR<<" "<< gammaR<<" "<< pAB<<" "<< pR<<" "<< pD<<" "<<pDAB<<endl;
125
126 double fR = 1;
127 double fD = 1;
128 int power = 0;
129 switch ( _spin )
130 {
131 case 0:
132 fR = 1.0;
133 fD = 1.0;
134 power = 1;
135 // report(INFO,"EvtGen") << "fR="<<fR<<" fD="<<fD<<endl;
136 break;
137 case 1:
138 fR = sqrt( 1.0 + 1.5 * 1.5 * pR * pR ) / sqrt( 1.0 + 1.5 * 1.5 * pAB * pAB );
139 fD = sqrt( 1.0 + 5.0 * 5.0 * pD * pD ) / sqrt( 1.0 + 5.0 * 5.0 * pDAB * pDAB );
140 // report(INFO,"EvtGen") << "fR="<<fR<<" fD="<<fD<<endl;
141 power = 3;
142 break;
143 case 2: ///////////////////////////////////////////////////////////
144 fR = sqrt( ( 9 + 3 * pow( ( 1.5 * pR ), 2 ) + pow( ( 1.5 * pR ), 4 ) ) /
145 ( 9 + 3 * pow( ( 1.5 * pAB ), 2 ) +
146 pow( ( 1.5 * pAB ),
147 4 ) ) ); //////////////////////////////////////////////////////////
148 fD = sqrt(
149 ( 9 + 3 * pow( ( 5.0 * pD ), 2 ) + pow( ( 5.0 * pD ), 4 ) ) /
150 ( 9 + 3 * pow( ( 5.0 * pDAB ), 2 ) +
151 pow( ( 5.0 * pDAB ), 4 ) ) ); //////////////////////////////////////////////////
152 power = 5; ///////////////////////////////////////////////////
153 break; ///////////////////////////////////////////////////////////
154 default: report( INFO, "EvtGen" ) << "Incorrect spin in EvtResonance22.cc\n";
155 }
156
157 double gammaAB = gammaR * pow( pAB / pR, power ) * ( mR / mAB ) * fR * fR;
158 // report(INFO,"EvtGen") << gammaAB<<endl;
159 switch ( _spin )
160 {
161 case 0:
162 ampl = _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) * fR * fD /
163 ( mR * mR - mAB * mAB - EvtComplex( 0.0, mR * gammaAB ) );
164 break;
165 case 1:
166 ampl =
167 _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) *
168 ( fR * fD *
169 ( mAC * mAC - mBC * mBC +
170 ( ( mD * mD - mC * mC ) * ( mB * mB - mA * mA ) /
171 ( mdenom *
172 mdenom ) ) ) / //////////////////////////////////////////////////////////////////
173 //(fR*fD*(mAC*mAC-mBC*mBC+((mD*mD-mC*mC)*(mB*mB-mA*mA)/(mR*mR)))/
174 ( mR * mR - mAB * mAB - EvtComplex( 0.0, mR * gammaAB ) ) );
175 break;
176 case 2:
177 ampl = _ampl * EvtComplex( cos( _theta * pi180inv ), sin( _theta * pi180inv ) ) * fR * fD /
178 ( mR * mR - mAB * mAB - EvtComplex( 0.0, mR * gammaAB ) ) *
179 ( pow( ( mBC * mBC - mAC * mAC +
180 ( mD * mD - mC * mC ) * ( mA * mA - mB * mB ) / ( mdenom * mdenom ) ),
181 2 ) -
182 ( 1.0 / 3.0 ) *
183 ( mAB * mAB - 2 * mD * mD - 2 * mC * mC +
184 pow( ( mD * mD - mC * mC ) / mdenom, 2 ) ) *
185 ( mAB * mAB - 2 * mA * mA - 2 * mB * mB +
186 pow( ( mA * mA - mB * mB ) / mdenom, 2 ) ) );
187 break;
188
189 default: report( INFO, "EvtGen" ) << "Incorrect spin in EvtResonance22.cc\n";
190 }
191
192 // report(INFO,"EvtGen") <<"The amplitude is "<<ampl<<endl;
193 return ampl;
194}
double mass
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ INFO
Definition EvtReport.hh:52
static const double radToDegrees
Definition EvtConst.hh:29
double mass() const

Referenced by EvtDDalitz::decay().

◆ spin()

int EvtResonance2::spin ( )
inline

Definition at line 64 of file EvtResonance2.hh.

64{ return _spin; }

Referenced by EvtResonance2().

◆ theta()

double EvtResonance2::theta ( )
inline

Definition at line 55 of file EvtResonance2.hh.

55{ return _theta; }

Referenced by EvtResonance2().


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