89 fDsm21 = 7.390e-5*CLHEP::eV*CLHEP::eV;
90 fDsm32 = 2.449e-3*CLHEP::eV*CLHEP::eV;
91 fdcp = CLHEP::degree * 222.;
98 fDsm21 = 7.3900e-5*CLHEP::eV*CLHEP::eV;
99 fDsm32 = -2.509e-3*CLHEP::eV*CLHEP::eV;
100 fdcp = CLHEP::degree * 285.;
102 G4double c12(1.), s12(0.), c13(1.), s13(0.), c23(1.), s23(0.);
104 s12 = std::sqrt( fSin2t12 );
105 s23 = std::sqrt( fSin2t23 );
106 s13 = std::sqrt( fSin2t13 );
108 c12 = std::sqrt( 1. - fSin2t12 );
109 c23 = std::sqrt( 1. - fSin2t23 );
110 c13 = std::sqrt( 1. - fSin2t13 );
114 G4complex u11, u12, u13, u21, u22, u23, u31, u32, u33;
116 u11 = c12*c13; u12 = c13*s12; u13 = s13*conj(expdcp);
118 u21 = -s12*c23 - s13*s23*c12*expdcp; u22 = c12*c23 - s12*s23*s13*expdcp; u23 = c13*s23;
120 u31 = s12*s23 - s13*c12*c23*expdcp; u32 = -c12*s23 - s12*s13*c23*expdcp; u33 = c13*c23;
126 fUdcp[0][0] = u11; fUdcp[0][1] = u12; fUdcp[0][2] = u13;
127 fUdcp[1][0] = u21; fUdcp[1][1] = u22; fUdcp[1][2] = u23;
128 fUdcp[2][0] = u31; fUdcp[2][1] = u32; fUdcp[2][2] = u33;
130 G4double m12, m13, m21, m23, m31, m32;
132 m12 = -fDsm21; m13 = -fDsm21-fDsm32;
133 m21 = -m12; m23 = -fDsm32;
134 m31 = -m13; m32 = -m23;
136 fDms[0][0] = fDms[1][1] = fDms[2][2] = 0.;
137 fDms[0][1] = m12; fDms[0][2] = m13;
138 fDms[1][0] = m21; fDms[1][2] = m23;
139 fDms[2][0] = m31; fDms[2][1] = m32;
240 G4double probab(0.), probac(0.), probaa(0.), rr(0.), elCof(0.), delta[3][3];
244 if ( aa == 0 ) { bb = 1; cc = 2; }
245 else if( aa == 1 ) { bb = 0; cc = 2; }
246 else if( aa == 2 ) { bb = 0; cc = 1; }
248 elCof = 0.5*Lnu/Enu/CLHEP::hbarc;
250 G4complex tmp(0.,0.), sum1(0.,0.), sum2(0.,0.), expdel;
252 for(
G4int i = 0; i < 3; ++i )
254 for(
G4int j = 0; j < 3; ++j ) delta[i][j] = fDms[i][j]*elCof;
258 for(
G4int j = 0; j < 3; ++j )
260 for(
G4int k = j+1; k < 3; ++k )
262 expdel =
G4complex( std::cos( delta[k][j] ), -std::sin( delta[k][j] ) );
264 tmp = conj( fUdcp[bb][k] ) * fUdcp[aa][k] * fUdcp[bb][j] * conj( fUdcp[aa][j] );
266 sum1 += tmp * std::sin( delta[k][j]*0.5 ) * std::sin( delta[k][j]*0.5 );
267 sum2 += tmp * std::sin( delta[k][j] );
270 probab = 2.*imag(sum2) - 4.*real(sum1);
274 for(
G4int j = 0; j < 3; ++j )
276 for(
G4int k = j+1; k < 3; ++k )
278 expdel =
G4complex( std::cos( delta[k][j] ), -std::sin( delta[k][j] ) );
280 tmp = conj( fUdcp[cc][k] ) * fUdcp[aa][k] * fUdcp[cc][j] * conj( fUdcp[aa][j] );
282 sum1 += tmp * std::sin( delta[k][j]*0.5 ) * std::sin( delta[k][j]*0.5 );
283 sum2 += tmp * std::sin( delta[k][j] );
286 probac = 2.*imag(sum2) - 4.*real(sum1);
290 for(
G4int j = 0; j < 3; ++j )
292 for(
G4int k = j+1; k < 3; ++k )
294 expdel =
G4complex( std::cos( delta[k][j] ), -std::sin( delta[k][j] ) );
296 tmp = fUdcp[bb][k] * conj( fUdcp[aa][k] ) *conj( fUdcp[bb][j] ) * fUdcp[aa][j];
298 sum1 += tmp * std::sin( delta[k][j]*0.5 ) * std::sin( delta[k][j]*0.5 );
299 sum2 += tmp * std::sin( delta[k][j] );
302 probab = 2.*imag(sum2) - 4.*real(sum1);
305 for(
G4int j = 0; j < 3; ++j )
307 for(
G4int k = j+1; k < 3; ++k )
309 expdel =
G4complex( std::cos( delta[k][j] ), -std::sin( delta[k][j] ) );
311 tmp = fUdcp[cc][k] * conj( fUdcp[aa][k] ) * conj( fUdcp[cc][j] ) * fUdcp[aa][j];
313 sum1 += tmp * std::sin( delta[k][j]*0.5 ) * std::sin( delta[k][j]*0.5 );
314 sum2 += tmp * std::sin( delta[k][j] );
317 probac = 2.*imag(sum2) - 4.*real(sum1);
319 probaa = 1. - probab - probac;
327 if( rr <= probab )
return bb;
334 if ( rr <= probab )
return bb;
335 else if( rr > probab && rr <= probab + probac )
return cc;
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
void AddSecondary(G4Track *aSecondary)
void Initialize(const G4Track &) override
void ProposeTrackStatus(G4TrackStatus status)
void ProposeWeight(G4double finalWeight)