Go to the documentation of this file. 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;
37 typedef std::vector<std::unique_ptr<reco::PFBlockElement>>
ElementList;
45 void setLinkers(
const std::vector<edm::ParameterSet>&);
65 const std::unordered_map<std::pair<unsigned int, unsigned int>,
double>&
links)
const;
80 std::vector<std::unique_ptr<BlockElementImporterBase>>
importers_;
82 const std::unordered_map<std::string, reco::PFBlockElement::Type>
elementTypes_;
83 std::vector<std::unique_ptr<BlockElementLinkerBase>>
linkTests_;
86 std::vector<std::unique_ptr<KDTreeLinkerBase>>
kdtrees_;
void buildElements(const edm::Event &)
bool debug_
if true, debug printouts activated
std::array< std::pair< unsigned int, unsigned int >, reco::PFBlockElement::kNBETypes > ElementRanges
std::vector< std::unique_ptr< reco::PFBlockElement > > ElementList
void setDebug(bool debug)
sets debug printout flag
friend std::ostream & operator<<(std::ostream &, const PFBlockAlgo &)
void link(const reco::PFBlockElement *el1, const reco::PFBlockElement *el2, double &dist) const
check whether 2 elements are linked. Returns distance
std::vector< std::unique_ptr< KDTreeLinkerBase > > kdtrees_
std::vector< PFBlock > PFBlockCollection
collection of PFBlock objects
value_type operator()(const arg_type &arg) const
std::vector< std::unique_ptr< BlockElementLinkerBase > > linkTests_
const std::unordered_map< std::string, reco::PFBlockElement::Type > elementTypes_
unsigned int linkTestSquare_[reco::PFBlockElement::kNBETypes][reco::PFBlockElement::kNBETypes]
void setImporters(const std::vector< edm::ParameterSet > &, edm::ConsumesCollector &)
std::pair< unsigned int, unsigned int > arg_type
reco::PFBlockCollection findBlocks()
build blocks
void updateEventSetup(const edm::EventSetup &)
Abstract base class for a PFBlock element (track, cluster...)
void packLinks(reco::PFBlock &block, const std::unordered_map< std::pair< unsigned int, unsigned int >, double > &links) const
std::vector< std::unique_ptr< BlockElementImporterBase > > importers_
void setLinkers(const std::vector< edm::ParameterSet > &)