CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
Multi5x5ClusterAlgo Class Reference

#include <Multi5x5ClusterAlgo.h>

Public Types

typedef math::XYZPoint Point
 point in the space More...
 
enum  VerbosityLevel { pDEBUG = 0, pWARNING = 1, pINFO = 2, pERROR = 3 }
 

Public Member Functions

std::vector< reco::BasicClustermakeClusters (const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology_p, const CaloSubdetectorGeometry *geometryES_p, reco::CaloID::Detectors detector, bool regional=false, const std::vector< EcalEtaPhiRegion > &regions=std::vector< EcalEtaPhiRegion >())
 
 Multi5x5ClusterAlgo ()
 
 Multi5x5ClusterAlgo (double ebst, double ecst, std::vector< int > v_chstatus, const PositionCalc &posCalc, VerbosityLevel the_verbosity=pERROR)
 
void setVerbosity (VerbosityLevel the_verbosity)
 
virtual ~Multi5x5ClusterAlgo ()
 

Private Member Functions

void addCrystal (const DetId &det)
 
bool checkMaxima (CaloNavigator< DetId > &navigator, const EcalRecHitCollection *hits)
 
void mainSearch (const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorTopology *topology_p, const CaloSubdetectorGeometry *geometryES_p)
 
void makeCluster (const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorGeometry *geometryES_p, const EcalRecHitCollection::const_iterator &seedIt)
 
