69 {
70
72
73 EvtComplex ampl;
74 EvtVector4R p4_d3 = _p4_p - _p4_d1 - _p4_d2;
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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
124
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
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
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
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
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
193 return ampl;
194}
ostream & report(Severity severity, const char *facility)
double sin(const BesAngle a)
double cos(const BesAngle a)
static const double radToDegrees