67 : verboseLevel(verbose), thisFinalState(0), thisHadrons(0),
79 G4cout <<
" >>> G4CascadeCoalescence::FindClusters()" <<
G4endl;
98 G4cout <<
" >>> G4CascadeCoalescence::selectCandidates()" <<
G4endl;
104 for (
size_t idx1=0; idx1<nHad; idx1++) {
106 for (
size_t idx2=idx1+1; idx2<nHad; idx2++) {
108 for (
size_t idx3=idx2+1; idx3<nHad; idx3++) {
110 for (
size_t idx4=idx3+1; idx4<nHad; idx4++) {
131 size_t idx3,
size_t idx4) {
181 G4cout <<
" >>> G4CascadeCoalescence::createNuclei()" <<
G4endl;
201 G4cout <<
" >>> G4CascadeCoalescence::removeNucleons()" <<
G4endl;
204 std::set<size_t>::reverse_iterator usedIter;
217 for (
size_t i=0; i<aCluster.size(); i++)
232 for (
size_t i=0; i<aCluster.size(); i++) {
250 for (
size_t i=0; i<aCluster.size(); i++) {
289 for (
size_t i=0; i<clus.size(); i++)
302 if (clus.size() == 2)
305 if (clus.size() == 3)
309 if (clus.size() == 4)
324 if (aCluster.size()<2)
return false;
326 G4int A = aCluster.size();
330 if (A==2 && type==3) Z = 1;
331 if (A==3 && type==5) Z = 1;
332 if (A==3 && type==4) Z = 2;
333 if (A==4 && type==6) Z = 2;
335 if (Z < 0)
return false;
350 G4cout <<
" >>> G4CascadeCoalescence::" << name <<
" ";
351 std::copy(aCluster.begin(), aCluster.end(),
352 std::ostream_iterator<size_t>(
G4cout,
" "));
356 for (
size_t i=0; i<aCluster.size(); i++)
const G4double dpMaxDoublet
G4CollisionOutput * thisFinalState
const std::vector< G4InuclElementaryParticle > * thisHadrons
const std::vector< G4InuclElementaryParticle > & getOutgoingParticles() const
G4double maxDeltaP(const ClusterCandidate &aCluster) const
void fill(G4int a, G4int z, G4double exc=0., Model model=DefaultModel)
const G4InuclElementaryParticle & getHadron(size_t idx) const
G4bool nucleon(G4int ityp)
std::set< size_t > usedNucleons
ClusterCandidate thisCluster
const G4double dpMaxTriplet
std::vector< ClusterCandidate > allClusters
const G4double dpMaxAlpha
void fillCluster(size_t idx1, size_t idx2)
virtual ~G4CascadeCoalescence()
bool goodCluster(const ClusterCandidate &clus) const
G4int clusterType(const ClusterCandidate &aCluster) const
void removeOutgoingParticle(G4int index)
G4LorentzVector getClusterMomentum(const ClusterCandidate &aCluster) const
double A(double temperature)
bool nucleonUsed(size_t idx) const
void addOutgoingNucleus(const G4InuclNuclei &nuclei)
void set(double x, double y, double z, double t)
G4double G4ParticleHPJENDLHEData::G4double result
G4CascadeCoalescence(G4int verbose=0)
G4LorentzVector getMomentum() const
G4GLOB_DLL std::ostream G4cout
bool makeLightIon(const ClusterCandidate &aCluster)
Hep3Vector boostVector() const
void reportArgs(const G4String &name, const ClusterCandidate &clus) const
G4InuclNuclei thisLightIon
bool allNucleons(const ClusterCandidate &clus) const
void printCollisionOutput(std::ostream &os=G4cout) const
void FindClusters(G4CollisionOutput &finalState)
void tryClusters(size_t idx1, size_t idx2)
std::vector< size_t > ClusterCandidate
HepLorentzVector & boost(double, double, double)
void reportResult(const G4String &name, const G4InuclNuclei &nucl) const