21 "BCWeakDecay",
"BWeakDecay",
"CWeakDecay",
"PU",
"Other",
"Fake"};
25 : distJetAxis_(pSet.getParameter<double>(
"distJetAxisCut")),
26 decayLength_(pSet.getParameter<double>(
"decayLengthCut")),
27 minJetPt_(pSet.getParameter<double>(
"minJetPt")),
28 maxJetEta_(pSet.getParameter<double>(
"maxJetEta")),
29 ipTagInfos_(pSet.getParameter<
std::
string>(
"ipTagInfos")),
30 PatJetSrc_(pSet.getParameter<
InputTag>(
"PatJetSource")),
31 TrackSrc_(pSet.getParameter<
InputTag>(
"TrackSource")),
32 PVSrc_(pSet.getParameter<
InputTag>(
"PrimaryVertexSource")),
33 ClusterTPMapSrc_(pSet.getParameter<
InputTag>(
"clusterTPMap")),
34 classifier_(pSet, consumesCollector())
57 "nTrkAll_bjet",
"Number of selected tracks in b jets;number of selected tracks;jets", 16, -0.5, 15.5);
60 "nTrkAll_cjet",
"Number of selected tracks in c jets;number of selected tracks;jets", 16, -0.5, 15.5);
63 "nTrkAll_dusgjet",
"Number of selected tracks in dusg jets;number of selected tracks;jets", 16, -0.5, 15.5);
70 "Number of selected tracks in b jets (" +
TrkHistCat[i] +
71 ");number of selected tracks (" +
TrkHistCat[i] +
");jets",
78 "Number of selected tracks in c jets (" +
TrkHistCat[i] +
79 ");number of selected tracks (" +
TrkHistCat[i] +
");jets",
86 "Number of selected tracks in dusg jets (" +
TrkHistCat[i] +
87 ");number of selected tracks (" +
TrkHistCat[i] +
");jets",
121 "Number of tracker hits (" +
TrkHistCat[i] +
");track number of all hits (" +
TrkHistCat[i] +
");tracks",
127 "Number of strip hits (" +
TrkHistCat[i] +
");track number of strip hits (" +
TrkHistCat[i] +
");tracks",
133 "Number of pixel hits (" +
TrkHistCat[i] +
");track number of pixel hits (" +
TrkHistCat[i] +
");tracks",
172 "Number of tracker hits (" +
TrkHistCat[i] +
" Truth);track number of all hits (" +
179 "Number of strip hits (" +
TrkHistCat[i] +
" Truth);track number of strip hits (" +
186 "Number of pixel hits (" +
TrkHistCat[i] +
" Truth);track number of pixel hits (" +
202 using P = std::pair<OmniClusterRef, TrackingParticleRef>;
203 bool compare(
const P &
i,
const P &
j) {
return i.second.index() > j.second.index(); }
227 bool pvFound = (!primaryVertex->empty());
229 pv = &(*primaryVertex->begin());
232 e(0, 0) = 0.0015 * 0.0015;
233 e(1, 1) = 0.0015 * 0.0015;
241 for (pat::JetCollection::const_iterator
jet = patJetsColl->begin();
jet != patJetsColl->end(); ++
jet) {
245 unsigned int flav =
abs(
jet->hadronFlavour());
250 const std::vector<edm::Ptr<reco::Candidate>> &
selectedTracks(trackIpTagInfo->selectedTracks());
252 unsigned int nseltracks = 0;
253 std::vector<int> nseltracksCat(
TrkHistCat.size(),
258 for (
unsigned int itt = 0; itt < nTrackSize; ++itt) {
284 double TrkPt = ptrack.
pt();
285 double TrkEta = ptrack.
eta();
286 double TrkPhi = ptrack.
phi();
293 double TrkTruthPt = -99;
294 double TrkTruthEta = -99;
295 double TrkTruthPhi = -99;
296 double TrkTruthDxy = -1;
297 double TrkTruthDz = -1;
298 int TrkTruthnHitAll = -1;
299 int TrkTruthnHitPixel = -1;
300 int TrkTruthnHitStrip = -1;
305 double quality_tpr = res.second;
309 auto clusterTPmap = clusterToTPMap.
map();
310 std::sort(clusterTPmap.begin(), clusterTPmap.end(),
compare);
312 std::equal_range(clusterTPmap.begin(), clusterTPmap.end(), std::make_pair(
OmniClusterRef(), tpr),
compare);
313 if (quality_tpr != 0) {
314 TrkTruthPt = tpr->pt();
315 TrkTruthEta = tpr->eta();
316 TrkTruthPhi = tpr->phi();
321 TrkTruthDxy = (-(vertex_tpr.x() - vertex_pv.x()) * momentum_tpr.y() +
322 (vertex_tpr.y() - vertex_pv.y()) * momentum_tpr.x()) /
324 TrkTruthDz = (vertex_tpr.z() - vertex_pv.z()) - ((vertex_tpr.x() - vertex_pv.x()) * momentum_tpr.x() +
325 (vertex_tpr.y() - vertex_pv.y()) * momentum_tpr.y()) /
326 sqrt(momentum_tpr.perp2()) * momentum_tpr.z() /
327 sqrt(momentum_tpr.perp2());
330 TrkTruthnHitPixel = 0;
331 TrkTruthnHitStrip = 0;
332 if (clusterRange.first != clusterRange.second) {
333 for (
auto ip = clusterRange.first; ip != clusterRange.second; ++ip) {
336 TrkTruthnHitPixel += 1;
339 TrkTruthnHitStrip += 1;
343 TrkTruthnHitAll = TrkTruthnHitPixel + TrkTruthnHitStrip;
361 if (quality_tpr != 0) {
374 !theFlag[TrackCategories::CWeakDecay]) {
384 if (quality_tpr != 0) {
397 theFlag[TrackCategories::CWeakDecay]) {
407 if (quality_tpr != 0) {
429 if (quality_tpr != 0) {
442 !theFlag[TrackCategories::CWeakDecay]) {
452 if (quality_tpr != 0) {
484 }
else if (flav == 4) {
reco::Vertex::Point convertPos(const GlobalPoint &p)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
MonitorElement * nTrk_dusgjet[6]
int pdgId() const final
PDG identifier.
bool compare(const P &i, const P &j)
bool isNonnull() const
Checks for non-null.
edm::EDGetTokenT< ClusterTPAssociation > clusterTPMapToken_
MonitorElement * TrkHitAll_alljets[6]
MonitorElement * TrkDxy_alljets[6]
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * TrkTruthHitPixel_alljets[5]
void setCurrentFolder(std::string const &fullpath)
T const * get() const
Returns C++ pointer to the item.
MonitorElement * TrkDz_alljets[6]
edm::EDGetTokenT< reco::TrackCollection > TrackCollectionTag_
edm::EDGetTokenT< reco::VertexCollection > PrimaryVertexColl_
reco::TransientTrack build(const reco::Track *p) const
TrackClassifier classifier_
MonitorElement * TrkHitStrip_alljets[6]
int numberOfValidStripHits() const
math::Error< dimension >::type Error
covariance error matrix (3x3)
GlobalPoint globalPosition() const
double phi() const
azimuthal angle of momentum vector
const MagneticField * field() const
MonitorElement * TrkEta_alljets[6]
TrackHistory const & history() const
Returns a reference to the track history used in the classification.
BDHadronTrackMonitoringAnalyzer(const edm::ParameterSet &pSet)
const reco::Track * toTrack(const reco::TrackBaseRef &t)
const Point & position() const
position
MonitorElement * TrkPhi_alljets[6]
MonitorElement * TrkHitPixel_alljets[6]
edm::InputTag ClusterTPMapSrc_
reco::TrackRef trackRef() const
edm::EDGetTokenT< pat::JetCollection > PatJetCollectionTag_
math::XYZPointD Point
point in the space
MonitorElement * nTrkAll_dusgjet
MonitorElement * TrkTruthPhi_alljets[5]
TrackClassifier const & evaluate(reco::TrackBaseRef const &)
Classify the RecoTrack in categories.
MonitorElement * TrkTruthEta_alljets[5]
#define DEFINE_FWK_MODULE(type)
double eta() const
pseudorapidity of momentum vector
MonitorElement * nTrkAll_bjet
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
double pt() const
track transverse momentum
~BDHadronTrackMonitoringAnalyzer() override
Abs< T >::type abs(const T &t)
math::XYZPoint Point
point in the space
unsigned short numberOfValidHits() const
number of valid hits found
static const std::vector< std::string > TrkHistCat
void newEvent(edm::Event const &, edm::EventSetup const &)
Pre-process event information (for accessing reconstraction information)
MonitorElement * TrkTruthPt_alljets[5]
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
const Flags & flags() const
Returns flags with the category descriptions.
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
MonitorElement * nTrkAll_cjet
MonitorElement * TrkTruthHitAll_alljets[5]
std::pair< OmniClusterRef, TrackingParticleRef > P
const reco::TrackBaseRef toTrackRef(const edm::Ptr< reco::Candidate > &cnd)
MonitorElement * TrkTruthDxy_alljets[5]
MonitorElement * TrkPt_alljets[6]
Particle reconstructed by the particle flow algorithm.
MonitorElement * nTrk_cjet[6]
reco::GsfTrackRef gsfTrackRef() const
const map_type & map() const
int numberOfValidPixelHits() const
std::vector< bool > Flags
Main types associated to the class.
TrajectoryStateOnSurface impactPointState() const
MonitorElement * TrkTruthDz_alljets[5]
const std::pair< TrackingParticleRef, double > getMatchedTrackingParticle() const
MonitorElement * nTrk_bjet[6]
math::XYZVectorD Vector
point in the space
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
primaryVertex
hltOfflineBeamSpot for HLTMON
MonitorElement * TrkTruthHitStrip_alljets[5]
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override