CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DQMOffline/RecoB/src/TrackIPTagPlotter.cc

Go to the documentation of this file.
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   // IP significance
00042   // 3D
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   //2D
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   // IP value
00085   //3D
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   //2D
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   // IP error
00129   // 3D
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   //2D
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   // decay length
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   // jet distance
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   // track chi-squared
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   // track pT
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   // track nHits
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   // probability
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   // final processing:
00725   // produce the misid. vs. eff histograms
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 }