CMS 3D CMS Logo

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::NuclearInteractionFTFSimulator ( unsigned int  distAlgo,
double  distCut,
double  elimit,
double  eth 
)

Constructor.

Definition at line 205 of file NuclearInteractionFTFSimulator.cc.

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),
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();
247  theG4Hadron[11] = G4OmegaMinus::OmegaMinus();
248  theG4Hadron[12] = G4SigmaMinus::SigmaMinus();
249  theG4Hadron[13] = G4SigmaPlus::SigmaPlus();
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 }

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

◆ ~NuclearInteractionFTFSimulator()

NuclearInteractionFTFSimulator::~NuclearInteractionFTFSimulator ( )
override

Default Destructor.

Definition at line 297 of file NuclearInteractionFTFSimulator.cc.

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

References theLund, theStringDecay, theStringModel, and vect.

Member Function Documentation

◆ compute()

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.

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) {
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) {
416  } else {
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) {
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 }

References MaterialEffectsSimulator::_theUpdatedState, corrfactors_el, corrfactors_inel, funct::cos(), curr4Mom, currIdx, currParticle, currTrack, DeadROC_duringRun::dir, distMin, Calorimetry_cff::dp, dummyStep, MillePedeFileConverter_cfg::e, StorageManager_cfg::e1, EcalCondDBWriter_cfi::Energy, RandomEngineAndDistribution::flatShoot(), GeV, index, intLengthElastic, intLengthInelastic, dqmiolumiharvest::j, EgHLTOffHistBins_cfi::mass, npoints, nuclElLength, nuclInelLength, numHadrons, phi, multPhiCorr_741_25nsDY_cfi::px, multPhiCorr_741_25nsDY_cfi::py, MaterialEffectsSimulator::radLengths, mps_fire::result, saveDaughter(), funct::sin(), mathSSE::sqrt(), targetNucleus, theBertiniCascade, theBertiniLimit, theBoost, MaterialEffectsSimulator::theClosestChargedDaughterId, theDiffuseElastic, theDistCut, theEnergyLimit, theG4Hadron, theHadronicModel, theId, theProjectile, vect, and vectProj.

◆ distanceToPrimary()

double NuclearInteractionFTFSimulator::distanceToPrimary ( const RawParticle Particle,
const RawParticle aDaughter 
) const
private

Definition at line 489 of file NuclearInteractionFTFSimulator.cc.

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 }

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

Referenced by saveDaughter().

◆ saveDaughter()

void NuclearInteractionFTFSimulator::saveDaughter ( ParticlePropagator Particle,
const G4LorentzVector &  lv,
int  pdgid 
)
private

Definition at line 471 of file NuclearInteractionFTFSimulator.cc.

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 }

References MaterialEffectsSimulator::_theUpdatedState, HLT_2018_cff::distance, distanceToPrimary(), distMin, fact, charmTagsComputerCvsB_cfi::idx, makeParticle(), EgammaValidation_cff::pdgid, MaterialEffectsSimulator::theClosestChargedDaughterId, and theDistCut.

Referenced by compute().

Member Data Documentation

◆ curr4Mom

G4LorentzVector NuclearInteractionFTFSimulator::curr4Mom
private

Definition at line 75 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

◆ currIdx

int NuclearInteractionFTFSimulator::currIdx
private

Definition at line 88 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ currParticle

const G4ParticleDefinition* NuclearInteractionFTFSimulator::currParticle
private

Definition at line 71 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ currTrack

G4Track* NuclearInteractionFTFSimulator::currTrack
private

Definition at line 70 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ distMin

double NuclearInteractionFTFSimulator::distMin
private

Definition at line 83 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and saveDaughter().

◆ dummyStep

G4Step* NuclearInteractionFTFSimulator::dummyStep
private

Definition at line 69 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ index

size_t NuclearInteractionFTFSimulator::index
private

◆ intLengthElastic

double NuclearInteractionFTFSimulator::intLengthElastic
private

Definition at line 85 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ intLengthInelastic

double NuclearInteractionFTFSimulator::intLengthInelastic
private

Definition at line 86 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ targetNucleus

G4Nucleus NuclearInteractionFTFSimulator::targetNucleus
private

Definition at line 73 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theBertiniCascade

G4CascadeInterface* NuclearInteractionFTFSimulator::theBertiniCascade
private

Definition at line 66 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theBertiniLimit

double NuclearInteractionFTFSimulator::theBertiniLimit
private

Definition at line 79 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

◆ theBoost

G4ThreeVector NuclearInteractionFTFSimulator::theBoost
private

Definition at line 77 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

◆ theCascade

G4GeneratorPrecompoundInterface* NuclearInteractionFTFSimulator::theCascade
private

Definition at line 64 of file NuclearInteractionFTFSimulator.h.

◆ theDiffuseElastic

G4DiffuseElastic* NuclearInteractionFTFSimulator::theDiffuseElastic
private

