72 quantumEntanglement =
false;
73 directionalSplitting =
false;
74 directionalSplittingTarget.
set(0.,0.,0.);
75 directionalSplittingRadius = 0.;
78 finalRange = CLHEP::mm;
79 dRoverRangeMuHad = 0.2;
80 finalRangeMuHad = 0.1*CLHEP::mm;
81 dRoverRangeLIons = 0.2;
82 finalRangeLIons = 0.1*CLHEP::mm;
83 dRoverRangeIons = 0.2;
84 finalRangeIons = 0.1*CLHEP::mm;
86 m_regnamesForced.clear();
88 m_lengthForced.clear();
89 m_weightForced.clear();
90 m_regnamesSubCut.clear();
105 if(r ==
"" || r ==
"world" || r ==
"World") {
106 r =
"DefaultRegionForTheWorld";
113 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
118 ed <<
"Values of step function are out of range: "
119 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
136 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
137 dRoverRangeMuHad = v1;
138 finalRangeMuHad = v2;
141 ed <<
"Values of step function are out of range: "
142 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
149 return dRoverRangeMuHad;
154 return finalRangeMuHad;
159 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
160 dRoverRangeLIons = v1;
161 finalRangeLIons = v2;
164 ed <<
"Values of step function are out of range: "
165 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
172 return dRoverRangeLIons;
177 return finalRangeLIons;
182 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
183 dRoverRangeIons = v1;
187 ed <<
"Values of step function are out of range: "
188 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
195 return dRoverRangeIons;
200 return finalRangeIons;
228 G4int nreg = m_regnamesPAI.size();
229 for(
G4int i=0; i<nreg; ++i) {
230 if((m_particlesPAI[i] == particle ||
231 m_particlesPAI[i] ==
"all" ||
232 particle ==
"all") &&
233 (m_regnamesPAI[i] == r ||
234 m_regnamesPAI[i] ==
"DefaultRegionForTheWorld" ||
235 r ==
"DefaultRegionForTheWorld") ) {
237 m_typesPAI[i] = type;
238 if(particle ==
"all") { m_particlesPAI[i] = particle; }
239 if(r ==
"DefaultRegionForTheWorld") { m_regnamesPAI[i] = r; }
243 m_particlesPAI.push_back(particle);
244 m_regnamesPAI.push_back(r);
245 m_typesPAI.push_back(type);
250 return m_particlesPAI;
255 return m_regnamesPAI;
267 G4int nreg = m_regnamesPhys.size();
268 for(
G4int i=0; i<nreg; ++i) {
269 if(r == m_regnamesPhys[i]) {
return; }
271 m_regnamesPhys.push_back(r);
272 m_typesPhys.push_back(type);
277 return m_regnamesPhys;
288 G4int nreg = m_regnamesSubCut.size();
289 for(
G4int i=0; i<nreg; ++i) {
290 if(r == m_regnamesSubCut[i]) {
295 m_regnamesSubCut.push_back(r);
296 m_subCuts.push_back(val);
304 G4int n = m_procBiasedXS.size();
305 for(
G4int i=0; i<n; ++i) {
306 if(procname == m_procBiasedXS[i]) {
307 m_factBiasedXS[i] = val;
308 m_weightBiasedXS[i]= wflag;
312 m_procBiasedXS.push_back(procname);
313 m_factBiasedXS.push_back(val);
314 m_weightBiasedXS.push_back(wflag);
317 ed <<
"Process: " << procname <<
" XS biasing factor "
318 << val <<
" is negative - ignored";
331 G4int n = m_procForced.size();
332 for(
G4int i=0; i<n; ++i) {
333 if(procname == m_procForced[i] && r == m_regnamesForced[i] ) {
334 m_lengthForced[i] = length;
335 m_weightForced[i]= wflag;
339 m_regnamesForced.push_back(r);
340 m_procForced.push_back(procname);
341 m_lengthForced.push_back(length);
342 m_weightForced.push_back(wflag);
345 ed <<
"Process: " << procname <<
" in region " << r
346 <<
" : forced interacttion length= "
347 << length <<
" is negative - ignored";
359 if(factor >= 0.0 && energyLim >= 0.0) {
360 G4int n = m_procBiasedSec.size();
361 for(
G4int i=0; i<n; ++i) {
362 if(procname == m_procBiasedSec[i] && r == m_regnamesBiasedSec[i] ) {
363 m_factBiasedSec[i] = factor;
364 m_elimBiasedSec[i] = energyLim;
368 m_regnamesBiasedSec.push_back(r);
369 m_procBiasedSec.push_back(procname);
370 m_factBiasedSec.push_back(factor);
371 m_elimBiasedSec.push_back(energyLim);
374 ed <<
"Process: " << procname <<
" in region " << r
375 <<
" : secondary bised factor= "
376 << factor <<
", Elim= " << energyLim <<
" - ignored";
384 G4int n = m_regnamesSubCut.size();
385 for(
G4int i=0; i<n; ++i) {
389 n = m_procBiasedXS.size();
390 for(
G4int i=0; i<n; ++i) {
393 m_weightBiasedXS[i]);
397 n = m_procForced.size();
398 for(
G4int i=0; i<n; ++i) {
406 n = m_procBiasedSec.size();
407 for(
G4int i=0; i<n; ++i) {
419 G4int n = m_procBiasedXS.size();
420 for(
G4int i=0; i<n; ++i) {
423 m_weightBiasedXS[i]);
427 n = m_procForced.size();
428 for(
G4int i=0; i<n; ++i) {
436 n = m_procBiasedSec.size();
437 for(
G4int i=0; i<n; ++i) {
449 return quantumEntanglement;
454 quantumEntanglement = v;
458 return directionalSplitting;
463 directionalSplitting = v;
469 directionalSplittingTarget = v;
474 return directionalSplittingTarget;
479 directionalSplittingRadius = r;
484 return directionalSplittingRadius;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
void set(double x, double y, double z)
G4bool IsGeneralIon() const
const G4String & GetParticleType() const
G4int GetPDGEncoding() const
static G4RegionStore * GetInstance()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
void ActivateForcedInteraction(G4double length=0.0, const G4String &r="", G4bool flag=true)
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
void ActivateSubCutoff(G4bool val, const G4Region *region=nullptr)
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
void SetStepFunction(G4double v1, G4double v2)
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
void ActivateForcedInteraction(G4double length, const G4String ®ion, G4bool flag=true)
const G4String & GetProcessName() const