Import Geant4 10.3.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2016-06-30 14:12:05 +02:00
parent a654a7ab1f
commit 4ec577e5c4
2021 changed files with 100995 additions and 78277 deletions
@@ -66,13 +66,13 @@ public:
// as the direction of primary
virtual G4ThreeVector& SampleDirection(const G4DynamicParticle* dp,
G4double, G4int,
const G4Material*);
const G4Material*) override;
private:
// hide assignment operator
G4AngleDirect & operator=(const G4AngleDirect &right);
G4AngleDirect(const G4AngleDirect&);
G4AngleDirect & operator=(const G4AngleDirect &right) = delete;
G4AngleDirect(const G4AngleDirect&) = delete;
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4AtomicShell.hh 66241 2012-12-13 18:34:42Z gunter $
// $Id: G4AtomicShell.hh 96626 2016-04-27 08:36:27Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -59,10 +59,8 @@ public:
// The data and the methods of this class are relative to
// a given shell
G4AtomicShell(G4int id, G4double bindingEnergy);
explicit G4AtomicShell(G4int id, G4double e):identifier(id),bindingEnergy(e){};
~G4AtomicShell();
// Returns the binding energy of the shell
inline G4double BindingEnergy() const;
@@ -71,6 +69,9 @@ public:
private:
G4AtomicShell & operator=(const G4AtomicShell &right) = delete;
G4AtomicShell(const G4AtomicShell&) = delete;
G4int identifier;
G4double bindingEnergy;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DummyModel.hh 66241 2012-12-13 18:34:42Z gunter $
// $Id: G4DummyModel.hh 96139 2016-03-17 14:10:31Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -56,23 +56,23 @@ class G4DummyModel : public G4VMscModel
public:
G4DummyModel(const G4String& nam = "DummyModel");
explicit G4DummyModel(const G4String& nam = "DummyModel");
virtual ~G4DummyModel();
void Initialise(const G4ParticleDefinition*, const G4DataVector&);
void Initialise(const G4ParticleDefinition*, const G4DataVector&) final;
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double tmax);
G4double tmax) final;
private:
private:
// hide assignment operator
G4DummyModel & operator=(const G4DummyModel &right);
G4DummyModel(const G4DummyModel&);
G4DummyModel & operator=(const G4DummyModel &right) = delete;
G4DummyModel(const G4DummyModel&) = delete;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4ElectronIonPair.hh 81058 2014-05-20 09:04:28Z gcosmo $
// $Id: G4ElectronIonPair.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
//
#ifndef G4ElectronIonPair_h
@@ -75,7 +75,7 @@ class G4ElectronIonPair
{
public:
G4ElectronIonPair(G4int verb);
explicit G4ElectronIonPair(G4int verb);
virtual ~G4ElectronIonPair();
@@ -95,7 +95,7 @@ public:
// compute number of holes in the atom after PostStep interaction
G4int ResidualeChargePostStep(const G4ParticleDefinition*,
const G4TrackVector* secondary = 0,
const G4TrackVector* secondary = nullptr,
G4int processSubType = -1) const;
inline G4int ResidualeChargePostStep(const G4Step*) const;
@@ -118,10 +118,10 @@ private:
G4double FindMeanEnergyPerIonPair(const G4Material*) const;
// hide assignment operator
G4ElectronIonPair & operator=(const G4ElectronIonPair &right);
G4ElectronIonPair(const G4ElectronIonPair&);
G4ElectronIonPair & operator=(const G4ElectronIonPair &right) = delete;
G4ElectronIonPair(const G4ElectronIonPair&) = delete;
// cash
// cache
const G4Material* curMaterial;
G4double curMeanEnergy;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmBiasingManager.hh 66241 2012-12-13 18:34:42Z gunter $
// $Id: G4EmBiasingManager.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -137,9 +137,9 @@ private:
inline G4double ApplyRussianRoulette(std::vector<G4DynamicParticle*>& vd,
G4int index);
// copy constructor and hide assignment operator
G4EmBiasingManager(G4EmBiasingManager &);
G4EmBiasingManager & operator=(const G4EmBiasingManager &right);
// hide copy constructor and assignment operator
G4EmBiasingManager(G4EmBiasingManager &) = delete;
G4EmBiasingManager & operator=(const G4EmBiasingManager &right) = delete;
G4int nForcedRegions;
G4int nSecBiasedRegions;
@@ -200,7 +200,7 @@ G4EmBiasingManager::ApplyRussianRoulette(std::vector<G4DynamicParticle*>& vd,
if(G4UniformRand()*weight > 1.0) {
const G4DynamicParticle* dp = vd[k];
delete dp;
vd[k] = 0;
vd[k] = nullptr;
}
}
return weight;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmCalculator.hh 90333 2015-05-26 08:28:09Z gcosmo $
// $Id: G4EmCalculator.hh 96834 2016-05-12 09:19:10Z gcosmo $
//
//
// -------------------------------------------------------------------
@@ -76,6 +76,7 @@ class G4ionEffectiveCharge;
class G4Region;
class G4Element;
class G4EmCorrections;
class G4EmParameters;
class G4IonTable;
class G4EmCalculator
@@ -94,7 +95,7 @@ public:
G4double GetDEDX(G4double kinEnergy, const G4ParticleDefinition*,
const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetDEDX(G4double kinEnergy, const G4String& part,
const G4String& mat,
const G4String& s = "world");
@@ -102,7 +103,7 @@ public:
G4double GetRangeFromRestricteDEDX(G4double kinEnergy,
const G4ParticleDefinition*,
const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetRangeFromRestricteDEDX(G4double kinEnergy,
const G4String& part,
const G4String& mat,
@@ -110,21 +111,21 @@ public:
G4double GetCSDARange(G4double kinEnergy, const G4ParticleDefinition*,
const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetCSDARange(G4double kinEnergy, const G4String& part,
const G4String& mat,
const G4String& s = "world");
G4double GetRange(G4double kinEnergy, const G4ParticleDefinition*,
const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetRange(G4double kinEnergy, const G4String& part,
const G4String& mat,
const G4String& s = "world");
G4double GetKinEnergy(G4double range, const G4ParticleDefinition*,
const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetKinEnergy(G4double range, const G4String& part,
const G4String& mat,
const G4String& s = "world");
@@ -132,7 +133,7 @@ public:
G4double GetCrossSectionPerVolume(
G4double kinEnergy, const G4ParticleDefinition*,
const G4String& processName, const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetCrossSectionPerVolume(
G4double kinEnergy, const G4String& part, const G4String& proc,
const G4String& mat, const G4String& s = "world");
@@ -144,7 +145,7 @@ public:
G4double GetMeanFreePath(G4double kinEnergy, const G4ParticleDefinition*,
const G4String& processName, const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
inline G4double GetMeanFreePath(G4double kinEnergy, const G4String& part,
const G4String& proc, const G4String& mat,
const G4String& s = "world");
@@ -225,7 +226,7 @@ public:
const G4String& part, G4int Z,
G4AtomicShellEnumerator shell,
G4double kinEnergy,
const G4Material* mat = 0);
const G4Material* mat = nullptr);
G4double ComputeMeanFreePath(
G4double kinEnergy, const G4ParticleDefinition*,
@@ -255,7 +256,7 @@ public:
const G4Region* FindRegion(const G4String&);
const G4MaterialCutsCouple* FindCouple(const G4Material*,
const G4Region* r = 0);
const G4Region* r = nullptr);
G4VProcess* FindProcess(const G4ParticleDefinition* part,
const G4String& processName);
@@ -300,12 +301,14 @@ private:
void CheckMaterial(G4int Z);
G4EmCalculator & operator=(const G4EmCalculator &right);
G4EmCalculator(const G4EmCalculator&);
// hide copy and assign
G4EmCalculator & operator=(const G4EmCalculator &right) = delete;
G4EmCalculator(const G4EmCalculator&) = delete;
std::vector<const G4Material*> localMaterials;
std::vector<const G4MaterialCutsCouple*> localCouples;
G4EmParameters* theParameters;
G4LossTableManager* manager;
G4NistManager* nist;
G4IonTable* ionTable;
@@ -315,7 +318,7 @@ private:
G4int verbose;
// cash
// cache
G4int currentCoupleIndex;
const G4MaterialCutsCouple* currentCouple;
const G4Material* currentMaterial;
@@ -524,7 +527,7 @@ inline G4double G4EmCalculator::ComputeCrossSectionPerShell(
G4int shellIdx, G4double cut)
{
return ComputeCrossSectionPerShell(kinEnergy, FindParticle(part),
processName, G4lrint(elm->GetZ()),
processName, elm->GetZasInt(),
shellIdx, cut);
}
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmConfigurator.hh 91566 2015-07-27 12:20:23Z gcosmo $
// $Id: G4EmConfigurator.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -64,7 +64,7 @@ class G4EmConfigurator
{
public:
G4EmConfigurator(G4int verboseLevel = 1);
explicit G4EmConfigurator(G4int verboseLevel = 1);
~G4EmConfigurator();
@@ -78,7 +78,7 @@ public:
const G4String& regionName = "",
G4double emin = 0.0,
G4double emax = DBL_MAX,
G4VEmFluctuationModel* fm = 0);
G4VEmFluctuationModel* fm = nullptr);
// Add all previously declared models to corresponding processes
// Can be called in ConstructPhysics
@@ -116,8 +116,8 @@ private:
G4double emin, G4double emax);
// hide assignment operator
G4EmConfigurator & operator=(const G4EmConfigurator &right);
G4EmConfigurator(const G4EmConfigurator&);
G4EmConfigurator & operator=(const G4EmConfigurator &right) = delete;
G4EmConfigurator(const G4EmConfigurator&) = delete;
std::vector<G4VEmModel*> models;
std::vector<G4VEmFluctuationModel*> flucModels;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmCorrections.hh 91745 2015-08-04 11:51:12Z gcosmo $
// $Id: G4EmCorrections.hh 96698 2016-05-02 07:19:24Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -60,7 +60,7 @@
#include "G4ionEffectiveCharge.hh"
#include "G4Material.hh"
#include "G4ParticleDefinition.hh"
#include "G4NistManager.hh"
#include "G4Pow.hh"
class G4VEmModel;
class G4PhysicsVector;
@@ -73,7 +73,7 @@ class G4EmCorrections
public:
G4EmCorrections(G4int verb);
explicit G4EmCorrections(G4int verb);
virtual ~G4EmCorrections();
@@ -160,9 +160,10 @@ public:
G4double kineticEnergy);
// ionisation models for ions
inline void SetIonisationModels(G4VEmModel* m1 = 0, G4VEmModel* m2 = 0);
inline void SetIonisationModels(G4VEmModel* m1 = nullptr,
G4VEmModel* m2 = nullptr);
inline G4int GetNumberOfStoppingVectors();
inline G4int GetNumberOfStoppingVectors() const;
inline void SetVerbose(G4int verb);
@@ -180,68 +181,46 @@ private:
G4double LShell(G4double theta, G4double eta);
G4int Index(G4double x, G4double* y, G4int n);
G4int Index(G4double x, const G4double* y, G4int n) const;
G4double Value(G4double xv, G4double x1, G4double x2,
G4double y1, G4double y2);
G4double y1, G4double y2) const;
G4double Value2(G4double xv, G4double yv, G4double x1, G4double x2,
G4double y1, G4double y2,
G4double z11, G4double z21, G4double z12, G4double z22);
G4double y1, G4double y2, G4double z11, G4double z21,
G4double z12, G4double z22) const;
G4double NuclearStoppingPower(G4double e, G4double z1, G4double z2,
G4double m1, G4double m2);
// hide assignment operator
G4EmCorrections & operator=(const G4EmCorrections &right);
G4EmCorrections(const G4EmCorrections&);
G4EmCorrections & operator=(const G4EmCorrections &right) = delete;
G4EmCorrections(const G4EmCorrections&) = delete;
G4Pow* g4pow;
static const G4double inveplus;
static const G4double ZD[11];
static const G4double UK[20];
static const G4double VK[20];
static G4double ZK[20];
static const G4double Eta[29];
static G4double CK[20][29];
static G4double CL[26][28];
static const G4double UL[26];
static G4double VL[26];
static G4LPhysicsFreeVector* BarkasCorr;
static G4LPhysicsFreeVector* ThetaK;
static G4LPhysicsFreeVector* ThetaL;
G4double ed[104];
G4double a[104];
G4double theZieglerFactor;
G4double alpha2;
G4bool lossFlucFlag;
G4int verbose;
G4int nK;
G4int nL;
G4int nEtaK;
G4int nEtaL;
G4double COSEB[14];
G4double COSXI[14];
G4double ZD[11];
G4double TheK[20];
G4double SK[20];
G4double TK[20];
G4double UK[20];
G4double VK[20];
G4double ZK[20];
G4double TheL[26];
G4double SL[26];
G4double TL[26];
G4double UL[26];
G4double VL[26];
G4double Eta[29];
G4double CK[20][29];
G4double CL[26][28];
G4double HM[53];
G4double HN[31];
G4double Z23[100];
G4LPhysicsFreeVector* BarkasCorr;
G4LPhysicsFreeVector* ThetaK;
G4LPhysicsFreeVector* ThetaL;
std::vector<const G4Material*> currmat;
std::map< G4int, std::vector<G4double> > thcorr;
size_t ncouples;
size_t ncouples;
const G4ParticleDefinition* particle;
const G4ParticleDefinition* curParticle;
@@ -250,11 +229,15 @@ private:
const G4ElementVector* theElementVector;
const G4double* atomDensity;
G4int numberOfElements;
G4PhysicsVector* curVector;
G4IonTable* ionTable;
G4VEmModel* ionLEModel;
G4VEmModel* ionHEModel;
G4double kinEnergy;
G4double mass;
G4double massFactor;
G4double formfact;
G4double eth;
G4double tau;
G4double gamma;
@@ -267,14 +250,16 @@ private:
G4double q2;
G4double eCorrMin;
G4double eCorrMax;
G4int verbose;
G4int nK;
G4int nL;
G4int nEtaK;
G4int nEtaL;
G4int nbinCorr;
G4ionEffectiveCharge effCharge;
G4NistManager* nist;
G4IonTable* ionTable;
G4VEmModel* ionLEModel;
G4VEmModel* ionHEModel;
G4int numberOfElements;
// Ion stopping data
G4int nIons;
@@ -288,10 +273,13 @@ private:
std::vector<const G4Material*> materialList;
std::vector<G4PhysicsVector*> stopData;
G4PhysicsVector* curVector;
G4bool isMaster;
G4ionEffectiveCharge effCharge;
};
inline G4int G4EmCorrections::Index(G4double x, G4double* y, G4int n)
inline G4int
G4EmCorrections::Index(G4double x, const G4double* y, G4int n) const
{
G4int iddd = n-1;
// Loop checking, 03-Aug-2015, Vladimir Ivanchenko
@@ -300,7 +288,7 @@ inline G4int G4EmCorrections::Index(G4double x, G4double* y, G4int n)
}
inline G4double G4EmCorrections::Value(G4double xv, G4double x1, G4double x2,
G4double y1, G4double y2)
G4double y1, G4double y2) const
{
return y1 + (y2 - y1)*(xv - x1)/(x2 - x1);
}
@@ -309,7 +297,7 @@ inline G4double G4EmCorrections::Value2(G4double xv, G4double yv,
G4double x1, G4double x2,
G4double y1, G4double y2,
G4double z11, G4double z21,
G4double z12, G4double z22)
G4double z12, G4double z22) const
{
return (z11*(x2-xv)*(y2-yv) + z22*(xv-x1)*(yv-y1) +
0.5*(z12*((x2-xv)*(yv-y1)+(xv-x1)*(y2-yv))+
@@ -324,7 +312,7 @@ G4EmCorrections::SetIonisationModels(G4VEmModel* mod1, G4VEmModel* mod2)
if(mod2) { ionHEModel = mod2; }
}
inline G4int G4EmCorrections::GetNumberOfStoppingVectors()
inline G4int G4EmCorrections::GetNumberOfStoppingVectors() const
{
return nIons;
}
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmElementSelector.hh 92921 2015-09-21 15:06:51Z gcosmo $
// $Id: G4EmElementSelector.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -73,7 +73,7 @@ public:
void Initialise(const G4ParticleDefinition*, G4double cut = 0.0);
void Dump(const G4ParticleDefinition* p = 0);
void Dump(const G4ParticleDefinition* p = nullptr);
inline const G4Element* SelectRandomAtom(G4double kineticEnergy) const;
@@ -82,8 +82,8 @@ public:
private:
// hide assignment operator
G4EmElementSelector & operator=(const G4EmElementSelector &right);
G4EmElementSelector(const G4EmElementSelector&);
G4EmElementSelector & operator=(const G4EmElementSelector &right) = delete;
G4EmElementSelector(const G4EmElementSelector&) = delete;
G4VEmModel* model;
const G4Material* material;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmModelManager.hh 91745 2015-08-04 11:51:12Z gcosmo $
// $Id: G4EmModelManager.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -119,8 +119,8 @@ private:
return theRegion;
};
G4RegionModels(G4RegionModels &);
G4RegionModels & operator=(const G4RegionModels &right);
G4RegionModels(G4RegionModels &) = delete;
G4RegionModels & operator=(const G4RegionModels &right) = delete;
const G4Region* theRegion;
G4int nModelsForRegion;
@@ -162,22 +162,35 @@ public:
G4bool startFromNull = true,
G4EmTableType t = fRestricted);
G4VEmModel* GetModel(G4int, G4bool ver = false);
void AddEmModel(G4int, G4VEmModel*, G4VEmFluctuationModel*, const G4Region*);
void AddEmModel(G4int, G4VEmModel*, G4VEmFluctuationModel*, const G4Region*);
void UpdateEmModel(const G4String&, G4double, G4double);
void UpdateEmModel(const G4String& model_name, G4double emin, G4double emax);
// Get model pointer from the model list
G4VEmModel* GetModel(G4int idx, G4bool ver = false);
// Get model pointer from the model list for a given material cuts couple
// no check on material cuts couple index
G4VEmModel* GetRegionModel(G4int idx, size_t index_couple);
// total number of models for material cut couples
// no check on material cuts couple index
G4int NumberOfRegionModels(size_t index_couple) const;
// Automatic documentation
void DumpModelList(G4int verb);
// Select model for given material cuts couple index
inline G4VEmModel* SelectModel(G4double& energy, size_t& index);
// Access to cuts
inline const G4DataVector* Cuts() const;
inline const G4DataVector* SubCutoff() const;
// Set flag of fluorescence
inline void SetFluoFlag(G4bool val);
// total number of models
inline G4int NumberOfModels() const;
private:
@@ -190,8 +203,8 @@ private:
// hide assignment operator
G4EmModelManager(G4EmModelManager &);
G4EmModelManager & operator=(const G4EmModelManager &right);
G4EmModelManager(G4EmModelManager &) = delete;
G4EmModelManager & operator=(const G4EmModelManager &right) = delete;
// =====================================================================
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmMultiModel.hh 66241 2012-12-13 18:34:42Z gunter $
// $Id: G4EmMultiModel.hh 95681 2016-02-18 09:44:18Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -61,19 +61,19 @@ class G4EmMultiModel : public G4VEmModel
public:
G4EmMultiModel(const G4String& nam = "MultiModel");
explicit G4EmMultiModel(const G4String& nam = "MultiModel");
virtual ~G4EmMultiModel();
void AddModel(G4VEmModel*);
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
const G4DataVector&) final;
virtual G4double ComputeDEDX(const G4MaterialCutsCouple*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy);
G4double cutEnergy) final;
// main method to compute cross section per atom
virtual
@@ -82,19 +82,19 @@ public:
G4double Z,
G4double A = 0., /* amu */
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) final;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double tmax);
G4double tmax) final;
private:
// hide assignment operator
G4EmMultiModel & operator=(const G4EmMultiModel &right);
G4EmMultiModel(const G4EmMultiModel&);
G4EmMultiModel & operator=(const G4EmMultiModel &right) = delete;
G4EmMultiModel(const G4EmMultiModel&) = delete;
G4int nModels;
std::vector<G4VEmModel*> model;
@@ -59,9 +59,14 @@
#include "globals.hh"
#include "G4ios.hh"
#include "G4MscStepLimitType.hh"
#include "G4NuclearFormfactorType.hh"
#include <vector>
class G4EmParametersMessenger;
class G4VEnergyLossProcess;
class G4VEmProcess;
class G4VAtomDeexcitation;
class G4StateManager;
class G4EmParameters
{
@@ -130,6 +135,9 @@ public:
void SetUseMottCorrection(G4bool val);
G4bool UseMottCorrection() const;
void SetIntegral(G4bool val);
G4bool Integral() const;
// double parameters with values
void SetMinSubRange(G4double val);
G4double MinSubRange() const;
@@ -176,6 +184,10 @@ public:
void SetMscSkin(G4double val);
G4double MscSkin() const;
void SetStepFunction(G4double v1, G4double v2);
void SetStepFunctionMuHad(G4double v1, G4double v2);
// integer parameters
void SetNumberOfBins(G4int val);
G4int NumberOfBins() const;
@@ -195,6 +207,9 @@ public:
void SetMscMuHadStepLimitType(G4MscStepLimitType val);
G4MscStepLimitType MscMuHadStepLimitType() const;
void SetNuclearFormfactorType(G4NuclearFormfactorType val);
G4NuclearFormfactorType NuclearFormfactorType() const;
// string parameters
void SetPIXECrossSectionModel(const G4String&);
const G4String& PIXECrossSectionModel();
@@ -202,6 +217,7 @@ public:
void SetPIXEElectronCrossSectionModel(const G4String&);
const G4String& PIXEElectronCrossSectionModel();
// parameters per region or per process
void AddPAIModel(const G4String& particle,
const G4String& region,
const G4String& type);
@@ -216,21 +232,51 @@ public:
const std::vector<G4String>& RegionsDNA() const;
const std::vector<G4String>& TypesDNA() const;
void SetSubCutoff(G4bool val, const G4String& region = "");
void SetDeexActiveRegion(const G4String& region, G4bool fdeex,
G4bool fauger, G4bool fpixe);
void SetProcessBiasingFactor(const G4String& procname,
G4double val, G4bool wflag);
void ActivateForcedInteraction(const G4String& procname,
const G4String& region,
G4double length,
G4bool wflag);
void ActivateSecondaryBiasing(const G4String& name,
const G4String& region,
G4double factor,
G4double energyLimit);
// initialisation methods
void DefineRegParamForLoss(G4VEnergyLossProcess*,
G4bool isElectron) const;
void DefineRegParamForEM(G4VEmProcess*) const;
void DefineRegParamForDeex(G4VAtomDeexcitation*) const;
private:
G4EmParameters();
void PrintWarning(G4ExceptionDescription& ed);
G4bool IsLocked() const;
G4String CheckRegion(const G4String&) const;
void PrintWarning(G4ExceptionDescription& ed) const;
static G4EmParameters* theInstance;
G4EmParametersMessenger* theMessenger;
G4StateManager* fStateManager;
G4bool lossFluctuation;
G4bool buildCSDARange;
G4bool flagLPM;
G4bool spline;
G4bool finalRange;
G4bool cutAsFinalRange;
G4bool applyCuts;
G4bool fluo;
G4bool beardenFluoDir;
@@ -243,6 +289,7 @@ private:
G4bool latDisplacementBeyondSafety;
G4bool useAngGeneratorForIonisation;
G4bool useMottCorrection;
G4bool integral;
G4double minSubRange;
G4double minKinEnergy;
@@ -259,6 +306,10 @@ private:
G4double rangeFactorMuHad;
G4double geomFactor;
G4double skin;
G4double dRoverRange;
G4double finalRange;
G4double dRoverRangeMuHad;
G4double finalRangeMuHad;
G4int nbins;
G4int nbinsPerDecade;
@@ -267,6 +318,7 @@ private:
G4MscStepLimitType mscStepLimit;
G4MscStepLimitType mscStepLimitMuHad;
G4NuclearFormfactorType nucFormfactor;
G4String namePIXE;
G4String nameElectronPIXE;
@@ -280,6 +332,28 @@ private:
std::vector<G4String> m_regnamesDNA;
std::vector<G4String> m_typesDNA;
std::vector<G4String> m_regnamesSubCut;
std::vector<G4bool> m_subCuts;
std::vector<G4String> m_regnamesDeex;
std::vector<G4bool> m_fluo;
std::vector<G4bool> m_auger;
std::vector<G4bool> m_pixe;
std::vector<G4String> m_procBiasedXS;
std::vector<G4double> m_factBiasedXS;
std::vector<G4bool> m_weightBiasedXS;
std::vector<G4String> m_procForced;
std::vector<G4String> m_regnamesForced;
std::vector<G4double> m_lengthForced;
std::vector<G4bool> m_weightForced;
std::vector<G4String> m_procBiasedSec;
std::vector<G4String> m_regnamesBiasedSec;
std::vector<G4double> m_factBiasedSec;
std::vector<G4double> m_elimBiasedSec;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -69,10 +69,10 @@ class G4EmParametersMessenger: public G4UImessenger
{
public: // with description
G4EmParametersMessenger(G4EmParameters*);
explicit G4EmParametersMessenger(G4EmParameters*);
virtual ~G4EmParametersMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
virtual void SetNewValue(G4UIcommand*, G4String) override;
private:
@@ -133,6 +133,17 @@ private:
G4UIcmdWithAString* meCmd;
G4UIcommand* dnaCmd;
G4UIcommand* dumpCmd;
G4UIcommand* SubSecCmd;
G4UIcommand* StepFuncCmd;
G4UIcommand* StepFuncCmd1;
G4UIcmdWithABool* IntegCmd;
G4UIcommand* deexCmd;
G4UIcommand* bfCmd;
G4UIcommand* fiCmd;
G4UIcommand* bsCmd;
G4UIcmdWithAString* nffCmd;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmProcessOptions.hh 84398 2014-10-15 07:20:18Z gcosmo $
// $Id: G4EmProcessOptions.hh 96088 2016-03-14 16:03:38Z gcosmo $
//
//
// -------------------------------------------------------------------
@@ -59,7 +59,6 @@
class G4EmParameters;
class G4LossTableManager;
class G4Region;
class G4EmProcessOptions
{
@@ -134,7 +133,7 @@ public:
void SetMscStepLimitation(G4MscStepLimitType val);
void SetSubCutoff(G4bool val, const G4Region* r=0);
void SetSubCutoff(G4bool val, const G4String& r = "");
void SetIntegral(G4bool val);
@@ -165,10 +164,9 @@ public:
private:
G4EmProcessOptions & operator=(const G4EmProcessOptions &right);
G4EmProcessOptions(const G4EmProcessOptions&);
G4EmProcessOptions & operator=(const G4EmProcessOptions &right) = delete;
G4EmProcessOptions(const G4EmProcessOptions&) = delete;
G4LossTableManager* theManager;
G4EmParameters* theParameters;
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmSaturation.hh 81936 2014-06-06 15:42:55Z gcosmo $
// $Id: G4EmSaturation.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
//
#ifndef G4EmSaturation_h
@@ -73,7 +73,7 @@ class G4EmSaturation
{
public:
G4EmSaturation(G4int verb);
explicit G4EmSaturation(G4int verb);
virtual ~G4EmSaturation();
// this method may be overwritten in the derived class
@@ -84,25 +84,25 @@ public:
G4double edepTotal,
G4double edepNIEL = 0.0);
// this method should not be overwitten
inline G4double VisibleEnergyDeposition(const G4Step*);
// find and Birks coefficient
G4double FindG4BirksCoefficient(const G4Material*);
inline void SetVerbose(G4int);
// dump coeffitients used in run time
void DumpBirksCoefficients();
// dump G4 list
void DumpG4BirksCoefficients();
// this method should not be overwitten
inline G4double VisibleEnergyDepositionAtAStep(const G4Step*);
inline void SetVerbose(G4int);
private:
// hide assignment operator
G4EmSaturation & operator=(const G4EmSaturation &right);
G4EmSaturation(const G4EmSaturation&);
G4EmSaturation & operator=(const G4EmSaturation &right) = delete;
G4EmSaturation(const G4EmSaturation&) = delete;
inline G4double FindBirksCoefficient(const G4Material*);
@@ -115,7 +115,7 @@ private:
G4LossTableManager* manager;
G4NistManager* nist;
// cash
// cache
const G4Material* curMaterial;
G4double curBirks;
G4double curRatio;
@@ -146,7 +146,7 @@ inline void G4EmSaturation::SetVerbose(G4int val)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4EmSaturation::VisibleEnergyDeposition(
inline G4double G4EmSaturation::VisibleEnergyDepositionAtAStep(
const G4Step* step)
{
G4Track* track = step->GetTrack();
@@ -1,96 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EnergyLossMessenger.hh 90095 2015-05-13 12:10:25Z gcosmo $
//
// -------------------------------------------------------------------
//
// GEANT4 Class file
//
// File name: G4EnergyLossMessenger
//
// Author: Michel Maire
//
// Creation date: 22-06-2000
//
// Modifications:
// 10-01-06 SetStepLimits -> SetStepFunction (V.Ivantchenko)
// 10-05-06 Add command MscStepLimit (V.Ivantchenko)
// 10-11-06 Add command binsDEDX (V.Ivantchenko)
// 12-02-07 Add SetSkin, SetLinearLossLimit (V.Ivanchenko)
// 16-03-07 modify /process/eLoss/minsubsec command (V.Ivanchenko)
// 18-05-07 add /process/msc directory and commands (V.Ivanchenko)
// 11-03-08 add /process/em directory and commands (V.Ivanchenko)
//
// -------------------------------------------------------------------
//
// Class Description:
// This is a messenger class to interface to exchange information
// between G4VEm and UI.
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef G4EnergyLossMessenger_h
#define G4EnergyLossMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class G4UIdirectory;
class G4UIcommand;
class G4UIcmdWithABool;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADouble;
class G4UIcmdWithADoubleAndUnit;
class G4EmProcessOptions;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class G4EnergyLossMessenger: public G4UImessenger
{
public: // with description
G4EnergyLossMessenger();
virtual ~G4EnergyLossMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
G4EmProcessOptions* opt;
G4UIcmdWithABool* SubSecCmd;
G4UIcommand* StepFuncCmd;
G4UIcommand* deexCmd;
G4UIcmdWithABool* IntegCmd;
G4UIcommand* bfCmd;
G4UIcommand* fiCmd;
G4UIcommand* brCmd;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4LossTableBuilder.hh 66241 2012-12-13 18:34:42Z gunter $
// $Id: G4LossTableBuilder.hh 96088 2016-03-14 16:03:38Z gcosmo $
//
//
// -------------------------------------------------------------------
@@ -57,6 +57,7 @@
class G4VEmModel;
class G4ParticleDefinition;
class G4EmParameters;
class G4LossTableBuilder
{
@@ -107,8 +108,10 @@ private:
void InitialiseCouples();
G4LossTableBuilder & operator=(const G4LossTableBuilder &right);
G4LossTableBuilder(const G4LossTableBuilder&);
G4LossTableBuilder & operator=(const G4LossTableBuilder &right) = delete;
G4LossTableBuilder(const G4LossTableBuilder&) = delete;
G4EmParameters* theParameters;
G4bool splineFlag;
G4bool isInitialized;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4LossTableManager.hh 91566 2015-07-27 12:20:23Z gcosmo $
// $Id: G4LossTableManager.hh 96115 2016-03-16 18:53:00Z gcosmo $
//
//
// -------------------------------------------------------------------
@@ -81,7 +81,6 @@
#include <vector>
#include "globals.hh"
#include "G4ThreadLocalSingleton.hh"
#include "G4EmParameters.hh"
#include "G4VEnergyLossProcess.hh"
#include "G4EmCorrections.hh"
#include "G4LossTableBuilder.hh"
@@ -90,7 +89,6 @@
class G4PhysicsTable;
class G4MaterialCutsCouple;
class G4EnergyLossMessenger;
class G4ParticleDefinition;
class G4Region;
class G4EmSaturation;
@@ -204,36 +202,6 @@ public:
void RegisterExtraParticle(const G4ParticleDefinition* aParticle,
G4VEnergyLossProcess* p);
void SetLossFluctuations(G4bool val);
void SetSubCutoff(G4bool val, const G4Region* r=0);
void SetIntegral(G4bool val);
void SetRandomStep(G4bool val);
void SetMinSubRange(G4double val);
void SetMinEnergy(G4double val);
void SetMaxEnergy(G4double val);
void SetMaxEnergyForCSDARange(G4double val);
void SetMaxEnergyForMuons(G4double val);
void SetDEDXBinning(G4int val);
void SetDEDXBinningForCSDARange(G4int val);
void SetLambdaBinning(G4int val);
void SetStepFunction(G4double v1, G4double v2);
void SetBuildCSDARange(G4bool val);
void SetLinearLossLimit(G4double val);
void SetVerbose(G4int val);
void SetAtomDeexcitation(G4VAtomDeexcitation*);
@@ -244,18 +212,8 @@ public:
// Access methods
//-------------------------------------------------
G4EnergyLossMessenger* GetMessenger();
inline G4bool BuildCSDARange() const;
inline G4bool IsMaster() const;
inline G4double MinKinEnergy() const;
inline G4double MaxKinEnergy() const;
inline G4int GetNumberOfBinsPerDecade() const;
inline
G4VEnergyLossProcess* GetEnergyLossProcess(const G4ParticleDefinition*);
@@ -296,15 +254,12 @@ private:
void ParticleHaveNoLoss(const G4ParticleDefinition* aParticle);
void SetParameters(const G4ParticleDefinition* aParticle,
G4VEnergyLossProcess*);
void CopyDEDXTables();
void PrintEWarning(G4String, G4double);
G4LossTableManager(G4LossTableManager &);
G4LossTableManager & operator=(const G4LossTableManager &right);
G4LossTableManager(G4LossTableManager &) = delete;
G4LossTableManager & operator=(const G4LossTableManager &right) = delete;
static G4ThreadLocal G4LossTableManager* instance;
@@ -325,7 +280,7 @@ private:
std::vector<G4VEmModel*> mod_vector;
std::vector<G4VEmFluctuationModel*> fmod_vector;
// cash
// cache
G4VEnergyLossProcess* currentLoss;
PD currentParticle;
PD theElectron;
@@ -337,18 +292,8 @@ private:
G4bool all_tables_are_built;
G4bool startInitialisation;
G4bool subCutoffFlag;
G4bool integral;
G4bool integralActive;
G4bool stepFunctionActive;
G4bool isMaster;
G4double maxRangeVariation;
G4double maxFinalStep;
G4LossTableBuilder* tableBuilder;
G4EnergyLossMessenger* theMessenger;
G4EmCorrections* emCorrections;
G4EmSaturation* emSaturation;
G4EmConfigurator* emConfigurator;
@@ -368,8 +313,8 @@ private:
inline G4VEnergyLossProcess*
G4LossTableManager::GetEnergyLossProcess(const G4ParticleDefinition *aParticle)
{
//G4cout << aParticle << " " << currentParticle
//<< " " << currentLoss << G4endl;
//G4cout << "G4LossTableManager::GetEnergyLossProcess: "
//<< aParticle << " " << currentParticle << " " << currentLoss << G4endl;
if(aParticle != currentParticle) {
currentParticle = aParticle;
std::map<PD,G4VEnergyLossProcess*,std::less<PD> >::const_iterator pos;
@@ -377,10 +322,8 @@ G4LossTableManager::GetEnergyLossProcess(const G4ParticleDefinition *aParticle)
currentLoss = (*pos).second;
} else {
currentLoss = 0;
//if(aParticle->GetParticleType() == "nucleus") {
if ((pos = loss_map.find(theGenericIon)) != loss_map.end()) {
currentLoss = (*pos).second;
//}
}
}
}
@@ -485,13 +428,6 @@ G4double G4LossTableManager::GetDEDXDispersion(
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
inline G4bool G4LossTableManager::BuildCSDARange() const
{
return theParameters->BuildCSDARange();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
inline G4bool G4LossTableManager::IsMaster() const
{
return isMaster;
@@ -499,27 +435,6 @@ inline G4bool G4LossTableManager::IsMaster() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4double G4LossTableManager::MinKinEnergy() const
{
return theParameters->MinKinEnergy();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4double G4LossTableManager::MaxKinEnergy() const
{
return theParameters->MaxKinEnergy();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
G4int G4LossTableManager::GetNumberOfBinsPerDecade() const
{
return theParameters->NumberOfBinsPerDecade();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4EmCorrections* G4LossTableManager::EmCorrections()
{
return emCorrections;
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4NuclearFormfactorType.hh 84082 2014-10-06 14:33:09Z urban $
//
//---------------------------------------------------------------
//
// G4NuclearFormfactorType.hh
//
// Class Description:
// This is an enumerator to define type nuclear formfactor
// parameterisation
//
// Author: Vladimir Ivanchenko
//
// Creation date: 9.03.2016
// Modifications:
//
//---------------------------------------------------------------
#ifndef G4NuclearFormfactorType_h
#define G4NuclearFormfactorType_h 1
enum G4NuclearFormfactorType
{
fNoneNF = 0,
fExponentialNF,
fGaussianNF,
fFlatNF
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VAtomDeexcitation.hh 92921 2015-09-21 15:06:51Z gcosmo $
// $Id: G4VAtomDeexcitation.hh 96698 2016-05-02 07:19:24Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -64,7 +64,7 @@ class G4MaterialCutsCouple;
class G4VAtomDeexcitation {
public:
G4VAtomDeexcitation(const G4String& modname = "Deexcitation");
explicit G4VAtomDeexcitation(const G4String& modname = "Deexcitation");
virtual ~G4VAtomDeexcitation();
@@ -142,15 +142,16 @@ public:
G4int Z,
G4AtomicShellEnumerator shell,
G4double kinE,
const G4Material* mat = 0) = 0;
const G4Material* mat = nullptr) = 0;
// access or compute PIXE cross section
virtual G4double
ComputeShellIonisationCrossSectionPerAtom(const G4ParticleDefinition*,
G4int Z,
G4AtomicShellEnumerator shell,
G4double kinE,
const G4Material* mat = 0) = 0;
ComputeShellIonisationCrossSectionPerAtom(
const G4ParticleDefinition*,
G4int Z,
G4AtomicShellEnumerator shell,
G4double kinE,
const G4Material* mat = nullptr) = 0;
// Sampling of PIXE for ionisation processes
void AlongStepDeexcitation(std::vector<G4Track*>& tracks,
@@ -161,8 +162,8 @@ public:
private:
// copy constructor and hide assignment operator
G4VAtomDeexcitation(G4VAtomDeexcitation &);
G4VAtomDeexcitation & operator=(const G4VAtomDeexcitation &right);
G4VAtomDeexcitation(G4VAtomDeexcitation &) = delete;
G4VAtomDeexcitation & operator=(const G4VAtomDeexcitation &right) = delete;
G4EmParameters* theParameters;
const G4ParticleDefinition* gamma;
@@ -170,11 +171,18 @@ private:
G4ProductionCutsTable* theCoupleTable;
G4int verbose;
G4String name;
G4bool isActive;
G4bool flagAuger;
G4bool flagAugerCascade;
G4bool flagPIXE;
G4bool ignoreCuts;
G4bool isActiveLocked;
G4bool isAugerLocked;
G4bool isAugerCascadeLocked;
G4bool isPIXELocked;
std::vector<G4bool> activeZ;
std::vector<G4bool> activeDeexcitationMedia;
std::vector<G4bool> activeAugerMedia;
@@ -191,8 +199,7 @@ private:
inline void G4VAtomDeexcitation::SetFluo(G4bool val)
{
isActive = val;
theParameters->SetFluo(val);
if(!isActiveLocked) { isActive = val; isActiveLocked = true; }
}
inline G4bool G4VAtomDeexcitation::IsFluoActive() const
@@ -202,9 +209,7 @@ inline G4bool G4VAtomDeexcitation::IsFluoActive() const
inline void G4VAtomDeexcitation::SetAuger(G4bool val)
{
flagAuger = val;
if(val) { isActive = true; }
theParameters->SetAuger(val);
if(!isAugerLocked) { flagAuger = val; isAugerLocked = true; }
}
inline G4bool G4VAtomDeexcitation::IsAugerActive() const
@@ -214,9 +219,7 @@ inline G4bool G4VAtomDeexcitation::IsAugerActive() const
inline void G4VAtomDeexcitation::SetAugerCascade(G4bool val)
{
flagAugerCascade = val;
if(val) { isActive = true; }
theParameters->SetAugerCascade(val);
if(!isAugerCascadeLocked) { flagAugerCascade = val; isAugerCascadeLocked = true; }
}
inline G4bool G4VAtomDeexcitation::IsAugerCascadeActive() const
@@ -226,9 +229,7 @@ inline G4bool G4VAtomDeexcitation::IsAugerCascadeActive() const
inline void G4VAtomDeexcitation::SetPIXE(G4bool val)
{
flagPIXE = val;
if(val) { isActive = true; }
theParameters->SetPixe(val);
if(!isPIXELocked) { flagPIXE = val; isPIXELocked = true; }
}
inline G4bool G4VAtomDeexcitation::IsPIXEActive() const
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmAngularDistribution.hh 73847 2013-09-13 14:32:39Z gcosmo $
// $Id: G4VEmAngularDistribution.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -61,7 +61,7 @@ class G4VEmAngularDistribution
{
public:
G4VEmAngularDistribution(const G4String& name);
explicit G4VEmAngularDistribution(const G4String& name);
virtual ~G4VEmAngularDistribution();
@@ -91,9 +91,10 @@ protected:
private:
// hide assignment operator
G4VEmAngularDistribution & operator=(const G4VEmAngularDistribution &right);
G4VEmAngularDistribution(const G4VEmAngularDistribution&);
// hide assignment operator
G4VEmAngularDistribution &
operator=(const G4VEmAngularDistribution &right) = delete;
G4VEmAngularDistribution(const G4VEmAngularDistribution&) = delete;
G4String fName;
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmFluctuationModel.hh 89820 2015-04-30 14:54:53Z gcosmo $
// $Id: G4VEmFluctuationModel.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -71,7 +71,7 @@ class G4VEmFluctuationModel
public:
G4VEmFluctuationModel(const G4String& nam);
explicit G4VEmFluctuationModel(const G4String& nam);
virtual ~G4VEmFluctuationModel();
@@ -107,8 +107,9 @@ public:
private:
// hide assignment operator
G4VEmFluctuationModel & operator=(const G4VEmFluctuationModel &right);
G4VEmFluctuationModel(const G4VEmFluctuationModel&);
G4VEmFluctuationModel &
operator=(const G4VEmFluctuationModel &right) = delete;
G4VEmFluctuationModel(const G4VEmFluctuationModel&) = delete;
const G4String name;
G4LossTableManager* fManager;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmModel.hh 93264 2015-10-14 09:30:04Z gcosmo $
// $Id: G4VEmModel.hh 97742 2016-06-08 09:24:54Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -106,7 +106,7 @@ class G4VEmModel
public:
G4VEmModel(const G4String& nam);
explicit G4VEmModel(const G4String& nam);
virtual ~G4VEmModel();
@@ -157,10 +157,9 @@ public:
// method to get partial cross section
virtual G4double GetPartialCrossSection(const G4Material*,
G4int /*level*/,
G4int level,
const G4ParticleDefinition*,
G4double /*kineticEnergy*/)
{ return 0;}
G4double kineticEnergy);
// main method to compute cross section per atom
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
@@ -223,7 +222,7 @@ public:
virtual void DefineForRegion(const G4Region*);
// for automatic documentation
virtual void ModelDescription(std::ostream& outFile) const; //=0;
virtual void ModelDescription(std::ostream& outFile) const;
protected:
@@ -254,7 +253,7 @@ public:
inline void SetElementSelectors(std::vector<G4EmElementSelector*>*);
// dEdx per unit length
inline G4double ComputeDEDX(const G4MaterialCutsCouple*,
virtual inline G4double ComputeDEDX(const G4MaterialCutsCouple*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = DBL_MAX);
@@ -304,7 +303,7 @@ public:
// Get/Set methods
//------------------------------------------------------------------------
void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel* f=0);
void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel* f=nullptr);
void SetCrossSectionTable(G4PhysicsTable*, G4bool isLocal);
@@ -387,11 +386,11 @@ protected:
private:
// hide assignment operator
G4VEmModel & operator=(const G4VEmModel &right);
G4VEmModel(const G4VEmModel&);
G4VEmModel & operator=(const G4VEmModel &right) = delete;
G4VEmModel(const G4VEmModel&) = delete;
// ======== Parameters of the class fixed at construction =========
G4VEmFluctuationModel* flucModel;
G4VEmAngularDistribution* anglModel;
const G4String name;
@@ -415,6 +414,7 @@ private:
G4bool isLocked;
G4int nSelectors;
std::vector<G4EmElementSelector*>* elmSelectors;
G4LossTableManager* fEmManager;
protected:
@@ -426,11 +426,10 @@ protected:
size_t idxTable;
const static G4double inveplus;
// ======== Cashed values - may be state dependent ================
// ======== Cached values - may be state dependent ================
private:
G4LossTableManager* fManager;
const G4MaterialCutsCouple* fCurrentCouple;
const G4Element* fCurrentElement;
const G4Isotope* fCurrentIsotope;
@@ -459,7 +458,7 @@ inline const G4MaterialCutsCouple* G4VEmModel::CurrentCouple() const
inline void G4VEmModel::SetCurrentElement(const G4Element* elm)
{
fCurrentElement = elm;
fCurrentIsotope = 0;
fCurrentIsotope = nullptr;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -518,10 +517,8 @@ G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* part,
G4double emin,
G4double emax)
{
G4double mfp = DBL_MAX;
G4double cross = CrossSectionPerVolume(material,part,ekin,emin,emax);
if (cross > DBL_MIN) { mfp = 1./cross; }
return mfp;
return cross > 0.0 ? 1./cross : DBL_MAX;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -555,7 +552,7 @@ G4VEmModel::SelectRandomAtom(const G4MaterialCutsCouple* couple,
fCurrentElement = SelectRandomAtom(couple->GetMaterial(),part,kinEnergy,
cutEnergy,maxEnergy);
}
fCurrentIsotope = 0;
fCurrentIsotope = nullptr;
return fCurrentElement;
}
@@ -567,14 +564,16 @@ inline G4int G4VEmModel::SelectRandomAtomNumber(const G4Material* mat)
// number electrons multiplied by number of atoms
size_t nn = mat->GetNumberOfElements();
const G4ElementVector* elmv = mat->GetElementVector();
G4int Z = G4lrint((*elmv)[0]->GetZ());
G4int Z = (*elmv)[0]->GetZasInt();
if(1 < nn) {
const G4double* at = mat->GetVecNbOfAtomsPerVolume();
G4double tot = mat->GetTotNbOfAtomsPerVolume()*G4UniformRand();
for( size_t i=0; i<nn; ++i) {
Z = G4lrint((*elmv)[0]->GetZ());
tot -= Z*at[i];
if(tot <= 0.0) { break; }
tot -= at[i];
if(tot <= 0.0) {
Z = (*elmv)[i]->GetZasInt();
break;
}
}
}
return Z;
@@ -587,7 +586,7 @@ inline G4int G4VEmModel::SelectIsotopeNumber(const G4Element* elm)
SetCurrentElement(elm);
G4int N = G4lrint(elm->GetN());
G4int ni = elm->GetNumberOfIsotopes();
fCurrentIsotope = 0;
fCurrentIsotope = nullptr;
if(ni > 0) {
G4int idx = 0;
if(ni > 1) {
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmProcess.hh 93264 2015-10-14 09:30:04Z gcosmo $
// $Id: G4VEmProcess.hh 95657 2016-02-17 13:03:36Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -103,7 +103,7 @@ public:
// Virtual methods to be implemented in concrete processes
//------------------------------------------------------------------------
virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0;
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override = 0;
virtual void PrintInfo() = 0;
@@ -127,28 +127,29 @@ protected:
public:
// Initialise for build of tables
virtual void PreparePhysicsTable(const G4ParticleDefinition&);
virtual void PreparePhysicsTable(const G4ParticleDefinition&) override;
// Build physics table during initialisation
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
virtual void BuildPhysicsTable(const G4ParticleDefinition&) override;
// Called before tracking of each new G4Track
virtual void StartTracking(G4Track*);
virtual void StartTracking(G4Track*) override;
// implementation of virtual method, specific for G4VEmProcess
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
G4ForceCondition* condition) override;
// implementation of virtual method, specific for G4VEmProcess
virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
virtual G4VParticleChange* PostStepDoIt(const G4Track&,
const G4Step&) override;
// Store PhysicsTable in a file.
// Return false in case of failure at I/O
virtual G4bool StorePhysicsTable(const G4ParticleDefinition*,
const G4String& directory,
G4bool ascii = false);
G4bool ascii = false) override;
// Retrieve Physics from a file.
// (return true if the Physics Table can be build by using file)
@@ -157,7 +158,7 @@ public:
// should be placed under the directory specifed by the argument.
virtual G4bool RetrievePhysicsTable(const G4ParticleDefinition*,
const G4String& directory,
G4bool ascii);
G4bool ascii) override;
//------------------------------------------------------------------------
// Specific methods for Discrete EM post step simulation
@@ -220,7 +221,7 @@ public:
// Add model for region, smaller value of order defines which
// model will be selected for a given energy interval
void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0);
void AddEmModel(G4int, G4VEmModel*, const G4Region* region = nullptr);
// return the assigned model
G4VEmModel* EmModel(G4int index = 1) const;
@@ -232,14 +233,17 @@ public:
void UpdateEmModel(const G4String&, G4double, G4double);
// Access to models
G4int GetNumberOfModels() const;
G4int GetNumberOfRegionModels(size_t couple_index) const;
G4VEmModel* GetRegionModel(G4int idx, size_t couple_index) const;
G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false) const;
// access atom on which interaction happens
const G4Element* GetCurrentElement() const;
// access to active model
// Access to active model
inline const G4VEmModel* GetCurrentModel() const;
// Access to the current G4Element
const G4Element* GetCurrentElement() const;
// Biasing parameters
void SetCrossSectionBiasingFactor(G4double f, G4bool flag = true);
inline G4double CrossSectionBiasingFactor() const;
@@ -264,7 +268,7 @@ protected:
virtual G4double GetMeanFreePath(const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
G4ForceCondition* condition) override;
G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*);
@@ -326,9 +330,9 @@ private:
inline G4double ComputeCurrentLambda(G4double kinEnergy);
// copy constructor and hide assignment operator
G4VEmProcess(G4VEmProcess &);
G4VEmProcess & operator=(const G4VEmProcess &right);
// hide copy constructor and assignment operator
G4VEmProcess(G4VEmProcess &) = delete;
G4VEmProcess & operator=(const G4VEmProcess &right) = delete;
// ======== Parameters of the class fixed at construction =========
@@ -396,7 +400,7 @@ private:
const G4ParticleDefinition* particle;
const G4ParticleDefinition* currentParticle;
// cash
// cache
const G4Material* baseMaterial;
const G4Material* currentMaterial;
const G4MaterialCutsCouple* currentCouple;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEnergyLossProcess.hh 93264 2015-10-14 09:30:04Z gcosmo $
// $Id: G4VEnergyLossProcess.hh 96139 2016-03-17 14:10:31Z gcosmo $
// GEANT4 tag $Name:
//
// -------------------------------------------------------------------
@@ -139,7 +139,7 @@ private:
//------------------------------------------------------------------------
public:
virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0;
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override = 0;
virtual void PrintInfo() = 0;
@@ -165,10 +165,10 @@ protected:
public:
// prepare all tables
virtual void PreparePhysicsTable(const G4ParticleDefinition&);
virtual void PreparePhysicsTable(const G4ParticleDefinition&) override;
// build all tables
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
virtual void BuildPhysicsTable(const G4ParticleDefinition&) override;
// build a table
G4PhysicsTable* BuildDEDXTable(G4EmTableType tType = fRestricted);
@@ -180,7 +180,7 @@ public:
void PrintInfoDefinition(const G4ParticleDefinition& part);
// Called before tracking of each new G4Track
virtual void StartTracking(G4Track*);
virtual void StartTracking(G4Track*) override;
// Step limit from AlongStep
virtual G4double AlongStepGetPhysicalInteractionLength(
@@ -188,16 +188,17 @@ public:
G4double previousStepSize,
G4double currentMinimumStep,
G4double& currentSafety,
G4GPILSelection* selection);
G4GPILSelection* selection) override;
// Step limit from cross section
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
G4ForceCondition* condition) override;
// AlongStep computations
virtual G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
virtual G4VParticleChange* AlongStepDoIt(const G4Track&,
const G4Step&) override;
// Sampling of secondaries in vicinity of geometrical boundary
// Return sum of secodaries energy
@@ -205,20 +206,21 @@ public:
G4VEmModel* model, G4int matIdx);
// PostStep sampling of secondaries
virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
virtual G4VParticleChange* PostStepDoIt(const G4Track&,
const G4Step&) override;
// Store all PhysicsTable in files.
// Return false in case of any fatal failure at I/O
virtual G4bool StorePhysicsTable(const G4ParticleDefinition*,
const G4String& directory,
G4bool ascii = false);
G4bool ascii = false) override;
// Retrieve all Physics from a files.
// Return true if all the Physics Table are built.
// Return false if any fatal failure.
virtual G4bool RetrievePhysicsTable(const G4ParticleDefinition*,
const G4String& directory,
G4bool ascii);
G4bool ascii) override;
private:
// store a table
@@ -264,13 +266,13 @@ protected:
// implementation of the pure virtual method
virtual G4double GetMeanFreePath(const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
G4ForceCondition* condition) override;
// implementation of the pure virtual method
virtual G4double GetContinuousStepLimit(const G4Track& track,
G4double previousStepSize,
G4double currentMinimumStep,
G4double& currentSafety);
G4double& currentSafety) override;
//------------------------------------------------------------------------
// Run time method which may be also used by derived processes
@@ -299,7 +301,7 @@ public:
// energy interval
void AddEmModel(G4int, G4VEmModel*,
G4VEmFluctuationModel* fluc = 0,
const G4Region* region = 0);
const G4Region* region = nullptr);
// Define new energy range for the model identified by the name
void UpdateEmModel(const G4String&, G4double, G4double);
@@ -340,13 +342,13 @@ public:
//------------------------------------------------------------------------
// Add subcutoff option for the region
void ActivateSubCutoff(G4bool val, const G4Region* region = 0);
void ActivateSubCutoff(G4bool val, const G4Region* region = nullptr);
// Activate biasing
void SetCrossSectionBiasingFactor(G4double f, G4bool flag = true);
void ActivateForcedInteraction(G4double length = 0.0,
const G4String& region = "",
void ActivateForcedInteraction(G4double length,
const G4String& region,
G4bool flag = true);
void ActivateSecondaryBiasing(const G4String& region, G4double factor,
@@ -367,7 +369,7 @@ public:
// Redefine parameteters for stepping control
void SetLinearLossLimit(G4double val);
void SetStepFunction(G4double v1, G4double v2);
void SetStepFunction(G4double v1, G4double v2, G4bool lock=true);
void SetLowestEnergyLimit(G4double);
inline G4int NumberOfSubCutoffRegions() const;
@@ -464,8 +466,8 @@ private:
inline void ComputeLambdaForScaledEnergy(G4double scaledKinEnergy);
// hide assignment operator
G4VEnergyLossProcess(G4VEnergyLossProcess &);
G4VEnergyLossProcess & operator=(const G4VEnergyLossProcess &right);
G4VEnergyLossProcess(G4VEnergyLossProcess &) = delete;
G4VEnergyLossProcess & operator=(const G4VEnergyLossProcess &right) = delete;
// ======== Parameters of the class fixed at construction =========
@@ -557,6 +559,8 @@ private:
G4bool biasFlag;
G4bool weightFlag;
G4bool isMaster;
G4bool actIntegral;
G4bool actStepFunc;
G4bool actLinLossLimit;
G4bool actLossFluc;
G4bool actBinning;
@@ -583,8 +587,6 @@ private:
size_t basedCoupleIndex;
size_t lastIdx;
G4int nWarnings;
G4double massRatio;
G4double fFactor;
G4double reduceFactor;
@@ -940,6 +942,7 @@ G4VEnergyLossProcess::SecondaryParticle() const
inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val)
{
lossFluctuationFlag = val;
actLossFluc = true;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -947,6 +950,7 @@ inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val)
inline void G4VEnergyLossProcess::SetIntegral(G4bool val)
{
integral = val;
actIntegral = true;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VMscModel.hh 93264 2015-10-14 09:30:04Z gcosmo $
// $Id: G4VMscModel.hh 96626 2016-04-27 08:36:27Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -58,7 +58,6 @@
#include "G4Track.hh"
#include "G4SafetyHelper.hh"
#include "G4VEnergyLossProcess.hh"
#include "G4LossTableManager.hh"
#include "G4PhysicsTable.hh"
#include "G4ThreeVector.hh"
#include <vector>
@@ -70,7 +69,7 @@ class G4VMscModel : public G4VEmModel
public:
G4VMscModel(const G4String& nam);
explicit G4VMscModel(const G4String& nam);
virtual ~G4VMscModel();
@@ -89,7 +88,7 @@ public:
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double tmax);
G4double tmax) override;
//================================================================
// Set parameters of multiple scattering models
@@ -125,7 +124,7 @@ protected:
// initialisation of the ParticleChange for the model
// initialisation of interface with geometry and ionisation
G4ParticleChangeForMSC*
GetParticleChangeForMSC(const G4ParticleDefinition* p = 0);
GetParticleChangeForMSC(const G4ParticleDefinition* p = nullptr);
// convert true length to geometry length
inline G4double ConvertTrueToGeom(G4double& tLength, G4double& gLength);
@@ -160,13 +159,12 @@ public:
private:
// hide assignment operator
G4VMscModel & operator=(const G4VMscModel &right);
G4VMscModel(const G4VMscModel&);
G4VMscModel & operator=(const G4VMscModel &right) = delete;
G4VMscModel(const G4VMscModel&) = delete;
G4SafetyHelper* safetyHelper;
G4VEnergyLossProcess* ionisation;
const G4ParticleDefinition* currentPart;
G4LossTableManager* man;
G4double dedx;
G4double localtkin;
@@ -258,16 +256,6 @@ inline G4double G4VMscModel::ComputeGeomLimit(const G4Track& track,
G4double& presafety,
G4double limit)
{
/*
G4double res = geomMax;
if(track.GetVolume() != safetyHelper->GetWorldVolume()) {
G4double res = safetyHelper->CheckNextStep(
track.GetStep()->GetPreStepPoint()->GetPosition(),
track.GetMomentumDirection(),
limit, presafety);
}
return res;
*/
return safetyHelper->CheckNextStep(
track.GetStep()->GetPreStepPoint()->GetPosition(),
track.GetMomentumDirection(),
@@ -361,8 +349,7 @@ G4VMscModel::GetTransportMeanFreePath(const G4ParticleDefinition* part,
x = CrossSectionPerVolume(CurrentCouple()->GetMaterial(), part, ekin,
0.0, DBL_MAX);
}
if(0.0 >= x) { x = DBL_MAX; }
else { x = 1.0/x; }
x = (x > 0.0) ? 1.0/x : DBL_MAX;
return x;
}
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VMultipleScattering.hh 93264 2015-10-14 09:30:04Z gcosmo $
// $Id: G4VMultipleScattering.hh 97432 2016-06-03 07:23:39Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -102,7 +102,7 @@ public:
// Virtual methods to be implemented for the concrete model
//------------------------------------------------------------------------
virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0;
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override = 0;
virtual void PrintInfo() = 0;
@@ -119,10 +119,10 @@ public:
//------------------------------------------------------------------------
// Initialise for build of tables
void PreparePhysicsTable(const G4ParticleDefinition&);
void PreparePhysicsTable(const G4ParticleDefinition&) override;
// Build physics table during initialisation
void BuildPhysicsTable(const G4ParticleDefinition&);
void BuildPhysicsTable(const G4ParticleDefinition&) override;
// Print out of generic class parameters
void PrintInfoDefinition();
@@ -131,7 +131,7 @@ public:
// Return false in case of failure at I/O
G4bool StorePhysicsTable(const G4ParticleDefinition*,
const G4String& directory,
G4bool ascii = false);
G4bool ascii = false) override;
// Retrieve Physics from a file.
// (return true if the Physics Table can be build by using file)
@@ -140,33 +140,33 @@ public:
// should be placed under the directory specifed by the argument.
G4bool RetrievePhysicsTable(const G4ParticleDefinition*,
const G4String& directory,
G4bool ascii);
G4bool ascii) override;
// This is called in the beginning of tracking for a new track
void StartTracking(G4Track*);
void StartTracking(G4Track*) override;
// The function overloads the corresponding function of the base
// class.It limits the step near to boundaries only
// and invokes the method GetMscContinuousStepLimit at every step.
G4double AlongStepGetPhysicalInteractionLength(
const G4Track&,
G4double previousStepSize,
G4double currentMinimalStep,
G4double& currentSafety,
G4GPILSelection* selection);
const G4Track&,
G4double previousStepSize,
G4double currentMinimalStep,
G4double& currentSafety,
G4GPILSelection* selection) override;
// The function overloads the corresponding function of the base
// class.
G4double PostStepGetPhysicalInteractionLength(
const G4Track&,
G4double previousStepSize,
G4ForceCondition* condition);
const G4Track&,
G4double previousStepSize,
G4ForceCondition* condition) override;
// Along step actions
G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&) override;
// Post step actions
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&) override;
// This method does not used for tracking, it is intended only for tests
G4double ContinuousStepLimit(const G4Track& track,
@@ -185,7 +185,7 @@ public:
// Add model for region, smaller value of order defines which
// model will be selected for a given energy interval
void AddEmModel(G4int order, G4VEmModel*, const G4Region* region = 0);
void AddEmModel(G4int order, G4VEmModel*, const G4Region* region = nullptr);
// Assign a model to a process
void SetEmModel(G4VMscModel*, G4int index = 1);
@@ -234,19 +234,23 @@ protected:
// This method is not used for tracking, it returns mean free path value
G4double GetMeanFreePath(const G4Track& track,
G4double,
G4ForceCondition* condition);
G4ForceCondition* condition) override;
// This method is not used for tracking, it returns step limit
G4double GetContinuousStepLimit(const G4Track& track,
G4double previousStepSize,
G4double currentMinimalStep,
G4double& currentSafety);
G4double& currentSafety) override ;
// return number of already added models
inline size_t NumberOfModels() const;
private:
// hide assignment operator
G4VMultipleScattering(G4VMultipleScattering &);
G4VMultipleScattering & operator=(const G4VMultipleScattering &right);
G4VMultipleScattering(G4VMultipleScattering &) = delete;
G4VMultipleScattering &
operator=(const G4VMultipleScattering &right) = delete;
// ======== Parameters of the class fixed at construction =========
@@ -285,6 +289,8 @@ private:
G4VMscModel* currentModel;
G4VEnergyLossProcess* fIonisation;
G4double geomMin;
G4double minDisplacement2;
G4double physStepLimit;
G4double tPathLength;
G4double gPathLength;
@@ -403,4 +409,11 @@ inline const G4ParticleDefinition* G4VMultipleScattering::FirstParticle() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline size_t G4VMultipleScattering::NumberOfModels() const
{
return modelManager->NumberOfModels();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -59,7 +59,7 @@ class G4VSubCutProducer
{
public:
G4VSubCutProducer(const G4String& name) : fName(name) {};
explicit G4VSubCutProducer(const G4String& name) : fName(name) {};
virtual ~G4VSubCutProducer() {};
@@ -76,8 +76,8 @@ public:
private:
// hide assignment operator
G4VSubCutProducer & operator=(const G4VSubCutProducer &right);
G4VSubCutProducer(const G4VSubCutProducer&);
G4VSubCutProducer & operator=(const G4VSubCutProducer &right) = delete;
G4VSubCutProducer(const G4VSubCutProducer&) = delete;
G4String fName;
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4ionEffectiveCharge.hh 79394 2014-02-27 08:51:38Z gcosmo $
// $Id: G4ionEffectiveCharge.hh 96626 2016-04-27 08:36:27Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -64,7 +64,7 @@ class G4ionEffectiveCharge
public:
G4ionEffectiveCharge();
explicit G4ionEffectiveCharge();
virtual ~G4ionEffectiveCharge();
@@ -80,8 +80,8 @@ public:
private:
// hide assignment operator
G4ionEffectiveCharge & operator=(const G4ionEffectiveCharge &right);
G4ionEffectiveCharge(const G4ionEffectiveCharge&);
G4ionEffectiveCharge & operator=(const G4ionEffectiveCharge &right) = delete;
G4ionEffectiveCharge(const G4ionEffectiveCharge&) = delete;
static const G4double inveplus;
G4Pow* g4pow;