Import Geant4 10.5.0.beta source tree
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4DNAModelSubType.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
//---------------------------------------------------------------
|
||||
//
|
||||
// G4DNAModelSubType.hh
|
||||
//
|
||||
// Class Description:
|
||||
// This is an enumerator to define sub-type of DNA models
|
||||
//
|
||||
// Creation date: 18.05.2018
|
||||
// Modifications:
|
||||
//
|
||||
//---------------------------------------------------------------
|
||||
|
||||
#ifndef G4DNAModelSubType_h
|
||||
#define G4DNAModelSubType_h 1
|
||||
|
||||
enum G4DNAModelSubType
|
||||
{
|
||||
fDNAUnknownModel = 0,
|
||||
fRitchie1994eSolvation = 1,
|
||||
fTerrisol1990eSolvation = 2,
|
||||
fMeesungnoen2002eSolvation = 3
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmCalculator.hh 103954 2017-05-04 11:29:22Z gcosmo $
|
||||
// $Id: G4EmCalculator.hh 108306 2018-02-02 13:10:06Z gcosmo $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
@@ -44,6 +44,7 @@
|
||||
// 22.03.2006 Add ComputeElectronicDEDX and ComputeTotalDEDX (V.Ivanchenko)
|
||||
// 29.09.2006 Add member loweModel (V.Ivanchenko)
|
||||
// 15.03.2007 Add ComputeEnergyCutFromRangeCut methods (V.Ivanchenko)
|
||||
// 02.02.2018 Add parameter to FindLambdaTable to store process type (M. Novak)
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
@@ -278,8 +279,8 @@ private:
|
||||
G4bool UpdateCouple(const G4Material*, G4double cut);
|
||||
|
||||
void FindLambdaTable(const G4ParticleDefinition*,
|
||||
const G4String& processName,
|
||||
G4double kinEnergy);
|
||||
const G4String& processName,
|
||||
G4double kinEnergy, G4int& proctype);
|
||||
|
||||
G4bool FindEmModel(const G4ParticleDefinition*,
|
||||
const G4String& processName,
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmCorrections.hh 103954 2017-05-04 11:29:22Z gcosmo $
|
||||
// $Id: G4EmCorrections.hh 108386 2018-02-09 15:38:32Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -191,7 +191,6 @@ private:
|
||||
|
||||
G4Pow* g4calc;
|
||||
|
||||
static const G4double inveplus;
|
||||
static const G4double ZD[11];
|
||||
static const G4double UK[20];
|
||||
static const G4double VK[20];
|
||||
@@ -206,7 +205,7 @@ private:
|
||||
static G4LPhysicsFreeVector* ThetaK;
|
||||
static G4LPhysicsFreeVector* ThetaL;
|
||||
|
||||
G4double alpha2;
|
||||
G4double alpha2;
|
||||
|
||||
std::vector<const G4Material*> currmat;
|
||||
std::map< G4int, std::vector<G4double> > thcorr;
|
||||
@@ -323,35 +322,6 @@ G4EmCorrections::EffectiveChargeSquareRatio(const G4ParticleDefinition* p,
|
||||
return effCharge.EffectiveChargeSquareRatio(p,mat,kineticEnergy);
|
||||
}
|
||||
|
||||
inline void G4EmCorrections::SetupKinematics(const G4ParticleDefinition* p,
|
||||
const G4Material* mat,
|
||||
G4double kineticEnergy)
|
||||
{
|
||||
if(kineticEnergy != kinEnergy || p != particle) {
|
||||
particle = p;
|
||||
kinEnergy = kineticEnergy;
|
||||
mass = p->GetPDGMass();
|
||||
tau = kineticEnergy / mass;
|
||||
gamma = 1.0 + tau;
|
||||
bg2 = tau * (tau+2.0);
|
||||
beta2 = bg2/(gamma*gamma);
|
||||
beta = std::sqrt(beta2);
|
||||
ba2 = beta2/alpha2;
|
||||
G4double ratio = CLHEP::electron_mass_c2/mass;
|
||||
tmax = 2.0*CLHEP::electron_mass_c2*bg2
|
||||
/(1. + 2.0*gamma*ratio + ratio*ratio);
|
||||
charge = p->GetPDGCharge()*inveplus;
|
||||
if(charge > 1.5) { charge = effCharge.EffectiveCharge(p,mat,kinEnergy); }
|
||||
q2 = charge*charge;
|
||||
}
|
||||
if(mat != material) {
|
||||
material = mat;
|
||||
theElementVector = material->GetElementVector();
|
||||
atomDensity = material->GetAtomicNumDensityVector();
|
||||
numberOfElements = material->GetNumberOfElements();
|
||||
}
|
||||
}
|
||||
|
||||
inline void G4EmCorrections::SetVerbose(G4int verb)
|
||||
{
|
||||
verbose = verb;
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
//
|
||||
// $Id: G4EmParameters.hh 66885 2013-01-16 17:37:13Z gunter $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
@@ -60,6 +59,7 @@
|
||||
#include "G4ios.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
#include "G4NuclearFormfactorType.hh"
|
||||
#include "G4DNAModelSubType.hh"
|
||||
#include "G4EmSaturation.hh"
|
||||
#include "G4Threading.hh"
|
||||
#include <vector>
|
||||
@@ -161,6 +161,10 @@ public:
|
||||
void SetEmSaturation(G4EmSaturation*);
|
||||
G4EmSaturation* GetEmSaturation();
|
||||
|
||||
// 5d
|
||||
void SetOnIsolated(G4bool val);
|
||||
bool OnIsolated() const;
|
||||
|
||||
// double parameters with values
|
||||
void SetMinSubRange(G4double val);
|
||||
G4double MinSubRange() const;
|
||||
@@ -198,6 +202,9 @@ public:
|
||||
void SetMscThetaLimit(G4double val);
|
||||
G4double MscThetaLimit() const;
|
||||
|
||||
void SetMscEnergyLimit(G4double val);
|
||||
G4double MscEnergyLimit() const;
|
||||
|
||||
void SetMscRangeFactor(G4double val);
|
||||
G4double MscRangeFactor() const;
|
||||
|
||||
@@ -239,6 +246,13 @@ public:
|
||||
void SetNuclearFormfactorType(G4NuclearFormfactorType val);
|
||||
G4NuclearFormfactorType NuclearFormfactorType() const;
|
||||
|
||||
void SetDNAeSolvationSubType(G4DNAModelSubType val);
|
||||
G4DNAModelSubType DNAeSolvationSubType() const;
|
||||
|
||||
//5d
|
||||
void SetConversionType(G4int val);
|
||||
G4int GetConversionType() const;
|
||||
|
||||
// string parameters
|
||||
void SetPIXECrossSectionModel(const G4String&);
|
||||
const G4String& PIXECrossSectionModel();
|
||||
@@ -340,6 +354,7 @@ private:
|
||||
G4bool dnaStationary;
|
||||
G4bool dnaMsc;
|
||||
G4bool gammaShark;
|
||||
G4bool onIsolated; // 5d model conversion on free ions
|
||||
|
||||
G4double minSubRange;
|
||||
G4double minKinEnergy;
|
||||
@@ -353,6 +368,7 @@ private:
|
||||
G4double lambdaFactor;
|
||||
G4double factorForAngleLimit;
|
||||
G4double thetaLimit;
|
||||
G4double energyLimit;
|
||||
G4double rangeFactor;
|
||||
G4double rangeFactorMuHad;
|
||||
G4double geomFactor;
|
||||
@@ -367,10 +383,12 @@ private:
|
||||
G4int nbinsPerDecade;
|
||||
G4int verbose;
|
||||
G4int workerVerbose;
|
||||
G4int tripletConv; // 5d model triplet generation type
|
||||
|
||||
G4MscStepLimitType mscStepLimit;
|
||||
G4MscStepLimitType mscStepLimitMuHad;
|
||||
G4NuclearFormfactorType nucFormfactor;
|
||||
G4DNAModelSubType dnaElectronSolvation;
|
||||
|
||||
G4String namePIXE;
|
||||
G4String nameElectronPIXE;
|
||||
|
||||
@@ -78,9 +78,11 @@ private:
|
||||
|
||||
G4EmParameters* theParameters;
|
||||
|
||||
G4UIdirectory* gconvDirectory;
|
||||
G4UIdirectory* eLossDirectory;
|
||||
G4UIdirectory* mscDirectory;
|
||||
G4UIdirectory* emDirectory;
|
||||
G4UIdirectory* dnaDirectory;
|
||||
|
||||
G4UIcmdWithABool* flucCmd;
|
||||
G4UIcmdWithABool* rangeCmd;
|
||||
@@ -106,6 +108,7 @@ private:
|
||||
G4UIcmdWithABool* dnasCmd;
|
||||
G4UIcmdWithABool* dnamscCmd;
|
||||
G4UIcmdWithABool* sharkCmd;
|
||||
G4UIcmdWithABool* onIsolatedCmd;
|
||||
|
||||
G4UIcmdWithADouble* minSubSecCmd;
|
||||
G4UIcmdWithADoubleAndUnit* minEnCmd;
|
||||
@@ -119,6 +122,7 @@ private:
|
||||
G4UIcmdWithADouble* labCmd;
|
||||
G4UIcmdWithADouble* mscfCmd;
|
||||
G4UIcmdWithADoubleAndUnit* angCmd;
|
||||
G4UIcmdWithADoubleAndUnit* msceCmd;
|
||||
G4UIcmdWithADouble* frCmd;
|
||||
G4UIcmdWithADouble* fr1Cmd;
|
||||
G4UIcmdWithADouble* fgCmd;
|
||||
@@ -131,12 +135,14 @@ private:
|
||||
G4UIcmdWithAnInteger* verCmd;
|
||||
G4UIcmdWithAnInteger* ver1Cmd;
|
||||
G4UIcmdWithAnInteger* ver2Cmd;
|
||||
G4UIcmdWithAnInteger* tripletCmd;
|
||||
|
||||
G4UIcmdWithAString* mscCmd;
|
||||
G4UIcmdWithAString* msc1Cmd;
|
||||
|
||||
G4UIcmdWithAString* pixeXsCmd;
|
||||
G4UIcmdWithAString* pixeeXsCmd;
|
||||
G4UIcmdWithAString* dnaSolCmd;
|
||||
|
||||
G4UIcommand* paiCmd;
|
||||
G4UIcmdWithAString* meCmd;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LossTableManager.hh 106714 2017-10-20 09:38:06Z gcosmo $
|
||||
// $Id: G4LossTableManager.hh 110572 2018-05-30 13:08:12Z gcosmo $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
@@ -217,7 +217,6 @@ public:
|
||||
|
||||
inline G4bool IsMaster() const;
|
||||
|
||||
inline
|
||||
G4VEnergyLossProcess* GetEnergyLossProcess(const G4ParticleDefinition*);
|
||||
|
||||
const std::vector<G4VEnergyLossProcess*>& GetEnergyLossProcessVector();
|
||||
@@ -317,28 +316,6 @@ private:
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
inline G4VEnergyLossProcess*
|
||||
G4LossTableManager::GetEnergyLossProcess(const G4ParticleDefinition *aParticle)
|
||||
{
|
||||
//G4cout << "G4LossTableManager::GetEnergyLossProcess: "
|
||||
//<< aParticle << " " << currentParticle << " " << currentLoss << G4endl;
|
||||
if(aParticle != currentParticle) {
|
||||
currentParticle = aParticle;
|
||||
std::map<PD,G4VEnergyLossProcess*,std::less<PD> >::const_iterator pos;
|
||||
if ((pos = loss_map.find(aParticle)) != loss_map.end()) {
|
||||
currentLoss = (*pos).second;
|
||||
} else {
|
||||
currentLoss = nullptr;
|
||||
if ((pos = loss_map.find(theGenericIon)) != loss_map.end()) {
|
||||
currentLoss = (*pos).second;
|
||||
}
|
||||
}
|
||||
}
|
||||
return currentLoss;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
inline
|
||||
G4double G4LossTableManager::GetDEDX(const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VAtomDeexcitation.hh 98985 2016-08-29 07:01:17Z gcosmo $
|
||||
// $Id: G4VAtomDeexcitation.hh 108386 2018-02-09 15:38:32Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "G4AtomicShellEnumerator.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4Threading.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4ParticleDefinition;
|
||||
@@ -124,17 +125,15 @@ public:
|
||||
G4AtomicShellEnumerator shell) = 0;
|
||||
|
||||
// generation of deexcitation for given atom and shell vacancy
|
||||
inline void GenerateParticles(std::vector<G4DynamicParticle*>* secVect,
|
||||
const G4AtomicShell*,
|
||||
G4int Z,
|
||||
G4int coupleIndex);
|
||||
// and material cut couple, which defines cut values
|
||||
void GenerateParticles(std::vector<G4DynamicParticle*>* secVect,
|
||||
const G4AtomicShell*,
|
||||
G4int Z, G4int coupleIndex);
|
||||
|
||||
// generation of deexcitation for given atom and shell vacancy
|
||||
virtual void GenerateParticles(std::vector<G4DynamicParticle*>* secVect,
|
||||
const G4AtomicShell*,
|
||||
G4int Z,
|
||||
G4double gammaCut,
|
||||
G4double eCut) = 0;
|
||||
G4int Z, G4double gammaCut, G4double eCut) = 0;
|
||||
|
||||
// access or compute PIXE cross section
|
||||
virtual G4double
|
||||
@@ -195,6 +194,10 @@ private:
|
||||
|
||||
static G4int pixeIDg;
|
||||
static G4int pixeIDe;
|
||||
|
||||
#ifdef G4MULTITHREADED
|
||||
static G4Mutex atomDeexcitationMutex;
|
||||
#endif
|
||||
};
|
||||
|
||||
inline void G4VAtomDeexcitation::SetFluo(G4bool val)
|
||||
@@ -270,30 +273,5 @@ G4VAtomDeexcitation::CheckAugerActiveRegion(G4int coupleIndex)
|
||||
return (activeAugerMedia[coupleIndex]);
|
||||
}
|
||||
|
||||
inline void
|
||||
G4VAtomDeexcitation::GenerateParticles(std::vector<G4DynamicParticle*>* v,
|
||||
const G4AtomicShell* as,
|
||||
G4int Z,
|
||||
G4int idx)
|
||||
{
|
||||
G4double gCut = DBL_MAX;
|
||||
if(ignoreCuts) {
|
||||
gCut = 0.0;
|
||||
} else if (theCoupleTable) {
|
||||
gCut = (*(theCoupleTable->GetEnergyCutsVector(0)))[idx];
|
||||
}
|
||||
if(gCut < as->BindingEnergy()) {
|
||||
G4double eCut = DBL_MAX;
|
||||
if(CheckAugerActiveRegion(idx)) {
|
||||
if(ignoreCuts) {
|
||||
eCut = 0.0;
|
||||
} else if (theCoupleTable) {
|
||||
eCut = (*(theCoupleTable->GetEnergyCutsVector(1)))[idx];
|
||||
}
|
||||
}
|
||||
GenerateParticles(v, as, Z, gCut, eCut);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmAngularDistribution.hh 95657 2016-02-17 13:03:36Z gcosmo $
|
||||
// $Id: G4VEmAngularDistribution.hh 110416 2018-05-23 06:45:42Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -83,6 +83,14 @@ public:
|
||||
G4int shellID,
|
||||
const G4Material*);
|
||||
|
||||
virtual void SamplePairDirections(const G4DynamicParticle* dp,
|
||||
G4double elecKinEnergy,
|
||||
G4double posiKinEnergy,
|
||||
G4ThreeVector& dirElectron,
|
||||
G4ThreeVector& dirPositron,
|
||||
G4int Z = 0,
|
||||
const G4Material* mat = nullptr);
|
||||
|
||||
inline const G4String& GetName() const;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmModel.hh 106714 2017-10-20 09:38:06Z gcosmo $
|
||||
// $Id: G4VEmModel.hh 108386 2018-02-09 15:38:32Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -282,9 +282,6 @@ public:
|
||||
G4double cutEnergy = 0.0,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
// select isotope in order to have precise mass of the nucleus
|
||||
inline G4int SelectIsotopeNumber(const G4Element*);
|
||||
|
||||
// atom can be selected effitiantly if element selectors are initialised
|
||||
inline const G4Element* SelectRandomAtom(const G4MaterialCutsCouple*,
|
||||
const G4ParticleDefinition*,
|
||||
@@ -300,7 +297,10 @@ public:
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
// to select atom if cross section is proportional number of electrons
|
||||
inline G4int SelectRandomAtomNumber(const G4Material*);
|
||||
G4int SelectRandomAtomNumber(const G4Material*);
|
||||
|
||||
// select isotope in order to have precise mass of the nucleus
|
||||
G4int SelectIsotopeNumber(const G4Element*);
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Get/Set methods
|
||||
@@ -434,7 +434,7 @@ protected:
|
||||
const std::vector<G4int>* theDensityIdx;
|
||||
size_t idxTable;
|
||||
G4bool lossFlucFlag;
|
||||
const static G4double inveplus;
|
||||
G4double inveplus;
|
||||
|
||||
// ======== Cached values - may be state dependent ================
|
||||
|
||||
@@ -556,65 +556,13 @@ G4VEmModel::SelectRandomAtom(const G4MaterialCutsCouple* couple,
|
||||
G4double maxEnergy)
|
||||
{
|
||||
fCurrentCouple = couple;
|
||||
if(nSelectors > 0) {
|
||||
fCurrentElement =
|
||||
((*elmSelectors)[couple->GetIndex()])->SelectRandomAtom(kinEnergy);
|
||||
} else {
|
||||
fCurrentElement = SelectRandomAtom(couple->GetMaterial(),part,kinEnergy,
|
||||
cutEnergy,maxEnergy);
|
||||
}
|
||||
fCurrentElement = (nSelectors > 0) ?
|
||||
((*elmSelectors)[couple->GetIndex()])->SelectRandomAtom(kinEnergy) :
|
||||
SelectRandomAtom(couple->GetMaterial(),part,kinEnergy,cutEnergy,maxEnergy);
|
||||
fCurrentIsotope = nullptr;
|
||||
return fCurrentElement;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4int G4VEmModel::SelectRandomAtomNumber(const G4Material* mat)
|
||||
{
|
||||
// this algorith assumes that cross section is proportional to
|
||||
// number electrons multiplied by number of atoms
|
||||
size_t nn = mat->GetNumberOfElements();
|
||||
const G4ElementVector* elmv = mat->GetElementVector();
|
||||
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) {
|
||||
tot -= at[i];
|
||||
if(tot <= 0.0) {
|
||||
Z = (*elmv)[i]->GetZasInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return Z;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4int G4VEmModel::SelectIsotopeNumber(const G4Element* elm)
|
||||
{
|
||||
SetCurrentElement(elm);
|
||||
G4int N = G4lrint(elm->GetN());
|
||||
G4int ni = elm->GetNumberOfIsotopes();
|
||||
fCurrentIsotope = nullptr;
|
||||
if(ni > 0) {
|
||||
G4int idx = 0;
|
||||
if(ni > 1) {
|
||||
G4double* ab = elm->GetRelativeAbundanceVector();
|
||||
G4double x = G4UniformRand();
|
||||
for(; idx<ni; ++idx) {
|
||||
x -= ab[idx];
|
||||
if (x <= 0.0) { break; }
|
||||
}
|
||||
if(idx >= ni) { idx = ni - 1; }
|
||||
}
|
||||
fCurrentIsotope = elm->GetIsotope(idx);
|
||||
N = fCurrentIsotope->GetN();
|
||||
}
|
||||
return N;
|
||||
}
|
||||
|
||||
// ======== Get/Set inline methods used at initialisation ================
|
||||
|
||||
inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations()
|
||||
@@ -844,7 +792,7 @@ inline void
|
||||
G4VEmModel::SetElementSelectors(std::vector<G4EmElementSelector*>* p)
|
||||
{
|
||||
elmSelectors = p;
|
||||
if(elmSelectors) { nSelectors = elmSelectors->size(); }
|
||||
nSelectors = (elmSelectors) ? elmSelectors->size() : 0;
|
||||
localElmSelectors = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmProcess.hh 106983 2017-10-31 09:08:30Z gcosmo $
|
||||
// $Id: G4VEmProcess.hh 109178 2018-04-03 07:13:58Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -298,6 +298,10 @@ protected:
|
||||
|
||||
inline size_t CurrentMaterialCutsCoupleIndex() const;
|
||||
|
||||
inline const G4MaterialCutsCouple* MaterialCutsCouple() const;
|
||||
|
||||
inline G4bool ApplyCuts() const;
|
||||
|
||||
inline G4double GetGammaEnergyCut();
|
||||
|
||||
inline G4double GetElectronEnergyCut();
|
||||
@@ -344,9 +348,6 @@ private:
|
||||
G4LossTableManager* lManager;
|
||||
G4EmParameters* theParameters;
|
||||
G4EmModelManager* modelManager;
|
||||
G4EmBiasingManager* biasManager;
|
||||
const G4ParticleDefinition* theGamma;
|
||||
const G4ParticleDefinition* theElectron;
|
||||
const G4ParticleDefinition* thePositron;
|
||||
const G4ParticleDefinition* secondaryParticle;
|
||||
|
||||
@@ -396,12 +397,21 @@ private:
|
||||
|
||||
protected:
|
||||
|
||||
G4EmBiasingManager* biasManager;
|
||||
const G4ParticleDefinition* theGamma;
|
||||
const G4ParticleDefinition* theElectron;
|
||||
G4ParticleChangeForGamma fParticleChange;
|
||||
std::vector<G4DynamicParticle*> secParticles;
|
||||
const G4MaterialCutsCouple* currentCouple;
|
||||
|
||||
G4int mainSecondaries;
|
||||
G4int secID;
|
||||
G4int fluoID;
|
||||
G4int augerID;
|
||||
G4int biasID;
|
||||
|
||||
private:
|
||||
|
||||
std::vector<G4DynamicParticle*> secParticles;
|
||||
|
||||
G4VEmModel* currentModel;
|
||||
|
||||
const G4ParticleDefinition* particle;
|
||||
@@ -410,7 +420,6 @@ private:
|
||||
// cache
|
||||
const G4Material* baseMaterial;
|
||||
const G4Material* currentMaterial;
|
||||
const G4MaterialCutsCouple* currentCouple;
|
||||
size_t currentCoupleIndex;
|
||||
size_t basedCoupleIndex;
|
||||
|
||||
@@ -420,16 +429,17 @@ private:
|
||||
G4double fFactor;
|
||||
G4bool biasFlag;
|
||||
G4bool weightFlag;
|
||||
|
||||
G4int mainSecondaries;
|
||||
G4int secID;
|
||||
G4int fluoID;
|
||||
G4int augerID;
|
||||
G4int biasID;
|
||||
};
|
||||
|
||||
// ======== Run time inline methods ================
|
||||
|
||||
inline G4bool G4VEmProcess::ApplyCuts() const
|
||||
{
|
||||
return applyCuts;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline size_t G4VEmProcess::CurrentMaterialCutsCoupleIndex() const
|
||||
{
|
||||
return currentCoupleIndex;
|
||||
@@ -437,6 +447,13 @@ inline size_t G4VEmProcess::CurrentMaterialCutsCoupleIndex() const
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline const G4MaterialCutsCouple* G4VEmProcess::MaterialCutsCouple() const
|
||||
{
|
||||
return currentCouple;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4double G4VEmProcess::GetGammaEnergyCut()
|
||||
{
|
||||
return (*theCutsGamma)[currentCoupleIndex];
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VMscModel.hh 96626 2016-04-27 08:36:27Z gcosmo $
|
||||
// $Id: G4VMscModel.hh 110572 2018-05-30 13:08:12Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -349,8 +349,7 @@ G4VMscModel::GetTransportMeanFreePath(const G4ParticleDefinition* part,
|
||||
x = CrossSectionPerVolume(CurrentCouple()->GetMaterial(), part, ekin,
|
||||
0.0, DBL_MAX);
|
||||
}
|
||||
x = (x > 0.0) ? 1.0/x : DBL_MAX;
|
||||
return x;
|
||||
return (x > 0.0) ? 1.0/x : DBL_MAX;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ionEffectiveCharge.hh 100363 2016-10-19 09:24:47Z gcosmo $
|
||||
// $Id: G4ionEffectiveCharge.hh 108386 2018-02-09 15:38:32Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -83,7 +83,7 @@ private:
|
||||
G4ionEffectiveCharge & operator=(const G4ionEffectiveCharge &right) = delete;
|
||||
G4ionEffectiveCharge(const G4ionEffectiveCharge&) = delete;
|
||||
|
||||
static const G4double inveplus;
|
||||
G4double inveplus;
|
||||
G4Pow* g4calc;
|
||||
|
||||
const G4ParticleDefinition* lastPart;
|
||||
|
||||
Reference in New Issue
Block a user