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)
76 template <
class SVTI,
class IPTI>
78 const IPTI & ipInfo,
const SVTI & svInfo,
79 double & vtx_track_ptSum,
double & vtx_track_ESum)
const;
99 template <
class SVTI,
class IPTI>
101 const IPTI & ipInfo,
const SVTI & svInfo,
102 double & vtx_track_ptSum,
double & vtx_track_ESum)
const
104 using namespace ROOT::Math;
105 using namespace reco;
109 bool havePv = ipInfo.primaryVertex().isNonnull();
113 ipInfo.primaryVertex()->y(),
114 ipInfo.primaryVertex()->z());
130 double jet_track_ESum= 0.;
136 if (vtx < 0) vtx =
i;
150 std::vector<std::size_t> indices = ipInfo.sortedIndexes(
sortCriterium);
151 const std::vector<reco::btag::TrackIPData> &ipData = ipInfo.impactParameterData();
153 const typename IPTI::input_container &
tracks = ipInfo.selectedTracks();
154 std::vector<const Track *> pseudoVertexTracks;
156 const Track * trackPairV0Test[2];
159 std::size_t
idx = indices[
i];
162 const Track &track = *trackPtr;
174 allKinematics.add(track);
178 pseudoVertexTracks.push_back(trackPtr);
179 vertexKinematics.
add(track);
189 std::size_t pairIdx = indices[
j];
192 const Track &pairTrack = *pairTrackPtr;
197 trackPairV0Test[1] = pairTrackPtr;
206 trackJetKinematics.add(track);
210 double trackMag =
std::sqrt(trackMom.Mag2());
236 for(std::vector<const Track *>::const_iterator track = pseudoVertexTracks.begin(); track != pseudoVertexTracks.end(); ++track)
239 vtx_track_ptSum +=
std::sqrt((*track)->momentum().Perp2());
257 ? allKinematics.weightedVectorSum()
258 : allKinematics.vectorSum();
277 double varPi = (vertexMass/5.2794) * (vtx_track_ESum /jet_track_ESum);
282 if (allKinematics.numberOfTracks()) {
309 else if( patJet != 0 && patJet->isPFJet() )
345 #endif // RecoBTag_SecondaryVertex_CombinedSVComputer_h
reco::TrackSelector trackSelector
void sortTaggingVariables()
const math::XYZTLorentzVector & weightedVectorSum() const
const reco::Track * toTrack(const reco::TrackRef &t)
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)
const Vector & momentum() const
track momentum vector
void clearTaggingVariables()
Jets made from PFObjects.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
reco::btag::SortCriteria sortCriterium
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
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
bool isUsed(reco::btau::TaggingVariableName var) const
void useTaggingVariable(reco::btau::TaggingVariableName var)
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
tuple size
Write out results.
void insert(const TaggingVariable &variable, bool delayed=false)
unsigned int trackMultiplicityMin