44 #ifndef CEXMC_PHYSICS_LIST_HH
45 #define CEXMC_PHYSICS_LIST_HH
60 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
61 typename ProductionModel >
81 StudiedPhysics< ProductionModel > * studiedPhysics;
89 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
90 typename ProductionModel >
94 studiedPhysics =
new StudiedPhysics< ProductionModel >( this );
95 this->RegisterPhysics( studiedPhysics );
99 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
100 typename ProductionModel >
105 return studiedPhysics->GetProductionModel();
109 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
110 typename ProductionModel >
114 return numberOfTriggeredStudiedInteractions == 0;
118 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
119 typename ProductionModel >
130 static_cast< CexmcIncidentParticleTrackInfo * >(
141 position = targetTransform.TransformPoint( stepPoint->
GetPosition() );
142 direction = targetTransform.TransformAxis(
147 position = targetTransform.TransformPoint( track->
GetPosition() );
148 direction = targetTransform.TransformAxis(
152 G4double distanceInTarget( targetSolid->DistanceToOut( position,
156 std::max( distanceInTarget, proposedMaxIL ) );
161 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
162 typename ProductionModel >
169 targetTransform.TransformAxis( direction ) ) * 2;
173 template <
typename BasePhysics,
template <
typename >
class StudiedPhysics,
174 typename ProductionModel >
void SetFinalTrackLengthInTarget(G4double value)
void SetNeedsTrackLengthResampling(G4bool on=true)
void ResetCurrentTrackLengthInTarget(void)
CLHEP::Hep3Vector G4ThreeVector
const G4ThreeVector & GetPosition() const
CexmcProductionModel * GetProductionModel(void)
void ResampleTrackLengthInTarget(const G4Track *track, const G4StepPoint *stepPoint)
G4VUserTrackInformation * GetUserInformation() const
const G4LogicalVolume * GetVolume(SpecialVolumeType volume) const
void CalculateBasicMaxIL(const G4ThreeVector &direction)
const G4ThreeVector & GetMomentumDirection() const
const G4ThreeVector & GetPosition() const
G4bool IsStudiedProcessAllowed(void) const
const G4ThreeVector & GetMomentumDirection() const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
const G4AffineTransform & GetTargetTransform(void) const
void SetupConstructionHook(const CexmcSetup *setup)
G4VSolid * GetSolid() const