133 for (
size_t j=0; j<msc; ++j) {
137 for (
size_t k=0; k<emp; ++k) {
142 for (
size_t a=0;
a<mod; ++
a) {
144 for (
size_t b=0; b<fmod; ++b) {
152 for (
size_t b=0; b<fmod; ++b) {
247 G4cout <<
"G4LossTableManager::Register G4VEnergyLossProcess : "
286 for (
G4int i=0; i<
n; ++i) {
290 G4cout <<
"G4LossTableManager::Register G4VMultipleScattering : "
302 for (
size_t i=0; i<msc; ++i) {
313 for (
G4int i=0; i<
n; ++i) {
317 G4cout <<
"G4LossTableManager::Register G4VEmProcess : "
329 for (
size_t i=0; i<emp; ++i) {
340 G4cout <<
"G4LossTableManager::Register G4VEmModel : "
350 for (
size_t i=0; i<
n; ++i) {
361 G4cout <<
"G4LossTableManager::Register G4VEmFluctuationModel : "
371 for (
size_t i=0; i<
n; ++i) {
382 if(!p || !part) {
return; }
387 G4cout <<
"G4LossTableManager::RegisterExtraParticle "
410 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
421 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
450 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
459 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
479 G4cout <<
"G4LossTableManager::PreparePhysicsTable for "
489 G4cout <<
"====== G4LossTableManager::PreparePhysicsTable start ====="
518 G4cout <<
"### G4LossTableManager::LocalPhysicsTable() for "
533 G4cout <<
"===== G4LossTableManager::LocalPhysicsTable() for run "
590 G4cout <<
"### G4LossTableManager::LocalPhysicsTable end"
595 G4cout <<
"%%%%% All dEdx and Range tables for worker are ready for run "
608 G4cout <<
"### G4LossTableManager::BuildPhysicsTable() for "
620 G4cout <<
"===== G4LossTableManager::BuildPhysicsTable() for run "
635 G4cout <<
"### G4LossTableManager start initilisation for first particle "
666 G4cout <<
" base particle "
695 if(curr_proc) {
CopyTables(curr_part, curr_proc); }
702 G4cout <<
"### G4LossTableManager::BuildPhysicsTable end: "
708 G4cout <<
"%%%%% All dEdx and Range tables are built for master run= "
743 <<
" tables are assigned "
760 G4cout <<
"G4LossTableManager::BuildTables() for "
764 std::vector<G4PhysicsTable*> t_list;
765 std::vector<G4VEnergyLossProcess*> loss_list;
766 std::vector<G4bool> build_flags;
777 for (i=0; i<
n_loss; ++i) {
785 for(
G4int j=0; j<nvec; ++j) {
787 if(ptr == (*pvec)[j]) {
812 loss_list.push_back(p);
813 build_flags.push_back(val);
818 G4int n_dedx = t_list.size();
819 if (0 == n_dedx || !em) {
820 G4cout <<
"G4LossTableManager WARNING: no DEDX processes for "
827 G4cout <<
"G4LossTableManager::BuildTables() start to build range tables"
828 <<
" and the sum of " << n_dedx <<
" processes"
831 <<
" nSubRegions= " << nSubRegions
874 std::vector<G4PhysicsTable*> listSub;
875 std::vector<G4PhysicsTable*> listCSDA;
877 for (i=0; i<n_dedx; ++i) {
883 if (0 < nSubRegions) {
886 listSub.push_back(dedx);
895 listCSDA.push_back(dedx);
899 if (0 < nSubRegions) {
901 if (1 < listSub.size()) {
924 G4cout <<
"G4LossTableManager::BuildTables: Tables are built for "
945 ed <<
"Energy loss process not found for " << aParticle->
GetParticleName()
947 G4Exception(
"G4LossTableManager::ParticleHaveNoLoss",
"em0001",
989 for (
size_t k=0; k<emp; ++k) {
1024 for (
size_t k=0; k<emp; ++k) {
1039 for (
size_t k=0; k<emp; ++k) {
1085 G4cout <<
"G4LossTableManager::SetLambdaBinning WARNING "
1086 <<
"too small number of bins " << val <<
" ignored"
1093 for (
size_t k=0; k<emp; ++k) {
1114 for (
size_t j=0; j<msc; ++j) {
1118 for (
size_t k=0; k<emp; ++k) {
1178 const std::vector<G4VEnergyLossProcess*>&
1193 const std::vector<G4VMultipleScattering*>&
1336 std::map<PD,G4VEnergyLossProcess*,std::less<PD> >::const_iterator
pos;
G4double GetKineticEnergy(G4double &range, const G4MaterialCutsCouple *)
G4EmConfigurator * EmConfigurator()
void SetRandomStep(G4bool val)
void BuildRangeTable(const G4PhysicsTable *dedxTable, G4PhysicsTable *rangeTable, G4bool isIonisation=false)
void SetDEDXTable(G4PhysicsTable *p, G4EmTableType tType)
void SetIntegral(G4bool val)
G4bool SplineFlag() const
static G4LossTableManager * Instance()
void InitialiseAtomicDeexcitation()
G4VAtomDeexcitation * atomDeexcitation
std::ostringstream G4ExceptionDescription
G4double GetDEDX(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
void SetIonisation(G4bool val)
void SetBremsstrahlungTh(G4double val)
G4double maxRangeVariation
G4double GetDEDX(G4double &kineticEnergy, const G4MaterialCutsCouple *)
std::vector< G4VEmModel * > mod_vector
G4PhysicsTable * SubLambdaTable() const
G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple, const G4DynamicParticle *dp, G4double &length)
G4ElectronIonPair * emElectronIonPair
void DeRegister(G4VEnergyLossProcess *p)
G4PhysicsTable * RangeTableForLoss() const
void SetLambdaBinning(G4int val)
G4EmSaturation * emSaturation
G4double GetSubDEDX(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
G4bool BuildCSDARange() const
void push_back(G4PhysicsVector *)
G4double GetRangeForLoss(G4double &kineticEnergy, const G4MaterialCutsCouple *)
void AddCollaborativeProcess(G4VEnergyLossProcess *)
void SetStepFunction(G4double v1, G4double v2)
G4PhysicsTable * CSDARangeTable() const
G4double GetCSDARange(G4double &kineticEnergy, const G4MaterialCutsCouple *)
G4EnergyLossMessenger * GetMessenger()
void CopyTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *)
G4double FactorForAngleLimit() const
void SetFactorForAngleLimit(G4double val)
std::vector< G4PhysicsTable * > range_vector
G4PhysicsTable * IonisationTableForSubsec() const
G4double GetDEDXForSubsec(G4double &kineticEnergy, const G4MaterialCutsCouple *)
G4PhysicsTable * IonisationTable() const
G4ProcessManager * GetProcessManager() const
const std::vector< G4VEmProcess * > & GetEmProcessVector()
G4PhysicsTable * BuildLambdaTable(G4EmTableType tType=fRestricted)
G4double maxKinEnergyForMuons
static G4PhysicsTable * PreparePhysicsTable(G4PhysicsTable *physTable)
const G4String & GetParticleName() const
G4double GetCSDARange(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
G4LossTableBuilder * GetTableBuilder()
std::map< PD, G4VEnergyLossProcess *, std::less< PD > > loss_map
G4EmConfigurator * emConfigurator
void SetVerboseLevel(G4int)
void SetBuildCSDARange(G4bool val)
void SetInitialisationFlag(G4bool flag)
G4VEnergyLossProcess * BuildTables(const G4ParticleDefinition *aParticle)
G4PhysicsTable * LambdaTable() const
void ParticleHaveNoLoss(const G4ParticleDefinition *aParticle)
void SetInverseRangeTable(G4PhysicsTable *p)
const G4ParticleDefinition * SecondaryParticle() const
void SetParameters(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *)
G4GLOB_DLL std::ostream G4cout
G4PhysicsTable * DEDXTable() const
G4double MinKinEnergy() const
void SetLPMFlag(G4bool val)
std::vector< G4VEmFluctuationModel * > fmod_vector
G4EmCorrections * EmCorrections()
void SetLossFluctuations(G4bool val)
G4VEnergyLossProcess * currentLoss
G4ElectronIonPair * ElectronIonPair()
G4EmSaturation * EmSaturation()
void SetMaxEnergyForCSDARange(G4double val)
G4bool startInitialisation
G4int NumberOfSubCutoffRegions() const
const G4String & GetParticleType() const
void SetMaxKinEnergy(G4double e)
void Register(G4VEnergyLossProcess *p)
const G4ParticleDefinition * BaseParticle() const
const G4ParticleDefinition * GetParticleDefinition() const
void SetDEDXBinningForCSDARange(G4int val)
void BuildInverseRangeTable(const G4PhysicsTable *rangeTable, G4PhysicsTable *invRangeTable, G4bool isIonisation=false)
G4PhysicsTable * DEDXTableForSubsec() const
G4double GetEnergy(const G4ParticleDefinition *aParticle, G4double range, const G4MaterialCutsCouple *couple)
const G4String & GetProcessName() const
const std::vector< G4VEnergyLossProcess * > & GetEnergyLossProcessVector()
void SetSubCutoff(G4bool val, const G4Region *r=0)
G4double BremsstrahlungTh() const
G4double GetRangeFromRestricteDEDX(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
void RegisterExtraParticle(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::vector< G4PhysicsTable * > inv_range_vector
void BuildDEDXTable(G4PhysicsTable *dedxTable, const std::vector< G4PhysicsTable * > &)
void SetVerbose(G4int value)
void SetMinSubRange(G4double val)
G4EmCorrections * emCorrections
void SetMinEnergy(G4double val)
G4VEnergyLossProcess * GetEnergyLossProcess(const G4ParticleDefinition *)
void SetLambdaTable(G4PhysicsTable *p)
G4bool all_tables_are_built
void SetMaxEnergy(G4double val)
void SetStepFunction(G4double v1, G4double v2)
G4PhysicsTable * InverseRangeTable() const
void BuildPhysicsTable(const G4ParticleDefinition *aParticle)
G4double GetPDGMass() const
G4LossTableBuilder * tableBuilder
const G4ParticleDefinition * Particle() const
void SetLinearLossLimit(G4double val)
G4bool lossFluctuationFlag
G4int GetNumberOfBinsPerDecade() const
std::vector< G4PhysicsTable * > dedx_vector
G4double factorForAngleLimit
void PrepareModels(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
std::vector< G4VEnergyLossProcess * > loss_vector
void PreparePhysicsTable(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p, G4bool theMaster)
void SetCSDARangeTable(G4PhysicsTable *pRange)
G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple, const G4DynamicParticle *dp, G4double length)
void SetVerbose(G4int val)
void LocalPhysicsTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
void SetDEDXBinning(G4int val)
void SetMaxEnergyForMuons(G4double val)
static G4Electron * Electron()
std::vector< PD > part_vector
void SetIntegral(G4bool val)
void SetLossFluctuations(G4bool val)
const G4String & GetName() const
std::vector< G4bool > isActive
void SetSecondaryRangeTable(G4PhysicsTable *p)
static MCTruthManager * instance
G4VAtomDeexcitation * AtomDeexcitation()
std::vector< G4VEmProcess * > emp_vector
G4PhysicsTable * DEDXunRestrictedTable() const
void SetSubLambdaTable(G4PhysicsTable *p)
std::vector< PD > base_part_vector
G4bool maxEnergyForMuonsActive
void ActivateSubCutoff(G4bool val, const G4Region *region=0)
void SetRangeTableForLoss(G4PhysicsTable *p)
G4double MaxKinEnergy() const
G4double GetRange(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
std::vector< G4VMultipleScattering * > msc_vector
void SetAtomDeexcitation(G4VAtomDeexcitation *)
G4EnergyLossMessenger * theMessenger
static const G4double pos
G4PhysicsTable * BuildDEDXTable(G4EmTableType tType=fRestricted)
void SetSplineFlag(G4bool val)
const std::vector< G4VMultipleScattering * > & GetMultipleScatteringVector()
G4ProcessVector * GetProcessList() const
G4bool stepFunctionActive
G4double GetRange(G4double &kineticEnergy, const G4MaterialCutsCouple *)
void SetRandomStep(G4bool val)
std::vector< G4bool > tables_are_built
void SetSplineFlag(G4bool flag)
G4bool IsIonisationProcess() const
void SetMinKinEnergy(G4double e)