7 template <
class Container,
class Base>
12 nBinEffPur_(pSet.getParameter<int>(
"nBinEffPur")),
13 startEffPur_(pSet.getParameter<double>(
"startEffPur")),
14 endEffPur_(pSet.getParameter<double>(
"endEffPur")),
15 mcPlots_(mc), willFinalize_(wf),
16 makeQualityPlots_(pSet.getParameter<bool>(
"QualityPlots")),
17 lowerIPSBound(pSet.getParameter<double>(
"LowerIPSBound")),
18 upperIPSBound(pSet.getParameter<double>(
"UpperIPSBound")),
19 lowerIPBound(pSet.getParameter<double>(
"LowerIPBound")),
20 upperIPBound(pSet.getParameter<double>(
"UpperIPBound")),
21 lowerIPEBound(pSet.getParameter<double>(
"LowerIPEBound")),
22 upperIPEBound(pSet.getParameter<double>(
"UpperIPEBound")),
23 nBinsIPS(pSet.getParameter<int>(
"NBinsIPS")),
24 nBinsIP(pSet.getParameter<int>(
"NBinsIP")),
25 nBinsIPE(pSet.getParameter<int>(
"NBinsIPE")),
26 minDecayLength(pSet.getParameter<double>(
"MinDecayLength")),
27 maxDecayLength(pSet.getParameter<double>(
"MaxDecayLength")),
28 minJetDistance(pSet.getParameter<double>(
"MinJetDistance")),
29 maxJetDistance(pSet.getParameter<double>(
"MaxJetDistance"))
36 (
"selTrksNbr_3D" +
theExtensionString,
"Number of selected tracks for 3D IPS", 31, -0.5, 30.5,
40 (
"selTrksNbr_2D" +
theExtensionString,
"Number of selected tracks for 2D IPS", 31, -0.5, 30.5,
47 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
51 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir,mc,
makeQualityPlots_, ibook_) ;
55 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
59 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
63 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
68 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
72 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
76 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
80 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
84 nBinsIPS,
lowerIPSBound,
upperIPSBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
90 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
94 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
98 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
102 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
106 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
111 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
115 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
119 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
123 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
127 nBinsIP,
lowerIPBound,
upperIPBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
134 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
138 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
142 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
146 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
150 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
155 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
159 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
163 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
167 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
171 nBinsIPE,
lowerIPEBound,
upperIPEBound,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
176 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
180 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
184 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
188 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
192 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
196 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
200 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
204 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
208 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
212 50, 0.0, 5.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
217 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
221 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
225 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
229 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
233 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
237 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
241 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
245 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
249 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
253 50, -0.1, 0.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
298 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
302 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
306 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
310 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
314 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
318 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
322 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
326 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
330 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
334 50, -0.1, 10.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
339 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
343 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
347 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
351 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
355 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
359 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
363 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
367 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
371 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
375 50, -0.1, 50.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
380 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
384 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
388 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
392 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
396 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
400 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
404 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
408 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
412 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
416 31, -0.5, 30.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
421 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
425 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
429 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
433 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
437 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
441 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
445 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
449 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
453 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
457 11, -0.5, 10.5,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
462 50, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
466 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
470 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
474 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
478 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
482 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
486 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
490 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
494 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
498 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
503 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
506 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
509 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
512 52, -1.04, 1.04,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
517 50, 0.0, 0.1,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
520 50, -5.0, 15.0,
false,
true,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
523 50, 0.0, 1.0,
false,
false,
true,
"b", trackIPDir, mc,
makeQualityPlots_, ibook_) ;
527 4, -1.5, 2.5,
false,
true,
true,
"b", trackIPDir, mc, ibook_);
530 (
"selectedTrackQual" +
theExtensionString,
"Track Quality of Selected Tracks Associated to Jets",
531 4, -1.5, 2.5,
false,
true,
true,
"b", trackIPDir, mc, ibook_);
534 (
"trackMultVsJetPt" +
theExtensionString,
"Track Multiplicity vs Jet Pt for Tracks Associated to Jets",
535 50, 0.0, 250.0, 21, -0.5, 30.5,
false, trackIPDir, mc,
true, ibook_);
538 (
"selectedTrackMultVsJetPt" +
theExtensionString,
"Track Multiplicity vs Jet Pt for Selected Tracks Associated to Jets",
539 50, 0.0, 250.0, 21, -0.5, 20.5,
false, trackIPDir, mc,
true, ibook_);
543 template <
class Container,
class Base>
547 for(
int n=1;
n != 3; ++
n) {
548 delete tkcntHistosSig3D[
n];
549 delete effPurFromHistos[
n-1];
551 for(
int n=1;
n != 3; ++
n) {
552 delete tkcntHistosSig2D[
n];
553 delete effPurFromHistos[
n+1];
560 delete tkcntHistosTkProbIPneg2D;
561 delete tkcntHistosTkProbIPpos2D;
562 delete tkcntHistosTkProbIPneg3D;
563 delete tkcntHistosTkProbIPpos3D;
564 delete ghostTrackDistanceValuHisto;
565 delete ghostTrackDistanceSignHisto;
566 delete ghostTrackWeightHisto;
567 delete trackQualHisto;
568 delete selectedTrackQualHisto;
569 delete trackMultVsJetPtHisto;
570 delete selectedTrackMultVsJetPtHisto;
572 for(
int n=0;
n != 5; ++
n) {
573 delete tkcntHistosSig2D[
n];
574 delete tkcntHistosSig3D[
n];
575 delete tkcntHistosVal2D[
n];
576 delete tkcntHistosVal3D[
n];
577 delete tkcntHistosErr2D[
n];
578 delete tkcntHistosErr3D[
n];
579 delete tkcntHistosDecayLengthVal2D[
n];
580 delete tkcntHistosDecayLengthVal3D[
n];
581 delete tkcntHistosJetDistVal2D[
n];
582 delete tkcntHistosJetDistVal3D[
n];
585 delete tkcntHistosTkNChiSqr2D[
n];
586 delete tkcntHistosTkNChiSqr3D[
n];
587 delete tkcntHistosTkPt2D[
n];
588 delete tkcntHistosTkPt3D[
n];
589 delete tkcntHistosTkNHits2D[
n];
590 delete tkcntHistosTkNHits3D[
n];
591 delete tkcntHistosTkNPixelHits2D[
n];
592 delete tkcntHistosTkNPixelHits3D[
n];
593 delete tkcntHistosProb2D[
n];
594 delete tkcntHistosProb3D[
n];
598 template <
class Container,
class Base>
601 const int & jetFlavour)
603 analyzeTag(baseTagInfo, jec, jetFlavour, 1.);
606 template <
class Container,
class Base>
609 const int & jetFlavour,
const float &
w)
618 <<
"BTagPerformanceAnalyzer: Extended TagInfo not of type TrackIPTagInfo. " << std::endl;
627 std::vector<float> prob2d, prob3d;
634 std::vector<std::size_t> selectedIndices;
637 for(
unsigned int n = 0;
n != sortedIndices.size(); ++
n) {
639 double jetDistance = ip[sortedIndices[
n]].distanceToJetAxis.value();
640 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
641 fabs(jetDistance) >= minJetDistance && fabs(jetDistance) < maxJetDistance ) {
642 selectedIndices.push_back(sortedIndices[
n]);
643 selectedTracks.push_back(sortedTracks[n]);
647 trkNbr2D->fill(jetFlavour, selectedIndices.size(),
w);
649 for(
unsigned int n=0;
n != selectedIndices.size(); ++
n) {
652 tkcntHistosSig2D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.significance(),
true,
w);
653 tkcntHistosVal2D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.value(),
true,
w);
654 tkcntHistosErr2D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.error(),
true,
w);
655 const double& decayLen = (ip[selectedIndices[
n]].closestToJetAxis -
pv).
mag();
656 tkcntHistosDecayLengthVal2D[4]->fill(jetFlavour, trackQual, decayLen,
true,w);
657 tkcntHistosJetDistVal2D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.value(),
true,
w);
659 tkcntHistosTkNChiSqr2D[4]->fill(jetFlavour, trackQual, track->
normalizedChi2(),
true,
w);
660 tkcntHistosTkPt2D[4]->fill(jetFlavour, trackQual, track->
pt(),
true,
w);
661 tkcntHistosTkNHits2D[4]->fill(jetFlavour, trackQual, track->
found(),
true,
w);
664 tkcntHistosSig2D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.significance(),
true,
w);
665 tkcntHistosVal2D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.value(),
true,
w);
666 tkcntHistosErr2D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.error(),
true,
w);
667 tkcntHistosDecayLengthVal2D[
n]->fill(jetFlavour, trackQual, decayLen,
true,w);
668 tkcntHistosJetDistVal2D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.value(),
true,
w);
670 tkcntHistosTkNChiSqr2D[
n]->fill(jetFlavour, trackQual, track->
normalizedChi2(),
true,
w);
671 tkcntHistosTkPt2D[
n]->fill(jetFlavour, trackQual, track->
pt(),
true,
w);
672 tkcntHistosTkNHits2D[
n]->fill(jetFlavour, trackQual, track->
found(),
true,
w);
676 selectedIndices.clear();
678 selectedTracks.clear();
679 for(
unsigned int n = 0;
n != sortedIndices.size(); ++
n) {
681 double jetDistance = ip[sortedIndices[
n]].distanceToJetAxis.value();
682 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
683 fabs(jetDistance) >= minJetDistance && fabs(jetDistance) < maxJetDistance ) {
684 selectedIndices.push_back(sortedIndices[
n]);
685 selectedTracks.push_back(sortedTracks[n]);
688 for(
unsigned int n=0;
n != selectedIndices.size(); ++
n) {
691 tkcntHistosProb2D[4]->fill(jetFlavour, trackQual, prob2d[selectedIndices[n]],
true,w);
692 if(ip[selectedIndices[n]].ip2d.value() < 0) tkcntHistosTkProbIPneg2D->fill(jetFlavour, trackQual, prob2d[selectedIndices[n]],
true,w);
693 else tkcntHistosTkProbIPpos2D->fill(jetFlavour, trackQual, prob2d[selectedIndices[n]],
true,w);
695 tkcntHistosProb2D[
n]->fill(jetFlavour, trackQual, prob2d[selectedIndices[n]],
true,w);
697 for(
unsigned int n=selectedIndices.size();
n < 4; ++
n){
699 tkcntHistosSig2D[
n]->fill(jetFlavour, trackQual, lowerIPSBound-1.0,
false,w);
700 tkcntHistosVal2D[
n]->fill(jetFlavour, trackQual, lowerIPBound-1.0,
false,w);
701 tkcntHistosErr2D[
n]->fill(jetFlavour, trackQual, lowerIPEBound-1.0,
false,w);
704 selectedIndices.clear();
706 selectedTracks.clear();
707 for(
unsigned int n = 0;
n != sortedIndices.size(); ++
n) {
709 double jetDistance = ip[sortedIndices[
n]].distanceToJetAxis.value();
710 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
711 fabs(jetDistance) >= minJetDistance && fabs(jetDistance) < maxJetDistance ) {
712 selectedIndices.push_back(sortedIndices[
n]);
713 selectedTracks.push_back(sortedTracks[n]);
717 trkNbr3D->fill(jetFlavour, selectedIndices.size(),
w);
718 int nSelectedTracks = selectedIndices.size();
720 for(
unsigned int n=0;
n != selectedIndices.size(); ++
n) {
723 tkcntHistosSig3D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.significance(),
true,
w);
724 tkcntHistosVal3D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.value(),
true,
w);
725 tkcntHistosErr3D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.error(),
true,
w);
726 const double& decayLen = (ip[selectedIndices[
n]].closestToJetAxis -
pv).
mag();
727 tkcntHistosDecayLengthVal3D[4]->fill(jetFlavour, trackQual, decayLen,
true,w);
728 tkcntHistosJetDistVal3D[4]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.value(),
true,
w);
730 tkcntHistosTkNChiSqr3D[4]->fill(jetFlavour, trackQual, track->
normalizedChi2(),
true,
w);
731 tkcntHistosTkPt3D[4]->fill(jetFlavour, trackQual, track->
pt(),
true,
w);
732 tkcntHistosTkNHits3D[4]->fill(jetFlavour, trackQual, track->
found(),
true,
w);
735 ghostTrackDistanceValuHisto->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToGhostTrack.value(),
true,
w);
736 ghostTrackDistanceSignHisto->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToGhostTrack.significance(),
true,
w);
737 ghostTrackWeightHisto->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ghostTrackWeight,
true,w);
738 selectedTrackQualHisto->fill(jetFlavour, trackQual,w);
740 tkcntHistosSig3D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.significance(),
true,
w);
741 tkcntHistosVal3D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.value(),
true,
w);
742 tkcntHistosErr3D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.error(),
true,
w);
743 tkcntHistosDecayLengthVal3D[
n]->fill(jetFlavour, trackQual, decayLen,
true,w);
744 tkcntHistosJetDistVal3D[
n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.value(),
true,
w);
746 tkcntHistosTkNChiSqr3D[
n]->fill(jetFlavour, trackQual, track->
normalizedChi2(),
true,
w);
747 tkcntHistosTkPt3D[
n]->fill(jetFlavour, trackQual, track->
pt(),
true,
w);
748 tkcntHistosTkNHits3D[
n]->fill(jetFlavour, trackQual, track->
found(),
true,
w);
752 selectedIndices.clear();
754 selectedTracks.clear();
755 for(
unsigned int n = 0;
n != sortedIndices.size(); ++
n) {
757 double jetDistance = ip[sortedIndices[
n]].distanceToJetAxis.value();
758 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
759 fabs(jetDistance) >= minJetDistance && fabs(jetDistance) < maxJetDistance ) {
760 selectedIndices.push_back(sortedIndices[
n]);
761 selectedTracks.push_back(sortedTracks[n]);
764 for(
unsigned int n=0;
n != selectedIndices.size(); ++
n) {
767 tkcntHistosProb3D[4]->fill(jetFlavour, trackQual, prob3d[selectedIndices[n]],
true,w);
768 if(ip[selectedIndices[n]].ip3d.value() < 0) tkcntHistosTkProbIPneg3D->fill(jetFlavour, trackQual, prob3d[selectedIndices[n]],
true,w);
769 else tkcntHistosTkProbIPpos3D->fill(jetFlavour, trackQual, prob3d[selectedIndices[n]],
true,w);
771 tkcntHistosProb3D[
n]->fill(jetFlavour, trackQual, prob3d[selectedIndices[n]],
true,w);
773 for(
unsigned int n=selectedIndices.size();
n < 4; ++
n){
775 tkcntHistosSig3D[
n]->fill(jetFlavour, trackQual, lowerIPSBound-1.0,
false,w);
776 tkcntHistosVal3D[
n]->fill(jetFlavour, trackQual, lowerIPBound-1.0,
false,w);
777 tkcntHistosErr3D[
n]->fill(jetFlavour, trackQual, lowerIPEBound-1.0,
false,w);
779 for(
unsigned int n = 0;
n != sortedTracks.size(); ++
n) {
784 trackMultVsJetPtHisto->fill(jetFlavour, tagInfo->jet()->pt()*
jec, sortedTracks.size());
785 selectedTrackMultVsJetPtHisto->fill(jetFlavour, tagInfo->jet()->pt()*
jec, nSelectedTracks);
788 template <
class Container,
class Base>
795 const std::string trackIPDir(theExtensionString.substr(1));
798 (
"ips2_3D" + theExtensionString,
"3D IP significance 2.trk",
799 nBinsIPS, lowerIPSBound, upperIPSBound,
"b", trackIPDir, mcPlots_, makeQualityPlots_, igetter_) ;
800 effPurFromHistos[0] =
new EffPurFromHistos (tkcntHistosSig3D[1],trackIPDir, mcPlots_, ibook_,
801 nBinEffPur_, startEffPur_,
805 (
"ips3_3D" + theExtensionString,
"3D IP significance 3.trk",
806 nBinsIPS, lowerIPSBound, upperIPSBound,
"b", trackIPDir, mcPlots_, makeQualityPlots_, igetter_) ;
807 effPurFromHistos[1] =
new EffPurFromHistos (tkcntHistosSig3D[2],trackIPDir, mcPlots_, ibook_,
808 nBinEffPur_, startEffPur_,
812 (
"ips2_2D" + theExtensionString,
"2D IP significance 2.trk",
813 nBinsIPS, lowerIPSBound, upperIPSBound,
"b", trackIPDir, mcPlots_, makeQualityPlots_, igetter_) ;
814 effPurFromHistos[2] =
new EffPurFromHistos (tkcntHistosSig2D[1],trackIPDir, mcPlots_, ibook_,
815 nBinEffPur_, startEffPur_,
819 (
"ips3_2D" + theExtensionString,
"2D IP significance 3.trk",
820 nBinsIPS, lowerIPSBound, upperIPSBound,
"b", trackIPDir, mcPlots_, makeQualityPlots_, igetter_) ;
821 effPurFromHistos[3] =
new EffPurFromHistos (tkcntHistosSig2D[2],trackIPDir, mcPlots_, ibook_,
822 nBinEffPur_, startEffPur_,
825 for(
int n=0;
n != 4; ++
n) effPurFromHistos[
n]->
compute(ibook_);
829 template <
class Container,
class Base>
832 const std::string cName(
"TrackIPPlots"+ theExtensionString);
834 TCanvas
canvas(cName.c_str(), cName.c_str(), 600, 900);
837 for(
int n=0;
n != 2; ++
n) {
838 canvas.Print((name + cName +
".ps").c_str());
842 effPurFromHistos[0+
n]->discriminatorNoCutEffic()->plot();
844 effPurFromHistos[0+
n]->discriminatorCutEfficScan()->plot();
846 effPurFromHistos[0+
n]->plot();
848 effPurFromHistos[1+
n]->discriminatorNoCutEffic()->plot();
850 effPurFromHistos[1+
n]->discriminatorCutEfficScan()->plot();
852 effPurFromHistos[1+
n]->plot();
857 canvas.Print((name + cName +
".ps[").c_str());
864 tkcntHistosSig3D[4]->plot();
865 for(
int n=0;
n < 4;
n++) {
867 tkcntHistosSig3D[
n]->plot();
870 canvas.Print((name + cName +
".ps").c_str());
877 tkcntHistosProb3D[4]->plot();
878 for(
int n=0;
n < 4;
n++) {
880 tkcntHistosProb3D[
n]->plot();
883 canvas.Print((name + cName +
".ps").c_str());
889 tkcntHistosSig2D[4]->plot();
890 for(
int n=0;
n != 4; ++
n) {
892 tkcntHistosSig2D[
n]->plot();
895 canvas.Print((name + cName +
".ps").c_str());
901 tkcntHistosProb2D[4]->plot();
902 for(
int n=0;
n != 4; ++
n) {
904 tkcntHistosProb2D[
n]->plot();
907 canvas.Print((name + cName +
".ps").c_str());
911 ghostTrackDistanceValuHisto->plot();
913 ghostTrackDistanceSignHisto->plot();
915 ghostTrackWeightHisto->plot();
917 canvas.Print((name + cName +
".ps").c_str());
918 canvas.Print((name + cName +
".ps]").c_str());
922 template <
class Container,
class Base>
926 for(
int n=0;
n != 4; ++
n) effPurFromHistos[
n]->epsPlot(name);
929 trkNbr2D->epsPlot(name);
930 trkNbr3D->epsPlot(name);
931 tkcntHistosTkProbIPneg2D->epsPlot(name);
932 tkcntHistosTkProbIPpos2D->epsPlot(name);
933 tkcntHistosTkProbIPneg3D->epsPlot(name);
934 tkcntHistosTkProbIPpos3D->epsPlot(name);
935 ghostTrackDistanceValuHisto->epsPlot(name);
936 ghostTrackDistanceSignHisto->epsPlot(name);
937 ghostTrackWeightHisto->epsPlot(name);
938 for(
int n=0;
n != 5; ++
n) {
939 tkcntHistosSig2D[
n]->epsPlot(name);
940 tkcntHistosSig3D[
n]->epsPlot(name);
941 tkcntHistosVal2D[
n]->epsPlot(name);
942 tkcntHistosVal3D[
n]->epsPlot(name);
943 tkcntHistosErr2D[
n]->epsPlot(name);
944 tkcntHistosErr3D[
n]->epsPlot(name);
945 tkcntHistosProb2D[
n]->epsPlot(name);
946 tkcntHistosProb3D[
n]->epsPlot(name);
947 tkcntHistosDecayLengthVal2D[
n]->epsPlot(name);
948 tkcntHistosDecayLengthVal3D[
n]->epsPlot(name);
949 tkcntHistosJetDistVal2D[
n]->epsPlot(name);
950 tkcntHistosJetDistVal3D[
n]->epsPlot(name);
953 tkcntHistosTkNChiSqr2D[
n]->epsPlot(name);
954 tkcntHistosTkNChiSqr3D[
n]->epsPlot(name);
955 tkcntHistosTkPt2D[
n]->epsPlot(name);
956 tkcntHistosTkPt3D[
n]->epsPlot(name);
957 tkcntHistosTkNHits2D[
n]->epsPlot(name);
958 tkcntHistosTkNHits3D[
n]->epsPlot(name);
959 tkcntHistosTkNPixelHits2D[
n]->epsPlot(name);
960 tkcntHistosTkNPixelHits3D[
n]->epsPlot(name);
965 template <
class Container,
class Base>
TrackIPHistograms< double > * tkcntHistosTkNChiSqr2D[5]
const std::vector< float > & probabilities(int ip) const
TrackIPHistograms< double > * tkcntHistosDecayLengthVal3D[5]
TrackIPHistograms< double > * ghostTrackDistanceValuHisto
TrackIPHistograms< double > * tkcntHistosVal3D[5]
TrackIPHistograms< int > * tkcntHistosTkNHits3D[5]
EcalChannelStatus Container
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
TrackIPHistograms< float > * tkcntHistosTkProbIPneg2D
void analyzeTag(const reco::BaseTagInfo *baseTagInfo, const double &jec, const int &jetFlavour)
TrackQuality
track quality
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
TrackIPHistograms< float > * tkcntHistosProb3D[5]
TrackIPHistograms< double > * ghostTrackWeightHisto
TrackIPHistograms< float > * tkcntHistosTkProbIPneg3D
TrackIPHistograms< double > * tkcntHistosTkPt2D[5]
const std::string theExtensionString
TrackIPHistograms< double > * tkcntHistosDecayLengthVal2D[5]
TrackIPHistograms< int > * tkcntHistosTkNHits2D[5]
FlavourHistograms< int > * trackQualHisto
TrackIPHistograms< double > * tkcntHistosVal2D[5]
IPTagPlotter(const std::string &tagName, const EtaPtBin &etaPtBin, const edm::ParameterSet &pSet, const unsigned int &mc, const bool &wf, DQMStore::IBooker &ibook)
TrackIPHistograms< double > * tkcntHistosJetDistVal3D[5]
const reco::Track * toTrack(const reco::TrackBaseRef &t)
const edm::Ref< VertexCollection > & primaryVertex() const
FlavourHistograms< int > * trkNbr2D
TrackIPHistograms< float > * tkcntHistosTkProbIPpos3D
FlavourHistograms2D< double, int > * selectedTrackMultVsJetPtHisto
double pt() const
track transverse momentum
TrackIPHistograms< double > * ghostTrackDistanceSignHisto
FlavourHistograms< int > * selectedTrackQualHisto
TrackIPHistograms< double > * tkcntHistosSig3D[5]
FlavourHistograms2D< double, int > * trackMultVsJetPtHisto
std::vector< size_t > sortedIndexes(btag::SortCriteria mode=reco::btag::IP3DSig) const
FlavourHistograms< int > * trkNbr3D
virtual void finalize(DQMStore::IBooker &ibook_, DQMStore::IGetter &igetter_)
const std::vector< btag::TrackIPData > & impactParameterData() const
TrackIPHistograms< double > * tkcntHistosErr3D[5]
reco::TrackBase::TrackQuality highestTrackQual(const reco::Track *track) const
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
TrackIPHistograms< double > * tkcntHistosTkPt3D[5]
bool quality(const TrackQuality) const
Track quality.
TrackIPHistograms< float > * tkcntHistosProb2D[5]
TrackIPHistograms< int > * tkcntHistosTkNPixelHits3D[5]
void epsPlot(const std::string &name)
TrackIPHistograms< float > * tkcntHistosTkProbIPpos2D
unsigned short found() const
Number of valid hits on track.
int numberOfValidPixelHits() const
void psPlot(const std::string &name)
TrackIPHistograms< double > * tkcntHistosSig2D[5]
TrackIPHistograms< double > * tkcntHistosTkNChiSqr3D[5]
Container sortedTracks(const std::vector< size_t > &indexes) const
TrackIPHistograms< int > * tkcntHistosTkNPixelHits2D[5]
TrackIPHistograms< double > * tkcntHistosErr2D[5]
virtual bool hasProbabilities() const
TrackIPHistograms< double > * tkcntHistosJetDistVal2D[5]