34 for (
unsigned int ww=0;ww<associators.size();ww++){
35 for (
unsigned int www=0;www<
label.size();www++){
43 dirName+=algo.
label()+
"_";
46 if (dirName.find(
"Tracks")<dirName.length()){
47 dirName.replace(dirName.find(
"Tracks"),6,
"");
49 string assoc= associators[ww];
50 if (assoc.find(
"Track")<assoc.length()){
51 assoc.replace(assoc.find(
"Track"),5,
"");
60 string subDirName = dirName +
"/simulation";
62 h_ptSIM.push_back(
dbe_->
book1D(
"ptSIM",
"generated p_{t}", 5500, 0, 110 ) );
63 h_etaSIM.push_back(
dbe_->
book1D(
"etaSIM",
"generated pseudorapidity", 500, -2.5, 2.5 ) );
64 h_tracksSIM.push_back(
dbe_->
book1D(
"tracksSIM",
"number of simulated tracks",200,-0.5,99.5) );
65 h_vertposSIM.push_back(
dbe_->
book1D(
"vertposSIM",
"Transverse position of sim vertices",100,0.,120.) );
69 h_tracks.push_back(
dbe_->
book1D(
"tracks",
"number of reconstructed tracks",200,-0.5,19.5) );
70 h_fakes.push_back(
dbe_->
book1D(
"fakes",
"number of fake reco tracks",20,-0.5,19.5) );
71 h_charge.push_back(
dbe_->
book1D(
"charge",
"charge",3,-1.5,1.5) );
72 h_hits.push_back(
dbe_->
book1D(
"hits",
"number of hits per track", nintHit,minHit,maxHit ) );
73 h_losthits.push_back(
dbe_->
book1D(
"losthits",
"number of lost hits per track", nintHit,minHit,maxHit) );
74 h_nchi2.push_back(
dbe_->
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
75 h_nchi2_prob.push_back(
dbe_->
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
78 h_efficPt.push_back(
dbe_->
book1D(
"efficPt",
"efficiency vs pT",nintpT,minpT,maxpT) );
79 h_effic_vs_hit.push_back(
dbe_->
book1D(
"effic_vs_hit",
"effic vs hit",nintHit,minHit,maxHit) );
80 h_effic_vs_phi.push_back(
dbe_->
book1D(
"effic_vs_phi",
"effic vs phi",nintPhi,minPhi,maxPhi) );
81 h_effic_vs_dxy.push_back(
dbe_->
book1D(
"effic_vs_dxy",
"effic vs dxy",nintDxy,minDxy,maxDxy) );
82 h_effic_vs_dz.push_back(
dbe_->
book1D(
"effic_vs_dz",
"effic vs dz",nintDz,minDz,maxDz) );
83 h_effic_vs_vertpos.push_back(
dbe_->
book1D(
"effic_vs_vertpos",
"effic vs vertpos",nintVertpos,minVertpos,maxVertpos) );
84 h_effic_vs_zpos.push_back(
dbe_->
book1D(
"effic_vs_zpos",
"effic vs zpos",nintZpos,minZpos,maxZpos) );
87 h_fakeratePt.push_back(
dbe_->
book1D(
"fakeratePt",
"fake rate vs pT",nintpT,minpT,maxpT) );
88 h_fake_vs_hit.push_back(
dbe_->
book1D(
"fakerate_vs_hit",
"fake rate vs hit",nintHit,minHit,maxHit) );
89 h_fake_vs_phi.push_back(
dbe_->
book1D(
"fakerate_vs_phi",
"fake vs phi",nintPhi,minPhi,maxPhi) );
90 h_fake_vs_dxy.push_back(
dbe_->
book1D(
"fakerate_vs_dxy",
"fake rate vs dxy",nintDxy,minDxy,maxDxy) );
91 h_fake_vs_dz.push_back(
dbe_->
book1D(
"fakerate_vs_dz",
"fake vs dz",nintDz,minDz,maxDz) );
96 h_assoceta.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_eta",
"N of associated tracks (simToReco) vs eta",
nint,
min,
max) );
97 h_assoc2eta.push_back(
dbe_->
book1D(
"num_assoc(recoToSim)_eta",
"N of associated (recoToSim) tracks vs eta",
nint,
min,
max) );
98 h_simuleta.push_back(
dbe_->
book1D(
"num_simul_eta",
"N of simulated tracks vs eta",
nint,
min,
max) );
99 h_recopT.push_back(
dbe_->
book1D(
"num_reco_pT",
"N of reco track vs pT",nintpT,minpT,maxpT) );
100 h_assocpT.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_pT",
"N of associated tracks (simToReco) vs pT",nintpT,minpT,maxpT) );
101 h_assoc2pT.push_back(
dbe_->
book1D(
"num_assoc(recoToSim)_pT",
"N of associated (recoToSim) tracks vs pT",nintpT,minpT,maxpT) );
102 h_simulpT.push_back(
dbe_->
book1D(
"num_simul_pT",
"N of simulated tracks vs pT",nintpT,minpT,maxpT) );
104 h_recohit.push_back(
dbe_->
book1D(
"num_reco_hit",
"N of reco track vs hit",nintHit,minHit,maxHit) );
105 h_assochit.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_hit",
"N of associated tracks (simToReco) vs hit",nintHit,minHit,maxHit) );
106 h_assoc2hit.push_back(
dbe_->
book1D(
"num_assoc(recoToSim)_hit",
"N of associated (recoToSim) tracks vs hit",nintHit,minHit,maxHit) );
107 h_simulhit.push_back(
dbe_->
book1D(
"num_simul_hit",
"N of simulated tracks vs hit",nintHit,minHit,maxHit) );
109 h_recophi.push_back(
dbe_->
book1D(
"num_reco_phi",
"N of reco track vs phi",nintPhi,minPhi,maxPhi) );
110 h_assocphi.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_phi",
"N of associated tracks (simToReco) vs phi",nintPhi,minPhi,maxPhi) );
111 h_assoc2phi.push_back(
dbe_->
book1D(
"num_assoc(recoToSim)_phi",
"N of associated (recoToSim) tracks vs phi",nintPhi,minPhi,maxPhi) );
112 h_simulphi.push_back(
dbe_->
book1D(
"num_simul_phi",
"N of simulated tracks vs phi",nintPhi,minPhi,maxPhi) );
114 h_recodxy.push_back(
dbe_->
book1D(
"num_reco_dxy",
"N of reco track vs dxy",nintDxy,minDxy,maxDxy) );
115 h_assocdxy.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_dxy",
"N of associated tracks (simToReco) vs dxy",nintDxy,minDxy,maxDxy) );
116 h_assoc2dxy.push_back(
dbe_->
book1D(
"num_assoc(recoToSim)_dxy",
"N of associated (recoToSim) tracks vs dxy",nintDxy,minDxy,maxDxy) );
117 h_simuldxy.push_back(
dbe_->
book1D(
"num_simul_dxy",
"N of simulated tracks vs dxy",nintDxy,minDxy,maxDxy) );
119 h_recodz.push_back(
dbe_->
book1D(
"num_reco_dz",
"N of reco track vs dz",nintDz,minDz,maxDz) );
120 h_assocdz.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_dz",
"N of associated tracks (simToReco) vs dz",nintDz,minDz,maxDz) );
121 h_assoc2dz.push_back(
dbe_->
book1D(
"num_assoc(recoToSim)_dz",
"N of associated (recoToSim) tracks vs dz",nintDz,minDz,maxDz) );
122 h_simuldz.push_back(
dbe_->
book1D(
"num_simul_dz",
"N of simulated tracks vs dz",nintDz,minDz,maxDz) );
124 h_assocvertpos.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_vertpos",
"N of associated tracks (simToReco) vs transverse vert position",nintVertpos,minVertpos,maxVertpos) );
125 h_simulvertpos.push_back(
dbe_->
book1D(
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",nintVertpos,minVertpos,maxVertpos) );
127 h_assoczpos.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",nintZpos,minZpos,maxZpos) );
128 h_simulzpos.push_back(
dbe_->
book1D(
"num_simul_zpos",
"N of simulated tracks vs z vert position",nintZpos,minZpos,maxZpos) );
133 h_eta.push_back(
dbe_->
book1D(
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1 ) );
134 h_pt.push_back(
dbe_->
book1D(
"pullPt",
"pull of p_{t}", 100, -10, 10 ) );
135 h_pullTheta.push_back(
dbe_->
book1D(
"pullTheta",
"pull of #theta parameter",250,-25,25) );
136 h_pullPhi.push_back(
dbe_->
book1D(
"pullPhi",
"pull of #phi parameter",250,-25,25) );
137 h_pullDxy.push_back(
dbe_->
book1D(
"pullDxy",
"pull of dxy parameter",250,-25,25) );
138 h_pullDz.push_back(
dbe_->
book1D(
"pullDz",
"pull of dz parameter",250,-25,25) );
139 h_pullQoverp.push_back(
dbe_->
book1D(
"pullQoverp",
"pull of qoverp parameter",250,-25,25) );
141 if (associators[ww]==
"TrackAssociatorByChi2"){
142 h_assochi2.push_back(
dbe_->
book1D(
"assocChi2",
"track association #chi^{2}",1000000,0,100000) );
143 h_assochi2_prob.push_back(
dbe_->
book1D(
"assocChi2_prob",
"probability of association #chi^{2}",100,0,1));
144 }
else if (associators[ww]==
"TrackAssociatorByHits"){
145 h_assocFraction.push_back(
dbe_->
book1D(
"assocFraction",
"fraction of shared hits",200,0,2) );
146 h_assocSharedHit.push_back(
dbe_->
book1D(
"assocSharedHit",
"number of shared hits",20,0,20));
149 chi2_vs_nhits.push_back(
dbe_->
book2D(
"chi2_vs_nhits",
"#chi^{2} vs nhits",25,0,25,100,0,10) );
150 h_chi2meanhitsh.push_back(
dbe_->
bookProfile(
"chi2mean_vs_nhits",
"mean #chi^{2} vs nhits",25,0,25,100,0,10) );
152 etares_vs_eta.push_back(
dbe_->
book2D(
"etares_vs_eta",
"etaresidue vs eta",
nint,
min,
max,200,-0.1,0.1) );
153 nrec_vs_nsim.push_back(
dbe_->
book2D(
"nrec_vs_nsim",
"nrec vs nsim",20,-0.5,19.5,20,-0.5,19.5) );
157 chi2_vs_phi.push_back(
dbe_->
book2D(
"chi2_vs_phi",
"#chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20 ) );
158 h_chi2mean_vs_phi.push_back(
dbe_->
bookProfile(
"chi2mean_vs_phi",
"mean of #chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20) );
160 nhits_vs_eta.push_back(
dbe_->
book2D(
"nhits_vs_eta",
"nhits vs eta",
nint,
min,
max,nintHit,minHit,maxHit) );
161 nDThits_vs_eta.push_back(
dbe_->
book2D(
"nDThits_vs_eta",
"# DT hits vs eta",
nint,
min,
max,nintHit,minHit,maxHit) );
162 nCSChits_vs_eta.push_back(
dbe_->
book2D(
"nCSChits_vs_eta",
"# CSC hits vs eta",
nint,
min,
max,nintHit,minHit,maxHit) );
163 nRPChits_vs_eta.push_back(
dbe_->
book2D(
"nRPChits_vs_eta",
"# RPC hits vs eta",
nint,
min,
max,nintHit,minHit,maxHit) );
169 nhits_vs_phi.push_back(
dbe_->
book2D(
"nhits_vs_phi",
"#hits vs #phi",nintPhi,minPhi,maxPhi,nintHit,minHit,maxHit) );
170 h_hits_phi.push_back(
dbe_->
bookProfile(
"hits_phi",
"mean #hits vs #phi",nintPhi,minPhi,maxPhi, nintHit,minHit,maxHit) );
172 nlosthits_vs_eta.push_back(
dbe_->
book2D(
"nlosthits_vs_eta",
"nlosthits vs eta",
nint,
min,
max,nintHit,minHit,maxHit) );
175 ptres_vs_eta.push_back(
dbe_->
book2D(
"ptres_vs_eta",
"ptres_vs_eta",
nint,
min,
max, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
176 h_ptrmsh.push_back(
dbe_->
book1D(
"ptres_vs_eta_Sigma",
"#sigma(#deltap_{t}/p_{t}) vs #eta",
nint,
min,
max) );
178 ptres_vs_phi.push_back(
dbe_->
book2D(
"ptres_vs_phi",
"p_{t} res vs #phi",nintPhi,minPhi,maxPhi, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
179 h_ptmeanhPhi.push_back(
dbe_->
book1D(
"ptres_vs_phi_Mean",
"mean of p_{t} resolution vs #phi",nintPhi,minPhi,maxPhi));
180 h_ptrmshPhi.push_back(
dbe_->
book1D(
"ptres_vs_phi_Sigma",
"#sigma(#deltap_{t}/p_{t}) vs #phi",nintPhi,minPhi,maxPhi) );
182 ptres_vs_pt.push_back(
dbe_->
book2D(
"ptres_vs_pt",
"ptres_vs_pt",nintpT,minpT,maxpT, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
183 h_ptmeanhPt.push_back(
dbe_->
book1D(
"ptres_vs_pt_Mean",
"mean of p_{t} resolution vs p_{t}",nintpT,minpT,maxpT));
184 h_ptrmshPt.push_back(
dbe_->
book1D(
"ptres_vs_pt_Sigma",
"#sigma(#deltap_{t}/p_{t}) vs pT",nintpT,minpT,maxpT) );
186 cotThetares_vs_eta.push_back(
dbe_->
book2D(
"cotThetares_vs_eta",
"cotThetares_vs_eta",
nint,
min,
max,cotThetaRes_nbin, cotThetaRes_rangeMin, cotThetaRes_rangeMax));
187 h_cotThetameanh.push_back(
dbe_->
book1D(
"cotThetares_vs_eta_Mean",
"#sigma(cot(#theta)) vs #eta Mean",
nint,
min,
max) );
188 h_cotThetarmsh.push_back(
dbe_->
book1D(
"cotThetares_vs_eta_Sigma",
"#sigma(cot(#theta)) vs #eta Sigma",
nint,
min,
max) );
191 cotThetares_vs_pt.push_back(
dbe_->
book2D(
"cotThetares_vs_pt",
"cotThetares_vs_pt",nintpT,minpT,maxpT, cotThetaRes_nbin, cotThetaRes_rangeMin, cotThetaRes_rangeMax));
192 h_cotThetameanhPt.push_back(
dbe_->
book1D(
"cotThetares_vs_pt_Mean",
"#sigma(cot(#theta)) vs pT Mean",nintpT,minpT,maxpT) );
193 h_cotThetarmshPt.push_back(
dbe_->
book1D(
"cotThetares_vs_pt_Sigma",
"#sigma(cot(#theta)) vs pT Sigma",nintpT,minpT,maxpT) );
196 phires_vs_eta.push_back(
dbe_->
book2D(
"phires_vs_eta",
"phires_vs_eta",
nint,
min,
max, phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
197 h_phimeanh.push_back(
dbe_->
book1D(
"phires_vs_eta_Mean",
"mean of #phi res vs #eta",
nint,
min,
max));
198 h_phirmsh.push_back(
dbe_->
book1D(
"phires_vs_eta_Sigma",
"#sigma(#delta#phi) vs #eta",
nint,
min,
max) );
200 phires_vs_pt.push_back(
dbe_->
book2D(
"phires_vs_pt",
"phires_vs_pt",nintpT,minpT,maxpT, phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
201 h_phimeanhPt.push_back(
dbe_->
book1D(
"phires_vs_pt_Mean",
"mean of #phi res vs pT",nintpT,minpT,maxpT));
202 h_phirmshPt.push_back(
dbe_->
book1D(
"phires_vs_pt_Sigma",
"#sigma(#delta#phi) vs pT",nintpT,minpT,maxpT) );
204 phires_vs_phi.push_back(
dbe_->
book2D(
"phires_vs_phi",
"#phi res vs #phi",nintPhi,minPhi,maxPhi,phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
205 h_phimeanhPhi.push_back(
dbe_->
book1D(
"phires_vs_phi_Mean",
"mean of #phi res vs #phi",nintPhi,minPhi,maxPhi));
206 h_phirmshPhi.push_back(
dbe_->
book1D(
"phires_vs_phi_Sigma",
"#sigma(#delta#phi) vs #phi",nintPhi,minPhi,maxPhi) );
208 dxyres_vs_eta.push_back(
dbe_->
book2D(
"dxyres_vs_eta",
"dxyres_vs_eta",
nint,
min,
max,dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax));
209 h_dxymeanh.push_back(
dbe_->
book1D(
"dxyres_vs_eta_Mean",
"mean of dxyres vs #eta",
nint,
min,
max) );
210 h_dxyrmsh.push_back(
dbe_->
book1D(
"dxyres_vs_eta_Sigma",
"#sigma(#deltadxy) vs #eta",
nint,
min,
max) );
212 dxyres_vs_pt.push_back(
dbe_->
book2D(
"dxyres_vs_pt",
"dxyres_vs_pt",nintpT,minpT,maxpT,dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax));
213 h_dxymeanhPt.push_back(
dbe_->
book1D(
"dxyres_vs_pt_Mean",
"mean of dxyres vs pT",nintpT,minpT,maxpT) );
214 h_dxyrmshPt.push_back(
dbe_->
book1D(
"dxyres_vs_pt_Sigma",
"#sigmadxy vs pT",nintpT,minpT,maxpT) );
216 dzres_vs_eta.push_back(
dbe_->
book2D(
"dzres_vs_eta",
"dzres_vs_eta",
nint,
min,
max,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
218 h_dzrmsh.push_back(
dbe_->
book1D(
"dzres_vs_eta_Sigma",
"#sigma(#deltadz) vs #eta",
nint,
min,
max) );
220 dzres_vs_pt.push_back(
dbe_->
book2D(
"dzres_vs_pt",
"dzres_vs_pt",nintpT,minpT,maxpT,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
221 h_dzmeanhPt.push_back(
dbe_->
book1D(
"dzres_vs_pt_Mean",
"mean of dzres vs pT",nintpT,minpT,maxpT) );
222 h_dzrmshPt.push_back(
dbe_->
book1D(
"dzres_vs_pt_Sigma",
"#sigma(#deltadz vs pT",nintpT,minpT,maxpT) );
224 ptmean_vs_eta_phi.push_back(
dbe_->
bookProfile2D(
"ptmean_vs_eta_phi",
"mean p_{t} vs #eta and #phi",nintPhi,minPhi,maxPhi,
nint,
min,
max,1000,0,1000));
225 phimean_vs_eta_phi.push_back(
dbe_->
bookProfile2D(
"phimean_vs_eta_phi",
"mean #phi vs #eta and #phi",nintPhi,minPhi,maxPhi,
nint,
min,
max,nintPhi,minPhi,maxPhi));
228 dxypull_vs_eta.push_back(
dbe_->
book2D(
"dxypull_vs_eta",
"dxypull_vs_eta",
nint,
min,
max,100,-10,10));
231 phipull_vs_eta.push_back(
dbe_->
book2D(
"phipull_vs_eta",
"phipull_vs_eta",
nint,
min,
max,100,-10,10));
232 thetapull_vs_eta.push_back(
dbe_->
book2D(
"thetapull_vs_eta",
"thetapull_vs_eta",
nint,
min,
max,100,-10,10));
234 h_dxypulletamean.push_back(
dbe_->
book1D(
"h_dxypulleta_Mean",
"mean of dxy pull vs #eta",
nint,
min,
max) );
235 h_ptpulletamean.push_back(
dbe_->
book1D(
"h_ptpulleta_Mean",
"mean of p_{t} pull vs #eta",
nint,
min,
max) );
236 h_dzpulletamean.push_back(
dbe_->
book1D(
"h_dzpulleta_Mean",
"mean of dz pull vs #eta",
nint,
min,
max) );
237 h_phipulletamean.push_back(
dbe_->
book1D(
"h_phipulleta_Mean",
"mean of #phi pull vs #eta",
nint,
min,
max) );
238 h_thetapulletamean.push_back(
dbe_->
book1D(
"h_thetapulleta_Mean",
"mean of #theta pull vs #eta",
nint,
min,
max) );
241 h_dxypulleta.push_back(
dbe_->
book1D(
"h_dxypulleta_Sigma",
"#sigma of dxy pull vs #eta",
nint,
min,
max) );
242 h_ptpulleta.push_back(
dbe_->
book1D(
"h_ptpulleta_Sigma",
"#sigma of p_{t} pull vs #eta",
nint,
min,
max) );
243 h_dzpulleta.push_back(
dbe_->
book1D(
"h_dzpulleta_Sigma",
"#sigma of dz pull vs #eta",
nint,
min,
max) );
244 h_phipulleta.push_back(
dbe_->
book1D(
"h_phipulleta_Sigma",
"#sigma of #phi pull vs #eta",
nint,
min,
max) );
245 h_thetapulleta.push_back(
dbe_->
book1D(
"h_thetapulleta_Sigma",
"#sigma of #theta pull vs #eta",
nint,
min,
max) );
246 h_ptshifteta.push_back(
dbe_->
book1D(
"ptres_vs_eta_Mean",
"<#deltapT/pT>[%] vs #eta",
nint,
min,
max) );
249 ptpull_vs_phi.push_back(
dbe_->
book2D(
"ptpull_vs_phi",
"p_{t} pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
250 phipull_vs_phi.push_back(
dbe_->
book2D(
"phipull_vs_phi",
"#phi pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
251 thetapull_vs_phi.push_back(
dbe_->
book2D(
"thetapull_vs_phi",
"#theta pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
253 h_ptpullphimean.push_back(
dbe_->
book1D(
"h_ptpullphi_Mean",
"mean of p_{t} pull vs #phi",nintPhi,minPhi,maxPhi) );
254 h_phipullphimean.push_back(
dbe_->
book1D(
"h_phipullphi_Mean",
"mean of #phi pull vs #phi",nintPhi,minPhi,maxPhi) );
255 h_thetapullphimean.push_back(
dbe_->
book1D(
"h_thetapullphi_Mean",
"mean of #theta pull vs #phi",nintPhi,minPhi,maxPhi) );
257 h_ptpullphi.push_back(
dbe_->
book1D(
"h_ptpullphi_Sigma",
"#sigma of p_{t} pull vs #phi",nintPhi,minPhi,maxPhi) );
258 h_phipullphi.push_back(
dbe_->
book1D(
"h_phipullphi_Sigma",
"#sigma of #phi pull vs #phi",nintPhi,minPhi,maxPhi) );
259 h_thetapullphi.push_back(
dbe_->
book1D(
"h_thetapullphi_Sigma",
"#sigma of #theta pull vs #phi",nintPhi,minPhi,maxPhi) );
262 nrecHit_vs_nsimHit_sim2rec.push_back(
dbe_->
book2D(
"nrecHit_vs_nsimHit_sim2rec",
"nrecHit vs nsimHit (Sim2RecAssoc)",nintHit,minHit,maxHit, nintHit,minHit,maxHit ));
263 nrecHit_vs_nsimHit_rec2sim.push_back(
dbe_->
book2D(
"nrecHit_vs_nsimHit_rec2sim",
"nrecHit vs nsimHit (Rec2simAssoc)",nintHit,minHit,maxHit, nintHit,minHit,maxHit ));
266 h_PurityVsQuality.push_back(
dbe_->
book2D(
"PurityVsQuality",
"Purity vs Quality (MABH)",20,0.01,1.01,20,0.01,1.01) );
267 h_effic_Quality05.push_back(
dbe_->
book1D(
"effic_Q05",
"efficiency vs #eta (Quality>0.5)",
nint,
min,
max) );
268 h_effic_Quality075.push_back(
dbe_->
book1D(
"effic_Q075",
"efficiency vs #eta (Quality>0.75)",
nint,
min,
max) );
269 h_efficPt_Quality05.push_back(
dbe_->
book1D(
"efficPt_Q05",
"efficiency vs pT (Quality>0.5)",nintpT,minpT,maxpT) );
270 h_efficPt_Quality075.push_back(
dbe_->
book1D(
"efficPt_Q075",
"efficiency vs pT (Quality>0.75)",nintpT,minpT,maxpT) );
271 h_effic_vs_phi_Quality05.push_back(
dbe_->
book1D(
"effic_vs_phi_Q05",
"effic vs phi (Quality>0.5)",nintPhi,minPhi,maxPhi) );
272 h_effic_vs_phi_Quality075.push_back(
dbe_->
book1D(
"effic_vs_phi_Q075",
"effic vs phi (Quality>0.75)",nintPhi,minPhi,maxPhi) );
274 h_assoceta_Quality05.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_eta_Q05",
"N of associated tracks (simToReco) vs eta (Quality>0.5)",
nint,
min,
max) );
275 h_assoceta_Quality075.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_eta_Q075",
"N of associated tracks (simToReco) vs eta (Quality>0.75)",
nint,
min,
max) );
276 h_assocpT_Quality05.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_pT_Q05",
"N of associated tracks (simToReco) vs pT (Quality>0.5)",nintpT,minpT,maxpT) );
277 h_assocpT_Quality075.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_pT_Q075",
"N of associated tracks (simToReco) vs pT (Quality>0.75)",nintpT,minpT,maxpT) );
278 h_assocphi_Quality05.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_phi_Q05",
"N of associated tracks (simToReco) vs phi (Quality>0.5)",nintPhi,minPhi,maxPhi) );
279 h_assocphi_Quality075.push_back(
dbe_->
book1D(
"num_assoc(simToReco)_phi_Q075",
"N of associated tracks (simToReco) vs phi (Quality>0.75)",nintPhi,minPhi,maxPhi) );
283 BinLogX(dzres_vs_pt[j]->
getTH2F());
284 BinLogX(h_dzmeanhPt[j]->
getTH1F());
285 BinLogX(h_dzrmshPt[j]->
getTH1F());
287 BinLogX(dxyres_vs_pt[j]->
getTH2F());
288 BinLogX(h_dxymeanhPt[j]->
getTH1F());
289 BinLogX(h_dxyrmshPt[j]->
getTH1F());
291 BinLogX(phires_vs_pt[j]->
getTH2F());
292 BinLogX(h_phimeanhPt[j]->
getTH1F());
293 BinLogX(h_phirmshPt[j]->
getTH1F());
295 BinLogX(cotThetares_vs_pt[j]->
getTH2F());
296 BinLogX(h_cotThetameanhPt[j]->
getTH1F());
297 BinLogX(h_cotThetarmshPt[j]->
getTH1F());
299 BinLogX(ptres_vs_pt[j]->
getTH2F());
300 BinLogX(h_ptmeanhPt[j]->
getTH1F());
301 BinLogX(h_ptrmshPt[j]->
getTH1F());
303 BinLogX(h_efficPt[j]->
getTH1F());
304 BinLogX(h_fakeratePt[j]->
getTH1F());
305 BinLogX(h_recopT[j]->
getTH1F());
306 BinLogX(h_assocpT[j]->
getTH1F());
307 BinLogX(h_assoc2pT[j]->
getTH1F());
308 BinLogX(h_simulpT[j]->
getTH1F());
312 BinLogX(h_efficPt_Quality05[j]->
getTH1F());
313 BinLogX(h_efficPt_Quality075[j]->
getTH1F());
315 BinLogX(h_assocpT_Quality05[j]->
getTH1F());
316 BinLogX(h_assocpT_Quality075[j]->
getTH1F());
323 if (UseAssociators) {
325 for (
unsigned int w=0;w<associators.size();w++) {
327 associator.push_back( theAssociator.
product() );
333 using namespace reco;
335 edm::LogInfo(
"MuonTrackValidator") <<
"\n====================================================" <<
"\n"
336 <<
"Analyzing new event" <<
"\n"
337 <<
"====================================================\n" <<
"\n";
342 event.getByLabel(label_tp_effic,TPCollectionHeff);
346 event.getByLabel(label_tp_fake,TPCollectionHfake);
350 event.getByLabel(bsSrc,recoBeamSpotHandle);
354 for (
unsigned int ww=0;ww<associators.size();ww++){
355 for (
unsigned int www=0;www<
label.size();www++){
363 unsigned int trackCollectionSize = 0;
366 if(!event.
getByLabel(
label[www], trackCollection)&&ignoremissingtkcollection_) {
375 trackCollectionSize = trackCollection->size();
379 <<
label[www].process()<<
":"
380 <<
label[www].label()<<
":"
381 <<
label[www].instance()<<
" with "
382 << associators[ww].c_str() <<
"\n";
384 LogTrace(
"MuonTrackValidator") <<
"Calling associateRecoToSim method" <<
"\n";
385 recSimColl=associator[ww]->associateRecoToSim(trackCollection,
388 LogTrace(
"MuonTrackValidator") <<
"Calling associateSimToReco method" <<
"\n";
389 simRecColl=associator[ww]->associateSimToReco(trackCollection,
395 <<
label[www].process()<<
":"
396 <<
label[www].label()<<
":"
397 <<
label[www].instance()<<
" with "
398 << associatormap.process()<<
":"
399 << associatormap.label()<<
":"
400 << associatormap.instance()<<
"\n";
403 event.getByLabel(associatormap,simtorecoCollectionH);
404 simRecColl= *(simtorecoCollectionH.
product());
407 event.getByLabel(associatormap,recotosimCollectionH);
408 recSimColl= *(recotosimCollectionH.
product());
418 edm::LogVerbatim(
"MuonTrackValidator") <<
"\n# of TrackingParticles: " << tPCeff.size() <<
"\n";
422 bool TP_is_matched =
false;
424 bool Quality05 =
false;
425 bool Quality075 =
false;
435 if(parametersDefiner==
"LhcParametersDefinerForTP")
437 if(! tpSelector(*tp))
continue;
443 dxySim = (-vertex.x()*
sin(momentum.phi())+vertex.y()*
cos(momentum.phi()));
444 dzSim = vertex.z() - (vertex.x()*momentum.x()+vertex.y()*momentum.y())/
sqrt(momentum.perp2()) * momentum.z()/
sqrt(momentum.perp2());
447 if(parametersDefiner==
"CosmicParametersDefinerForTP")
449 if(! cosmictpSelector(*tp,&bs,event,setup))
continue;
450 momentumTP = parametersDefinerTP->momentum(event,setup,*tp);
451 vertexTP = parametersDefinerTP->vertex(event,setup,*tp);
452 dxySim = (-vertexTP.x()*
sin(momentumTP.phi())+vertexTP.y()*
cos(momentumTP.phi()));
453 dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/
sqrt(momentumTP.perp2()) * momentumTP.z()/
sqrt(momentumTP.perp2());
455 edm::LogVerbatim(
"MuonTrackValidator") <<
"--------------------Selected TrackingParticle #"<<tpr.
key();
458 h_ptSIM[w]->Fill(
sqrt(momentumTP.perp2()));
459 h_etaSIM[w]->Fill(momentumTP.eta());
460 h_vertposSIM[w]->Fill(
sqrt(vertexTP.perp2()));
462 std::vector<std::pair<RefToBase<Track>,
double> > rt;
463 if(simRecColl.
find(tpr) != simRecColl.
end()){
464 rt = (std::vector<std::pair<RefToBase<Track>,
double> >) simRecColl[tpr];
467 edm::LogVerbatim(
"MuonTrackValidator")<<
"-----------------------------associated Track #"<<assoc_recoTrack.
key();
468 TP_is_matched =
true;
470 quality = rt.begin()->second;
472 <<
" with pt=" <<
sqrt(momentumTP.perp2())
473 <<
" associated with quality:" << quality <<
"\n";
475 if (quality > 0.75) {
479 else if (quality > 0.5) {
486 <<
"TrackingParticle #" << tpr.
key()
487 <<
" with pt,eta,phi: "
488 <<
sqrt(momentumTP.perp2()) <<
" , "
489 << momentumTP.eta() <<
" , "
490 << momentumTP.phi() <<
" , "
491 <<
" NOT associated to any reco::Track" <<
"\n";
494 for (
unsigned int f=0;
f<etaintervals[w].size()-1;
f++){
495 if (getEta(momentumTP.eta())>etaintervals[w][
f]&&
496 getEta(momentumTP.eta())<etaintervals[w][
f+1]) {
503 totASSeta_Quality075[w][
f]++;
504 totASSeta_Quality05[w][
f]++;
506 else if (Quality05) {
507 totASSeta_Quality05[w][
f]++;
514 for (
unsigned int f=0;
f<phiintervals[w].size()-1;
f++){
515 if (momentumTP.phi() > phiintervals[w][
f]&&
516 momentumTP.phi() <phiintervals[w][
f+1]) {
523 totASS_phi_Quality075[w][
f]++;
524 totASS_phi_Quality05[w][
f]++;
526 else if (Quality05) {
527 totASS_phi_Quality05[w][
f]++;
535 for (
unsigned int f=0;
f<pTintervals[w].size()-1;
f++){
536 if (getPt(
sqrt(momentumTP.perp2()))>pTintervals[w][
f]&&
537 getPt(
sqrt(momentumTP.perp2()))<pTintervals[w][
f+1]) {
544 totASSpT_Quality075[w][
f]++;
545 totASSpT_Quality05[w][
f]++;
547 else if (Quality05) {
548 totASSpT_Quality05[w][
f]++;
555 for (
unsigned int f=0;
f<dxyintervals[w].size()-1;
f++){
556 if (dxySim>dxyintervals[w][
f]&&
557 dxySim<dxyintervals[w][
f+1]) {
565 for (
unsigned int f=0;
f<dzintervals[w].size()-1;
f++){
566 if (dzSim>dzintervals[w][
f]&&
567 dzSim<dzintervals[w][
f+1]) {
575 for (
unsigned int f=0;
f<vertposintervals[w].size()-1;
f++){
576 if (
sqrt(vertexTP.perp2())>vertposintervals[w][
f]&&
577 sqrt(vertexTP.perp2())<vertposintervals[w][
f+1]) {
578 totSIM_vertpos[w][
f]++;
580 totASS_vertpos[w][
f]++;
585 for (
unsigned int f=0;
f<zposintervals[w].size()-1;
f++){
586 if (vertexTP.z()>zposintervals[w][
f]&&
587 vertexTP.z()<zposintervals[w][
f+1]) {
595 std::vector<PSimHit> simhits;
597 if (usetracker && usemuon) {
600 else if (!usetracker && usemuon) {
603 else if (usetracker && !usemuon) {
607 int tmp =
std::min((
int)(simhits.end()-simhits.begin()),
int(maxHit-1));
608 edm::LogVerbatim(
"MuonTrackValidator") <<
"\t N simhits = "<< (int)(simhits.end()-simhits.begin())<<
"\n";
610 totSIM_hit[w][
tmp]++;
611 if (TP_is_matched) totASS_hit[w][
tmp]++;
616 nrecHit_vs_nsimHit_sim2rec[w]->Fill( assoctrack->
numberOfValidHits(),(int)(simhits.end()-simhits.begin() ));
619 if (st!=0) h_tracksSIM[w]->Fill(st);
626 <<
label[www].process()<<
":"
627 <<
label[www].label()<<
":"
628 <<
label[www].instance()
629 <<
": " << trackCollectionSize <<
"\n";
633 bool Track_is_matched =
false;
637 std::vector<std::pair<TrackingParticleRef, double> > tp;
641 if (BiDirectional_RecoToSim_association) {
642 edm::LogVerbatim(
"MuonTrackValidator")<<
"----------------------------------------Track #"<< track.
key();
644 if(recSimColl.
find(track) != recSimColl.
end()) {
645 tp = recSimColl[
track];
646 if (tp.size() != 0) {
647 tpr = tp.begin()->first;
649 if(simRecColl.
find(tpr) != simRecColl.
end()) {
650 std::vector<std::pair<RefToBase<Track>,
double> > track_checkback = simRecColl[tpr];
652 assoc_track_checkback = track_checkback.begin()->first;
654 if ( assoc_track_checkback.
key() == track.
key() ) {
655 edm::LogVerbatim(
"MuonTrackValidator")<<
"------------------associated TrackingParticle #"<<tpr.
key();
656 Track_is_matched =
true;
658 double Purity = tp.begin()->second;
659 double Quality = track_checkback.begin()->second;
660 edm::LogVerbatim(
"MuonTrackValidator") <<
"reco::Track #" << track.
key() <<
" with pt=" << track->
pt()
661 <<
" associated with quality:" << Purity <<
"\n";
662 if (MABH) h_PurityVsQuality[w]->Fill(Quality,Purity);
669 <<
"reco::Track #" << track.
key() <<
" with pt=" << track->
pt() <<
" NOT associated to any TrackingParticle" <<
"\n";
673 if(recSimColl.
find(track) != recSimColl.
end()){
674 tp = recSimColl[
track];
676 Track_is_matched =
true;
677 tpr = tp.begin()->first;
679 edm::LogVerbatim(
"MuonTrackValidator") <<
"reco::Track #" << track.
key() <<
" with pt=" << track->
pt()
680 <<
" associated with quality:" << tp.begin()->second <<
"\n";
683 edm::LogVerbatim(
"MuonTrackValidator") <<
"reco::Track #" << track.
key() <<
" with pt=" << track->
pt()
684 <<
" NOT associated to any TrackingParticle" <<
"\n";
689 for (
unsigned int f=0;
f<etaintervals[w].size()-1;
f++){
690 if (getEta(track->
momentum().eta())>etaintervals[w][
f]&&
691 getEta(track->
momentum().eta())<etaintervals[w][
f+1]) {
693 if (Track_is_matched) {
699 for (
unsigned int f=0;
f<phiintervals[w].size()-1;
f++){
700 if (track->
momentum().phi()>phiintervals[w][
f]&&
701 track->
momentum().phi()<phiintervals[w][
f+1]) {
703 if (Track_is_matched) {
710 for (
unsigned int f=0;
f<pTintervals[w].size()-1;
f++){
711 if (getPt(
sqrt(track->
momentum().perp2()))>pTintervals[w][
f]&&
712 getPt(
sqrt(track->
momentum().perp2()))<pTintervals[w][
f+1]) {
714 if (Track_is_matched) {
720 for (
unsigned int f=0;
f<dxyintervals[w].size()-1;
f++){
721 if (track->
dxy(bs.position())>dxyintervals[w][
f]&&
722 track->
dxy(bs.position())<dxyintervals[w][
f+1]) {
724 if (Track_is_matched) {
730 for (
unsigned int f=0;
f<dzintervals[w].size()-1;
f++){
731 if (track->
dz(bs.position())>dzintervals[w][
f]&&
732 track->
dz(bs.position())<dzintervals[w][
f+1]) {
734 if (Track_is_matched) {
741 totREC_hit[w][
tmp]++;
742 if (Track_is_matched) totASS2_hit[w][
tmp]++;
748 if (!Track_is_matched)
continue;
750 if (associators[ww]==
"TrackAssociatorByChi2"){
752 double assocChi2 = -tp.begin()->second;
753 h_assochi2[www]->Fill(assocChi2);
754 h_assochi2_prob[www]->Fill(TMath::Prob((assocChi2)*5,5));
756 else if (associators[ww]==
"TrackAssociatorByHits"){
757 double fraction = tp.begin()->second;
758 h_assocFraction[www]->Fill(fraction);
764 h_nchi2_prob[w]->Fill(TMath::Prob(track->
chi2(),(int)track->
ndof()));
768 h_charge[w]->Fill( track->
charge() );
773 double ptSim =
sqrt(momentumTP.perp2());
774 double qoverpSim = tpr->charge()/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
775 double thetaSim = momentumTP.theta();
776 double lambdaSim =
M_PI/2-momentumTP.theta();
777 double phiSim = momentumTP.phi();
778 double dxySim = (-vertexTP.x()*
sin(momentumTP.phi())+vertexTP.y()*
cos(momentumTP.phi()));
779 double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/
sqrt(momentumTP.perp2()) * momentumTP.z()/
sqrt(momentumTP.perp2());
784 double qoverpErrorRec(0);
786 double ptErrorRec(0);
788 double lambdaErrorRec(0);
790 double phiErrorRec(0);
796 gsfTrack =
dynamic_cast<const GsfTrack*
>(&(*track));
797 if (gsfTrack==0)
edm::LogInfo(
"MuonTrackValidator") <<
"Trying to access mode for a non-GsfTrack";
802 getRecoMomentum(*gsfTrack, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
803 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
808 getRecoMomentum(*track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
809 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
812 double thetaRec = track->
theta();
813 double ptError = ptErrorRec;
814 double ptres = ptRec - ptSim;
815 double etares = track->
eta()-momentumTP.Eta();
816 double dxyRec = track->
dxy(bs.position());
817 double dzRec = track->
dz(bs.position());
819 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
820 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
821 double phiDiff = phiRec - phiSim;
823 if (phiDiff >0.) phiDiff = phiDiff - 2.*
M_PI;
824 else phiDiff = phiDiff + 2.*
M_PI;
826 double phiPull=phiDiff/phiErrorRec;
827 double dxyPull=(dxyRec-dxySim)/track->
dxyError();
828 double dzPull=(dzRec-dzSim)/track->
dzError();
830 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
831 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
832 double contrib_dxy = ((dxyRec-dxySim)/track->
dxyError())*((dxyRec-dxySim)/track->
dxyError())/5;
833 double contrib_dz = ((dzRec-dzSim)/track->
dzError())*((dzRec-dzSim)/track->
dzError())/5;
834 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
835 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
836 double contrib_phi = (phiDiff/phiErrorRec)*(phiDiff/phiErrorRec)/5;
838 LogTrace(
"MuonTrackValidator") <<
"assocChi2=" << tp.begin()->second <<
"\n"
840 <<
"ptREC=" << ptRec <<
"\n"
841 <<
"etaREC=" << track->
eta() <<
"\n"
842 <<
"qoverpREC=" << qoverpRec <<
"\n"
843 <<
"dxyREC=" << dxyRec <<
"\n"
844 <<
"dzREC=" << dzRec <<
"\n"
845 <<
"thetaREC=" << track->
theta() <<
"\n"
846 <<
"phiREC=" << phiRec <<
"\n"
848 <<
"qoverpError()=" << qoverpErrorRec <<
"\n"
849 <<
"dxyError()=" << track->
dxyError() <<
"\n"
850 <<
"dzError()=" << track->
dzError() <<
"\n"
851 <<
"thetaError()=" << lambdaErrorRec <<
"\n"
852 <<
"phiError()=" << phiErrorRec <<
"\n"
854 <<
"ptSIM=" << ptSim <<
"\n"
855 <<
"etaSIM=" << momentumTP.Eta() <<
"\n"
856 <<
"qoverpSIM=" << qoverpSim <<
"\n"
857 <<
"dxySIM=" << dxySim <<
"\n"
858 <<
"dzSIM=" << dzSim <<
"\n"
859 <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n"
860 <<
"phiSIM=" << phiSim <<
"\n"
862 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"
863 <<
"contrib_dxy=" << contrib_dxy <<
"\n"
864 <<
"contrib_dz=" << contrib_dz <<
"\n"
865 <<
"contrib_theta=" << contrib_theta <<
"\n"
866 <<
"contrib_phi=" << contrib_phi <<
"\n"
868 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
870 h_pullQoverp[w]->Fill(qoverpPull);
871 h_pullTheta[w]->Fill(thetaPull);
872 h_pullPhi[w]->Fill(phiPull);
873 h_pullDxy[w]->Fill(dxyPull);
874 h_pullDz[w]->Fill(dzPull);
877 h_pt[w]->Fill(ptres/ptError);
878 h_eta[w]->Fill(etares);
879 etares_vs_eta[w]->Fill(getEta(track->
eta()),etares);
892 dxyres_vs_eta[w]->Fill(getEta(track->
eta()),dxyRec-dxySim);
893 ptres_vs_eta[w]->Fill(getEta(track->
eta()),(ptRec-ptSim)/ptRec);
894 dzres_vs_eta[w]->Fill(getEta(track->
eta()),dzRec-dzSim);
895 phires_vs_eta[w]->Fill(getEta(track->
eta()),phiDiff);
896 cotThetares_vs_eta[w]->Fill(getEta(track->
eta()),
cos(thetaRec)/
sin(thetaRec) -
cos(thetaSim)/
sin(thetaSim));
899 dxyres_vs_pt[w]->Fill(getPt(ptRec),dxyRec-dxySim);
900 ptres_vs_pt[w]->Fill(getPt(ptRec),(ptRec-ptSim)/ptRec);
901 dzres_vs_pt[w]->Fill(getPt(ptRec),dzRec-dzSim);
902 phires_vs_pt[w]->Fill(getPt(ptRec),phiDiff);
903 cotThetares_vs_pt[w]->Fill(getPt(ptRec),
cos(thetaRec)/
sin(thetaRec) -
cos(thetaSim)/
sin(thetaSim));
906 dxypull_vs_eta[w]->Fill(getEta(track->
eta()),dxyPull);
907 ptpull_vs_eta[w]->Fill(getEta(track->
eta()),ptres/ptError);
908 dzpull_vs_eta[w]->Fill(getEta(track->
eta()),dzPull);
909 phipull_vs_eta[w]->Fill(getEta(track->
eta()),phiPull);
910 thetapull_vs_eta[w]->Fill(getEta(track->
eta()),thetaPull);
915 ptmean_vs_eta_phi[w]->Fill(phiRec,getEta(track->
eta()),ptRec);
916 phimean_vs_eta_phi[w]->Fill(phiRec,getEta(track->
eta()),phiRec);
917 ptres_vs_phi[w]->Fill(phiRec,(ptRec-ptSim)/ptRec);
918 phires_vs_phi[w]->Fill(phiRec,phiDiff);
919 ptpull_vs_phi[w]->Fill(phiRec,ptres/ptError);
920 phipull_vs_phi[w]->Fill(phiRec,phiPull);
921 thetapull_vs_phi[w]->Fill(phiRec,thetaPull);
923 std::vector<PSimHit> simhits;
925 if (usetracker && usemuon) {
926 simhits=tpr.
get()->trackPSimHit();
928 else if (!usetracker && usemuon) {
931 else if (usetracker && !usemuon) {
935 nrecHit_vs_nsimHit_rec2sim[w]->Fill(track->
numberOfValidHits(), (int)(simhits.end()-simhits.begin() ));
939 LogTrace(
"MuonTrackValidator") <<
"exception found: " << e.
what() <<
"\n";
942 if (at!=0) h_tracks[w]->Fill(at);
943 h_fakes[w]->Fill(rT-at);
945 <<
"Total Associated (simToReco): " << ats <<
"\n"
946 <<
"Total Reconstructed: " << rT <<
"\n"
947 <<
"Total Associated (recoToSim): " << at <<
"\n"
948 <<
"Total Fakes: " << rT-at <<
"\n";
949 nrec_vs_nsim[w]->Fill(rT,st);
958 for (
unsigned int ww=0;ww<associators.size();ww++){
959 for (
unsigned int www=0;www<
label.size();www++){
1001 doProfileX(chi2_vs_eta[w],h_chi2meanh[w]);
1002 doProfileX(nhits_vs_eta[w],h_hits_eta[w]);
1003 doProfileX(nDThits_vs_eta[w],h_DThits_eta[w]);
1004 doProfileX(nCSChits_vs_eta[w],h_CSChits_eta[w]);
1005 doProfileX(nRPChits_vs_eta[w],h_RPChits_eta[w]);
1007 doProfileX(nlosthits_vs_eta[w],h_losthits_eta[w]);
1009 doProfileX(chi2_vs_nhits[w],h_chi2meanhitsh[w]);
1012 doProfileX(chi2_vs_phi[w],h_chi2mean_vs_phi[w]);
1013 doProfileX(nhits_vs_phi[w],h_hits_phi[w]);
1044 fillPlotFromVectors(h_effic[w],totASSeta[w],totSIMeta[w],
"effic");
1045 fillPlotFromVectors(h_fakerate[w],totASS2eta[w],totRECeta[w],
"fakerate");
1046 fillPlotFromVectors(h_efficPt[w],totASSpT[w],totSIMpT[w],
"effic");
1047 fillPlotFromVectors(h_fakeratePt[w],totASS2pT[w],totRECpT[w],
"fakerate");
1048 fillPlotFromVectors(h_effic_vs_hit[w],totASS_hit[w],totSIM_hit[w],
"effic");
1049 fillPlotFromVectors(h_fake_vs_hit[w],totASS2_hit[w],totREC_hit[w],
"fakerate");
1050 fillPlotFromVectors(h_effic_vs_phi[w],totASS_phi[w],totSIM_phi[w],
"effic");
1051 fillPlotFromVectors(h_fake_vs_phi[w],totASS2_phi[w],totREC_phi[w],
"fakerate");
1052 fillPlotFromVectors(h_effic_vs_dxy[w],totASS_dxy[w],totSIM_dxy[w],
"effic");
1053 fillPlotFromVectors(h_fake_vs_dxy[w],totASS2_dxy[w],totREC_dxy[w],
"fakerate");
1054 fillPlotFromVectors(h_effic_vs_dz[w],totASS_dz[w],totSIM_dz[w],
"effic");
1055 fillPlotFromVectors(h_fake_vs_dz[w],totASS2_dz[w],totREC_dz[w],
"fakerate");
1056 fillPlotFromVectors(h_effic_vs_vertpos[w],totASS_vertpos[w],totSIM_vertpos[w],
"effic");
1057 fillPlotFromVectors(h_effic_vs_zpos[w],totASS_zpos[w],totSIM_zpos[w],
"effic");
1061 fillPlotFromVectors(h_effic_Quality05[w] ,totASSeta_Quality05[w] ,totSIMeta[w],
"effic");
1062 fillPlotFromVectors(h_effic_Quality075[w],totASSeta_Quality075[w],totSIMeta[w],
"effic");
1063 fillPlotFromVectors(h_efficPt_Quality05[w] ,totASSpT_Quality05[w] ,totSIMpT[w],
"effic");
1064 fillPlotFromVectors(h_efficPt_Quality075[w],totASSpT_Quality075[w],totSIMpT[w],
"effic");
1065 fillPlotFromVectors(h_effic_vs_phi_Quality05[w] ,totASS_phi_Quality05[w],totSIM_phi[w],
"effic");
1066 fillPlotFromVectors(h_effic_vs_phi_Quality075[w],totASS_phi_Quality075[w],totSIM_phi[w],
"effic");
1070 fillPlotFromVector(h_recoeta[w],totRECeta[w]);
1071 fillPlotFromVector(h_simuleta[w],totSIMeta[w]);
1072 fillPlotFromVector(h_assoceta[w],totASSeta[w]);
1073 fillPlotFromVector(h_assoc2eta[w],totASS2eta[w]);
1075 fillPlotFromVector(h_recopT[w],totRECpT[w]);
1076 fillPlotFromVector(h_simulpT[w],totSIMpT[w]);
1077 fillPlotFromVector(h_assocpT[w],totASSpT[w]);
1078 fillPlotFromVector(h_assoc2pT[w],totASS2pT[w]);
1080 fillPlotFromVector(h_recohit[w],totREC_hit[w]);
1081 fillPlotFromVector(h_simulhit[w],totSIM_hit[w]);
1082 fillPlotFromVector(h_assochit[w],totASS_hit[w]);
1083 fillPlotFromVector(h_assoc2hit[w],totASS2_hit[w]);
1085 fillPlotFromVector(h_recophi[w],totREC_phi[w]);
1086 fillPlotFromVector(h_simulphi[w],totSIM_phi[w]);
1087 fillPlotFromVector(h_assocphi[w],totASS_phi[w]);
1088 fillPlotFromVector(h_assoc2phi[w],totASS2_phi[w]);
1090 fillPlotFromVector(h_recodxy[w],totREC_dxy[w]);
1091 fillPlotFromVector(h_simuldxy[w],totSIM_dxy[w]);
1092 fillPlotFromVector(h_assocdxy[w],totASS_dxy[w]);
1093 fillPlotFromVector(h_assoc2dxy[w],totASS2_dxy[w]);
1095 fillPlotFromVector(h_recodz[w],totREC_dz[w]);
1096 fillPlotFromVector(h_simuldz[w],totSIM_dz[w]);
1097 fillPlotFromVector(h_assocdz[w],totASS_dz[w]);
1098 fillPlotFromVector(h_assoc2dz[w],totASS2_dz[w]);
1100 fillPlotFromVector(h_simulvertpos[w],totSIM_vertpos[w]);
1101 fillPlotFromVector(h_assocvertpos[w],totASS_vertpos[w]);
1103 fillPlotFromVector(h_simulzpos[w],totSIM_zpos[w]);
1104 fillPlotFromVector(h_assoczpos[w],totASS_zpos[w]);
1107 fillPlotFromVector(h_assoceta_Quality05[w] ,totASSeta_Quality05[w]);
1108 fillPlotFromVector(h_assoceta_Quality075[w],totASSeta_Quality075[w]);
1109 fillPlotFromVector(h_assocpT_Quality05[w] ,totASSpT_Quality05[w]);
1110 fillPlotFromVector(h_assocpT_Quality075[w],totASSpT_Quality075[w]);
1111 fillPlotFromVector(h_assocphi_Quality05[w] ,totASS_phi_Quality05[w]);
1112 fillPlotFromVector(h_assocphi_Quality075[w],totASS_phi_Quality075[w]);
1125 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
double&
phi,
double& phiError )
const {
1139 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
double&
phi,
double& phiError )
const {
double qoverp() const
q/p
virtual char const * what() const
double phiModeError() const
error on phi from mode
const Vector & momentum() const
track momentum vector
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
double lambdaMode() const
Lambda angle from mode.
const_iterator end() const
last iterator over the map (read only)
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
const std::vector< PSimHit > & trackPSimHit() const
double theta() const
polar angle
double dxyError() const
error on dxy
void cd(void)
go to top directory (ie. root)
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Sin< T >::type sin(const T &t)
const_iterator find(const key_type &k) const
find element with specified reference key
double phi() const
azimuthal angle of momentum vector
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
math::XYZVectorD Vector
point in the space
math::Vector< dimension >::type ParameterVector
parameter vector
void getRecoMomentum(const reco::Track &track, double &pt, double &ptError, double &qoverp, double &qoverpError, double &lambda, double &lambdaError, double &phi, double &phiError) const
retrieval of reconstructed momentum components from reco::Track (== mean values for GSF) ...
double qoverpMode() const
q/p from mode
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
math::XYZPointD Point
point in the space
double eta() const
pseudorapidity of momentum vector
const T & max(const T &a, const T &b)
double chi2() const
chi-squared of the fit
ParameterVector parameters() const
Track parameters with one-to-one correspondence to the covariance matrix.
void post_insert()
post insert action
double ndof() const
number of degrees of freedom of the fit
double pt() const
track transverse momentum
Cos< T >::type cos(const T &t)
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
double phiError() const
error on phi
double lambda() const
Lambda angle.
int numberOfValidMuonRPCHits() const
TH1F * getTH1F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
void analyze(const edm::Event &, const edm::EventSetup &)
Method called once per event.
unsigned short numberOfValidHits() const
number of valid hits found
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
int nint(float a)
Return the nearest integer - analogous to the FORTRAN intrinsic NINT.
double qoverpError() const
error on signed transverse curvature
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
double dzError() const
error on dz
int numberOfValidMuonDTHits() const
double qoverpModeError() const
error on signed transverse curvature from mode
key_type key() const
Accessor for product key.
T const * product() const
void beginRun(edm::Run const &, edm::EventSetup const &)
Method called before the event loop.
Vector momentum() const
spatial momentum vector
T const * product() const
std::vector< std::vector< double > > tmp
double lambdaError() const
error on lambda
unsigned short found() const
Number of valid hits on track.
int numberOfValidMuonCSCHits() const
TH2F * getTH2F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
void goUp(void)
equivalent to "cd .."
double phiMode() const
azimuthal angle of momentum vector from mode
int charge() const
track electric charge
std::vector< TrackingParticle > TrackingParticleCollection
double lambdaModeError() const
error on lambda from mode
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
T const * get() const
Returns C++ pointer to the item.
const Point & vertex() const
vertex position
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
double ptMode() const
track transverse momentum from mode
void setCurrentFolder(const std::string &fullpath)
void endRun(edm::Run const &, edm::EventSetup const &)
Method called at the end of the event loop.
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")