00001 #include "Validation/RecoTrack/interface/MTVHistoProducerAlgoForTracker.h"
00002 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00003 #include "DataFormats/TrackReco/interface/Track.h"
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005
00006 #include "DataFormats/TrackReco/interface/DeDxData.h"
00007 #include "DataFormats/Common/interface/ValueMap.h"
00008 #include "DataFormats/Common/interface/Ref.h"
00009 #include <DataFormats/TrackReco/interface/TrackFwd.h>
00010
00011 #include "DQMServices/ClientConfig/interface/FitSlicesYTool.h"
00012
00013 #include "TMath.h"
00014 #include <TF1.h>
00015
00016 using namespace std;
00017
00018 MTVHistoProducerAlgoForTracker::MTVHistoProducerAlgoForTracker(const edm::ParameterSet& pset): MTVHistoProducerAlgo(pset){
00019
00020 minEta = pset.getParameter<double>("minEta");
00021 maxEta = pset.getParameter<double>("maxEta");
00022 nintEta = pset.getParameter<int>("nintEta");
00023 useFabsEta = pset.getParameter<bool>("useFabsEta");
00024
00025
00026 minPt = pset.getParameter<double>("minPt");
00027 maxPt = pset.getParameter<double>("maxPt");
00028 nintPt = pset.getParameter<int>("nintPt");
00029 useInvPt = pset.getParameter<bool>("useInvPt");
00030 useLogPt = pset.getUntrackedParameter<bool>("useLogPt",false);
00031
00032
00033 minHit = pset.getParameter<double>("minHit");
00034 maxHit = pset.getParameter<double>("maxHit");
00035 nintHit = pset.getParameter<int>("nintHit");
00036
00037
00038 minPhi = pset.getParameter<double>("minPhi");
00039 maxPhi = pset.getParameter<double>("maxPhi");
00040 nintPhi = pset.getParameter<int>("nintPhi");
00041
00042
00043 minDxy = pset.getParameter<double>("minDxy");
00044 maxDxy = pset.getParameter<double>("maxDxy");
00045 nintDxy = pset.getParameter<int>("nintDxy");
00046
00047
00048 minDz = pset.getParameter<double>("minDz");
00049 maxDz = pset.getParameter<double>("maxDz");
00050 nintDz = pset.getParameter<int>("nintDz");
00051
00052
00053 minVertpos = pset.getParameter<double>("minVertpos");
00054 maxVertpos = pset.getParameter<double>("maxVertpos");
00055 nintVertpos = pset.getParameter<int>("nintVertpos");
00056
00057
00058 minZpos = pset.getParameter<double>("minZpos");
00059 maxZpos = pset.getParameter<double>("maxZpos");
00060 nintZpos = pset.getParameter<int>("nintZpos");
00061
00062
00063 minDeDx = pset.getParameter<double>("minDeDx");
00064 maxDeDx = pset.getParameter<double>("maxDeDx");
00065 nintDeDx = pset.getParameter<int>("nintDeDx");
00066
00067
00068 ptRes_rangeMin = pset.getParameter<double>("ptRes_rangeMin");
00069 ptRes_rangeMax = pset.getParameter<double>("ptRes_rangeMax");
00070 ptRes_nbin = pset.getParameter<int>("ptRes_nbin");
00071
00072 phiRes_rangeMin = pset.getParameter<double>("phiRes_rangeMin");
00073 phiRes_rangeMax = pset.getParameter<double>("phiRes_rangeMax");
00074 phiRes_nbin = pset.getParameter<int>("phiRes_nbin");
00075
00076 cotThetaRes_rangeMin = pset.getParameter<double>("cotThetaRes_rangeMin");
00077 cotThetaRes_rangeMax = pset.getParameter<double>("cotThetaRes_rangeMax");
00078 cotThetaRes_nbin = pset.getParameter<int>("cotThetaRes_nbin");
00079
00080 dxyRes_rangeMin = pset.getParameter<double>("dxyRes_rangeMin");
00081 dxyRes_rangeMax = pset.getParameter<double>("dxyRes_rangeMax");
00082 dxyRes_nbin = pset.getParameter<int>("dxyRes_nbin");
00083
00084 dzRes_rangeMin = pset.getParameter<double>("dzRes_rangeMin");
00085 dzRes_rangeMax = pset.getParameter<double>("dzRes_rangeMax");
00086 dzRes_nbin = pset.getParameter<int>("dzRes_nbin");
00087
00088
00089
00090 using namespace edm;
00091
00092 ParameterSet generalTpSelectorPSet = pset.getParameter<ParameterSet>("generalTpSelector");
00093 ParameterSet TpSelectorForEfficiencyVsEtaPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsEta");
00094 ParameterSet TpSelectorForEfficiencyVsPhiPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsPhi");
00095 ParameterSet TpSelectorForEfficiencyVsPtPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsPt");
00096 ParameterSet TpSelectorForEfficiencyVsVTXRPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsVTXR");
00097 ParameterSet TpSelectorForEfficiencyVsVTXZPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsVTXZ");
00098
00099 using namespace reco::modules;
00100 generalTpSelector = new TrackingParticleSelector(ParameterAdapter<TrackingParticleSelector>::make(generalTpSelectorPSet));
00101 TpSelectorForEfficiencyVsEta = new TrackingParticleSelector(ParameterAdapter<TrackingParticleSelector>::make(TpSelectorForEfficiencyVsEtaPSet));
00102 TpSelectorForEfficiencyVsPhi = new TrackingParticleSelector(ParameterAdapter<TrackingParticleSelector>::make(TpSelectorForEfficiencyVsPhiPSet));
00103 TpSelectorForEfficiencyVsPt = new TrackingParticleSelector(ParameterAdapter<TrackingParticleSelector>::make(TpSelectorForEfficiencyVsPtPSet));
00104 TpSelectorForEfficiencyVsVTXR = new TrackingParticleSelector(ParameterAdapter<TrackingParticleSelector>::make(TpSelectorForEfficiencyVsVTXRPSet));
00105 TpSelectorForEfficiencyVsVTXZ = new TrackingParticleSelector(ParameterAdapter<TrackingParticleSelector>::make(TpSelectorForEfficiencyVsVTXZPSet));
00106
00107
00108 if(useLogPt){
00109 maxPt=log10(maxPt);
00110 if(minPt > 0){
00111 minPt=log10(minPt);
00112 }
00113 else{
00114 edm::LogWarning("MultiTrackValidator")
00115 << "minPt = "
00116 << minPt << " <= 0 out of range while requesting log scale. Using minPt = 0.1.";
00117 minPt=log10(0.1);
00118 }
00119 }
00120
00121 }
00122
00123 MTVHistoProducerAlgoForTracker::~MTVHistoProducerAlgoForTracker(){
00124 delete generalTpSelector;
00125 delete TpSelectorForEfficiencyVsEta;
00126 delete TpSelectorForEfficiencyVsPhi;
00127 delete TpSelectorForEfficiencyVsPt;
00128 delete TpSelectorForEfficiencyVsVTXR;
00129 delete TpSelectorForEfficiencyVsVTXZ;
00130 }
00131
00132
00133 void MTVHistoProducerAlgoForTracker::setUpVectors(){
00134 std::vector<double> etaintervalsv;
00135 std::vector<double> phiintervalsv;
00136 std::vector<double> pTintervalsv;
00137 std::vector<double> dxyintervalsv;
00138 std::vector<double> dzintervalsv;
00139 std::vector<double> vertposintervalsv;
00140 std::vector<double> zposintervalsv;
00141 std::vector<int> totSIMveta,totASSveta,totASS2veta,totRECveta;
00142 std::vector<int> totSIMvpT,totASSvpT,totASS2vpT,totRECvpT;
00143 std::vector<int> totSIMv_hit,totASSv_hit,totASS2v_hit,totRECv_hit;
00144 std::vector<int> totSIMv_phi,totASSv_phi,totASS2v_phi,totRECv_phi;
00145 std::vector<int> totSIMv_dxy,totASSv_dxy,totASS2v_dxy,totRECv_dxy;
00146 std::vector<int> totSIMv_dz,totASSv_dz,totASS2v_dz,totRECv_dz;
00147 std::vector<int> totSIMv_vertpos,totASSv_vertpos,totSIMv_zpos,totASSv_zpos;
00148
00149 double step=(maxEta-minEta)/nintEta;
00150
00151 etaintervalsv.push_back(minEta);
00152 for (int k=1;k<nintEta+1;k++) {
00153 double d=minEta+k*step;
00154 etaintervalsv.push_back(d);
00155 totSIMveta.push_back(0);
00156 totASSveta.push_back(0);
00157 totASS2veta.push_back(0);
00158 totRECveta.push_back(0);
00159 }
00160 etaintervals.push_back(etaintervalsv);
00161 totSIMeta.push_back(totSIMveta);
00162 totASSeta.push_back(totASSveta);
00163 totASS2eta.push_back(totASS2veta);
00164 totRECeta.push_back(totRECveta);
00165
00166 double stepPt = (maxPt-minPt)/nintPt;
00167 pTintervalsv.push_back(minPt);
00168 for (int k=1;k<nintPt+1;k++) {
00169 double d=0;
00170 if(useLogPt)d=pow(10,minPt+k*stepPt);
00171 else d=minPt+k*stepPt;
00172 pTintervalsv.push_back(d);
00173 totSIMvpT.push_back(0);
00174 totASSvpT.push_back(0);
00175 totASS2vpT.push_back(0);
00176 totRECvpT.push_back(0);
00177 }
00178 pTintervals.push_back(pTintervalsv);
00179 totSIMpT.push_back(totSIMvpT);
00180 totASSpT.push_back(totASSvpT);
00181 totASS2pT.push_back(totASS2vpT);
00182 totRECpT.push_back(totRECvpT);
00183
00184 for (int k=1;k<nintHit+1;k++) {
00185 totSIMv_hit.push_back(0);
00186 totASSv_hit.push_back(0);
00187 totASS2v_hit.push_back(0);
00188 totRECv_hit.push_back(0);
00189 }
00190 totSIM_hit.push_back(totSIMv_hit);
00191 totASS_hit.push_back(totASSv_hit);
00192 totASS2_hit.push_back(totASS2v_hit);
00193 totREC_hit.push_back(totRECv_hit);
00194
00195 double stepPhi = (maxPhi-minPhi)/nintPhi;
00196 phiintervalsv.push_back(minPhi);
00197 for (int k=1;k<nintPhi+1;k++) {
00198 double d=minPhi+k*stepPhi;
00199 phiintervalsv.push_back(d);
00200 totSIMv_phi.push_back(0);
00201 totASSv_phi.push_back(0);
00202 totASS2v_phi.push_back(0);
00203 totRECv_phi.push_back(0);
00204 }
00205 phiintervals.push_back(phiintervalsv);
00206 totSIM_phi.push_back(totSIMv_phi);
00207 totASS_phi.push_back(totASSv_phi);
00208 totASS2_phi.push_back(totASS2v_phi);
00209 totREC_phi.push_back(totRECv_phi);
00210
00211 double stepDxy = (maxDxy-minDxy)/nintDxy;
00212 dxyintervalsv.push_back(minDxy);
00213 for (int k=1;k<nintDxy+1;k++) {
00214 double d=minDxy+k*stepDxy;
00215 dxyintervalsv.push_back(d);
00216 totSIMv_dxy.push_back(0);
00217 totASSv_dxy.push_back(0);
00218 totASS2v_dxy.push_back(0);
00219 totRECv_dxy.push_back(0);
00220 }
00221 dxyintervals.push_back(dxyintervalsv);
00222 totSIM_dxy.push_back(totSIMv_dxy);
00223 totASS_dxy.push_back(totASSv_dxy);
00224 totASS2_dxy.push_back(totASS2v_dxy);
00225 totREC_dxy.push_back(totRECv_dxy);
00226
00227
00228 double stepDz = (maxDz-minDz)/nintDz;
00229 dzintervalsv.push_back(minDz);
00230 for (int k=1;k<nintDz+1;k++) {
00231 double d=minDz+k*stepDz;
00232 dzintervalsv.push_back(d);
00233 totSIMv_dz.push_back(0);
00234 totASSv_dz.push_back(0);
00235 totASS2v_dz.push_back(0);
00236 totRECv_dz.push_back(0);
00237 }
00238 dzintervals.push_back(dzintervalsv);
00239 totSIM_dz.push_back(totSIMv_dz);
00240 totASS_dz.push_back(totASSv_dz);
00241 totASS2_dz.push_back(totASS2v_dz);
00242 totREC_dz.push_back(totRECv_dz);
00243
00244 double stepVertpos = (maxVertpos-minVertpos)/nintVertpos;
00245 vertposintervalsv.push_back(minVertpos);
00246 for (int k=1;k<nintVertpos+1;k++) {
00247 double d=minVertpos+k*stepVertpos;
00248 vertposintervalsv.push_back(d);
00249 totSIMv_vertpos.push_back(0);
00250 totASSv_vertpos.push_back(0);
00251 }
00252 vertposintervals.push_back(vertposintervalsv);
00253 totSIM_vertpos.push_back(totSIMv_vertpos);
00254 totASS_vertpos.push_back(totASSv_vertpos);
00255
00256 double stepZpos = (maxZpos-minZpos)/nintZpos;
00257 zposintervalsv.push_back(minZpos);
00258 for (int k=1;k<nintZpos+1;k++) {
00259 double d=minZpos+k*stepZpos;
00260 zposintervalsv.push_back(d);
00261 totSIMv_zpos.push_back(0);
00262 totASSv_zpos.push_back(0);
00263 }
00264 zposintervals.push_back(zposintervalsv);
00265 totSIM_zpos.push_back(totSIMv_zpos);
00266 totASS_zpos.push_back(totASSv_zpos);
00267 }
00268
00269 void MTVHistoProducerAlgoForTracker::bookSimHistos(){
00270 h_ptSIM.push_back( dbe_->book1D("ptSIM", "generated p_{t}", 5500, 0, 110 ) );
00271 h_etaSIM.push_back( dbe_->book1D("etaSIM", "generated pseudorapidity", 500, -2.5, 2.5 ) );
00272 h_tracksSIM.push_back( dbe_->book1D("tracksSIM","number of simulated tracks",200,-0.5,99.5) );
00273 h_vertposSIM.push_back( dbe_->book1D("vertposSIM","Transverse position of sim vertices",100,0.,120.) );
00274 }
00275
00276
00277 void MTVHistoProducerAlgoForTracker::bookRecoHistos(){
00278 h_tracks.push_back( dbe_->book1D("tracks","number of reconstructed tracks",200,-0.5,19.5) );
00279 h_fakes.push_back( dbe_->book1D("fakes","number of fake reco tracks",20,-0.5,19.5) );
00280 h_charge.push_back( dbe_->book1D("charge","charge",3,-1.5,1.5) );
00281
00282 h_hits.push_back( dbe_->book1D("hits", "number of hits per track", nintHit,minHit,maxHit ) );
00283 h_losthits.push_back( dbe_->book1D("losthits", "number of lost hits per track", nintHit,minHit,maxHit) );
00284 h_nchi2.push_back( dbe_->book1D("chi2", "normalized #chi^{2}", 200, 0, 20 ) );
00285 h_nchi2_prob.push_back( dbe_->book1D("chi2_prob", "normalized #chi^{2} probability",100,0,1));
00286
00288 h_recoeta.push_back( dbe_->book1D("num_reco_eta","N of reco track vs eta",nintEta,minEta,maxEta) );
00289 h_assoceta.push_back( dbe_->book1D("num_assoc(simToReco)_eta","N of associated tracks (simToReco) vs eta",nintEta,minEta,maxEta) );
00290 h_assoc2eta.push_back( dbe_->book1D("num_assoc(recoToSim)_eta","N of associated (recoToSim) tracks vs eta",nintEta,minEta,maxEta) );
00291 h_simuleta.push_back( dbe_->book1D("num_simul_eta","N of simulated tracks vs eta",nintEta,minEta,maxEta) );
00292 h_recopT.push_back( dbe_->book1D("num_reco_pT","N of reco track vs pT",nintPt,minPt,maxPt) );
00293 h_assocpT.push_back( dbe_->book1D("num_assoc(simToReco)_pT","N of associated tracks (simToReco) vs pT",nintPt,minPt,maxPt) );
00294 h_assoc2pT.push_back( dbe_->book1D("num_assoc(recoToSim)_pT","N of associated (recoToSim) tracks vs pT",nintPt,minPt,maxPt) );
00295 h_simulpT.push_back( dbe_->book1D("num_simul_pT","N of simulated tracks vs pT",nintPt,minPt,maxPt) );
00296
00297 h_recohit.push_back( dbe_->book1D("num_reco_hit","N of reco track vs hit",nintHit,minHit,maxHit) );
00298 h_assochit.push_back( dbe_->book1D("num_assoc(simToReco)_hit","N of associated tracks (simToReco) vs hit",nintHit,minHit,maxHit) );
00299 h_assoc2hit.push_back( dbe_->book1D("num_assoc(recoToSim)_hit","N of associated (recoToSim) tracks vs hit",nintHit,minHit,maxHit) );
00300 h_simulhit.push_back( dbe_->book1D("num_simul_hit","N of simulated tracks vs hit",nintHit,minHit,maxHit) );
00301
00302 h_recophi.push_back( dbe_->book1D("num_reco_phi","N of reco track vs phi",nintPhi,minPhi,maxPhi) );
00303 h_assocphi.push_back( dbe_->book1D("num_assoc(simToReco)_phi","N of associated tracks (simToReco) vs phi",nintPhi,minPhi,maxPhi) );
00304 h_assoc2phi.push_back( dbe_->book1D("num_assoc(recoToSim)_phi","N of associated (recoToSim) tracks vs phi",nintPhi,minPhi,maxPhi) );
00305 h_simulphi.push_back( dbe_->book1D("num_simul_phi","N of simulated tracks vs phi",nintPhi,minPhi,maxPhi) );
00306
00307 h_recodxy.push_back( dbe_->book1D("num_reco_dxy","N of reco track vs dxy",nintDxy,minDxy,maxDxy) );
00308 h_assocdxy.push_back( dbe_->book1D("num_assoc(simToReco)_dxy","N of associated tracks (simToReco) vs dxy",nintDxy,minDxy,maxDxy) );
00309 h_assoc2dxy.push_back( dbe_->book1D("num_assoc(recoToSim)_dxy","N of associated (recoToSim) tracks vs dxy",nintDxy,minDxy,maxDxy) );
00310 h_simuldxy.push_back( dbe_->book1D("num_simul_dxy","N of simulated tracks vs dxy",nintDxy,minDxy,maxDxy) );
00311
00312 h_recodz.push_back( dbe_->book1D("num_reco_dz","N of reco track vs dz",nintDz,minDz,maxDz) );
00313 h_assocdz.push_back( dbe_->book1D("num_assoc(simToReco)_dz","N of associated tracks (simToReco) vs dz",nintDz,minDz,maxDz) );
00314 h_assoc2dz.push_back( dbe_->book1D("num_assoc(recoToSim)_dz","N of associated (recoToSim) tracks vs dz",nintDz,minDz,maxDz) );
00315 h_simuldz.push_back( dbe_->book1D("num_simul_dz","N of simulated tracks vs dz",nintDz,minDz,maxDz) );
00316
00317 h_assocvertpos.push_back( dbe_->book1D("num_assoc(simToReco)_vertpos",
00318 "N of associated tracks (simToReco) vs transverse vert position",
00319 nintVertpos,minVertpos,maxVertpos) );
00320 h_simulvertpos.push_back( dbe_->book1D("num_simul_vertpos","N of simulated tracks vs transverse vert position",
00321 nintVertpos,minVertpos,maxVertpos) );
00322
00323 h_assoczpos.push_back( dbe_->book1D("num_assoc(simToReco)_zpos","N of associated tracks (simToReco) vs z vert position",
00324 nintZpos,minZpos,maxZpos) );
00325 h_simulzpos.push_back( dbe_->book1D("num_simul_zpos","N of simulated tracks vs z vert position",nintZpos,minZpos,maxZpos) );
00326
00327
00329
00330 h_eta.push_back( dbe_->book1D("eta", "pseudorapidity residue", 1000, -0.1, 0.1 ) );
00331 h_pt.push_back( dbe_->book1D("pullPt", "pull of p_{t}", 100, -10, 10 ) );
00332 h_pullTheta.push_back( dbe_->book1D("pullTheta","pull of #theta parameter",250,-25,25) );
00333 h_pullPhi.push_back( dbe_->book1D("pullPhi","pull of #phi parameter",250,-25,25) );
00334 h_pullDxy.push_back( dbe_->book1D("pullDxy","pull of dxy parameter",250,-25,25) );
00335 h_pullDz.push_back( dbe_->book1D("pullDz","pull of dz parameter",250,-25,25) );
00336 h_pullQoverp.push_back( dbe_->book1D("pullQoverp","pull of qoverp parameter",250,-25,25) );
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347 h_assocFraction.push_back( dbe_->book1D("assocFraction","fraction of shared hits",200,0,2) );
00348 h_assocSharedHit.push_back(dbe_->book1D("assocSharedHit","number of shared hits",20,0,20));
00349
00350
00351 chi2_vs_nhits.push_back( dbe_->book2D("chi2_vs_nhits","#chi^{2} vs nhits",25,0,25,100,0,10) );
00352
00353 etares_vs_eta.push_back( dbe_->book2D("etares_vs_eta","etaresidue vs eta",nintEta,minEta,maxEta,200,-0.1,0.1) );
00354 nrec_vs_nsim.push_back( dbe_->book2D("nrec_vs_nsim","nrec vs nsim",20,-0.5,19.5,20,-0.5,19.5) );
00355
00356 chi2_vs_eta.push_back( dbe_->book2D("chi2_vs_eta","chi2_vs_eta",nintEta,minEta,maxEta, 200, 0, 20 ));
00357 chi2_vs_phi.push_back( dbe_->book2D("chi2_vs_phi","#chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20 ) );
00358
00359 nhits_vs_eta.push_back( dbe_->book2D("nhits_vs_eta","nhits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00360 nPXBhits_vs_eta.push_back( dbe_->book2D("nPXBhits_vs_eta","# PXB its vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00361 nPXFhits_vs_eta.push_back( dbe_->book2D("nPXFhits_vs_eta","# PXF hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00362 nTIBhits_vs_eta.push_back( dbe_->book2D("nTIBhits_vs_eta","# TIB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00363 nTIDhits_vs_eta.push_back( dbe_->book2D("nTIDhits_vs_eta","# TID hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00364 nTOBhits_vs_eta.push_back( dbe_->book2D("nTOBhits_vs_eta","# TOB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00365 nTEChits_vs_eta.push_back( dbe_->book2D("nTEChits_vs_eta","# TEC hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00366
00367 nLayersWithMeas_vs_eta.push_back( dbe_->book2D("nLayersWithMeas_vs_eta","# Layers with measurement vs eta",
00368 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00369 nPXLlayersWithMeas_vs_eta.push_back( dbe_->book2D("nPXLlayersWithMeas_vs_eta","# PXL Layers with measurement vs eta",
00370 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00371 nSTRIPlayersWithMeas_vs_eta.push_back( dbe_->book2D("nSTRIPlayersWithMeas_vs_eta","# STRIP Layers with measurement vs eta",
00372 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00373 nSTRIPlayersWith1dMeas_vs_eta.push_back( dbe_->book2D("nSTRIPlayersWith1dMeas_vs_eta","# STRIP Layers with 1D measurement vs eta",
00374 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00375 nSTRIPlayersWith2dMeas_vs_eta.push_back( dbe_->book2D("nSTRIPlayersWith2dMeas_vs_eta","# STRIP Layers with 2D measurement vs eta",
00376 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00377
00378 nhits_vs_phi.push_back( dbe_->book2D("nhits_vs_phi","#hits vs #phi",nintPhi,minPhi,maxPhi,nintHit,minHit,maxHit) );
00379
00380 nlosthits_vs_eta.push_back( dbe_->book2D("nlosthits_vs_eta","nlosthits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00381
00382
00383
00384
00385
00386
00387
00388 ptres_vs_eta.push_back(dbe_->book2D("ptres_vs_eta","ptres_vs_eta",
00389 nintEta,minEta,maxEta, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
00390
00391 ptres_vs_phi.push_back( dbe_->book2D("ptres_vs_phi","p_{t} res vs #phi",
00392 nintPhi,minPhi,maxPhi, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
00393
00394 ptres_vs_pt.push_back(dbe_->book2D("ptres_vs_pt","ptres_vs_pt",nintPt,minPt,maxPt, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
00395
00396 cotThetares_vs_eta.push_back(dbe_->book2D("cotThetares_vs_eta","cotThetares_vs_eta",
00397 nintEta,minEta,maxEta,cotThetaRes_nbin, cotThetaRes_rangeMin, cotThetaRes_rangeMax));
00398
00399
00400 cotThetares_vs_pt.push_back(dbe_->book2D("cotThetares_vs_pt","cotThetares_vs_pt",
00401 nintPt,minPt,maxPt, cotThetaRes_nbin, cotThetaRes_rangeMin, cotThetaRes_rangeMax));
00402
00403
00404 phires_vs_eta.push_back(dbe_->book2D("phires_vs_eta","phires_vs_eta",
00405 nintEta,minEta,maxEta, phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
00406
00407 phires_vs_pt.push_back(dbe_->book2D("phires_vs_pt","phires_vs_pt",
00408 nintPt,minPt,maxPt, phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
00409
00410 phires_vs_phi.push_back(dbe_->book2D("phires_vs_phi","#phi res vs #phi",
00411 nintPhi,minPhi,maxPhi,phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
00412
00413 dxyres_vs_eta.push_back(dbe_->book2D("dxyres_vs_eta","dxyres_vs_eta",
00414 nintEta,minEta,maxEta,dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax));
00415
00416 dxyres_vs_pt.push_back( dbe_->book2D("dxyres_vs_pt","dxyres_vs_pt",
00417 nintPt,minPt,maxPt,dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax));
00418
00419 dzres_vs_eta.push_back(dbe_->book2D("dzres_vs_eta","dzres_vs_eta",
00420 nintEta,minEta,maxEta,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
00421
00422 dzres_vs_pt.push_back(dbe_->book2D("dzres_vs_pt","dzres_vs_pt",nintPt,minPt,maxPt,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
00423
00424 ptmean_vs_eta_phi.push_back(dbe_->bookProfile2D("ptmean_vs_eta_phi","mean p_{t} vs #eta and #phi",
00425 nintPhi,minPhi,maxPhi,nintEta,minEta,maxEta,1000,0,1000));
00426 phimean_vs_eta_phi.push_back(dbe_->bookProfile2D("phimean_vs_eta_phi","mean #phi vs #eta and #phi",
00427 nintPhi,minPhi,maxPhi,nintEta,minEta,maxEta,nintPhi,minPhi,maxPhi));
00428
00429
00430 dxypull_vs_eta.push_back(dbe_->book2D("dxypull_vs_eta","dxypull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
00431 ptpull_vs_eta.push_back(dbe_->book2D("ptpull_vs_eta","ptpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
00432 dzpull_vs_eta.push_back(dbe_->book2D("dzpull_vs_eta","dzpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
00433 phipull_vs_eta.push_back(dbe_->book2D("phipull_vs_eta","phipull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
00434 thetapull_vs_eta.push_back(dbe_->book2D("thetapull_vs_eta","thetapull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
00435
00436
00437
00438
00439
00440 ptpull_vs_phi.push_back(dbe_->book2D("ptpull_vs_phi","p_{t} pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
00441 phipull_vs_phi.push_back(dbe_->book2D("phipull_vs_phi","#phi pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
00442 thetapull_vs_phi.push_back(dbe_->book2D("thetapull_vs_phi","#theta pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
00443
00444
00445 nrecHit_vs_nsimHit_sim2rec.push_back( dbe_->book2D("nrecHit_vs_nsimHit_sim2rec","nrecHit vs nsimHit (Sim2RecAssoc)",
00446 nintHit,minHit,maxHit, nintHit,minHit,maxHit ));
00447 nrecHit_vs_nsimHit_rec2sim.push_back( dbe_->book2D("nrecHit_vs_nsimHit_rec2sim","nrecHit vs nsimHit (Rec2simAssoc)",
00448 nintHit,minHit,maxHit, nintHit,minHit,maxHit ));
00449
00450
00451
00452 h_dedx_estim1.push_back( dbe_->book1D("h_dedx_estim1","dE/dx estimator 1",nintDeDx,minDeDx,maxDeDx) );
00453 h_dedx_estim2.push_back( dbe_->book1D("h_dedx_estim2","dE/dx estimator 2",nintDeDx,minDeDx,maxDeDx) );
00454 h_dedx_nom1.push_back( dbe_->book1D("h_dedx_nom1","dE/dx number of measurements",nintHit,minHit,maxHit) );
00455 h_dedx_nom2.push_back( dbe_->book1D("h_dedx_nom2","dE/dx number of measurements",nintHit,minHit,maxHit) );
00456 h_dedx_sat1.push_back( dbe_->book1D("h_dedx_sat1","dE/dx number of measurements with saturation",nintHit,minHit,maxHit) );
00457 h_dedx_sat2.push_back( dbe_->book1D("h_dedx_sat2","dE/dx number of measurements with saturation",nintHit,minHit,maxHit) );
00458
00459
00460 if(useLogPt){
00461 BinLogX(dzres_vs_pt.back()->getTH2F());
00462 BinLogX(dxyres_vs_pt.back()->getTH2F());
00463 BinLogX(phires_vs_pt.back()->getTH2F());
00464 BinLogX(cotThetares_vs_pt.back()->getTH2F());
00465 BinLogX(ptres_vs_pt.back()->getTH2F());
00466 BinLogX(h_recopT.back()->getTH1F());
00467 BinLogX(h_assocpT.back()->getTH1F());
00468 BinLogX(h_assoc2pT.back()->getTH1F());
00469 BinLogX(h_simulpT.back()->getTH1F());
00470 }
00471 }
00472
00473 void MTVHistoProducerAlgoForTracker::bookRecoHistosForStandaloneRunning(){
00474 h_effic.push_back( dbe_->book1D("effic","efficiency vs #eta",nintEta,minEta,maxEta) );
00475 h_efficPt.push_back( dbe_->book1D("efficPt","efficiency vs pT",nintPt,minPt,maxPt) );
00476 h_effic_vs_hit.push_back( dbe_->book1D("effic_vs_hit","effic vs hit",nintHit,minHit,maxHit) );
00477 h_effic_vs_phi.push_back( dbe_->book1D("effic_vs_phi","effic vs phi",nintPhi,minPhi,maxPhi) );
00478 h_effic_vs_dxy.push_back( dbe_->book1D("effic_vs_dxy","effic vs dxy",nintDxy,minDxy,maxDxy) );
00479 h_effic_vs_dz.push_back( dbe_->book1D("effic_vs_dz","effic vs dz",nintDz,minDz,maxDz) );
00480 h_effic_vs_vertpos.push_back( dbe_->book1D("effic_vs_vertpos","effic vs vertpos",nintVertpos,minVertpos,maxVertpos) );
00481 h_effic_vs_zpos.push_back( dbe_->book1D("effic_vs_zpos","effic vs zpos",nintZpos,minZpos,maxZpos) );
00482
00483 h_fakerate.push_back( dbe_->book1D("fakerate","fake rate vs #eta",nintEta,minEta,maxEta) );
00484 h_fakeratePt.push_back( dbe_->book1D("fakeratePt","fake rate vs pT",nintPt,minPt,maxPt) );
00485 h_fake_vs_hit.push_back( dbe_->book1D("fakerate_vs_hit","fake rate vs hit",nintHit,minHit,maxHit) );
00486 h_fake_vs_phi.push_back( dbe_->book1D("fakerate_vs_phi","fake vs phi",nintPhi,minPhi,maxPhi) );
00487 h_fake_vs_dxy.push_back( dbe_->book1D("fakerate_vs_dxy","fake rate vs dxy",nintDxy,minDxy,maxDxy) );
00488 h_fake_vs_dz.push_back( dbe_->book1D("fakerate_vs_dz","fake vs dz",nintDz,minDz,maxDz) );
00489
00490 h_chi2meanhitsh.push_back( dbe_->bookProfile("chi2mean_vs_nhits","mean #chi^{2} vs nhits",25,0,25,100,0,10) );
00491 h_chi2meanh.push_back( dbe_->bookProfile("chi2mean","mean #chi^{2} vs #eta",nintEta,minEta,maxEta, 200, 0, 20) );
00492 h_chi2mean_vs_phi.push_back( dbe_->bookProfile("chi2mean_vs_phi","mean of #chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20) );
00493
00494 h_hits_eta.push_back( dbe_->bookProfile("hits_eta","mean #hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00495 h_PXBhits_eta.push_back( dbe_->bookProfile("PXBhits_eta","mean # PXB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00496 h_PXFhits_eta.push_back( dbe_->bookProfile("PXFhits_eta","mean # PXF hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00497 h_TIBhits_eta.push_back( dbe_->bookProfile("TIBhits_eta","mean # TIB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00498 h_TIDhits_eta.push_back( dbe_->bookProfile("TIDhits_eta","mean # TID hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00499 h_TOBhits_eta.push_back( dbe_->bookProfile("TOBhits_eta","mean # TOB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00500 h_TEChits_eta.push_back( dbe_->bookProfile("TEChits_eta","mean # TEC hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00501
00502 h_LayersWithMeas_eta.push_back(dbe_->bookProfile("LayersWithMeas_eta","mean # LayersWithMeas vs eta",
00503 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00504 h_PXLlayersWithMeas_eta.push_back(dbe_->bookProfile("PXLlayersWith2dMeas_eta","mean # PXLlayersWithMeas vs eta",
00505 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00506 h_STRIPlayersWithMeas_eta.push_back(dbe_->bookProfile("STRIPlayersWithMeas_eta","mean # STRIPlayersWithMeas vs eta",
00507 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00508 h_STRIPlayersWith1dMeas_eta.push_back(dbe_->bookProfile("STRIPlayersWith1dMeas_eta","mean # STRIPlayersWith1dMeas vs eta",
00509 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00510 h_STRIPlayersWith2dMeas_eta.push_back(dbe_->bookProfile("STRIPlayersWith2dMeas_eta","mean # STRIPlayersWith2dMeas vs eta",
00511 nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00512 h_hits_phi.push_back( dbe_->bookProfile("hits_phi","mean #hits vs #phi",nintPhi,minPhi,maxPhi, nintHit,minHit,maxHit) );
00513 h_losthits_eta.push_back( dbe_->bookProfile("losthits_eta","losthits_eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
00514
00515 h_ptrmsh.push_back( dbe_->book1D("ptres_vs_eta_Sigma","#sigma(#deltap_{t}/p_{t}) vs #eta",nintEta,minEta,maxEta) );
00516 h_ptmeanhPhi.push_back( dbe_->book1D("ptres_vs_phi_Mean","mean of p_{t} resolution vs #phi",nintPhi,minPhi,maxPhi));
00517 h_ptrmshPhi.push_back( dbe_->book1D("ptres_vs_phi_Sigma","#sigma(#deltap_{t}/p_{t}) vs #phi",nintPhi,minPhi,maxPhi) );
00518 h_ptmeanhPt.push_back( dbe_->book1D("ptres_vs_pt_Mean","mean of p_{t} resolution vs p_{t}",nintPt,minPt,maxPt));
00519 h_ptrmshPt.push_back( dbe_->book1D("ptres_vs_pt_Sigma","#sigma(#deltap_{t}/p_{t}) vs pT",nintPt,minPt,maxPt) );
00520 h_cotThetameanh.push_back( dbe_->book1D("cotThetares_vs_eta_Mean","#sigma(cot(#theta)) vs #eta Mean",nintEta,minEta,maxEta) );
00521 h_cotThetarmsh.push_back( dbe_->book1D("cotThetares_vs_eta_Sigma","#sigma(cot(#theta)) vs #eta Sigma",nintEta,minEta,maxEta) );
00522 h_cotThetameanhPt.push_back( dbe_->book1D("cotThetares_vs_pt_Mean","#sigma(cot(#theta)) vs pT Mean",nintPt,minPt,maxPt) );
00523 h_cotThetarmshPt.push_back( dbe_->book1D("cotThetares_vs_pt_Sigma","#sigma(cot(#theta)) vs pT Sigma",nintPt,minPt,maxPt) );
00524 h_phimeanh.push_back(dbe_->book1D("phires_vs_eta_Mean","mean of #phi res vs #eta",nintEta,minEta,maxEta));
00525 h_phirmsh.push_back( dbe_->book1D("phires_vs_eta_Sigma","#sigma(#delta#phi) vs #eta",nintEta,minEta,maxEta) );
00526 h_phimeanhPt.push_back(dbe_->book1D("phires_vs_pt_Mean","mean of #phi res vs pT",nintPt,minPt,maxPt));
00527 h_phirmshPt.push_back( dbe_->book1D("phires_vs_pt_Sigma","#sigma(#delta#phi) vs pT",nintPt,minPt,maxPt) );
00528 h_phimeanhPhi.push_back(dbe_->book1D("phires_vs_phi_Mean","mean of #phi res vs #phi",nintPhi,minPhi,maxPhi));
00529 h_phirmshPhi.push_back( dbe_->book1D("phires_vs_phi_Sigma","#sigma(#delta#phi) vs #phi",nintPhi,minPhi,maxPhi) );
00530 h_dxymeanh.push_back( dbe_->book1D("dxyres_vs_eta_Mean","mean of dxyres vs #eta",nintEta,minEta,maxEta) );
00531 h_dxyrmsh.push_back( dbe_->book1D("dxyres_vs_eta_Sigma","#sigma(#deltadxy) vs #eta",nintEta,minEta,maxEta) );
00532 h_dxymeanhPt.push_back( dbe_->book1D("dxyres_vs_pt_Mean","mean of dxyres vs pT",nintPt,minPt,maxPt) );
00533 h_dxyrmshPt.push_back( dbe_->book1D("dxyres_vs_pt_Sigma","#sigmadxy vs pT",nintPt,minPt,maxPt) );
00534 h_dzmeanh.push_back( dbe_->book1D("dzres_vs_eta_Mean","mean of dzres vs #eta",nintEta,minEta,maxEta) );
00535 h_dzrmsh.push_back( dbe_->book1D("dzres_vs_eta_Sigma","#sigma(#deltadz) vs #eta",nintEta,minEta,maxEta) );
00536 h_dzmeanhPt.push_back( dbe_->book1D("dzres_vs_pt_Mean","mean of dzres vs pT",nintPt,minPt,maxPt) );
00537 h_dzrmshPt.push_back( dbe_->book1D("dzres_vs_pt_Sigma","#sigma(#deltadz vs pT",nintPt,minPt,maxPt) );
00538 h_dxypulletamean.push_back( dbe_->book1D("h_dxypulleta_Mean","mean of dxy pull vs #eta",nintEta,minEta,maxEta) );
00539 h_ptpulletamean.push_back( dbe_->book1D("h_ptpulleta_Mean","mean of p_{t} pull vs #eta",nintEta,minEta,maxEta) );
00540 h_dzpulletamean.push_back( dbe_->book1D("h_dzpulleta_Mean","mean of dz pull vs #eta",nintEta,minEta,maxEta) );
00541 h_phipulletamean.push_back( dbe_->book1D("h_phipulleta_Mean","mean of #phi pull vs #eta",nintEta,minEta,maxEta) );
00542 h_thetapulletamean.push_back( dbe_->book1D("h_thetapulleta_Mean","mean of #theta pull vs #eta",nintEta,minEta,maxEta) );
00543 h_dxypulleta.push_back( dbe_->book1D("h_dxypulleta_Sigma","#sigma of dxy pull vs #eta",nintEta,minEta,maxEta) );
00544 h_ptpulleta.push_back( dbe_->book1D("h_ptpulleta_Sigma","#sigma of p_{t} pull vs #eta",nintEta,minEta,maxEta) );
00545 h_dzpulleta.push_back( dbe_->book1D("h_dzpulleta_Sigma","#sigma of dz pull vs #eta",nintEta,minEta,maxEta) );
00546 h_phipulleta.push_back( dbe_->book1D("h_phipulleta_Sigma","#sigma of #phi pull vs #eta",nintEta,minEta,maxEta) );
00547 h_thetapulleta.push_back( dbe_->book1D("h_thetapulleta_Sigma","#sigma of #theta pull vs #eta",nintEta,minEta,maxEta) );
00548 h_ptshifteta.push_back( dbe_->book1D("ptres_vs_eta_Mean","<#deltapT/pT>[%] vs #eta",nintEta,minEta,maxEta) );
00549 h_ptpullphimean.push_back( dbe_->book1D("h_ptpullphi_Mean","mean of p_{t} pull vs #phi",nintPhi,minPhi,maxPhi) );
00550 h_phipullphimean.push_back( dbe_->book1D("h_phipullphi_Mean","mean of #phi pull vs #phi",nintPhi,minPhi,maxPhi) );
00551 h_thetapullphimean.push_back( dbe_->book1D("h_thetapullphi_Mean","mean of #theta pull vs #phi",nintPhi,minPhi,maxPhi) );
00552 h_ptpullphi.push_back( dbe_->book1D("h_ptpullphi_Sigma","#sigma of p_{t} pull vs #phi",nintPhi,minPhi,maxPhi) );
00553 h_phipullphi.push_back( dbe_->book1D("h_phipullphi_Sigma","#sigma of #phi pull vs #phi",nintPhi,minPhi,maxPhi) );
00554 h_thetapullphi.push_back( dbe_->book1D("h_thetapullphi_Sigma","#sigma of #theta pull vs #phi",nintPhi,minPhi,maxPhi) );
00555
00556 if(useLogPt){
00557 BinLogX(h_dzmeanhPt.back()->getTH1F());
00558 BinLogX(h_dzrmshPt.back()->getTH1F());
00559 BinLogX(h_dxymeanhPt.back()->getTH1F());
00560 BinLogX(h_dxyrmshPt.back()->getTH1F());
00561 BinLogX(h_phimeanhPt.back()->getTH1F());
00562 BinLogX(h_phirmshPt.back()->getTH1F());
00563 BinLogX(h_cotThetameanhPt.back()->getTH1F());
00564 BinLogX(h_cotThetarmshPt.back()->getTH1F());
00565 BinLogX(h_ptmeanhPt.back()->getTH1F());
00566 BinLogX(h_ptrmshPt.back()->getTH1F());
00567 BinLogX(h_efficPt.back()->getTH1F());
00568 BinLogX(h_fakeratePt.back()->getTH1F());
00569 }
00570 }
00571
00572 void MTVHistoProducerAlgoForTracker::fill_generic_simTrack_histos(int count,
00573 ParticleBase::Vector momentumTP,
00574 ParticleBase::Point vertexTP){
00575 h_ptSIM[count]->Fill(sqrt(momentumTP.perp2()));
00576 h_etaSIM[count]->Fill(momentumTP.eta());
00577 h_vertposSIM[count]->Fill(sqrt(vertexTP.perp2()));
00578 }
00579
00580
00581
00582
00583 void MTVHistoProducerAlgoForTracker::fill_recoAssociated_simTrack_histos(int count,
00584 const TrackingParticle& tp,
00585 ParticleBase::Vector momentumTP,
00586 ParticleBase::Point vertexTP,
00587 double dxySim, double dzSim, int nSimHits,
00588 const reco::Track* track){
00589 bool isMatched = track;
00590
00591 if((*TpSelectorForEfficiencyVsEta)(tp)){
00592
00593 int nSimHitsInBounds = std::min((int)nSimHits,int(maxHit-1));
00594 totSIM_hit[count][nSimHitsInBounds]++;
00595 if(isMatched) {
00596 totASS_hit[count][nSimHitsInBounds]++;
00597 nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
00598 }
00599
00600
00601 for (unsigned int f=0; f<etaintervals[count].size()-1; f++){
00602 if (getEta(momentumTP.eta())>etaintervals[count][f]&&
00603 getEta(momentumTP.eta())<etaintervals[count][f+1]) {
00604 totSIMeta[count][f]++;
00605 if (isMatched) {
00606 totASSeta[count][f]++;
00607 }
00608 }
00609 }
00610 }
00611
00612 if((*TpSelectorForEfficiencyVsPhi)(tp)){
00613 for (unsigned int f=0; f<phiintervals[count].size()-1; f++){
00614 if (momentumTP.phi() > phiintervals[count][f]&&
00615 momentumTP.phi() <phiintervals[count][f+1]) {
00616 totSIM_phi[count][f]++;
00617 if (isMatched) {
00618 totASS_phi[count][f]++;
00619 }
00620 }
00621 }
00622 }
00623
00624 if((*TpSelectorForEfficiencyVsPt)(tp)){
00625 for (unsigned int f=0; f<pTintervals[count].size()-1; f++){
00626 if (getPt(sqrt(momentumTP.perp2()))>pTintervals[count][f]&&
00627 getPt(sqrt(momentumTP.perp2()))<pTintervals[count][f+1]) {
00628 totSIMpT[count][f]++;
00629 if (isMatched) {
00630 totASSpT[count][f]++;
00631 }
00632 }
00633 }
00634 }
00635
00636 if((*TpSelectorForEfficiencyVsVTXR)(tp)){
00637 for (unsigned int f=0; f<dxyintervals[count].size()-1; f++){
00638 if (dxySim>dxyintervals[count][f]&&
00639 dxySim<dxyintervals[count][f+1]) {
00640 totSIM_dxy[count][f]++;
00641 if (isMatched) {
00642 totASS_dxy[count][f]++;
00643 }
00644 }
00645 }
00646
00647 for (unsigned int f=0; f<vertposintervals[count].size()-1; f++){
00648 if (sqrt(vertexTP.perp2())>vertposintervals[count][f]&&
00649 sqrt(vertexTP.perp2())<vertposintervals[count][f+1]) {
00650 totSIM_vertpos[count][f]++;
00651 if (isMatched) {
00652 totASS_vertpos[count][f]++;
00653 }
00654 }
00655 }
00656 }
00657
00658 if((*TpSelectorForEfficiencyVsVTXZ)(tp)){
00659 for (unsigned int f=0; f<dzintervals[count].size()-1; f++){
00660 if (dzSim>dzintervals[count][f]&&
00661 dzSim<dzintervals[count][f+1]) {
00662 totSIM_dz[count][f]++;
00663 if (isMatched) {
00664 totASS_dz[count][f]++;
00665 }
00666 }
00667 }
00668
00669
00670 for (unsigned int f=0; f<zposintervals[count].size()-1; f++){
00671 if (vertexTP.z()>zposintervals[count][f]&&
00672 vertexTP.z()<zposintervals[count][f+1]) {
00673 totSIM_zpos[count][f]++;
00674 if (isMatched) {
00675 totASS_zpos[count][f]++;
00676 }
00677 }
00678 }
00679 }
00680
00681 }
00682
00683
00684 void MTVHistoProducerAlgoForTracker::fill_dedx_recoTrack_histos(int count, edm::RefToBase<reco::Track>& trackref, std::vector< edm::ValueMap<reco::DeDxData> > v_dEdx) {
00685
00686 double dedx;
00687 int nom;
00688 int sat;
00689 edm::ValueMap<reco::DeDxData> dEdxTrack;
00690 for (unsigned int i=0; i<v_dEdx.size(); i++) {
00691 dEdxTrack = v_dEdx.at(i);
00692 dedx = dEdxTrack[trackref].dEdx();
00693 nom = dEdxTrack[trackref].numberOfMeasurements();
00694 sat = dEdxTrack[trackref].numberOfSaturatedMeasurements();
00695 if (i==0) {
00696 h_dedx_estim1[count]->Fill(dedx);
00697 h_dedx_nom1[count]->Fill(nom);
00698 h_dedx_sat1[count]->Fill(sat);
00699 } else if (i==1) {
00700 h_dedx_estim2[count]->Fill(dedx);
00701 h_dedx_nom2[count]->Fill(nom);
00702 h_dedx_sat2[count]->Fill(sat);
00703 }
00704 }
00705 }
00706
00707
00708
00709 void MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos(int count,
00710 const reco::Track& track,
00711 math::XYZPoint bsPosition,
00712 bool isMatched){
00713
00714
00715 for (unsigned int f=0; f<etaintervals[count].size()-1; f++){
00716 if (getEta(track.momentum().eta())>etaintervals[count][f]&&
00717 getEta(track.momentum().eta())<etaintervals[count][f+1]) {
00718 totRECeta[count][f]++;
00719 if (isMatched) {
00720 totASS2eta[count][f]++;
00721 }
00722 }
00723 }
00724
00725 for (unsigned int f=0; f<phiintervals[count].size()-1; f++){
00726 if (track.momentum().phi()>phiintervals[count][f]&&
00727 track.momentum().phi()<phiintervals[count][f+1]) {
00728 totREC_phi[count][f]++;
00729 if (isMatched) {
00730 totASS2_phi[count][f]++;
00731 }
00732 }
00733 }
00734
00735
00736 for (unsigned int f=0; f<pTintervals[count].size()-1; f++){
00737 if (getPt(sqrt(track.momentum().perp2()))>pTintervals[count][f]&&
00738 getPt(sqrt(track.momentum().perp2()))<pTintervals[count][f+1]) {
00739 totRECpT[count][f]++;
00740 if (isMatched) {
00741 totASS2pT[count][f]++;
00742 }
00743 }
00744 }
00745
00746 for (unsigned int f=0; f<dxyintervals[count].size()-1; f++){
00747 if (track.dxy(bsPosition)>dxyintervals[count][f]&&
00748 track.dxy(bsPosition)<dxyintervals[count][f+1]) {
00749 totREC_dxy[count][f]++;
00750 if (isMatched) {
00751 totASS2_dxy[count][f]++;
00752 }
00753 }
00754 }
00755
00756 for (unsigned int f=0; f<dzintervals[count].size()-1; f++){
00757 if (track.dz(bsPosition)>dzintervals[count][f]&&
00758 track.dz(bsPosition)<dzintervals[count][f+1]) {
00759 totREC_dz[count][f]++;
00760 if (isMatched) {
00761 totASS2_dz[count][f]++;
00762 }
00763 }
00764 }
00765
00766 int tmp = std::min((int)track.found(),int(maxHit-1));
00767 totREC_hit[count][tmp]++;
00768 if (isMatched) totASS2_hit[count][tmp]++;
00769
00770 }
00771
00772
00773 void MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(int count,
00774 const reco::Track& track){
00775
00776 h_nchi2[count]->Fill(track.normalizedChi2());
00777 h_nchi2_prob[count]->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
00778 h_hits[count]->Fill(track.numberOfValidHits());
00779 h_losthits[count]->Fill(track.numberOfLostHits());
00780 chi2_vs_nhits[count]->Fill(track.numberOfValidHits(),track.normalizedChi2());
00781 h_charge[count]->Fill( track.charge() );
00782
00783
00784 chi2_vs_eta[count]->Fill(getEta(track.eta()),track.normalizedChi2());
00785 nhits_vs_eta[count]->Fill(getEta(track.eta()),track.numberOfValidHits());
00786 nPXBhits_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().numberOfValidPixelBarrelHits());
00787 nPXFhits_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().numberOfValidPixelEndcapHits());
00788 nTIBhits_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().numberOfValidStripTIBHits());
00789 nTIDhits_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().numberOfValidStripTIDHits());
00790 nTOBhits_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().numberOfValidStripTOBHits());
00791 nTEChits_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().numberOfValidStripTECHits());
00792 nLayersWithMeas_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().trackerLayersWithMeasurement());
00793 nPXLlayersWithMeas_vs_eta[count]->Fill(getEta(track.eta()),track.hitPattern().pixelLayersWithMeasurement());
00794 int LayersAll = track.hitPattern().stripLayersWithMeasurement();
00795 int Layers2D = track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
00796 int Layers1D = LayersAll - Layers2D;
00797 nSTRIPlayersWithMeas_vs_eta[count]->Fill(getEta(track.eta()),LayersAll);
00798 nSTRIPlayersWith1dMeas_vs_eta[count]->Fill(getEta(track.eta()),Layers1D);
00799 nSTRIPlayersWith2dMeas_vs_eta[count]->Fill(getEta(track.eta()),Layers2D);
00800
00801 nlosthits_vs_eta[count]->Fill(getEta(track.eta()),track.numberOfLostHits());
00802 }
00803
00804
00805
00806 void MTVHistoProducerAlgoForTracker::fill_ResoAndPull_recoTrack_histos(int count,
00807 ParticleBase::Vector momentumTP,
00808 ParticleBase::Point vertexTP,
00809 int chargeTP,
00810 const reco::Track& track,
00811 math::XYZPoint bsPosition){
00812
00813
00814 double qoverpSim = chargeTP/sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
00815 double lambdaSim = M_PI/2-momentumTP.theta();
00816 double phiSim = momentumTP.phi();
00817 double dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi()));
00818 double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2())
00819 * momentumTP.z()/sqrt(momentumTP.perp2());
00820
00821
00822 reco::Track::ParameterVector rParameters = track.parameters();
00823
00824 double qoverpRec(0);
00825 double qoverpErrorRec(0);
00826 double ptRec(0);
00827 double ptErrorRec(0);
00828 double lambdaRec(0);
00829 double lambdaErrorRec(0);
00830 double phiRec(0);
00831 double phiErrorRec(0);
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853 getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
00854 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
00855
00856
00857 double ptError = ptErrorRec;
00858 double ptres=ptRec-sqrt(momentumTP.perp2());
00859 double etares=track.eta()-momentumTP.Eta();
00860
00861
00862 double dxyRec = track.dxy(bsPosition);
00863 double dzRec = track.dz(bsPosition);
00864
00865
00866 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
00867 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
00868 double phiPull=(phiRec-phiSim)/phiErrorRec;
00869 double dxyPull=(dxyRec-dxySim)/track.dxyError();
00870 double dzPull=(dzRec-dzSim)/track.dzError();
00871
00872 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
00873 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
00874 double contrib_dxy = ((dxyRec-dxySim)/track.dxyError())*((dxyRec-dxySim)/track.dxyError())/5;
00875 double contrib_dz = ((dzRec-dzSim)/track.dzError())*((dzRec-dzSim)/track.dzError())/5;
00876 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
00877 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
00878 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
00879 ((phiRec-phiSim)/phiErrorRec)/5;
00880
00881 LogTrace("TrackValidatorTEST")
00882
00883 << "" << "\n"
00884 << "ptREC=" << ptRec << "\n" << "etaREC=" << track.eta() << "\n" << "qoverpREC=" << qoverpRec << "\n"
00885 << "dxyREC=" << dxyRec << "\n" << "dzREC=" << dzRec << "\n"
00886 << "thetaREC=" << track.theta() << "\n" << "phiREC=" << phiRec << "\n"
00887 << "" << "\n"
00888 << "qoverpError()=" << qoverpErrorRec << "\n" << "dxyError()=" << track.dxyError() << "\n"<< "dzError()="
00889 << track.dzError() << "\n"
00890 << "thetaError()=" << lambdaErrorRec << "\n" << "phiError()=" << phiErrorRec << "\n"
00891 << "" << "\n"
00892 << "ptSIM=" << sqrt(momentumTP.perp2()) << "\n"<< "etaSIM=" << momentumTP.Eta() << "\n"<< "qoverpSIM=" << qoverpSim << "\n"
00893 << "dxySIM=" << dxySim << "\n"<< "dzSIM=" << dzSim << "\n" << "thetaSIM=" << M_PI/2-lambdaSim << "\n"
00894 << "phiSIM=" << phiSim << "\n"
00895 << "" << "\n"
00896 << "contrib_Qoverp=" << contrib_Qoverp << "\n"<< "contrib_dxy=" << contrib_dxy << "\n"<< "contrib_dz=" << contrib_dz << "\n"
00897 << "contrib_theta=" << contrib_theta << "\n"<< "contrib_phi=" << contrib_phi << "\n"
00898 << "" << "\n"
00899 <<"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<"\n";
00900
00901 h_pullQoverp[count]->Fill(qoverpPull);
00902 h_pullTheta[count]->Fill(thetaPull);
00903 h_pullPhi[count]->Fill(phiPull);
00904 h_pullDxy[count]->Fill(dxyPull);
00905 h_pullDz[count]->Fill(dzPull);
00906
00907
00908 h_pt[count]->Fill(ptres/ptError);
00909 h_eta[count]->Fill(etares);
00910 etares_vs_eta[count]->Fill(getEta(track.eta()),etares);
00911
00912
00913
00914
00915 dxyres_vs_eta[count]->Fill(getEta(track.eta()),dxyRec-dxySim);
00916 ptres_vs_eta[count]->Fill(getEta(track.eta()),(ptRec-sqrt(momentumTP.perp2()))/ptRec);
00917 dzres_vs_eta[count]->Fill(getEta(track.eta()),dzRec-dzSim);
00918 phires_vs_eta[count]->Fill(getEta(track.eta()),phiRec-phiSim);
00919 cotThetares_vs_eta[count]->Fill(getEta(track.eta()),1/tan(M_PI*0.5-lambdaRec)-1/tan(M_PI*0.5-lambdaSim));
00920
00921
00922 dxyres_vs_pt[count]->Fill(getPt(ptRec),dxyRec-dxySim);
00923 ptres_vs_pt[count]->Fill(getPt(ptRec),(ptRec-sqrt(momentumTP.perp2()))/ptRec);
00924 dzres_vs_pt[count]->Fill(getPt(ptRec),dzRec-dzSim);
00925 phires_vs_pt[count]->Fill(getPt(ptRec),phiRec-phiSim);
00926 cotThetares_vs_pt[count]->Fill(getPt(ptRec),1/tan(M_PI*0.5-lambdaRec)-1/tan(M_PI*0.5-lambdaSim));
00927
00928
00929 dxypull_vs_eta[count]->Fill(getEta(track.eta()),dxyPull);
00930 ptpull_vs_eta[count]->Fill(getEta(track.eta()),ptres/ptError);
00931 dzpull_vs_eta[count]->Fill(getEta(track.eta()),dzPull);
00932 phipull_vs_eta[count]->Fill(getEta(track.eta()),phiPull);
00933 thetapull_vs_eta[count]->Fill(getEta(track.eta()),thetaPull);
00934
00935
00936 nhits_vs_phi[count]->Fill(phiRec,track.numberOfValidHits());
00937 chi2_vs_phi[count]->Fill(phiRec,track.normalizedChi2());
00938 ptmean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),ptRec);
00939 phimean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),phiRec);
00940 ptres_vs_phi[count]->Fill(phiRec,(ptRec-sqrt(momentumTP.perp2()))/ptRec);
00941 phires_vs_phi[count]->Fill(phiRec,phiRec-phiSim);
00942 ptpull_vs_phi[count]->Fill(phiRec,ptres/ptError);
00943 phipull_vs_phi[count]->Fill(phiRec,phiPull);
00944 thetapull_vs_phi[count]->Fill(phiRec,thetaPull);
00945
00946
00947 }
00948
00949
00950
00951 void
00952 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::Track& track, double& pt, double& ptError,
00953 double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
00954 double& phi, double& phiError ) const {
00955 pt = track.pt();
00956 ptError = track.ptError();
00957 qoverp = track.qoverp();
00958 qoverpError = track.qoverpError();
00959 lambda = track.lambda();
00960 lambdaError = track.lambdaError();
00961 phi = track.phi();
00962 phiError = track.phiError();
00963
00964
00965
00966
00967 }
00968
00969 void
00970 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::GsfTrack& gsfTrack, double& pt, double& ptError,
00971 double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
00972 double& phi, double& phiError ) const {
00973
00974 pt = gsfTrack.ptMode();
00975 ptError = gsfTrack.ptModeError();
00976 qoverp = gsfTrack.qoverpMode();
00977 qoverpError = gsfTrack.qoverpModeError();
00978 lambda = gsfTrack.lambdaMode();
00979 lambdaError = gsfTrack.lambdaModeError();
00980 phi = gsfTrack.phiMode();
00981 phiError = gsfTrack.phiModeError();
00982
00983
00984 }
00985
00986 double
00987 MTVHistoProducerAlgoForTracker::getEta(double eta) {
00988 if (useFabsEta) return fabs(eta);
00989 else return eta;
00990 }
00991
00992 double
00993 MTVHistoProducerAlgoForTracker::getPt(double pt) {
00994 if (useInvPt && pt!=0) return 1/pt;
00995 else return pt;
00996 }
00997
00998
00999 void MTVHistoProducerAlgoForTracker::finalHistoFits(int counter){
01000
01001 FitSlicesYTool fsyt_dxy(dxyres_vs_eta[counter]);
01002 fsyt_dxy.getFittedSigmaWithError(h_dxyrmsh[counter]);
01003 fsyt_dxy.getFittedMeanWithError(h_dxymeanh[counter]);
01004 FitSlicesYTool fsyt_dxyPt(dxyres_vs_pt[counter]);
01005 fsyt_dxyPt.getFittedSigmaWithError(h_dxyrmshPt[counter]);
01006 fsyt_dxyPt.getFittedMeanWithError(h_dxymeanhPt[counter]);
01007 FitSlicesYTool fsyt_pt(ptres_vs_eta[counter]);
01008 fsyt_pt.getFittedSigmaWithError(h_ptrmsh[counter]);
01009 fsyt_pt.getFittedMeanWithError(h_ptshifteta[counter]);
01010 FitSlicesYTool fsyt_ptPt(ptres_vs_pt[counter]);
01011 fsyt_ptPt.getFittedSigmaWithError(h_ptrmshPt[counter]);
01012 fsyt_ptPt.getFittedMeanWithError(h_ptmeanhPt[counter]);
01013 FitSlicesYTool fsyt_ptPhi(ptres_vs_phi[counter]);
01014 fsyt_ptPhi.getFittedSigmaWithError(h_ptrmshPhi[counter]);
01015 fsyt_ptPhi.getFittedMeanWithError(h_ptmeanhPhi[counter]);
01016 FitSlicesYTool fsyt_dz(dzres_vs_eta[counter]);
01017 fsyt_dz.getFittedSigmaWithError(h_dzrmsh[counter]);
01018 fsyt_dz.getFittedMeanWithError(h_dzmeanh[counter]);
01019 FitSlicesYTool fsyt_dzPt(dzres_vs_pt[counter]);
01020 fsyt_dzPt.getFittedSigmaWithError(h_dzrmshPt[counter]);
01021 fsyt_dzPt.getFittedMeanWithError(h_dzmeanhPt[counter]);
01022 FitSlicesYTool fsyt_phi(phires_vs_eta[counter]);
01023 fsyt_phi.getFittedSigmaWithError(h_phirmsh[counter]);
01024 fsyt_phi.getFittedMeanWithError(h_phimeanh[counter]);
01025 FitSlicesYTool fsyt_phiPt(phires_vs_pt[counter]);
01026 fsyt_phiPt.getFittedSigmaWithError(h_phirmshPt[counter]);
01027 fsyt_phiPt.getFittedMeanWithError(h_phimeanhPt[counter]);
01028 FitSlicesYTool fsyt_phiPhi(phires_vs_phi[counter]);
01029 fsyt_phiPhi.getFittedSigmaWithError(h_phirmshPhi[counter]);
01030 fsyt_phiPhi.getFittedMeanWithError(h_phimeanhPhi[counter]);
01031 FitSlicesYTool fsyt_cotTheta(cotThetares_vs_eta[counter]);
01032 fsyt_cotTheta.getFittedSigmaWithError(h_cotThetarmsh[counter]);
01033 fsyt_cotTheta.getFittedMeanWithError(h_cotThetameanh[counter]);
01034 FitSlicesYTool fsyt_cotThetaPt(cotThetares_vs_pt[counter]);
01035 fsyt_cotThetaPt.getFittedSigmaWithError(h_cotThetarmshPt[counter]);
01036 fsyt_cotThetaPt.getFittedMeanWithError(h_cotThetameanhPt[counter]);
01037
01038
01039 FitSlicesYTool fsyt_dxyp(dxypull_vs_eta[counter]);
01040 fsyt_dxyp.getFittedSigmaWithError(h_dxypulleta[counter]);
01041 fsyt_dxyp.getFittedMeanWithError(h_dxypulletamean[counter]);
01042 FitSlicesYTool fsyt_ptp(ptpull_vs_eta[counter]);
01043 fsyt_ptp.getFittedSigmaWithError(h_ptpulleta[counter]);
01044 fsyt_ptp.getFittedMeanWithError(h_ptpulletamean[counter]);
01045 FitSlicesYTool fsyt_dzp(dzpull_vs_eta[counter]);
01046 fsyt_dzp.getFittedSigmaWithError(h_dzpulleta[counter]);
01047 fsyt_dzp.getFittedMeanWithError(h_dzpulletamean[counter]);
01048 FitSlicesYTool fsyt_phip(phipull_vs_eta[counter]);
01049 fsyt_phip.getFittedSigmaWithError(h_phipulleta[counter]);
01050 fsyt_phip.getFittedMeanWithError(h_phipulletamean[counter]);
01051 FitSlicesYTool fsyt_thetap(thetapull_vs_eta[counter]);
01052 fsyt_thetap.getFittedSigmaWithError(h_thetapulleta[counter]);
01053 fsyt_thetap.getFittedMeanWithError(h_thetapulletamean[counter]);
01054
01055 FitSlicesYTool fsyt_ptpPhi(ptpull_vs_phi[counter]);
01056 fsyt_ptpPhi.getFittedSigmaWithError(h_ptpullphi[counter]);
01057 fsyt_ptpPhi.getFittedMeanWithError(h_ptpullphimean[counter]);
01058 FitSlicesYTool fsyt_phipPhi(phipull_vs_phi[counter]);
01059 fsyt_phipPhi.getFittedSigmaWithError(h_phipullphi[counter]);
01060 fsyt_phipPhi.getFittedMeanWithError(h_phipullphimean[counter]);
01061 FitSlicesYTool fsyt_thetapPhi(thetapull_vs_phi[counter]);
01062 fsyt_thetapPhi.getFittedSigmaWithError(h_thetapullphi[counter]);
01063 fsyt_thetapPhi.getFittedMeanWithError(h_thetapullphimean[counter]);
01064
01065
01066 fillPlotFromVectors(h_effic[counter],totASSeta[counter],totSIMeta[counter],"effic");
01067 fillPlotFromVectors(h_fakerate[counter],totASS2eta[counter],totRECeta[counter],"fakerate");
01068 fillPlotFromVectors(h_efficPt[counter],totASSpT[counter],totSIMpT[counter],"effic");
01069 fillPlotFromVectors(h_fakeratePt[counter],totASS2pT[counter],totRECpT[counter],"fakerate");
01070 fillPlotFromVectors(h_effic_vs_hit[counter],totASS_hit[counter],totSIM_hit[counter],"effic");
01071 fillPlotFromVectors(h_fake_vs_hit[counter],totASS2_hit[counter],totREC_hit[counter],"fakerate");
01072 fillPlotFromVectors(h_effic_vs_phi[counter],totASS_phi[counter],totSIM_phi[counter],"effic");
01073 fillPlotFromVectors(h_fake_vs_phi[counter],totASS2_phi[counter],totREC_phi[counter],"fakerate");
01074 fillPlotFromVectors(h_effic_vs_dxy[counter],totASS_dxy[counter],totSIM_dxy[counter],"effic");
01075 fillPlotFromVectors(h_fake_vs_dxy[counter],totASS2_dxy[counter],totREC_dxy[counter],"fakerate");
01076 fillPlotFromVectors(h_effic_vs_dz[counter],totASS_dz[counter],totSIM_dz[counter],"effic");
01077 fillPlotFromVectors(h_fake_vs_dz[counter],totASS2_dz[counter],totREC_dz[counter],"fakerate");
01078 fillPlotFromVectors(h_effic_vs_vertpos[counter],totASS_vertpos[counter],totSIM_vertpos[counter],"effic");
01079 fillPlotFromVectors(h_effic_vs_zpos[counter],totASS_zpos[counter],totSIM_zpos[counter],"effic");
01080
01081 }
01082
01083
01084 void MTVHistoProducerAlgoForTracker::fillProfileHistosFromVectors(int counter){
01085
01086 doProfileX(chi2_vs_eta[counter],h_chi2meanh[counter]);
01087 doProfileX(nhits_vs_eta[counter],h_hits_eta[counter]);
01088 doProfileX(nPXBhits_vs_eta[counter],h_PXBhits_eta[counter]);
01089 doProfileX(nPXFhits_vs_eta[counter],h_PXFhits_eta[counter]);
01090 doProfileX(nTIBhits_vs_eta[counter],h_TIBhits_eta[counter]);
01091 doProfileX(nTIDhits_vs_eta[counter],h_TIDhits_eta[counter]);
01092 doProfileX(nTOBhits_vs_eta[counter],h_TOBhits_eta[counter]);
01093 doProfileX(nTEChits_vs_eta[counter],h_TEChits_eta[counter]);
01094
01095 doProfileX(nLayersWithMeas_vs_eta[counter],h_LayersWithMeas_eta[counter]);
01096 doProfileX(nPXLlayersWithMeas_vs_eta[counter],h_PXLlayersWithMeas_eta[counter]);
01097 doProfileX(nSTRIPlayersWithMeas_vs_eta[counter],h_STRIPlayersWithMeas_eta[counter]);
01098 doProfileX(nSTRIPlayersWith1dMeas_vs_eta[counter],h_STRIPlayersWith1dMeas_eta[counter]);
01099 doProfileX(nSTRIPlayersWith2dMeas_vs_eta[counter],h_STRIPlayersWith2dMeas_eta[counter]);
01100
01101
01102
01103 doProfileX(nlosthits_vs_eta[counter],h_losthits_eta[counter]);
01104
01105 doProfileX(chi2_vs_nhits[counter],h_chi2meanhitsh[counter]);
01106
01107
01108 doProfileX(chi2_vs_phi[counter],h_chi2mean_vs_phi[counter]);
01109 doProfileX(nhits_vs_phi[counter],h_hits_phi[counter]);
01110
01111
01112 }
01113
01114 void MTVHistoProducerAlgoForTracker::fillHistosFromVectors(int counter){
01115 fillPlotFromVector(h_recoeta[counter],totRECeta[counter]);
01116 fillPlotFromVector(h_simuleta[counter],totSIMeta[counter]);
01117 fillPlotFromVector(h_assoceta[counter],totASSeta[counter]);
01118 fillPlotFromVector(h_assoc2eta[counter],totASS2eta[counter]);
01119
01120 fillPlotFromVector(h_recopT[counter],totRECpT[counter]);
01121 fillPlotFromVector(h_simulpT[counter],totSIMpT[counter]);
01122 fillPlotFromVector(h_assocpT[counter],totASSpT[counter]);
01123 fillPlotFromVector(h_assoc2pT[counter],totASS2pT[counter]);
01124
01125 fillPlotFromVector(h_recohit[counter],totREC_hit[counter]);
01126 fillPlotFromVector(h_simulhit[counter],totSIM_hit[counter]);
01127 fillPlotFromVector(h_assochit[counter],totASS_hit[counter]);
01128 fillPlotFromVector(h_assoc2hit[counter],totASS2_hit[counter]);
01129
01130 fillPlotFromVector(h_recophi[counter],totREC_phi[counter]);
01131 fillPlotFromVector(h_simulphi[counter],totSIM_phi[counter]);
01132 fillPlotFromVector(h_assocphi[counter],totASS_phi[counter]);
01133 fillPlotFromVector(h_assoc2phi[counter],totASS2_phi[counter]);
01134
01135 fillPlotFromVector(h_recodxy[counter],totREC_dxy[counter]);
01136 fillPlotFromVector(h_simuldxy[counter],totSIM_dxy[counter]);
01137 fillPlotFromVector(h_assocdxy[counter],totASS_dxy[counter]);
01138 fillPlotFromVector(h_assoc2dxy[counter],totASS2_dxy[counter]);
01139
01140 fillPlotFromVector(h_recodz[counter],totREC_dz[counter]);
01141 fillPlotFromVector(h_simuldz[counter],totSIM_dz[counter]);
01142 fillPlotFromVector(h_assocdz[counter],totASS_dz[counter]);
01143 fillPlotFromVector(h_assoc2dz[counter],totASS2_dz[counter]);
01144
01145 fillPlotFromVector(h_simulvertpos[counter],totSIM_vertpos[counter]);
01146 fillPlotFromVector(h_assocvertpos[counter],totASS_vertpos[counter]);
01147
01148 fillPlotFromVector(h_simulzpos[counter],totSIM_zpos[counter]);
01149 fillPlotFromVector(h_assoczpos[counter],totASS_zpos[counter]);
01150 }