Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // ------------------------------------------------------------------- 28 // 29 // GEANT4 Class file 30 // 31 // File name: G4DeexParametersMessenger 32 // 33 // Author: Vladimir Ivanchenko 34 // 35 // Creation date: 17-10-2017 36 // 37 // Modifications: 38 // 39 // ------------------------------------------------------------------- 40 // 41 42 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 43 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 44 45 #include "G4DeexParametersMessenger.hh" 46 #include "G4UIdirectory.hh" 47 #include "G4UIcommand.hh" 48 #include "G4UIparameter.hh" 49 #include "G4UIcmdWithABool.hh" 50 #include "G4UIcmdWithAnInteger.hh" 51 #include "G4UIcmdWithADouble.hh" 52 #include "G4UIcmdWithADoubleAndUnit.hh" 53 #include "G4UIcmdWithAString.hh" 54 #include "G4UImanager.hh" 55 #include "G4DeexPrecoParameters.hh" 56 57 #include <sstream> 58 59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 60 61 G4DeexParametersMessenger::G4DeexParametersMessenger(G4DeexPrecoParameters* ptr) 62 : theParameters(ptr) 63 { 64 fDirectory = new G4UIdirectory("/process/had/deex/"); 65 fDirectory->SetGuidance("Commands for nuclear de-excitation module."); 66 67 readCmd = new G4UIcmdWithABool("/process/had/deex/readICdata",this); 68 readCmd->SetGuidance("Enable/disable download IC data per atomic shell."); 69 readCmd->SetParameterName("readIC",true); 70 readCmd->SetDefaultValue(false); 71 readCmd->AvailableForStates(G4State_PreInit); 72 readCmd->SetToBeBroadcasted(false); 73 74 icCmd = new G4UIcmdWithABool("/process/had/deex/setIC",this); 75 icCmd->SetGuidance("Enable/disable simulation of e- internal conversion."); 76 icCmd->SetParameterName("IC",true); 77 icCmd->SetDefaultValue(true); 78 icCmd->AvailableForStates(G4State_PreInit); 79 80 corgCmd = new G4UIcmdWithABool("/process/had/deex/correlatedGamma",this); 81 corgCmd->SetGuidance("Enable/disable simulation of correlated gamma emission."); 82 corgCmd->SetParameterName("corrG",true); 83 corgCmd->SetDefaultValue(false); 84 corgCmd->AvailableForStates(G4State_PreInit); 85 corgCmd->SetToBeBroadcasted(false); 86 87 isoCmd = new G4UIcmdWithABool("/process/had/deex/isomerProduction",this); 88 isoCmd->SetGuidance("Enable/disable simulation of long lived isomers."); 89 isoCmd->SetParameterName("isoProd",true); 90 isoCmd->SetDefaultValue(false); 91 isoCmd->AvailableForStates(G4State_PreInit); 92 isoCmd->SetToBeBroadcasted(false); 93 94 maxjCmd = new G4UIcmdWithAnInteger("/process/had/deex/maxTwoJ",this); 95 maxjCmd->SetGuidance("Set max value for 2J for simulation of correlated gamma emission."); 96 maxjCmd->SetParameterName("max2J",true); 97 maxjCmd->SetDefaultValue(10); 98 maxjCmd->AvailableForStates(G4State_PreInit); 99 maxjCmd->SetToBeBroadcasted(false); 100 101 verbCmd = new G4UIcmdWithAnInteger("/process/had/deex/verbose",this); 102 verbCmd->SetGuidance("Set verbosity level."); 103 verbCmd->SetParameterName("verb",true); 104 verbCmd->SetDefaultValue(1); 105 verbCmd->AvailableForStates(G4State_PreInit); 106 verbCmd->SetToBeBroadcasted(false); 107 108 xsTypeCmd = new G4UIcommand("/process/had/deex/TypeXS",this); 109 xsTypeCmd->SetGuidance("Defined type of inverse x-section"); 110 xsTypeCmd->SetGuidance(" model : PRECO or DEEX"); 111 xsTypeCmd->SetGuidance(" type of XS : Dostrovski, PARTICLEXS, Chatterjee, Kalbach"); 112 xsTypeCmd->AvailableForStates(G4State_PreInit); 113 xsTypeCmd->SetToBeBroadcasted(false); 114 115 auto modName = new G4UIparameter("modName",'s',false); 116 xsTypeCmd->SetParameter(modName); 117 modName->SetParameterCandidates("PRECO DEEX"); 118 119 auto mtype = new G4UIparameter("TypeXS",'s',false); 120 xsTypeCmd->SetParameter(mtype); 121 mtype->SetParameterCandidates("Dostrovski, PARTICLEXS, Chatterjee, Kalbach"); 122 } 123 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 126 G4DeexParametersMessenger::~G4DeexParametersMessenger() 127 { 128 delete fDirectory; 129 130 delete readCmd; 131 delete icCmd; 132 delete corgCmd; 133 delete isoCmd; 134 delete maxjCmd; 135 delete verbCmd; 136 delete xsTypeCmd; 137 } 138 139 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 140 141 void G4DeexParametersMessenger::SetNewValue(G4UIcommand* command, 142 G4String newValue) 143 { 144 if (command == readCmd) { 145 theParameters->SetStoreICLevelData(readCmd->GetNewBoolValue(newValue)); 146 } else if (command == icCmd) { 147 theParameters->SetInternalConversionFlag(icCmd->GetNewBoolValue(newValue)); 148 } else if (command == corgCmd) { 149 theParameters->SetCorrelatedGamma(corgCmd->GetNewBoolValue(newValue)); 150 } else if (command == isoCmd) { 151 theParameters->SetIsomerProduction(isoCmd->GetNewBoolValue(newValue)); 152 } else if (command == maxjCmd) { 153 theParameters->SetTwoJMAX(maxjCmd->GetNewIntValue(newValue)); 154 } else if (command == verbCmd) { 155 theParameters->SetVerbose(verbCmd->GetNewIntValue(newValue)); 156 } else if (command == xsTypeCmd) { 157 G4String s1(""),s2(""); 158 std::istringstream is(newValue); 159 is >> s1 >> s2; 160 G4int n; 161 if (s2 == "Dostrovski") { n = 0; } 162 else if (s2 == "PARTICLEXS") { n = 1; } 163 else if (s2 == "Chatterjee") { n = 2; } 164 else if (s2 == "Kalbach") { n = 3; } 165 else { return; } 166 if (s1 == "PRECO") { theParameters->SetPrecoModelType(n); } 167 if (s1 == "DEEX") { theParameters->SetDeexModelType(n); } 168 } 169 } 170 171 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 172