88 if (cosl < 1.
E-30) cosl = 1.E-30;
91 G4Vector3D vVN(-vTN.
z()*vUN.y(), vTN.
z()*vUN.x(), cosl );
95 vUperp *= 1./vUperp.
mag();
96 vVperp *= 1./vVperp.
mag();
100 G4cout <<
" CHECK: vUN " << vUN <<
" = " << vUperp <<
" diff " << (vUN-vUperp).mag() <<
G4endl;
101 G4cout <<
" CHECK: vVN " << vVN <<
" = " << vVperp <<
" diff " << (vVN-vVperp).mag() <<
G4endl;
117 G4cout <<
" dir="<<dir<<
" invCosTheta "<<invCosTheta <<
G4endl;
127 if( magHPre != 0. ) {
131 G4double sinz = -HPre*vUperp * magHPreM2;
132 G4double cosz = HPre*vVperp * magHPreM2;
134 transfM[1][3] = -Q*dir.
y()*sinz;
135 transfM[1][4] = -Q*dir.
z()*sinz;
136 transfM[2][3] = -Q*dir.
y()*cosz*invCosTheta;
137 transfM[2][4] = -Q*dir.
z()*cosz*invCosTheta;
142 transfM[1][1] = dir.
x()*dVU;
143 transfM[1][2] = dir.
x()*dVV;
144 transfM[2][1] = dir.
x()*dUU*invCosTheta;
145 transfM[2][2] = dir.
x()*dUV*invCosTheta;
188 std::ios::fmtflags orig_flags = out.flags();
190 out.setf(std::ios::fixed,std::ios::floatfield);
196 out.flags(orig_flags);
210 if( std::fabs(stepLengthCm) <= kCarTolerance/
cm )
return 0;
225 if( vpPre.
mag() == vpPre.
z() ) vpPre.
setX( 1.E-6*
MeV );
226 if( vpPost.
mag() == vpPost.
z() ) vpPost.
setX( 1.E-6*
MeV );
232 G4cout <<
"G4EP: vposPre " << vposPre << G4endl
233 <<
"G4EP: vposPost " << vposPost <<
G4endl;
234 G4cout <<
"G4EP: vpPre " << vpPre << G4endl
235 <<
"G4EP: vpPost " << vpPost <<
G4endl;
237 G4cout <<
"G4EP: stepLengthCm " << stepLengthCm <<
G4endl;
241 if( pPre == 0. || pPost == 0 )
return 2;
244 G4double deltaPInv = pInvPost - pInvPre;
245 if(
iverbose >= 2 )
G4cout <<
"G4EP: pInvPre" << pInvPre<<
" pInvPost:" << pInvPost<<
" deltaPInv:" << deltaPInv<<
G4endl;
250 if(
iverbose >= 2 )
G4cout <<
"G4EP: vpPreNorm " << vpPreNorm <<
" vpPostNorm " << vpPostNorm <<
G4endl;
252 if( 1. - std::fabs(vpPreNorm.
z()) < kCarTolerance )
return 4;
253 if( 1. - std::fabs(vpPostNorm.
z()) < kCarTolerance )
return 4;
265 transf[3][2] = stepLengthCm * sinpPost;
266 transf[4][1] = stepLengthCm;
267 for(
size_t ii=0;ii < 5; ii++ ){
272 G4cout <<
"G4EP: transf matrix neutral " << transf;
288 G4double pos1[3]; pos1[0] = vposPre.
x()*
cm; pos1[1] = vposPre.
y()*
cm; pos1[2] = vposPre.
z()*
cm;
289 G4double pos2[3]; pos2[0] = vposPost.
x()*
cm; pos2[1] = vposPost.
y()*
cm; pos2[2] = vposPost.
z()*
cm;
293 if( !field )
return 0;
298 if( charge != 0. && field ) {
309 << h1[0] <<
", " << h1[1] <<
", " << h1[2] <<
G4endl;
310 G4cout <<
"G4EP: pos1/mm = "
311 << pos1[0] <<
", " << pos1[1] <<
", " << pos1[2] <<
G4endl;
312 G4cout <<
"G4EP: pos2/mm = "
313 << pos2[0] <<
", " << pos2[1] <<
", " << pos2[2] <<
G4endl;
314 G4cout <<
"G4EP: B-filed in KGauss HPre " << HPre << G4endl
315 <<
"G4EP: in KGauss HPost " << HPost <<
G4endl;
319 if( magHPre + magHPost != 0. ) {
323 if( magHPost != 0. ){
324 gam = HPost * vpPostNorm / magHPost;
326 gam = HPre * vpPreNorm / magHPre;
331 G4double diffHSqr = ( HPre * pInvPre - HPost * pInvPost ).mag2();
335 G4cout <<
" G4EP: gam " << gam <<
" alphaSqr " << alphaSqr
336 <<
" diffHSqr " << diffHSqr <<
G4endl;
340 if( diffHSqr * alphaSqr > delhp6Sqr )
return 3;
344 G4double pInvAver = 1./(pInvPre + pInvPost );
347 G4ThreeVector vHAverNorm( (HPre*pInvPre + HPost*pInvPost ) * pInvAver * charge * CFACT8 );
350 vHAverNorm *= invHAver;
352 if(
iverbose >= 2 )
G4cout <<
" G4EP: HaverNorm " << vHAverNorm <<
" magHAver " << HAver <<
" charge " << charge<<
G4endl;
357 G4double thetaAver = QAver * stepLengthCm;
358 G4double sinThetaAver = std::sin(thetaAver);
359 G4double cosThetaAver = std::cos(thetaAver);
360 G4double gamma = vHAverNorm * vpPostNorm;
364 if(
iverbose >= 2 )
G4cout <<
" G4EP: AN2 " << AN2 <<
" gamma:"<<gamma<<
" theta="<< thetaAver<<
G4endl;
372 vpPreNorm.
z()*vUPre.x(),
373 vpPreNorm.
x()*vUPre.y() - vpPreNorm.
y()*vUPre.x() );
376 AU = 1./vpPostNorm.
perp();
382 vpPostNorm.z()*vUPost.x(),
383 vpPostNorm.x()*vUPost.y() - vpPostNorm.y()*vUPost.x() );
386 if(
iverbose >= 2 )
G4cout <<
" G4EP: AU " << AU <<
" vUPre " << vUPre <<
" vVPre " << vVPre <<
" vUPost " << vUPost <<
" vVPost " << vVPost <<
G4endl;
388 G4Point3D deltaPos( vposPre - vposPost );
396 if(
iverbose >= 2)
G4cout <<
" G4EP: QP " << QP <<
" QAver " << QAver <<
" pAver " << pAver <<
G4endl;
398 G4double ANV = -( vHAverNorm.
x()*vUPost.x() + vHAverNorm.
y()*vUPost.y() );
399 G4double ANU = ( vHAverNorm.
x()*vVPost.x() + vHAverNorm.
y()*vVPost.y() + vHAverNorm.
z()*vVPost.z() );
400 G4double OMcosThetaAver = 1. - cosThetaAver;
402 if(
iverbose >= 2)
G4cout <<
"G4EP: OMcosThetaAver " << OMcosThetaAver <<
" cosThetaAver " << cosThetaAver <<
" thetaAver " << thetaAver <<
" QAver " << QAver <<
" stepLengthCm " << stepLengthCm <<
G4endl;
404 G4double TMSINT = thetaAver - sinThetaAver;
410 vHAverNorm.
z() * vUPre.x(),
411 vHAverNorm.
x() * vUPre.y() - vHAverNorm.
y() * vUPre.x() );
415 G4ThreeVector vHVPre( vHAverNorm.
y() * vVPre.z() - vHAverNorm.
z() * vVPre.y(),
416 vHAverNorm.
z() * vVPre.x() - vHAverNorm.
x() * vVPre.z(),
417 vHAverNorm.
x() * vVPre.y() - vHAverNorm.
y() * vVPre.x() );
425 transf[0][0] = 1.-deltaPInv*pAver*(1.+(vpPostNorm.x()*deltaPos.
x()+vpPostNorm.y()*deltaPos.
y()+vpPostNorm.z()*deltaPos.
z())/stepLengthCm)
428 transf[0][1] = -deltaPInv/thetaAver*
429 ( TMSINT*gamma*(vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z()) +
430 sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) +
431 OMcosThetaAver*(vHVPre.x()*vpPostNorm.x()+vHVPre.y()*vpPostNorm.y()+vHVPre.z()*vpPostNorm.z()) );
433 transf[0][2] = -sinpPre*deltaPInv/thetaAver*
434 ( TMSINT*gamma*(vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() ) +
435 sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) +
436 OMcosThetaAver*(vHUPre.x()*vpPostNorm.x()+vHUPre.y()*vpPostNorm.y()+vHUPre.z()*vpPostNorm.z()) );
438 transf[0][3] = -deltaPInv/stepLengthCm*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() );
440 transf[0][4] = -deltaPInv/stepLengthCm*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z());
443 transf[1][0] = -QP*ANV*(vpPostNorm.x()*deltaPos.
x()+vpPostNorm.y()*deltaPos.
y()+vpPostNorm.z()*deltaPos.
z())
444 *(1.+deltaPInv*pAver);
446 if(
iverbose >= 3)
G4cout <<
"ctransf10= " << transf[1][0] <<
" " << -QP<<
" " << ANV<<
" " << vpPostNorm.x()<<
" " << deltaPos.
x()<<
" " << vpPostNorm.y()<<
" " << deltaPos.
y()<<
" " << vpPostNorm.z()<<
" " << deltaPos.
z()
447 <<
" " << deltaPInv<<
" " << pAver <<
G4endl;
450 transf[1][1] = cosThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) +
451 sinThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) +
452 OMcosThetaAver*(vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z())*
453 (vHAverNorm.
x()*vVPost.x()+vHAverNorm.
y()*vVPost.y()+vHAverNorm.
z()*vVPost.z()) +
454 ANV*( -sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) +
455 OMcosThetaAver*(vVPre.x()*AN2.
x()+vVPre.y()*AN2.
y()+vVPre.z()*AN2.
z()) -
456 TMSINT*gamma*(vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z()) );
458 transf[1][2] = cosThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) +
459 sinThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) +
460 OMcosThetaAver*(vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() )*
461 (vHAverNorm.
x()*vVPost.x()+vHAverNorm.
y()*vVPost.y()+vHAverNorm.
z()*vVPost.z()) +
462 ANV*( -sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) +
463 OMcosThetaAver*(vUPre.x()*AN2.
x()+vUPre.y()*AN2.
y() ) -
464 TMSINT*gamma*(vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() ) );
465 transf[1][2] = sinpPre*transf[1][2];
467 transf[1][3] = -QAver*ANV*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() );
469 transf[1][4] = -QAver*ANV*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z());
473 transf[2][0] = -QP*ANU*(vpPostNorm.x()*deltaPos.
x()+vpPostNorm.y()*deltaPos.
y()+vpPostNorm.z()*deltaPos.
z())*sinpPostInv
474 *(1.+deltaPInv*pAver);
476 if(
iverbose >= 3)
G4cout <<
"ctransf20= " << transf[2][0] <<
" "<< -QP<<
" "<<ANU<<
" "<<vpPostNorm.x()<<
" "<<deltaPos.
x()<<
" "<<vpPostNorm.y()<<
" "<<deltaPos.
y()<<
" "<<vpPostNorm.z()<<
" "<<deltaPos.
z()<<
" "<<sinpPostInv
477 <<
" "<<deltaPInv<<
" "<<pAver<<
G4endl;
479 transf[2][1] = cosThetaAver*(vVPre.x()*vUPost.x()+vVPre.y()*vUPost.y() ) +
480 sinThetaAver*(vHVPre.x()*vUPost.x()+vHVPre.y()*vUPost.y() ) +
481 OMcosThetaAver*(vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z())*
482 (vHAverNorm.
x()*vUPost.x()+vHAverNorm.
y()*vUPost.y() ) +
483 ANU*( -sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) +
484 OMcosThetaAver*(vVPre.x()*AN2.
x()+vVPre.y()*AN2.
y()+vVPre.z()*AN2.
z()) -
485 TMSINT*gamma*(vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z()) );
486 transf[2][1] = sinpPostInv*transf[2][1];
488 transf[2][2] = cosThetaAver*(vUPre.x()*vUPost.x()+vUPre.y()*vUPost.y() ) +
489 sinThetaAver*(vHUPre.x()*vUPost.x()+vHUPre.y()*vUPost.y() ) +
490 OMcosThetaAver*(vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() )*
491 (vHAverNorm.
x()*vUPost.x()+vHAverNorm.
y()*vUPost.y() ) +
492 ANU*( -sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) +
493 OMcosThetaAver*(vUPre.x()*AN2.
x()+vUPre.y()*AN2.
y() ) -
494 TMSINT*gamma*(vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() ) );
495 transf[2][2] = sinpPostInv*sinpPre*transf[2][2];
497 transf[2][3] = -QAver*ANU*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() )*sinpPostInv;
499 if(
iverbose >= 3)
G4cout <<
"ctransf23= " << transf[2][3] <<
" "<< -QAver<<
" "<<ANU<<
" "<<vUPre.x()<<
" "<<vpPostNorm.x()<<
" "<< vUPre.y()<<
" "<<vpPostNorm.y()<<
" "<<sinpPostInv<<
G4endl;
502 transf[2][4] = -QAver*ANU*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z())*sinpPostInv;
506 transf[3][0] = pAver*(vUPost.x()*deltaPos.
x()+vUPost.y()*deltaPos.
y() )
507 *(1.+deltaPInv*pAver);
509 if(
iverbose >= 3)
G4cout <<
"ctransf30= " << transf[3][0] <<
" "<< pAver<<
" "<<vUPost.x()<<
" "<<deltaPos.
x()<<
" "<<vUPost.y()<<
" "<<deltaPos.
y()
510 <<
" "<<deltaPInv<<
" "<<pAver<<
G4endl;
513 transf[3][1] = ( sinThetaAver*(vVPre.x()*vUPost.x()+vVPre.y()*vUPost.y() ) +
514 OMcosThetaAver*(vHVPre.x()*vUPost.x()+vHVPre.y()*vUPost.y() ) +
515 TMSINT*(vHAverNorm.
x()*vUPost.x()+vHAverNorm.
y()*vUPost.y() )*
516 (vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z()) )/QAver;
518 transf[3][2] = ( sinThetaAver*(vUPre.x()*vUPost.x()+vUPre.y()*vUPost.y() ) +
519 OMcosThetaAver*(vHUPre.x()*vUPost.x()+vHUPre.y()*vUPost.y() ) +
520 TMSINT*(vHAverNorm.
x()*vUPost.x()+vHAverNorm.
y()*vUPost.y() )*
521 (vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() ) )*sinpPre/QAver;
523 if(
iverbose >= 3)
G4cout <<
"ctransf32= " << transf[3][2] <<
" "<< sinThetaAver<<
" "<<vUPre.x()<<
" "<<vUPost.x()<<
" "<<vUPre.y()<<
" "<<vUPost.y() <<
" "<<
524 OMcosThetaAver<<
" "<<vHUPre.x()<<
" "<<vUPost.x()<<
" "<<vHUPre.y()<<
" "<<vUPost.y() <<
" "<<
525 TMSINT<<
" "<<vHAverNorm.
x()<<
" "<<vUPost.x()<<
" "<<vHAverNorm.
y()<<
" "<<vUPost.y() <<
" "<<
526 vHAverNorm.
x()<<
" "<<vUPre.x()<<
" "<<vHAverNorm.
y()<<
" "<<vUPre.y() <<
" "<<sinpPre<<
" "<<QAver<<
G4endl;
529 transf[3][3] = (vUPre.x()*vUPost.x()+vUPre.y()*vUPost.y() );
531 transf[3][4] = (vVPre.x()*vUPost.x()+vVPre.y()*vUPost.y() );
534 transf[4][0] = pAver*(vVPost.x()*deltaPos.
x()+vVPost.y()*deltaPos.
y()+vVPost.z()*deltaPos.
z())
535 *(1.+deltaPInv*pAver);
537 transf[4][1] = ( sinThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) +
538 OMcosThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) +
539 TMSINT*(vHAverNorm.
x()*vVPost.x()+vHAverNorm.
y()*vVPost.y()+vHAverNorm.
z()*vVPost.z())*
540 (vHAverNorm.
x()*vVPre.x()+vHAverNorm.
y()*vVPre.y()+vHAverNorm.
z()*vVPre.z()) )/QAver;
542 if(
iverbose >= 3)
G4cout <<
"ctransf41= " << transf[4][1] <<
" "<< sinThetaAver<<
" "<< OMcosThetaAver <<
" "<<TMSINT<<
" "<< vVPre <<
" "<<vVPost <<
" "<<vHVPre<<
" "<<vHAverNorm <<
" "<< QAver<<
G4endl;
545 transf[4][2] = ( sinThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) +
546 OMcosThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) +
547 TMSINT*(vHAverNorm.
x()*vVPost.x()+vHAverNorm.
y()*vVPost.y()+vHAverNorm.
z()*vVPost.z())*
548 (vHAverNorm.
x()*vUPre.x()+vHAverNorm.
y()*vUPre.y() ) )*sinpPre/QAver;
550 transf[4][3] = (vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() );
552 transf[4][4] = (vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z());
617 <<
" effZ:" << effZ <<
" effA:" << effA
623 if(
iverbose >= 4 )
G4cout << std::setprecision(6) << std::setw(6) <<
"G4EP:MSC: RI=X/X0 " << RI <<
" stepLengthCm " << stepLengthCm <<
" radlen/cm " << (mate->
GetRadlen()/
cm) <<
" RI*1.e10:" << RI*1.e10 << G4endl;
626 G4double DD = 1.8496E-4*RI*(charge/pBeta * charge/pBeta );
630 G4double S1 = DD*stepLengthCm*stepLengthCm/3.;
634 G4double CLA = std::sqrt( vpPre.
x() * vpPre.
x() + vpPre.
y() * vpPre.
y() )/pPre;
636 if(
iverbose >= 2 )
G4cout << std::setw(6) <<
"G4EP:MSC: RI " << RI <<
" S1 " << S1 <<
" S2 " << S2 <<
" S3 " << S3 <<
" CLA " << CLA <<
G4endl;
640 fError[2][2] += S2/CLA/CLA;
660 for(ii=0; ii < nelem; ii++ ) {
674 if( stepLengthCm < 1.
E-7 ) {
694 G4cout <<
"G4EP:IONI: XI/keV " << XI <<
" beta " << beta <<
" gamma " << gamma <<
G4endl;
695 G4cout <<
" density " << (mate->
GetDensity()/
mg*
mole) <<
" effA " << effA <<
" step " << stepLengthCm << G4endl;
704 G4double F2 = 1. + 2. * massRatio * gamma + massRatio * massRatio;
708 G4double dedxSq = XI*Emax*(1.-(beta*beta/2.))*1.
E-12;
719 if (XI/Emax<0.01) dedxSq *=XI/Emax*100 ;
722 if(
iverbose >= 2 )
G4cout <<
"G4EP:IONI: DEDX^2(GeV^2) " << dedxSq <<
" emass/GeV: " << eMass <<
" Emax/keV: " << Emax
723 <<
" k=Xi/Emax="<< XI/Emax<<
G4endl;
728 pPre6 = std::pow(pPre6, 6 );
730 fError[0][0] += Etot*Etot*dedxSq / pPre6;
732 if(
iverbose >= 2 )
G4cout <<
"G4:IONI Etot/GeV: " << Etot <<
" err_dedx^2/GeV^2: " << dedxSq <<
" p^6: " << pPre6 <<
G4endl;
733 if(
iverbose >= 2 )
G4cout <<
"G4EP:IONI: error2_from_ionisation " << (Etot*Etot*dedxSq) / pPre6 << G4endl;
virtual G4int Update(const G4Track *aTrack)
CLHEP::Hep3Vector G4ThreeVector
const G4double * GetFractionVector() const
static const G4double pos
G4LogicalVolume * GetLogicalVolume() const
static constexpr double MeV
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
G4StepPoint * GetPreStepPoint() const
G4int PropagateErrorMSC(const G4Track *aTrack)
G4double GetRadlen() const
void Update(const G4Track *aTrack)
BasicVector3D< T > cross(const BasicVector3D< T > &v) const
G4double GetLambda() const
G4Vector3D GetVectorW() const
G4ErrorSymMatrix G4ErrorTrajErr
virtual void GetFieldValue(const double Point[4], double *fieldArr) const =0
const G4double kCarTolerance
G4Material * GetMaterial() const
G4Vector3D GetVectorW() const
const G4String & GetName() const
static constexpr double g
void CalculateEffectiveZandA(const G4Material *mate, double &effZ, double &effA)
G4ThreeVector GetMomentum() const
virtual G4int PropagateError(const G4Track *aTrack)
G4FieldManager * GetFieldManager() const
G4ErrorSurfaceTrajParam GetParameters() const
G4double GetStepLength() const
G4ErrorFreeTrajParam fTrajParam
const G4ThreeVector & GetPosition() const
static constexpr double mg
void DumpPosMomError(std::ostream &out=G4cout) const
G4double GetCharge() const
G4ErrorFreeTrajParam GetParameters() const
const G4ThreeVector & GetPosition() const
const G4Field * GetDetectorField() const
G4ErrorSymMatrix similarity(const G4ErrorMatrix &m1) const
const G4Step * GetStep() const
G4ErrorMatrix theTransfMat
HepGeom::Vector3D< G4double > G4Vector3D
Hep3Vector cross(const Hep3Vector &) const
static G4TransportationManager * GetTransportationManager()
G4int PropagateErrorIoni(const G4Track *aTrack)
static constexpr double c_light
G4ErrorTrajErr GetError() const
G4Vector3D GetVectorV() const
void UpdatePosMom(const G4Point3D &pos, const G4Vector3D &mom)
static const G4double Emax
G4Vector3D GetVectorV() const
static constexpr double cm
G4GLOB_DLL std::ostream G4cout
static G4GeometryTolerance * GetInstance()
G4ThreeVector GetMomentum() const
G4Vector3D GetDirection() const
static constexpr double mole
virtual void Dump(std::ostream &out=G4cout) const
const G4Element * GetElement(G4int iel) const
G4ErrorSymMatrix T() const
static constexpr double GeV
const G4DynamicParticle * GetDynamicParticle() const
G4double GetNuclearInterLength() const
G4double GetSurfaceTolerance() const
size_t GetNumberOfElements() const
static constexpr double tesla
G4VPhysicalVolume * GetVolume() const
G4double GetDensity() const
G4double GetTotalEnergy() const
static G4ErrorPropagatorData * GetErrorPropagatorData()