1 #ifndef PFProducer_PFEGammaAlgo_H
2 #define PFProducer_PFEGammaAlgo_H
48 #include <forward_list>
49 #include <unordered_map>
70 typedef std::unordered_map<const PFKFElement*, float>
KFValMap;
72 using ClusterMap = std::unordered_map<PFClusterElement const*, std::vector<PFClusterElement const*>>;
80 const std::unique_ptr<const GBRForest>
ele_;
96 std::vector<PFBremElement const*>
brems;
148 std::vector<std::vector<FlaggedPtr<const reco::PFBlockElement>>>
_splayedblock;
205 bool removeFreeECAL =
false,
206 bool removeSCECAL =
false);
reco::PFCluster::EEtoPSAssociation const & eetops_
std::vector< PFGSFElement const * > primaryGSFs
Abstract base class for a PFBlock element (track, cluster...)
float evaluateSingleLegMVA(const reco::PFBlockRef &blockref, const reco::Vertex &primaryVtx, unsigned int trackIndex)
reco::PFCandidateEGammaExtraCollection candidateExtras
GBRForests const & gbrForests_
reco::PFBlockElementSuperCluster PFSCElement
PFEGammaAlgo(const PFEGConfigInfo &, GBRForests const &gbrForests, EEtoPSAssociation const &eetops, ESEEIntercalibConstants const &esEEInterCalib, ESChannelStatus const &channelStatus, reco::Vertex const &primaryVertex)
bool unwrapSuperCluster(const reco::PFBlockElementSuperCluster *, std::vector< FlaggedPtr< const PFClusterElement >> &, ClusterMap &)
std::vector< PFGSFElement const * > secondaryGSFs
reco::PFBlockRef parentBlock
void unlinkRefinableObjectKFandECALWithBadEoverP(ProtoEGObject &)
reco::PFBlockElementGsfTrack PFGSFElement
reco::Vertex const & primaryVertex_
bool isPrimaryTrack(const reco::PFBlockElementTrack &KfEl, const reco::PFBlockElementGsfTrack &GsfEl)
void linkRefinableObjectPrimaryGSFTrackToECAL(ProtoEGObject &)
reco::SuperClusterCollection refinedSuperClusters
std::map< unsigned int, Link > LinkData
std::vector< const PFClusterElement * > electronClusters
void linkRefinableObjectBremTangentsToECAL(ProtoEGObject &)
reco::PFBlockRef _currentblock
PFEGConfigInfo const & cfg_
const std::unique_ptr< const GBRForest > singleLeg_
void linkRefinableObjectECALToSingleLegConv(ProtoEGObject &)
std::vector< PFKFElement const * > primaryKFs
void dumpCurrentRefinableObjects() const
void initializeProtoCands(std::list< ProtoEGObject > &)
void linkRefinableObjectPrimaryKFsToSecondaryKFs(ProtoEGObject &)
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
std::vector< PFKFElement const * > secondaryKFs
reco::PFCluster::EEtoPSAssociation EEtoPSAssociation
bool produceEGCandsWithNoSuperCluster
const PFSCElement * parentSC
std::vector< FlaggedPtr< const PFClusterElement > > ecalclusters
std::vector< reco::PFCandidateEGammaExtra > PFCandidateEGammaExtraCollection
collection of PFCandidateEGammaExtras
std::vector< PFBremElement const * > brems
reco::PFBlockElementCluster PFClusterElement
void linkKFTrackToECAL(PFKFElement const *, ProtoEGObject &)
reco::PFBlockElementBrem PFBremElement
std::unordered_map< const PFKFElement *, float > KFValMap
KFValMap singleLegConversionMvaMap
GBRForests(const edm::ParameterSet &conf)
CommutativePairs< const reco::PFBlockElement * > localMap
reco::PFBlock::LinkData _currentlinks
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
bool isMuon(const reco::PFBlockElement &)
void fillExtraInfo(const ProtoEGObject &, reco::PFCandidateEGammaExtra &)
bool applyCrackCorrections
std::vector< std::pair< CaloClusterPtr::key_type, edm::Ptr< PFCluster > > > EEtoPSAssociation
reco::ElectronSeedRef electronSeed
float calculateEleMVA(const ProtoEGObject &, reco::PFCandidateEGammaExtra &) const
EgammaObjects operator()(const reco::PFBlockRef &block)
reco::PFBlockElementTrack PFKFElement
reco::PFCandidateCollection candidates
void linkRefinableObjectGSFTracksToKFs(ProtoEGObject &)
void removeOrLinkECALClustersToKFTracks()
reco::SuperCluster buildRefinedSuperCluster(const ProtoEGObject &)
EgammaObjects fillPFCandidates(const std::list< ProtoEGObject > &)
void unlinkRefinableObjectKFandECALMatchedToHCAL(ProtoEGObject &, bool removeFreeECAL=false, bool removeSCECAL=false)
std::vector< PFClusterElement const * > hcalClusters
void mergeROsByAnyLink(std::list< ProtoEGObject > &)
std::vector< std::vector< FlaggedPtr< const reco::PFBlockElement > > > _splayedblock
PFEnergyCalibration thePFEnergyCalibration_
int attachPSClusters(const PFClusterElement *, ClusterMap::mapped_type &)
void linkRefinableObjectKFTracksToECAL(ProtoEGObject &)
const std::unique_ptr< const GBRForest > ele_
void linkRefinableObjectSecondaryKFsToECAL(ProtoEGObject &)
void linkRefinableObjectConvSecondaryKFsToSecondaryKFs(ProtoEGObject &)
std::unordered_map< PFClusterElement const *, std::vector< PFClusterElement const * >> ClusterMap
ESChannelStatus const & channelStatus_
void linkRefinableObjectPrimaryGSFTrackToHCAL(ProtoEGObject &)