|
|
Go to the documentation of this file. 1 #ifndef RecoParticleFlow_PFProducer_PFAlgo_h
2 #define RecoParticleFlow_PFProducer_PFAlgo_h
43 std::vector<unsigned>
hoIs;
74 double dptRel_PrimaryTrack,
75 double dptRel_MergedTrack,
76 double ptErrorSecondary,
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);
int goodPixelTrackDeadHcal_maxLost3Hit_
const double nSigmaEConstHFHAD
std::vector< double > muonECAL_
PFEnergyCalibration & calibration_
bool useEGammaFilters_
Variables for NEW EGAMMA selection.
double nSigmaHFEM(double clusterEnergy) const
void reconstructParticles(const reco::PFBlockHandle &blockHandle, PFEGammaFilters const *pfegamma)
reconstruct particles
void setDisplacedVerticesParameters(bool rejectTracks_Bad, bool rejectTracks_Step45, bool usePFNuclearInteractions, bool usePFConversions, bool usePFDecays, double dptRel_DispVtx)
std::unique_ptr< PFMuonAlgo > pfmu_
float goodTrackDeadHcal_validFr_
int goodPixelTrackDeadHcal_maxLost4Hit_
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)
float goodPixelTrackDeadHcal_chi2n_
float goodTrackDeadHcal_chi2n_
float goodPixelTrackDeadHcal_dz_
bool isFromSecInt(const reco::PFBlockElement &eTrack, std::string order) const
const edm::ValueMap< reco::GsfElectronRef > * valueMapGedElectrons_
PFAlgo(double nSigmaECAL, double nSigmaHCAL, double nSigmaHFEM, double nSigmaHFHAD, std::vector< double > resolHF_square, PFEnergyCalibration &calibration, PFEnergyCalibrationHF &thepfEnergyCalibrationHF, const edm::ParameterSet &pset)
constructor
std::vector< unsigned > hfHadIs
bool rejectTracks_Step45_
std::vector< Vertex > VertexCollection
collection of Vertex objects
std::vector< unsigned > ecalIs
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)
const double nSigmaEConstHFEM
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
const edm::View< reco::PFCandidate > * pfEgammaCandidates_
std::vector< double > muonHO_
float goodPixelTrackDeadHcal_ptErrRel_
reco::PFCandidateCollection makeConnectedCandidates()
reco::PFCandidateCollection & getCleanedCandidates()
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)
const double nSigmaECAL_
number of sigma to judge energy excess in ECAL
void setCandConnectorParameters(const edm::ParameterSet &iCfgCandConnector)
double nSigmaHCAL(double clusterEnergy, double clusterEta) const
std::vector< PFRecHit > PFRecHitCollection
collection of PFRecHit objects
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)
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)
void setEGammaParameters(bool use_EGammaFilters, bool useProtectionsForJetMET)
std::vector< unsigned > ps2Is
bool checkAndReconstructSecondaryInteraction(const reco::PFBlockRef &blockref, const edm::OwnVector< reco::PFBlockElement > &elements, bool isActive, int iElement)
unsigned reconstructTrack(const reco::PFBlockElement &elt, bool allowLoose=false)
void checkCleaning(const reco::PFRecHitCollection &cleanedHF)
Check HF Cleaning.
std::vector< double > muonHCAL_
Variables for muons and fakes.
double minSignificanceReduction_
double nSigmaHFHAD(double clusterEnergy) const
int goodTrackDeadHcal_layers_
const double nSigmaHFEM_
number of sigma to judge energy excess in HF
void setPFVertexParameters(bool useVertex, reco::VertexCollection const &primaryVertices)
void setParameters(const edm::ParameterSet &iCfgCandConnector)
const double nSigmaHCAL_
number of sigma to judge energy excess in HCAL
Based on a class from : V. Roberfroid, February 2008.
bool checkHasDeadHcal(const std::multimap< double, unsigned > &hcalElems, const std::vector< bool > &deadArea)
bool usePFNuclearInteractions_
float goodPixelTrackDeadHcal_minEta_
float goodTrackDeadHcal_dxy_
bool checkGoodTrackDeadHcal(const reco::TrackRef &trackRef, bool hasDeadHcal)
void setHcalDepthInfo(reco::PFCandidate &cand, const reco::PFCluster &cluster) const
void setEGammaCollections(const edm::View< reco::PFCandidate > &pfEgammaCandidates, const edm::ValueMap< reco::GsfElectronRef > &valueMapGedElectrons, const edm::ValueMap< reco::PhotonRef > &valueMapGedPhotons)
float goodTrackDeadHcal_ptErrRel_
Variables for track cleaning in bad HCal areas.
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)
reco::Vertex primaryVertex_
unsigned reconstructCluster(const reco::PFCluster &cluster, double particleEnergy, bool useDirection=false, double particleX=0., double particleY=0., double particleZ=0.)
std::map< unsigned int, Link > LinkData
const double nSigmaHFHAD_
edm::Handle< reco::MuonCollection > muonHandle_
const edm::ValueMap< reco::PhotonRef > * valueMapGedPhotons_
bool useProtectionsForJetMET_
Abstract base class for a PFBlock element (track, cluster...)
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)
void setMuonHandle(const edm::Handle< reco::MuonCollection > &)
std::unique_ptr< reco::PFCandidateCollection > pfCandidates_
std::vector< double > factors45_
friend std::ostream & operator<<(std::ostream &out, const PFAlgo &algo)
const double nSigmaEConstHCAL
PFCandConnector connector_
float goodPixelTrackDeadHcal_dxy_
void setEGElectronCollection(const reco::GsfElectronCollection &egelectrons)
std::vector< unsigned > ps1Is
void egammaFilters(const reco::PFBlockRef &blockref, std::vector< bool > &active, PFEGammaFilters const *pfegamma)
void processBlock(const reco::PFBlockRef &blockref, std::list< reco::PFBlockRef > &hcalBlockRefs, std::list< reco::PFBlockRef > &ecalBlockRefs, PFEGammaFilters const *pfegamma)
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
void setPostHFCleaningParameters(bool postHFCleaning, const edm::ParameterSet &pfHFCleaningParams)
void setCandConnectorParameters(bool bCorrect, bool bCalibPrimary, double dptRel_PrimaryTrack, double dptRel_MergedTrack, double ptErrorSecondary, const std::vector< double > &nuclCalibFactors)
reco::PFCandidateCollection pfCleanedCandidates_
float goodPixelTrackDeadHcal_maxPt_
double hfEnergyResolution(double clusterEnergy) const
Particle reconstructed by the particle flow algorithm.
std::vector< unsigned > hoIs
std::vector< unsigned > hfEmIs
reco::PFCandidateCollection connect(reco::PFCandidateCollection &pfCand) const
double neutralHadronEnergyResolution(double clusterEnergy, double clusterEta) const
todo: use PFClusterTools for this
std::vector< unsigned > hcalIs
std::vector< unsigned > trackIs
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 std::vector< double > resolHF_square_
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.
PFEnergyCalibrationHF & thepfEnergyCalibrationHF_
PFMuonAlgo * getPFMuonAlgo()