BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtResonance2.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: EvtResonance2.cc
12//
13// Description: resonance-defining class
14//
15// Modification history:
16//
17// NK September 4, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtResonance2.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>
29
31
32// operator
33
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}
48
49// constructor
50
52 const EvtVector4R& p4_d2, double ampl, double theta,
53 double gamma, double bwm, int spin, bool invmass_angdenom,
54 bool usemD )
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 ) {} ///////////////////////////////////////////////////////////////////
66
67// amplitude function
68
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
const Int_t n
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ INFO
Definition EvtReport.hh:52
static const double radToDegrees
Definition EvtConst.hh:29
const EvtVector4R & p4_d2()
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)
const EvtVector4R & p4_p()
EvtResonance2 & operator=(const EvtResonance2 &)
const EvtVector4R & p4_d1()
EvtComplex resAmpl()
virtual ~EvtResonance2()
double mass() const