1 #ifndef DataFormats_BTauReco_TemplatedSecondaryVertexTagInfo_h 2 #define DataFormats_BTauReco_TemplatedSecondaryVertexTagInfo_h 52 template <
class IPTI,
class VTX>
70 tracks(tracks), track(track) {}
72 bool operator () (
const IndexedTrackData &idt)
75 const typename IPTI::input_container &
tracks;
80 bool operator () (
const IndexedTrackData &idt)
81 {
return idt.second.associatedToVertex(); }
88 bool operator () (
const IndexedTrackData &idt)
89 {
return idt.second.associatedToVertex(
index); }
102 const std::vector<IndexedTrackData> &trackData,
103 const std::vector<VertexData> &svData,
104 unsigned int vertexCandidates,
105 const edm::Ref<std::vector<IPTI> >&);
113 {
return m_trackIPTagInfoRef; }
116 {
return m_trackIPTagInfoRef->jet(); }
126 {
return m_svData[
index].vertex; }
129 unsigned int nVertexTracks()
const;
130 unsigned int nVertexTracks(
unsigned int index)
const;
131 unsigned int nVertices()
const {
return m_svData.size(); }
135 input_container vertexTracks()
const;
136 input_container vertexTracks(
unsigned int index)
const;
141 const TrackData &trackData(
unsigned int index)
const;
147 float trackWeight(
unsigned int svIndex,
unsigned int trackindex)
const;
152 if(dim==1)
return m_svData[
index].dist1d;
153 else if(dim==2)
return m_svData[
index].dist2d;
154 else return m_svData[
index].dist3d;
157 {
return m_svData[
index].direction; }
164 std::vector<IndexedTrackData> m_trackData;
166 unsigned int m_vertexCandidates;
173 const
std::vector<IndexedTrackData> &trackData,
175 unsigned int vertexCandidates,
176 const
edm::
Ref<
std::vector<IPTI> > & trackIPTagInfoRef) :
177 m_trackData(trackData),
179 m_vertexCandidates(vertexCandidates),
180 m_trackIPTagInfoRef(trackIPTagInfoRef)
186 return std::count_if(m_trackData.begin(), m_trackData.end(),
192 return std::count_if(m_trackData.begin(), m_trackData.end(),
196 template<
class IPTI,
class VTX>
199 input_container trackRefs;
200 const input_container &trackIPTrackRefs =
201 m_trackIPTagInfoRef->selectedTracks();
204 m_trackData.begin(); iter != m_trackData.end(); iter++)
206 trackRefs.push_back(trackIPTrackRefs[iter->first]);
211 template<
class IPTI,
class VTX>
214 input_container trackRefs;
215 const input_container &trackIPTrackRefs =
216 m_trackIPTagInfoRef->selectedTracks();
219 m_trackData.begin(); iter != m_trackData.end(); iter++)
221 if (iter->second.associatedToVertex())
222 trackRefs.push_back(trackIPTrackRefs[iter->first]);
227 template<
class IPTI,
class VTX>
230 input_container trackRefs;
231 const input_container &trackIPTrackRefs =
232 m_trackIPTagInfoRef->selectedTracks();
235 m_trackData.begin(); iter != m_trackData.end(); iter++)
237 if (iter->second.associatedToVertex(index))
238 trackRefs.push_back(trackIPTrackRefs[iter->first]);
245 return m_trackIPTagInfoRef->selectedTracks()[m_trackData[
index].first];
251 std::find_if(m_trackData.begin(), m_trackData.end(),
255 if (pos == m_trackData.end())
257 <<
"Track not found in " 258 " TemplatedSecondaryVertexTagInfo<IPTI,VTX>::findTrack." << std::endl;
260 return pos - m_trackData.begin();
263 template<
class IPTI,
class VTX>
266 return m_trackData[
index].second;
269 template<
class IPTI,
class VTX>
272 return m_trackData[findTrack(track)].second;
275 template<
class IPTI,
class VTX>
278 return m_trackIPTagInfoRef->impactParameterData()[
279 m_trackData[
index].first];
282 template<
class IPTI,
class VTX>
285 return trackIPData(findTrack(track));
295 unsigned int trackIndex)
const 305 iter != m_svData.end(); iter++) {
307 iter->dist1d.value(),
true);
309 iter->dist1d.significance(),
true);
311 iter->dist2d.value(),
true);
313 iter->dist2d.significance(),
true);
315 iter->dist3d.value(),
true);
317 iter->dist3d.significance(),
true);
331 #endif // DataFormats_BTauReco_TemplatedSecondaryVertexTagInfo_h
edm::Ref< Container > Ref
const VTX & secondaryVertex(unsigned int index) const
~TemplatedSecondaryVertexTagInfo() override
const IPTI::input_container & tracks
float weight(const reco::TrackRef &t, const reco::Vertex &v)
unsigned int nSelectedTracks() const
edm::RefToBase< Jet > jet(void) const override
returns a polymorphic reference to the tagged jet
#define CMS_CLASS_VERSION(_version_)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
virtual const daughters & daughterPtrVector() const
references to daughtes
input_container vertexTracks() const
const edm::Ref< std::vector< IPTI > > & trackIPTagInfoRef() const
Container::value_type value_type
reco::btag::IndexedTrackData IndexedTrackData
unsigned int findTrack(const typename input_container::value_type &track) const
reco::btag::TrackData TrackData
float trackWeight(unsigned int svIndex, unsigned int trackindex) const
IPTI::input_container input_container
const IPTI::input_container::value_type & track
const reco::btag::TrackIPData & trackIPData(unsigned int index) const
const TrackData & trackData(unsigned int index) const
def template(fileName, svg, replaceme="REPLACEME")
TemplatedSecondaryVertexTagInfo * clone(void) const override
clone
float trackWeight(const TREF &r) const
returns the weight with which a Track has contributed to the vertex-fit.
input_container::value_type track(unsigned int index) const
const GlobalVector & flightDirection(unsigned int index) const
input_container selectedTracks() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
unsigned int nVertices() const
TrackFinder(const typename IPTI::input_container &tracks, const typename IPTI::input_container::value_type &track)
bool usedForVertexFit() const
TaggingVariableList taggingVariables() const override
returns a description of the extended informations in a TaggingVariableList
bool associatedToVertex(unsigned int index) const
Measurement1D flightDistance(unsigned int index, int dim=0) const
unsigned int nVertexTracks() const
bool associatedToVertex() const
std::pair< unsigned int, TrackData > IndexedTrackData
float trackWeight(const reco::Vertex &sv, const reco::TransientTrack &track)
void insert(const TaggingVariable &variable, bool delayed=false)
TemplatedSecondaryVertexTagInfo()
unsigned int nVertexCandidates() const