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 Attributes
reco::tau::xclean::CrossCleanPiZeros< PtrIter > Class Template Reference

Transform a pizero to remove given candidates. More...

#include <RecoTauCrossCleaning.h>

Public Types

typedef std::vector
< RecoTauPiZero
PiZeroList
 

Public Member Functions

 CrossCleanPiZeros (PtrIter signalTracksBegin, PtrIter signalTracksEnd)
 
PiZeroList operator() (const std::vector< RecoTauPiZero > &input) const
 

Private Attributes

AddFourMomenta p4Builder_
 
std::set< reco::CandidatePtrtoRemove_
 

Detailed Description

template<typename PtrIter>
class reco::tau::xclean::CrossCleanPiZeros< PtrIter >

Transform a pizero to remove given candidates.

Definition at line 13 of file RecoTauCrossCleaning.h.

Member Typedef Documentation

template<typename PtrIter>
typedef std::vector<RecoTauPiZero> reco::tau::xclean::CrossCleanPiZeros< PtrIter >::PiZeroList

Definition at line 15 of file RecoTauCrossCleaning.h.

Constructor & Destructor Documentation

template<typename PtrIter>
reco::tau::xclean::CrossCleanPiZeros< PtrIter >::CrossCleanPiZeros ( PtrIter  signalTracksBegin,
PtrIter  signalTracksEnd 
)
inline

Definition at line 17 of file RecoTauCrossCleaning.h.

References i, and reco::tau::xclean::CrossCleanPiZeros< PtrIter >::toRemove_.

17  {
18  // Get the list of objects we need to clean
19  for (PtrIter i = signalTracksBegin; i != signalTracksEnd; ++i) {
20  toRemove_.insert(reco::CandidatePtr(*i));
21  }
22  }
int i
Definition: DBlmapReader.cc:9
std::set< reco::CandidatePtr > toRemove_

Member Function Documentation

template<typename PtrIter>
PiZeroList reco::tau::xclean::CrossCleanPiZeros< PtrIter >::operator() ( const std::vector< RecoTauPiZero > &  input) const
inline

Return a vector of pointers to pizeros. PiZeros that needed cleaning are cloned, modified, and owned by this class. The un-modified pointers point to objects in the [input] vector.

Definition at line 27 of file RecoTauCrossCleaning.h.

References reco::CompositePtrCandidate::addDaughter(), reco::CompositePtrCandidate::clearDaughters(), reco::CompositePtrCandidate::daughterPtrVector(), reco::CompositePtrCandidate::numberOfDaughters(), convertSQLitetoXML_cfg::output, reco::tau::xclean::CrossCleanPiZeros< PtrIter >::p4Builder_, AddFourMomenta::set(), and reco::tau::xclean::CrossCleanPiZeros< PtrIter >::toRemove_.

27  {
29  output.reserve(input.size());
30  BOOST_FOREACH(const RecoTauPiZero& piZero, input) {
31  const RecoTauPiZero::daughters& daughters = piZero.daughterPtrVector();
32  std::set<reco::CandidatePtr> toCheck(daughters.begin(), daughters.end());
33  std::vector<reco::CandidatePtr> cleanDaughters;
34  std::set_difference(toCheck.begin(), toCheck.end(),
35  toRemove_.begin(), toRemove_.end(), std::back_inserter(cleanDaughters));
36  if (cleanDaughters.size() == daughters.size()) {
37  // We don't need to clean anything, just add a pointer to current cnad
38  output.push_back(piZero);
39  } else {
40  // Otherwise rebuild
41  RecoTauPiZero newPiZero = piZero;
42  newPiZero.clearDaughters();
43  // Add our cleaned daughters.
44  BOOST_FOREACH(const reco::CandidatePtr& ptr, cleanDaughters) {
45  newPiZero.addDaughter(ptr);
46  }
47  // Check if the pizero is not empty. If empty, forget it.
48  if (newPiZero.numberOfDaughters()) {
49  p4Builder_.set(newPiZero);
50  // Make our ptr container take ownership.
51  output.push_back(newPiZero);
52  }
53  }
54  }
55  return output;
56  }
std::vector< RecoTauPiZero > PiZeroList
std::vector< CandidatePtr > daughters
collection of references to daughters
void set(reco::Candidate &c) const
set up a candidate
std::set< reco::CandidatePtr > toRemove_

Member Data Documentation

template<typename PtrIter>
AddFourMomenta reco::tau::xclean::CrossCleanPiZeros< PtrIter >::p4Builder_
private
template<typename PtrIter>
std::set<reco::CandidatePtr> reco::tau::xclean::CrossCleanPiZeros< PtrIter >::toRemove_
private