Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4INCL::INCL Class Reference

#include <G4INCLCascade.hh>

Public Member Functions

 INCL (Config const *const config)
 
 ~INCL ()
 
 INCL (const INCL &rhs)
 Dummy copy constructor to silence Coverity warning. More...
 
INCLoperator= (const INCL &rhs)
 Dummy assignment operator to silence Coverity warning. More...
 
G4bool prepareReaction (const ParticleSpecies &projectileSpecies, const G4double kineticEnergy, const G4int A, const G4int Z)
 
G4bool initializeTarget (const G4int A, const G4int Z)
 
const EventInfoprocessEvent ()
 
const EventInfoprocessEvent (ParticleSpecies const &projectileSpecies, const G4double kineticEnergy, const G4int targetA, const G4int targetZ)
 
void finalizeGlobalInfo (Random::SeedVector const &initialSeeds)
 
const GlobalInfogetGlobalInfo () const
 

Detailed Description

Definition at line 52 of file G4INCLCascade.hh.

Constructor & Destructor Documentation

G4INCL::INCL::INCL ( Config const *const  config)

Definition at line 78 of file G4INCLCascade.cc.

79  :propagationModel(0), theA(208), theZ(82),
80  targetInitSuccess(false),
81  maxImpactParameter(0.),
82  maxUniverseRadius(0.),
83  maxInteractionDistance(0.),
84  fixedImpactParameter(0.),
85  theConfig(config),
86  nucleus(NULL),
87  forceTransparent(false),
88  minRemnantSize(4)
89  {
90  // Set the logger object.
91 #ifdef INCLXX_IN_GEANT4_MODE
93 #else // INCLXX_IN_GEANT4_MODE
94  Logger::initialize(theConfig);
95 #endif // INCLXX_IN_GEANT4_MODE
96 
97  // Set the random number generator algorithm. The system can support
98  // multiple different generator algorithms in a completely
99  // transparent way.
100  Random::initialize(theConfig);
101 
102  // Select the Pauli and CDPP blocking algorithms
103  Pauli::initialize(theConfig);
104 
105  // Set the cross-section set
106  CrossSections::initialize(theConfig);
107 
108  // Set the phase-space generator
110 
111  // Select the Coulomb-distortion algorithm:
113 
114  // Select the clustering algorithm:
115  Clustering::initialize(theConfig);
116 
117  // Initialize the INCL particle table:
118  ParticleTable::initialize(theConfig);
119 
120  // Initialize the value of cutNN in BinaryCollisionAvatar
122 
123  // Propagation model is responsible for finding avatars and
124  // transporting the particles. In principle this step is "hidden"
125  // behind an abstract interface and the rest of the system does not
126  // care how the transportation and avatar finding is done. This
127  // should allow us to "easily" experiment with different avatar
128  // finding schemes and even to support things like curved
129  // trajectories in the future.
130  propagationModel = new StandardPropagationModel(theConfig->getLocalEnergyBBType(),theConfig->getLocalEnergyPiType(),theConfig->getHadronizationTime());
131  if(theConfig->getCascadeActionType() == AvatarDumpActionType)
132  cascadeAction = new AvatarDumpAction();
133  else
134  cascadeAction = new CascadeAction();
135  cascadeAction->beforeRunAction(theConfig);
136 
137  theGlobalInfo.cascadeModel = theConfig->getVersionString();
138  theGlobalInfo.deexcitationModel = theConfig->getDeExcitationString();
139 #ifdef INCL_ROOT_USE
140  theGlobalInfo.rootSelection = theConfig->getROOTSelectionString();
141 #endif
142 
143 #ifndef INCLXX_IN_GEANT4_MODE
144  // Fill in the global information
145  theGlobalInfo.At = theConfig->getTargetA();
146  theGlobalInfo.Zt = theConfig->getTargetZ();
147  const ParticleSpecies theSpecies = theConfig->getProjectileSpecies();
148  theGlobalInfo.Ap = theSpecies.theA;
149  theGlobalInfo.Zp = theSpecies.theZ;
150  theGlobalInfo.Ep = theConfig->getProjectileKineticEnergy();
151 #endif
152 
153  fixedImpactParameter = theConfig->getImpactParameter();
154  }
Short_t Ap
Projectile mass number given as input.
CascadeActionType getCascadeActionType() const
Get the cascade-action type.
static void setCutNN(const G4double c)
G4int getTargetZ() const
Get the target charge number.
Definition: G4INCLConfig.hh:97
std::string cascadeModel
Name of the cascade model.
void initialize(Config const *const)
Initialize generator according to a Config object.
Float_t Ep
Projectile kinetic energy given as input.
Short_t At
Target mass number given as input.
G4double getImpactParameter() const
static std::string const getVersionString()
Get the INCL version string.
std::string deexcitationModel
Name of the de-excitation model.
void initialize(Config const *const theConfig)
G4int getTargetA() const
Get the target mass number.
Definition: G4INCLConfig.hh:94
void initialize(Config const *const theConfig)
Initialize the clustering model based on the Config object.
G4double getHadronizationTime() const
Get the hadronization time.
Short_t Zp
Projectile charge number given as input.
void initVerbosityLevelFromEnvvar()
std::string getDeExcitationString() const
Get the de-excitation string.
ParticleSpecies getProjectileSpecies() const
Get the projectile species.
LocalEnergyType getLocalEnergyPiType() const
Get the type of local energy for pi-N and decay avatars.
LocalEnergyType getLocalEnergyBBType() const
Get the type of local energy for N-N avatars.
void initialize(Config const *const theConfig)
void initialize(Config const *const aConfig)
Initialise blockers according to a Config object.
Short_t Zt
Target charge number given as input.
G4double getProjectileKineticEnergy() const
Get the projectile kinetic energy.
void initialize(Config const *const theConfig=0)
Initialize the particle table.
G4double getCutNN() const
void initialize(Config const *const theConfig)
Initialize the Coulomb-distortion algorithm.

