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();
104 if(r ==
"" || r ==
"world" || r ==
"World") {
105 r =
"DefaultRegionForTheWorld";
112 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
117 ed <<
"Values of step function are out of range: "
118 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
135 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
136 dRoverRangeMuHad = v1;
137 finalRangeMuHad = v2;
140 ed <<
"Values of step function are out of range: "
141 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
148 return dRoverRangeMuHad;
153 return finalRangeMuHad;
158 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
159 dRoverRangeLIons = v1;
160 finalRangeLIons = v2;
163 ed <<
"Values of step function are out of range: "
164 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
171 return dRoverRangeLIons;
176 return finalRangeLIons;
181 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
182 dRoverRangeIons = v1;
186 ed <<
"Values of step function are out of range: "
187 << v1 <<
", " << v2/CLHEP::mm <<
" mm - are ignored";
194 return dRoverRangeIons;
199 return finalRangeIons;
227 std::size_t nreg = m_regnamesPAI.size();
231 for(std::size_t i=0; i<nreg; ++i) {
232 if(m_regnamesPAI[i] == r) {
233 if (particle ==
"all") {
234 m_particlesPAI[i] = particle;
235 m_typesPAI[i] = type;
237 }
else if(m_particlesPAI[i] == particle || m_particlesPAI[i] ==
"all") {
238 m_typesPAI[i] = type;
244 m_particlesPAI.push_back(particle);
245 m_regnamesPAI.push_back(r);
246 m_typesPAI.push_back(type);
251 return m_particlesPAI;
256 return m_regnamesPAI;
268 std::size_t nreg = m_regnamesPhys.size();
269 for(std::size_t i=0; i<nreg; ++i) {
270 if(r == m_regnamesPhys[i]) {
return; }
272 m_regnamesPhys.push_back(r);
273 m_typesPhys.push_back(type);
278 return m_regnamesPhys;
288 const G4String& r = CheckRegion(region);
289 std::size_t nreg = m_regnamesSubCut.size();
290 for(std::size_t i=0; i<nreg; ++i) {
291 if(r == m_regnamesSubCut[i]) {
295 m_regnamesSubCut.push_back(r);
303 std::size_t n = m_procBiasedXS.size();
304 for(std::size_t i=0; i<n; ++i) {
305 if(procname == m_procBiasedXS[i]) {
306 m_factBiasedXS[i] = val;
307 m_weightBiasedXS[i]= wflag;
311 m_procBiasedXS.push_back(procname);
312 m_factBiasedXS.push_back(val);
313 m_weightBiasedXS.push_back(wflag);
316 ed <<
"Process: " << procname <<
" XS biasing factor "
317 << val <<
" is negative - ignored";
328 const G4String& r = CheckRegion(region);
330 std::size_t n = m_procForced.size();
331 for(std::size_t i=0; i<n; ++i) {
332 if(procname == m_procForced[i] && r == m_regnamesForced[i] ) {
333 m_lengthForced[i] = length;
334 m_weightForced[i] = wflag;
338 m_regnamesForced.push_back(r);
339 m_procForced.push_back(procname);
340 m_lengthForced.push_back(length);
341 m_weightForced.push_back(wflag);
344 ed <<
"Process: " << procname <<
" in region " << r
345 <<
" : forced interacttion length= "
346 << length <<
" is negative - ignored";
357 const G4String& r = CheckRegion(region);
358 if(factor >= 0.0 && energyLim >= 0.0) {
359 std::size_t n = m_procBiasedSec.size();
360 for(std::size_t i=0; i<n; ++i) {
361 if(procname == m_procBiasedSec[i] && r == m_regnamesBiasedSec[i] ) {
362 m_factBiasedSec[i] = factor;
363 m_elimBiasedSec[i] = energyLim;
367 m_regnamesBiasedSec.push_back(r);
368 m_procBiasedSec.push_back(procname);
369 m_factBiasedSec.push_back(factor);
370 m_elimBiasedSec.push_back(energyLim);
373 ed <<
"Process: " << procname <<
" in region " << r
374 <<
" : secondary bised factor= "
375 << factor <<
", Elim= " << energyLim <<
" - ignored";
383 std::size_t n = m_regnamesSubCut.size();
384 for(std::size_t i=0; i<n; ++i) {
388 n = m_procBiasedXS.size();
389 for(std::size_t i=0; i<n; ++i) {
392 m_weightBiasedXS[i]);
396 n = m_procForced.size();
397 for(std::size_t i=0; i<n; ++i) {
405 n = m_procBiasedSec.size();
406 for(std::size_t i=0; i<n; ++i) {
418 std::size_t n = m_procBiasedXS.size();
419 for(std::size_t i=0; i<n; ++i) {
422 m_weightBiasedXS[i]);
426 n = m_procForced.size();
427 for(std::size_t i=0; i<n; ++i) {
435 n = m_procBiasedSec.size();
436 for(std::size_t i=0; i<n; ++i) {
448 return quantumEntanglement;
453 quantumEntanglement = v;
457 return directionalSplitting;
462 directionalSplitting = v;
468 directionalSplittingTarget = v;
473 return directionalSplittingTarget;
478 directionalSplittingRadius = r;
483 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)
const G4String & GetParticleType() const
G4int GetPDGEncoding() const
const G4String & GetParticleName() 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 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)
void ActivateSubCutoff(const G4Region *region)
const G4String & GetProcessName() const