9 #ifndef TRKEXUTILS_EXTRAPOLATIONCELL_H
10 #define TRKEXUTILS_EXTRAPOLATIONCELL_H
22 #ifndef TRKEXUTILS_CHECKPATHMACRO
23 #define TRKEXUTILS_CHECKPATHMACRO
24 #define reachedLimit(current, limit, tolerance) \
26 (((current) < (limit)) \
27 ? ((current) - (limit)) * ((current) - (limit)) / ((limit) * (limit)) < \
28 (tolerance) * (tolerance) \
34 class MaterialProperties;
94 return (
m_value & (1 <<
int(em)));
208 double pLength = -1.)
291 std::vector<ExtrapolationStep<T>>
305 unsigned int econfig = 1)
477 startParameters = endParameters;
478 startVolume = endVolume;
479 startLayer = endLayer;
484 leadParameters = startParameters;
487 leadLayerSurface = 0;
488 lastBoundaryParameters = 0;
489 lastBoundarySurface = 0;
490 lastLeadParameters = startParameters;
496 eLoss->set(0., 0., 0., 0., 0., 0.);
498 extrapolationSteps.clear();
510 endParameters = leadParameters->clone();
521 for (
auto bC : m_garbageCollection)
523 m_garbageCollection.clear();
526 for (
auto& es : extrapolationSteps) {
527 delete es.parameters;
528 delete es.transportJacobian;
531 extrapolationSteps.clear();
541 if (!checkConfigurationMode(fillMode)) {
552 extrapolationSteps.size()
553 ? extrapolationSteps[extrapolationSteps.size() - 1].surface
559 extrapolationSteps[extrapolationSteps.size() - 1].parameters =
parameters;
560 extrapolationSteps[extrapolationSteps.size() - 1].surface = cssf;
561 extrapolationSteps[extrapolationSteps.size() - 1].stepConfiguration.addMode(
577 extrapolationSteps.size()
578 ? extrapolationSteps[extrapolationSteps.size() - 1].surface
586 extrapolationSteps[extrapolationSteps.size() - 1].surface = cssf;
588 extrapolationSteps[extrapolationSteps.size() - 1].transportJacobian = tjac;
589 extrapolationSteps[extrapolationSteps.size() - 1].stepConfiguration.addMode(
593 extrapolationSteps[extrapolationSteps.size() - 1].pathLength = pLength;
594 extrapolationSteps[extrapolationSteps.size() - 1]
599 pathLength += pLength;
629 zOaTrX +=
mat->zOverAtimesRho() *
step /
mat->X0;
644 addMaterial(sfactor, mprop);
651 extrapolationSteps.size()
652 ? extrapolationSteps[extrapolationSteps.size() - 1].surface
658 extrapolationSteps[extrapolationSteps.size() - 1].surface = cssf;
659 extrapolationSteps[extrapolationSteps.size() - 1].layer = lay;
663 extrapolationSteps[extrapolationSteps.size() - 1].material = mprop;
664 extrapolationSteps[extrapolationSteps.size() - 1].stepConfiguration.addMode(
666 extrapolationSteps[extrapolationSteps.size() - 1].materialPosition =
668 extrapolationSteps[extrapolationSteps.size() - 1].materialScaling = sfactor;
674 #endif // TRKEXUTILS_EXTRAPOLATIONCELL_H