1 #ifndef RecoParticleFlow_PFProducer_PFBlockAlgo_h 2 #define RecoParticleFlow_PFProducer_PFBlockAlgo_h 64 #include <unordered_map> 65 #include <unordered_set> 69 struct hash<
std::pair<unsigned int,unsigned int> > {
70 typedef std::pair<unsigned int,unsigned int>
arg_type;
73 return arg.first ^ (arg.second << 1);
77 struct equal_to<
std::pair<unsigned int,unsigned int> > {
78 typedef std::pair<unsigned int,unsigned int>
arg_type;
79 bool operator()(
const arg_type& arg1,
const arg_type& arg2)
const {
80 return ( (arg1.first == arg2.first) & (arg1.second == arg2.second) );
95 typedef std::vector<std::unique_ptr<reco::PFBlockElement> >
ElementList;
96 typedef std::unique_ptr<BlockElementImporterBase>
ImporterPtr;
98 typedef std::unique_ptr<KDTreeLinkerBase>
KDTreePtr;
100 typedef ElementList::iterator
IE;
101 typedef ElementList::const_iterator
IEC;
102 typedef reco::PFBlockCollection::const_iterator
IBC;
110 void setLinkers(
const std::vector<edm::ParameterSet>&);
112 void setImporters(
const std::vector<edm::ParameterSet>&,
129 const std::unique_ptr< reco::PFBlockCollection >&
blocks()
const 142 const std::unordered_map<std::pair<unsigned int,unsigned int>,
PFBlockLink>& links)
const;
155 std::unique_ptr< reco::PFBlockCollection >
blocks_;
170 const std::unordered_map<std::string,reco::PFBlockElement::Type>
std::unique_ptr< reco::PFBlockCollection > blocks_
std::unique_ptr< BlockElementLinkerBase > LinkTestPtr
Abstract base class for a PFBlock element (track, cluster...)
ElementList::const_iterator IEC
const std::unique_ptr< reco::PFBlockCollection > & blocks() const
std::pair< unsigned int, unsigned int > arg_type
ElementList::iterator IE
define these in *Fwd files in DataFormats/ParticleFlowReco?
bool operator()(const arg_type &arg1, const arg_type &arg2) const
std::vector< std::unique_ptr< reco::PFBlockElement > > ElementList
std::vector< KDTreePtr > kdtrees_
const std::unordered_map< std::string, reco::PFBlockElement::Type > elementTypes_
std::pair< unsigned int, unsigned int > arg_type
std::unique_ptr< KDTreeLinkerBase > KDTreePtr
void setDebug(bool debug)
sets debug printout flag
std::ostream & operator<<(std::ostream &out, const std::tuple< Types... > &value)
reco::PFBlockCollection::const_iterator IBC
std::array< std::pair< unsigned int, unsigned int >, reco::PFBlockElement::kNBETypes > ElementRanges
Type
possible types. WARNING: have a look at PFBlockElement
value_type operator()(const arg_type &arg) const
std::vector< ElementList::value_type::pointer > bare_elements_
std::unique_ptr< reco::PFBlockCollection > transferBlocks()
bool debug_
if true, debug printouts activated
std::vector< LinkTestPtr > linkTests_
std::unique_ptr< BlockElementImporterBase > ImporterPtr
std::vector< ImporterPtr > importers_