185 std::set<Belle2::VxdID>::iterator itSvdLayers = svdLayers.begin();
191 itSvdLayers = svdLayers.begin();
193 B2INFO(
"No specific SVD layer (3,4,5,6) selected (m_specificLayer = " <<
m_specificLayer <<
194 "). Producing plots for all SVD layers.");
197 while (itSvdLayers != svdLayers.end()) {
199 std::set<Belle2::VxdID> svdLadders =
m_geoCache.getLadders(*itSvdLayers);
200 std::set<Belle2::VxdID>::iterator itSvdLadders = svdLadders.begin();
202 while (itSvdLadders != svdLadders.end()) {
204 std::set<Belle2::VxdID> svdSensors =
m_geoCache.getSensors(*itSvdLadders);
205 std::set<Belle2::VxdID>::iterator itSvdSensors = svdSensors.begin();
207 while (itSvdSensors != svdSensors.end()) {
213 const int nPixelsU = wSensorInfo.
getUCells();
214 const int nPixelsV = wSensorInfo.
getVCells();
215 std::string sensorid = std::to_string(itSvdSensors->getLayerNumber()) +
"_" + std::to_string(
216 itSvdSensors->getLadderNumber()) +
"_" +
217 std::to_string(itSvdSensors->getSensorNumber());
223 name =
"hNROIs_" + sensorid;
224 title =
"number of ROIs for sensor " + sensorid;
227 new TH1F(name.c_str(), title.c_str(), 25, 0, 25),
228 [](
const ROIid*,
double & val) {val++;},
229 [](TH1 * hPtr,
double & val) { hPtr->Fill(val); },
241 name =
"hCoorU_" + sensorid;
242 title =
"U coordinate of the extrapolation in U for sensor " + sensorid;
247 new TH1F(name.c_str(), title.c_str(), 100, -5, 5),
248 [](TH1 * hPtr,
const SVDIntercept * inter) { hPtr->Fill(inter->getCoorU()); }
253 name =
"hCoorV_" + sensorid;
254 title =
"V coordinate of the extrapolation in V for sensor " + sensorid;
259 new TH1F(name.c_str(), title.c_str(), 100, -5, 5),
260 [](TH1 * hPtr,
const SVDIntercept * inter) { hPtr->Fill(inter->getCoorV()); }
266 name =
"hCoorU_vs_CoorV_" + sensorid;
267 title =
"U vs V intercept (cm) " + sensorid;
268 tmp2D =
new TH2F(name.c_str(), title.c_str(), 100, -5, 5, 100, -5, 5);
269 tmp2D->GetXaxis()->SetTitle(
"intercept U coor (cm)");
270 tmp2D->GetYaxis()->SetTitle(
"intercept V coor (cm)");
283 name =
"hStatErrU_" + sensorid;
284 title =
"stat error of the extrapolation in U for sensor " + sensorid;
289 new TH1F(name.c_str(), title.c_str(), 100, 0, 0.35),
290 [](TH1 * hPtr,
const SVDIntercept * inter) { hPtr->Fill(inter->getSigmaU()); }
294 name =
"hStatErrV_" + sensorid;
295 title =
"stat error of the extrapolation in V for sensor " + sensorid;
300 new TH1F(name.c_str(), title.c_str(), 100, 0, 0.35),
301 [](TH1 * hPtr,
const SVDIntercept * inter) { hPtr->Fill(inter->getSigmaV()); }
307 name =
"hResidU_" + sensorid;
308 title =
"U residuals = intercept - digit, for sensor " + sensorid;
309 tmp1D =
new TH1F(name.c_str(), title.c_str(), 1000, -5, 5);
318 if ((
int)it.getSensorID() == (
int)inter->
getSensorID()) {
329 name =
"hResidV_" + sensorid;
330 title =
"V residuals = intercept - digit, for sensor " + sensorid;
331 tmp1D =
new TH1F(name.c_str(), title.c_str(), 1000, -5, 5);
340 if ((
int)it.getSensorID() == (
int)inter->
getSensorID()) {
341 if (!it.isUStrip()) {
353 name =
"hResidU_vs_CoorU_" + sensorid;
354 title =
"U residual (cm) vs coor U (cm) " + sensorid;
355 tmp2D =
new TH2F(name.c_str(), title.c_str(), 1000, -5, 5, 1000, -5, 5);
356 tmp2D->GetYaxis()->SetTitle(
"U resid (cm)");
357 tmp2D->GetXaxis()->SetTitle(
"U coor (cm)");
366 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && it.isUStrip()) {
369 hPtr->Fill(inter->
getCoorU(), resid);
376 name =
"hResidV_vs_CoorV_" + sensorid;
377 title =
"V residual (cm) vs coor V (cm) " + sensorid;
378 tmp2D =
new TH2F(name.c_str(), title.c_str(), 1000, -5, 5, 1000, -5, 5);
379 tmp2D->GetYaxis()->SetTitle(
"V resid (cm)");
380 tmp2D->GetXaxis()->SetTitle(
"V coor (cm)");
389 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (!it.isUStrip())) {
392 hPtr->Fill(inter->
getCoorV(), resid);
403 name =
"hResidU_vs_charge_" + sensorid;
404 title =
"U residual (cm) vs charge " + sensorid;
405 tmp2D =
new TH2F(name.c_str(), title.c_str(), 250, 0, 250, 100, -5, 5);
406 tmp2D->GetYaxis()->SetTitle(
"U resid (cm)");
407 tmp2D->GetXaxis()->SetTitle(
"charge");
416 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (it.isUStrip())) {
419 hPtr->Fill(it.getCharge(), resid);
426 name =
"hResidV_vs_charge_" + sensorid;
427 title =
"V residual (cm) vs charge " + sensorid;
428 tmp2D =
new TH2F(name.c_str(), title.c_str(), 250, 0, 250, 100, -5, 5);
429 tmp2D->GetYaxis()->SetTitle(
"V resid (cm)");
430 tmp2D->GetXaxis()->SetTitle(
"charge");
439 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (!it.isUStrip())) {
442 hPtr->Fill(it.getCharge(), resid);
451 name =
"hClusterResidU_" + sensorid;
452 title =
"Cluster U residuals = intercept - cluster, for sensor " + sensorid;
453 tmp1D =
new TH1F(name.c_str(), title.c_str(), 1000, -5, 5);
462 if ((
int)it.getSensorID() == (
int)inter->
getSensorID()) {
463 if (it.isUCluster()) {
472 name =
"hClusterResidV_" + sensorid;
473 title =
"Cluster V residuals = intercept - cluster, for sensor " + sensorid;
474 tmp1D =
new TH1F(name.c_str(), title.c_str(), 1000, -5, 5);
483 if ((
int)it.getSensorID() == (
int)inter->
getSensorID()) {
484 if (!it.isUCluster()) {
485 hPtr->Fill(inter->
getCoorV() - it.getPosition());
494 name =
"hClusterResidU_vs_CoorU_" + sensorid;
495 title =
"Cluster U residual (cm) vs coor U (cm) " + sensorid;
496 tmp2D =
new TH2F(name.c_str(), title.c_str(), 1000, -5, 5, 1000, -5, 5);
497 tmp2D->GetYaxis()->SetTitle(
"Cluster U resid (cm)");
498 tmp2D->GetXaxis()->SetTitle(
"U coor (cm)");
507 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && it.isUCluster()) {
509 hPtr->Fill(inter->
getCoorU(), resid);
516 name =
"hClusterResidV_vs_CoorV_" + sensorid;
517 title =
"Cluster V residual (cm) vs coor V (cm) " + sensorid;
518 tmp2D =
new TH2F(name.c_str(), title.c_str(), 1000, -5, 5, 1000, -5, 5);
519 tmp2D->GetYaxis()->SetTitle(
"Cluster V resid (cm)");
520 tmp2D->GetXaxis()->SetTitle(
"V coor (cm)");
529 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (!it.isUCluster())) {
530 double resid = inter->
getCoorV() - it.getPosition();
531 hPtr->Fill(inter->
getCoorV(), resid);
540 name =
"hClusterResidU_vs_charge_" + sensorid;
541 title =
"Cluster U residual (cm) vs charge " + sensorid;
542 tmp2D =
new TH2F(name.c_str(), title.c_str(), 250, 0, 250, 100, -5, 5);
543 tmp2D->GetYaxis()->SetTitle(
"U resid (cm)");
544 tmp2D->GetXaxis()->SetTitle(
"charge (ke-)");
553 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (it.isUCluster())) {
555 hPtr->Fill(it.getCharge() / 1000., resid);
562 name =
"hClusterResidV_vs_charge_" + sensorid;
563 title =
"Cluster V residual (cm) vs charge " + sensorid;
564 tmp2D =
new TH2F(name.c_str(), title.c_str(), 250, 0, 250, 100, -5, 5);
565 tmp2D->GetYaxis()->SetTitle(
"Cluster V resid (cm)");
566 tmp2D->GetXaxis()->SetTitle(
"charge (ke-)");
575 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (!it.isUCluster())) {
576 double resid = inter->
getCoorV() - it.getPosition();
577 hPtr->Fill(it.getCharge() / 1000., resid);
585 name =
"hClusterResidU_vs_time_" + sensorid;
586 title =
"Cluster U residual (cm) vs time " + sensorid;
587 tmp2D =
new TH2F(name.c_str(), title.c_str(), 400, -200, 200, 100, -5, 5);
588 tmp2D->GetYaxis()->SetTitle(
"U resid (cm)");
589 tmp2D->GetXaxis()->SetTitle(
"time (ns)");
598 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (it.isUCluster())) {
600 hPtr->Fill(it.getClsTime(), resid);
607 name =
"hClusterResidV_vs_time_" + sensorid;
608 title =
"Cluster V residual (cm) vs time " + sensorid;
609 tmp2D =
new TH2F(name.c_str(), title.c_str(), 400, -200, 200, 100, -5, 5);
610 tmp2D->GetYaxis()->SetTitle(
"Cluster V resid (cm)");
611 tmp2D->GetXaxis()->SetTitle(
"time (ns)");
620 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (!it.isUCluster())) {
621 double resid = inter->
getCoorV() - it.getPosition();
622 hPtr->Fill(it.getClsTime(), resid);
630 name =
"hCoorU_vs_UDigit_" + sensorid;
631 title =
"U intercept (cm) vs U Digit (ID) " + sensorid;
632 tmp2D =
new TH2F(name.c_str(), title.c_str(), 1000, -5, 5, 1000, -5, 5);
633 tmp2D->GetXaxis()->SetTitle(
"intercept U coor (cm)");
634 tmp2D->GetYaxis()->SetTitle(
"digit U coor (cm)");
643 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (it.isUStrip())) {
653 name =
"hCoorV_vs_VDigit_" + sensorid;
654 title =
"V intercept (cm) vs V Digit (ID) " + sensorid;
655 tmp2D =
new TH2F(name.c_str(), title.c_str(), 1000, -5, 5, 1000, -5, 5);
656 tmp2D->GetXaxis()->SetTitle(
"intercept V coor (cm)");
657 tmp2D->GetYaxis()->SetTitle(
"digi V coor (cm)");
666 if (((
int)it.getSensorID() == (
int)inter->
getSensorID()) && (!it.isUStrip())) {
686 name =
"hminU_" + sensorid;
687 title =
"ROI min in U for sensor " + sensorid;
692 new TH1F(name.c_str(), title.c_str(), nPixelsU, 0, nPixelsU),
693 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill(roi->getMinUid()); }
697 name =
"hminV_" + sensorid;
698 title =
"ROI min in V for sensor " + sensorid;
703 new TH1F(name.c_str(), title.c_str(), nPixelsV, 0, nPixelsV),
704 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill(roi->getMinVid()); }
710 name =
"hmaxU_" + sensorid;
711 title =
"ROI max in U for sensor " + sensorid;
716 new TH1F(name.c_str(), title.c_str(), nPixelsU, 0, nPixelsU),
717 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill(roi->getMaxUid()); }
721 name =
"hmaxV_" + sensorid;
722 title =
"ROI max in V for sensor " + sensorid;
727 new TH1F(name.c_str(), title.c_str(), nPixelsV, 0, nPixelsV),
728 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill(roi->getMaxVid()); }
735 name =
"hwidthU_" + sensorid;
736 title =
"ROI width in U for sensor " + sensorid;
741 new TH1F(name.c_str(), title.c_str(), nPixelsU, 0, nPixelsU),
742 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill(roi->getMaxUid() - roi->getMinUid()); }
746 name =
"hwidthV_" + sensorid;
747 title =
"ROI width in V for sensor " + sensorid;
752 new TH1F(name.c_str(), title.c_str(), nPixelsV, 0, nPixelsV),
753 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill(roi->getMaxVid() - roi->getMinVid()); }
759 name =
"hROIcenter_" + sensorid;
760 title =
"ROI center " + sensorid;
761 tmp2D =
new TH2F(name.c_str(), title.c_str(), nPixelsU, 0, nPixelsU, nPixelsV, 0, nPixelsV);
762 tmp2D->GetXaxis()->SetTitle(
" U (ID)");
763 tmp2D->GetYaxis()->SetTitle(
" V (ID)");
769 [](TH1 * hPtr,
const ROIid * roi) { hPtr->Fill((roi->getMaxUid() + roi->getMinUid()) / 2, (roi->getMaxVid() + roi->getMinVid()) / 2); }