CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
CachingSeedCleanerBySharedInput Class Referencefinal

#include <CachingSeedCleanerBySharedInput.h>

Inheritance diagram for CachingSeedCleanerBySharedInput:
RedundantSeedCleaner

Public Member Functions

void add (const Trajectory *traj) override
 Informs the cleaner that a new trajectory has been made, in case the cleaner keeps a local collection of those tracks (i.e. in a map) More...
 
 CachingSeedCleanerBySharedInput (unsigned int numHitsForSeedCleaner=4, bool onlyPixelHits=false)
 
void done () override
 Tells the cleaner that the seeds are finished, and so it can clear any cache it has. More...
 
bool good (const TrajectorySeed *seed) override
 Returns true if the seed is not overlapping with another trajectory. More...
 
void init (const std::vector< Trajectory > *vect) override
 Provides the cleaner a pointer to the vector where trajectories are stored, in case it does not want to keep a local collection of trajectories. More...
 
- Public Member Functions inherited from RedundantSeedCleaner
void clean (const std::vector< TrajectorySeed > &, std::vector< TrajectorySeed > &)
 clean More...
 
void define (std::vector< TrajectorySeed > &)
 collection definition More...
 
 RedundantSeedCleaner ()
 constructor More...
 
virtual ~RedundantSeedCleaner ()
 
 ~RedundantSeedCleaner ()
 destructor More...
 

Private Attributes

std::unordered_multimap< unsigned int, unsigned int > theCache
 
int theNumHitsForSeedCleaner
 
bool theOnlyPixelHits
 
std::vector< Trajectory::RecHitContainertheVault
 

Detailed Description

Merge of SeedCleanerBySharedInput and CachingSeedCleanerByHitPosition

Definition at line 8 of file CachingSeedCleanerBySharedInput.h.

Constructor & Destructor Documentation

CachingSeedCleanerBySharedInput::CachingSeedCleanerBySharedInput ( unsigned int  numHitsForSeedCleaner = 4,
bool  onlyPixelHits = false 
)
inline

Member Function Documentation

void CachingSeedCleanerBySharedInput::add ( const Trajectory traj)
overridevirtual

Informs the cleaner that a new trajectory has been made, in case the cleaner keeps a local collection of those tracks (i.e. in a map)

Implements RedundantSeedCleaner.

Definition at line 23 of file CachingSeedCleanerBySharedInput.cc.

References h, hfClusterShapes_cfi::hits, training_settings::idx, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, theCache, theOnlyPixelHits, and theVault.

Referenced by counter.Counter::register().

23  {
24  unsigned int idx = theVault.size();
25  theVault.resize(idx + 1);
26  // a vector of shared pointers....
27  auto &hits = theVault.back();
28  (*trj).validRecHits(hits);
29 
30  for (auto const &h : hits) {
31  auto detid = h->geographicalId().rawId();
32 
33  //For seeds that are made only of pixel hits, it is pointless to store the
34  //information about hits on other sub-detector of the trajectory.
35  if (theOnlyPixelHits && h->geographicalId().subdetId() != PixelSubdetector::PixelBarrel &&
36  h->geographicalId().subdetId() != PixelSubdetector::PixelEndcap)
37  continue;
38  if (detid)
39  theCache.insert(std::pair<uint32_t, unsigned int>(detid, idx));
40  }
41 }
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::unordered_multimap< unsigned int, unsigned int > theCache
std::vector< Trajectory::RecHitContainer > theVault
void CachingSeedCleanerBySharedInput::done ( )
overridevirtual

Tells the cleaner that the seeds are finished, and so it can clear any cache it has.

Implements RedundantSeedCleaner.

Definition at line 16 of file CachingSeedCleanerBySharedInput.cc.

References theCache, and theVault.

16  {
17  //edm::LogInfo("CachingSeedCleanerBySharedInput") << " Calls: " << calls_ << ", Tracks: " << tracks_ <<", Comps: " << comps_ << " Vault: " << theVault.size() << ".";
18  //calls_ = comps_ = tracks_ = 0;
19  theVault.clear();
20  theCache.clear();
21 }
std::unordered_multimap< unsigned int, unsigned int > theCache
std::vector< Trajectory::RecHitContainer > theVault
bool CachingSeedCleanerBySharedInput::good ( const TrajectorySeed seed)
overridevirtual

Returns true if the seed is not overlapping with another trajectory.

Implements RedundantSeedCleaner.

Definition at line 43 of file CachingSeedCleanerBySharedInput.cc.

References TrackingRecHit::all, dqmdumpme::first, newFWLiteAna::found, dqmdumpme::last, min(), TrajectorySeed::nHits(), FastTimerService_cff::range, TrajectorySeed::recHits(), OrderedSet::t, theCache, theNumHitsForSeedCleaner, and theVault.

43  {
44  if (seed->nHits() == 0) {
45  return true;
46  }
47 
48  auto range = seed->recHits();
49 
50  auto first = range.first;
51  auto last = range.second;
52  auto detid = first->geographicalId().rawId();
53 
54  //calls_++;
55  auto itrange = theCache.equal_range(detid);
56  for (auto it = itrange.first; it != itrange.second; ++it) {
57  assert(it->first == detid);
58  //tracks_++;
59 
60  // seeds are limited to the first "theNumHitsForSeedCleaner" hits in trajectory...
61  int ext = std::min(theNumHitsForSeedCleaner, int(theVault[it->second].size()));
62  auto ts = theVault[it->second].begin();
63  auto te = ts + ext;
64  auto t = ts;
65  auto curr = first;
66  for (; curr != last; ++curr) {
67  bool found = false;
68  for (; t != te; ++t) {
69  //comps_++;
70  if (curr->sharesInput((**t).hit(), TrackingRecHit::all)) {
71  found = true;
72  ++t;
73  break;
74  }
75  }
76  if (!found)
77  break;
78  }
79  if (curr == last)
80  return false;
81  }
82  return true;
83 }
std::unordered_multimap< unsigned int, unsigned int > theCache
std::vector< Trajectory::RecHitContainer > theVault
T min(T a, T b)
Definition: MathUtil.h:58
range recHits() const
unsigned int nHits() const
Definition: memstream.h:15
void CachingSeedCleanerBySharedInput::init ( const std::vector< Trajectory > *  vect)
overridevirtual

Provides the cleaner a pointer to the vector where trajectories are stored, in case it does not want to keep a local collection of trajectories.

Implements RedundantSeedCleaner.

Definition at line 11 of file CachingSeedCleanerBySharedInput.cc.

References theCache, and theVault.

11  {
12  theVault.clear();
13  theCache.clear();
14 }
std::unordered_multimap< unsigned int, unsigned int > theCache
std::vector< Trajectory::RecHitContainer > theVault

Member Data Documentation

std::unordered_multimap<unsigned int, unsigned int> CachingSeedCleanerBySharedInput::theCache
private

Definition at line 26 of file CachingSeedCleanerBySharedInput.h.

Referenced by add(), done(), good(), and init().

int CachingSeedCleanerBySharedInput::theNumHitsForSeedCleaner
private

Definition at line 28 of file CachingSeedCleanerBySharedInput.h.

Referenced by good().

bool CachingSeedCleanerBySharedInput::theOnlyPixelHits
private

Definition at line 29 of file CachingSeedCleanerBySharedInput.h.

Referenced by add().

std::vector<Trajectory::RecHitContainer> CachingSeedCleanerBySharedInput::theVault
private

Definition at line 25 of file CachingSeedCleanerBySharedInput.h.

Referenced by add(), done(), good(), and init().