53 :fEps(pEps),fMinPts(pMinPts),
54 fSPointsProb(pSPointsProb),fEMinDamage(pEMinDamage),fEMaxDamage(pEMaxDamage)
123 std::vector<SBPoint*>::iterator itVisitorPt, itObservedPt;
128 itObservedPt = itVisitorPt;
133 if(!((*itObservedPt)->HasCluster() && (*itVisitorPt)->HasCluster()))
136 (*itVisitorPt)->GetPosition(),
fEps))
139 if(!(*itObservedPt)->HasCluster() && !(*itVisitorPt)->HasCluster())
142 set<SBPoint*> clusterPoints;
143 clusterPoints.insert((*itObservedPt));
144 clusterPoints.insert((*itVisitorPt));
151 (*itObservedPt)->SetCluster(lCluster);
153 (*itVisitorPt)->SetCluster(lCluster);
157 if((*itObservedPt)->HasCluster())
159 (*itObservedPt)->GetCluster()->AddSBPoint((*itVisitorPt));
160 (*itVisitorPt)->SetCluster((*itObservedPt)->GetCluster());
163 if((*itVisitorPt)->HasCluster())
165 (*itVisitorPt)->GetCluster()->AddSBPoint((*itObservedPt));
166 (*itObservedPt)->SetCluster((*itVisitorPt)->GetCluster());
188 std::vector<ClusterSBPoints*>::iterator itCluster1, itCluster2;
193 G4ThreeVector baryCenterClust1 = (*itCluster1)->GetBarycenter();
194 itCluster2 = itCluster1;
198 G4ThreeVector baryCenterClust2 = (*itCluster2)->GetBarycenter();
202 (*itCluster1)->MergeWith(*itCluster2);
218 std::vector<SBPoint*>::iterator itVisitorPt;
219 int nbPtSansCluster = 0;
225 if(!(*itVisitorPt)->HasCluster())
238 std::vector<ClusterSBPoints*>::iterator itCluster;
244 if((*itCluster)->HasInBarycenter(pPt,
fEps))
246 (*itCluster)->AddSBPoint(pPt);
267 if(((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))<=
268 (pMinDist/
nm*pMinDist/
nm))
282 std::vector<SBPoint*>::const_iterator itSDSPt;
287 if(!(*itSDSPt)->HasCluster())
300 std::vector<ClusterSBPoints*>::const_iterator itCluster;
305 if((*itCluster)->IsSSB())
318 std::vector<ClusterSBPoints*>::const_iterator itCluster;
323 if((*itCluster)->IsDSB())
335 std::map<G4int,G4int> sizeDistribution;
336 sizeDistribution[1]=
GetSSB();
337 std::vector<ClusterSBPoints*>::const_iterator itCluster;
342 sizeDistribution[(*itCluster)->GetSize()]++;
344 return sizeDistribution;
352 std::vector<ClusterSBPoints*>::iterator itCluster;
361 std::vector<SBPoint*>::iterator itPt;
void RegisterDamage(G4ThreeVector, G4double)
Float_t y1[n_points_granero]
Definition of the ClusteringAlgoMessenger class.
static constexpr double nm
Float_t x1[n_points_granero]
std::map< G4int, G4int > GetClusterSizeDistribution()
ClusteringAlgo(G4double pEps, G4int pMinPts, G4double pSPointsProb, G4double pEMinDamage, G4double pEMaxDamage)
void IncludeUnassociatedPoints()
ClusteringAlgoMessenger * fpClustAlgoMessenger
Definition of the ClustreringAlgo class.
Float_t y2[n_points_geant4]
std::map< G4int, G4int > RunClustering()
unsigned int fNextSBPointID
G4int GetComplexSSB() const
static constexpr double eV
std::vector< SBPoint * > fpSetOfPoints
define a cluster of SB Points
G4bool IsInSensitiveArea()
std::vector< ClusterSBPoints * > fpClusters
defines a point of energy deposition which defines a damage to the DNA.
Float_t x2[n_points_geant4]
G4bool IsEdepSufficient(G4double)
bool FindCluster(SBPoint *pPt)
bool AreOnTheSameCluster(G4ThreeVector, G4ThreeVector, G4double)