1 #ifndef RecoParticleFlow_PFProducer_PFAlgo_h 2 #define RecoParticleFlow_PFProducer_PFAlgo_h 43 std::vector<unsigned>
hoIs;
126 bool checkHasDeadHcal(
const std::multimap<double, unsigned>& hcalElems,
const std::vector<bool>& deadArea);
128 std::multimap<double, unsigned>& ecalElems,
129 std::multimap<double, unsigned>& hcalElems,
130 const std::vector<bool>& active,
132 unsigned int iTrack);
137 std::vector<bool>& active,
140 std::vector<bool>& deadArea);
143 std::vector<bool>& active,
145 std::vector<bool>& deadArea,
151 std::vector<bool>& active,
152 bool goodTrackDeadHcal,
155 std::multimap<double, unsigned>& ecalElems,
162 std::vector<bool>& active,
169 std::vector<bool>& active,
172 std::vector<bool>& deadArea);
176 std::vector<bool>& active,
179 std::vector<bool>& deadArea);
184 std::vector<bool>& active,
187 std::vector<bool>& deadArea);
192 std::list<reco::PFBlockRef>& hcalBlockRefs,
193 std::list<reco::PFBlockRef>& ecalBlockRefs,
208 double particleEnergy,
209 bool useDirection =
false,
210 double particleX = 0.,
211 double particleY = 0.,
212 double particleZ = 0.);
219 double nSigmaHCAL(
double clusterEnergy,
double clusterEta)
const;
223 double nSigmaHFEM(
double clusterEnergy)
const;
236 std::vector<bool>& active,
237 std::vector<double>& psEne);
std::vector< unsigned > ps1Is
bool checkHasDeadHcal(const std::multimap< double, unsigned > &hcalElems, const std::vector< bool > &deadArea)
Abstract base class for a PFBlock element (track, cluster...)
float goodTrackDeadHcal_dxy_
std::vector< double > muonHCAL_
Variables for muons and fakes.
reco::PFCandidateCollection & getCleanedCandidates()
std::vector< unsigned > hoIs
bool checkGoodTrackDeadHcal(const reco::TrackRef &trackRef, bool hasDeadHcal)
std::vector< unsigned > ps2Is
const double nSigmaHFEM_
number of sigma to judge energy excess in HF
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
const double nSigmaHCAL_
number of sigma to judge energy excess in HCAL
std::unique_ptr< reco::PFCandidateCollection > pfCandidates_
void setCandConnectorParameters(const edm::ParameterSet &iCfgCandConnector)
unsigned reconstructCluster(const reco::PFCluster &cluster, double particleEnergy, bool useDirection=false, double particleX=0., double particleY=0., double particleZ=0.)
void elementLoop(const reco::PFBlock &block, reco::PFBlock::LinkData &linkData, const edm::OwnVector< reco::PFBlockElement > &elements, std::vector< bool > &active, const reco::PFBlockRef &blockref, ElementIndices &inds, std::vector< bool > &deadArea)
bool useProtectionsForJetMET_
const std::vector< double > resolHF_square_
float goodPixelTrackDeadHcal_minEta_
std::vector< Vertex > VertexCollection
collection of Vertex objects
std::map< unsigned int, Link > LinkData
std::vector< PFRecHit > PFRecHitCollection
collection of PFRecHit objects
const edm::ValueMap< reco::PhotonRef > * valueMapGedPhotons_
void checkCleaning(const reco::PFRecHitCollection &cleanedHF)
Check HF Cleaning.
const double nSigmaEConstHCAL
PFCandConnector connector_
reco::PFCandidateCollection pfCleanedCandidates_
void setDisplacedVerticesParameters(bool rejectTracks_Bad, bool rejectTracks_Step45, bool usePFNuclearInteractions, bool usePFConversions, bool usePFDecays, double dptRel_DispVtx)
void egammaFilters(const reco::PFBlockRef &blockref, std::vector< bool > &active, PFEGammaFilters const *pfegamma)
bool isFromSecInt(const reco::PFBlockElement &eTrack, std::string order) const
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
float goodPixelTrackDeadHcal_dxy_
void setEGElectronCollection(const reco::GsfElectronCollection &egelectrons)
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
bool rejectTracks_Step45_
double minSignificanceReduction_
std::vector< double > factors45_
double hfEnergyResolution(double clusterEnergy) const
void setPFVertexParameters(bool useVertex, reco::VertexCollection const &primaryVertices)
std::vector< unsigned > hfHadIs
void setPostHFCleaningParameters(bool postHFCleaning, const edm::ParameterSet &pfHFCleaningParams)
std::vector< unsigned > hcalIs
bool usePFNuclearInteractions_
const double nSigmaEConstHFEM
void setEGammaCollections(const edm::View< reco::PFCandidate > &pfEgammaCandidates, const edm::ValueMap< reco::GsfElectronRef > &valueMapGedElectrons, const edm::ValueMap< reco::PhotonRef > &valueMapGedPhotons)
Based on a class from : V. Roberfroid, February 2008.
const edm::View< reco::PFCandidate > * pfEgammaCandidates_
void createCandidatesECAL(const reco::PFBlock &block, reco::PFBlock::LinkData &linkData, const edm::OwnVector< reco::PFBlockElement > &elements, std::vector< bool > &active, const reco::PFBlockRef &blockref, ElementIndices &inds, std::vector< bool > &deadArea)
void associatePSClusters(unsigned iEcal, reco::PFBlockElement::Type psElementType, const reco::PFBlock &block, const edm::OwnVector< reco::PFBlockElement > &elements, const reco::PFBlock::LinkData &linkData, std::vector< bool > &active, std::vector< double > &psEne)
Associate PS clusters to a given ECAL cluster, and return their energy.
bool recoTracksNotHCAL(const reco::PFBlock &block, reco::PFBlock::LinkData &linkData, const edm::OwnVector< reco::PFBlockElement > &elements, const reco::PFBlockRef &blockref, std::vector< bool > &active, bool goodTrackDeadHcal, bool hasDeadHcal, unsigned int iTrack, std::multimap< double, unsigned > &ecalElems, reco::TrackRef &trackRef)
double nSigmaHFEM(double clusterEnergy) const
float goodTrackDeadHcal_validFr_
reco::Vertex primaryVertex_
edm::Handle< reco::MuonCollection > muonHandle_
std::vector< double > muonECAL_
PFEnergyCalibration & calibration_
const double nSigmaEConstHFHAD
void setMuonHandle(const edm::Handle< reco::MuonCollection > &muons)
void processBlock(const reco::PFBlockRef &blockref, std::list< reco::PFBlockRef > &hcalBlockRefs, std::list< reco::PFBlockRef > &ecalBlockRefs, PFEGammaFilters const *pfegamma)
int goodPixelTrackDeadHcal_maxLost3Hit_
void createCandidatesHCAL(const reco::PFBlock &block, reco::PFBlock::LinkData &linkData, const edm::OwnVector< reco::PFBlockElement > &elements, std::vector< bool > &active, const reco::PFBlockRef &blockref, ElementIndices &inds, std::vector< bool > &deadArea)
void setCandConnectorParameters(bool bCorrect, bool bCalibPrimary, double dptRel_PrimaryTrack, double dptRel_MergedTrack, double ptErrorSecondary, const std::vector< double > &nuclCalibFactors)
PFAlgo(double nSigmaECAL, double nSigmaHCAL, double nSigmaHFEM, double nSigmaHFHAD, std::vector< double > resolHF_square, PFEnergyCalibration &calibration, PFEnergyCalibrationHF &thepfEnergyCalibrationHF, const edm::ParameterSet &pset)
constructor
void reconstructParticles(const reco::PFBlockHandle &blockHandle, PFEGammaFilters const *pfegamma)
reconstruct particles
float goodPixelTrackDeadHcal_maxPt_
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
double nSigmaHFHAD(double clusterEnergy) const
int decideType(const edm::OwnVector< reco::PFBlockElement > &elements, const reco::PFBlockElement::Type type, std::vector< bool > &active, ElementIndices &inds, std::vector< bool > &deadArea, unsigned int iEle)
unsigned reconstructTrack(const reco::PFBlockElement &elt, bool allowLoose=false)
int goodTrackDeadHcal_layers_
std::vector< unsigned > hfEmIs
std::vector< double > muonHO_
float goodPixelTrackDeadHcal_ptErrRel_
std::vector< unsigned > ecalIs
double neutralHadronEnergyResolution(double clusterEnergy, double clusterEta) const
todo: use PFClusterTools for this
void relinkTrackToHcal(const reco::PFBlock &block, std::multimap< double, unsigned > &ecalElems, std::multimap< double, unsigned > &hcalElems, const std::vector< bool > &active, reco::PFBlock::LinkData &linkData, unsigned int iTrack)
const double nSigmaECAL_
number of sigma to judge energy excess in ECAL
reco::PFCandidateCollection connect(reco::PFCandidateCollection &pfCand) const
PFEnergyCalibrationHF & thepfEnergyCalibrationHF_
void setHcalDepthInfo(reco::PFCandidate &cand, const reco::PFCluster &cluster) const
Particle reconstructed by the particle flow algorithm.
double nSigmaHCAL(double clusterEnergy, double clusterEta) const
void conversionAlgo(const edm::OwnVector< reco::PFBlockElement > &elements, std::vector< bool > &active)
void createCandidatesHF(const reco::PFBlock &block, reco::PFBlock::LinkData &linkData, const edm::OwnVector< reco::PFBlockElement > &elements, std::vector< bool > &active, const reco::PFBlockRef &blockref, ElementIndices &inds)
reco::PFCandidateCollection makeConnectedCandidates()
PFMuonAlgo * getPFMuonAlgo()
bool useEGammaFilters_
Variables for NEW EGAMMA selection.
void createCandidatesHCALUnlinked(const reco::PFBlock &block, reco::PFBlock::LinkData &linkData, const edm::OwnVector< reco::PFBlockElement > &elements, std::vector< bool > &active, const reco::PFBlockRef &blockref, ElementIndices &inds, std::vector< bool > &deadArea)
float goodTrackDeadHcal_ptErrRel_
Variables for track cleaning in bad HCal areas.
void setParameters(const edm::ParameterSet &iCfgCandConnector)
int goodPixelTrackDeadHcal_maxLost4Hit_
const double nSigmaHFHAD_
float goodPixelTrackDeadHcal_chi2n_
std::vector< unsigned > trackIs
std::unique_ptr< PFMuonAlgo > pfmu_
float goodTrackDeadHcal_chi2n_
float goodPixelTrackDeadHcal_dz_
bool checkAndReconstructSecondaryInteraction(const reco::PFBlockRef &blockref, const edm::OwnVector< reco::PFBlockElement > &elements, bool isActive, int iElement)
void setEGammaParameters(bool use_EGammaFilters, bool useProtectionsForJetMET)
const edm::ValueMap< reco::GsfElectronRef > * valueMapGedElectrons_
friend std::ostream & operator<<(std::ostream &out, const PFAlgo &algo)