Import Geant4 10.3.0.beta source tree
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user