void prepareCluster (CaloNavigator< DetId > &navigator, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
 

Private Attributes

std::set< DetIdcanSeed_s
 
std::vector< reco::BasicClusterclusters_v
 
std::vector< std::pair< DetId,
float > > 
current_v
 
reco::CaloID::Detectors detector_
 The ecal region used. More...
 
double ecalBarrelSeedThreshold
 
double ecalEndcapSeedThreshold
 
PositionCalc posCalculator_
 
const EcalRecHitCollectionrecHits_
 
std::vector< EcalRecHitseeds
 
std::set< DetIdused_s
 
std::vector< int > v_chstatus_
 
VerbosityLevel verbosity
 

Detailed Description

Definition at line 28 of file Multi5x5ClusterAlgo.h.

Member Typedef Documentation

point in the space

Definition at line 62 of file Multi5x5ClusterAlgo.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

Multi5x5ClusterAlgo::Multi5x5ClusterAlgo ( )
inline

Definition at line 34 of file Multi5x5ClusterAlgo.h.

34  {
35  }
Multi5x5ClusterAlgo::Multi5x5ClusterAlgo ( double  ebst,
double  ecst,
std::vector< int >  v_chstatus,
const PositionCalc posCalc,
VerbosityLevel  the_verbosity = pERROR 
)
inline

Definition at line 37 of file Multi5x5ClusterAlgo.h.

References posCalculator_, python.multivaluedict::sort(), and v_chstatus_.

37  :
38  ecalBarrelSeedThreshold(ebst), ecalEndcapSeedThreshold(ecst), v_chstatus_(v_chstatus), verbosity(the_verbosity) {
39  posCalculator_ = posCalc;
40  std::sort( v_chstatus_.begin(), v_chstatus_.end() );
41  }
std::vector< int > v_chstatus_
VerbosityLevel verbosity
virtual Multi5x5ClusterAlgo::~Multi5x5ClusterAlgo ( )
inlinevirtual

Definition at line 43 of file Multi5x5ClusterAlgo.h.

44  {
45  }

Member Function Documentation

void Multi5x5ClusterAlgo::addCrystal ( const DetId det)
private

Definition at line 346 of file Multi5x5ClusterAlgo.cc.

References current_v, edm::SortedCollection< T, SORT >::end(), edm::SortedCollection< T, SORT >::find(), recHits_, and used_s.

Referenced by prepareCluster().

347 {
348 
350  if ((thisIt != recHits_->end()) && (thisIt->id() != DetId(0)))
351  {
352  if ((used_s.find(thisIt->id()) == used_s.end()))
353  {
354  //std::cout << " ... this is a good crystal and will be added" << std::endl;
355  current_v.push_back( std::pair<DetId, float>(det, 1.) ); // by default hit energy fractions are set at 1.
356  used_s.insert(det);
357  }
358  }
359 
360 }
const EcalRecHitCollection * recHits_
std::vector< T >::const_iterator const_iterator
std::set< DetId > used_s
std::vector< std::pair< DetId, float > > current_v
const_iterator end() const
Definition: DetId.h:20
iterator find(key_type k)
bool Multi5x5ClusterAlgo::checkMaxima ( CaloNavigator< DetId > &  navigator,
const EcalRecHitCollection hits 
)
private

Definition at line 237 of file Multi5x5ClusterAlgo.cc.

References CaloNavigator< T >::east(), edm::SortedCollection< T, SORT >::end(), spr::find(), edm::SortedCollection< T, SORT >::find(), CaloNavigator< T >::home(), i, CaloNavigator< T >::north(), CaloNavigator< T >::pos(), recHits_, CaloNavigator< T >::south(), v_chstatus_, and CaloNavigator< T >::west().

Referenced by mainSearch().

239 {
240 
241  bool maxima = true;
243  EcalRecHitCollection::const_iterator seedHit = hits->find(navigator.pos());
244  double seedEnergy = seedHit->energy();
245 
246  std::vector<DetId> swissCrossVec;
247  swissCrossVec.clear();
248 
249  swissCrossVec.push_back(navigator.west());
250  navigator.home();
251  swissCrossVec.push_back(navigator.east());
252  navigator.home();
253  swissCrossVec.push_back(navigator.north());
254  navigator.home();
255  swissCrossVec.push_back(navigator.south());
256  navigator.home();
257 
258  std::vector<DetId>::const_iterator detItr;
259  for (unsigned int i = 0; i < swissCrossVec.size(); ++i)
260  {
261 
262  // look for this hit
263  thisHit = recHits_->find(swissCrossVec[i]);
264 
265  // continue if this hit was not found
266  if ((swissCrossVec[i] == DetId(0)) || thisHit == recHits_->end()) continue;
267 
268  // the recHit has to be skipped in the local maximum search if it was found
269  // in the map of channels to be excluded
270  uint32_t rhFlag = thisHit->recoFlag();
271  std::vector<int>::const_iterator vit = std::find(v_chstatus_.begin(), v_chstatus_.end(), rhFlag);
272  if (vit != v_chstatus_.end()) continue;
273 
274  // if this crystal has more energy than the seed then we do
275  // not have a local maxima
276  if (thisHit->energy() > seedEnergy)
277  {
278  maxima = false;
279  break;
280  }
281  }
282 
283  return maxima;
284 
285 }
int i
Definition: DBlmapReader.cc:9
void home() const
move the navigator back to the starting point
const EcalRecHitCollection * recHits_
virtual T west() const
move the navigator west
Definition: CaloNavigator.h:81
std::vector< T >::const_iterator const_iterator
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
virtual T north() const
move the navigator north
Definition: CaloNavigator.h:51
T pos() const
get the current position
Definition: CaloNavigator.h:45
std::vector< int > v_chstatus_
virtual T east() const
move the navigator east
Definition: CaloNavigator.h:71
const_iterator end() const
Definition: DetId.h:20
iterator find(key_type k)
virtual T south() const
move the navigator south
Definition: CaloNavigator.h:61
void Multi5x5ClusterAlgo::mainSearch ( const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry_p,
const CaloSubdetectorTopology topology_p,
const CaloSubdetectorGeometry geometryES_p 
)
private

Definition at line 112 of file Multi5x5ClusterAlgo.cc.

References canSeed_s, checkMaxima(), gather_cfg::cout, current_v, spr::find(), edm::SortedCollection< T, SORT >::find(), makeCluster(), pINFO, prepareCluster(), seeds, used_s, v_chstatus_, and verbosity.

Referenced by makeClusters().

117 {
118 
119  if (verbosity < pINFO)
120  {
121  std::cout << "Building clusters............" << std::endl;
122  }
123 
124  // Loop over seeds:
125  std::vector<EcalRecHit>::iterator it;
126  for (it = seeds.begin(); it != seeds.end(); it++)
127  {
128 
129  // check if this crystal is able to seed
130  // (event though it is already used)
131  bool usedButCanSeed = false;
132  if (canSeed_s.find(it->id()) != canSeed_s.end()) usedButCanSeed = true;
133 
134  // avoid seeding for anomalous channels (recoFlag based)
135  uint32_t rhFlag = (*it).recoFlag();
136  std::vector<int>::const_iterator vit = std::find( v_chstatus_.begin(), v_chstatus_.end(), rhFlag );
137  if ( vit != v_chstatus_.end() ) continue; // the recHit has to be excluded from seeding
138 
139  // make sure the current seed does not belong to a cluster already.
140  if ((used_s.find(it->id()) != used_s.end()) && (usedButCanSeed == false))
141  {
142  if (it == seeds.begin())
143  {
144  if (verbosity < pINFO)
145  {
146  std::cout << "##############################################################" << std::endl;
147  std::cout << "DEBUG ALERT: Highest energy seed already belongs to a cluster!" << std::endl;
148  std::cout << "##############################################################" << std::endl;
149  }
150  }
151 
152  // seed crystal is used or is used and cannot seed a cluster
153  // so continue to the next seed crystal...
154  continue;
155  }
156 
157  // clear the vector of hits in current cluster
158  current_v.clear();
159 
160  // Create a navigator at the seed and get seed
161  // energy
162  CaloNavigator<DetId> navigator(it->id(), topology_p);
163  DetId seedId = navigator.pos();
164  EcalRecHitCollection::const_iterator seedIt = hits->find(seedId);
165  navigator.setHome(seedId);
166 
167  // Is the seed a local maximum?
168  bool localMaxima = checkMaxima(navigator, hits);
169 
170  if (localMaxima)
171  {
172  // build the 5x5 taking care over which crystals
173  // can seed new clusters and which can't
174  prepareCluster(navigator, hits, geometry_p);
175  }
176 
177  // If some crystals in the current vector then
178  // make them into a cluster
179  if (current_v.size() > 0)
180  {
181  makeCluster(hits, geometry_p, geometryES_p, seedIt);
182  }
183 
184  } // End loop on seed crystals
185 
186 }
std::set< DetId > canSeed_s
std::vector< T >::const_iterator const_iterator
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
std::vector< int > v_chstatus_
void prepareCluster(CaloNavigator< DetId > &navigator, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
std::set< DetId > used_s
std::vector< std::pair< DetId, float > > current_v
std::vector< EcalRecHit > seeds
Definition: DetId.h:20
bool checkMaxima(CaloNavigator< DetId > &navigator, const EcalRecHitCollection *hits)
void makeCluster(const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorGeometry *geometryES_p, const EcalRecHitCollection::const_iterator &seedIt)
iterator find(key_type k)
VerbosityLevel verbosity
tuple cout
Definition: gather_cfg.py:41
void Multi5x5ClusterAlgo::makeCluster ( const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry_p,
const CaloSubdetectorGeometry geometryES_p,
const EcalRecHitCollection::const_iterator seedIt 
)
private

Definition at line 188 of file Multi5x5ClusterAlgo.cc.

References PositionCalc::Calculate_Location(), clusters_v, gather_cfg::cout, current_v, reco::CaloID::DET_ECAL_BARREL, reco::CaloID::DET_ECAL_ENDCAP, detector_, EcalBarrel, CaloRecHit::energy(), relval_parameters_module::energy, edm::SortedCollection< T, SORT >::find(), reco::CaloCluster::multi5x5, pINFO, posCalculator_, position, and verbosity.

Referenced by mainSearch().

192 {
193 
194  double energy = 0;
195  //double chi2 = 0;
196  reco::CaloID caloID;
197  Point position;
198  position = posCalculator_.Calculate_Location(current_v, hits,geometry, geometryES);
199 
200  std::vector<std::pair<DetId, float> >::iterator it;
201  for (it = current_v.begin(); it != current_v.end(); it++)
202  {
203  EcalRecHitCollection::const_iterator itt = hits->find( (*it).first );
204  EcalRecHit hit_p = *itt;
205  energy += hit_p.energy();
206  //chi2 += 0;
207  if ( (*it).first.subdetId() == EcalBarrel ) {
209  } else {
211  }
212 
213  }
214  //chi2 /= energy;
215 
216  if (verbosity < pINFO)
217  {
218  std::cout << "******** NEW CLUSTER ********" << std::endl;
219  std::cout << "No. of crystals = " << current_v.size() << std::endl;
220  std::cout << " Energy = " << energy << std::endl;
221  std::cout << " Phi = " << position.phi() << std::endl;
222  std::cout << " Eta = " << position.eta() << std::endl;
223  std::cout << "*****************************" << std::endl;
224  }
225 
226  // to be a valid cluster the cluster energy
227  // must be at least the seed energy
228  double seedEnergy = seedIt->energy();
229  if (energy >= seedEnergy)
230  {
231  //clusters_v.push_back(reco::BasicCluster(energy, position, chi2, current_v, reco::CaloCluster::island));
232  clusters_v.push_back(reco::BasicCluster(energy, position, reco::CaloID(detector_), current_v, reco::CaloCluster::multi5x5, seedIt->id()));
233  }
234 
235 }
std::vector< T >::const_iterator const_iterator
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
float energy() const
Definition: CaloRecHit.h:19
math::XYZPoint Point
std::vector< std::pair< DetId, float > > current_v
ESHandle< TrackerGeometry > geometry
math::XYZPoint Calculate_Location(const std::vector< std::pair< DetId, float > > &iDetIds, const EcalRecHitCollection *iRecHits, const CaloSubdetectorGeometry *iSubGeom, const CaloSubdetectorGeometry *iESGeom=0)
Definition: PositionCalc.cc:40
iterator find(key_type k)
VerbosityLevel verbosity
reco::CaloID::Detectors detector_
The ecal region used.
std::vector< reco::BasicCluster > clusters_v
tuple cout
Definition: gather_cfg.py:41
std::vector< reco::BasicCluster > Multi5x5ClusterAlgo::makeClusters ( const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry,
const CaloSubdetectorTopology topology_p,
const CaloSubdetectorGeometry geometryES_p,
reco::CaloID::Detectors  detector,
bool  regional = false,
const std::vector< EcalEtaPhiRegion > &  regions = std::vector<EcalEtaPhiRegion>() 
)

Definition at line 16 of file Multi5x5ClusterAlgo.cc.

References edm::SortedCollection< T, SORT >::begin(), canSeed_s, clusters_v, gather_cfg::cout, reco::CaloID::DET_ECAL_BARREL, reco::CaloID::DET_ECAL_ENDCAP, reco::CaloID::DET_NONE, detector_, ecalBarrelSeedThreshold, ecalEndcapSeedThreshold, edm::SortedCollection< T, SORT >::end(), relval_parameters_module::energy, ET, CaloSubdetectorGeometry::getGeometry(), CaloCellGeometry::getPosition(), mainSearch(), pINFO, position, recHits_, seeds, funct::sin(), python.multivaluedict::sort(), PV3DBase< T, PVType, FrameType >::theta(), dtT0WireCalibration_cfg::threshold, used_s, and verbosity.

Referenced by Multi5x5ClusterProducer::clusterizeECALPart(), and EgammaHLTMulti5x5ClusterProducer::clusterizeECALPart().

25 {
26  seeds.clear();
27  used_s.clear();
28  canSeed_s.clear();
29  clusters_v.clear();
30 
31  recHits_ = hits;
32 
33  double threshold = 0;
34  std::string ecalPart_string;
36  if (detector == reco::CaloID::DET_ECAL_ENDCAP)
37  {
39  threshold = ecalEndcapSeedThreshold;
40  ecalPart_string = "EndCap";
41  }
42  if (detector == reco::CaloID::DET_ECAL_BARREL)
43  {
45  threshold = ecalBarrelSeedThreshold;
46  ecalPart_string = "Barrel";
47  }
48 
49  if (verbosity < pINFO)
50  {
51  std::cout << "-------------------------------------------------------------" << std::endl;
52  std::cout << "Island algorithm invoked for ECAL" << ecalPart_string << std::endl;
53  std::cout << "Looking for seeds, energy threshold used = " << threshold << " GeV" <<std::endl;
54  }
55 
56  int nregions=0;
57  if(regional) nregions=regions.size();
58 
59  if(!regional || nregions) {
60 
62  for(it = hits->begin(); it != hits->end(); it++)
63  {
64  double energy = it->energy();
65  if (energy < threshold) continue; // need to check to see if this line is useful!
66 
67  const CaloCellGeometry *thisCell = geometry_p->getGeometry(it->id());
68  GlobalPoint position = thisCell->getPosition();
69 
70  // Require that RecHit is within clustering region in case
71  // of regional reconstruction
72  bool withinRegion = false;
73  if (regional) {
74  std::vector<EcalEtaPhiRegion>::const_iterator region;
75  for (region=regions.begin(); region!=regions.end(); region++) {
76  if (region->inRegion(position)) {
77  withinRegion = true;
78  break;
79  }
80  }
81  }
82 
83  if (!regional || withinRegion) {
84  float ET = it->energy() * sin(position.theta());
85  if (ET > threshold) seeds.push_back(*it);
86  }
87  }
88 
89  }
90 
91  sort(seeds.begin(), seeds.end(), EcalRecHitLess());
92 
93  if (verbosity < pINFO)
94  {
95  std::cout << "Total number of seeds found in event = " << seeds.size() << std::endl;
96  }
97 
98  mainSearch(hits, geometry_p, topology_p, geometryES_p);
99  sort(clusters_v.rbegin(), clusters_v.rend(), ClusterEtLess());
100 
101  if (verbosity < pINFO)
102  {
103  std::cout << "---------- end of main search. clusters have been sorted ----" << std::endl;
104  }
105 
106  return clusters_v;
107 
108 }
std::set< DetId > canSeed_s
const EcalRecHitCollection * recHits_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< T >::const_iterator const_iterator
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
Geom::Theta< T > theta() const
Definition: PV3DBase.h:69
void mainSearch(const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorTopology *topology_p, const CaloSubdetectorGeometry *geometryES_p)
std::set< DetId > used_s
const_iterator end() const
std::vector< EcalRecHit > seeds
VerbosityLevel verbosity
reco::CaloID::Detectors detector_
The ecal region used.
std::vector< reco::BasicCluster > clusters_v
tuple cout
Definition: gather_cfg.py:41
#define ET
const GlobalPoint & getPosition() const
const_iterator begin() const
void Multi5x5ClusterAlgo::prepareCluster ( CaloNavigator< DetId > &  navigator,
const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry 
)
private

Definition at line 287 of file Multi5x5ClusterAlgo.cc.

References abs, addCrystal(), canSeed_s, CaloNavigator< T >::home(), and CaloNavigator< T >::offsetBy().

Referenced by mainSearch().

290 {
291 
292  DetId thisDet;
293  std::set<DetId>::iterator setItr;
294 
295  // now add the 5x5 taking care to mark the edges
296  // as able to seed and where overlapping in the central
297  // region with crystals that were previously able to seed
298  // change their status so they are not able to seed
299  //std::cout << std::endl;
300  for (int dx = -2; dx < 3; ++dx)
301  {
302  for (int dy = -2; dy < 3; ++ dy)
303  {
304 
305  // navigate in free steps forming
306  // a full 5x5
307  thisDet = navigator.offsetBy(dx, dy);
308  navigator.home();
309 
310  // add the current crystal
311  //std::cout << "adding " << dx << ", " << dy << std::endl;
312  addCrystal(thisDet);
313 
314  // now consider if we are in an edge (outer 16)
315  // or central (inner 9) region
316  if ((abs(dx) > 1) || (abs(dy) > 1))
317  {
318  // this is an "edge" so should be allowed to seed
319  // provided it is not already used
320  //std::cout << " setting can seed" << std::endl;
321  canSeed_s.insert(thisDet);
322  } // end if "edge"
323  else
324  {
325  // or else we are in the central 3x3
326  // and must remove any of these crystals from the canSeed set
327  setItr = canSeed_s.find(thisDet);
328  if (setItr != canSeed_s.end())
329  {
330  //std::cout << " unsetting can seed" << std::endl;
331  canSeed_s.erase(setItr);
332  }
333  } // end if "centre"
334 
335 
336  } // end loop on dy
337 
338  } // end loop on dx
339 
340  //std::cout << "*** " << std::endl;
341  //std::cout << " current_v contains " << current_v.size() << std::endl;
342  //std::cout << "*** " << std::endl;
343 }
void home() const
move the navigator back to the starting point
std::set< DetId > canSeed_s
#define abs(x)
Definition: mlp_lapack.h:159
void addCrystal(const DetId &det)
virtual T offsetBy(int deltaX, int deltaY) const
Free movement of arbitray steps.
Definition: DetId.h:20
void Multi5x5ClusterAlgo::setVerbosity ( VerbosityLevel  the_verbosity)
inline

Definition at line 47 of file Multi5x5ClusterAlgo.h.

References verbosity.

48  {
49  verbosity = the_verbosity;
50  }
VerbosityLevel verbosity

Member Data Documentation

std::set<DetId> Multi5x5ClusterAlgo::canSeed_s
private

Definition at line 84 of file Multi5x5ClusterAlgo.h.

Referenced by mainSearch(), makeClusters(), and prepareCluster().

std::vector<reco::BasicCluster> Multi5x5ClusterAlgo::clusters_v
private

Definition at line 92 of file Multi5x5ClusterAlgo.h.

Referenced by makeCluster(), and makeClusters().

std::vector<std::pair<DetId, float> > Multi5x5ClusterAlgo::current_v
private

Definition at line 89 of file Multi5x5ClusterAlgo.h.

Referenced by addCrystal(), mainSearch(), and makeCluster().

reco::CaloID::Detectors Multi5x5ClusterAlgo::detector_
private

The ecal region used.

Definition at line 70 of file Multi5x5ClusterAlgo.h.

Referenced by makeCluster(), and makeClusters().

double Multi5x5ClusterAlgo::ecalBarrelSeedThreshold
private

Definition at line 73 of file Multi5x5ClusterAlgo.h.

Referenced by makeClusters().

double Multi5x5ClusterAlgo::ecalEndcapSeedThreshold
private

Definition at line 74 of file Multi5x5ClusterAlgo.h.

Referenced by makeClusters().

PositionCalc Multi5x5ClusterAlgo::posCalculator_
private

Definition at line 67 of file Multi5x5ClusterAlgo.h.

Referenced by makeCluster(), and Multi5x5ClusterAlgo().

const EcalRecHitCollection* Multi5x5ClusterAlgo::recHits_
private

Definition at line 77 of file Multi5x5ClusterAlgo.h.

Referenced by addCrystal(), checkMaxima(), and makeClusters().

std::vector<EcalRecHit> Multi5x5ClusterAlgo::seeds
private

Definition at line 80 of file Multi5x5ClusterAlgo.h.

Referenced by mainSearch(), and makeClusters().

std::set<DetId> Multi5x5ClusterAlgo::used_s
private

Definition at line 83 of file Multi5x5ClusterAlgo.h.

Referenced by addCrystal(), mainSearch(), and makeClusters().

std::vector<int> Multi5x5ClusterAlgo::v_chstatus_
private

Definition at line 95 of file Multi5x5ClusterAlgo.h.

Referenced by checkMaxima(), mainSearch(), and Multi5x5ClusterAlgo().

VerbosityLevel Multi5x5ClusterAlgo::verbosity
private

Definition at line 98 of file Multi5x5ClusterAlgo.h.

Referenced by mainSearch(), makeCluster(), makeClusters(), and setVerbosity().