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;