17 "BCWeakDecay",
"BWeakDecay",
"CWeakDecay",
"PU",
"Other",
"Fake"};
21 : distJetAxis_(pSet.getParameter<double>(
"distJetAxisCut")),
22 decayLength_(pSet.getParameter<double>(
"decayLengthCut")),
23 minJetPt_(pSet.getParameter<double>(
"minJetPt")),
24 maxJetEta_(pSet.getParameter<double>(
"maxJetEta")),
25 ipTagInfos_(pSet.getParameter<
std::
string>(
"ipTagInfos")),
26 PatJetSrc_(pSet.getParameter<
InputTag>(
"PatJetSource")),
27 TrackSrc_(pSet.getParameter<
InputTag>(
"TrackSource")),
28 PVSrc_(pSet.getParameter<
InputTag>(
"PrimaryVertexSource")),
29 ClusterTPMapSrc_(pSet.getParameter<
InputTag>(
"clusterTPMap")),
30 classifier_(pSet, consumesCollector())
53 "nTrkAll_bjet",
"Number of selected tracks in b jets;number of selected tracks;jets", 16, -0.5, 15.5);
56 "nTrkAll_cjet",
"Number of selected tracks in c jets;number of selected tracks;jets", 16, -0.5, 15.5);
59 "nTrkAll_dusgjet",
"Number of selected tracks in dusg jets;number of selected tracks;jets", 16, -0.5, 15.5);
66 "Number of selected tracks in b jets (" +
TrkHistCat[i] +
67 ");number of selected tracks (" +
TrkHistCat[i] +
");jets",
74 "Number of selected tracks in c jets (" +
TrkHistCat[i] +
75 ");number of selected tracks (" +
TrkHistCat[i] +
");jets",
82 "Number of selected tracks in dusg jets (" +
TrkHistCat[i] +
83 ");number of selected tracks (" +
TrkHistCat[i] +
");jets",
117 "Number of tracker hits (" +
TrkHistCat[i] +
");track number of all hits (" +
TrkHistCat[i] +
");tracks",
123 "Number of strip hits (" +
TrkHistCat[i] +
");track number of strip hits (" +
TrkHistCat[i] +
");tracks",
129 "Number of pixel hits (" +
TrkHistCat[i] +
");track number of pixel hits (" +
TrkHistCat[i] +
");tracks",
168 "Number of tracker hits (" +
TrkHistCat[i] +
" Truth);track number of all hits (" +
175 "Number of strip hits (" +
TrkHistCat[i] +
" Truth);track number of strip hits (" +
182 "Number of pixel hits (" +
TrkHistCat[i] +
" Truth);track number of pixel hits (" +
198 using P = std::pair<OmniClusterRef, TrackingParticleRef>;
199 bool compare(
const P &
i,
const P &j) {
return i.second.index() > j.second.index(); }
223 bool pvFound = (!primaryVertex->empty());
225 pv = &(*primaryVertex->begin());
228 e(0, 0) = 0.0015 * 0.0015;
229 e(1, 1) = 0.0015 * 0.0015;
237 for (pat::JetCollection::const_iterator
jet = patJetsColl->begin();
jet != patJetsColl->end(); ++
jet) {
241 unsigned int flav =
abs(
jet->hadronFlavour());
246 const std::vector<edm::Ptr<reco::Candidate>> &
selectedTracks(trackIpTagInfo->selectedTracks());
248 unsigned int nseltracks = 0;
249 std::vector<int> nseltracksCat(
TrkHistCat.size(),
254 for (
unsigned int itt = 0; itt < nTrackSize; ++itt) {
280 double TrkPt = ptrack.
pt();
281 double TrkEta = ptrack.
eta();
282 double TrkPhi = ptrack.
phi();
289 double TrkTruthPt = -99;
290 double TrkTruthEta = -99;
291 double TrkTruthPhi = -99;
292 double TrkTruthDxy = -1;
293 double TrkTruthDz = -1;
294 int TrkTruthnHitAll = -1;
295 int TrkTruthnHitPixel = -1;
296 int TrkTruthnHitStrip = -1;
301 double quality_tpr = res.second;
305 auto clusterTPmap = clusterToTPMap.
map();
306 std::sort(clusterTPmap.begin(), clusterTPmap.end(),
compare);
308 std::equal_range(clusterTPmap.begin(), clusterTPmap.end(), std::make_pair(
OmniClusterRef(), tpr),
compare);
309 if (quality_tpr != 0) {
310 TrkTruthPt = tpr->pt();
311 TrkTruthEta = tpr->eta();
312 TrkTruthPhi = tpr->phi();
317 TrkTruthDxy = (-(vertex_tpr.x() - vertex_pv.x()) * momentum_tpr.y() +
318 (vertex_tpr.y() - vertex_pv.y()) * momentum_tpr.x()) /
320 TrkTruthDz = (vertex_tpr.z() - vertex_pv.z()) - ((vertex_tpr.x() - vertex_pv.x()) * momentum_tpr.x() +
321 (vertex_tpr.y() - vertex_pv.y()) * momentum_tpr.y()) /
322 sqrt(momentum_tpr.perp2()) * momentum_tpr.z() /
323 sqrt(momentum_tpr.perp2());
326 TrkTruthnHitPixel = 0;
327 TrkTruthnHitStrip = 0;
328 if (clusterRange.first != clusterRange.second) {
329 for (
auto ip = clusterRange.first; ip != clusterRange.second; ++ip) {
332 TrkTruthnHitPixel += 1;
335 TrkTruthnHitStrip += 1;
339 TrkTruthnHitAll = TrkTruthnHitPixel + TrkTruthnHitStrip;
357 if (quality_tpr != 0) {
370 !theFlag[TrackCategories::CWeakDecay]) {
380 if (quality_tpr != 0) {
393 theFlag[TrackCategories::CWeakDecay]) {
403 if (quality_tpr != 0) {
425 if (quality_tpr != 0) {
438 !theFlag[TrackCategories::CWeakDecay]) {
448 if (quality_tpr != 0) {
480 }
else if (flav == 4) {
reco::Vertex::Point convertPos(const GlobalPoint &p)
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]
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
void setCurrentFolder(std::string const &fullpath)
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
MonitorElement * book1D(Args &&...args)
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...
MonitorElement * TrkTruthHitStrip_alljets[5]
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override