Import Geant4 10.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 14:11:04 +02:00
parent c9b32a6c0a
commit d4af681f38
4886 changed files with 420149 additions and 1023309 deletions
@@ -81,7 +81,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
rangeCmd->SetGuidance("Enable/disable CSDA range calculation");
rangeCmd->SetParameterName("range",true);
rangeCmd->SetDefaultValue(false);
rangeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
rangeCmd->AvailableForStates(G4State_PreInit);
lpmCmd = new G4UIcmdWithABool("/process/eLoss/LPM",this);
lpmCmd->SetGuidance("Enable/disable LPM effect calculation");
@@ -113,12 +113,24 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
deCmd->SetDefaultValue(false);
deCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
dirFluoCmd = new G4UIcmdWithABool("/process/em/fluoBearden",this);
dirFluoCmd->SetGuidance("Enable/disable usage of Bearden fluorescence files");
dirFluoCmd->SetParameterName("fluoBeardenFlag",true);
dirFluoCmd->SetDefaultValue(false);
dirFluoCmd->AvailableForStates(G4State_PreInit);
auCmd = new G4UIcmdWithABool("/process/em/auger",this);
auCmd->SetGuidance("Enable/disable Auger electrons production");
auCmd->SetParameterName("augerFlag",true);
auCmd->SetDefaultValue(false);
auCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
auCascadeCmd = new G4UIcmdWithABool("/process/em/augerCascade",this);
auCascadeCmd->SetGuidance("Enable/disable simulation of cascade of Auger electrons");
auCascadeCmd->SetParameterName("augerCascadeFlag",true);
auCascadeCmd->SetDefaultValue(false);
auCascadeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pixeCmd = new G4UIcmdWithABool("/process/em/pixe",this);
pixeCmd->SetGuidance("Enable/disable PIXE simulation");
pixeCmd->SetParameterName("pixeFlag",true);
@@ -146,7 +158,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
catCmd = new G4UIcmdWithABool("/process/msc/DisplacementBeyondSafety",this);
catCmd->SetGuidance("Enable/disable displacement at geometry boundary");
catCmd->SetParameterName("cat",true);
catCmd->SetDefaultValue(true);
catCmd->SetDefaultValue(false);
catCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
delCmd = new G4UIcmdWithABool("/process/eLoss/UseAngularGenerator",this);
@@ -155,6 +167,12 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
delCmd->SetDefaultValue(false);
delCmd->AvailableForStates(G4State_PreInit);
mottCmd = new G4UIcmdWithABool("/process/msc/UseMottCorrection",this);
mottCmd->SetGuidance("Enable usage of Mott corrections for e- elastic scattering");
mottCmd->SetParameterName("mott",true);
mottCmd->SetDefaultValue(false);
mottCmd->AvailableForStates(G4State_PreInit);
minSubSecCmd = new G4UIcmdWithADouble("/process/eLoss/minsubsec",this);
minSubSecCmd->SetGuidance("Set the ratio subcut/cut ");
minSubSecCmd->SetParameterName("rcmin",true);
@@ -178,6 +196,18 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
cenCmd->SetUnitCategory("Energy");
cenCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
lowEnCmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestElectronEnergy",this);
lowEnCmd->SetGuidance("Set the lowest kinetic energy for e+-");
lowEnCmd->SetParameterName("elow",true);
lowEnCmd->SetUnitCategory("Energy");
lowEnCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
lowhEnCmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestMuHadEnergy",this);
lowhEnCmd->SetGuidance("Set the lowest kinetic energy for muons and hadrons");
lowhEnCmd->SetParameterName("elowh",true);
lowhEnCmd->SetUnitCategory("Energy");
lowhEnCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
lllCmd = new G4UIcmdWithADouble("/process/eLoss/linLossLimit",this);
lllCmd->SetGuidance("Set linearLossLimit parameter");
lllCmd->SetParameterName("linlim",true);
@@ -208,12 +238,19 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
angCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
frCmd = new G4UIcmdWithADouble("/process/msc/RangeFactor",this);
frCmd->SetGuidance("Set RangeFactor parameter for msc processes");
frCmd->SetGuidance("Set RangeFactor for msc processes of e+-");
frCmd->SetParameterName("Fr",true);
frCmd->SetRange("Fr>0");
frCmd->SetDefaultValue(0.04);
frCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fr1Cmd = new G4UIcmdWithADouble("/process/msc/RangeFactorMuHad",this);
fr1Cmd->SetGuidance("Set RangeFactor for msc processes of muons/hadrons");
fr1Cmd->SetParameterName("Fr1",true);
fr1Cmd->SetRange("Fr>0");
fr1Cmd->SetDefaultValue(0.2);
fr1Cmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fgCmd = new G4UIcmdWithADouble("/process/msc/GeomFactor",this);
fgCmd->SetGuidance("Set GeomFactor parameter for msc processes");
fgCmd->SetParameterName("Fg",true);
@@ -265,7 +302,61 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
mscCmd = new G4UIcmdWithAString("/process/msc/StepLimit",this);
mscCmd->SetGuidance("Set msc step limitation type");
mscCmd->SetParameterName("StepLim",true);
mscCmd->SetCandidates("Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
mscCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
msc1Cmd = new G4UIcmdWithAString("/process/msc/StepLimitMuHad",this);
msc1Cmd->SetGuidance("Set msc step limitation type for muons/hadrons");
msc1Cmd->SetParameterName("StepLim1",true);
msc1Cmd->SetCandidates("fMinimal fUseSafety fUseSafetyPlus fUseDistanceToBoundary");
msc1Cmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pixeXsCmd = new G4UIcmdWithAString("/process/em/pixeXSmodel",this);
pixeXsCmd->SetGuidance("The name of PIXE cross section");
pixeXsCmd->SetParameterName("pixeXS",true);
pixeXsCmd->SetCandidates("ECPSSR_Analytical Empirical ECPSSR_FormFactor");
pixeXsCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pixeeXsCmd = new G4UIcmdWithAString("/process/em/pixeElecXSmodel",this);
pixeeXsCmd->SetGuidance("The name of PIXE cross section for electron");
pixeeXsCmd->SetParameterName("pixeEXS",true);
pixeeXsCmd->SetCandidates("ECPSSR_Analytical Empirical Livermore Penelope");
pixeeXsCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
paiCmd = new G4UIcommand("/process/em/AddPAIRegion",this);
paiCmd->SetGuidance("Activate PAI in the G4Region.");
paiCmd->SetGuidance(" partName : particle name (default - all)");
paiCmd->SetGuidance(" regName : G4Region name");
paiCmd->SetGuidance(" paiType : PAI, PAIphoton");
G4UIparameter* part = new G4UIparameter("partName",'s',false);
paiCmd->SetParameter(part);
G4UIparameter* pregName = new G4UIparameter("regName",'s',false);
paiCmd->SetParameter(pregName);
G4UIparameter* ptype = new G4UIparameter("type",'s',false);
paiCmd->SetParameter(ptype);
meCmd = new G4UIcmdWithAString("/process/em/AddMicroElecRegion",this);
meCmd->SetGuidance("Activate MicroElec model in the G4Region");
meCmd->SetParameterName("MicroElec",true);
meCmd->AvailableForStates(G4State_PreInit);
dnaCmd = new G4UIcommand("/process/em/AddDNARegion",this);
dnaCmd->SetGuidance("Activate DNA in the G4Region.");
dnaCmd->SetGuidance(" regName : G4Region name");
dnaCmd->SetGuidance(" dnaType : opt0, opt1, opt2");
G4UIparameter* regName = new G4UIparameter("regName",'s',false);
dnaCmd->SetParameter(regName);
G4UIparameter* type = new G4UIparameter("type",'s',false);
dnaCmd->SetParameter(type);
dumpCmd = new G4UIcommand("/process/em/printParameters",this);
dumpCmd->SetGuidance("Print all EM parameters.");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -283,24 +374,30 @@ G4EmParametersMessenger::~G4EmParametersMessenger()
delete rsCmd;
delete aplCmd;
delete deCmd;
delete dirFluoCmd;
delete auCmd;
delete auCascadeCmd;
delete pixeCmd;
delete dcutCmd;
delete latCmd;
delete mulatCmd;
delete catCmd;
delete delCmd;
delete mottCmd;
delete minSubSecCmd;
delete minEnCmd;
delete maxEnCmd;
delete cenCmd;
delete lowEnCmd;
delete lowhEnCmd;
delete lllCmd;
delete brCmd;
delete labCmd;
delete mscfCmd;
delete angCmd;
delete frCmd;
delete fr1Cmd;
delete fgCmd;
delete skinCmd;
@@ -312,12 +409,21 @@ G4EmParametersMessenger::~G4EmParametersMessenger()
delete ver2Cmd;
delete mscCmd;
delete msc1Cmd;
delete pixeXsCmd;
delete pixeeXsCmd;
delete paiCmd;
delete meCmd;
delete dnaCmd;
delete dumpCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
G4String newValue)
{
G4bool physicsModified = false;
if (command == flucCmd) {
@@ -325,7 +431,6 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
physicsModified = true;
} else if (command == rangeCmd) {
theParameters->SetBuildCSDARange(rangeCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == lpmCmd) {
theParameters->SetLPM(lpmCmd->GetNewBoolValue(newValue));
physicsModified = true;
@@ -334,14 +439,21 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
physicsModified = true;
} else if (command == rsCmd) {
theParameters->SetUseCutAsFinalRange(rsCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == aplCmd) {
theParameters->SetApplyCuts(aplCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == deCmd) {
theParameters->SetFluo(deCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == dirFluoCmd) {
theParameters->SetBeardenFluoDir(dirFluoCmd->GetNewBoolValue(newValue));
} else if (command == auCmd) {
theParameters->SetAuger(auCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == auCascadeCmd) {
theParameters->SetAugerCascade(auCascadeCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == pixeCmd) {
theParameters->SetPixe(pixeCmd->GetNewBoolValue(newValue));
physicsModified = true;
@@ -357,9 +469,10 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if (command == catCmd) {
theParameters->SetLatDisplacementBeyondSafety(catCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == catCmd) {
theParameters->SetLatDisplacementBeyondSafety(catCmd->GetNewBoolValue(newValue));
} else if (command == delCmd) {
theParameters->ActivateAngularGeneratorForIonisation(delCmd->GetNewBoolValue(newValue));
} else if (command == mottCmd) {
theParameters->SetUseMottCorrection(mottCmd->GetNewBoolValue(newValue));
} else if (command == minSubSecCmd) {
theParameters->SetMinSubRange(minSubSecCmd->GetNewDoubleValue(newValue));
@@ -372,12 +485,21 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if (command == cenCmd) {
theParameters->SetMaxEnergyForCSDARange(cenCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == lowEnCmd) {
theParameters->SetLowestElectronEnergy(lowEnCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == lowhEnCmd) {
theParameters->SetLowestMuHadEnergy(lowhEnCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == lllCmd) {
theParameters->SetLinearLossLimit(lllCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == brCmd) {
theParameters->SetBremsstrahlungTh(brCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == labCmd) {
theParameters->SetLambdaFactor(labCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == mscfCmd) {
theParameters->SetFactorForAngleLimit(mscfCmd->GetNewDoubleValue(newValue));
physicsModified = true;
@@ -387,6 +509,9 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if (command == frCmd) {
theParameters->SetMscRangeFactor(frCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == fr1Cmd) {
theParameters->SetMscMuHadRangeFactor(fr1Cmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == fgCmd) {
theParameters->SetMscGeomFactor(fgCmd->GetNewDoubleValue(newValue));
physicsModified = true;
@@ -410,7 +535,7 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if (command == ver2Cmd) {
theParameters->SetWorkerVerbose(ver2Cmd->GetNewIntValue(newValue));
} else if (command == mscCmd) {
} else if (command == mscCmd || command == msc1Cmd) {
G4MscStepLimitType msctype = fUseSafety;
if(newValue == "Minimal") {
msctype = fMinimal;
@@ -422,11 +547,35 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
msctype = fUseSafetyPlus;
} else {
G4cout << "### G4EmParametersMessenger WARNING: StepLimit type <"
<< newValue << "> unknown!" << G4endl;
<< newValue << "> unknown!" << G4endl;
return;
}
theParameters->SetMscStepLimitType(msctype);
if (command == mscCmd) {
theParameters->SetMscStepLimitType(msctype);
} else {
theParameters->SetMscMuHadStepLimitType(msctype);
}
physicsModified = true;
} else if (command == pixeXsCmd) {
theParameters->SetPIXECrossSectionModel(newValue);
physicsModified = true;
} else if (command == pixeeXsCmd) {
theParameters->SetPIXEElectronCrossSectionModel(newValue);
physicsModified = true;
} else if (command == paiCmd) {
G4String s1(""),s2(""),s3("");
std::istringstream is(newValue);
is >> s1 >> s2 >> s3;
theParameters->AddPAIModel(s1, s2, s3);
} else if (command == meCmd) {
theParameters->AddMicroElec(newValue);
} else if (command == dnaCmd) {
G4String s1(""),s2("");
std::istringstream is(newValue);
is >> s1 >> s2;
theParameters->AddDNA(s1, s2);
} else if (command == dumpCmd) {
theParameters->Dump();
}
if(physicsModified) {
G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");