Import Geant4 10.7.0 source tree

This commit is contained in:
Gabriele Cosmo
2020-12-04 12:30:43 +01:00
parent 67ba86d073
commit dab42d2018
3770 changed files with 226369 additions and 286486 deletions
@@ -997,7 +997,7 @@ G4Radioactivation::DecayIt(const G4Track& theTrack, const G4Step&)
// G4cout << theTrack.GetWeight() <<"\t"<<weight1<<"\t"<<decayRate<< G4endl;
// Add isotope to the radioactivity tables
// One table for each observation time window specifed in
// One table for each observation time window specified in
// SetDecayBias(G4String filename)
theRadioactivityTables[decayWindows[nbin-1]]
@@ -36,49 +36,86 @@
#include "G4RadioactivationMessenger.hh"
#include "G4NuclearLevelData.hh"
#include <sstream>
#include "G4HadronicException.hh"
G4RadioactivationMessenger::G4RadioactivationMessenger(G4Radioactivation* theRadioactivationContainer1)
:theRadioactivationContainer(theRadioactivationContainer1)
{
grdmDirectory = new G4UIdirectory("/grdm/");
grdmDirectory->SetGuidance("Controls the biased version of radioactive decay");
old_grdmDirectory = new G4UIdirectory("/grdm/"); // To be removed in G4 11.0
old_grdmDirectory->SetGuidance("Controls the biased version of radioactive decay");
rdmDirectory = new G4UIdirectory("/process/had/rdm/");
rdmDirectory->SetGuidance("Controls the biased version of radioactive decay");
// Command to turn on/off variance reduction options
analoguemcCmd = new G4UIcmdWithABool ("/grdm/analogueMC",this);
old_analoguemcCmd = new G4UIcmdWithABool("/grdm/analogueMC",this); // To be removed in G4 11.0
old_analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
old_analoguemcCmd->SetParameterName("OldAnalogueMC",true);
old_analoguemcCmd->SetDefaultValue(true);
analoguemcCmd = new G4UIcmdWithABool("/process/had/rdm/analogueMC",this);
analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
analoguemcCmd->SetParameterName("AnalogueMC",true);
analoguemcCmd->SetDefaultValue(true);
// Command to use branching ratio biasing or not
brbiasCmd = new G4UIcmdWithABool ("/grdm/BRbias",this);
old_brbiasCmd = new G4UIcmdWithABool("/grdm/BRbias",this); // To be removed in G4 11.0
old_brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
old_brbiasCmd->SetParameterName("OldBRBias",true);
old_brbiasCmd->SetDefaultValue(true);
brbiasCmd = new G4UIcmdWithABool("/process/had/rdm/BRbias",this);
brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
brbiasCmd->SetParameterName("BRBias",true);
brbiasCmd->SetDefaultValue(true);
// Command to set the half-life thresold for isomer production
hlthCmd = new G4UIcmdWithADoubleAndUnit("/grdm/hlThreshold",this);
old_hlthCmd = new G4UIcmdWithADoubleAndUnit("/grdm/hlThreshold",this); // To be removed in G4 11.0
old_hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
old_hlthCmd->SetParameterName("OldhlThreshold",false);
old_hlthCmd->SetUnitCategory("Time");
hlthCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/hlThreshold",this);
hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
hlthCmd->SetParameterName("hlThreshold",false);
hlthCmd->SetUnitCategory("Time");
// Command to define the incident particle source time profile
sourcetimeprofileCmd = new G4UIcmdWithAString("/grdm/sourceTimeProfile",this);
old_sourcetimeprofileCmd = new G4UIcmdWithAString("/grdm/sourceTimeProfile",this); // To be removed in G4 11.0
old_sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
old_sourcetimeprofileCmd->SetParameterName("OldSTimeProfile",true);
old_sourcetimeprofileCmd->SetDefaultValue("source.data");
sourcetimeprofileCmd = new G4UIcmdWithAString("/process/had/rdm/sourceTimeProfile",this);
sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
sourcetimeprofileCmd->SetParameterName("STimeProfile",true);
sourcetimeprofileCmd->SetDefaultValue("source.data");
// Command to define the incident particle source time profile
decaybiasprofileCmd = new G4UIcmdWithAString("/grdm/decayBiasProfile",this);
old_decaybiasprofileCmd = new G4UIcmdWithAString("/grdm/decayBiasProfile",this); // To be removed in G4 11.0
old_decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
old_decaybiasprofileCmd->SetParameterName("OldDBiasProfile",true);
old_decaybiasprofileCmd->SetDefaultValue("bias.data");
decaybiasprofileCmd = new G4UIcmdWithAString("/process/had/rdm/decayBiasProfile",this);
decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
decaybiasprofileCmd->SetParameterName("DBiasProfile",true);
decaybiasprofileCmd->SetDefaultValue("bias.data");
// Command to set nuclei splitting parameter
old_splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this); // To be removed in G4 11.0
old_splitnucleiCmd->SetGuidance("Set number of splitting for the isotopes.");
old_splitnucleiCmd->SetParameterName("OldNSplit",true);
old_splitnucleiCmd->SetDefaultValue(1);
old_splitnucleiCmd->SetRange("OldNSplit>=1");
// Command to set nuclei spliting parameter
splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this);
splitnucleiCmd->SetGuidance("Set number of spliting for the isotopes.");
splitnucleiCmd = new G4UIcmdWithAnInteger("/process/had/rdm/splitNuclei",this);
splitnucleiCmd->SetGuidance("Set number of splitting for the isotopes.");
splitnucleiCmd->SetParameterName("NSplit",true);
splitnucleiCmd->SetDefaultValue(1);
splitnucleiCmd->SetRange("NSplit>=1");
@@ -87,35 +124,77 @@ G4RadioactivationMessenger::G4RadioactivationMessenger(G4Radioactivation* theRad
G4RadioactivationMessenger::~G4RadioactivationMessenger()
{
delete grdmDirectory;
delete old_grdmDirectory; // To be removed in G4 11.0
delete rdmDirectory;
delete old_analoguemcCmd; // To be removed in G4 11.0
delete analoguemcCmd;
delete old_sourcetimeprofileCmd; // To be removed in G4 11.0
delete sourcetimeprofileCmd;
delete old_decaybiasprofileCmd; // To be removed in G4 11.0
delete decaybiasprofileCmd;
delete old_brbiasCmd; // To be removed in G4 11.0
delete brbiasCmd;
delete old_splitnucleiCmd; // To be removed in G4 11.0
delete splitnucleiCmd;
delete old_hlthCmd; // To be removed in G4 11.0
delete hlthCmd;
}
void G4RadioactivationMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
{
if (command==analoguemcCmd) {theRadioactivationContainer->
SetAnalogueMonteCarlo(analoguemcCmd->GetNewBoolValue(newValues));
// Old commands to be removed in G4 11.0
if ( command == old_analoguemcCmd ) { theRadioactivationContainer->
SetAnalogueMonteCarlo( old_analoguemcCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/analogueMC in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_871", JustWarning, ed );
} else if ( command == old_brbiasCmd ) { theRadioactivationContainer->
SetBRBias( old_brbiasCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/BRbias in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_872", JustWarning, ed );
} else if ( command == old_sourcetimeprofileCmd ) { theRadioactivationContainer->
SetSourceTimeProfile( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/sourceTimeProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_873", JustWarning, ed );
} else if ( command == old_decaybiasprofileCmd ) { theRadioactivationContainer->
SetDecayBias( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayBiasProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_874", JustWarning, ed );
} else if ( command == old_splitnucleiCmd ) { theRadioactivationContainer->
SetSplitNuclei( old_splitnucleiCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/splitNuclei in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_875", JustWarning, ed );
} else if ( command == old_hlthCmd ) { theRadioactivationContainer->
SetHLThreshold( old_hlthCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/hlThreshold in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactivationMessenger", "HAD_RDM_876", JustWarning, ed );
}
} else if (command==brbiasCmd) {theRadioactivationContainer->
SetBRBias(brbiasCmd->GetNewBoolValue(newValues));
} else if (command==sourcetimeprofileCmd) {theRadioactivationContainer->
SetSourceTimeProfile(newValues);
} else if (command==decaybiasprofileCmd) {theRadioactivationContainer->
SetDecayBias(newValues);
} else if (command==splitnucleiCmd) {theRadioactivationContainer->
SetSplitNuclei(splitnucleiCmd->GetNewIntValue(newValues));
} else if (command==hlthCmd ) {theRadioactivationContainer->
SetHLThreshold(hlthCmd->GetNewDoubleValue(newValues));
// New commands
if ( command == analoguemcCmd ) { theRadioactivationContainer->
SetAnalogueMonteCarlo( analoguemcCmd->GetNewBoolValue( newValues ) );
} else if ( command == brbiasCmd ) { theRadioactivationContainer->
SetBRBias( brbiasCmd->GetNewBoolValue( newValues ) );
} else if ( command == sourcetimeprofileCmd ) { theRadioactivationContainer->
SetSourceTimeProfile( newValues );
} else if ( command == decaybiasprofileCmd ) { theRadioactivationContainer->
SetDecayBias( newValues );
} else if ( command == splitnucleiCmd ) { theRadioactivationContainer->
SetSplitNuclei( splitnucleiCmd->GetNewIntValue( newValues ) );
} else if ( command == hlthCmd ) { theRadioactivationContainer->
SetHLThreshold( hlthCmd->GetNewDoubleValue( newValues ) );
}
}
@@ -1974,7 +1974,7 @@ G4RadioactiveDecay::DecayIt(const G4Track& theTrack, const G4Step&)
// G4cout << theTrack.GetWeight() << "\t" << weight1 << "\t" << decayRate << G4endl;
// Add isotope to the radioactivity tables
// One table for each observation time window specifed in
// One table for each observation time window specified in
// SetDecayBias(G4String filename)
theRadioactivityTables[decayWindows[nbin-1]]
->AddIsotope(PZ,PA,PE,weight1*decayRate,theTrack.GetWeight());
@@ -38,6 +38,7 @@
#include "G4RadioactiveDecayBaseMessenger.hh"
#include "G4NuclearLevelData.hh"
#include <sstream>
#include "G4HadronicException.hh"
G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
@@ -45,111 +46,170 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
:theRadioactiveDecayContainer(theRadioactiveDecayContainer1)
{
// main directory for control of the RDM
grdmDirectory = new G4UIdirectory("/grdm/");
grdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
old_grdmDirectory = new G4UIdirectory("/grdm/"); // To be removed in G4 11.0
old_grdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
rdmDirectory = new G4UIdirectory("/process/had/rdm/");
rdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
// Command to define the limits on nucleus the RDM will treat.
nucleuslimitsCmd = new
G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this);
nucleuslimitsCmd->SetGuidance
("Set the atomic weight and number limits for the RDM.");
nucleuslimitsCmd->SetParameterName("aMin","aMax","zMin","zMax",true);
old_nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this); // To be removed in G4 11.0
old_nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
old_nucleuslimitsCmd->SetParameterName("OldAMin","OldAMax","OldZMin","OldZMax",true);
nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/process/had/rdm/nucleusLimits",this);
nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
nucleuslimitsCmd->SetParameterName("AMin","AMax","ZMin","ZMax",true);
// Select a logical volume for RDM
avolumeCmd = new
G4UIcmdWithAString("/grdm/selectVolume",this);
avolumeCmd->SetGuidance
("Suppply a logical volumes name to add it to the RDM apply list");
avolumeCmd->SetParameterName("aVolume",false);
old_avolumeCmd = new G4UIcmdWithAString("/grdm/selectVolume",this); // To be removed in G4 11.0
old_avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
old_avolumeCmd->SetParameterName("OldAVolume",false);
avolumeCmd = new G4UIcmdWithAString("/process/had/rdm/selectVolume",this);
avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
avolumeCmd->SetParameterName("AVolume",false);
// De-select a logical volume for RDM
deavolumeCmd = new
G4UIcmdWithAString("/grdm/deselectVolume",this);
deavolumeCmd->SetGuidance
("Suppply a logical volumes name to remove it from the RDM apply list");
deavolumeCmd->SetParameterName("aVolume",false);
old_deavolumeCmd = new G4UIcmdWithAString("/grdm/deselectVolume",this); // To be removed in G4 11.0
old_deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
old_deavolumeCmd->SetParameterName("OldAVolume",false);
deavolumeCmd = new G4UIcmdWithAString("/process/had/rdm/deselectVolume",this);
deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
deavolumeCmd->SetParameterName("AVolume",false);
// Select all logical volumes for RDM
allvolumesCmd = new
G4UIcmdWithoutParameter("/grdm/allVolumes",this);
allvolumesCmd->SetGuidance
(" apply RDM to all logical volumes. No parameter required.");
// allvolumeCmd->SetParameterName("AddAVolume",true);
old_allvolumesCmd = new G4UIcmdWithoutParameter("/grdm/allVolumes",this); // To be removed in G4 11.0
old_allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// old_allvolumeCmd->SetParameterName("OldAddAVolume",true);
allvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/allVolumes",this);
allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// allvolumeCmd->SetParameterName("AddAVolume",true);
// De-select all logical volumes for RDM
deallvolumesCmd = new
G4UIcmdWithoutParameter("/grdm/noVolumes",this);
deallvolumesCmd->SetGuidance
(" RDM is not applied to any logical volumes");
// deallvolumesCmd->SetParameterName("RemoveAVolume",true);z
old_deallvolumesCmd = new G4UIcmdWithoutParameter("/grdm/noVolumes",this); // To be removed in G4 11.0
old_deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// old_deallvolumesCmd->SetParameterName("OldRemoveAVolume",true);
deallvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/noVolumes",this);
deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// deallvolumesCmd->SetParameterName("RemoveAVolume",true);
// Command to invoke internal conversion or not
icmCmd = new G4UIcmdWithABool ("/grdm/applyICM",this);
old_icmCmd = new G4UIcmdWithABool("/grdm/applyICM",this); // To be removed in G4 11.0
old_icmCmd->SetGuidance("Command not active; kept for backward compatibility.");
old_icmCmd->SetGuidance("Internal conversion is always turned on.");
old_icmCmd->SetParameterName("OldApplyICM",true);
old_icmCmd->SetDefaultValue(true);
icmCmd = new G4UIcmdWithABool("/process/had/rdm/applyICM",this);
icmCmd->SetGuidance("Command not active; kept for backward compatibility.");
icmCmd->SetGuidance("Internal conversion is always turned on.");
icmCmd->SetParameterName("applyICM",true);
icmCmd->SetParameterName("ApplyICM",true);
icmCmd->SetDefaultValue(true);
// Command to invoke atomic relaxation or not
armCmd = new G4UIcmdWithABool ("/grdm/applyARM",this);
old_armCmd = new G4UIcmdWithABool("/grdm/applyARM",this); // To be removed in G4 11.0
old_armCmd->SetGuidance("True: ARM is applied; false: no");
old_armCmd->SetParameterName("OldApplyARM",true);
old_armCmd->SetDefaultValue(true);
//old_armCmd->AvailableForStates(G4State_PreInit);
armCmd = new G4UIcmdWithABool("/process/had/rdm/applyARM",this);
armCmd->SetGuidance("True: ARM is applied; false: no");
armCmd->SetParameterName("applyARM",true);
armCmd->SetParameterName("ApplyARM",true);
armCmd->SetDefaultValue(true);
//armCmd->AvailableForStates(G4State_PreInit);
// Command to set the directional bias (collimation) vector
colldirCmd = new G4UIcmdWith3Vector("/grdm/decayDirection",this);
old_colldirCmd = new G4UIcmdWith3Vector("/grdm/decayDirection",this); // To be removed in G4 11.0
old_colldirCmd->SetGuidance("Supply the direction vector for decay products");
old_colldirCmd->SetParameterName("OldX","OldY","OldZ",false);
colldirCmd = new G4UIcmdWith3Vector("/process/had/rdm/decayDirection",this);
colldirCmd->SetGuidance("Supply the direction vector for decay products");
colldirCmd->SetParameterName("X","Y","Z",false);
// Command to set the directional bias (collimation) half angle ("cone")
collangleCmd = new G4UIcmdWithADoubleAndUnit("/grdm/decayHalfAngle",this);
collangleCmd->SetGuidance
("Supply maximum angle from direction vector for decay products");
collangleCmd->SetParameterName("halfAngle",false);
collangleCmd->SetUnitCategory("Angle");
old_collangleCmd = new G4UIcmdWithADoubleAndUnit("/grdm/decayHalfAngle",this); // To be removed in G4 11.0
old_collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
old_collangleCmd->SetParameterName("OldHalfAngle",false);
old_collangleCmd->SetUnitCategory("Angle");
collangleCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/decayHalfAngle",this);
collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
collangleCmd->SetParameterName("HalfAngle",false);
collangleCmd->SetUnitCategory("Angle");
// This command setup the verbose level of radioactive decay
verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this);
old_verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this); // To be removed in G4 11.0
old_verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
old_verboseCmd->SetParameterName("OldVerboseLevel",true);
old_verboseCmd->SetDefaultValue(1);
old_verboseCmd->SetRange("OldVerboseLevel>=0");
verboseCmd = new G4UIcmdWithAnInteger("/process/had/rdm/verbose",this);
verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
verboseCmd->SetParameterName("VerboseLevel",true);
verboseCmd->SetDefaultValue(1);
verboseCmd->SetRange("VerboseLevel>=0");
// Use a user-defined decay datafile for a given isotope
userDecayDataCmd = new G4UIcommand("/grdm/setRadioactiveDecayFile",this);
old_userDecayDataCmd = new G4UIcommand("/grdm/setRadioactiveDecayFile",this); // To be removed in G4 11.0
old_userDecayDataCmd->SetGuidance("Supply user-defined radioactive decay data file");
G4UIparameter* old_Z_para= new G4UIparameter("Z_isotope",'i',true);
old_Z_para->SetParameterRange("Z_isotope > 0");
old_Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_A_para= new G4UIparameter("A_isotope",'i',true);
old_A_para->SetParameterRange("A_isotope > 1");
old_A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileName_para= new G4UIparameter("file_name",'s',true);
old_FileName_para->SetGuidance("Name of the user data file");
old_userDecayDataCmd->SetParameter(old_Z_para);
old_userDecayDataCmd->SetParameter(old_A_para);
old_userDecayDataCmd->SetParameter(old_FileName_para);
userDecayDataCmd = new G4UIcommand("/process/had/rdm/setRadioactiveDecayFile",this);
userDecayDataCmd->SetGuidance("Supply user-defined radioactive decay data file");
G4UIparameter* Z_para= new G4UIparameter("Z_isotope",'i',true);
G4UIparameter* Z_para= new G4UIparameter("Z_isotope",'i',true);
Z_para->SetParameterRange("Z_isotope > 0");
Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* A_para= new G4UIparameter("A_isotope",'i',true);
G4UIparameter* A_para= new G4UIparameter("A_isotope",'i',true);
A_para->SetParameterRange("A_isotope > 1");
A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* FileName_para= new G4UIparameter("file_name",'s',true);
G4UIparameter* FileName_para= new G4UIparameter("file_name",'s',true);
FileName_para->SetGuidance("Name of the user data file");
userDecayDataCmd->SetParameter(Z_para);
userDecayDataCmd->SetParameter(A_para);
userDecayDataCmd->SetParameter(FileName_para);
// Use a user-defined evaporation data file for a given isotope
userEvaporationDataCmd = new G4UIcommand("/grdm/setPhotoEvaporationFile",this);
userEvaporationDataCmd->SetGuidance("Supply user-defined photon evaporation data file");
old_userEvaporationDataCmd = new G4UIcommand("/grdm/setPhotoEvaporationFile",this); // To be removed in G4 11.0
old_userEvaporationDataCmd->SetGuidance("Supply user-defined photon evaporation data file");
G4UIparameter* old_Zpara= new G4UIparameter("Z_isotope",'i',true);
old_Zpara->SetParameterRange("Z_isotope > 0");
old_Zpara->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_Apara= new G4UIparameter("A_isotope",'i',true);
old_Apara->SetParameterRange("A_isotope > 1");
old_Apara->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileNamepara= new G4UIparameter("file_name",'s',true);
old_FileNamepara->SetGuidance("Name of the user data file");
old_userEvaporationDataCmd->SetParameter(old_Zpara);
old_userEvaporationDataCmd->SetParameter(old_Apara);
old_userEvaporationDataCmd->SetParameter(old_FileNamepara);
userEvaporationDataCmd = new G4UIcommand("/process/had/rdm/setPhotoEvaporationFile",this);
userEvaporationDataCmd->SetGuidance("Supply user-defined photon evaporation data file");
G4UIparameter* Zpara= new G4UIparameter("Z_isotope",'i',true);
Zpara->SetParameterRange("Z_isotope > 0");
Zpara->SetGuidance("Z: Charge number of isotope");
G4UIparameter* Apara= new G4UIparameter("A_isotope",'i',true);
Apara->SetParameterRange("A_isotope > 1");
Apara->SetGuidance("A: mass number of isotope");
G4UIparameter* FileNamepara= new G4UIparameter("file_name",'s',true);
FileNamepara->SetGuidance("Name of the user data file");
userEvaporationDataCmd->SetParameter(Zpara);
userEvaporationDataCmd->SetParameter(Apara);
userEvaporationDataCmd->SetParameter(FileNamepara);
@@ -158,76 +218,160 @@ G4RadioactiveDecayBaseMessenger::G4RadioactiveDecayBaseMessenger
G4RadioactiveDecayBaseMessenger::~G4RadioactiveDecayBaseMessenger ()
{
delete grdmDirectory;
delete nucleuslimitsCmd;
delete verboseCmd;
delete avolumeCmd;
delete deavolumeCmd;
delete allvolumesCmd;
delete deallvolumesCmd;
delete icmCmd;
delete armCmd;
delete userDecayDataCmd;
delete userEvaporationDataCmd;
delete colldirCmd;
delete collangleCmd;
delete old_grdmDirectory; // To be removed in G4 11.0
delete rdmDirectory;
delete old_nucleuslimitsCmd; // To be removed in G4 11.0
delete nucleuslimitsCmd;
delete old_verboseCmd; // To be removed in G4 11.0
delete verboseCmd;
delete old_avolumeCmd; // To be removed in G4 11.0
delete avolumeCmd;
delete old_deavolumeCmd; // To be removed in G4 11.0
delete deavolumeCmd;
delete old_allvolumesCmd; // To be removed in G4 11.0
delete allvolumesCmd;
delete old_deallvolumesCmd; // To be removed in G4 11.0
delete deallvolumesCmd;
delete old_icmCmd; // To be removed in G4 11.0
delete icmCmd;
delete old_armCmd; // To be removed in G4 11.0
delete armCmd;
delete old_userDecayDataCmd; // To be removed in G4 11.0
delete userDecayDataCmd; //<---
delete old_userEvaporationDataCmd; // To be removed in G4 11.0
delete userEvaporationDataCmd;
delete old_colldirCmd; // To be removed in G4 11.0
delete colldirCmd;
delete old_collangleCmd; // To be removed in G4 11.0
delete collangleCmd;
}
void
G4RadioactiveDecayBaseMessenger::SetNewValue(G4UIcommand *command, G4String newValues)
{
if (command == nucleuslimitsCmd) {
// Old commands to be removed in G4 11.0
if ( command == old_nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits(nucleuslimitsCmd->GetNewNucleusLimitsValue(newValues));
} else if (command == avolumeCmd) {
theRadioactiveDecayContainer->SelectAVolume(newValues);
} else if (command == deavolumeCmd) {
theRadioactiveDecayContainer->DeselectAVolume(newValues);
} else if (command == allvolumesCmd) {
SetNucleusLimits( old_nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/nucleusLimits in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_671", JustWarning, ed );
} else if ( command == old_avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/selectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_672", JustWarning, ed );
} else if ( command == old_deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/deselectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_673", JustWarning, ed );
} else if ( command == old_allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
} else if (command == deallvolumesCmd) {
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/allVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_674", JustWarning, ed );
} else if ( command == old_deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
} else if (command == verboseCmd) {
theRadioactiveDecayContainer->
SetVerboseLevel(verboseCmd->GetNewIntValue(newValues));
} else if (command == icmCmd) {
theRadioactiveDecayContainer->
SetICM(icmCmd->GetNewBoolValue(newValues));
} else if (command == armCmd) {
theRadioactiveDecayContainer->
SetARM(armCmd->GetNewBoolValue(newValues));
} else if (command == userDecayDataCmd) {
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/noVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_675", JustWarning, ed );
} else if ( command == old_verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( old_verboseCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/verbose in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_676", JustWarning, ed );
} else if ( command == old_icmCmd ) {
theRadioactiveDecayContainer->SetICM( old_icmCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyICM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_677", JustWarning, ed );
} else if ( command == old_armCmd ) {
theRadioactiveDecayContainer->SetARM( old_armCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyARM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_678", JustWarning, ed );
} else if ( command == old_userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
} else if (command == userEvaporationDataCmd) {
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setRadioactiveDecayFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_679", JustWarning, ed );
} else if ( command == old_userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
} else if (command == colldirCmd) {
theRadioactiveDecayContainer->
SetDecayDirection(colldirCmd->GetNew3VectorValue(newValues));
} else if (command == collangleCmd) {
theRadioactiveDecayContainer->
SetDecayHalfAngle(collangleCmd->GetNewDoubleValue(newValues));
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setPhotoEvaporationFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_680", JustWarning, ed );
} else if ( command == old_colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( old_colldirCmd->GetNew3VectorValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayDirection in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_681", JustWarning, ed );
} else if ( command == old_collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( old_collangleCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayHalfAngle in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecayBaseMessenger", "HAD_RDM_682", JustWarning, ed );
}
// New commands
if ( command == nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
} else if ( command == avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
} else if ( command == deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
} else if ( command == allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
} else if ( command == deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
} else if ( command == verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( verboseCmd->GetNewIntValue( newValues ) );
} else if ( command == icmCmd ) {
theRadioactiveDecayContainer->SetICM( icmCmd->GetNewBoolValue( newValues ) );
} else if ( command == armCmd ) {
theRadioactiveDecayContainer->SetARM( armCmd->GetNewBoolValue( newValues ) );
} else if ( command == userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
} else if ( command == userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
} else if ( command == colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( colldirCmd->GetNew3VectorValue( newValues ) );
} else if ( command == collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( collangleCmd->GetNewDoubleValue( newValues ) );
}
}
@@ -26,8 +26,8 @@
#include "G4RadioactiveDecaymessenger.hh"
#include "G4NuclearLevelData.hh"
#include <sstream>
#include "G4HadronicException.hh"
G4RadioactiveDecaymessenger::G4RadioactiveDecaymessenger
@@ -35,281 +35,487 @@ G4RadioactiveDecaymessenger::G4RadioactiveDecaymessenger
:theRadioactiveDecayContainer(theRadioactiveDecayContainer1)
{
// main directory for control of the RDM
grdmDirectory = new G4UIdirectory("/grdm/");
grdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
old_grdmDirectory = new G4UIdirectory("/grdm/"); // To be removed in G4 11.0
old_grdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
rdmDirectory = new G4UIdirectory("/process/had/rdm/");
rdmDirectory->SetGuidance("Controls for the Radioactive Decay Module.");
// Command to define the limits on nucleus the RDM will treat.
nucleuslimitsCmd = new
G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this);
nucleuslimitsCmd->SetGuidance
("Set the atomic weight and number limits for the RDM.");
nucleuslimitsCmd->SetParameterName("aMin","aMax","zMin","zMax",true);
old_nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this); // To be removed in G4 11.0
old_nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
old_nucleuslimitsCmd->SetParameterName("OldAMin","OldAMax","OldZMin","OldZMax",true);
nucleuslimitsCmd = new G4UIcmdWithNucleusLimits("/process/had/rdm/nucleusLimits",this);
nucleuslimitsCmd->SetGuidance("Set the atomic weight and number limits for the RDM.");
nucleuslimitsCmd->SetParameterName("AMin","AMax","ZMin","ZMax",true);
// The next command contols whether the decay will be treated analoguely or
// with variance reduction
analoguemcCmd = new G4UIcmdWithABool ("/grdm/analogueMC",this);
old_analoguemcCmd = new G4UIcmdWithABool("/grdm/analogueMC",this); // To be removed in G4 11.0
old_analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
old_analoguemcCmd->SetParameterName("OldAnalogueMC",true);
old_analoguemcCmd->SetDefaultValue(true);
analoguemcCmd = new G4UIcmdWithABool("/process/had/rdm/analogueMC",this);
analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method");
analoguemcCmd->SetParameterName("AnalogueMC",true);
analoguemcCmd->SetDefaultValue(true);
//
// The next command contols whether beta decay will be treated faithfully or
// in fast mode
//
fbetaCmd = new G4UIcmdWithABool ("/grdm/fBeta",this);
fbetaCmd->SetGuidance("false: use 3-body decay, true: use histogram method");
fbetaCmd->SetParameterName("fBeta",true);
fbetaCmd->SetDefaultValue(false);
// The next command contols whether beta decay will be treated faithfully or in fast mode
old_fbetaCmd = new G4UIcmdWithABool("/grdm/fBeta",this); // To be removed in G4 11.0
old_fbetaCmd->SetGuidance("false: use 3-body decay, true: use histogram method");
old_fbetaCmd->SetParameterName("OldFBeta",true);
old_fbetaCmd->SetDefaultValue(false);
//
//
fbetaCmd = new G4UIcmdWithABool("/process/had/rdm/fBeta",this);
fbetaCmd->SetGuidance("false: use 3-body decay, true: use histogram method");
fbetaCmd->SetParameterName("FBeta",true);
fbetaCmd->SetDefaultValue(false);
// Command to selete a logical volume for RDM.
//
avolumeCmd = new
G4UIcmdWithAString("/grdm/selectVolume",this);
avolumeCmd->SetGuidance
("Suppply a logical volumes name to add it to the RDM apply list");
avolumeCmd->SetParameterName("aVolume",false);
//
//
//
old_avolumeCmd = new G4UIcmdWithAString("/grdm/selectVolume",this); // To be removed in G4 11.0
old_avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
old_avolumeCmd->SetParameterName("OldAVolume",false);
avolumeCmd = new G4UIcmdWithAString("/process/had/rdm/selectVolume",this);
avolumeCmd->SetGuidance("Supply a logical volumes name to add it to the RDM apply list");
avolumeCmd->SetParameterName("AVolume",false);
// Command to de-selete a logical volume for RDM.
//
deavolumeCmd = new
G4UIcmdWithAString("/grdm/deselectVolume",this);
deavolumeCmd->SetGuidance
("Suppply a logical volumes name to remove it from the RDM apply list");
deavolumeCmd->SetParameterName("aVolume",false);
//
//
old_deavolumeCmd = new G4UIcmdWithAString("/grdm/deselectVolume",this); // To be removed in G4 11.0
old_deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
old_deavolumeCmd->SetParameterName("OldAVolume",false);
deavolumeCmd = new G4UIcmdWithAString("/process/had/rdm/deselectVolume",this);
deavolumeCmd->SetGuidance("Supply a logical volumes name to remove it from the RDM apply list");
deavolumeCmd->SetParameterName("AVolume",false);
// Command to selete all logical volumes for RDM.
//
allvolumesCmd = new
G4UIcmdWithoutParameter("/grdm/allVolumes",this);
allvolumesCmd->SetGuidance
(" apply RDM to all logical volumes. No parameter required.");
old_allvolumesCmd = new G4UIcmdWithoutParameter("/grdm/allVolumes",this); // To be removed in G4 11.0
old_allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// old_allvolumeCmd->SetParameterName("OldAddAVolume",true);
allvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/allVolumes",this);
allvolumesCmd->SetGuidance(" apply RDM to all logical volumes. No parameter required.");
// allvolumeCmd->SetParameterName("AddAVolume",true);
//
// Command to de-selete a logical volume for RDM.
//
deallvolumesCmd = new
G4UIcmdWithoutParameter("/grdm/noVolumes",this);
deallvolumesCmd->SetGuidance
(" RDM is not applied to any logical volumes");
old_deallvolumesCmd = new G4UIcmdWithoutParameter("/grdm/noVolumes",this); // To be removed in G4 11.0
old_deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// old_deallvolumesCmd->SetParameterName("OldRemoveAVolume",true);
deallvolumesCmd = new G4UIcmdWithoutParameter("/process/had/rdm/noVolumes",this);
deallvolumesCmd->SetGuidance(" RDM is not applied to any logical volumes");
// deallvolumesCmd->SetParameterName("RemoveAVolume",true);
//
// The next command contols whether the branching ratio biasing will be applied or not
//
brbiasCmd = new G4UIcmdWithABool ("/grdm/BRbias",this);
old_brbiasCmd = new G4UIcmdWithABool("/grdm/BRbias",this); // To be removed in G4 11.0
old_brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
old_brbiasCmd->SetParameterName("OldBRBias",true);
old_brbiasCmd->SetDefaultValue(true);
brbiasCmd = new G4UIcmdWithABool("/process/had/rdm/BRbias",this);
brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal");
brbiasCmd->SetParameterName("BRBias",true);
brbiasCmd->SetDefaultValue(true);
//
// Command contols whether ICM will be applied or not
//
icmCmd = new G4UIcmdWithABool ("/grdm/applyICM",this);
// Command controls whether ICM will be applied or not
old_icmCmd = new G4UIcmdWithABool("/grdm/applyICM",this); // To be removed in G4 11.0
old_icmCmd->SetGuidance("True: ICM is applied; false: no");
old_icmCmd->SetParameterName("OldApplyICM",true);
old_icmCmd->SetDefaultValue(true);
icmCmd = new G4UIcmdWithABool("/process/had/rdm/applyICM",this);
icmCmd->SetGuidance("True: ICM is applied; false: no");
icmCmd->SetParameterName("applyICM",true);
icmCmd->SetParameterName("ApplyICM",true);
icmCmd->SetDefaultValue(true);
//
// Command contols whether ARM will be applied or not
//
armCmd = new G4UIcmdWithABool ("/grdm/applyARM",this);
old_armCmd = new G4UIcmdWithABool("/grdm/applyARM",this); // To be removed in G4 11.0
old_armCmd->SetGuidance("True: ARM is applied; false: no");
old_armCmd->SetParameterName("OldApplyARM",true);
old_armCmd->SetDefaultValue(true);
// old_armCmd->AvailableForStates(G4State_PreInit);
armCmd = new G4UIcmdWithABool("/process/had/rdm/applyARM",this);
armCmd->SetGuidance("True: ARM is applied; false: no");
armCmd->SetParameterName("applyARM",true);
armCmd->SetParameterName("ApplyARM",true);
armCmd->SetDefaultValue(true);
//armCmd->AvailableForStates(G4State_PreInit);
//
// armCmd->AvailableForStates(G4State_PreInit);
// Command to set the h-l thresold for isomer production
//
hlthCmd = new G4UIcmdWithADoubleAndUnit("/grdm/hlThreshold",this);
old_hlthCmd = new G4UIcmdWithADoubleAndUnit("/grdm/hlThreshold",this); // To be removed in G4 11.0
old_hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
old_hlthCmd->SetParameterName("OldHlThreshold",false);
// old_hlthCmd->SetRange("OldHlThreshold>0.");
old_hlthCmd->SetUnitCategory("Time");
// old_hlthCmd->AvailableForStates(G4State_PreInit);
hlthCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/hlThreshold",this);
hlthCmd->SetGuidance("Set the h-l threshold for isomer production");
hlthCmd->SetParameterName("hlThreshold",false);
// hlthCmd->SetRange("hlThreshold>0.");
hlthCmd->SetParameterName("HlThreshold",false);
// hlthCmd->SetRange("HlThreshold>0.");
hlthCmd->SetUnitCategory("Time");
// hlthCmd->AvailableForStates(G4State_PreInit);
//
// Command to define the incident particle source time profile.
//
sourcetimeprofileCmd = new
G4UIcmdWithAString("/grdm/sourceTimeProfile",this);
old_sourcetimeprofileCmd = new G4UIcmdWithAString("/grdm/sourceTimeProfile",this); // To be removed in G4 11.0
old_sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
old_sourcetimeprofileCmd->SetParameterName("OldSTimeProfile",true);
old_sourcetimeprofileCmd->SetDefaultValue("source.data");
sourcetimeprofileCmd = new G4UIcmdWithAString("/process/had/rdm/sourceTimeProfile",this);
sourcetimeprofileCmd->SetGuidance
("Supply the name of the ascii file containing the source particle time profile");
sourcetimeprofileCmd->SetParameterName("STimeProfile",true);
sourcetimeprofileCmd->SetDefaultValue("source.data");
//
//
// Command to define the incident particle source time profile.
//
decaybiasprofileCmd = new
G4UIcmdWithAString("/grdm/decayBiasProfile",this);
old_decaybiasprofileCmd = new G4UIcmdWithAString("/grdm/decayBiasProfile",this); // To be removed in G4 11.0
old_decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
old_decaybiasprofileCmd->SetParameterName("OldDBiasProfile",true);
old_decaybiasprofileCmd->SetDefaultValue("bias.data");
decaybiasprofileCmd = new G4UIcmdWithAString("/process/had/rdm/decayBiasProfile",this);
decaybiasprofileCmd->SetGuidance
("Supply the name of the ascii file containing the decay bias time profile");
decaybiasprofileCmd->SetParameterName("DBiasProfile",true);
decaybiasprofileCmd->SetDefaultValue("bias.data");
//
// Command to set the directional bias (collimation) vector
//
colldirCmd = new G4UIcmdWith3Vector("/grdm/decayDirection",this);
old_colldirCmd = new G4UIcmdWith3Vector("/grdm/decayDirection",this); // To be removed in G4 11.0
old_colldirCmd->SetGuidance("Supply the direction vector for decay products");
old_colldirCmd->SetParameterName("OldX","OldY","OldZ",false);
colldirCmd = new G4UIcmdWith3Vector("/process/had/rdm/decayDirection",this);
colldirCmd->SetGuidance("Supply the direction vector for decay products");
colldirCmd->SetParameterName("X","Y","Z",false);
//
// Command to set the directional bias (collimation) half angle ("cone")
//
collangleCmd = new G4UIcmdWithADoubleAndUnit("/grdm/decayHalfAngle",this);
collangleCmd->SetGuidance
("Supply maximum angle from direction vector for decay products");
collangleCmd->SetParameterName("halfAngle",false);
collangleCmd->SetUnitCategory("Angle");
old_collangleCmd = new G4UIcmdWithADoubleAndUnit("/grdm/decayHalfAngle",this); // To be removed in G4 11.0
old_collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
old_collangleCmd->SetParameterName("OldHalfAngle",false);
old_collangleCmd->SetUnitCategory("Angle");
//
collangleCmd = new G4UIcmdWithADoubleAndUnit("/process/had/rdm/decayHalfAngle",this);
collangleCmd->SetGuidance("Supply maximum angle from direction vector for decay products");
collangleCmd->SetParameterName("HalfAngle",false);
collangleCmd->SetUnitCategory("Angle");
// This command setup the nuclei spliting parameter
//
splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this);
old_splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this); // To be removed in G4 11.0
old_splitnucleiCmd->SetGuidance("Set number of spliting for the isotopes.");
old_splitnucleiCmd->SetParameterName("OldNSplit",true);
old_splitnucleiCmd->SetDefaultValue(1);
old_splitnucleiCmd->SetRange("OldNSplit>=1");
splitnucleiCmd = new G4UIcmdWithAnInteger("/process/had/rdm/splitNuclei",this);
splitnucleiCmd->SetGuidance("Set number of spliting for the isotopes.");
splitnucleiCmd->SetParameterName("NSplit",true);
splitnucleiCmd->SetDefaultValue(1);
splitnucleiCmd->SetRange("NSplit>=1");
//
// This command setup the verbose level of radioactive decay
//
verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this);
old_verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this); // To be removed in G4 11.0
old_verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
old_verboseCmd->SetParameterName("OldVerboseLevel",true);
old_verboseCmd->SetDefaultValue(1);
old_verboseCmd->SetRange("OldVerboseLevel>=0");
verboseCmd = new G4UIcmdWithAnInteger("/process/had/rdm/verbose",this);
verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3");
verboseCmd->SetParameterName("VerboseLevel",true);
verboseCmd->SetDefaultValue(1);
verboseCmd->SetRange("VerboseLevel>=0");
//
//This commansd allows the user to define its own decay datafile for
// a given isotope
//
userDecayDataCmd = new G4UIcommand("/grdm/setRadioactiveDecayFile",this);
G4UIparameter* Z_para= new G4UIparameter("Z_isotope",'i',true);
// This command allows the user to define its own decay datafile for a given isotope
old_userDecayDataCmd = new G4UIcommand("/grdm/setRadioactiveDecayFile",this); // To be removed in G4 11.0
G4UIparameter* old_Z_para= new G4UIparameter("Z_isotope",'i',true);
old_Z_para->SetParameterRange("Z_isotope > 0");
old_Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_A_para= new G4UIparameter("A_isotope",'i',true);
old_A_para->SetParameterRange("A_isotope > 1");
old_A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileName_para= new G4UIparameter("file_name",'s',true);
old_FileName_para->SetGuidance("Name of the user data file");
old_userDecayDataCmd->SetParameter(old_Z_para);
old_userDecayDataCmd->SetParameter(old_A_para);
old_userDecayDataCmd->SetParameter(old_FileName_para);
userDecayDataCmd = new G4UIcommand("/process/had/rdm/setRadioactiveDecayFile",this);
G4UIparameter* Z_para= new G4UIparameter("Z_isotope",'i',true);
Z_para->SetParameterRange("Z_isotope > 0");
Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* A_para= new G4UIparameter("A_isotope",'i',true);
G4UIparameter* A_para= new G4UIparameter("A_isotope",'i',true);
A_para->SetParameterRange("A_isotope > 1");
A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* FileName_para= new G4UIparameter("file_name",'s',true);
G4UIparameter* FileName_para= new G4UIparameter("file_name",'s',true);
FileName_para->SetGuidance("Name of the user data file");
userDecayDataCmd->SetParameter(Z_para);
userDecayDataCmd->SetParameter(A_para);
userDecayDataCmd->SetParameter(FileName_para);
// This commands allows the user to define its own evaporation data file for a given isotope
old_userEvaporationDataCmd = new G4UIcommand("/grdm/setPhotoEvaporationFile",this); // To be removed in G4 11.0
G4UIparameter* old_Z_para_ = new G4UIparameter("Z_isotope",'i',true);
old_Z_para_->SetParameterRange("Z_isotope > 0");
old_Z_para_->SetGuidance("Z: Charge number of isotope");
G4UIparameter* old_A_para_ = new G4UIparameter("A_isotope",'i',true);
old_A_para_->SetParameterRange("A_isotope > 1");
old_A_para_->SetGuidance("A: mass number of isotope");
G4UIparameter* old_FileName_para_ = new G4UIparameter("file_name",'s',true);
old_FileName_para_->SetGuidance("Name of the user data file");
old_userEvaporationDataCmd->SetParameter(old_Z_para_);
old_userEvaporationDataCmd->SetParameter(old_A_para_);
old_userEvaporationDataCmd->SetParameter(old_FileName_para_);
//
//This commands allows the user to define its own evaporation data file for
// a given isotope
//
userEvaporationDataCmd = new G4UIcommand("/grdm/setPhotoEvaporationFile",this);
G4UIparameter* Z_para_ = new G4UIparameter("Z_isotope",'i',true);
Z_para->SetParameterRange("Z_isotope > 0");
Z_para->SetGuidance("Z: Charge number of isotope");
G4UIparameter* A_para_ = new G4UIparameter("A_isotope",'i',true);
A_para->SetParameterRange("A_isotope > 1");
A_para->SetGuidance("A: mass number of isotope");
G4UIparameter* FileName_para_ = new G4UIparameter("file_name",'s',true);
FileName_para->SetGuidance("Name of the user data file");
userEvaporationDataCmd->SetParameter(Z_para_ );
userEvaporationDataCmd->SetParameter(A_para_ );
userEvaporationDataCmd->SetParameter(FileName_para_ );
userEvaporationDataCmd = new G4UIcommand("/process/had/rdm/setPhotoEvaporationFile",this);
G4UIparameter* Z_para_ = new G4UIparameter("Z_isotope",'i',true);
Z_para_->SetParameterRange("Z_isotope > 0");
Z_para_->SetGuidance("Z: Charge number of isotope");
G4UIparameter* A_para_ = new G4UIparameter("A_isotope",'i',true);
A_para_->SetParameterRange("A_isotope > 1");
A_para_->SetGuidance("A: mass number of isotope");
G4UIparameter* FileName_para_ = new G4UIparameter("file_name",'s',true);
FileName_para_->SetGuidance("Name of the user data file");
userEvaporationDataCmd->SetParameter(Z_para_);
userEvaporationDataCmd->SetParameter(A_para_);
userEvaporationDataCmd->SetParameter(FileName_para_);
}
////////////////////////////////////////////////////////////////////////////////
//
G4RadioactiveDecaymessenger::~G4RadioactiveDecaymessenger ()
{
delete grdmDirectory;
delete nucleuslimitsCmd;
delete sourcetimeprofileCmd;
delete decaybiasprofileCmd;
delete analoguemcCmd;
delete fbetaCmd;
delete brbiasCmd;
delete splitnucleiCmd;
delete verboseCmd;
delete avolumeCmd;
delete deavolumeCmd;
delete allvolumesCmd;
delete deallvolumesCmd;
delete icmCmd;
delete armCmd;
delete hlthCmd;
delete userDecayDataCmd;
delete userEvaporationDataCmd;
delete colldirCmd;
delete collangleCmd;
delete old_grdmDirectory; // To be removed in G4 11.0
delete rdmDirectory;
delete old_nucleuslimitsCmd; // To be removed in G4 11.0
delete nucleuslimitsCmd;
delete old_sourcetimeprofileCmd; // To be removed in G4 11.0
delete sourcetimeprofileCmd;
delete old_decaybiasprofileCmd; // To be removed in G4 11.0
delete decaybiasprofileCmd;
delete old_analoguemcCmd; // To be removed in G4 11.0
delete analoguemcCmd;
delete old_fbetaCmd; // To be removed in G4 11.0
delete fbetaCmd;
delete old_brbiasCmd; // To be removed in G4 11.0
delete brbiasCmd;
delete old_splitnucleiCmd; // To be removed in G4 11.0
delete splitnucleiCmd;
delete old_verboseCmd; // To be removed in G4 11.0
delete verboseCmd;
delete old_avolumeCmd; // To be removed in G4 11.0
delete avolumeCmd;
delete old_deavolumeCmd; // To be removed in G4 11.0
delete deavolumeCmd;
delete old_allvolumesCmd; // To be removed in G4 11.0
delete allvolumesCmd;
delete old_deallvolumesCmd; // To be removed in G4 11.0
delete deallvolumesCmd;
delete old_icmCmd; // To be removed in G4 11.0
delete icmCmd;
delete old_armCmd; // To be removed in G4 11.0
delete armCmd;
delete old_hlthCmd; // To be removed in G4 11.0
delete hlthCmd;
delete old_userDecayDataCmd; // To be removed in G4 11.0
delete userDecayDataCmd;
delete old_userEvaporationDataCmd; // To be removed in G4 11.0
delete userEvaporationDataCmd;
delete old_colldirCmd; // To be removed in G4 11.0
delete colldirCmd;
delete old_collangleCmd; // To be removed in G4 11.0
delete collangleCmd;
}
////////////////////////////////////////////////////////////////////////////////
//
void G4RadioactiveDecaymessenger::SetNewValue (G4UIcommand *command, G4String newValues)
{
if (command==nucleuslimitsCmd) {theRadioactiveDecayContainer->
SetNucleusLimits(nucleuslimitsCmd->GetNewNucleusLimitsValue(newValues));
} else if (command==analoguemcCmd) {theRadioactiveDecayContainer->
SetAnalogueMonteCarlo(analoguemcCmd->GetNewBoolValue(newValues));
} else if (command==fbetaCmd) {theRadioactiveDecayContainer->
SetFBeta(fbetaCmd->GetNewBoolValue(newValues));
} else if (command==avolumeCmd) {theRadioactiveDecayContainer->
SelectAVolume(newValues);
} else if (command==deavolumeCmd) {theRadioactiveDecayContainer->
DeselectAVolume(newValues);}
else if (command==allvolumesCmd) {theRadioactiveDecayContainer->
SelectAllVolumes();}
else if (command==deallvolumesCmd) {theRadioactiveDecayContainer->
DeselectAllVolumes();}
else if (command==brbiasCmd) {theRadioactiveDecayContainer->
SetBRBias(brbiasCmd->GetNewBoolValue(newValues));}
else if (command==sourcetimeprofileCmd) {theRadioactiveDecayContainer->
SetSourceTimeProfile(newValues);}
else if (command==decaybiasprofileCmd) {theRadioactiveDecayContainer->
SetDecayBias(newValues);}
else if (command==splitnucleiCmd) {theRadioactiveDecayContainer->
SetSplitNuclei(splitnucleiCmd->GetNewIntValue(newValues));}
else if (command==verboseCmd) {theRadioactiveDecayContainer->
SetVerboseLevel(verboseCmd->GetNewIntValue(newValues));}
else if (command==icmCmd ) {theRadioactiveDecayContainer->
SetICM(icmCmd->GetNewBoolValue(newValues));}
else if (command==armCmd ) {theRadioactiveDecayContainer->
SetARM(armCmd->GetNewBoolValue(newValues));}
else if (command==hlthCmd ) {theRadioactiveDecayContainer->
SetHLThreshold(hlthCmd->GetNewDoubleValue(newValues));
} else if (command ==userDecayDataCmd){
// Old commands to be removed in G4 11.0
if ( command == old_nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( old_nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/nucleusLimits in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_771", JustWarning, ed );
} else if ( command == old_analoguemcCmd ) {
theRadioactiveDecayContainer->
SetAnalogueMonteCarlo( old_analoguemcCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/analogueMC in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_772", JustWarning, ed );
} else if ( command == old_fbetaCmd ) {
theRadioactiveDecayContainer->SetFBeta( old_fbetaCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/fBeta in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_773", JustWarning, ed );
} else if ( command == old_avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/selectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_774", JustWarning, ed );
} else if ( command == old_deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/deselectVolume in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_775", JustWarning, ed );
} else if ( command == old_allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/allVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_776", JustWarning, ed );
} else if ( command == old_deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/noVolumes in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_777", JustWarning, ed );
} else if ( command == old_brbiasCmd ) {
theRadioactiveDecayContainer->SetBRBias( old_brbiasCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/BRbias in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_778", JustWarning, ed );
} else if ( command == old_sourcetimeprofileCmd ) {
theRadioactiveDecayContainer->SetSourceTimeProfile( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/sourceTimeProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_779", JustWarning, ed );
} else if ( command == old_decaybiasprofileCmd ) {
theRadioactiveDecayContainer->SetDecayBias( newValues );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayBiasProfile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_780", JustWarning, ed );
} else if ( command == old_splitnucleiCmd ) {
theRadioactiveDecayContainer->SetSplitNuclei( old_splitnucleiCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/splitNuclei in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_781", JustWarning, ed );
} else if ( command == old_verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( old_verboseCmd->GetNewIntValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/verbose in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_782", JustWarning, ed );
} else if ( command == old_icmCmd ) {
theRadioactiveDecayContainer->SetICM( old_icmCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyICM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_783", JustWarning, ed );
} else if ( command == old_armCmd ) {
theRadioactiveDecayContainer->SetARM( old_armCmd->GetNewBoolValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/applyARM in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_784", JustWarning, ed );
} else if ( command == old_hlthCmd ) {
theRadioactiveDecayContainer->SetHLThreshold( old_hlthCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/hlThreshold in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_785", JustWarning, ed );
} else if ( command == old_userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
} else if (command ==userEvaporationDataCmd){
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setRadioactiveDecayFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_786", JustWarning, ed );
} else if ( command == old_userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
} else if (command==colldirCmd) {theRadioactiveDecayContainer->
SetDecayDirection(colldirCmd->GetNew3VectorValue(newValues));
} else if (command==collangleCmd) {theRadioactiveDecayContainer->
SetDecayHalfAngle(collangleCmd->GetNewDoubleValue(newValues));
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/setPhotoEvaporationFile in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_787", JustWarning, ed );
} else if ( command == old_colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( old_colldirCmd->GetNew3VectorValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayDirection in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_788", JustWarning, ed );
} else if ( command == old_collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( old_collangleCmd->GetNewDoubleValue( newValues ) );
G4ExceptionDescription ed;
ed << "This command is valid but deprecated and will be replaced with the command:\n"
<< "/process/had/rdm/decayHalfAngle in the next major release, Geant4 version 11.0";
G4Exception( "G4RadioactiveDecaymessenger", "HAD_RDM_789", JustWarning, ed );
}
// New commands
if ( command == nucleuslimitsCmd ) {
theRadioactiveDecayContainer->
SetNucleusLimits( nucleuslimitsCmd->GetNewNucleusLimitsValue( newValues ) );
} else if ( command == analoguemcCmd ) {
theRadioactiveDecayContainer->
SetAnalogueMonteCarlo( analoguemcCmd->GetNewBoolValue( newValues ) );
} else if ( command == fbetaCmd ) {
theRadioactiveDecayContainer->SetFBeta( fbetaCmd->GetNewBoolValue( newValues ) );
} else if ( command == avolumeCmd ) {
theRadioactiveDecayContainer->SelectAVolume( newValues );
} else if ( command == deavolumeCmd ) {
theRadioactiveDecayContainer->DeselectAVolume( newValues );
} else if ( command == allvolumesCmd ) {
theRadioactiveDecayContainer->SelectAllVolumes();
} else if ( command == deallvolumesCmd ) {
theRadioactiveDecayContainer->DeselectAllVolumes();
} else if ( command == brbiasCmd ) {
theRadioactiveDecayContainer->SetBRBias( brbiasCmd->GetNewBoolValue( newValues ) );
} else if ( command == sourcetimeprofileCmd ) {
theRadioactiveDecayContainer->SetSourceTimeProfile( newValues );
} else if ( command == decaybiasprofileCmd ) {
theRadioactiveDecayContainer->SetDecayBias( newValues );
} else if ( command == splitnucleiCmd ) {
theRadioactiveDecayContainer->SetSplitNuclei( splitnucleiCmd->GetNewIntValue( newValues ) );
} else if ( command == verboseCmd ) {
theRadioactiveDecayContainer->SetVerboseLevel( verboseCmd->GetNewIntValue( newValues ) );
} else if ( command == icmCmd ) {
theRadioactiveDecayContainer->SetICM( icmCmd->GetNewBoolValue( newValues ) );
} else if ( command == armCmd ) {
theRadioactiveDecayContainer->SetARM( armCmd->GetNewBoolValue( newValues ) );
} else if ( command == hlthCmd ) {
theRadioactiveDecayContainer->SetHLThreshold( hlthCmd->GetNewDoubleValue( newValues ) );
} else if ( command == userDecayDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
theRadioactiveDecayContainer->AddUserDecayDataFile(Z,A,file_name);
} else if ( command == userEvaporationDataCmd ) {
G4int Z,A;
G4String file_name;
const char* nv = (const char*)newValues;
std::istringstream is(nv);
is >> Z >> A >> file_name;
G4NuclearLevelData::GetInstance()->AddPrivateData(Z,A,file_name);
} else if ( command == colldirCmd ) {
theRadioactiveDecayContainer->SetDecayDirection( colldirCmd->GetNew3VectorValue( newValues ) );
} else if ( command == collangleCmd ) {
theRadioactiveDecayContainer->SetDecayHalfAngle( collangleCmd->GetNewDoubleValue( newValues ) );
}
}