55 fFastTrack(anEnvelope,IsUnique),fTriggedFastSimulationModel(0),
56 fLastCrossedParticle(0)
64 AddFastSimulationManager(
this);
80 RemoveFastSimulationManager(
this);
93 for (iModel=0; iModel<
ModelList.size(); iModel++)
115 for (
size_t iModel=0; iModel<
ModelList.size(); iModel++)
116 if(
ModelList[iModel]->GetName() == aName) {
129 bool &foundPrevious)
const
132 for (
size_t iModel=0; iModel<
ModelList.size(); iModel++)
134 if(
ModelList[iModel]->GetName() == modelName)
136 if (previousFound == 0)
145 foundPrevious =
true;
195 for (iModel=0; iModel<
ModelList.size(); iModel++)
260 for (iModel=0; iModel<
ModelList.size(); iModel++)
302 else G4cout <<
" (// geom.)";
311 G4cout <<
"Current Models for the ";
315 for (iModel=0; iModel<
ModelList.size(); iModel++)
320 <<
"(inactivated)\n";
330 for ( iModel=0; iModel<
ModelList.size(); iModel++ )
331 if(
ModelList[iModel]->GetName() == modelName || modelName ==
"all" )
335 G4cout <<
"In the envelope ";
340 <<
" is applicable for :\n ";
342 G4int list_started=0;
343 for (
G4int iParticle = 0; iParticle<theParticleTable->
entries(); iParticle++)
346 if(list_started++)
G4cout <<
", ";
347 G4cout << theParticleTable->
359 G4cout <<
"In the envelope ";
364 <<
" (inactivated) is applicable for :\n ";
366 G4int list_started=0;
367 for (
G4int iParticle=0; iParticle<theParticleTable->
entries(); iParticle++ )
370 if(list_started++)
G4cout <<
", ";
371 G4cout << theParticleTable->
384 for ( iModel=0; iModel<
ModelList.size(); iModel++ )
385 if (
ModelList[iModel]->IsApplicable(*particleDefinition) )
393 for (
auto jModel = iModel + 1; jModel <
ModelList.size(); jModel++ )
394 if (
ModelList[jModel]->IsApplicable(*particleDefinition) ) unique =
false;
405 <<
" (inactivated)." <<
G4endl;
411 ed <<
"Two or more active Models are available for the same particle type, in the same envelope/region." <<
G4endl;
412 G4Exception(
"G4FastSimulationManager::ListModels(const G4ParticleDefinition* particleDefinition) const",
415 "Models risk to exclude each other.");
G4FastSimulationVector< G4VFastSimulationModel > fApplicableModelList
virtual void AtRestDoIt(const G4FastTrack &, G4FastStep &)
G4ParticleDefinition * GetDefinition() const
const G4String & GetName() const
G4VParticleChange * InvokePostStepDoIt()
G4bool AtRestGetFastSimulationManagerTrigger(const G4Track &, const G4Navigator *a=0)
std::ostringstream G4ExceptionDescription
const G4String & GetParticleName(G4int index) const
G4bool OnTheBoundaryButExiting() const
G4Navigator * GetNavigatorForTracking() const
static G4GlobalFastSimulationManager * GetGlobalFastSimulationManager()
void Initialize(const G4FastTrack &)
G4FastSimulationVector< G4VFastSimulationModel > fInactivatedModels
void SetFastSimulationManager(G4FastSimulationManager *fsm)
G4bool ActivateFastSimulationModel(const G4String &)
G4VPhysicalVolume * GetWorldPhysical() const
G4ParticleDefinition * GetParticle(G4int index) const
G4GLOB_DLL std::ostream G4cout
G4VFastSimulationModel * fTriggedFastSimulationModel
virtual void DoIt(const G4FastTrack &, G4FastStep &)=0
void ClearFastSimulationManager()
void SetCurrentTrack(const G4Track &, const G4Navigator *a=0)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4TransportationManager * GetTransportationManager()
G4VFastSimulationModel * GetFastSimulationModel(const G4String &modelName, const G4VFastSimulationModel *previousFound, bool &foundPrevious) const
G4VParticleChange * InvokeAtRestDoIt()
static G4ParticleTable * GetParticleTable()
G4ParticleDefinition * fLastCrossedParticle
G4bool InActivateFastSimulationModel(const G4String &)
G4bool PostStepGetFastSimulationManagerTrigger(const G4Track &, const G4Navigator *a=0)
G4FastSimulationManager(G4Envelope *anEnvelope, G4bool IsUnique=FALSE)
G4VPhysicalVolume * GetWorldVolume() const
G4FastSimulationManager * GetFastSimulationManager() const
G4Envelope * GetEnvelope() const
G4FastSimulationVector< G4VFastSimulationModel > ModelList
~G4FastSimulationManager()