Block of elements. More...
#include <PFBlock.h>
Classes | |
struct | Link |
Public Types | |
typedef edm::OwnVector < reco::PFBlockElement > ::const_iterator | IE |
typedef std::map< unsigned int, Link > | LinkData |
enum | LinkTest { LINKTEST_RECHIT, LINKTEST_NLINKTEST, LINKTEST_ALL } |
Public Member Functions | |
void | addElement (reco::PFBlockElement *element) |
void | associatedElements (unsigned i, const LinkData &linkData, std::multimap< double, unsigned > &sortedAssociates, reco::PFBlockElement::Type type=PFBlockElement::NONE, LinkTest test=LINKTEST_RECHIT) const |
void | bookLinkData () |
double | dist (unsigned ie1, unsigned ie2, const LinkData &linkData) const |
double | dist (unsigned ie1, unsigned ie2, const LinkData &linkData, LinkTest test) const |
const edm::OwnVector < reco::PFBlockElement > & | elements () const |
const LinkData & | linkData () const |
LinkData & | linkData () |
bool | matrix2vector (unsigned i, unsigned j, unsigned &index) const |
PFBlock () | |
void | setLink (unsigned i1, unsigned i2, double dist, LinkData &linkData, LinkTest test=LINKTEST_RECHIT) const |
Private Member Functions | |
unsigned | linkDataSize () const |
Private Attributes | |
edm::OwnVector < reco::PFBlockElement > | elements_ |
all elements | |
LinkData | linkData_ |
link data (permanent) | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const PFBlock &co) |
Block of elements.
A PFBlock is:
typedef edm::OwnVector< reco::PFBlockElement >::const_iterator reco::PFBlock::IE |
typedef std::map< unsigned int, Link > reco::PFBlock::LinkData |
void PFBlock::addElement | ( | reco::PFBlockElement * | element | ) |
add an element to the current PFBlock the block will keep a copy.
Definition at line 12 of file PFBlock.cc.
References reco::PFBlockElement::clone(), reco::PFBlockElement::lock(), and reco::PFBlockElement::setIndex().
void reco::PFBlock::associatedElements | ( | unsigned | i, |
const LinkData & | linkData, | ||
std::multimap< double, unsigned > & | sortedAssociates, | ||
reco::PFBlockElement::Type | type = PFBlockElement::NONE , |
||
LinkTest | test = LINKTEST_RECHIT |
||
) | const |
lock an element ( unlink it from the others ) Colin: this function is misleading void lock(unsigned i, LinkData& linkData ) const; fills a map with the elements associated to element i. elements are sorted by increasing distance. if specified, only the elements of type "type" will be considered if specified, only the link calculated from a certain "test" will be considered: distance test, etc..
Referenced by PFAlgo::associatePSClusters(), PFBlockAlgo::checkDisplacedVertexLinks(), PFRootEventManagerColin::processHIGH_E_TAUS(), PFElectronAlgo::SetActive(), PFElectronAlgo::SetCandidates(), PFElectronAlgo::SetIDOutputs(), PFConversionAlgo::setLinks(), and PFElectronAlgo::SetLinks().
void PFBlock::bookLinkData | ( | ) |
Definition at line 20 of file PFBlock.cc.
Referenced by PFDisplacedVertexCandidateFinder::packLinks().
{ }
double reco::PFBlock::dist | ( | unsigned | ie1, |
unsigned | ie2, | ||
const LinkData & | linkData, | ||
LinkTest | test | ||
) | const [inline] |
Definition at line 94 of file PFBlock.h.
Referenced by PFElectronAlgo::SetLinks().
double PFBlock::dist | ( | unsigned | ie1, |
unsigned | ie2, | ||
const LinkData & | linkData | ||
) | const |
Definition at line 146 of file PFBlock.cc.
References getHLTprescales::index.
{ double Dist = -1; unsigned index = 0; if( !matrix2vector(ie1, ie2, index) ) return Dist; LinkData::const_iterator it = linkData.find(index); if( it!=linkData.end() ) Dist= it->second.distance; return Dist; }
const edm::OwnVector< reco::PFBlockElement >& reco::PFBlock::elements | ( | ) | const [inline] |
Definition at line 107 of file PFBlock.h.
References elements_.
Referenced by PFRecoTauAlgorithm::buildPFTau(), FWPFBlockProxyBuilder::buildViewType(), PFBlockAlgo::checkDisplacedVertexLinks(), CalibratableTest::extractCandidate(), PFRootEventManager::mcTruthMatching(), reco::tau::RecoTauElectronRejectionPlugin::operator()(), PFDisplacedVertexCandidateFinder::packLinks(), PFRootEventManagerColin::processHIGH_E_TAUS(), PFAlgo::reconstructParticles(), PFElectronAlgo::SetActive(), PFElectronAlgo::SetCandidates(), PFConversionAlgo::setCandidates(), PFElectronAlgo::SetIDOutputs(), PFConversionAlgo::setLinks(), and PFElectronAlgo::SetLinks().
{ return elements_; }
const LinkData& reco::PFBlock::linkData | ( | ) | const [inline] |
Definition at line 112 of file PFBlock.h.
References linkData_.
Referenced by PFBlockAlgo::checkDisplacedVertexLinks(), PFDisplacedVertexCandidateFinder::packLinks(), PFRootEventManagerColin::processHIGH_E_TAUS(), PFElectronAlgo::SetActive(), PFElectronAlgo::SetCandidates(), PFConversionAlgo::setCandidates(), PFElectronAlgo::SetIDOutputs(), PFConversionAlgo::setLinks(), and PFElectronAlgo::SetLinks().
{ return linkData_; }
LinkData& reco::PFBlock::linkData | ( | ) | [inline] |
unsigned PFBlock::linkDataSize | ( | ) | const [private] |
bool PFBlock::matrix2vector | ( | unsigned | i, |
unsigned | j, | ||
unsigned & | index | ||
) | const |
makes the correspondance between a 2d element matrix and the 1D vector which is the most compact way to store the matrix
Definition at line 119 of file PFBlock.cc.
References combine::missing, findQualityFiles::size, and std::swap().
void PFBlock::setLink | ( | unsigned | i1, |
unsigned | i2, | ||
double | dist, | ||
LinkData & | linkData, | ||
LinkTest | test = LINKTEST_RECHIT |
||
) | const |
set a link between elements of indices i1 and i2, of "distance" dist the link is set in the linkData vector provided as an argument. As indicated by the 'const' statement, 'this' is not modified.
Definition at line 26 of file PFBlock.cc.
References reco::PFBlock::Link::distance, getHLTprescales::index, prof2calltree::l, convertSQLiteXML::ok, and reco::PFBlock::Link::test.
Referenced by PFBlockAlgo::checkDisplacedVertexLinks(), and PFDisplacedVertexCandidateFinder::packLinks().
{ assert( test<LINKTEST_ALL ); unsigned index = 0; bool ok = matrix2vector(i1,i2, index); if(ok) { //ignore the -1, -1 pair if ( Dist > -0.5 ) { Link & l = linkData[index]; l.distance=Dist; l.test |= (1 << test); } else //delete if existing { LinkData::iterator it = linkData.find(index); if(it!=linkData.end()) linkData.erase(it); } } else { assert(0); } }
std::ostream& operator<< | ( | std::ostream & | out, |
const PFBlock & | co | ||
) | [friend] |
edm::OwnVector< reco::PFBlockElement > reco::PFBlock::elements_ [private] |
LinkData reco::PFBlock::linkData_ [private] |