1 #ifndef RecoParticleFlow_PFProducer_PFBlockAlgo_h 2 #define RecoParticleFlow_PFProducer_PFBlockAlgo_h 16 #include <unordered_map> 21 struct hash<
std::pair<unsigned int,unsigned int> > {
22 typedef std::pair<unsigned int,unsigned int>
arg_type;
25 return arg.first ^ (arg.second << 1);
40 typedef std::vector<std::unique_ptr<reco::PFBlockElement> >
ElementList;
48 void setLinkers(
const std::vector<edm::ParameterSet>&);
50 void setImporters(
const std::vector<edm::ParameterSet>&,
70 const std::unordered_map<std::pair<unsigned int,unsigned int>,
double>& links)
const;
87 std::vector<std::unique_ptr<BlockElementImporterBase>>
importers_;
89 const std::unordered_map<std::string,reco::PFBlockElement::Type>
91 std::vector<std::unique_ptr<BlockElementLinkerBase>>
linkTests_;
94 std::vector<std::unique_ptr<KDTreeLinkerBase>>
kdtrees_;
Abstract base class for a PFBlock element (track, cluster...)
std::pair< unsigned int, unsigned int > arg_type
std::vector< std::unique_ptr< reco::PFBlockElement > > ElementList
const std::unordered_map< std::string, reco::PFBlockElement::Type > elementTypes_
void setDebug(bool debug)
sets debug printout flag
std::vector< std::unique_ptr< KDTreeLinkerBase > > kdtrees_
std::vector< PFBlock > PFBlockCollection
collection of PFBlock objects
std::ostream & operator<<(std::ostream &out, const std::tuple< Types... > &value)
std::vector< std::unique_ptr< BlockElementLinkerBase > > linkTests_
std::vector< std::unique_ptr< BlockElementImporterBase > > importers_
std::array< std::pair< unsigned int, unsigned int >, reco::PFBlockElement::kNBETypes > ElementRanges
value_type operator()(const arg_type &arg) const
bool debug_
if true, debug printouts activated