Import Geant4 10.4.1 source tree

This commit is contained in:
Gabriele Cosmo
2018-03-02 09:34:30 +01:00
parent fc6af9e721
commit fe04dcb406
341 changed files with 18389 additions and 24522 deletions
@@ -158,7 +158,7 @@ void G4EmParameters::Initialise()
finalRangeMuHad = 0.1*CLHEP::mm;
factorScreen = 1.0;
nbins = 77;
nbins = 84;
nbinsPerDecade = 7;
verbose = 1;
workerVerbose = 0;
@@ -927,6 +927,7 @@ void G4EmParameters::AddPAIModel(const G4String& particle,
const G4String& region,
const G4String& type)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesPAI.size();
for(G4int i=0; i<nreg; ++i) {
@@ -965,6 +966,7 @@ const std::vector<G4String>& G4EmParameters::TypesPAI() const
void G4EmParameters::AddMicroElec(const G4String& region)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesME.size();
for(G4int i=0; i<nreg; ++i) {
@@ -980,6 +982,7 @@ const std::vector<G4String>& G4EmParameters::RegionsMicroElec() const
void G4EmParameters::AddDNA(const G4String& region, const G4String& type)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesDNA.size();
for(G4int i=0; i<nreg; ++i) {
@@ -1001,13 +1004,7 @@ const std::vector<G4String>& G4EmParameters::TypesDNA() const
void G4EmParameters::AddMsc(const G4String& region, const G4String& type)
{
G4String r = CheckRegion(region);
G4int nreg = m_regnamesMsc.size();
for(G4int i=0; i<nreg; ++i) {
if(r == m_regnamesMsc[i]) { return; }
}
m_regnamesMsc.push_back(r);
m_typesMsc.push_back(type);
AddPhysics(region, type);
}
const std::vector<G4String>& G4EmParameters::RegionsMsc() const
@@ -1022,6 +1019,7 @@ const std::vector<G4String>& G4EmParameters::TypesMsc() const
void G4EmParameters::AddPhysics(const G4String& region, const G4String& type)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesMsc.size();
for(G4int i=0; i<nreg; ++i) {
@@ -1255,36 +1253,37 @@ std::ostream& G4EmParameters::StreamInfo(std::ostream& os) const
os << "=======================================================================" << "\n";
os << "====== Electromagnetic Physics Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Fluctuations of dE/dx are enabled " <<lossFluctuation << "\n";
os << "Build CSDA range enabled " <<buildCSDARange << "\n";
os << "LPM effect enabled " <<flagLPM << "\n";
os << "Spline of EM tables enabled " <<spline << "\n";
os << "Use cut as a final range enabled " <<finalRange << "\n";
os << "Apply cuts on all EM processes " <<applyCuts << "\n";
os << "Fluorescence enabled " <<fluo << "\n";
os << "Fluorescence Bearden data files enabled " <<beardenFluoDir << "\n";
os << "Auger electron production enabled " <<auger << "\n";
os << "Auger cascade enabled " <<augerCascade << "\n";
os << "PIXE atomic de-excitation enabled " <<pixe << "\n";
os << "De-excitation module ignores cuts " <<deexIgnoreCut << "\n";
os << "Msc lateral displacement for e+- enabled " <<lateralDisplacement << "\n";
os << "Msc lateral displacement for muons and hadrons " <<muhadLateralDisplacement << "\n";
os << "Msc lateral displacement alg96 for e+- " <<lateralDisplacementAlg96 << "\n";
os << "Msc lateral displacement beyond geometry safety " <<latDisplacementBeyondSafety << "\n";
os << "Enable angular generator interface "
<<useAngGeneratorForIonisation << "\n";
os << "Use Mott correction for e- scattering " << useMottCorrection << "\n";
os << "Use integral approach for tracking " << integral << "\n";
os << "X-section factor for integral approach " <<lambdaFactor << "\n";
os << "Use built-in Birks satuaration " << birks << "\n";
os << "Use fast sampling in DNA models " << dnaFast << "\n";
os << "Use Stationary option in DNA models " << dnaStationary << "\n";
os << "Use DNA with multiple scattering of e- " << dnaMsc << "\n";
os << "Factor of cut reduction for sub-cutoff method " << minSubRange << "\n";
os << "Min kinetic energy for tables "
<<G4BestUnit(minKinEnergy,"Energy") << "\n";
os << "Max kinetic energy for tables "
<<G4BestUnit(maxKinEnergy,"Energy") << "\n";
os << "Number of bins in tables " <<nbins << "\n";
os << "Number of bins per decade of a table " <<nbinsPerDecade << "\n";
os << "Verbose level " <<verbose << "\n";
os << "Verbose level for worker thread " <<workerVerbose << "\n";
os << "Bremsstrahlung energy threshold above which \n"
<< " primary is added to the list of secondary "
<<G4BestUnit(bremsTh,"Energy") << "\n";
os << "=======================================================================" << "\n";
os << "====== Ionisation Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Step function for e+- " <<"("<< dRoverRange
<< ", " << finalRange << " mm)\n";
os << "Step function for muons/hadrons " <<"("<< dRoverRangeMuHad
<< ", " << finalRangeMuHad << " mm)\n";
os << "Fluctuations of dE/dx are enabled " <<lossFluctuation << "\n";
os << "Build CSDA range enabled " <<buildCSDARange << "\n";
os << "Use cut as a final range enabled " <<finalRange << "\n";
os << "Enable angular generator interface "
<<useAngGeneratorForIonisation << "\n";
os << "Factor of cut reduction for sub-cutoff method " << minSubRange << "\n";
os << "Max kinetic energy for CSDA tables "
<<G4BestUnit(maxKinEnergyCSDA,"Energy") << "\n";
os << "Lowest e+e- kinetic energy "
@@ -1294,36 +1293,47 @@ std::ostream& G4EmParameters::StreamInfo(std::ostream& os) const
os << "Lowest triplet kinetic energy "
<<G4BestUnit(lowestTripletEnergy,"Energy") << "\n";
os << "Linear loss limit " <<linLossLimit << "\n";
os << "Bremsstrahlung energy threshold above which \n"
<< " primary is added to the list of secondary "
<<G4BestUnit(bremsTh,"Energy") << "\n";
os << "X-section factor for integral approach " <<lambdaFactor << "\n";
os << "=======================================================================" << "\n";
os << "====== Multiple Scattering Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Type of msc step limit algorithm for e+- " <<mscStepLimit << "\n";
os << "Type of msc step limit algorithm for muons/hadrons " <<mscStepLimitMuHad << "\n";
os << "Msc lateral displacement for e+- enabled " <<lateralDisplacement << "\n";
os << "Msc lateral displacement for muons and hadrons " <<muhadLateralDisplacement << "\n";
os << "Msc lateral displacement alg96 for e+- " <<lateralDisplacementAlg96 << "\n";
os << "Msc lateral displacement beyond geometry safety " <<latDisplacementBeyondSafety << "\n";
os << "Range factor for msc step limit for e+- " <<rangeFactor << "\n";
os << "Range factor for msc step limit for muons/hadrons " <<rangeFactorMuHad << "\n";
os << "Geometry factor for msc step limitation of e+- " <<geomFactor << "\n";
os << "Skin parameter for msc step limitation of e+- " <<skin << "\n";
os << "Use Mott correction for e- scattering " << useMottCorrection << "\n";
os << "Factor used for dynamic computation of angular \n"
<< " limit between single and multiple scattering " << factorForAngleLimit << "\n";
os << "Fixed angular limit between single \n"
<< " and multiple scattering "
<<thetaLimit/rad << " rad" << "\n";
os << "Range factor for msc step limit for e+- " <<rangeFactor << "\n";
os << "Range factor for msc step limit for muons/hadrons " <<rangeFactorMuHad << "\n";
os << "Geometry factor for msc step limitation of e+- " <<geomFactor << "\n";
os << "Skin parameter for msc step limitation of e+- " <<skin << "\n";
os << "Screening factor " <<factorScreen << "\n";
os << "Step function for e+- " <<"("<< dRoverRange
<< ", " << finalRange << " mm)\n";
os << "Step function for muons/hadrons " <<"("<< dRoverRangeMuHad
<< ", " << finalRangeMuHad << " mm)\n";
os << "Number of bins in tables " <<nbins << "\n";
os << "Number of bins per decade of a table " <<nbinsPerDecade << "\n";
os << "Verbose level " <<verbose << "\n";
os << "Verbose level for worker thread " <<workerVerbose << "\n";
os << "Type of msc step limit algorithm for e+- " <<mscStepLimit << "\n";
os << "Type of msc step limit algorithm for muons/hadrons " <<mscStepLimitMuHad << "\n";
os << "Type of nuclear form-factor " <<nucFormfactor << "\n";
os << "Screening factor " <<factorScreen << "\n";
os << "=======================================================================" << "\n";
os << "====== Atomic Deexcitation Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Fluorescence enabled " <<fluo << "\n";
os << "Fluorescence Bearden data files enabled " <<beardenFluoDir << "\n";
os << "Auger electron production enabled " <<auger << "\n";
os << "Auger cascade enabled " <<augerCascade << "\n";
os << "PIXE atomic de-excitation enabled " <<pixe << "\n";
os << "De-excitation module ignores cuts " <<deexIgnoreCut << "\n";
os << "Type of PIXE cross section for hadrons " <<namePIXE << "\n";
os << "Type of PIXE cross section for e+- " <<nameElectronPIXE << "\n";
os << "=======================================================================" << "\n";
os << "====== DNA Physics Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Use fast sampling in DNA models " << dnaFast << "\n";
os << "Use Stationary option in DNA models " << dnaStationary << "\n";
os << "Use DNA with multiple scattering of e- " << dnaMsc << "\n";
os << "=======================================================================" << "\n";
os.precision(prec);
return os;
@@ -1348,4 +1358,3 @@ G4bool G4EmParameters::IsLocked() const
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -93,7 +93,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
splCmd->SetGuidance("Enable/disable usage spline for Physics Vectors");
splCmd->SetParameterName("spl",true);
splCmd->SetDefaultValue(false);
splCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
splCmd->AvailableForStates(G4State_PreInit);
rsCmd = new G4UIcmdWithABool("/process/eLoss/useCutAsFinalRange",this);
rsCmd->SetGuidance("Enable/disable use of cut in range as a final range");
@@ -168,7 +168,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
catCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
delCmd = new G4UIcmdWithABool("/process/eLoss/UseAngularGenerator",this);
delCmd->SetGuidance("Enable usage of angular generator");
delCmd->SetGuidance("Enable usage of angular generator for ionisation");
delCmd->SetParameterName("del",true);
delCmd->SetDefaultValue(false);
delCmd->AvailableForStates(G4State_PreInit);
@@ -224,19 +224,19 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
minEnCmd->SetGuidance("Set the min kinetic energy for EM tables");
minEnCmd->SetParameterName("emin",true);
minEnCmd->SetUnitCategory("Energy");
minEnCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
minEnCmd->AvailableForStates(G4State_PreInit);
maxEnCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergy",this);
maxEnCmd->SetGuidance("Set the max kinetic energy for EM tables");
maxEnCmd->SetParameterName("emax",true);
maxEnCmd->SetUnitCategory("Energy");
maxEnCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
maxEnCmd->AvailableForStates(G4State_PreInit);
cenCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergyCSDA",this);
cenCmd->SetGuidance("Set the max kinetic energy for CSDA table");
cenCmd->SetParameterName("emaxCSDA",true);
cenCmd->SetUnitCategory("Energy");
cenCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
cenCmd->AvailableForStates(G4State_PreInit);
lowEnCmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestElectronEnergy",this);
lowEnCmd->SetGuidance("Set the lowest kinetic energy for e+-");
@@ -277,7 +277,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
mscfCmd->SetParameterName("Fact",true);
mscfCmd->SetRange("Fact>0");
mscfCmd->SetDefaultValue(1.);
mscfCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
mscfCmd->AvailableForStates(G4State_PreInit);
angCmd = new G4UIcmdWithADoubleAndUnit("/process/msc/ThetaLimit",this);
angCmd->SetGuidance("Set the limit on the polar angle for msc and single scattering");
@@ -319,20 +319,20 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
dedxCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsDEDX",this);
dedxCmd->SetGuidance("Set number of bins for EM tables");
dedxCmd->SetParameterName("binsDEDX",true);
dedxCmd->SetDefaultValue(77);
dedxCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
dedxCmd->SetDefaultValue(84);
dedxCmd->AvailableForStates(G4State_PreInit);
lamCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsLambda",this);
lamCmd->SetGuidance("Set number of bins for EM tables");
lamCmd->SetParameterName("binsL",true);
lamCmd->SetDefaultValue(77);
lamCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
lamCmd->SetDefaultValue(84);
lamCmd->AvailableForStates(G4State_PreInit);
amCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsPerDecade",this);
amCmd->SetGuidance("Set number of bins per decade for EM tables");
amCmd->SetParameterName("bins",true);
amCmd->SetDefaultValue(7);
amCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
amCmd->AvailableForStates(G4State_PreInit);
verCmd = new G4UIcmdWithAnInteger("/process/eLoss/verbose",this);
verCmd->SetGuidance("Set verbose level for EM physics");
@@ -560,7 +560,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
nffCmd->SetGuidance("Define typy of nuclear form-factor");
nffCmd->SetParameterName("NucFF",true);
nffCmd->SetCandidates("None Exponential Gaussian Flat");
nffCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
nffCmd->AvailableForStates(G4State_PreInit);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -659,7 +659,6 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
physicsModified = true;
} else if (command == splCmd) {
theParameters->SetSpline(splCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == rsCmd) {
theParameters->SetUseCutAsFinalRange(rsCmd->GetNewBoolValue(newValue));
physicsModified = true;
@@ -717,10 +716,8 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
theParameters->SetMinSubRange(minSubSecCmd->GetNewDoubleValue(newValue));
} else if (command == minEnCmd) {
theParameters->SetMinEnergy(minEnCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == maxEnCmd) {
theParameters->SetMaxEnergy(maxEnCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == cenCmd) {
theParameters->SetMaxEnergyForCSDARange(cenCmd->GetNewDoubleValue(newValue));
physicsModified = true;
@@ -744,7 +741,6 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
physicsModified = true;
} else if (command == mscfCmd) {
theParameters->SetFactorForAngleLimit(mscfCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == angCmd) {
theParameters->SetMscThetaLimit(angCmd->GetNewDoubleValue(newValue));
physicsModified = true;
@@ -765,19 +761,18 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if (command == dedxCmd) {
theParameters->SetNumberOfBins(dedxCmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == lamCmd) {
theParameters->SetNumberOfBins(lamCmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == amCmd) {
theParameters->SetNumberOfBinsPerDecade(amCmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == verCmd) {
theParameters->SetVerbose(verCmd->GetNewIntValue(newValue));
} else if (command == ver1Cmd) {
theParameters->SetVerbose(ver1Cmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == ver2Cmd) {
theParameters->SetWorkerVerbose(ver2Cmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == mscCmd || command == msc1Cmd) {
G4MscStepLimitType msctype = fUseSafety;
@@ -790,8 +785,9 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if(newValue == "UseSafetyPlus") {
msctype = fUseSafetyPlus;
} else {
G4cout << "### G4EmParametersMessenger WARNING: StepLimit type <"
<< newValue << "> unknown!" << G4endl;
G4ExceptionDescription ed;
ed << " StepLimit type <" << newValue << "> unknown!";
G4Exception("G4EmParametersMessenger", "em0044", JustWarning, ed);
return;
}
if (command == mscCmd) {
@@ -886,8 +882,13 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
if(newValue == "Exponential") { x = fExponentialNF; }
else if(newValue == "Gaussian") { x = fGaussianNF; }
else if(newValue == "Flat") { x = fFlatNF; }
else if(newValue != "None") {
G4ExceptionDescription ed;
ed << " NuclearFormFactor type <" << newValue << "> unknown!";
G4Exception("G4EmParametersMessenger", "em0044", JustWarning, ed);
return;
}
theParameters->SetNuclearFormfactorType(x);
physicsModified = true;
}
if(physicsModified) {
G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmProcess.cc 107364 2017-11-09 10:53:25Z gcosmo $
// $Id: G4VEmProcess.cc 108506 2018-02-15 15:50:39Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -113,7 +113,7 @@ G4VEmProcess::G4VEmProcess(const G4String& name, G4ProcessType type):
// Size of tables assuming spline
minKinEnergy = 0.1*keV;
maxKinEnergy = 100.0*TeV;
nLambdaBins = 77;
nLambdaBins = 84;
minKinEnergyPrim = DBL_MAX;
actBinning = actSpline = actMinKinEnergy = actMaxKinEnergy = false;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEnergyLossProcess.cc 107364 2017-11-09 10:53:25Z gcosmo $
// $Id: G4VEnergyLossProcess.cc 108506 2018-02-15 15:50:39Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -209,7 +209,7 @@ G4VEnergyLossProcess::G4VEnergyLossProcess(const G4String& name,
// Size of tables assuming spline
minKinEnergy = 0.1*keV;
maxKinEnergy = 100.0*TeV;
nBins = 77;
nBins = 84;
maxKinEnergyCSDA = 1.0*GeV;
nBinsCSDA = 35;
actMinKinEnergy = actMaxKinEnergy = actBinning = actLinLossLimit