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();
228 for(std::size_t i=0; i<nreg; ++i) {
229 if((m_particlesPAI[i] == particle ||
230 m_particlesPAI[i] ==
"all" ||
231 particle ==
"all") &&
232 (m_regnamesPAI[i] == r ||
233 m_regnamesPAI[i] ==
"DefaultRegionForTheWorld" ||
234 r ==
"DefaultRegionForTheWorld") ) {
236 m_typesPAI[i] = type;
237 if(particle ==
"all") { m_particlesPAI[i] = particle; }
238 if(r ==
"DefaultRegionForTheWorld") { m_regnamesPAI[i] = r; }
242 m_particlesPAI.push_back(particle);
243 m_regnamesPAI.push_back(r);
244 m_typesPAI.push_back(type);
249 return m_particlesPAI;
254 return m_regnamesPAI;
266 std::size_t nreg = m_regnamesPhys.size();
267 for(std::size_t i=0; i<nreg; ++i) {
268 if(r == m_regnamesPhys[i]) {
return; }
270 m_regnamesPhys.push_back(r);
271 m_typesPhys.push_back(type);
276 return m_regnamesPhys;
286 const G4String& r = CheckRegion(region);
287 std::size_t nreg = m_regnamesSubCut.size();
288 for(std::size_t i=0; i<nreg; ++i) {
289 if(r == m_regnamesSubCut[i]) {
293 m_regnamesSubCut.push_back(r);
301 std::size_t n = m_procBiasedXS.size();
302 for(std::size_t i=0; i<n; ++i) {
303 if(procname == m_procBiasedXS[i]) {
304 m_factBiasedXS[i] = val;
305 m_weightBiasedXS[i]= wflag;
309 m_procBiasedXS.push_back(procname);
310 m_factBiasedXS.push_back(val);
311 m_weightBiasedXS.push_back(wflag);
314 ed <<
"Process: " << procname <<
" XS biasing factor "
315 << val <<
" is negative - ignored";
326 const G4String& r = CheckRegion(region);
328 std::size_t n = m_procForced.size();
329 for(std::size_t i=0; i<n; ++i) {
330 if(procname == m_procForced[i] && r == m_regnamesForced[i] ) {
331 m_lengthForced[i] = length;
332 m_weightForced[i] = wflag;
336 m_regnamesForced.push_back(r);
337 m_procForced.push_back(procname);
338 m_lengthForced.push_back(length);
339 m_weightForced.push_back(wflag);
342 ed <<
"Process: " << procname <<
" in region " << r
343 <<
" : forced interacttion length= "
344 << length <<
" is negative - ignored";
355 const G4String& r = CheckRegion(region);
356 if(factor >= 0.0 && energyLim >= 0.0) {
357 std::size_t n = m_procBiasedSec.size();
358 for(std::size_t i=0; i<n; ++i) {
359 if(procname == m_procBiasedSec[i] && r == m_regnamesBiasedSec[i] ) {
360 m_factBiasedSec[i] = factor;
361 m_elimBiasedSec[i] = energyLim;
365 m_regnamesBiasedSec.push_back(r);
366 m_procBiasedSec.push_back(procname);
367 m_factBiasedSec.push_back(factor);
368 m_elimBiasedSec.push_back(energyLim);
371 ed <<
"Process: " << procname <<
" in region " << r
372 <<
" : secondary bised factor= "
373 << factor <<
", Elim= " << energyLim <<
" - ignored";
381 std::size_t n = m_regnamesSubCut.size();
382 for(std::size_t i=0; i<n; ++i) {
386 n = m_procBiasedXS.size();
387 for(std::size_t i=0; i<n; ++i) {
390 m_weightBiasedXS[i]);
394 n = m_procForced.size();
395 for(std::size_t i=0; i<n; ++i) {
403 n = m_procBiasedSec.size();
404 for(std::size_t i=0; i<n; ++i) {
416 std::size_t n = m_procBiasedXS.size();
417 for(std::size_t i=0; i<n; ++i) {
420 m_weightBiasedXS[i]);
424 n = m_procForced.size();
425 for(std::size_t i=0; i<n; ++i) {
433 n = m_procBiasedSec.size();
434 for(std::size_t i=0; i<n; ++i) {
446 return quantumEntanglement;
451 quantumEntanglement = v;
455 return directionalSplitting;
460 directionalSplitting = v;
466 directionalSplittingTarget = v;
471 return directionalSplittingTarget;
476 directionalSplittingRadius = r;
481 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