1 #ifndef RecoBTag_SecondaryVertex_CombinedSVComputer_h
2 #define RecoBTag_SecondaryVertex_CombinedSVComputer_h
10 #include <Math/VectorUtil.h>
38 #define range_for(i, x) \
39 for(int i = (x).begin; i != (x).end; i += (x).increment)
71 template <
class SVTI,
class IPTI>
73 const IPTI & ipInfo,
const SVTI & svInfo,
74 double & vtx_track_ptSum,
double & vtx_track_ESum)
const;
94 template <
class SVTI,
class IPTI>
96 const IPTI & ipInfo,
const SVTI & svInfo,
97 double & vtx_track_ptSum,
double & vtx_track_ESum)
const
99 using namespace ROOT::Math;
100 using namespace reco;
102 typedef typename IPTI::input_container
Container;
107 bool havePv = ipInfo.primaryVertex().isNonnull();
111 ipInfo.primaryVertex()->y(),
112 ipInfo.primaryVertex()->z());
129 double jet_track_ESum= 0.;
135 if (vtx < 0) vtx =
i;
149 std::vector<std::size_t> indices = ipInfo.sortedIndexes(
sortCriterium);
150 const std::vector<reco::btag::TrackIPData> &ipData = ipInfo.impactParameterData();
153 std::vector<TrackRef> pseudoVertexTracks;
155 std::vector<TrackRef> trackPairV0Test(2);
158 std::size_t
idx = indices[
i];
172 allKinematics.add(track);
176 pseudoVertexTracks.push_back(track);
177 vertexKinematics.
add(track);
181 trackPairV0Test[0] = track;
187 std::size_t pairIdx = indices[
j];
194 trackPairV0Test[1] = pairTrack;
203 trackJetKinematics.add(track);
207 double trackMag =
std::sqrt(trackMom.Mag2());
233 for(
typename std::vector<TrackRef>::const_iterator trkIt = pseudoVertexTracks.begin(); trkIt != pseudoVertexTracks.end(); ++trkIt)
236 vtx_track_ptSum +=
std::sqrt((*trkIt)->momentum().Perp2());
254 ? allKinematics.weightedVectorSum()
255 : allKinematics.vectorSum();
274 double varPi = (vertexMass/5.2794) * (vtx_track_ESum /jet_track_ESum);
279 if (allKinematics.numberOfTracks()) {
303 vars.
insert(
btau::totalMultiplicity,pfJet->chargedHadronMultiplicity()+pfJet->neutralHadronMultiplicity()+pfJet->photonMultiplicity()+pfJet->electronMultiplicity()+pfJet->muonMultiplicity(),
true);
306 else if( patJet != 0 && patJet->isPFJet() )
320 vars.
insert(
btau::totalMultiplicity,patJet->chargedHadronMultiplicity()+patJet->neutralHadronMultiplicity()+patJet->photonMultiplicity()+patJet->electronMultiplicity()+patJet->muonMultiplicity(),
true);
342 #endif // RecoBTag_SecondaryVertex_CombinedSVComputer_h
reco::TrackSelector trackSelector
const math::XYZTLorentzVector & weightedVectorSum() const
unsigned int pseudoMultiplicityMin
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
virtual reco::TaggingVariableList operator()(const reco::TrackIPTagInfo &ipInfo, const reco::SecondaryVertexTagInfo &svInfo) const
CombinedSVComputer(const edm::ParameterSet ¶ms)
Jets made from PFObjects.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
reco::btag::SortCriteria sortCriterium
Container::value_type value_type
reco::TrackSelector trackPseudoSelector
IterationRange flipIterate(int size, bool vertex) const
reco::V0Filter trackPairV0Filter
double deltaR(double eta1, double eta2, double phi1, double phi2)
std::vector< reco::btau::TaggingVariableName > taggingVariables
double significance() const
unsigned int numberOfTracks() const
GlobalPoint closestToJetAxis
XYZVectorD XYZVector
spatial vector with cartesian internal representation
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
double flipValue(double value, bool vertex) const
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Analysis-level calorimeter jet class.
edm::ParameterSet dropDeltaR(const edm::ParameterSet &pset) const
const reco::btag::TrackIPData & threshTrack(const reco::CandIPTagInfo &trackIPTagInfo, const reco::btag::SortCriteria sort, const reco::Jet &jet, const GlobalPoint &pv) const
Measurement1D distanceToJetAxis
void fillCommonVariables(reco::TaggingVariableList &vars, reco::TrackKinematics &vertexKinematics, const IPTI &ipInfo, const SVTI &svInfo, double &vtx_track_ptSum, double &vtx_track_ESum) const
char data[epos_bytes_allocation]
const math::XYZTLorentzVector & vectorSum() const
edm::AssociationVector< reco::JetRefBaseProd, Values > Container
tuple size
Write out results.
void insert(const TaggingVariable &variable, bool delayed=false)
unsigned int trackMultiplicityMin