Definition at line 67 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theDistAlgo

unsigned int NuclearInteractionFTFSimulator::theDistAlgo
private

Definition at line 90 of file NuclearInteractionFTFSimulator.h.

Referenced by distanceToPrimary().

◆ theDistCut

double NuclearInteractionFTFSimulator::theDistCut
private

Definition at line 82 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and saveDaughter().

◆ theEnergyLimit

double NuclearInteractionFTFSimulator::theEnergyLimit
private

Definition at line 80 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theG4Hadron

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

Definition at line 56 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theHadronicModel

G4TheoFSGenerator* NuclearInteractionFTFSimulator::theHadronicModel
private

Definition at line 60 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theId

int NuclearInteractionFTFSimulator::theId = {0}
staticprivate

Definition at line 57 of file NuclearInteractionFTFSimulator.h.

Referenced by compute(), and NuclearInteractionFTFSimulator().

◆ theLund

G4LundStringFragmentation* NuclearInteractionFTFSimulator::theLund
private

◆ theProjectile

G4HadProjectile NuclearInteractionFTFSimulator::theProjectile
private

Definition at line 74 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

◆ theStringDecay

G4ExcitedStringDecay* NuclearInteractionFTFSimulator::theStringDecay
private

◆ theStringModel

G4FTFModel* NuclearInteractionFTFSimulator::theStringModel
private

◆ vect

G4PhysicsLogVector* NuclearInteractionFTFSimulator::vect
private

◆ vectProj

G4ThreeVector NuclearInteractionFTFSimulator::vectProj
private

Definition at line 76 of file NuclearInteractionFTFSimulator.h.

Referenced by compute().

