1 #ifndef RecoBTag_SecondaryVertex_CombinedSVComputer_h 2 #define RecoBTag_SecondaryVertex_CombinedSVComputer_h 10 #include <Math/VectorUtil.h> 37 #define range_for(i, x) for (int i = (x).begin; i != (x).end; i += (x).increment) 64 template <
class SVTI,
class IPTI>
69 double &vtx_track_ptSum,
70 double &vtx_track_ESum)
const;
90 template <
class SVTI,
class IPTI>
95 double &vtx_track_ptSum,
96 double &vtx_track_ESum)
const {
100 typedef typename IPTI::input_container
Container;
105 bool havePv = ipInfo.primaryVertex().isNonnull();
108 pv =
GlobalPoint(ipInfo.primaryVertex()->x(), ipInfo.primaryVertex()->y(), ipInfo.primaryVertex()->z());
124 double jet_track_ESum = 0.;
147 const std::vector<reco::btag::TrackIPData> &ipData = ipInfo.impactParameterData();
150 std::vector<TrackRef> pseudoVertexTracks;
152 std::vector<TrackRef> trackPairV0Test(2);
173 pseudoVertexTracks.push_back(
track);
178 trackPairV0Test[0] =
track;
191 trackPairV0Test[1] = pairTrack;
204 double trackMag =
std::sqrt(trackMom.Mag2());
221 double perp_trackMom_jetDir = VectorUtil::Perp2(trackMom, jetDir);
222 perp_trackMom_jetDir = (perp_trackMom_jetDir > 0. ?
std::sqrt(perp_trackMom_jetDir) : 0.);
234 for (
typename std::vector<TrackRef>::const_iterator trkIt = pseudoVertexTracks.begin();
235 trkIt != pseudoVertexTracks.end();
238 vtx_track_ptSum +=
std::sqrt((*trkIt)->momentum().Perp2());
281 (vtx_track_ESum / jet_track_ESum);
295 if (pfJet !=
nullptr) {
316 }
else if (patJet !=
nullptr && patJet->
isPFJet()) {
355 #endif // RecoBTag_SecondaryVertex_CombinedSVComputer_h
reco::TrackSelector trackSelector
virtual reco::TaggingVariableList operator()(const reco::TrackIPTagInfo &ipInfo, const reco::SecondaryVertexTagInfo &svInfo) const
int neutralHadronMultiplicity() const
neutralHadronMultiplicity
virtual ~CombinedSVComputer()=default
unsigned int pseudoMultiplicityMin
int chargedHadronMultiplicity() const
chargedHadronMultiplicity
float electronEnergyFraction() const
electronEnergyFraction
void add(const reco::Track &track, double weight=1.0)
bool vertexMassCorrection
Base class for all types of Jets.
double etaRel(const math::XYZVector &dir, const math::XYZVector &track)
reco::TrackSelector trackNoDeltaRSelector
reco::V0Filter pseudoVertexV0Filter
Global3DPoint GlobalPoint
double flipValue(double value, bool vertex) const
CombinedSVComputer(const edm::ParameterSet ¶ms)
float neutralHadronEnergyFraction() const
neutralHadronEnergyFraction (relative to uncorrected jet energy)
float photonEnergyFraction() const
photonEnergyFraction (relative to corrected jet energy)
unsigned int numberOfTracks() const
int photonMultiplicity() const
photonMultiplicity
Jets made from PFObjects.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
reco::btag::SortCriteria sortCriterium
Container::value_type value_type
float photonEnergyFraction() const
photonEnergyFraction
IterationRange flipIterate(int size, bool vertex) const
reco::TrackSelector trackPseudoSelector
edm::ParameterSet dropDeltaR(const edm::ParameterSet &pset) const
const math::XYZTLorentzVector & vectorSum() const
int photonMultiplicity() const
photonMultiplicity
int electronMultiplicity() const
electronMultiplicity
float chargedHadronEnergyFraction() const
chargedHadronEnergyFraction
int neutralHadronMultiplicity() const
neutralHadronMultiplicity
bool isPFJet() const
check to see if the jet is a reco::PFJet
int chargedHadronMultiplicity() const
chargedHadronMultiplicity
reco::V0Filter trackPairV0Filter
int muonMultiplicity() const
muonMultiplicity
std::vector< reco::btau::TaggingVariableName > taggingVariables
float chargedHadronEnergyFraction() const
chargedHadronEnergyFraction (relative to uncorrected jet energy)
int electronMultiplicity() const
electronMultiplicity
float muonEnergyFraction() const
muonEnergyFraction
float neutralHadronEnergyFraction() const
neutralHadronEnergyFraction
XYZVectorD XYZVector
spatial vector with cartesian internal representation
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
int muonMultiplicity() const
muonMultiplicity
Analysis-level calorimeter jet class.
float muonEnergyFraction() const
muonEnergyFraction (relative to corrected jet energy)
char data[epos_bytes_allocation]
const reco::btag::TrackIPData & threshTrack(const reco::CandIPTagInfo &trackIPTagInfo, const reco::btag::SortCriteria sort, const reco::Jet &jet, const GlobalPoint &pv) const
const math::XYZTLorentzVector & weightedVectorSum() const
void fillCommonVariables(reco::TaggingVariableList &vars, reco::TrackKinematics &vertexKinematics, const IPTI &ipInfo, const SVTI &svInfo, double &vtx_track_ptSum, double &vtx_track_ESum) const
float electronEnergyFraction() const
electronEnergyFraction (relative to corrected jet energy)
edm::AssociationVector< reco::JetRefBaseProd, Values > Container
unsigned int trackMultiplicityMin