59 : theParameters(ptr)
60{
61 paiCmd = new G4UIcommand("/process/em/AddPAIRegion",this);
62 paiCmd->SetGuidance("Activate PAI in the G4Region.");
63 paiCmd->SetGuidance(" partName : particle name (default - all)");
64 paiCmd->SetGuidance(" regName : G4Region name");
65 paiCmd->SetGuidance(" paiType : PAI, PAIphoton");
67 paiCmd->SetToBeBroadcasted(false);
68
69 auto part = new G4UIparameter("partName",'s',false);
70 paiCmd->SetParameter(part);
71
72 auto pregName = new G4UIparameter("regName",'s',false);
73 paiCmd->SetParameter(pregName);
74
75 auto ptype = new G4UIparameter("type",'s',false);
76 paiCmd->SetParameter(ptype);
77 ptype->SetParameterCandidates("pai PAI PAIphoton");
78
79 mscoCmd = new G4UIcommand("/process/em/AddEmRegion",this);
80 mscoCmd->SetGuidance("Add optional EM configuration for a G4Region.");
81 mscoCmd->SetGuidance(" regName : G4Region name");
82 mscoCmd->SetGuidance(" emType : G4EmStandard, G4EmStandard_opt1, ...");
84 mscoCmd->SetToBeBroadcasted(false);
85
86 auto mregName = new G4UIparameter("regName",'s',false);
87 mscoCmd->SetParameter(mregName);
88
89 auto mtype = new G4UIparameter("mscType",'s',false);
90 mscoCmd->SetParameter(mtype);
91 mtype->SetParameterCandidates("G4EmStandard G4EmStandard_opt1 G4EmStandard_opt2 G4EmStandard_opt3 G4EmStandard_opt4 G4EmStandardGS G4EmStandardSS G4EmLivermore G4EmPenelope G4RadioactiveDecay");
92
93 SubSecCmd = new G4UIcmdWithAString("/process/eLoss/subsecRegion",this);
94 SubSecCmd->SetGuidance("Enable subcut generation per region.");
95 SubSecCmd->SetGuidance(" Region : region name");
97 SubSecCmd->SetToBeBroadcasted(false);
98
99 StepFuncCmd = new G4UIcommand("/process/eLoss/StepFunction",this);
100 StepFuncCmd->SetGuidance("Set the energy loss step limitation parameters for e+-.");
101 StepFuncCmd->SetGuidance(" dRoverR : max Range variation per step");
102 StepFuncCmd->SetGuidance(" finalRange: range for final step");
103 StepFuncCmd->SetGuidance(" unit : unit of finalRange");
105 StepFuncCmd->SetToBeBroadcasted(false);
106
107 auto dRoverRPrm = new G4UIparameter("dRoverR",'d',false);
108 dRoverRPrm->SetParameterRange("dRoverR>0. && dRoverR<=1.");
109 StepFuncCmd->SetParameter(dRoverRPrm);
110
111 auto finalRangePrm = new G4UIparameter("finalRange",'d',false);
112 finalRangePrm->SetParameterRange("finalRange>0.");
113 StepFuncCmd->SetParameter(finalRangePrm);
114
115 auto unitPrm = new G4UIparameter("unit",'s',true);
116 unitPrm->SetDefaultUnit("mm");
117 StepFuncCmd->SetParameter(unitPrm);
118
119 StepFuncCmd1 = new G4UIcommand("/process/eLoss/StepFunctionMuHad",this);
120 StepFuncCmd1->SetGuidance("Set the energy loss step limitation parameters for muon/hadron.");
121 StepFuncCmd1->SetGuidance(" dRoverR : max Range variation per step");
122 StepFuncCmd1->SetGuidance(" finalRange: range for final step");
124 StepFuncCmd1->SetToBeBroadcasted(false);
125
126 auto dRoverRPrm1 = new G4UIparameter("dRoverRMuHad",'d',false);
127 dRoverRPrm1->SetParameterRange("dRoverRMuHad>0. && dRoverRMuHad<=1.");
128 StepFuncCmd1->SetParameter(dRoverRPrm1);
129
130 auto finalRangePrm1 = new G4UIparameter("finalRangeMuHad",'d',false);
131 finalRangePrm1->SetParameterRange("finalRangeMuHad>0.");
132 StepFuncCmd1->SetParameter(finalRangePrm1);
133
134 auto unitPrm1 = new G4UIparameter("unit",'s',true);
135 unitPrm1->SetDefaultValue("mm");
136 StepFuncCmd1->SetParameter(unitPrm1);
137
138 StepFuncCmd2 = new G4UIcommand("/process/eLoss/StepFunctionLightIons",this);
139 StepFuncCmd2->SetGuidance("Set the energy loss step limitation parameters for light ions.");
140 StepFuncCmd2->SetGuidance(" dRoverR : max Range variation per step");
141 StepFuncCmd2->SetGuidance(" finalRange: range for final step");
143 StepFuncCmd2->SetToBeBroadcasted(false);
144
145 auto dRoverRPrm2 = new G4UIparameter("dRoverRLIons",'d',false);
146 dRoverRPrm2->SetParameterRange("dRoverRLIons>0. && dRoverRLIons<=1.");
147 StepFuncCmd2->SetParameter(dRoverRPrm2);
148
149 auto finalRangePrm2 = new G4UIparameter("finalRangeLIons",'d',false);
150 finalRangePrm2->SetParameterRange("finalRangeLIons>0.");
151 StepFuncCmd2->SetParameter(finalRangePrm2);
152
153 auto unitPrm2 = new G4UIparameter("unit",'s',true);
154 unitPrm2->SetDefaultValue("mm");
155 StepFuncCmd2->SetParameter(unitPrm2);
156
157 StepFuncCmd3 = new G4UIcommand("/process/eLoss/StepFunctionIons",this);
158 StepFuncCmd3->SetGuidance("Set the energy loss step limitation parameters for ions.");
159 StepFuncCmd3->SetGuidance(" dRoverR : max Range variation per step");
160 StepFuncCmd3->SetGuidance(" finalRange: range for final step");
162 StepFuncCmd3->SetToBeBroadcasted(false);
163
164 auto dRoverRPrm3 = new G4UIparameter("dRoverRIons",'d',false);
165 dRoverRPrm3->SetParameterRange("dRoverRIons>0. && dRoverRIons<=1.");
166 StepFuncCmd3->SetParameter(dRoverRPrm3);
167
168 auto finalRangePrm3 = new G4UIparameter("finalRangeIons",'d',false);
169 finalRangePrm3->SetParameterRange("finalRangeIons>0.");
170 StepFuncCmd3->SetParameter(finalRangePrm3);
171
172 auto unitPrm3 = new G4UIparameter("unit",'s',true);
173 unitPrm3->SetDefaultValue("mm");
174 StepFuncCmd3->SetParameter(unitPrm3);
175
176 bfCmd = new G4UIcommand("/process/em/setBiasingFactor",this);
177 bfCmd->SetGuidance("Set factor for the process cross section.");
178 bfCmd->SetGuidance(" procName : process name");
179 bfCmd->SetGuidance(" procFact : factor");
180 bfCmd->SetGuidance(" flagFact : flag to change weight");
182 bfCmd->SetToBeBroadcasted(false);
183
184 auto procName = new G4UIparameter("procName",'s',false);
185 bfCmd->SetParameter(procName);
186
187 auto procFact = new G4UIparameter("procFact",'d',false);
188 bfCmd->SetParameter(procFact);
189
190 auto flagFact = new G4UIparameter("flagFact",'s',false);
191 bfCmd->SetParameter(flagFact);
192
193 fiCmd = new G4UIcommand("/process/em/setForcedInteraction",this);
194 fiCmd->SetGuidance("Set factor for the process cross section.");
195 fiCmd->SetGuidance(" procNam : process name");
196 fiCmd->SetGuidance(" regNam : region name");
197 fiCmd->SetGuidance(" tlength : fixed target length");
198 fiCmd->SetGuidance(" unitT : length unit");
199 fiCmd->SetGuidance(" tflag : flag to change weight");
201 fiCmd->SetToBeBroadcasted(false);
202
203 auto procNam = new G4UIparameter("procNam",'s',false);
204 fiCmd->SetParameter(procNam);
205
206 auto regNam = new G4UIparameter("regNam",'s',false);
207 fiCmd->SetParameter(regNam);
208
209 auto tlength = new G4UIparameter("tlength",'d',false);
210 tlength->SetParameterRange("tlength>0");
211 fiCmd->SetParameter(tlength);
212
213 auto unitT = new G4UIparameter("unitT",'s',true);
214 unitT->SetDefaultUnit("mm");
215 fiCmd->SetParameter(unitT);
216
217 auto flagT = new G4UIparameter("tflag",'b',true);
218 flagT->SetDefaultValue(true);
219 fiCmd->SetParameter(flagT);
220
221 bsCmd = new G4UIcommand("/process/em/setSecBiasing",this);
222 bsCmd->SetGuidance("Set bremsstrahlung or delta-e- splitting/Russian roulette per region.");
223 bsCmd->SetGuidance(" bProcNam : process name");
224 bsCmd->SetGuidance(" bRegNam : region name");
225 bsCmd->SetGuidance(" bFactor : number of split gamma or probability of Russian roulette");
226 bsCmd->SetGuidance(" bEnergy : max energy of a secondary for this biasing method");
227 bsCmd->SetGuidance(" bUnit : energy unit");
229 bsCmd->SetToBeBroadcasted(false);
230
231 auto bProcNam = new G4UIparameter("bProcNam",'s',false);
232 bsCmd->SetParameter(bProcNam);
233
234 auto bRegNam = new G4UIparameter("bRegNam",'s',false);
235 bsCmd->SetParameter(bRegNam);
236
237 auto bFactor = new G4UIparameter("bFactor",'d',false);
238 bsCmd->SetParameter(bFactor);
239
240 auto bEnergy = new G4UIparameter("bEnergy",'d',false);
241 bsCmd->SetParameter(bEnergy);
242
243 auto bUnit = new G4UIparameter("bUnit",'s',true);
244 bUnit->SetDefaultUnit("MeV");
245 bsCmd->SetParameter(bUnit);
246
247 dirSplitCmd = new G4UIcmdWithABool("/process/em/setDirectionalSplitting",this);
248 dirSplitCmd->SetGuidance("Enable directional brem splitting");
250 dirSplitCmd->SetToBeBroadcasted(false);
251
252 qeCmd = new G4UIcmdWithABool("/process/em/QuantumEntanglement",this);
253 qeCmd->SetGuidance("Enable quantum entanglement");
255 qeCmd->SetToBeBroadcasted(false);
256
257 dirSplitTargetCmd = new G4UIcmdWith3VectorAndUnit("/process/em/setDirectionalSplittingTarget",this);
258 dirSplitTargetCmd->SetGuidance("Position of arget for directional splitting");
260
261 dirSplitRadiusCmd = new G4UIcmdWithADoubleAndUnit("/process/em/setDirectionalSplittingRadius",this);
262 dirSplitRadiusCmd->SetGuidance("Radius of target for directional splitting");
264 dirSplitRadiusCmd->SetToBeBroadcasted(false);
265}