NuclearInteractionFTFSimulator::theProjectile
G4HadProjectile theProjectile
Definition: NuclearInteractionFTFSimulator.h:74
npoints
static const int npoints
Definition: NuclearInteractionFTFSimulator.h:38
NuclearInteractionFTFSimulator::theEnergyLimit
double theEnergyLimit
Definition: NuclearInteractionFTFSimulator.h:80
bJpsiMuMuTrigSettings_cff.decays
decays
Definition: bJpsiMuMuTrigSettings_cff.py:15
mps_fire.i
i
Definition: mps_fire.py:355
NuclearInteractionFTFSimulator::vect
G4PhysicsLogVector * vect
Definition: NuclearInteractionFTFSimulator.h:58
EcalCondDBWriter_cfi.Energy
Energy
Definition: EcalCondDBWriter_cfi.py:152
makeParticle
RawParticle makeParticle(HepPDT::ParticleDataTable const *, int id, const math::XYZTLorentzVector &p)
Definition: makeParticle.cc:28
numHadrons
static const int numHadrons
Definition: NuclearInteractionFTFSimulator.h:37
multPhiCorr_741_25nsDY_cfi.py
py
Definition: multPhiCorr_741_25nsDY_cfi.py:12
MaterialEffectsSimulator::_theUpdatedState
std::vector< RawParticle > _theUpdatedState
Definition: MaterialEffectsSimulator.h:82
nuclInelLength
const double nuclInelLength[numHadrons]
Definition: NuclearInteractionFTFSimulator.cc:196
HLT_2018_cff.distance
distance
Definition: HLT_2018_cff.py:6417
NuclearInteractionFTFSimulator::targetNucleus
G4Nucleus targetNucleus
Definition: NuclearInteractionFTFSimulator.h:73
charmTagsComputerCvsB_cfi.idx
idx
Definition: charmTagsComputerCvsB_cfi.py:108
MeV
const double MeV
corrfactors_inel
const double corrfactors_inel[numHadrons][npoints]
Definition: NuclearInteractionFTFSimulator.cc:77
XYZTLorentzVector
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25
MaterialEffectsSimulator::theClosestChargedDaughterId
int theClosestChargedDaughterId
Definition: MaterialEffectsSimulator.h:94
NuclearInteractionFTFSimulator::theBoost
G4ThreeVector theBoost
Definition: NuclearInteractionFTFSimulator.h:77
RawParticle::charge
double charge() const
get the MEASURED charge
Definition: RawParticle.h:294
NuclearInteractionFTFSimulator::dummyStep
G4Step * dummyStep
Definition: NuclearInteractionFTFSimulator.h:69
BPhysicsValidation_cfi.Lambda
Lambda
Definition: BPhysicsValidation_cfi.py:63
NuclearInteractionFTFSimulator::theStringDecay
G4ExcitedStringDecay * theStringDecay
Definition: NuclearInteractionFTFSimulator.h:62
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
NuclearInteractionFTFSimulator::distanceToPrimary
double distanceToPrimary(const RawParticle &Particle, const RawParticle &aDaughter) const
Definition: NuclearInteractionFTFSimulator.cc:489
NuclearInteractionFTFSimulator::theBertiniCascade
G4CascadeInterface * theBertiniCascade
Definition: NuclearInteractionFTFSimulator.h:66
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
phase2TrackerDigitizer_cfi.SigmaZero
SigmaZero
Definition: phase2TrackerDigitizer_cfi.py:46
Calorimetry_cff.dp
dp
Definition: Calorimetry_cff.py:157
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
NuclearInteractionFTFSimulator::theG4Hadron
static const G4ParticleDefinition * theG4Hadron[numHadrons]
Definition: NuclearInteractionFTFSimulator.h:56
NuclearInteractionFTFSimulator::theDistAlgo
unsigned int theDistAlgo
Definition: NuclearInteractionFTFSimulator.h:90
RawParticle::Vect
XYZVector Vect() const
the momentum threevector
Definition: RawParticle.h:323
corrfactors_el
const double corrfactors_el[numHadrons][npoints]
Definition: NuclearInteractionFTFSimulator.cc:137
NuclearInteractionFTFSimulator::currIdx
int currIdx
Definition: NuclearInteractionFTFSimulator.h:88
MaterialEffectsSimulator::radLengths
double radLengths
Definition: MaterialEffectsSimulator.h:84
GeV
const double GeV
Definition: MathUtil.h:16
StorageManager_cfg.e1
e1
Definition: StorageManager_cfg.py:16
fact
const double fact
Definition: NuclearInteractionFTFSimulator.cc:74
NuclearInteractionFTFSimulator::theDiffuseElastic
G4DiffuseElastic * theDiffuseElastic
Definition: NuclearInteractionFTFSimulator.h:67
initializeOnce
static std::once_flag initializeOnce
Definition: NuclearInteractionFTFSimulator.cc:70
NuclearInteractionFTFSimulator::intLengthElastic
double intLengthElastic
Definition: NuclearInteractionFTFSimulator.h:85
NuclearInteractionFTFSimulator::theBertiniLimit
double theBertiniLimit
Definition: NuclearInteractionFTFSimulator.h:79
NuclearInteractionFTFSimulator::theStringModel
G4FTFModel * theStringModel
Definition: NuclearInteractionFTFSimulator.h:61
NuclearInteractionFTFSimulator::currTrack
G4Track * currTrack
Definition: NuclearInteractionFTFSimulator.h:70
NuclearInteractionFTFSimulator::theId
static int theId[numHadrons]
Definition: NuclearInteractionFTFSimulator.h:57
NuclearInteractionFTFSimulator::index
size_t index
Definition: NuclearInteractionFTFSimulator.h:89
NuclearInteractionFTFSimulator::distMin
double distMin
Definition: NuclearInteractionFTFSimulator.h:83
nuclElLength
const double nuclElLength[numHadrons]
Definition: NuclearInteractionFTFSimulator.cc:201
DDAxes::phi
NuclearInteractionFTFSimulator::vectProj
G4ThreeVector vectProj
Definition: NuclearInteractionFTFSimulator.h:76
multPhiCorr_741_25nsDY_cfi.px
px
Definition: multPhiCorr_741_25nsDY_cfi.py:10
NuclearInteractionFTFSimulator::currParticle
const G4ParticleDefinition * currParticle
Definition: NuclearInteractionFTFSimulator.h:71
NuclearInteractionFTFSimulator::theHadronicModel
G4TheoFSGenerator * theHadronicModel
Definition: NuclearInteractionFTFSimulator.h:60
NuclearInteractionFTFSimulator::theLund
G4LundStringFragmentation * theLund
Definition: NuclearInteractionFTFSimulator.h:63
MaterialEffects_cfi.distCut
distCut
Definition: MaterialEffects_cfi.py:128
EgHLTOffHistBins_cfi.mass
mass
Definition: EgHLTOffHistBins_cfi.py:34
Particle
Definition: Particle.py:1
mps_fire.result
result
Definition: mps_fire.py:303
MaterialEffects_cfi.distAlgo
distAlgo
Definition: MaterialEffects_cfi.py:127
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
EgammaValidation_cff.pdgid
pdgid
Definition: EgammaValidation_cff.py:30
CMSDummyDeexcitation
Definition: CMSDummyDeexcitation.h:20
NuclearInteractionFTFSimulator::saveDaughter
void saveDaughter(ParticlePropagator &Particle, const G4LorentzVector &lv, int pdgid)
Definition: NuclearInteractionFTFSimulator.cc:471
NuclearInteractionFTFSimulator::theDistCut
double theDistCut
Definition: NuclearInteractionFTFSimulator.h:82
NuclearInteractionFTFSimulator::intLengthInelastic
double intLengthInelastic
Definition: NuclearInteractionFTFSimulator.h:86
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23
NuclearInteractionFTFSimulator::curr4Mom
G4LorentzVector curr4Mom
Definition: NuclearInteractionFTFSimulator.h:75
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37