34#define INCLXX_IN_GEANT4_MODE 1
38#ifndef G4INCLClusteringModelIntercomparison_hh
39#define G4INCLClusteringModelIntercomparison_hh 1
41#ifdef INCLXX_IN_GEANT4_MODE
42#define INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_Set 1
160#if defined(INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_HashMask)
162#elif defined(INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_Set) || defined(INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_None)
165#error Unrecognized INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON. Allowed values are: Set, HashMask, None.
229#if defined(INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_HashMask)
230 typedef std::set<Hashing::HashType> HashContainer;
231 typedef HashContainer::iterator HashIterator;
235#elif defined(INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_Set)
308#elif !defined(INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_None)
309#error Unrecognized INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON. Allowed values are: Set, HashMask, None.
Functions for hashing a collection of NucleonItems.
Class for storing and comparing sorted nucleon configurations.
SortedNucleonConfiguration & operator=(const SortedNucleonConfiguration &rhs)
Assignment operator.
void swap(SortedNucleonConfiguration &rhs)
Helper method for the assignment operator.
void fill(NucleonItem *config, size_t n)
Fill configuration with array of NucleonItem.
size_t theSize
Size of the array.
~SortedNucleonConfiguration()
Destructor.
SortedNucleonConfiguration()
Constructor.
G4bool operator<(const SortedNucleonConfiguration &rhs) const
Order operator for SortedNucleonConfiguration.
NucleonItem * nucleons
The real array.
SortedNucleonConfiguration(const SortedNucleonConfiguration &rhs)
Copy constructor.
Cluster coalescence algorithm used in the IAEA intercomparison.
const G4double lambdaMass
const G4double protonMass
G4double getPhaseSpace(const G4int oldA, ConsideredPartner const &p)
const G4double neutronMass
static const G4double clusterPhaseSpaceCut[ParticleTable::maxClusterMass+1]
Phase-space parameters for cluster formation.
static const G4double clusterPosFact[ParticleTable::maxClusterMass+1]
Precomputed factor 1.0/A.
G4int runningMaxClusterAlgorithmMass
SortedNucleonConfigurationContainer checkedConfigurations[ParticleTable::maxClusterMass-2]
Array of containers for configurations that have already been checked.
static const G4double limitCosEscapeAngle
G4double runningPotentials[ParticleTable::maxClusterMass+1]
ThreeVector runningMomenta[ParticleTable::maxClusterMass+1]
G4double runningEnergies[ParticleTable::maxClusterMass+1]
SortedNucleonConfigurationContainer::iterator SortedNucleonConfigurationIterator
static const G4int clusterZMin[ParticleTable::maxClusterMass+1]
Lower limit of Z for cluster of mass A.
void findClusterStartingFrom(const G4int oldA, const G4int oldZ, const G4int oldS)
G4int runningConfiguration[ParticleTable::maxClusterMass]
G4bool * isInRunningConfiguration
Array of flags for nucleons in the running configuration.
static const G4double clusterPosFact2[ParticleTable::maxClusterMass+1]
Precomputed factor (1.0/A)^2.
virtual ~ClusteringModelIntercomparison()
static const G4int clusterZMax[ParticleTable::maxClusterMass+1]
Upper limit of Z for cluster of mass A.
ClusteringModelIntercomparison(Config const *const theConfig)
ThreeVector runningPositions[ParticleTable::maxClusterMass+1]
virtual G4bool clusterCanEscape(Nucleus const *const, Cluster const *const)
G4int maxMassConfigurationSkipping
Maximum mass for configuration storage.
G4double cascadingEnergyPool
ConsideredPartner * consideredPartners
Array of considered cluster partners.
std::set< SortedNucleonConfiguration > SortedNucleonConfigurationContainer
virtual Cluster * getCluster(Nucleus *, Particle *)
Particle * candidateConfiguration[ParticleTable::maxClusterMass]
Best cluster configuration.
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
const G4int maxClusterMass
void copy(G4double dst[], const G4double src[], size_t size=G4FieldTrack::ncompSVEC)
Container for the relevant information.
ConsideredPartner(Particle *const p)