1 #ifndef RecoTauTag_RecoTau_RecoTauCrossCleaning_h
2 #define RecoTauTag_RecoTau_RecoTauCrossCleaning_h
13 template <
typename PtrIter>
19 const PtrIter& chargedHadronsEnd,
22 initialize(chargedHadronsBegin, chargedHadronsEnd);
25 void initialize(
const PtrIter& chargedHadronsBegin,
const PtrIter& chargedHadronsEnd) {
36 for (
auto const& piZero :
input) {
39 std::vector<reco::CandidatePtr> cleanDaughters;
41 toCheck.begin(), toCheck.end(),
toRemove_.begin(),
toRemove_.end(), std::back_inserter(cleanDaughters));
42 if (cleanDaughters.size() ==
daughters.size()) {
50 for (
auto const& ptr : cleanDaughters) {
57 output.push_back(newPiZero);
73 template <
typename PtrIter>
80 void initialize(
const PtrIter& particlesBegin,
const PtrIter& particlesEnd) {
85 template <
typename AnyPtr>
102 template <
typename PFCandCompatiblePtrType>
104 return ptr->particleId() ==
id_;
115 template <
typename CandCompatiblePtrType>
125 template <
typename P1,
typename P2>
130 template <
typename AnyPtr>
132 return (
p1_(ptr) &&
p2_(ptr));
141 template <
typename P1,
typename P2>