00001 #include <cstddef>
00002 #include <string>
00003
00004 #include "DataFormats/VertexReco/interface/Vertex.h"
00005
00006 #include "DQMOffline/RecoB/interface/TrackIPTagPlotter.h"
00007
00008 TrackIPTagPlotter::TrackIPTagPlotter(const std::string & tagName,
00009 const EtaPtBin & etaPtBin, const edm::ParameterSet& pSet, const bool& update, const bool& mc, const bool& wf) :
00010 BaseTagInfoPlotter(tagName, etaPtBin),
00011 nBinEffPur_(pSet.getParameter<int>("nBinEffPur")),
00012 startEffPur_(pSet.getParameter<double>("startEffPur")),
00013 endEffPur_(pSet.getParameter<double>("endEffPur")),
00014 mcPlots_(mc), willFinalize_(wf),
00015 makeQualityPlots_(pSet.getParameter<bool>("QualityPlots")),
00016 lowerIPSBound(pSet.getParameter<double>("LowerIPSBound")),
00017 upperIPSBound(pSet.getParameter<double>("UpperIPSBound")),
00018 lowerIPBound(pSet.getParameter<double>("LowerIPBound")),
00019 upperIPBound(pSet.getParameter<double>("UpperIPBound")),
00020 lowerIPEBound(pSet.getParameter<double>("LowerIPEBound")),
00021 upperIPEBound(pSet.getParameter<double>("UpperIPEBound")),
00022 nBinsIPS(pSet.getParameter<int>("NBinsIPS")),
00023 nBinsIP(pSet.getParameter<int>("NBinsIP")),
00024 nBinsIPE(pSet.getParameter<int>("NBinsIPE")),
00025 minDecayLength(pSet.getParameter<double>("MinDecayLength")),
00026 maxDecayLength(pSet.getParameter<double>("MaxDecayLength")),
00027 minJetDistance(pSet.getParameter<double>("MinJetDistance")),
00028 maxJetDistance(pSet.getParameter<double>("MaxJetDistance")),
00029 finalized(false)
00030 {
00031 const std::string trackIPDir(theExtensionString.substr(1));
00032
00033 trkNbr3D = new TrackIPHistograms<int>
00034 ("selTrksNbr_3D" + theExtensionString, "Number of selected tracks for 3D IPS", 31, -0.5, 30.5,
00035 false, true, true, "b", update,trackIPDir ,mc, makeQualityPlots_);
00036
00037 trkNbr2D = new TrackIPHistograms<int>
00038 ("selTrksNbr_2D" + theExtensionString, "Number of selected tracks for 2D IPS", 31, -0.5, 30.5,
00039 false, true, true, "b", update,trackIPDir ,mc, makeQualityPlots_);
00040
00041
00042
00043 tkcntHistosSig3D[4] = new TrackIPHistograms<double>
00044 ("ips_3D" + theExtensionString, "3D IP significance",
00045 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00046
00047 tkcntHistosSig3D[0] = new TrackIPHistograms<double>
00048 ("ips1_3D" + theExtensionString, "3D IP significance 1.trk",
00049 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir,mc, makeQualityPlots_) ;
00050
00051 tkcntHistosSig3D[1] = new TrackIPHistograms<double>
00052 ("ips2_3D" + theExtensionString, "3D IP significance 2.trk",
00053 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00054
00055 tkcntHistosSig3D[2] = new TrackIPHistograms<double>
00056 ("ips3_3D" + theExtensionString, "3D IP significance 3.trk",
00057 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00058
00059 tkcntHistosSig3D[3] = new TrackIPHistograms<double>
00060 ("ips4_3D" + theExtensionString, "3D IP significance 4.trk",
00061 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00062
00063
00064 tkcntHistosSig2D[4] = new TrackIPHistograms<double>
00065 ("ips_2D" + theExtensionString, "2D IP significance",
00066 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00067
00068 tkcntHistosSig2D[0] = new TrackIPHistograms<double>
00069 ("ips1_2D" + theExtensionString, "2D IP significance 1.trk",
00070 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00071
00072 tkcntHistosSig2D[1] = new TrackIPHistograms<double>
00073 ("ips2_2D" + theExtensionString, "2D IP significance 2.trk",
00074 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00075
00076 tkcntHistosSig2D[2] = new TrackIPHistograms<double>
00077 ("ips3_2D" + theExtensionString, "2D IP significance 3.trk",
00078 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00079
00080 tkcntHistosSig2D[3] = new TrackIPHistograms<double>
00081 ("ips4" + theExtensionString, "2D IP significance 4.trk",
00082 nBinsIPS, lowerIPSBound, upperIPSBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00083
00084
00085
00086 tkcntHistosVal3D[4] = new TrackIPHistograms<double>
00087 ("ip_3D" + theExtensionString, "3D IP value",
00088 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00089
00090 tkcntHistosVal3D[0] = new TrackIPHistograms<double>
00091 ("ip1_3D" + theExtensionString, "3D IP value 1.trk",
00092 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00093
00094 tkcntHistosVal3D[1] = new TrackIPHistograms<double>
00095 ("ip2_3D" + theExtensionString, "3D IP value 2.trk",
00096 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00097
00098 tkcntHistosVal3D[2] = new TrackIPHistograms<double>
00099 ("ip3_3D" + theExtensionString, "3D IP value 3.trk",
00100 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00101
00102 tkcntHistosVal3D[3] = new TrackIPHistograms<double>
00103 ("ip4_3D" + theExtensionString, "3D IP value 4.trk",
00104 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00105
00106
00107 tkcntHistosVal2D[4] = new TrackIPHistograms<double>
00108 ("ip_2D" + theExtensionString, "2D IP value",
00109 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00110
00111 tkcntHistosVal2D[0] = new TrackIPHistograms<double>
00112 ("ip1_2D" + theExtensionString, "2D IP value 1.trk",
00113 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00114
00115 tkcntHistosVal2D[1] = new TrackIPHistograms<double>
00116 ("ip2_2D" + theExtensionString, "2D IP value 2.trk",
00117 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00118
00119 tkcntHistosVal2D[2] = new TrackIPHistograms<double>
00120 ("ip3_2D" + theExtensionString, "2D IP value 3.trk",
00121 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00122
00123 tkcntHistosVal2D[3] = new TrackIPHistograms<double>
00124 ("ip4" + theExtensionString, "2D IP value 4.trk",
00125 nBinsIP, lowerIPBound, upperIPBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00126
00127
00128
00129
00130 tkcntHistosErr3D[4] = new TrackIPHistograms<double>
00131 ("ipe_3D" + theExtensionString, "3D IP error",
00132 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00133
00134 tkcntHistosErr3D[0] = new TrackIPHistograms<double>
00135 ("ipe1_3D" + theExtensionString, "3D IP error 1.trk",
00136 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00137
00138 tkcntHistosErr3D[1] = new TrackIPHistograms<double>
00139 ("ipe2_3D" + theExtensionString, "3D IP error 2.trk",
00140 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00141
00142 tkcntHistosErr3D[2] = new TrackIPHistograms<double>
00143 ("ipe3_3D" + theExtensionString, "3D IP error 3.trk",
00144 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00145
00146 tkcntHistosErr3D[3] = new TrackIPHistograms<double>
00147 ("ipe4_3D" + theExtensionString, "3D IP error 4.trk",
00148 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00149
00150
00151 tkcntHistosErr2D[4] = new TrackIPHistograms<double>
00152 ("ipe_2D" + theExtensionString, "2D IP error",
00153 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00154
00155 tkcntHistosErr2D[0] = new TrackIPHistograms<double>
00156 ("ipe1_2D" + theExtensionString, "2D IP error 1.trk",
00157 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00158
00159 tkcntHistosErr2D[1] = new TrackIPHistograms<double>
00160 ("ipe2_2D" + theExtensionString, "2D IP error 2.trk",
00161 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00162
00163 tkcntHistosErr2D[2] = new TrackIPHistograms<double>
00164 ("ipe3_2D" + theExtensionString, "2D IP error 3.trk",
00165 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00166
00167 tkcntHistosErr2D[3] = new TrackIPHistograms<double>
00168 ("ipe4_2D" + theExtensionString, "2D IP error 4.trk",
00169 nBinsIPE, lowerIPEBound, upperIPEBound, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00170
00171
00172 tkcntHistosDecayLengthVal2D[4] = new TrackIPHistograms<double>
00173 ("decLen_2D" + theExtensionString, "Decay Length 2D",
00174 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00175
00176 tkcntHistosDecayLengthVal2D[0] = new TrackIPHistograms<double>
00177 ("decLen1_2D" + theExtensionString, "2D Decay Length 1.trk",
00178 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00179
00180 tkcntHistosDecayLengthVal2D[1] = new TrackIPHistograms<double>
00181 ("decLen2_2D" + theExtensionString, "2D Decay Length 2.trk",
00182 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00183
00184 tkcntHistosDecayLengthVal2D[2] = new TrackIPHistograms<double>
00185 ("decLen3_2D" + theExtensionString, "2D Decay Length 3.trk",
00186 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00187
00188 tkcntHistosDecayLengthVal2D[3] = new TrackIPHistograms<double>
00189 ("decLen4_2D" + theExtensionString, "2D Decay Length 4.trk",
00190 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00191
00192 tkcntHistosDecayLengthVal3D[4] = new TrackIPHistograms<double>
00193 ("decLen_3D" + theExtensionString, "3D Decay Length",
00194 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00195
00196 tkcntHistosDecayLengthVal3D[0] = new TrackIPHistograms<double>
00197 ("decLen1_3D" + theExtensionString, "3D Decay Length 1.trk",
00198 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00199
00200 tkcntHistosDecayLengthVal3D[1] = new TrackIPHistograms<double>
00201 ("decLen2_3D" + theExtensionString, "3D Decay Length 2.trk",
00202 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00203
00204 tkcntHistosDecayLengthVal3D[2] = new TrackIPHistograms<double>
00205 ("decLen3_3D" + theExtensionString, "3D Decay Length 3.trk",
00206 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00207
00208 tkcntHistosDecayLengthVal3D[3] = new TrackIPHistograms<double>
00209 ("decLen4_3D" + theExtensionString, "3D Decay Length 4.trk",
00210 50, -5.0, 5.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00211
00212
00213 tkcntHistosJetDistVal2D[4] = new TrackIPHistograms<double>
00214 ("jetDist_2D" + theExtensionString, "JetDistance 2D",
00215 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00216
00217 tkcntHistosJetDistVal2D[0] = new TrackIPHistograms<double>
00218 ("jetDist1_2D" + theExtensionString, "JetDistance 2D 1.trk",
00219 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00220
00221 tkcntHistosJetDistVal2D[1] = new TrackIPHistograms<double>
00222 ("jetDist2_2D" + theExtensionString, "JetDistance 2D 2.trk",
00223 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00224
00225 tkcntHistosJetDistVal2D[2] = new TrackIPHistograms<double>
00226 ("jetDist3_2D" + theExtensionString, "JetDistance 2D 3.trk",
00227 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00228
00229 tkcntHistosJetDistVal2D[3] = new TrackIPHistograms<double>
00230 ("jetDist4_2D" + theExtensionString, "JetDistance 2D 4.trk",
00231 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00232
00233 tkcntHistosJetDistVal3D[4] = new TrackIPHistograms<double>
00234 ("jetDist_3D" + theExtensionString, "JetDistance 3D",
00235 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00236
00237 tkcntHistosJetDistVal3D[0] = new TrackIPHistograms<double>
00238 ("jetDist1_3D" + theExtensionString, "JetDistance 3D 1.trk",
00239 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00240
00241 tkcntHistosJetDistVal3D[1] = new TrackIPHistograms<double>
00242 ("jetDist2_3D" + theExtensionString, "JetDistance 3D 2.trk",
00243 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00244
00245 tkcntHistosJetDistVal3D[2] = new TrackIPHistograms<double>
00246 ("jetDist3_3D" + theExtensionString, "JetDistance 3D 3.trk",
00247 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00248
00249 tkcntHistosJetDistVal3D[3] = new TrackIPHistograms<double>
00250 ("jetDist4_3D" + theExtensionString, "JetDistance 3D 4.trk",
00251 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00252
00253 tkcntHistosJetDistSign2D[4] = new TrackIPHistograms<double>
00254 ("jetDist_2D" + theExtensionString, "JetDistance Sign 2D",
00255 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00256
00257 tkcntHistosJetDistSign2D[0] = new TrackIPHistograms<double>
00258 ("jetDist1_2D" + theExtensionString, "JetDistance Sign 2D 1.trk",
00259 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00260
00261 tkcntHistosJetDistSign2D[1] = new TrackIPHistograms<double>
00262 ("jetDist2_2D" + theExtensionString, "JetDistance Sign 2D 2.trk",
00263 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00264
00265 tkcntHistosJetDistSign2D[2] = new TrackIPHistograms<double>
00266 ("jetDist3_2D" + theExtensionString, "JetDistance Sign 2D 3.trk",
00267 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00268
00269 tkcntHistosJetDistSign2D[3] = new TrackIPHistograms<double>
00270 ("jetDist4_2D" + theExtensionString, "JetDistance Sign 2D 4.trk",
00271 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00272
00273 tkcntHistosJetDistSign3D[4] = new TrackIPHistograms<double>
00274 ("jetDist_3D" + theExtensionString, "JetDistance Sign 3D",
00275 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00276
00277 tkcntHistosJetDistSign3D[0] = new TrackIPHistograms<double>
00278 ("jetDist1_3D" + theExtensionString, "JetDistance Sign 3D 1.trk",
00279 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00280
00281 tkcntHistosJetDistSign3D[1] = new TrackIPHistograms<double>
00282 ("jetDist2_3D" + theExtensionString, "JetDistance Sign 3D 2.trk",
00283 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00284
00285 tkcntHistosJetDistSign3D[2] = new TrackIPHistograms<double>
00286 ("jetDist3_3D" + theExtensionString, "JetDistance Sign 3D 3.trk",
00287 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00288
00289 tkcntHistosJetDistSign3D[3] = new TrackIPHistograms<double>
00290 ("jetDist4_3D" + theExtensionString, "JetDistance Sign 3D 4.trk",
00291 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00292
00293
00294 tkcntHistosTkNChiSqr2D[4] = new TrackIPHistograms<double>
00295 ("tkNChiSqr_2D" + theExtensionString, "Normalized Chi Squared 2D",
00296 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00297
00298 tkcntHistosTkNChiSqr2D[0] = new TrackIPHistograms<double>
00299 ("tkNChiSqr1_2D" + theExtensionString, "Normalized Chi Squared 2D 1.trk",
00300 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00301
00302 tkcntHistosTkNChiSqr2D[1] = new TrackIPHistograms<double>
00303 ("tkNChiSqr2_2D" + theExtensionString, "Normalized Chi Squared 2D 2.trk",
00304 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00305
00306 tkcntHistosTkNChiSqr2D[2] = new TrackIPHistograms<double>
00307 ("tkNChiSqr3_2D" + theExtensionString, "Normalized Chi Squared 2D 3.trk",
00308 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00309
00310 tkcntHistosTkNChiSqr2D[3] = new TrackIPHistograms<double>
00311 ("tkNChiSqr4_2D" + theExtensionString, "Normalized Chi Squared 2D 4.trk",
00312 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00313
00314 tkcntHistosTkNChiSqr3D[4] = new TrackIPHistograms<double>
00315 ("tkNChiSqr_3D" + theExtensionString, "Normalized Chi Squared 3D",
00316 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00317
00318 tkcntHistosTkNChiSqr3D[0] = new TrackIPHistograms<double>
00319 ("tkNChiSqr1_3D" + theExtensionString, "Normalized Chi Squared 3D 1.trk",
00320 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00321
00322 tkcntHistosTkNChiSqr3D[1] = new TrackIPHistograms<double>
00323 ("tkNChiSqr2_3D" + theExtensionString, "Normalized Chi Squared 3D 2.trk",
00324 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00325
00326 tkcntHistosTkNChiSqr3D[2] = new TrackIPHistograms<double>
00327 ("tkNChiSqr3_3D" + theExtensionString, "Normalized Chi Squared 3D 3.trk",
00328 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00329
00330 tkcntHistosTkNChiSqr3D[3] = new TrackIPHistograms<double>
00331 ("tkNChiSqr4_3D" + theExtensionString, "Normalized Chi Squared 3D 4.trk",
00332 50, -0.1, 10.0, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00333
00334
00335 tkcntHistosTkPt2D[4] = new TrackIPHistograms<double>
00336 ("tkPt_2D" + theExtensionString, "Track Pt 2D",
00337 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00338
00339 tkcntHistosTkPt2D[0] = new TrackIPHistograms<double>
00340 ("tkPt1_2D" + theExtensionString, "Track Pt 2D 1.trk",
00341 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00342
00343 tkcntHistosTkPt2D[1] = new TrackIPHistograms<double>
00344 ("tkPt2_2D" + theExtensionString, "Track Pt 2D 2.trk",
00345 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00346
00347 tkcntHistosTkPt2D[2] = new TrackIPHistograms<double>
00348 ("tkPt3_2D" + theExtensionString, "Track Pt 2D 3.trk",
00349 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00350
00351 tkcntHistosTkPt2D[3] = new TrackIPHistograms<double>
00352 ("tkPt4_2D" + theExtensionString, "Track Pt 2D 4.trk",
00353 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00354
00355 tkcntHistosTkPt3D[4] = new TrackIPHistograms<double>
00356 ("tkPt_3D" + theExtensionString, "Track Pt 3D",
00357 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00358
00359 tkcntHistosTkPt3D[0] = new TrackIPHistograms<double>
00360 ("tkPt1_3D" + theExtensionString, "Track Pt 3D 1.trk",
00361 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00362
00363 tkcntHistosTkPt3D[1] = new TrackIPHistograms<double>
00364 ("tkPt2_3D" + theExtensionString, "Track Pt 3D 2.trk",
00365 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00366
00367 tkcntHistosTkPt3D[2] = new TrackIPHistograms<double>
00368 ("tkPt3_3D" + theExtensionString, "Track Pt 3D 3.trk",
00369 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00370
00371 tkcntHistosTkPt3D[3] = new TrackIPHistograms<double>
00372 ("tkPt4_3D" + theExtensionString, "Track Pt 3D 4.trk",
00373 50, -0.1, 50.1, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00374
00375
00376 tkcntHistosTkNHits2D[4] = new TrackIPHistograms<int>
00377 ("tkNHits_2D" + theExtensionString, "Track NHits 2D",
00378 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00379
00380 tkcntHistosTkNHits2D[0] = new TrackIPHistograms<int>
00381 ("tkNHits1_2D" + theExtensionString, "Track NHits 2D 1.trk",
00382 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00383
00384 tkcntHistosTkNHits2D[1] = new TrackIPHistograms<int>
00385 ("tkNHits2_2D" + theExtensionString, "Track NHits 2D 2.trk",
00386 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00387
00388 tkcntHistosTkNHits2D[2] = new TrackIPHistograms<int>
00389 ("tkNHits3_2D" + theExtensionString, "Track NHits 2D 3.trk",
00390 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00391
00392 tkcntHistosTkNHits2D[3] = new TrackIPHistograms<int>
00393 ("tkNHits4_2D" + theExtensionString, "Track NHits 2D 4.trk",
00394 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00395
00396 tkcntHistosTkNHits3D[4] = new TrackIPHistograms<int>
00397 ("tkNHits_3D" + theExtensionString, "Track NHits 3D",
00398 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00399
00400 tkcntHistosTkNHits3D[0] = new TrackIPHistograms<int>
00401 ("tkNHits1_3D" + theExtensionString, "Track NHits 3D 1.trk",
00402 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00403
00404 tkcntHistosTkNHits3D[1] = new TrackIPHistograms<int>
00405 ("tkNHits2_3D" + theExtensionString, "Track NHits 3D 2.trk",
00406 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00407
00408 tkcntHistosTkNHits3D[2] = new TrackIPHistograms<int>
00409 ("tkNHits3_3D" + theExtensionString, "Track NHits 3D 3.trk",
00410 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00411
00412 tkcntHistosTkNHits3D[3] = new TrackIPHistograms<int>
00413 ("tkNHits4_3D" + theExtensionString, "Track NHits 3D 4.trk",
00414 31, -0.5, 30.5, false, true, true, "b", update, trackIPDir, mc, makeQualityPlots_);
00415
00416
00417 tkcntHistosProb3D[4] = new TrackIPHistograms<float>
00418 ("prob_3D" + theExtensionString, "3D IP probability",
00419 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00420
00421 tkcntHistosProb3D[0] = new TrackIPHistograms<float>
00422 ("prob1_3D" + theExtensionString, "3D IP probability 1.trk",
00423 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00424
00425 tkcntHistosProb3D[1] = new TrackIPHistograms<float>
00426 ("prob2_3D" + theExtensionString, "3D IP probability 2.trk",
00427 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00428
00429 tkcntHistosProb3D[2] = new TrackIPHistograms<float>
00430 ("prob3_3D" + theExtensionString, "3D IP probability 3.trk",
00431 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00432
00433 tkcntHistosProb3D[3] = new TrackIPHistograms<float>
00434 ("prob4_3D" + theExtensionString, "3D IP probability 4.trk",
00435 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00436
00437 tkcntHistosProb2D[4] = new TrackIPHistograms<float>
00438 ("prob_2D" + theExtensionString, "2D IP probability",
00439 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00440
00441 tkcntHistosProb2D[0] = new TrackIPHistograms<float>
00442 ("prob1_2D" + theExtensionString, "2D IP probability 1.trk",
00443 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00444
00445 tkcntHistosProb2D[1] = new TrackIPHistograms<float>
00446 ("prob2_2D" + theExtensionString, "2D IP probability 2.trk",
00447 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00448
00449 tkcntHistosProb2D[2] = new TrackIPHistograms<float>
00450 ("prob3_2D" + theExtensionString, "2D IP probability 3.trk",
00451 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00452
00453 tkcntHistosProb2D[3] = new TrackIPHistograms<float>
00454 ("prob4" + theExtensionString, "2D IP probability 4.trk",
00455 50, -1.1, 1.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_) ;
00456
00457 ghostTrackDistanceValuHisto = new TrackIPHistograms<double>
00458 ("ghostTrackDist" + theExtensionString, "GhostTrackDistance",
00459 50, -0.1, 0.1, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00460 ghostTrackDistanceSignHisto = new TrackIPHistograms<double>
00461 ("ghostTrackDistSign" + theExtensionString, "GhostTrackDistance significance",
00462 50, -100.0, 100.0, false, true, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00463 ghostTrackWeightHisto = new TrackIPHistograms<double>
00464 ("ghostTrackWeight" + theExtensionString, "GhostTrack fit participation weight",
00465 50, 0.0, 1.0, false, false, true, "b", update,trackIPDir, mc, makeQualityPlots_);
00466
00467 trackQualHisto = new FlavourHistograms<int>
00468 ("trackQual" + theExtensionString, "Track Quality of Tracks Associated to Jets",
00469 4, -1.5, 2.5, false, true, true, "b", update, trackIPDir, mc);
00470
00471 selectedTrackQualHisto = new FlavourHistograms<int>
00472 ("selectedTrackQual" + theExtensionString, "Track Quality of Selected Tracks Associated to Jets",
00473 4, -1.5, 2.5, false, true, true, "b", update, trackIPDir, mc);
00474
00475 trackMultVsJetPtHisto = new FlavourHistograms2D<double, int>
00476 ("trackMultVsJetPt" + theExtensionString, "Track Multiplicity vs Jet Pt for Tracks Associated to Jets",
00477 50, 0.0, 250.0, 21, -0.5, 30.5, false, update, trackIPDir, mc, true);
00478
00479 selectedTrackMultVsJetPtHisto = new FlavourHistograms2D<double, int>
00480 ("selectedTrackMultVsJetPt" + theExtensionString, "Track Multiplicity vs Jet Pt for Selected Tracks Associated to Jets",
00481 50, 0.0, 250.0, 21, -0.5, 20.5, false, update, trackIPDir, mc, true);
00482
00483 if (willFinalize_) createPlotsForFinalize();
00484
00485 }
00486
00487
00488 TrackIPTagPlotter::~TrackIPTagPlotter ()
00489 {
00490
00491 delete trkNbr3D;
00492 delete trkNbr2D;
00493 delete ghostTrackDistanceValuHisto;
00494 delete ghostTrackDistanceSignHisto;
00495 delete ghostTrackWeightHisto;
00496 delete trackQualHisto;
00497 delete selectedTrackQualHisto;
00498 delete trackMultVsJetPtHisto;
00499 delete selectedTrackMultVsJetPtHisto;
00500
00501 for(int n=0; n != 5; ++n) {
00502 delete tkcntHistosSig2D[n];
00503 delete tkcntHistosSig3D[n];
00504 delete tkcntHistosVal2D[n];
00505 delete tkcntHistosVal3D[n];
00506 delete tkcntHistosErr2D[n];
00507 delete tkcntHistosErr3D[n];
00508 delete tkcntHistosDecayLengthVal2D[n];
00509 delete tkcntHistosDecayLengthVal3D[n];
00510 delete tkcntHistosJetDistVal2D[n];
00511 delete tkcntHistosJetDistVal3D[n];
00512 delete tkcntHistosJetDistSign2D[n];
00513 delete tkcntHistosJetDistSign3D[n];
00514 delete tkcntHistosTkNChiSqr2D[n];
00515 delete tkcntHistosTkNChiSqr3D[n];
00516 delete tkcntHistosTkPt2D[n];
00517 delete tkcntHistosTkPt3D[n];
00518 delete tkcntHistosTkNHits2D[n];
00519 delete tkcntHistosTkNHits3D[n];
00520 delete tkcntHistosProb2D[n];
00521 delete tkcntHistosProb3D[n];
00522 }
00523 if (finalized) {
00524 for(int n=0; n != 4; ++n) delete effPurFromHistos[n];
00525 }
00526 }
00527
00528
00529 void TrackIPTagPlotter::analyzeTag (const reco::BaseTagInfo * baseTagInfo,
00530 const int & jetFlavour)
00531 {
00532
00533 const reco::TrackIPTagInfo * tagInfo =
00534 dynamic_cast<const reco::TrackIPTagInfo *>(baseTagInfo);
00535
00536 if (!tagInfo) {
00537 throw cms::Exception("Configuration")
00538 << "BTagPerformanceAnalyzer: Extended TagInfo not of type TrackIPTagInfo. " << std::endl;
00539 }
00540
00541 const GlobalPoint pv(tagInfo->primaryVertex()->position().x(),
00542 tagInfo->primaryVertex()->position().y(),
00543 tagInfo->primaryVertex()->position().z());
00544
00545 const std::vector<reco::TrackIPTagInfo::TrackIPData>& ip = tagInfo->impactParameterData();
00546
00547 std::vector<float> prob2d, prob3d;
00548 if (tagInfo->hasProbabilities()) {
00549 prob2d = tagInfo->probabilities(0);
00550 prob3d = tagInfo->probabilities(1);
00551 }
00552
00553 trkNbr3D->fill(jetFlavour, ip.size());
00554 trkNbr2D->fill(jetFlavour, ip.size());
00555
00556 std::vector<std::size_t> sortedIndices = tagInfo->sortedIndexes(reco::TrackIPTagInfo::IP2DSig);
00557 std::vector<std::size_t> selectedIndices;
00558 reco::TrackRefVector sortedTracks = tagInfo->sortedTracks(sortedIndices);
00559 reco::TrackRefVector selectedTracks;
00560 for(unsigned int n = 0; n != sortedIndices.size(); ++n) {
00561 double decayLength = (ip[sortedIndices[n]].closestToJetAxis - pv).mag();
00562 double jetDistance = ip[sortedIndices[n]].distanceToJetAxis.value();
00563 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
00564 jetDistance > minJetDistance && jetDistance < maxJetDistance ) {
00565 selectedIndices.push_back(sortedIndices[n]);
00566 selectedTracks.push_back(sortedTracks[n]);
00567 }
00568 }
00569 for(unsigned int n=0; n != selectedIndices.size() && n != 4; ++n) {
00570 const reco::TrackRef& track = sortedTracks[n];
00571 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00572 tkcntHistosSig2D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.significance(), true);
00573 tkcntHistosVal2D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.value(), true);
00574 tkcntHistosErr2D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip2d.error(), true);
00575 const double& decayLen = (ip[selectedIndices[n]].closestToJetAxis - pv).mag();
00576 tkcntHistosDecayLengthVal2D[n]->fill(jetFlavour, trackQual, decayLen, true);
00577 tkcntHistosJetDistVal2D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.value(), true);
00578 tkcntHistosJetDistSign2D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.significance(), true);
00579 tkcntHistosTkNChiSqr2D[n]->fill(jetFlavour, trackQual, track->normalizedChi2(), true);
00580 tkcntHistosTkPt2D[n]->fill(jetFlavour, trackQual, track->pt(), true);
00581 tkcntHistosTkNHits2D[n]->fill(jetFlavour, trackQual, track->found(), true);
00582 }
00583 sortedIndices = tagInfo->sortedIndexes(reco::TrackIPTagInfo::Prob2D);
00584 selectedIndices.clear();
00585 sortedTracks = tagInfo->sortedTracks(sortedIndices);
00586 selectedTracks.clear();
00587 for(unsigned int n = 0; n != sortedIndices.size(); ++n) {
00588 double decayLength = (ip[sortedIndices[n]].closestToJetAxis - pv).mag();
00589 double jetDistance = ip[sortedIndices[n]].distanceToJetAxis.value();
00590 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
00591 jetDistance > minJetDistance && jetDistance < maxJetDistance ) {
00592 selectedIndices.push_back(sortedIndices[n]);
00593 selectedTracks.push_back(sortedTracks[n]);
00594 }
00595 }
00596 for(unsigned int n=0; n != selectedIndices.size() && n != 4; ++n) {
00597 const reco::TrackRef& track = sortedTracks[n];
00598 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00599 tkcntHistosProb2D[n]->fill(jetFlavour, trackQual, prob2d[selectedIndices[n]], true);
00600 }
00601 for(unsigned int n=selectedIndices.size(); n < 4; ++n){
00602 const reco::TrackBase::TrackQuality trackQual = reco::TrackBase::undefQuality;
00603 tkcntHistosSig2D[n]->fill(jetFlavour, trackQual, lowerIPSBound-1.0, false);
00604 tkcntHistosVal2D[n]->fill(jetFlavour, trackQual, lowerIPBound-1.0, false);
00605 tkcntHistosErr2D[n]->fill(jetFlavour, trackQual, lowerIPEBound-1.0, false);
00606 }
00607 sortedIndices = tagInfo->sortedIndexes(reco::TrackIPTagInfo::IP3DSig);
00608 selectedIndices.clear();
00609 sortedTracks = tagInfo->sortedTracks(sortedIndices);
00610 selectedTracks.clear();
00611 for(unsigned int n = 0; n != sortedIndices.size(); ++n) {
00612 double decayLength = (ip[sortedIndices[n]].closestToJetAxis - pv).mag();
00613 double jetDistance = ip[sortedIndices[n]].distanceToJetAxis.value();
00614 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
00615 jetDistance > minJetDistance && jetDistance < maxJetDistance ) {
00616 selectedIndices.push_back(sortedIndices[n]);
00617 selectedTracks.push_back(sortedTracks[n]);
00618 }
00619 }
00620 for(unsigned int n=0; n != selectedIndices.size() && n != 4; ++n) {
00621 const reco::TrackRef& track = sortedTracks[n];
00622 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00623 tkcntHistosSig3D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.significance(), true);
00624 tkcntHistosVal3D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.value(), true);
00625 tkcntHistosErr3D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].ip3d.error(), true);
00626 const double& decayLen = (ip[selectedIndices[n]].closestToJetAxis - pv).mag();
00627 tkcntHistosDecayLengthVal3D[n]->fill(jetFlavour, trackQual, decayLen, true);
00628 tkcntHistosJetDistVal3D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.value(), true);
00629 tkcntHistosJetDistSign3D[n]->fill(jetFlavour, trackQual, ip[selectedIndices[n]].distanceToJetAxis.significance(), true);
00630 tkcntHistosTkNChiSqr3D[n]->fill(jetFlavour, trackQual, track->normalizedChi2(), true);
00631 tkcntHistosTkPt3D[n]->fill(jetFlavour, trackQual, track->pt(), true);
00632 tkcntHistosTkNHits3D[n]->fill(jetFlavour, trackQual, track->found(), true);
00633 }
00634 sortedIndices = tagInfo->sortedIndexes(reco::TrackIPTagInfo::Prob3D);
00635 selectedIndices.clear();
00636 sortedTracks = tagInfo->sortedTracks(sortedIndices);
00637 selectedTracks.clear();
00638 for(unsigned int n = 0; n != sortedIndices.size(); ++n) {
00639 double decayLength = (ip[sortedIndices[n]].closestToJetAxis - pv).mag();
00640 double jetDistance = ip[sortedIndices[n]].distanceToJetAxis.value();
00641 if(decayLength > minDecayLength && decayLength < maxDecayLength &&
00642 jetDistance > minJetDistance && jetDistance < maxJetDistance ) {
00643 selectedIndices.push_back(sortedIndices[n]);
00644 selectedTracks.push_back(sortedTracks[n]);
00645 }
00646 }
00647 for(unsigned int n=0; n != selectedIndices.size() && n != 4; ++n) {
00648 const reco::TrackRef& track = sortedTracks[n];
00649 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00650 tkcntHistosProb3D[n]->fill(jetFlavour, trackQual, prob3d[selectedIndices[n]], true);
00651 }
00652 for(unsigned int n=selectedIndices.size(); n < 4; ++n){
00653 const reco::TrackBase::TrackQuality trackQual = reco::TrackBase::undefQuality;
00654 tkcntHistosSig3D[n]->fill(jetFlavour, trackQual, lowerIPSBound-1.0, false);
00655 tkcntHistosVal3D[n]->fill(jetFlavour, trackQual, lowerIPBound-1.0, false);
00656 tkcntHistosErr3D[n]->fill(jetFlavour, trackQual, lowerIPEBound-1.0, false);
00657 }
00658 for(unsigned int n=0; n != ip.size(); ++n) {
00659 const reco::TrackRef& track = tagInfo->selectedTracks()[n];
00660 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00661 tkcntHistosSig2D[4]->fill(jetFlavour, trackQual, ip[n].ip2d.significance(), true);
00662 tkcntHistosVal2D[4]->fill(jetFlavour, trackQual, ip[n].ip2d.value(), true);
00663 tkcntHistosErr2D[4]->fill(jetFlavour, trackQual, ip[n].ip2d.error(), true);
00664 tkcntHistosProb2D[4]->fill(jetFlavour, trackQual, prob2d[n], true);
00665 const double& decayLen = (ip[n].closestToJetAxis - pv).mag();
00666 tkcntHistosDecayLengthVal2D[4]->fill(jetFlavour, trackQual, decayLen, true);
00667 tkcntHistosJetDistVal2D[4]->fill(jetFlavour, trackQual, ip[n].distanceToJetAxis.value(), true);
00668 tkcntHistosJetDistSign2D[4]->fill(jetFlavour, trackQual, ip[n].distanceToJetAxis.significance(), true);
00669 tkcntHistosTkNChiSqr2D[4]->fill(jetFlavour, trackQual, track->normalizedChi2(), true);
00670 tkcntHistosTkPt2D[4]->fill(jetFlavour, trackQual, track->pt(), true);
00671 tkcntHistosTkNHits2D[4]->fill(jetFlavour, trackQual, track->found(), true);
00672 }
00673 for(unsigned int n=0; n != ip.size(); ++n) {
00674 const reco::TrackRef& track = tagInfo->selectedTracks()[n];
00675 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00676 tkcntHistosSig3D[4]->fill(jetFlavour, trackQual, ip[n].ip3d.significance(), true);
00677 tkcntHistosVal3D[4]->fill(jetFlavour, trackQual, ip[n].ip3d.value(), true);
00678 tkcntHistosErr3D[4]->fill(jetFlavour, trackQual, ip[n].ip3d.error(), true);
00679 tkcntHistosProb3D[4]->fill(jetFlavour, trackQual, prob3d[n], true);
00680 const double& decayLen = (ip[n].closestToJetAxis - pv).mag();
00681 tkcntHistosDecayLengthVal3D[4]->fill(jetFlavour, trackQual, decayLen, true);
00682 tkcntHistosJetDistVal3D[4]->fill(jetFlavour, trackQual, ip[n].distanceToJetAxis.value(), true);
00683 tkcntHistosJetDistSign3D[4]->fill(jetFlavour, trackQual, ip[n].distanceToJetAxis.significance(), true);
00684 tkcntHistosTkNChiSqr3D[4]->fill(jetFlavour, trackQual, track->normalizedChi2(), true);
00685 tkcntHistosTkPt3D[4]->fill(jetFlavour, trackQual, track->pt(), true);
00686 tkcntHistosTkNHits3D[4]->fill(jetFlavour, trackQual, track->found(), true);
00687 }
00688 for(unsigned int n=0; n != ip.size(); ++n) {
00689 const reco::TrackRef& track = tagInfo->selectedTracks()[n];
00690 const reco::TrackBase::TrackQuality& trackQual = highestTrackQual(track);
00691 ghostTrackDistanceValuHisto->fill(jetFlavour, trackQual, ip[n].distanceToGhostTrack.value(), true);
00692 ghostTrackDistanceSignHisto->fill(jetFlavour, trackQual, ip[n].distanceToGhostTrack.significance(), true);
00693 ghostTrackWeightHisto->fill(jetFlavour, trackQual, ip[n].ghostTrackWeight, true);
00694 selectedTrackQualHisto->fill(jetFlavour, trackQual);
00695 }
00696 for(unsigned int n = 0; n != tagInfo->tracks().size(); ++n) {
00697 trackQualHisto->fill(jetFlavour, highestTrackQual(tagInfo->tracks()[n]));
00698 }
00699
00700 trackMultVsJetPtHisto->fill(jetFlavour, tagInfo->jet()->pt(), tagInfo->tracks().size());
00701 selectedTrackMultVsJetPtHisto->fill(jetFlavour, tagInfo->jet()->pt(), tagInfo->selectedTracks().size());
00702 }
00703
00704 void TrackIPTagPlotter::createPlotsForFinalize (){
00705 const std::string trackIPDir(theExtensionString.substr(1));
00706 effPurFromHistos[0] = new EffPurFromHistos (tkcntHistosSig3D[1],trackIPDir, mcPlots_,
00707 nBinEffPur_, startEffPur_,
00708 endEffPur_);
00709 effPurFromHistos[1] = new EffPurFromHistos (tkcntHistosSig3D[2],trackIPDir, mcPlots_,
00710 nBinEffPur_, startEffPur_,
00711 endEffPur_);
00712 effPurFromHistos[2] = new EffPurFromHistos (tkcntHistosSig2D[1],trackIPDir, mcPlots_,
00713 nBinEffPur_, startEffPur_,
00714 endEffPur_);
00715 effPurFromHistos[3] = new EffPurFromHistos (tkcntHistosSig2D[2],trackIPDir, mcPlots_,
00716 nBinEffPur_, startEffPur_,
00717 endEffPur_);
00718 }
00719
00720
00721 void TrackIPTagPlotter::finalize ()
00722 {
00723
00724
00725
00726
00727 for(int n=0; n != 4; ++n) effPurFromHistos[n]->compute();
00728 finalized = true;
00729 }
00730
00731 void TrackIPTagPlotter::psPlot(const std::string & name)
00732 {
00733 const std::string cName("TrackIPPlots"+ theExtensionString);
00734 RecoBTag::setTDRStyle()->cd();
00735 TCanvas canvas(cName.c_str(), cName.c_str(), 600, 900);
00736 canvas.UseCurrentStyle();
00737 canvas.Divide(2,3);
00738 canvas.Print((name + cName + ".ps[").c_str());
00739
00740 canvas.cd(1);
00741 trkNbr3D->plot();
00742 canvas.cd(2);
00743 tkcntHistosSig3D[4]->plot();
00744 for(int n=0; n < 4; n++) {
00745 canvas.cd(3+n);
00746 tkcntHistosSig3D[n]->plot();
00747 }
00748
00749 canvas.Print((name + cName + ".ps").c_str());
00750 canvas.Clear();
00751 canvas.Divide(2,3);
00752
00753 canvas.cd(1);
00754 trkNbr3D->plot();
00755 canvas.cd(2);
00756 tkcntHistosProb3D[4]->plot();
00757 for(int n=0; n < 4; n++) {
00758 canvas.cd(3+n);
00759 tkcntHistosProb3D[n]->plot();
00760 }
00761
00762 canvas.Print((name + cName + ".ps").c_str());
00763 canvas.Clear();
00764 canvas.Divide(2,3);
00765 canvas.cd(1);
00766 trkNbr2D->plot();
00767 canvas.cd(2);
00768 tkcntHistosSig2D[4]->plot();
00769 for(int n=0; n != 4; ++n) {
00770 canvas.cd(3+n);
00771 tkcntHistosSig2D[n]->plot();
00772 }
00773
00774 canvas.Print((name + cName + ".ps").c_str());
00775 canvas.Clear();
00776 canvas.Divide(2,3);
00777 canvas.cd(1);
00778 trkNbr2D->plot();
00779 canvas.cd(2);
00780 tkcntHistosProb2D[4]->plot();
00781 for(int n=0; n != 4; ++n) {
00782 canvas.cd(3+n);
00783 tkcntHistosProb2D[n]->plot();
00784 }
00785
00786 if (finalized) {
00787 for(int n=0; n != 2; ++n) {
00788 canvas.Print((name + cName + ".ps").c_str());
00789 canvas.Clear();
00790 canvas.Divide(2,3);
00791 canvas.cd(1);
00792 effPurFromHistos[0+n]->discriminatorNoCutEffic()->plot();
00793 canvas.cd(2);
00794 effPurFromHistos[0+n]->discriminatorCutEfficScan()->plot();
00795 canvas.cd(3);
00796 effPurFromHistos[0+n]->plot();
00797 canvas.cd(4);
00798 effPurFromHistos[1+n]->discriminatorNoCutEffic()->plot();
00799 canvas.cd(5);
00800 effPurFromHistos[1+n]->discriminatorCutEfficScan()->plot();
00801 canvas.cd(6);
00802 effPurFromHistos[1+n]->plot();
00803 }
00804 }
00805
00806 canvas.Print((name + cName + ".ps").c_str());
00807 canvas.Clear();
00808 canvas.Divide(1,3);
00809 canvas.cd(1);
00810 ghostTrackDistanceValuHisto->plot();
00811 canvas.cd(2);
00812 ghostTrackDistanceSignHisto->plot();
00813 canvas.cd(3);
00814 ghostTrackWeightHisto->plot();
00815
00816 canvas.Print((name + cName + ".ps").c_str());
00817 canvas.Print((name + cName + ".ps]").c_str());
00818 }
00819
00820
00821 void TrackIPTagPlotter::epsPlot(const std::string & name)
00822 {
00823 trkNbr2D->epsPlot(name);
00824 trkNbr3D->epsPlot(name);
00825 ghostTrackDistanceValuHisto->epsPlot(name);
00826 ghostTrackDistanceSignHisto->epsPlot(name);
00827 ghostTrackWeightHisto->epsPlot(name);
00828 for(int n=0; n != 5; ++n) {
00829 tkcntHistosSig2D[n]->epsPlot(name);
00830 tkcntHistosSig3D[n]->epsPlot(name);
00831 tkcntHistosVal2D[n]->epsPlot(name);
00832 tkcntHistosVal3D[n]->epsPlot(name);
00833 tkcntHistosErr2D[n]->epsPlot(name);
00834 tkcntHistosErr3D[n]->epsPlot(name);
00835 tkcntHistosProb2D[n]->epsPlot(name);
00836 tkcntHistosProb3D[n]->epsPlot(name);
00837 tkcntHistosDecayLengthVal2D[n]->epsPlot(name);
00838 tkcntHistosDecayLengthVal3D[n]->epsPlot(name);
00839 tkcntHistosJetDistVal2D[n]->epsPlot(name);
00840 tkcntHistosJetDistVal3D[n]->epsPlot(name);
00841 tkcntHistosJetDistSign2D[n]->epsPlot(name);
00842 tkcntHistosJetDistSign3D[n]->epsPlot(name);
00843 tkcntHistosTkNChiSqr2D[n]->epsPlot(name);
00844 tkcntHistosTkNChiSqr3D[n]->epsPlot(name);
00845 tkcntHistosTkPt2D[n]->epsPlot(name);
00846 tkcntHistosTkPt3D[n]->epsPlot(name);
00847 tkcntHistosTkNHits2D[n]->epsPlot(name);
00848 tkcntHistosTkNHits3D[n]->epsPlot(name);
00849 }
00850 if (finalized) {
00851 for(int n=0; n != 4; ++n) effPurFromHistos[n]->epsPlot(name);
00852 }
00853 }
00854
00855 reco::TrackBase::TrackQuality TrackIPTagPlotter::highestTrackQual(const reco::TrackRef& track) const {
00856 for(reco::TrackBase::TrackQuality i = reco::TrackBase::highPurity; i != reco::TrackBase::undefQuality; i = reco::TrackBase::TrackQuality(i - 1))
00857 {
00858 if(track->quality(i))
00859 return i;
00860 }
00861
00862 return reco::TrackBase::undefQuality;
00863 }