77 std::sqrt(mom2 / (mom2 + tpSDparam.
GetPV() * tpSDparam.
GetPV() +
80 tpSDparam.
GetPW() / mom * TVW1);
108 vUperp *= 1. / vUperp.
mag();
109 vVperp *= 1. / vVperp.
mag();
114 G4cout <<
" CHECK: vUN " << vUN <<
" = " << vUperp <<
" diff "
115 << (vUN - vUperp).mag() <<
G4endl;
116 G4cout <<
" CHECK: vVN " << vVN <<
" = " << vVperp <<
" diff "
117 << (vVN - vVperp).mag() <<
G4endl;
136 G4cout <<
" dir=" << dir <<
" invCosTheta " << invCosTheta <<
G4endl;
155 G4double sinz = -HPre * vUperp * magHPreM2;
156 G4double cosz = HPre * vVperp * magHPreM2;
158 transfM[1][3] = -Q * dir.
y() * sinz;
159 transfM[1][4] = -Q * dir.
z() * sinz;
160 transfM[2][3] = -Q * dir.
y() * cosz * invCosTheta;
161 transfM[2][4] = -Q * dir.
z() * cosz * invCosTheta;
166 transfM[1][1] = dir.
x() * dVU;
167 transfM[1][2] = dir.
x() * dVV;
168 transfM[2][1] = dir.
x() * dUU * invCosTheta;
169 transfM[2][2] = dir.
x() * dUV * invCosTheta;
181 G4cout <<
"G4ErrorFreeTrajState from SD " << *
this <<
G4endl;
186void G4ErrorFreeTrajState::Init()
201 fTrajParam.
Update(aTrack);
209 std::ios::fmtflags orig_flags = out.flags();
211 out.setf(std::ios::fixed, std::ios::floatfield);
215 out <<
" G4ErrorFreeTrajState: Params: " << ts.fTrajParam <<
G4endl;
217 out.flags(orig_flags);
238 G4cout <<
" G4ErrorFreeTrajState::PropagateError " <<
G4endl;
250 if(vpPre.
mag() == vpPre.
z())
251 vpPre.
setX(1.E-6 * MeV);
252 if(vpPost.
mag() == vpPost.
z())
253 vpPost.
setX(1.E-6 * MeV);
260 G4cout <<
"G4EP: vposPre " << vposPre <<
G4endl <<
"G4EP: vposPost "
262 G4cout <<
"G4EP: vpPre " << vpPre <<
G4endl <<
"G4EP: vpPost " << vpPost
265 G4cout <<
"G4EP: stepLengthCm " << stepLengthCm <<
G4endl;
269 if(pPre == 0. || pPost == 0)
273 G4double deltaPInv = pInvPost - pInvPre;
275 G4cout <<
"G4EP: pInvPre" << pInvPre <<
" pInvPost:" << pInvPost
276 <<
" deltaPInv:" << deltaPInv <<
G4endl;
281 G4cout <<
"G4EP: vpPreNorm " << vpPreNorm <<
" vpPostNorm " << vpPostNorm
289 std::sin(vpPreNorm.
theta());
291 std::sin(vpPostNorm.
theta());
296 G4cout <<
"G4EP: cosl " << sinpPre <<
" cosl0 " << sinpPost <<
G4endl;
302 transf[3][2] = stepLengthCm * sinpPost;
303 transf[4][1] = stepLengthCm;
304 for(
auto ii = 0; ii < 5; ++ii)
311 G4cout <<
"G4EP: transf matrix neutral " << transf;
331 pos1[0] = vposPre.
x() * cm;
332 pos1[1] = vposPre.
y() * cm;
333 pos1[2] = vposPre.
z() * cm;
335 pos2[0] = vposPost.
x() * cm;
336 pos2[1] = vposPost.
y() * cm;
337 pos2[2] = vposPost.
z() * cm;
347 if(charge != 0. && field)
361 G4cout <<
"G4EP: h1 = " << h1[0] <<
", " << h1[1] <<
", " << h1[2]
363 G4cout <<
"G4EP: pos1/mm = " << pos1[0] <<
", " << pos1[1] <<
", "
365 G4cout <<
"G4EP: pos2/mm = " << pos2[0] <<
", " << pos2[1] <<
", "
367 G4cout <<
"G4EP: B-filed in KGauss HPre " << HPre <<
G4endl
368 <<
"G4EP: in KGauss HPost " << HPost <<
G4endl;
372 if(magHPre + magHPost != 0.)
378 gam = HPost * vpPostNorm / magHPost;
382 gam = HPre * vpPreNorm / magHPre;
388 G4double diffHSqr = (HPre * pInvPre - HPost * pInvPost).mag2();
393 G4cout <<
" G4EP: gam " << gam <<
" alphaSqr " << alphaSqr
394 <<
" diffHSqr " << diffHSqr <<
G4endl;
398 if(diffHSqr * alphaSqr > delhp6Sqr)
402 G4double pInvAver = 1. / (pInvPre + pInvPost);
405 G4ThreeVector vHAverNorm((HPre * pInvPre + HPost * pInvPost) * pInvAver *
409 vHAverNorm *= invHAver;
412 G4cout <<
" G4EP: HaverNorm " << vHAverNorm <<
" magHAver " << HAver
413 <<
" charge " << charge <<
G4endl;
416 G4double pAver = (pPre + pPost) * 0.5;
418 G4double thetaAver = QAver * stepLengthCm;
419 G4double sinThetaAver = std::sin(thetaAver);
420 G4double cosThetaAver = std::cos(thetaAver);
421 G4double gamma = vHAverNorm * vpPostNorm;
426 G4cout <<
" G4EP: AN2 " << AN2 <<
" gamma:" << gamma
427 <<
" theta=" << thetaAver <<
G4endl;
433 vpPreNorm.
x() * vUPre.
y() -
434 vpPreNorm.
y() * vUPre.
x());
437 AU = 1. / vpPostNorm.perp();
440 G4ThreeVector vUPost(-AU * vpPostNorm.y(), AU * vpPostNorm.x(), 0.);
442 -vpPostNorm.z() * vUPost.
y(), vpPostNorm.z() * vUPost.
x(),
443 vpPostNorm.x() * vUPost.
y() - vpPostNorm.y() * vUPost.
x());
447 G4cout <<
" G4EP: AU " << AU <<
" vUPre " << vUPre <<
" vVPre " << vVPre
448 <<
" vUPost " << vUPost <<
" vVPost " << vVPost <<
G4endl;
459 G4cout <<
" G4EP: QP " << QP <<
" QAver " << QAver <<
" pAver " << pAver
463 -(vHAverNorm.
x() * vUPost.
x() + vHAverNorm.
y() * vUPost.
y());
465 (vHAverNorm.
x() * vVPost.
x() + vHAverNorm.
y() * vVPost.
y() +
466 vHAverNorm.
z() * vVPost.
z());
467 G4double OMcosThetaAver = 1. - cosThetaAver;
470 G4cout <<
"G4EP: OMcosThetaAver " << OMcosThetaAver <<
" cosThetaAver "
471 << cosThetaAver <<
" thetaAver " << thetaAver <<
" QAver "
472 << QAver <<
" stepLengthCm " << stepLengthCm <<
G4endl;
474 G4double TMSINT = thetaAver - sinThetaAver;
477 G4cout <<
" G4EP: ANV " << ANV <<
" ANU " << ANU <<
G4endl;
481 -vHAverNorm.
z() * vUPre.
y(), vHAverNorm.
z() * vUPre.
x(),
482 vHAverNorm.
x() * vUPre.
y() - vHAverNorm.
y() * vUPre.
x());
488 vHAverNorm.
y() * vVPre.
z() - vHAverNorm.
z() * vVPre.
y(),
489 vHAverNorm.
z() * vVPre.
x() - vHAverNorm.
x() * vVPre.
z(),
490 vHAverNorm.
x() * vVPre.
y() - vHAverNorm.
y() * vVPre.
x());
493 G4cout <<
" G4EP: HUPre " << vHUPre <<
" HVPre " << vHVPre <<
G4endl;
502 (1. + (vpPostNorm.x() * deltaPos.
x() + vpPostNorm.y() * deltaPos.
y() +
503 vpPostNorm.z() * deltaPos.
z()) /
505 2. * deltaPInv * pAver;
508 -deltaPInv / thetaAver *
510 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
511 vHAverNorm.
z() * vVPre.
z()) +
513 (vVPre.
x() * vpPostNorm.x() + vVPre.
y() * vpPostNorm.y() +
514 vVPre.
z() * vpPostNorm.z()) +
516 (vHVPre.
x() * vpPostNorm.x() + vHVPre.
y() * vpPostNorm.y() +
517 vHVPre.
z() * vpPostNorm.z()));
520 -sinpPre * deltaPInv / thetaAver *
522 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y()) +
524 (vUPre.
x() * vpPostNorm.x() + vUPre.
y() * vpPostNorm.y()) +
526 (vHUPre.
x() * vpPostNorm.x() + vHUPre.
y() * vpPostNorm.y() +
527 vHUPre.
z() * vpPostNorm.z()));
529 transf[0][3] = -deltaPInv / stepLengthCm *
530 (vUPre.
x() * vpPostNorm.x() + vUPre.
y() * vpPostNorm.y());
532 transf[0][4] = -deltaPInv / stepLengthCm *
533 (vVPre.
x() * vpPostNorm.x() + vVPre.
y() * vpPostNorm.y() +
534 vVPre.
z() * vpPostNorm.z());
539 (vpPostNorm.x() * deltaPos.
x() + vpPostNorm.y() * deltaPos.
y() +
540 vpPostNorm.z() * deltaPos.
z()) *
541 (1. + deltaPInv * pAver);
544 G4cout <<
"ctransf10= " << transf[1][0] <<
" " << -QP <<
" " << ANV
545 <<
" " << vpPostNorm.x() <<
" " << deltaPos.
x() <<
" "
546 << vpPostNorm.y() <<
" " << deltaPos.
y() <<
" " << vpPostNorm.z()
547 <<
" " << deltaPos.
z() <<
" " << deltaPInv <<
" " << pAver
552 cosThetaAver * (vVPre.
x() * vVPost.
x() + vVPre.
y() * vVPost.
y() +
553 vVPre.
z() * vVPost.
z()) +
554 sinThetaAver * (vHVPre.
x() * vVPost.
x() + vHVPre.
y() * vVPost.
y() +
555 vHVPre.
z() * vVPost.
z()) +
557 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
558 vHAverNorm.
z() * vVPre.
z()) *
559 (vHAverNorm.
x() * vVPost.
x() + vHAverNorm.
y() * vVPost.
y() +
560 vHAverNorm.
z() * vVPost.
z()) +
561 ANV * (-sinThetaAver *
562 (vVPre.
x() * vpPostNorm.x() + vVPre.
y() * vpPostNorm.y() +
563 vVPre.
z() * vpPostNorm.z()) +
564 OMcosThetaAver * (vVPre.
x() * AN2.
x() + vVPre.
y() * AN2.
y() +
565 vVPre.
z() * AN2.
z()) -
567 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
568 vHAverNorm.
z() * vVPre.
z()));
571 cosThetaAver * (vUPre.
x() * vVPost.
x() + vUPre.
y() * vVPost.
y()) +
572 sinThetaAver * (vHUPre.
x() * vVPost.
x() + vHUPre.
y() * vVPost.
y() +
573 vHUPre.
z() * vVPost.
z()) +
575 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y()) *
576 (vHAverNorm.
x() * vVPost.
x() + vHAverNorm.
y() * vVPost.
y() +
577 vHAverNorm.
z() * vVPost.
z()) +
578 ANV * (-sinThetaAver *
579 (vUPre.
x() * vpPostNorm.x() + vUPre.
y() * vpPostNorm.y()) +
580 OMcosThetaAver * (vUPre.
x() * AN2.
x() + vUPre.
y() * AN2.
y()) -
582 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y()));
583 transf[1][2] = sinpPre * transf[1][2];
585 transf[1][3] = -QAver * ANV *
586 (vUPre.
x() * vpPostNorm.x() + vUPre.
y() * vpPostNorm.y());
588 transf[1][4] = -QAver * ANV *
589 (vVPre.
x() * vpPostNorm.x() + vVPre.
y() * vpPostNorm.y() +
590 vVPre.
z() * vpPostNorm.z());
596 (vpPostNorm.x() * deltaPos.
x() + vpPostNorm.y() * deltaPos.
y() +
597 vpPostNorm.z() * deltaPos.
z()) *
598 sinpPostInv * (1. + deltaPInv * pAver);
601 G4cout <<
"ctransf20= " << transf[2][0] <<
" " << -QP <<
" " << ANU
602 <<
" " << vpPostNorm.x() <<
" " << deltaPos.
x() <<
" "
603 << vpPostNorm.y() <<
" " << deltaPos.
y() <<
" " << vpPostNorm.z()
604 <<
" " << deltaPos.
z() <<
" " << sinpPostInv <<
" " << deltaPInv
605 <<
" " << pAver <<
G4endl;
608 cosThetaAver * (vVPre.
x() * vUPost.
x() + vVPre.
y() * vUPost.
y()) +
609 sinThetaAver * (vHVPre.
x() * vUPost.
x() + vHVPre.
y() * vUPost.
y()) +
611 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
612 vHAverNorm.
z() * vVPre.
z()) *
613 (vHAverNorm.
x() * vUPost.
x() + vHAverNorm.
y() * vUPost.
y()) +
614 ANU * (-sinThetaAver *
615 (vVPre.
x() * vpPostNorm.x() + vVPre.
y() * vpPostNorm.y() +
616 vVPre.
z() * vpPostNorm.z()) +
617 OMcosThetaAver * (vVPre.
x() * AN2.
x() + vVPre.
y() * AN2.
y() +
618 vVPre.
z() * AN2.
z()) -
620 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
621 vHAverNorm.
z() * vVPre.
z()));
622 transf[2][1] = sinpPostInv * transf[2][1];
625 cosThetaAver * (vUPre.
x() * vUPost.
x() + vUPre.
y() * vUPost.
y()) +
626 sinThetaAver * (vHUPre.
x() * vUPost.
x() + vHUPre.
y() * vUPost.
y()) +
628 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y()) *
629 (vHAverNorm.
x() * vUPost.
x() + vHAverNorm.
y() * vUPost.
y()) +
630 ANU * (-sinThetaAver *
631 (vUPre.
x() * vpPostNorm.x() + vUPre.
y() * vpPostNorm.y()) +
632 OMcosThetaAver * (vUPre.
x() * AN2.
x() + vUPre.
y() * AN2.
y()) -
634 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y()));
635 transf[2][2] = sinpPostInv * sinpPre * transf[2][2];
637 transf[2][3] = -QAver * ANU *
638 (vUPre.
x() * vpPostNorm.x() + vUPre.
y() * vpPostNorm.y()) *
642 G4cout <<
"ctransf23= " << transf[2][3] <<
" " << -QAver <<
" " << ANU
643 <<
" " << vUPre.
x() <<
" " << vpPostNorm.x() <<
" " << vUPre.
y()
644 <<
" " << vpPostNorm.y() <<
" " << sinpPostInv <<
G4endl;
647 transf[2][4] = -QAver * ANU *
648 (vVPre.
x() * vpPostNorm.x() + vVPre.
y() * vpPostNorm.y() +
649 vVPre.
z() * vpPostNorm.z()) *
654 transf[3][0] = pAver *
655 (vUPost.
x() * deltaPos.
x() + vUPost.
y() * deltaPos.
y()) *
656 (1. + deltaPInv * pAver);
659 G4cout <<
"ctransf30= " << transf[3][0] <<
" " << pAver <<
" "
660 << vUPost.
x() <<
" " << deltaPos.
x() <<
" " << vUPost.
y() <<
" "
661 << deltaPos.
y() <<
" " << deltaPInv <<
" " << pAver <<
G4endl;
665 (sinThetaAver * (vVPre.
x() * vUPost.
x() + vVPre.
y() * vUPost.
y()) +
666 OMcosThetaAver * (vHVPre.
x() * vUPost.
x() + vHVPre.
y() * vUPost.
y()) +
667 TMSINT * (vHAverNorm.
x() * vUPost.
x() + vHAverNorm.
y() * vUPost.
y()) *
668 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
669 vHAverNorm.
z() * vVPre.
z())) /
673 (sinThetaAver * (vUPre.
x() * vUPost.
x() + vUPre.
y() * vUPost.
y()) +
674 OMcosThetaAver * (vHUPre.
x() * vUPost.
x() + vHUPre.
y() * vUPost.
y()) +
675 TMSINT * (vHAverNorm.
x() * vUPost.
x() + vHAverNorm.
y() * vUPost.
y()) *
676 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y())) *
680 G4cout <<
"ctransf32= " << transf[3][2] <<
" " << sinThetaAver <<
" "
681 << vUPre.
x() <<
" " << vUPost.
x() <<
" " << vUPre.
y() <<
" "
682 << vUPost.
y() <<
" " << OMcosThetaAver <<
" " << vHUPre.
x()
683 <<
" " << vUPost.
x() <<
" " << vHUPre.
y() <<
" " << vUPost.
y()
684 <<
" " << TMSINT <<
" " << vHAverNorm.
x() <<
" " << vUPost.
x()
685 <<
" " << vHAverNorm.
y() <<
" " << vUPost.
y() <<
" "
686 << vHAverNorm.
x() <<
" " << vUPre.
x() <<
" " << vHAverNorm.
y()
687 <<
" " << vUPre.
y() <<
" " << sinpPre <<
" " << QAver <<
G4endl;
690 transf[3][3] = (vUPre.
x() * vUPost.
x() + vUPre.
y() * vUPost.
y());
692 transf[3][4] = (vVPre.
x() * vUPost.
x() + vVPre.
y() * vUPost.
y());
695 transf[4][0] = pAver *
696 (vVPost.
x() * deltaPos.
x() + vVPost.
y() * deltaPos.
y() +
697 vVPost.
z() * deltaPos.
z()) *
698 (1. + deltaPInv * pAver);
701 (sinThetaAver * (vVPre.
x() * vVPost.
x() + vVPre.
y() * vVPost.
y() +
702 vVPre.
z() * vVPost.
z()) +
703 OMcosThetaAver * (vHVPre.
x() * vVPost.
x() + vHVPre.
y() * vVPost.
y() +
704 vHVPre.
z() * vVPost.
z()) +
706 (vHAverNorm.
x() * vVPost.
x() + vHAverNorm.
y() * vVPost.
y() +
707 vHAverNorm.
z() * vVPost.
z()) *
708 (vHAverNorm.
x() * vVPre.
x() + vHAverNorm.
y() * vVPre.
y() +
709 vHAverNorm.
z() * vVPre.
z())) /
713 G4cout <<
"ctransf41= " << transf[4][1] <<
" " << sinThetaAver <<
" "
714 << OMcosThetaAver <<
" " << TMSINT <<
" " << vVPre <<
" "
715 << vVPost <<
" " << vHVPre <<
" " << vHAverNorm <<
" " << QAver
720 (sinThetaAver * (vUPre.
x() * vVPost.
x() + vUPre.
y() * vVPost.
y()) +
721 OMcosThetaAver * (vHUPre.
x() * vVPost.
x() + vHUPre.
y() * vVPost.
y() +
722 vHUPre.
z() * vVPost.
z()) +
724 (vHAverNorm.
x() * vVPost.
x() + vHAverNorm.
y() * vVPost.
y() +
725 vHAverNorm.
z() * vVPost.
z()) *
726 (vHAverNorm.
x() * vUPre.
x() + vHAverNorm.
y() * vUPre.
y())) *
729 transf[4][3] = (vUPre.
x() * vVPost.
x() + vUPre.
y() * vVPost.
y());
731 transf[4][4] = (vVPre.
x() * vVPost.
x() + vVPre.
y() * vVPost.
y() +
732 vVPre.
z() * vVPost.
z());
739 G4cout <<
"G4EP: transf matrix computed " << transf <<
G4endl;
760 theTransfMat = transf;
766 <<
" transf matrix " << theTransfMat.
T() <<
G4endl;
781 PropagateErrorMSC(aTrack);
783 PropagateErrorIoni(aTrack);
789G4int G4ErrorFreeTrajState::PropagateErrorMSC(
const G4Track* aTrack)
798 CalculateEffectiveZandA(mate, effZ, effA);
805 <<
" effZ:" << effZ <<
" effA:" << effA
806 <<
" dens(g/mole):" << mate->
GetDensity() / g * mole
807 <<
" Radlen/cm:" << mate->
GetRadlen() / cm <<
" nuclLen/cm"
814 G4cout << std::setprecision(6) << std::setw(6) <<
"G4EP:MSC: RI=X/X0 " << RI
815 <<
" stepLengthCm " << stepLengthCm <<
" radlen/cm "
819 G4double DD = 1.8496E-4 * RI * (charge / pBeta * charge / pBeta);
822 G4cout <<
"G4EP:MSC: D*1E6= " << DD * 1.E6 <<
" pBeta " << pBeta <<
G4endl;
824 G4double S1 = DD * stepLengthCm * stepLengthCm / 3.;
826 G4double S3 = DD * stepLengthCm / 2.;
829 std::sqrt(vpPre.
x() * vpPre.
x() + vpPre.
y() * vpPre.
y()) / pPre;
832 G4cout << std::setw(6) <<
"G4EP:MSC: RI " << RI <<
" S1 " << S1 <<
" S2 "
833 << S2 <<
" S3 " << S3 <<
" CLA " << CLA <<
G4endl;
837 fError[2][2] += S2 / CLA / CLA;
851void G4ErrorFreeTrajState::CalculateEffectiveZandA(
const G4Material* mate,
867G4int G4ErrorFreeTrajState::PropagateErrorIoni(
const G4Track* aTrack)
872 if(stepLengthCm < 1.E-7)
880 CalculateEffectiveZandA(mate, effZ, effA);
889 (effA * beta * beta);
894 G4cout <<
"G4EP:IONI: XI/keV " << XI <<
" beta " << beta <<
" gamma "
897 << effA <<
" step " << stepLengthCm <<
G4endl;
906 G4double F2 = 1. + 2. * massRatio * gamma + massRatio * massRatio;
911 XI * Emax * (1. - (beta * beta / 2.)) * 1.E-12;
929 G4cout <<
"G4EP:IONI: DEDX^2(GeV^2) " << dedxSq <<
" emass/GeV: " << eMass
930 <<
" Emax/keV: " << Emax <<
" k=Xi/Emax=" << XI / Emax <<
G4endl;
936 pPre6 = std::pow(pPre6, 6);
938 fError[0][0] += Etot * Etot * dedxSq / pPre6;
941 G4cout <<
"G4:IONI Etot/GeV: " << Etot <<
" err_dedx^2/GeV^2: " << dedxSq
942 <<
" p^6: " << pPre6 <<
G4endl;
944 G4cout <<
"G4EP:IONI: error2_from_ionisation "
945 << (Etot * Etot * dedxSq) / pPre6 <<
G4endl;
const G4double kCarTolerance
std::ostream & operator<<(std::ostream &out, const G4ErrorFreeTrajState &ts)
@ G4ErrorMode_PropBackwards
G4ErrorSymMatrix G4ErrorTrajErr
CLHEP::Hep3Vector G4ThreeVector
HepGeom::Vector3D< G4double > G4Vector3D
G4GLOB_DLL std::ostream G4cout
Hep3Vector cross(const Hep3Vector &) const
G4double GetCharge() const
void Update(const G4Track *aTrack)
G4double GetLambda() const
G4Vector3D GetDirection() const
virtual G4int Update(const G4Track *aTrack)
virtual G4int PropagateError(const G4Track *aTrack)
G4ErrorFreeTrajParam GetParameters() const
virtual void Dump(std::ostream &out=G4cout) const
static G4ErrorPropagatorData * GetErrorPropagatorData()
G4Vector3D GetVectorW() const
G4Vector3D GetVectorV() const
G4Vector3D GetVectorW() const
G4ErrorSurfaceTrajParam GetParameters() const
G4Vector3D GetVectorV() const
G4ErrorSymMatrix similarity(const G4ErrorMatrix &m1) const
G4ErrorSymMatrix T() const
void DumpPosMomError(std::ostream &out=G4cout) const
void UpdatePosMom(const G4Point3D &pos, const G4Vector3D &mom)
G4ErrorTrajErr GetError() const
const G4Field * GetDetectorField() const
virtual void GetFieldValue(const G4double Point[4], G4double *fieldArr) const =0
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
G4Material * GetMaterial() const
G4double GetDensity() const
const G4Element * GetElement(G4int iel) const
const G4double * GetFractionVector() const
size_t GetNumberOfElements() const
G4double GetRadlen() const
const G4String & GetName() const
G4double GetNuclearInterLength() const
G4ThreeVector GetMomentum() const
const G4ThreeVector & GetPosition() const
G4StepPoint * GetPreStepPoint() const
G4double GetStepLength() const
G4VPhysicalVolume * GetVolume() const
const G4ThreeVector & GetPosition() const
G4ThreeVector GetMomentum() const
const G4DynamicParticle * GetDynamicParticle() const
G4double GetTotalEnergy() const
const G4Step * GetStep() const
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
G4LogicalVolume * GetLogicalVolume() const
BasicVector3D< T > cross(const BasicVector3D< T > &v) const