39 #ifndef G4CASCADE_COALESCENCE_HH
40 #define G4CASCADE_COALESCENCE_HH
63 typedef std::vector<size_t> ClusterCandidate;
67 std::vector<ClusterCandidate> allClusters;
68 std::set<size_t> usedNucleons;
71 const std::vector<G4InuclElementaryParticle>* thisHadrons;
73 ClusterCandidate thisCluster;
81 void selectCandidates();
83 void removeNucleons();
86 void tryClusters(
size_t idx1,
size_t idx2);
87 void tryClusters(
size_t idx1,
size_t idx2,
size_t idx3);
88 void tryClusters(
size_t idx1,
size_t idx2,
size_t idx3,
size_t idx4);
91 void fillCluster(
size_t idx1,
size_t idx2);
92 void fillCluster(
size_t idx1,
size_t idx2,
size_t idx3);
93 void fillCluster(
size_t idx1,
size_t idx2,
size_t idx3,
size_t idx4);
96 bool nucleonUsed(
size_t idx)
const {
97 return usedNucleons.find(idx) != usedNucleons.end();
101 bool allNucleons(
const ClusterCandidate& clus)
const;
102 bool goodCluster(
const ClusterCandidate& clus)
const;
103 G4int clusterType(
const ClusterCandidate& aCluster)
const;
107 return (*thisHadrons)[idx];
111 bool makeLightIon(
const ClusterCandidate& aCluster);
114 G4LorentzVector getClusterMomentum(
const ClusterCandidate& aCluster)
const;
117 G4double maxDeltaP(
const ClusterCandidate& aCluster)
const;
120 void reportArgs(
const G4String&
name,
const ClusterCandidate& clus)
const;
void setVerboseLevel(G4int verbose)
G4CascadeCoalescence(G4int verbose=0)
void FindClusters(G4CollisionOutput &finalState)
virtual ~G4CascadeCoalescence()