Here is the call graph for this function:

G4INCL::INCL::~INCL ( )

Definition at line 156 of file G4INCLCascade.cc.

156  {
158 #ifndef INCLXX_IN_GEANT4_MODE
159  NuclearMassTable::deleteTable();
160 #endif
167 #ifndef INCLXX_IN_GEANT4_MODE
168  Logger::deleteLoggerSlave();
169 #endif
172  cascadeAction->afterRunAction();
173  delete cascadeAction;
174  delete propagationModel;
175  delete theConfig;
176  }
void deleteGenerator()
void clearCache()
Clear the INuclearPotential cache.
void deleteCoulomb()
Delete the Coulomb-distortion object.
void deleteBlockers()
Delete blockers.
static void deleteBackupParticles()
Release the memory allocated for the backup particles.
void deleteClusteringModel()
Delete the clustering model.

Here is the call graph for this function:

G4INCL::INCL::INCL ( const INCL rhs)

Dummy copy constructor to silence Coverity warning.

Member Function Documentation

void G4INCL::INCL::finalizeGlobalInfo ( Random::SeedVector const &  initialSeeds)

Definition at line 698 of file G4INCLCascade.cc.

698  {
699  const G4double normalisationFactor = theGlobalInfo.geometricCrossSection /
700  ((G4double) theGlobalInfo.nShots);
701  theGlobalInfo.nucleonAbsorptionCrossSection = normalisationFactor *
702  ((G4double) theGlobalInfo.nNucleonAbsorptions);
703  theGlobalInfo.pionAbsorptionCrossSection = normalisationFactor *
704  ((G4double) theGlobalInfo.nPionAbsorptions);
705  theGlobalInfo.reactionCrossSection = normalisationFactor *
706  ((G4double) (theGlobalInfo.nShots - theGlobalInfo.nTransparents));
707  theGlobalInfo.errorReactionCrossSection = normalisationFactor *
708  std::sqrt((G4double) (theGlobalInfo.nShots - theGlobalInfo.nTransparents));
709  theGlobalInfo.forcedCNCrossSection = normalisationFactor *
710  ((G4double) theGlobalInfo.nForcedCompoundNucleus);
711  theGlobalInfo.errorForcedCNCrossSection = normalisationFactor *
712  std::sqrt((G4double) (theGlobalInfo.nForcedCompoundNucleus));
713  theGlobalInfo.completeFusionCrossSection = normalisationFactor *
714  ((G4double) theGlobalInfo.nCompleteFusion);
715  theGlobalInfo.errorCompleteFusionCrossSection = normalisationFactor *
716  std::sqrt((G4double) (theGlobalInfo.nCompleteFusion));
717  theGlobalInfo.energyViolationInteractionCrossSection = normalisationFactor *
718  ((G4double) theGlobalInfo.nEnergyViolationInteraction);
719 
720  theGlobalInfo.initialRandomSeeds.assign(initialSeeds.begin(), initialSeeds.end());
721 
722  Random::SeedVector theSeeds = Random::getSeeds();
723  theGlobalInfo.finalRandomSeeds.assign(theSeeds.begin(), theSeeds.end());
724  }
Float_t nucleonAbsorptionCrossSection
Nucleon absorption cross section.
Int_t nForcedCompoundNucleus
Number of forced compound-nucleus events.
Float_t errorReactionCrossSection
Error on the calculated reaction cross section.
Float_t forcedCNCrossSection
Calculated forced-compound-nucleus cross section.
Float_t pionAbsorptionCrossSection
Pion absorption cross section.
std::vector< Int_t > finalRandomSeeds
Final seeds for the pseudo-random-number generator.
Int_t nTransparents
Number of transparent shots.
std::vector< Int_t > initialRandomSeeds
Initial seeds for the pseudo-random-number generator.
SeedVector getSeeds()
Definition: G4INCLRandom.cc:89
Float_t completeFusionCrossSection
Calculated complete-fusion cross section (nParticles==0)
Int_t nShots
Number of shots.
Float_t reactionCrossSection
Calculated reaction cross section.
Float_t geometricCrossSection
Geometric cross section.
Float_t errorCompleteFusionCrossSection
Error on the calculated complete-fusion cross section (nParticles==0)
Int_t nPionAbsorptions
Number of nucleon absorptions (no outcoming pions)
Int_t nEnergyViolationInteraction
Number of attempted collisions/decays for which the energy-conservation algorithm failed to find a so...
double G4double
Definition: G4Types.hh:76
Int_t nNucleonAbsorptions
Number of nucleon absorptions (no outcoming particles)
Float_t energyViolationInteractionCrossSection
Cross section for attempted collisions/decays for which the energy-conservation algorithm failed to f...
Float_t errorForcedCNCrossSection
Error on the calculated forced-compound-nucleus cross section.
Int_t nCompleteFusion
Number of complete-fusion events (nParticles==0)

