60 {
61
63
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 double mAB=(_p4_d1+_p4_d2).
mass();
82 double mBC=(_p4_d2+p4_d3).
mass();
83 double mAC=(_p4_d1+p4_d3).
mass();
84 double mA=_p4_d1.
mass();
85 double mB=_p4_d2.mass();
86 double mD=_p4_p.
mass();
87 double mC=p4_d3.
mass();
88
89 double mR=_bwm;
90 double gammaR=_gamma;
91 double mdenom = _invmass_angdenom ? mAB : mR;
92 double pAB=sqrt( (((mAB*mAB-mA*mA-mB*mB)*(mAB*mAB-mA*mA-mB*mB)/4.0) -
93 mA*mA*mB*mB)/(mAB*mAB));
94 double pR=sqrt( (((mR*mR-mA*mA-mB*mB)*(mR*mR-mA*mA-mB*mB)/4.0) -
95 mA*mA*mB*mB)/(mR*mR));
96
97 double pD= (((mD*mD-mR*mR-mC*mC)*(mD*mD-mR*mR-mC*mC)/4.0) -
98 mR*mR*mC*mC)/(mD*mD);
99 if ( pD>0 ) { pD=sqrt(pD); } else {pD=0;}
100 double pDAB=sqrt( (((mD*mD-mAB*mAB-mC*mC)*(mD*mD-mAB*mAB-mC*mC)/4.0) -
101 mAB*mAB*mC*mC)/(mD*mD));
102
103
104
105
106
107 double fR=1;
108 double fD=1;
109 int power=0;
110 switch (_spin) {
111 case 0:
112 fR=1.0;
113 fD=1.0;
114 power=1;
115
116 break;
117 case 1:
118 fR=sqrt(1.0+1.5*1.5*pR*pR)/sqrt(1.0+1.5*1.5*pAB*pAB);
119 fD=sqrt(1.0+5.0*5.0*pD*pD)/sqrt(1.0+5.0*5.0*pDAB*pDAB);
120
121 power=3;
122 break;
123 case 2:
124 fR = sqrt( (9+3*pow((1.5*pR),2)+pow((1.5*pR),4))/(9+3*pow((1.5*pAB),2)+pow((1.5*pAB),4)) );
125 fD = sqrt( (9+3*pow((5.0*pD),2)+pow((5.0*pD),4))/(9+3*pow((5.0*pDAB),2)+pow((5.0*pDAB),4)) );
126 power=5;
127 break;
128 default:
129 report(
INFO,
"EvtGen") <<
"Incorrect spin in EvtResonance22.cc\n";
130 }
131
132 double gammaAB= gammaR*pow(pAB/pR,power)*(mR/mAB)*fR*fR;
133
134 switch (_spin) {
135 case 0:
137 fR*fD/(mR*mR-mAB*mAB-
EvtComplex(0.0,mR*gammaAB));
138 break;
139 case 1:
141 (fR*fD*(mAC*mAC-mBC*mBC+((mD*mD-mC*mC)*(mB*mB-mA*mA)/(mdenom*mdenom)))/
142
144 break;
145 case 2:
147 fR*fD/(mR*mR-mAB*mAB-
EvtComplex(0.0,mR*gammaAB))*
148 (pow((mBC*mBC-mAC*mAC+(mD*mD-mC*mC)*(mA*mA-mB*mB)/(mdenom*mdenom)),2)-
149 (1.0/3.0)*(mAB*mAB-2*mD*mD-2*mC*mC+pow((mD*mD- mC*mC)/mdenom, 2))*
150 (mAB*mAB-2*mA*mA-2*mB*mB+pow((mA*mA-mB*mB)/mdenom,2)));
151 break;
152
153 default:
154 report(
INFO,
"EvtGen") <<
"Incorrect spin in EvtResonance22.cc\n";
155 }
156
157
158 return ampl;
159}
ostream & report(Severity severity, const char *facility)
double sin(const BesAngle a)
double cos(const BesAngle a)
static const double radToDegrees