1 #ifndef RecoTauTag_RecoTau_PFTauElementsOperators_H_
2 #define RecoTauTag_RecoTau_PFTauElementsOperators_H_
26 #include "Math/GenVector/VectorUtil.h"
27 #include "Math/GenVector/PxPyPzE4D.h"
71 const double minChargedSize,
const double maxChargedSize,
const double minNeutralSize,
const double maxNeutralSize,
72 const double minChargedPt,
const double minNeutralPt,
73 const std::string& outlierCollectorConeMetric,
const double outlierCollectorConeSize,
80 double discriminatorByIsolPFCandsN(
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
int IsolPFCands_maxN=0);
81 double discriminatorByIsolPFCandsN(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
int IsolPFCands_maxN=0);
84 double discriminatorByIsolPFChargedHadrCandsN(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
int IsolPFCands_maxN=0);
87 double discriminatorByIsolPFNeutrHadrCandsN(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
int IsolPFCands_maxN=0);
90 double discriminatorByIsolPFGammaCandsN(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
int IsolPFCands_maxN=0);
93 double discriminatorByIsolPFCandsEtSum(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
double IsolPFCands_maxEtSum=0);
96 double discriminatorByIsolPFChargedHadrCandsEtSum(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
double IsolPFCands_maxEtSum=0);
99 double discriminatorByIsolPFNeutrHadrCandsEtSum(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
double IsolPFCands_maxEtSum=0);
102 double discriminatorByIsolPFGammaCandsEtSum(
math::XYZVector myVector,
std::string matchingcone_metric,
double matchingcone_size,
std::string signalcone_metric,
double signalcone_size,
std::string isolcone_metric,
double isolcone_size,
bool useOnlyChargedHadrforleadPFCand,
double minPt_leadPFCand,
double minPt_PFCand,
double IsolPFCands_maxEtSum=0);
ElementsInEllipse< reco::PFCandidate, reco::PFCandidateCollection > PFCandidatesInEllipse_
double computeDeltaR(const math::XYZVector &vec1, const math::XYZVector &vec2)
reco::PFCandidateRefVector PFGammaCands_
reco::PFCandidateRefVector PFNeutrHadrCands_
ElementsInCone< math::XYZVector, Angle< math::XYZVector >, reco::PFCandidateCollection > PFCandsinCone_Anglemetric_
reco::PFCandidateRefVector IsolPFChargedHadrCands_
double discriminatorByIsolPFGammaCandsN(int IsolPFCands_maxN=0)
reco::PFCandidateRefVector PFCands_
reco::PFCandidateRefVector PFCandsInCone(const reco::PFCandidateRefVector PFCands, const math::XYZVector myVector, const std::string conemetric, const double conesize, const double minPt) const
Angle< math::XYZVector > metricAngle_
ElementsInAnnulus< math::XYZVector, Angle< math::XYZVector >, DeltaR< math::XYZVector >, reco::PFCandidateCollection > PFCandsinAnnulus_innerAngleouterDRmetrics_
reco::PFCandidateRefVector PFChargedHadrCands_
double discriminatorByIsolPFChargedHadrCandsN(int IsolPFCands_maxN=0)
~PFTauElementsOperators()
ElementsInCone< math::XYZVector, DeltaR< math::XYZVector >, reco::PFCandidateCollection > PFCandsinCone_DRmetric_
reco::PFCandidateRefVector PFNeutrHadrCandsInCone(const math::XYZVector myVector, const std::string conemetric, const double conesize, const double minPt) const
reco::PFCandidateRefVector PFGammaCandsInCone(const math::XYZVector myVector, const std::string conemetric, const double conesize, const double minPt) const
reco::PFCandidateRefVector IsolPFCands_
reco::PFCandidateRefVector PFChargedHadrCandsInAnnulus(const math::XYZVector myVector, const std::string innercone_metric, const double innercone_size, const std::string outercone_metric, const double outercone_size, const double minPt) const
void computeInsideOutContents(const reco::PFCandidateRefVector &theChargedCands, const reco::PFCandidateRefVector &theGammaCands, const math::XYZVector leadTrackVector, const TFormula &coneSizeFormula, double(*ptrToMetricFunction)(const math::XYZVector &, const math::XYZVector &), const double minChargedSize, const double maxChargedSize, const double minNeutralSize, const double maxNeutralSize, const double minChargedPt, const double minNeutralPt, const std::string &outlierCollectorConeMetric, const double outlierCollectorConeSize, reco::PFCandidateRefVector &signalChargedObjects, reco::PFCandidateRefVector &outlierChargedObjects, reco::PFCandidateRefVector &signalGammaObjects, reco::PFCandidateRefVector &outlierGammaObjects, bool useScanningAxis)
compute size of cone using the Inside-Out cone (Author Evan Friis, UC Davis)
ElementsInAnnulus< math::XYZVector, Angle< math::XYZVector >, Angle< math::XYZVector >, reco::PFCandidateCollection > PFCandsinAnnulus_innerAngleouterAnglemetrics_
double AreaMetric_recoElements_maxabsEta_
std::pair< reco::PFCandidateRefVector, reco::PFCandidateRefVector > PFGammaCandsInOutEllipse(const reco::PFCandidateRefVector, const reco::PFCandidate, double rPhi, double rEta, double maxPt) const
ElementsInAnnulus< math::XYZVector, DeltaR< math::XYZVector >, Angle< math::XYZVector >, reco::PFCandidateCollection > PFCandsinAnnulus_innerDRouterAnglemetrics_
double discriminatorByIsolPFCandsEtSum(double IsolPFCands_maxEtSum=0)
std::vector< double > vec1
double discriminatorByIsolPFGammaCandsEtSum(double IsolPFCands_maxEtSum=0)
double discriminatorByIsolPFCandsN(int IsolPFCands_maxN=0)
reco::PFCandidateRefVector IsolPFGammaCands_
double computeAngle(const math::XYZVector &vec1, const math::XYZVector &vec2)
PFTauElementsOperators(reco::PFTau &thePFTau)
double discriminatorByIsolPFNeutrHadrCandsN(int IsolPFCands_maxN=0)
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
reco::PFCandidateRef leadPFNeutrHadrCand(const std::string matchingcone_metric, const double matchingcone_size, const double minPt) const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
reco::PFCandidateRefVector PFChargedHadrCandsInCone(const math::XYZVector myVector, const std::string conemetric, const double conesize, const double minPt) const
reco::PFCandidateRefVector PFCandsInAnnulus(const reco::PFCandidateRefVector PFCands, const math::XYZVector myVector, const std::string innercone_metric, const double innercone_size, const std::string outercone_metric, const double outercone_size, const double minPt) const
reco::PFCandidateRef leadPFChargedHadrCand(const std::string matchingcone_metric, const double matchingcone_size, const double minPt) const
DeltaR< math::XYZVector > metricDR_
void setAreaMetricrecoElementsmaxabsEta(double x)
Particle reconstructed by the particle flow algorithm.
reco::PFCandidateRef leadPFCand(const std::string matchingcone_metric, const double matchingcone_size, const double minPt) const
double discriminatorByIsolPFChargedHadrCandsEtSum(std::string matchingcone_metric, double matchingcone_size, std::string signalcone_metric, double signalcone_size, std::string isolcone_metric, double isolcone_size, bool useOnlyChargedHadrforleadPFCand, double minPt_leadPFCand, double minPt_PFCand, double IsolPFCands_maxEtSum=0)
double discriminatorByIsolPFNeutrHadrCandsEtSum(double IsolPFCands_maxEtSum=0)
ElementsInAnnulus< math::XYZVector, DeltaR< math::XYZVector >, DeltaR< math::XYZVector >, reco::PFCandidateCollection > PFCandsinAnnulus_innerDRouterDRmetrics_
void copyCandRefsFilteredByPt(const reco::PFCandidateRefVector &theInputCands, reco::PFCandidateRefVector &theOutputCands, const double minPt)
append elements of theInputCands that pass Pt requirement to the end of theOutputCands ...
reco::PFCandidateRef leadPFGammaCand(const std::string matchingcone_metric, const double matchingcone_size, const double minPt) const
reco::PFCandidateRefVector PFGammaCandsInAnnulus(const math::XYZVector myVector, const std::string innercone_metric, const double innercone_size, const std::string outercone_metric, const double outercone_size, const double minPt) const
reco::PFCandidateRefVector IsolPFNeutrHadrCands_
reco::PFCandidateRefVector PFNeutrHadrCandsInAnnulus(const math::XYZVector myVector, const std::string innercone_metric, const double innercone_size, const std::string outercone_metric, const double outercone_size, const double minPt) const