Here is the call graph for this function:

const GlobalInfo& G4INCL::INCL::getGlobalInfo ( ) const
inline

Definition at line 82 of file G4INCLCascade.hh.

82 { return theGlobalInfo; }
G4bool G4INCL::INCL::initializeTarget ( const G4int  A,
const G4int  Z 
)

Definition at line 225 of file G4INCLCascade.cc.

225  {
226  delete nucleus;
227 
228  nucleus = new Nucleus(A, Z, theConfig, maxUniverseRadius);
229  nucleus->getStore()->getBook().reset();
230  nucleus->initializeParticles();
231 
232  propagationModel->setNucleus(nucleus);
233  return true;
234  }
void initializeParticles()
Store * getStore() const
double A(double temperature)
Book & getBook()
Definition: G4INCLStore.hh:259
void reset()
Definition: G4INCLBook.hh:52
virtual void setNucleus(G4INCL::Nucleus *nucleus)=0

Here is the call graph for this function:

Here is the caller graph for this function:

INCL& G4INCL::INCL::operator= ( const INCL rhs)

Dummy assignment operator to silence Coverity warning.

G4bool G4INCL::INCL::prepareReaction ( const ParticleSpecies projectileSpecies,
const G4double  kineticEnergy,
const G4int  A,
const G4int  Z 
)

Definition at line 178 of file G4INCLCascade.cc.

