34 double As = std::sqrt(
params[2]);
35 double &GammaS =
params[3];
36 double &DeltaGamma =
params[4];
37 double &DeltaM =
params[5];
39 double &delta_p =
params[7];
40 double &delta_l =
params[8];
45 double &tagprob =
x[4];
49 if ( 1. - As*As - A0*A0 - Al*Al >= 0 ) Ap = std::sqrt(1. - As*As - A0*A0 - Al*Al);
53 double A[10], B1[10], B2[10],
C[10];
67 A[8] = 0.5 * As*Ap *
std::sin(delta_p - delta_s);
73 double gammaH = GammaS - DeltaGamma/2.;
74 double gammaL = GammaS + DeltaGamma/2.;
75 double tauL = 1./gammaL;
76 double tauH = 1./gammaH;
77 double norm1 = (1./(tauL*(1.+cosphiS) + tauH*(1.-cosphiS)));
78 double norm2 = (1./(tauL*(1.-cosphiS) + tauH*(1.+cosphiS)));
79 double norm3 = (1./sqrt((tauL-tauH)*(tauL-tauH)*sinphiS*sinphiS+4.*tauL*tauH));
81 double ExpGSSinMT = 0.0;
82 double ExpGSCosMT = 0.0;
92 B1[0] = ( (1. + cosphiS) * ExpGL + (1. - cosphiS) * ExpGH ) * norm1;
94 B1[2] = ( (1. - cosphiS) * ExpGL + (1. + cosphiS) * ExpGH ) * norm2;
96 B1[4] = 0.5 *
std::cos(delta_p - delta_l) * sinphiS * (ExpGL - ExpGH) * norm3;
97 B1[5] = 0.5 *
std::cos(delta_p) * sinphiS * (ExpGL - ExpGH) * norm3;
99 B1[7] = 0.5 * sinphiS *
std::sin(delta_l - delta_s) * (ExpGL - ExpGH) * norm3;
101 B1[9] = 0.5 * sinphiS *
std::sin(delta_s) * (ExpGH - ExpGL) * norm3;
108 if( std::abs(tagprob - 0.5) > 1
e-6 ){
115 B2[0] = 2. * ExpGSSinMT * sinphiS * norm1;
117 B2[2] = -2. * ExpGSSinMT * sinphiS * norm2;
119 B2[4] = ( ExpGSCosMT *
std::sin(delta_p - delta_l) - cosphiS *
std::cos(delta_p - delta_l) * ExpGSSinMT ) * norm3;
120 B2[5] = ( ExpGSCosMT *
std::sin(delta_p) - cosphiS *
std::cos(delta_p) * ExpGSSinMT ) * norm3;
122 B2[7] = ( ExpGSCosMT *
std::cos(delta_l - delta_s) - cosphiS *
std::sin(delta_l - delta_s) * ExpGSSinMT ) * norm3;
124 B2[9] = ( ExpGSCosMT *
std::cos(delta_s) + cosphiS *
std::sin(delta_s) * ExpGSSinMT ) * norm3;
129 for (
int k = 0;
k<10;
k++) B2[
k] = 0;
137 double &costhetal =
x[1];
138 double &costhetak =
x[2];
141 double sinsqthetal = 1. - (costhetal * costhetal);
142 double sinsqthetak = 1. - (costhetak * costhetak);
143 double cossqthetak = costhetak * costhetak;
145 double cossqchi = coschi * coschi;
147 double sinsqchi = sinchi * sinchi;
148 double sin2thetak = 2. * std::sqrt(1. - costhetak * costhetak) * costhetak;
149 double sin2thetal = 2. * std::sqrt(1. - costhetal * costhetal) * costhetal;
150 double sin2chi =
std::sin(2. * chi);
151 double sinthetak = std::sqrt(sinsqthetak);
153 C[0] = 2. * cossqthetak * sinsqthetal;
154 C[1] = sinsqthetak * (1 - sinsqthetal * cossqchi);
155 C[2] = sinsqthetak * (1 - sinsqthetal * sinsqchi);
156 C[3] = 1. / std::sqrt(2.) * sin2thetak * sin2thetal * coschi;
157 C[4] = -1. * sinsqthetak * sinsqthetal * sin2chi;
158 C[5] = 1. / std::sqrt(2.) * sin2thetak * sin2thetal * sinchi;
159 C[6] = 2. / 3. * sinsqthetal;
160 C[7] = 1. / 3. * std::sqrt(6.) * sinthetak * sin2thetal * coschi;
161 C[8] = 1. / 3. * std::sqrt(6.) * sinthetak * sin2thetal * sinchi;
162 C[9] = 4. / 3. * std::sqrt(3.) * costhetak * sinsqthetal;
168 double &costheta =
x[1];
169 double &cospsi =
x[2];
172 double sinsqtheta = 1. - (costheta * costheta);
173 double sinsqpsi = 1. - (cospsi * cospsi);
174 double cossqpsi = cospsi * cospsi;
175 double sin2theta = 2. * std::sqrt(1. - costheta * costheta) * costheta;
176 double sin2psi = 2. * std::sqrt(1. - cospsi * cospsi) * cospsi;
178 double cossqphi = cosphi * cosphi;
180 double sinsqphi = sinphi * sinphi;
182 double sinpsi = std::sqrt(1. - cospsi*cospsi);
184 C[0] = 2. * cossqpsi * (1. - sinsqtheta * cossqphi);
185 C[1] = sinsqpsi * (1.-sinsqtheta * sinsqphi);
186 C[2] = sinsqpsi * sinsqtheta;
187 C[3] = 1. / sqrt(2.) * sin2psi * sinsqtheta * sin2phi;
188 C[4] = -1. * sinsqpsi * sin2theta * sinphi;
189 C[5] = 1. / sqrt(2.) * sin2psi * sin2theta * cosphi;
190 C[6] = 2. / 3. *(1. - sinsqtheta * cossqphi);
191 C[7] = 1. / 3. *sqrt(6.) *sinpsi * sinsqtheta * sin2phi;
192 C[8] = 1. / 3. *sqrt(6.) *sinpsi * sin2theta * cosphi;
193 C[9] = 4. / 3. *sqrt(3.) *cospsi * (1. - sinsqtheta * cossqphi);
204 for (
int i=0;
i<10; ++
i ) {
206 Wplus +=
A[
i] * ( B1[
i] + B2[
i] ) *
C[
i];
207 Wminus +=
A[
i] * ( B1[
i] - B2[
i] ) *
C[
i];
211 double value = tagprob * Wplus + (1. - tagprob) * Wminus;