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