178  {
179  if(A < 0 || A > 300 || Z < 1 || Z > 200) {
180  INCL_ERROR("Unsupported target: A = " << A << " Z = " << Z << '\n'
181  << "Target configuration rejected." << '\n');
182  return false;
183  }
184  if(projectileSpecies.theType==Composite &&
185  (projectileSpecies.theZ==projectileSpecies.theA || projectileSpecies.theZ==0)) {
186  INCL_ERROR("Unsupported projectile: A = " << projectileSpecies.theA << " Z = " << projectileSpecies.theZ << '\n'
187  << "Projectile configuration rejected." << '\n');
188  return false;
189  }
190 
191  // Reset the forced-transparent flag
192  forceTransparent = false;
193 
194  // Initialise the maximum universe radius
195  initUniverseRadius(projectileSpecies, kineticEnergy, A, Z);
196 
197  // Initialise the nucleus
198  theZ = Z;
199  if(theConfig->isNaturalTarget())
201  else
202  theA = A;
203  initializeTarget(theA, theZ);
204 
205  // Set the maximum impact parameter
206  maxImpactParameter = CoulombDistortion::maxImpactParameter(projectileSpecies, kineticEnergy, nucleus);
207  INCL_DEBUG("Maximum impact parameter initialised: " << maxImpactParameter << '\n');
208 
209  // For forced CN events
210  initMaxInteractionDistance(projectileSpecies, kineticEnergy);
211 
212  // Set the geometric cross section
213  theGlobalInfo.geometricCrossSection =
214  Math::tenPi*std::pow(maxImpactParameter,2);
215 
216  // Set the minimum remnant size
217  if(projectileSpecies.theA > 0)
218  minRemnantSize = std::min(theA, 4);
219  else
220  minRemnantSize = std::min(theA-1, 4);
221 
222  return true;
223  }
const G4double tenPi
#define INCL_ERROR(x)
G4double maxImpactParameter(ParticleSpecies const &p, const G4double kinE, Nucleus const *const n)
Return the maximum impact parameter for Coulomb-distorted trajectories.
G4bool isNaturalTarget() const
Natural targets.
Definition: G4INCLConfig.hh:87
double A(double temperature)
Float_t geometricCrossSection
Geometric cross section.
G4bool initializeTarget(const G4int A, const G4int Z)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4int drawRandomNaturalIsotope(const G4int Z)
#define INCL_DEBUG(x)

Here is the call graph for this function:

Here is the caller graph for this function:

const EventInfo& G4INCL::INCL::processEvent ( )
inline

Definition at line 66 of file G4INCLCascade.hh.

66  {
67  return processEvent(
68  theConfig->getProjectileSpecies(),
69  theConfig->getProjectileKineticEnergy(),
70  theConfig->getTargetA(),
71  theConfig->getTargetZ()
72  );
73  }
G4int getTargetZ() const
Get the target charge number.
Definition: G4INCLConfig.hh:97
G4int getTargetA() const
Get the target mass number.
Definition: G4INCLConfig.hh:94
const EventInfo & processEvent()
ParticleSpecies getProjectileSpecies() const
Get the projectile species.
G4double getProjectileKineticEnergy() const
Get the projectile kinetic energy.

Here is the call graph for this function:

Here is the caller graph for this function:

const EventInfo & G4INCL::INCL::processEvent ( ParticleSpecies const &  projectileSpecies,
const G4double  kineticEnergy,
const G4int  targetA,
const G4int  targetZ 
)

Definition at line 236 of file G4INCLCascade.cc.

241  {
242  // Set the target and the projectile
243  targetInitSuccess = prepareReaction(projectileSpecies, kineticEnergy, targetA, targetZ);
244 
245  if(!targetInitSuccess) {
246  INCL_WARN("Target initialisation failed for A=" << targetA << ", Z=" << targetZ << '\n');
247  theEventInfo.transparent=true;
248  return theEventInfo;
249  }
250 
251  cascadeAction->beforeCascadeAction(propagationModel);
252 
253  const G4bool canRunCascade = preCascade(projectileSpecies, kineticEnergy);
254  if(canRunCascade) {
255  cascade();
256  postCascade();
257  cascadeAction->afterCascadeAction(nucleus);
258  }
259  updateGlobalInfo();
260  return theEventInfo;
261  }
G4bool prepareReaction(const ParticleSpecies &projectileSpecies, const G4double kineticEnergy, const G4int A, const G4int Z)
#define INCL_WARN(x)
bool G4bool
Definition: G4Types.hh:79
Bool_t transparent
True if the event is transparent.

Here is the call graph for this function:


The documentation for this class was generated from the following files: