1 #ifndef CandUtils_CandMatcherNew_h
2 #define CandUtils_CandMatcherNew_h
46 for(
typename map_vector::const_iterator
i = maps.begin();
i != maps.end(); ++
i)
66 if(nDau == 0)
return reference_type();
67 std::set<size_t> momIdx, common,
tmp;
68 for(
size_t i = 0;
i < nDau; ++
i) {
70 reference_type
m = (*this)[
d];
71 if (m.isNull())
return reference_type();
73 while(m->numberOfMothers() == 1) {
75 momIdx.insert(m.key());
77 if(momIdx.size() == 0)
return reference_type();
78 if (common.size() == 0) common = momIdx;
81 set_intersection(common.begin(), common.end(),
82 momIdx.begin(), momIdx.end(),
83 inserter(tmp, tmp.begin()));
86 if (common.size() == 0)
return reference_type();
88 size_t idx = * max_element(common.begin(), common.end());
89 return reference_type(
map_.ref(),
idx);
std::vector< const map_type * > map_vector
map vector
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
CandMatcher(const map_vector &maps)
constructor
std::vector< const map_type * > map_vector
map_type::refprod_type ref() const
reference to matched collection
virtual size_type numberOfDaughters() const =0
number of daughters
virtual bool hasMasterClone() const =0
virtual ~CandMatcher()
destructor
map_type map_
match map at leaf level
reference_type operator[](const reco::Candidate &) const
get match from transient reference
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
edm::Association< C >::reference_type reference_type
ref type
edm::RefToBase< Candidate > CandidateBaseRef
persistent reference to an object in a collection of Candidate objects
std::vector< std::vector< double > > tmp
edm::Association< C > map_type
map type
map_type::key_type reference_type
concrete candidate reference type
void swap(reco::ClusterRemovalInfo &cri1, reco::ClusterRemovalInfo &cri2)
virtual const CandidateBaseRef & masterClone() const =0