CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
NuclearInteractionFTFSimulator Class Reference

#include <NuclearInteractionFTFSimulator.h>

Inheritance diagram for NuclearInteractionFTFSimulator:
MaterialEffectsSimulator

Public Member Functions

 NuclearInteractionFTFSimulator (unsigned int distAlgo, double distCut, double elimit, double eth)
 Constructor. More...
 
 ~NuclearInteractionFTFSimulator () override
 Default Destructor. More...
 
- Public Member Functions inherited from MaterialEffectsSimulator
RHEP_const_iter beginDaughters () const
 Returns const iterator to the beginning of the daughters list. More...
 
int closestDaughterId ()
 The id of the closest charged daughter (filled for nuclear interactions only) More...
 
double eMass () const
 Electron mass in GeV/c2. More...
 
RHEP_const_iter endDaughters () const
 Returns const iterator to the end of the daughters list. More...
 
double excitE () const
 Mean excitation energy (in GeV) More...
 
 MaterialEffectsSimulator (double A=28.0855, double Z=14.0000, double density=2.329, double radLen=9.360)
 
unsigned nDaughters () const
 Returns the number of daughters. More...
 
XYZVector orthogonal (const XYZVector &) const
 A vector orthogonal to another one (because it's not in XYZTLorentzVector) More...
 
double radLenIncm () const
 One radiation length in cm. More...
 
double rho () const
 Density in g/cm3. More...
 
virtual void save ()
 Used by NuclearInteractionSimulator to save last sampled event. More...
 
void setNormalVector (const GlobalVector &normal)
 Sets the vector normal to the surface traversed. More...
 
double theA () const
 A. More...
 
double theZ () const
 Z. More...
 
void updateState (ParticlePropagator &myTrack, double radlen, RandomEngineAndDistribution const *)
 Compute the material effect (calls the sub class) More...
 
virtual ~MaterialEffectsSimulator ()
 

Private Member Functions

void compute (ParticlePropagator &Particle, RandomEngineAndDistribution const *) override
 Generate a nuclear interaction according to the probability that it happens. More...
 
double distanceToPrimary (const RawParticle &Particle, const RawParticle &aDaughter) const
 
void saveDaughter (ParticlePropagator &Particle, const G4LorentzVector &lv, int pdgid)
 

Private Attributes

G4LorentzVector curr4Mom
 
int currIdx
 
const G4ParticleDefinition * currParticle
 
G4Track * currTrack
 
double distMin
 
G4Step * dummyStep
 
size_t index
 
double intLengthElastic
 
double intLengthInelastic
 
G4Nucleus targetNucleus
 
G4CascadeInterface * theBertiniCascade
 
double theBertiniLimit
 
G4ThreeVector theBoost
 
G4GeneratorPrecompoundInterface * theCascade
 
G4DiffuseElastic * theDiffuseElastic
 
unsigned int theDistAlgo
 
double theDistCut
 
double theEnergyLimit
 
G4TheoFSGenerator * theHadronicModel
 
G4LundStringFragmentation * theLund
 
G4HadProjectile theProjectile
 
G4ExcitedStringDecay * theStringDecay
 
G4FTFModel * theStringModel
 
G4PhysicsLogVector * vect
 
G4ThreeVector vectProj
 

Static Private Attributes

static const G4ParticleDefinition * theG4Hadron [numHadrons] = {nullptr}
 
static int theId [numHadrons] = {0}
 

Additional Inherited Members

- Public Types inherited from MaterialEffectsSimulator
typedef std::vector
< RawParticle >
::const_iterator 
RHEP_const_iter
 
- Protected Attributes inherited from MaterialEffectsSimulator
std::vector< RawParticle_theUpdatedState
 
double A
 
double density
 
double radLen
 
double radLengths
 
int theClosestChargedDaughterId
 
GlobalVector theNormalVector
 
double Z
 

Detailed Description

Definition at line 40 of file NuclearInteractionFTFSimulator.h.

Constructor & Destructor Documentation

NuclearInteractionFTFSimulator::NuclearInteractionFTFSimulator ( unsigned int  distAlgo,
double  distCut,
double  elimit,
double  eth 
)

Constructor.

Definition at line 205 of file NuclearInteractionFTFSimulator.cc.

References currIdx, currParticle, currTrack, dummyStep, mps_fire::i, index, initializeOnce, intLengthElastic, intLengthInelastic, MeV, npoints, numHadrons, targetNucleus, theBertiniCascade, theDiffuseElastic, theEnergyLimit, theG4Hadron, theHadronicModel, theId, theLund, theStringDecay, theStringModel, and vect.

209  : curr4Mom(0., 0., 0., 0.),
210  vectProj(0., 0., 1.),
211  theBoost(0., 0., 0.),
212  theBertiniLimit(elimit),
213  theEnergyLimit(eth),
215  distMin(1E99),
216  theDistAlgo(distAlgo) {
217  // FTF model
218  theHadronicModel = new G4TheoFSGenerator("FTF");
219  theStringModel = new G4FTFModel();
220  G4GeneratorPrecompoundInterface* cascade = new G4GeneratorPrecompoundInterface(new CMSDummyDeexcitation());
221  theLund = new G4LundStringFragmentation();
222  theStringDecay = new G4ExcitedStringDecay(theLund);
223  theStringModel->SetFragmentationModel(theStringDecay);
224 
225  theHadronicModel->SetTransport(cascade);
226  theHadronicModel->SetHighEnergyGenerator(theStringModel);
227  theHadronicModel->SetMinEnergy(theEnergyLimit);
228 
229  // Bertini Cascade
230  theBertiniCascade = new G4CascadeInterface();
231 
232  theDiffuseElastic = new G4DiffuseElastic();
233 
234  // Geant4 particles and cross sections
235  std::call_once(initializeOnce, []() {
236  theG4Hadron[0] = G4Proton::Proton();
237  theG4Hadron[1] = G4Neutron::Neutron();
238  theG4Hadron[2] = G4PionPlus::PionPlus();
239  theG4Hadron[3] = G4PionMinus::PionMinus();
240  theG4Hadron[4] = G4KaonPlus::KaonPlus();
241  theG4Hadron[5] = G4KaonMinus::KaonMinus();
242  theG4Hadron[6] = G4KaonZeroLong::KaonZeroLong();
243  theG4Hadron[7] = G4KaonZeroShort::KaonZeroShort();
244  theG4Hadron[8] = G4KaonZero::KaonZero();
245  theG4Hadron[9] = G4AntiKaonZero::AntiKaonZero();
246  theG4Hadron[10] = G4Lambda::Lambda();
247  theG4Hadron[11] = G4OmegaMinus::OmegaMinus();
248  theG4Hadron[12] = G4SigmaMinus::SigmaMinus();
249  theG4Hadron[13] = G4SigmaPlus::SigmaPlus();
250  theG4Hadron[14] = G4SigmaZero::SigmaZero();
251  theG4Hadron[15] = G4XiMinus::XiMinus();
252  theG4Hadron[16] = G4XiZero::XiZero();
253  theG4Hadron[17] = G4AntiProton::AntiProton();
254  theG4Hadron[18] = G4AntiNeutron::AntiNeutron();
255  theG4Hadron[19] = G4AntiLambda::AntiLambda();
256  theG4Hadron[20] = G4AntiOmegaMinus::AntiOmegaMinus();
257  theG4Hadron[21] = G4AntiSigmaMinus::AntiSigmaMinus();
258  theG4Hadron[22] = G4AntiSigmaPlus::AntiSigmaPlus();
259  theG4Hadron[23] = G4AntiSigmaZero::AntiSigmaZero();
260  theG4Hadron[24] = G4AntiXiMinus::AntiXiMinus();
261  theG4Hadron[25] = G4AntiXiZero::AntiXiZero();
262  theG4Hadron[26] = G4AntiAlpha::AntiAlpha();
263  theG4Hadron[27] = G4AntiDeuteron::AntiDeuteron();
264  theG4Hadron[28] = G4AntiTriton::AntiTriton();
265  theG4Hadron[29] = G4AntiHe3::AntiHe3();
266 
267  // other Geant4 particles
268  G4ParticleDefinition* ion = G4GenericIon::GenericIon();
269  ion->SetProcessManager(new G4ProcessManager(ion));
270  G4DecayPhysics decays;
271  decays.ConstructParticle();
272  G4ParticleTable* partTable = G4ParticleTable::GetParticleTable();
273  partTable->SetVerboseLevel(0);
274  partTable->SetReadiness();
275 
276  for (int i = 0; i < numHadrons; ++i) {
277  theId[i] = theG4Hadron[i]->GetPDGEncoding();
278  }
279  });
280 
281  // local objects
282  vect = new G4PhysicsLogVector(npoints - 1, 100 * MeV, TeV);
284  currIdx = 0;
285  index = 0;
286  currTrack = nullptr;
288 
289  // fill projectile particle definitions
290  dummyStep = new G4Step();
291  dummyStep->SetPreStepPoint(new G4StepPoint());
292 
293  // target is always Silicon
294  targetNucleus.SetParameters(28, 14);
295 }
const double MeV
static std::once_flag initializeOnce
static const int npoints
static const int numHadrons
const G4ParticleDefinition * currParticle
static const G4ParticleDefinition * theG4Hadron[numHadrons]
NuclearInteractionFTFSimulator::~NuclearInteractionFTFSimulator ( )
override

Default Destructor.

Definition at line 297 of file NuclearInteractionFTFSimulator.cc.

References theLund, theStringDecay, theStringModel, and vect.

297  {
298  delete theStringDecay;
299  delete theStringModel;
300  delete theLund;
301  delete vect;
302 }

Member Function Documentation

void NuclearInteractionFTFSimulator::compute ( ParticlePropagator Particle,
RandomEngineAndDistribution const *  random 
)
overrideprivatevirtual

Generate a nuclear interaction according to the probability that it happens.

Implements MaterialEffectsSimulator.

Definition at line 304 of file NuclearInteractionFTFSimulator.cc.

References MaterialEffectsSimulator::_theUpdatedState, corrfactors_el, corrfactors_inel, funct::cos(), curr4Mom, currIdx, currParticle, currTrack, DeadROC_duringRun::dir, distMin, dummyStep, alignCSCRings::e, RandomEngineAndDistribution::flatShoot(), GeV, index, intLengthElastic, intLengthInelastic, dqmiolumiharvest::j, ResonanceBuilder::mass, RawParticle::momentum(), npoints, nuclElLength, nuclInelLength, numHadrons, BaseParticlePropagator::particle(), phi, RawParticle::pid(), MaterialEffectsSimulator::radLengths, mps_fire::result, saveDaughter(), RawParticle::setMomentum(), funct::sin(), mathSSE::sqrt(), targetNucleus, theBertiniCascade, theBertiniLimit, theBoost, MaterialEffectsSimulator::theClosestChargedDaughterId, theDiffuseElastic, theDistCut, theEnergyLimit, theG4Hadron, theHadronicModel, theId, theProjectile, vect, and vectProj.

304  {
305  //std::cout << "#### Primary " << Particle.particle().pid() << " E(GeV)= "
306  // << Particle.particle().momentum().e() << std::endl;
307 
308  int thePid = Particle.particle().pid();
309  if (thePid != theId[currIdx]) {
310  currParticle = nullptr;
311  currIdx = 0;
312  for (; currIdx < numHadrons; ++currIdx) {
313  if (theId[currIdx] == thePid) {
315  // neutral kaons
316  if (7 == currIdx || 8 == currIdx) {
318  if (random->flatShoot() > 0.5) {
320  }
321  }
322  break;
323  }
324  }
325  }
326  if (!currParticle) {
327  return;
328  }
329 
330  // fill projectile for Geant4
331  double mass = currParticle->GetPDGMass();
332  double ekin = CLHEP::GeV * Particle.particle().momentum().e() - mass;
333 
334  // check interaction length
337  if (0.0 == intLengthInelastic) {
338  return;
339  }
340 
341  // apply corrections
342  if (ekin <= vect->Energy(0)) {
345  } else if (ekin < vect->Energy(npoints - 1)) {
346  index = vect->FindBin(ekin, index);
347  double e1 = vect->Energy(index);
348  double e2 = vect->Energy(index + 1);
350  ((corrfactors_el[currIdx][index] * (e2 - ekin) + corrfactors_el[currIdx][index + 1] * (ekin - e1)) / (e2 - e1));
352  ((corrfactors_inel[currIdx][index] * (e2 - ekin) + corrfactors_inel[currIdx][index + 1] * (ekin - e1)) /
353  (e2 - e1));
354  }
355  /*
356  std::cout << " Primary " << currParticle->GetParticleName()
357  << " E(GeV)= " << e*fact << std::endl;
358  */
359 
360  double currInteractionLength =
361  -G4Log(random->flatShoot()) * intLengthElastic * intLengthInelastic / (intLengthElastic + intLengthInelastic);
362  /*
363  std::cout << "*NuclearInteractionFTFSimulator::compute: R(X0)= " << radLengths
364  << " Rnuc(X0)= " << theNuclIntLength[currIdx] << " IntLength(X0)= "
365  << currInteractionLength << std::endl;
366  */
367  // Check position of nuclear interaction
368  if (currInteractionLength > radLengths) {
369  return;
370  }
371 
372  // fill projectile for Geant4
373  double px = Particle.particle().momentum().px();
374  double py = Particle.particle().momentum().py();
375  double pz = Particle.particle().momentum().pz();
376  double ptot = sqrt(px * px + py * py + pz * pz);
377  double norm = 1. / ptot;
378  G4ThreeVector dir(px * norm, py * norm, pz * norm);
379  /*
380  std::cout << " Primary " << currParticle->GetParticleName()
381  << " E(GeV)= " << e*fact << " P(GeV/c)= ("
382  << px << " " << py << " " << pz << ")" << std::endl;
383  */
384 
385  G4DynamicParticle* dynParticle = new G4DynamicParticle(theG4Hadron[currIdx], dir, ekin);
386  currTrack = new G4Track(dynParticle, 0.0, vectProj);
387  currTrack->SetStep(dummyStep);
388 
389  theProjectile.Initialise(*currTrack);
390  delete currTrack;
391 
392  G4HadFinalState* result;
393 
394  // elastic interaction
395  if (random->flatShoot() * (intLengthElastic + intLengthInelastic) > intLengthElastic) {
396  result = theDiffuseElastic->ApplyYourself(theProjectile, targetNucleus);
397  G4ThreeVector dirnew = result->GetMomentumChange().unit();
398  double cost = (dir * dirnew);
399  double sint = std::sqrt((1. - cost) * (1. + cost));
400 
401  curr4Mom.set(ptot * dirnew.x(), ptot * dirnew.y(), ptot * dirnew.z(), Particle.particle().momentum().e());
402 
403  // Always create a daughter if the kink is large engough
404  if (sint > theDistCut) {
405  saveDaughter(Particle, curr4Mom, thePid);
406  } else {
407  Particle.particle().setMomentum(curr4Mom.px(), curr4Mom.py(), curr4Mom.pz(), curr4Mom.e());
408  }
409 
410  // inelastic interaction
411  } else {
412  // Bertini cascade for low-energy hadrons (except light anti-nuclei)
413  // FTFP is applied above energy limit and for all anti-hyperons and anti-ions
414  if (ekin <= theBertiniLimit && currIdx < 17) {
415  result = theBertiniCascade->ApplyYourself(theProjectile, targetNucleus);
416  } else {
417  result = theHadronicModel->ApplyYourself(theProjectile, targetNucleus);
418  }
419  if (result) {
420  int nsec = result->GetNumberOfSecondaries();
421  if (0 < nsec) {
422  result->SetTrafoToLab(theProjectile.GetTrafoToLab());
423  _theUpdatedState.clear();
424 
425  //std::cout << " " << nsec << " secondaries" << std::endl;
426  // Generate angle
427  double phi = random->flatShoot() * CLHEP::twopi;
429  distMin = 1e99;
430 
431  // rotate and store secondaries
432  for (int j = 0; j < nsec; ++j) {
433  const G4DynamicParticle* dp = result->GetSecondary(j)->GetParticle();
434  int thePid = dp->GetParticleDefinition()->GetPDGEncoding();
435 
436  // rotate around primary direction
437  curr4Mom = dp->Get4Momentum();
438  curr4Mom.rotate(phi, vectProj);
439  curr4Mom *= result->GetTrafoToLab();
440  /*
441  std::cout << j << ". " << dp->GetParticleDefinition()->GetParticleName()
442  << " " << thePid
443  << " " << curr4Mom*fact << std::endl;
444  */
445  // prompt 2-gamma decay for pi0, eta, eta'p
446  if (111 == thePid || 221 == thePid || 331 == thePid) {
447  theBoost = curr4Mom.boostVector();
448  double e = 0.5 * dp->GetParticleDefinition()->GetPDGMass();
449  double fi = random->flatShoot() * CLHEP::twopi;
450  double cth = 2 * random->flatShoot() - 1.0;
451  double sth = sqrt((1.0 - cth) * (1.0 + cth));
452  G4LorentzVector lv(e * sth * cos(fi), e * sth * sin(fi), e * cth, e);
453  lv.boost(theBoost);
454  saveDaughter(Particle, lv, 22);
455  curr4Mom -= lv;
456  if (curr4Mom.e() > theEnergyLimit) {
457  saveDaughter(Particle, curr4Mom, 22);
458  }
459  } else {
460  if (curr4Mom.e() > theEnergyLimit + dp->GetParticleDefinition()->GetPDGMass()) {
461  saveDaughter(Particle, curr4Mom, thePid);
462  }
463  }
464  }
465  result->Clear();
466  }
467  }
468  }
469 }
void setMomentum(const XYZTLorentzVector &vtx)
set the momentum
Definition: RawParticle.h:328
const double nuclInelLength[numHadrons]
const double GeV
Definition: MathUtil.h:16
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
int pid() const
get the HEP particle ID number
Definition: RawParticle.h:277
RawParticle const & particle() const
The particle being propagated.
const double corrfactors_inel[numHadrons][npoints]
tuple result
Definition: mps_fire.py:311
const XYZTLorentzVector & momentum() const
the momentum fourvector
Definition: RawParticle.h:321
void saveDaughter(ParticlePropagator &Particle, const G4LorentzVector &lv, int pdgid)
T sqrt(T t)
Definition: SSEVec.h:19
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
const double nuclElLength[numHadrons]
static const int npoints
static const int numHadrons
const double corrfactors_el[numHadrons][npoints]
const G4ParticleDefinition * currParticle
static const G4ParticleDefinition * theG4Hadron[numHadrons]
std::vector< RawParticle > _theUpdatedState
double NuclearInteractionFTFSimulator::distanceToPrimary ( const RawParticle Particle,
const RawParticle aDaughter 
) const
private

Definition at line 489 of file NuclearInteractionFTFSimulator.cc.

References RawParticle::charge(), HLT_FULL_cff::distance, theDistAlgo, and RawParticle::Vect().

Referenced by saveDaughter().

490  {
491  double distance = 2E99;
492  // Compute the distance only for charged primaries
493  if (fabs(Particle.charge()) > 1E-6) {
494  // The secondary must have the same charge
495  double chargeDiff = fabs(aDaughter.charge() - Particle.charge());
496  if (fabs(chargeDiff) < 1E-6) {
497  // Here are two distance definitions * to be tuned *
498  switch (theDistAlgo) {
499  case 1:
500  // sin(theta12)
501  distance = (aDaughter.Vect().Unit().Cross(Particle.Vect().Unit())).R();
502  break;
503 
504  case 2:
505  // sin(theta12) * p1/p2
506  distance = (aDaughter.Vect().Cross(Particle.Vect())).R() / aDaughter.Vect().Mag2();
507  break;
508 
509  default:
510  // Should not happen
511  break;
512  }
513  }
514  }
515  return distance;
516 }
XYZVector Vect() const
the momentum threevector
Definition: RawParticle.h:323
double charge() const
get the MEASURED charge
Definition: RawParticle.h:294
void NuclearInteractionFTFSimulator::saveDaughter ( ParticlePropagator Particle,
const G4LorentzVector &  lv,
int  pdgid 
)
private

Definition at line 471 of file NuclearInteractionFTFSimulator.cc.

References MaterialEffectsSimulator::_theUpdatedState, HLT_FULL_cff::distance, distanceToPrimary(), distMin, fact, makeParticle(), BaseParticlePropagator::particle(), ParticlePropagator::particleDataTable(), MaterialEffectsSimulator::theClosestChargedDaughterId, theDistCut, and RawParticle::vertex().

Referenced by compute().

471  {
472  unsigned int idx = _theUpdatedState.size();
473  _theUpdatedState.emplace_back(
474  makeParticle(Particle.particleDataTable(),
475  pdgid,
476  XYZTLorentzVector{lv.px() * fact, lv.py() * fact, lv.pz() * fact, lv.e() * fact},
477  Particle.particle().vertex()));
478 
479  // Store the closest daughter index (for later tracking purposes, so charged particles only)
480  double distance = distanceToPrimary(Particle.particle(), _theUpdatedState[idx]);
481  // Find the closest daughter, if closer than a given upper limit.
482  if (distance < distMin && distance < theDistCut) {
483  distMin = distance;
485  }
486  // std::cout << _theUpdatedState[idx] << std::endl;
487 }
const HepPDT::ParticleDataTable * particleDataTable() const
RawParticle const & particle() const
The particle being propagated.
RawParticle makeParticle(HepPDT::ParticleDataTable const *, int id, const math::XYZTLorentzVector &p)
Definition: makeParticle.cc:28
double distanceToPrimary(const RawParticle &Particle, const RawParticle &aDaughter) const
const XYZTLorentzVector & vertex() const
the vertex fourvector
Definition: RawParticle.h:320
const double fact
std::vector< RawParticle > _theUpdatedState
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25

Member Data Documentation

G4LorentzVector NuclearInteractionFTFSimulator::curr4Mom
private

Definition at line 75 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

int NuclearInteractionFTFSimulator::currIdx
private

Definition at line 88 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

const G4ParticleDefinition* NuclearInteractionFTFSimulator::currParticle
private

Definition at line 71 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

G4Track* NuclearInteractionFTFSimulator::currTrack
private

Definition at line 70 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

double NuclearInteractionFTFSimulator::distMin
private

Definition at line 83 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and saveDaughter().

G4Step* NuclearInteractionFTFSimulator::dummyStep
private

Definition at line 69 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

size_t NuclearInteractionFTFSimulator::index
private
double NuclearInteractionFTFSimulator::intLengthElastic
private

Definition at line 85 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

double NuclearInteractionFTFSimulator::intLengthInelastic
private

Definition at line 86 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

G4Nucleus NuclearInteractionFTFSimulator::targetNucleus
private

Definition at line 73 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

G4CascadeInterface* NuclearInteractionFTFSimulator::theBertiniCascade
private

Definition at line 66 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

double NuclearInteractionFTFSimulator::theBertiniLimit
private

Definition at line 79 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

G4ThreeVector NuclearInteractionFTFSimulator::theBoost
private

Definition at line 77 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

G4GeneratorPrecompoundInterface* NuclearInteractionFTFSimulator::theCascade
private

Definition at line 64 of file NuclearInteractionFTFSimulator.h.

G4DiffuseElastic* NuclearInteractionFTFSimulator::theDiffuseElastic
private

Definition at line 67 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

unsigned int NuclearInteractionFTFSimulator::theDistAlgo
private

Definition at line 90 of file NuclearInteractionFTFSimulator.h.

Referenced by distanceToPrimary().

double NuclearInteractionFTFSimulator::theDistCut
private

Definition at line 82 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and saveDaughter().

double NuclearInteractionFTFSimulator::theEnergyLimit
private

Definition at line 80 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

const G4ParticleDefinition * NuclearInteractionFTFSimulator::theG4Hadron = {nullptr}
staticprivate

Definition at line 56 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

G4TheoFSGenerator* NuclearInteractionFTFSimulator::theHadronicModel
private

Definition at line 60 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

int NuclearInteractionFTFSimulator::theId = {0}
staticprivate

Definition at line 57 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

G4LundStringFragmentation* NuclearInteractionFTFSimulator::theLund
private
G4HadProjectile NuclearInteractionFTFSimulator::theProjectile
private

Definition at line 74 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

G4ExcitedStringDecay* NuclearInteractionFTFSimulator::theStringDecay
private
G4FTFModel* NuclearInteractionFTFSimulator::theStringModel
private
G4PhysicsLogVector* NuclearInteractionFTFSimulator::vect
private
G4ThreeVector NuclearInteractionFTFSimulator::vectProj
private

Definition at line 76 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().