From 45d54f92853985bfb99965d5c530b10013db8d4f Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Tue, 1 Jun 2021 13:49:14 +0200 Subject: [PATCH 1/8] First commit for TkDQM barycenter plots --- .../SiPixelPhase1OfflineDQM_harvesting_cff.py | 1 + .../SiPixelPhase1OfflineDQM_source_cff.py | 2 + DQM/SiPixelPhase1Summary/BuildFile.xml | 1 + .../interface/SiPixelPhase1Barycenter.h | 59 ++++++++ .../interface/SiPixelPhase1BarycenterHelper.h | 141 ++++++++++++++++++ .../python/SiPixelPhase1Barycenter_cfi.py | 8 + .../src/SiPixelPhase1Barycenter.cc | 112 ++++++++++++++ 7 files changed, 324 insertions(+) create mode 100644 DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h create mode 100644 DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h create mode 100644 DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py create mode 100644 DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc diff --git a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py index 44f47410a1c36..93bc48616f3ff 100644 --- a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py +++ b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py @@ -14,6 +14,7 @@ + SiPixelPhase1RawDataHarvester + RunQTests_offline + SiPixelPhase1SummaryOffline + + SiPixelPhase1BarycenterOffline ) siPixelPhase1OfflineDQM_harvesting_cosmics = siPixelPhase1OfflineDQM_harvesting.copyAndExclude([ diff --git a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py index 51c813d1ff96b..25905eb5d909a 100644 --- a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py +++ b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py @@ -19,6 +19,8 @@ from DQM.SiPixelPhase1Common.SiPixelPhase1RawData_cfi import * #Summary maps from DQM.SiPixelPhase1Summary.SiPixelPhase1Summary_cfi import * +#Barycenter plots +from DQM.SiPixelPhase1Summary.SiPixelPhase1Barycenter_cfi import * from RecoPixelVertexing.PixelLowPtUtilities.ClusterShapeHitFilterESProducer_cfi import * from RecoLocalTracker.SiStripClusterizer.SiStripClusterChargeCut_cfi import * diff --git a/DQM/SiPixelPhase1Summary/BuildFile.xml b/DQM/SiPixelPhase1Summary/BuildFile.xml index f317bf3773a72..2786d364d0326 100644 --- a/DQM/SiPixelPhase1Summary/BuildFile.xml +++ b/DQM/SiPixelPhase1Summary/BuildFile.xml @@ -5,5 +5,6 @@ + diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h b/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h new file mode 100644 index 0000000000000..b4959d83b3561 --- /dev/null +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h @@ -0,0 +1,59 @@ +#ifndef SiPixelPhase1Barycenter_SiPixelPhase1Barycenter_h +#define SiPixelPhase1Barycenter_SiPixelPhase1Barycenter_h +// -*- C++ -*- +// +// Package: SiPixelPhase1Barycenter +// Class : SiPixelPhase1Barycenter +// +/** + + Description: Barycenter plot generation for the Phase 1 pixel + + Usage: + + +*/ +// +// Original Author: Danilo Meuser +// Created: 26th May 2021 +// + +// user include files +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "DQMServices/Core/interface/DQMStore.h" +#include "DQMServices/Core/interface/DQMEDHarvester.h" + +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/LuminosityBlock.h" + +#include "CondFormats/AlignmentRecord/interface/TrackerAlignmentRcd.h" +#include "CondFormats/AlignmentRecord/interface/GlobalPositionRcd.h" +#include "CondFormats/Alignment/interface/Alignments.h" + +class SiPixelPhase1Barycenter : public DQMEDHarvester { +public: + explicit SiPixelPhase1Barycenter(const edm::ParameterSet& conf); + ~SiPixelPhase1Barycenter() override; + +protected: + void beginRun(edm::Run const& run, edm::EventSetup const& eSetup) override; + + void dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, + DQMStore::IGetter& iGetter, + edm::LuminosityBlock const& lumiSeg, + edm::EventSetup const& c) override; + void dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) override; + +private: + std::map barycenters_; + + //book the barycenter histograms + void bookBarycenterHistograms(DQMStore::IBooker& iBooker); + + //fill the barycenter histograms + void fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, const std::vector& GPR); + +}; + +#endif diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h b/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h new file mode 100644 index 0000000000000..608ba38a92eba --- /dev/null +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h @@ -0,0 +1,141 @@ +#ifndef SiPixelPhase1Barycenter_SiPixelPhase1BarycenterHelper_h +#define SiPixelPhase1Barycenter_SiPixelPhase1BarycenterHelper_h + +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "CondFormats/Alignment/interface/Alignments.h" + +// Helper mainly based on https://github.com/cms-sw/cmssw/blob/master/CondCore/AlignmentPlugins/interface/AlignmentPayloadInspectorHelper.h + +namespace DQMBarycenter { + + enum coordinate { + t_x = 1, + t_y = 2, + t_z = 3, + rot_alpha = 4, + rot_beta = 5, + rot_gamma = 6, + }; + + enum partitions { BPix = 1, FPix_p = 2, FPix_m = 3, }; + + enum class PARTITION { + BPIX, // 0 Barrel Pixel + FPIXp, // 1 Forward Pixel Plus + FPIXm, // 2 Forward Pixel Minus + LAST = FPIXm + }; + + extern const PARTITION PARTITIONS[(int)PARTITION::LAST + 1]; + const PARTITION PARTITIONS[] = {PARTITION::BPIX, + PARTITION::FPIXp, + PARTITION::FPIXm, + }; + + + struct TkAlBarycenters { + std::map Xbarycenters; + std::map Ybarycenters; + std::map Zbarycenters; + std::map nmodules; + + public: + void init(); + void computeBarycenters(const std::vector& input, + const TrackerTopology& tTopo, + const std::map& GPR); + + + /*--------------------------------------------------------------------*/ + const std::array getX() + /*--------------------------------------------------------------------*/ + { + return {{Xbarycenters[PARTITION::BPIX], + Xbarycenters[PARTITION::FPIXm], + Xbarycenters[PARTITION::FPIXp] + }}; + }; + + /*--------------------------------------------------------------------*/ + const std::array getY() + /*--------------------------------------------------------------------*/ + { + return {{Ybarycenters[PARTITION::BPIX], + Ybarycenters[PARTITION::FPIXm], + Ybarycenters[PARTITION::FPIXp] + }}; + }; + + /*--------------------------------------------------------------------*/ + const std::array getZ() + /*--------------------------------------------------------------------*/ + { + return {{Zbarycenters[PARTITION::BPIX], + Zbarycenters[PARTITION::FPIXm], + Zbarycenters[PARTITION::FPIXp] + }}; + }; + virtual ~TkAlBarycenters() {} + }; + + /*--------------------------------------------------------------------*/ + void TkAlBarycenters::computeBarycenters(const std::vector& input, + const TrackerTopology& tTopo, + const std::map& GPR) + /*--------------------------------------------------------------------*/ + { + for (const auto& ali : input) { + if (DetId(ali.rawId()).det() != DetId::Tracker) { + edm::LogWarning("SiPixelPhase1Barycenters::computeBarycenters") + << "Encountered invalid Tracker DetId:" << ali.rawId() << " " << DetId(ali.rawId()).det() + << " is different from " << DetId::Tracker << " - terminating "; + assert(DetId(ali.rawId()).det() != DetId::Tracker); + } + + int subid = DetId(ali.rawId()).subdetId(); + if (subid==PixelSubdetector::PixelBarrel || subid==PixelSubdetector::PixelEndcap) { // use only pixel + switch (subid) { + case PixelSubdetector::PixelBarrel: + Xbarycenters[PARTITION::BPIX] += (ali.translation().x()); + Ybarycenters[PARTITION::BPIX] += (ali.translation().y()); + Zbarycenters[PARTITION::BPIX] += (ali.translation().z()); + nmodules[PARTITION::BPIX]++; + break; + case PixelSubdetector::PixelEndcap: + + // minus side + if (tTopo.pxfSide(DetId(ali.rawId())) == 1) { + Xbarycenters[PARTITION::FPIXm] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIXm] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIXm] += (ali.translation().z()); + nmodules[PARTITION::FPIXm]++; + } // plus side + else { + Xbarycenters[PARTITION::FPIXp] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIXp] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIXp] += (ali.translation().z()); + nmodules[PARTITION::FPIXp]++; + } + break; + default: + edm::LogError("PixelDQM") << "Unrecognized partition for barycenter computation " << subid << std::endl; + break; + } + } + } + + for (const auto& p : PARTITIONS) { + Xbarycenters[p] /= nmodules[p]; + Ybarycenters[p] /= nmodules[p]; + Zbarycenters[p] /= nmodules[p]; + + Xbarycenters[p] += GPR.at(DQMBarycenter::t_x); + Ybarycenters[p] += GPR.at(DQMBarycenter::t_y); + Zbarycenters[p] += GPR.at(DQMBarycenter::t_z); + + } + } +} // namespace DQMBarycenter + +#endif diff --git a/DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py b/DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py new file mode 100644 index 0000000000000..9052b2142961c --- /dev/null +++ b/DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py @@ -0,0 +1,8 @@ +import FWCore.ParameterSet.Config as cms +from DQMServices.Core.DQMEDHarvester import DQMEDHarvester + +# +# This object is used to make changes for different running scenarios +# + +SiPixelPhase1BarycenterOffline = DQMEDHarvester("SiPixelPhase1Barycenter") diff --git a/DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc b/DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc new file mode 100644 index 0000000000000..9c3ae961cf3cb --- /dev/null +++ b/DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc @@ -0,0 +1,112 @@ +// -*- C++ -*- +// +// Package: SiPixelPhase1Barycenter +// Class: SiPixelPhase1Barycenter +// +/**\class + + Description: Create the Phase 1 pixel barycenter plots + + Implementation: + +*/ +// +// Original Author: Danilo Meuser +// Created: 26th May 2021 +// +// +#include "DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h" +#include "CalibTracker/StandaloneTrackerTopology/interface/StandaloneTrackerTopology.h" + +#include +#include + +using namespace std; +using namespace edm; + +SiPixelPhase1Barycenter::SiPixelPhase1Barycenter(const edm::ParameterSet& iConfig) + : DQMEDHarvester(iConfig) { + LogInfo("PixelDQM") << "SiPixelPhase1Barycenter::SiPixelPhase1Barycenter: Got DQM BackEnd interface" << endl; + +} + +SiPixelPhase1Barycenter::~SiPixelPhase1Barycenter() { + // do anything here that needs to be done at desctruction time + // (e.g. close files, deallocate resources etc.) + LogInfo("PixelDQM") << "SiPixelPhase1Barycenter::~SiPixelPhase1Barycenter: Destructor" << endl; +} + +void SiPixelPhase1Barycenter::beginRun(edm::Run const& run, edm::EventSetup const& eSetup) {} + +void SiPixelPhase1Barycenter::dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) {} + +void SiPixelPhase1Barycenter::dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, + DQMStore::IGetter& iGetter, + const edm::LuminosityBlock& lumiSeg, + edm::EventSetup const& c) { + + + bookBarycenterHistograms(iBooker); + + edm::ESHandle alignment_Handle; + c.get().get(alignment_Handle); + + edm::ESHandle gpr_Handle; + c.get().get(gpr_Handle); + + fillBarycenterHistograms(iBooker, iGetter,alignment_Handle->m_align,gpr_Handle->m_align); + +} +//------------------------------------------------------------------ +// Used to book the barycenter histograms +//------------------------------------------------------------------ +void SiPixelPhase1Barycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { + iBooker.cd(); + + iBooker.setCurrentFolder("PixelPhase1/Barycenter"); + //Book one histogram for each subdetector + for (std::string subdetector : {"BPIX", "FPIXm", "FPIXp"}) { + barycenters_[subdetector] = + iBooker.book1D("barycenters_" + subdetector, + "Position of the barycenter for " + subdetector + ";Coordinate;Position [mm]", + 3, + 0.5, + 3.5); + barycenters_[subdetector]->setBinLabel(1, "x"); + barycenters_[subdetector]->setBinLabel(2, "y"); + barycenters_[subdetector]->setBinLabel(3, "z"); + } + + //Reset the iBooker + iBooker.setCurrentFolder("PixelPhase1/"); +} + +//------------------------------------------------------------------ +// Fill the Barycenter histograms +//------------------------------------------------------------------ +void SiPixelPhase1Barycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, const std::vector& GPR) { + + const auto GPR_translation_pixel = GPR[0].translation(); + const std::map GPR_pixel = {{DQMBarycenter::t_x, GPR_translation_pixel.x()}, {DQMBarycenter::t_y, GPR_translation_pixel.y()}, {DQMBarycenter::t_z, GPR_translation_pixel.z()}}; + + DQMBarycenter::TkAlBarycenters barycenters; + TrackerTopology tTopo = StandaloneTrackerTopology::fromTrackerParametersXMLFile(edm::FileInPath("Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml").fullPath()); + barycenters.computeBarycenters(input, tTopo, GPR_pixel); + + auto Xbarycenters = barycenters.getX(); + auto Ybarycenters = barycenters.getY(); + auto Zbarycenters = barycenters.getZ(); + + //Fill histogram for each subdetector + std::vector subdetectors = {"BPIX", "FPIXm", "FPIXp"}; + for(std::size_t i = 0; i < subdetectors.size(); ++i) { + barycenters_[subdetectors[i]]->setBinContent(1,Xbarycenters[i]); + barycenters_[subdetectors[i]]->setBinContent(2,Ybarycenters[i]); + barycenters_[subdetectors[i]]->setBinContent(3,Zbarycenters[i]); + } +} + +//define this as a plug-in +DEFINE_FWK_MODULE(SiPixelPhase1Barycenter); From 208fc22d024d6e48c42de1d1448b37430ea8c082 Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Wed, 2 Jun 2021 09:40:29 +0200 Subject: [PATCH 2/8] Fixed namin of inclusion guards an removed Phase1 from names --- .../SiPixelPhase1OfflineDQM_harvesting_cff.py | 2 +- .../SiPixelPhase1OfflineDQM_source_cff.py | 2 +- ...Phase1Barycenter.h => SiPixelBarycenter.h} | 14 ++++----- ...nterHelper.h => SiPixelBarycenterHelper.h} | 6 ++-- ...center_cfi.py => SiPixelBarycenter_cfi.py} | 2 +- ...ase1Barycenter.cc => SiPixelBarycenter.cc} | 30 +++++++++---------- 6 files changed, 28 insertions(+), 28 deletions(-) rename DQM/SiPixelPhase1Summary/interface/{SiPixelPhase1Barycenter.h => SiPixelBarycenter.h} (80%) rename DQM/SiPixelPhase1Summary/interface/{SiPixelPhase1BarycenterHelper.h => SiPixelBarycenterHelper.h} (96%) rename DQM/SiPixelPhase1Summary/python/{SiPixelPhase1Barycenter_cfi.py => SiPixelBarycenter_cfi.py} (70%) rename DQM/SiPixelPhase1Summary/src/{SiPixelPhase1Barycenter.cc => SiPixelBarycenter.cc} (72%) diff --git a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py index 93bc48616f3ff..429fcd6d81877 100644 --- a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py +++ b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_harvesting_cff.py @@ -14,7 +14,7 @@ + SiPixelPhase1RawDataHarvester + RunQTests_offline + SiPixelPhase1SummaryOffline - + SiPixelPhase1BarycenterOffline + + SiPixelBarycenterOffline ) siPixelPhase1OfflineDQM_harvesting_cosmics = siPixelPhase1OfflineDQM_harvesting.copyAndExclude([ diff --git a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py index 25905eb5d909a..797e3e3226359 100644 --- a/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py +++ b/DQM/SiPixelPhase1Config/python/SiPixelPhase1OfflineDQM_source_cff.py @@ -20,7 +20,7 @@ #Summary maps from DQM.SiPixelPhase1Summary.SiPixelPhase1Summary_cfi import * #Barycenter plots -from DQM.SiPixelPhase1Summary.SiPixelPhase1Barycenter_cfi import * +from DQM.SiPixelPhase1Summary.SiPixelBarycenter_cfi import * from RecoPixelVertexing.PixelLowPtUtilities.ClusterShapeHitFilterESProducer_cfi import * from RecoLocalTracker.SiStripClusterizer.SiStripClusterChargeCut_cfi import * diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h similarity index 80% rename from DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h rename to DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h index b4959d83b3561..a47b16dbad13d 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h @@ -1,9 +1,9 @@ -#ifndef SiPixelPhase1Barycenter_SiPixelPhase1Barycenter_h -#define SiPixelPhase1Barycenter_SiPixelPhase1Barycenter_h +#ifndef DQM_SiPixelPhase1Summary_SiPixelBarycenter_h +#define DQM_SiPixelPhase1Summary_SiPixelBarycenter_h // -*- C++ -*- // -// Package: SiPixelPhase1Barycenter -// Class : SiPixelPhase1Barycenter +// Package: SiPixelPhase1Summary +// Class : SiPixelBarycenter // /** @@ -31,10 +31,10 @@ #include "CondFormats/AlignmentRecord/interface/GlobalPositionRcd.h" #include "CondFormats/Alignment/interface/Alignments.h" -class SiPixelPhase1Barycenter : public DQMEDHarvester { +class SiPixelBarycenter : public DQMEDHarvester { public: - explicit SiPixelPhase1Barycenter(const edm::ParameterSet& conf); - ~SiPixelPhase1Barycenter() override; + explicit SiPixelBarycenter(const edm::ParameterSet& conf); + ~SiPixelBarycenter() override; protected: void beginRun(edm::Run const& run, edm::EventSetup const& eSetup) override; diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h similarity index 96% rename from DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h rename to DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h index 608ba38a92eba..44ac4ba6ce843 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h @@ -1,5 +1,5 @@ -#ifndef SiPixelPhase1Barycenter_SiPixelPhase1BarycenterHelper_h -#define SiPixelPhase1Barycenter_SiPixelPhase1BarycenterHelper_h +#ifndef DQM_SiPixelPhase1Summary_SiPixelBarycenterHelper_h +#define DQM_SiPixelPhase1Summary_SiPixelBarycenterHelper_h #include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" @@ -87,7 +87,7 @@ namespace DQMBarycenter { { for (const auto& ali : input) { if (DetId(ali.rawId()).det() != DetId::Tracker) { - edm::LogWarning("SiPixelPhase1Barycenters::computeBarycenters") + edm::LogWarning("SiPixelBarycenters::computeBarycenters") << "Encountered invalid Tracker DetId:" << ali.rawId() << " " << DetId(ali.rawId()).det() << " is different from " << DetId::Tracker << " - terminating "; assert(DetId(ali.rawId()).det() != DetId::Tracker); diff --git a/DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py b/DQM/SiPixelPhase1Summary/python/SiPixelBarycenter_cfi.py similarity index 70% rename from DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py rename to DQM/SiPixelPhase1Summary/python/SiPixelBarycenter_cfi.py index 9052b2142961c..3bd4e06703afb 100644 --- a/DQM/SiPixelPhase1Summary/python/SiPixelPhase1Barycenter_cfi.py +++ b/DQM/SiPixelPhase1Summary/python/SiPixelBarycenter_cfi.py @@ -5,4 +5,4 @@ # This object is used to make changes for different running scenarios # -SiPixelPhase1BarycenterOffline = DQMEDHarvester("SiPixelPhase1Barycenter") +SiPixelBarycenterOffline = DQMEDHarvester("SiPixelBarycenter") diff --git a/DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc similarity index 72% rename from DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc rename to DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc index 9c3ae961cf3cb..948a819865caa 100644 --- a/DQM/SiPixelPhase1Summary/src/SiPixelPhase1Barycenter.cc +++ b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc @@ -1,11 +1,11 @@ // -*- C++ -*- // -// Package: SiPixelPhase1Barycenter -// Class: SiPixelPhase1Barycenter +// Package: SiPixelPhase1Summary +// Class: SiPixelBarycenter // /**\class - Description: Create the Phase 1 pixel barycenter plots + Description: Create the pixel barycenter plots Implementation: @@ -15,9 +15,9 @@ // Created: 26th May 2021 // // -#include "DQM/SiPixelPhase1Summary/interface/SiPixelPhase1Barycenter.h" +#include "DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DQM/SiPixelPhase1Summary/interface/SiPixelPhase1BarycenterHelper.h" +#include "DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h" #include "CalibTracker/StandaloneTrackerTopology/interface/StandaloneTrackerTopology.h" #include @@ -26,23 +26,23 @@ using namespace std; using namespace edm; -SiPixelPhase1Barycenter::SiPixelPhase1Barycenter(const edm::ParameterSet& iConfig) +SiPixelBarycenter::SiPixelBarycenter(const edm::ParameterSet& iConfig) : DQMEDHarvester(iConfig) { - LogInfo("PixelDQM") << "SiPixelPhase1Barycenter::SiPixelPhase1Barycenter: Got DQM BackEnd interface" << endl; + LogInfo("PixelDQM") << "SiPixelBarycenter::SiPixelBarycenter: Got DQM BackEnd interface" << endl; } -SiPixelPhase1Barycenter::~SiPixelPhase1Barycenter() { +SiPixelBarycenter::~SiPixelBarycenter() { // do anything here that needs to be done at desctruction time // (e.g. close files, deallocate resources etc.) - LogInfo("PixelDQM") << "SiPixelPhase1Barycenter::~SiPixelPhase1Barycenter: Destructor" << endl; + LogInfo("PixelDQM") << "SiPixelBarycenter::~SiPixelBarycenter: Destructor" << endl; } -void SiPixelPhase1Barycenter::beginRun(edm::Run const& run, edm::EventSetup const& eSetup) {} +void SiPixelBarycenter::beginRun(edm::Run const& run, edm::EventSetup const& eSetup) {} -void SiPixelPhase1Barycenter::dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) {} +void SiPixelBarycenter::dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) {} -void SiPixelPhase1Barycenter::dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, +void SiPixelBarycenter::dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const edm::LuminosityBlock& lumiSeg, edm::EventSetup const& c) { @@ -62,7 +62,7 @@ void SiPixelPhase1Barycenter::dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, //------------------------------------------------------------------ // Used to book the barycenter histograms //------------------------------------------------------------------ -void SiPixelPhase1Barycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { +void SiPixelBarycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { iBooker.cd(); iBooker.setCurrentFolder("PixelPhase1/Barycenter"); @@ -86,7 +86,7 @@ void SiPixelPhase1Barycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooke //------------------------------------------------------------------ // Fill the Barycenter histograms //------------------------------------------------------------------ -void SiPixelPhase1Barycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, const std::vector& GPR) { +void SiPixelBarycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, const std::vector& GPR) { const auto GPR_translation_pixel = GPR[0].translation(); const std::map GPR_pixel = {{DQMBarycenter::t_x, GPR_translation_pixel.x()}, {DQMBarycenter::t_y, GPR_translation_pixel.y()}, {DQMBarycenter::t_z, GPR_translation_pixel.z()}}; @@ -109,4 +109,4 @@ void SiPixelPhase1Barycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooke } //define this as a plug-in -DEFINE_FWK_MODULE(SiPixelPhase1Barycenter); +DEFINE_FWK_MODULE(SiPixelBarycenter); From a443cb98255a53b4d7a120b746fed0b55eec55b8 Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Wed, 2 Jun 2021 09:51:14 +0200 Subject: [PATCH 3/8] Changed from struct to class for TkAlBarycenters --- DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h index 44ac4ba6ce843..7bd4965a7f9aa 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h @@ -34,7 +34,7 @@ namespace DQMBarycenter { }; - struct TkAlBarycenters { + class TkAlBarycenters { std::map Xbarycenters; std::map Ybarycenters; std::map Zbarycenters; From bbc7b0ff0f4a25aed558e515bcd843479616ffe7 Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Wed, 2 Jun 2021 10:31:43 +0200 Subject: [PATCH 4/8] Moved to esConsumes and apply code formats --- .../interface/SiPixelBarycenter.h | 13 +++-- .../interface/SiPixelBarycenterHelper.h | 35 +++++------ .../src/SiPixelBarycenter.cc | 58 +++++++++---------- 3 files changed, 52 insertions(+), 54 deletions(-) diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h index a47b16dbad13d..fc58a609a1a96 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h @@ -45,15 +45,20 @@ class SiPixelBarycenter : public DQMEDHarvester { edm::EventSetup const& c) override; void dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) override; -private: +private: + const edm::ESGetToken alignmentToken_; + const edm::ESGetToken gprToken_; + std::map barycenters_; //book the barycenter histograms void bookBarycenterHistograms(DQMStore::IBooker& iBooker); - - //fill the barycenter histograms - void fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, const std::vector& GPR); + //fill the barycenter histograms + void fillBarycenterHistograms(DQMStore::IBooker& iBooker, + DQMStore::IGetter& iGetter, + const std::vector& input, + const std::vector& GPR); }; #endif diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h index 7bd4965a7f9aa..8129ff28d529d 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h @@ -18,7 +18,11 @@ namespace DQMBarycenter { rot_gamma = 6, }; - enum partitions { BPix = 1, FPix_p = 2, FPix_m = 3, }; + enum partitions { + BPix = 1, + FPix_p = 2, + FPix_m = 3, + }; enum class PARTITION { BPIX, // 0 Barrel Pixel @@ -28,11 +32,11 @@ namespace DQMBarycenter { }; extern const PARTITION PARTITIONS[(int)PARTITION::LAST + 1]; - const PARTITION PARTITIONS[] = {PARTITION::BPIX, - PARTITION::FPIXp, - PARTITION::FPIXm, - }; - + const PARTITION PARTITIONS[] = { + PARTITION::BPIX, + PARTITION::FPIXp, + PARTITION::FPIXm, + }; class TkAlBarycenters { std::map Xbarycenters; @@ -45,36 +49,26 @@ namespace DQMBarycenter { void computeBarycenters(const std::vector& input, const TrackerTopology& tTopo, const std::map& GPR); - /*--------------------------------------------------------------------*/ const std::array getX() /*--------------------------------------------------------------------*/ { - return {{Xbarycenters[PARTITION::BPIX], - Xbarycenters[PARTITION::FPIXm], - Xbarycenters[PARTITION::FPIXp] - }}; + return {{Xbarycenters[PARTITION::BPIX], Xbarycenters[PARTITION::FPIXm], Xbarycenters[PARTITION::FPIXp]}}; }; /*--------------------------------------------------------------------*/ const std::array getY() /*--------------------------------------------------------------------*/ { - return {{Ybarycenters[PARTITION::BPIX], - Ybarycenters[PARTITION::FPIXm], - Ybarycenters[PARTITION::FPIXp] - }}; + return {{Ybarycenters[PARTITION::BPIX], Ybarycenters[PARTITION::FPIXm], Ybarycenters[PARTITION::FPIXp]}}; }; /*--------------------------------------------------------------------*/ const std::array getZ() /*--------------------------------------------------------------------*/ { - return {{Zbarycenters[PARTITION::BPIX], - Zbarycenters[PARTITION::FPIXm], - Zbarycenters[PARTITION::FPIXp] - }}; + return {{Zbarycenters[PARTITION::BPIX], Zbarycenters[PARTITION::FPIXm], Zbarycenters[PARTITION::FPIXp]}}; }; virtual ~TkAlBarycenters() {} }; @@ -94,7 +88,7 @@ namespace DQMBarycenter { } int subid = DetId(ali.rawId()).subdetId(); - if (subid==PixelSubdetector::PixelBarrel || subid==PixelSubdetector::PixelEndcap) { // use only pixel + if (subid == PixelSubdetector::PixelBarrel || subid == PixelSubdetector::PixelEndcap) { // use only pixel switch (subid) { case PixelSubdetector::PixelBarrel: Xbarycenters[PARTITION::BPIX] += (ali.translation().x()); @@ -133,7 +127,6 @@ namespace DQMBarycenter { Xbarycenters[p] += GPR.at(DQMBarycenter::t_x); Ybarycenters[p] += GPR.at(DQMBarycenter::t_y); Zbarycenters[p] += GPR.at(DQMBarycenter::t_z); - } } } // namespace DQMBarycenter diff --git a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc index 948a819865caa..78f5a49f6a2b9 100644 --- a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc +++ b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc @@ -27,9 +27,10 @@ using namespace std; using namespace edm; SiPixelBarycenter::SiPixelBarycenter(const edm::ParameterSet& iConfig) - : DQMEDHarvester(iConfig) { + : DQMEDHarvester(iConfig), + alignmentToken_(esConsumes()), + gprToken_(esConsumes()) { LogInfo("PixelDQM") << "SiPixelBarycenter::SiPixelBarycenter: Got DQM BackEnd interface" << endl; - } SiPixelBarycenter::~SiPixelBarycenter() { @@ -43,21 +44,15 @@ void SiPixelBarycenter::beginRun(edm::Run const& run, edm::EventSetup const& eSe void SiPixelBarycenter::dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) {} void SiPixelBarycenter::dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, - DQMStore::IGetter& iGetter, - const edm::LuminosityBlock& lumiSeg, - edm::EventSetup const& c) { - - + DQMStore::IGetter& iGetter, + const edm::LuminosityBlock& lumiSeg, + edm::EventSetup const& c) { bookBarycenterHistograms(iBooker); - - edm::ESHandle alignment_Handle; - c.get().get(alignment_Handle); - - edm::ESHandle gpr_Handle; - c.get().get(gpr_Handle); - - fillBarycenterHistograms(iBooker, iGetter,alignment_Handle->m_align,gpr_Handle->m_align); + const Alignments* alignments = &c.getData(alignmentToken_); + const Alignments* gpr = &c.getData(gprToken_); + + fillBarycenterHistograms(iBooker, iGetter, alignments->m_align, gpr->m_align); } //------------------------------------------------------------------ // Used to book the barycenter histograms @@ -74,9 +69,9 @@ void SiPixelBarycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { 3, 0.5, 3.5); - barycenters_[subdetector]->setBinLabel(1, "x"); - barycenters_[subdetector]->setBinLabel(2, "y"); - barycenters_[subdetector]->setBinLabel(3, "z"); + barycenters_[subdetector]->setBinLabel(1, "x"); + barycenters_[subdetector]->setBinLabel(2, "y"); + barycenters_[subdetector]->setBinLabel(3, "z"); } //Reset the iBooker @@ -86,25 +81,30 @@ void SiPixelBarycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { //------------------------------------------------------------------ // Fill the Barycenter histograms //------------------------------------------------------------------ -void SiPixelBarycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, const std::vector& GPR) { - +void SiPixelBarycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, + DQMStore::IGetter& iGetter, + const std::vector& input, + const std::vector& GPR) { const auto GPR_translation_pixel = GPR[0].translation(); - const std::map GPR_pixel = {{DQMBarycenter::t_x, GPR_translation_pixel.x()}, {DQMBarycenter::t_y, GPR_translation_pixel.y()}, {DQMBarycenter::t_z, GPR_translation_pixel.z()}}; - + const std::map GPR_pixel = {{DQMBarycenter::t_x, GPR_translation_pixel.x()}, + {DQMBarycenter::t_y, GPR_translation_pixel.y()}, + {DQMBarycenter::t_z, GPR_translation_pixel.z()}}; + DQMBarycenter::TkAlBarycenters barycenters; - TrackerTopology tTopo = StandaloneTrackerTopology::fromTrackerParametersXMLFile(edm::FileInPath("Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml").fullPath()); + TrackerTopology tTopo = StandaloneTrackerTopology::fromTrackerParametersXMLFile( + edm::FileInPath("Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml").fullPath()); barycenters.computeBarycenters(input, tTopo, GPR_pixel); - + auto Xbarycenters = barycenters.getX(); auto Ybarycenters = barycenters.getY(); auto Zbarycenters = barycenters.getZ(); - + //Fill histogram for each subdetector std::vector subdetectors = {"BPIX", "FPIXm", "FPIXp"}; - for(std::size_t i = 0; i < subdetectors.size(); ++i) { - barycenters_[subdetectors[i]]->setBinContent(1,Xbarycenters[i]); - barycenters_[subdetectors[i]]->setBinContent(2,Ybarycenters[i]); - barycenters_[subdetectors[i]]->setBinContent(3,Zbarycenters[i]); + for (std::size_t i = 0; i < subdetectors.size(); ++i) { + barycenters_[subdetectors[i]]->setBinContent(1, Xbarycenters[i]); + barycenters_[subdetectors[i]]->setBinContent(2, Ybarycenters[i]); + barycenters_[subdetectors[i]]->setBinContent(3, Zbarycenters[i]); } } From f1a21ea97ee1a54c6e87ff3de671557132e10182 Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Wed, 2 Jun 2021 11:15:14 +0200 Subject: [PATCH 5/8] Take topology from eventSetup --- DQM/SiPixelPhase1Summary/BuildFile.xml | 1 - .../interface/SiPixelBarycenter.h | 7 ++++++- DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc | 12 ++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/DQM/SiPixelPhase1Summary/BuildFile.xml b/DQM/SiPixelPhase1Summary/BuildFile.xml index 2786d364d0326..f317bf3773a72 100644 --- a/DQM/SiPixelPhase1Summary/BuildFile.xml +++ b/DQM/SiPixelPhase1Summary/BuildFile.xml @@ -5,6 +5,5 @@ - diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h index fc58a609a1a96..34f4bf3f9f20e 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h @@ -31,6 +31,9 @@ #include "CondFormats/AlignmentRecord/interface/GlobalPositionRcd.h" #include "CondFormats/Alignment/interface/Alignments.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" +#include "Geometry/Records/interface/TrackerTopologyRcd.h" + class SiPixelBarycenter : public DQMEDHarvester { public: explicit SiPixelBarycenter(const edm::ParameterSet& conf); @@ -48,6 +51,7 @@ class SiPixelBarycenter : public DQMEDHarvester { private: const edm::ESGetToken alignmentToken_; const edm::ESGetToken gprToken_; + const edm::ESGetToken trackerTopologyToken_; std::map barycenters_; @@ -58,7 +62,8 @@ class SiPixelBarycenter : public DQMEDHarvester { void fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, - const std::vector& GPR); + const std::vector& GPR, + const TrackerTopology& tTopo); }; #endif diff --git a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc index 78f5a49f6a2b9..1b64fbaa9be17 100644 --- a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc +++ b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc @@ -18,7 +18,6 @@ #include "DQM/SiPixelPhase1Summary/interface/SiPixelBarycenter.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h" -#include "CalibTracker/StandaloneTrackerTopology/interface/StandaloneTrackerTopology.h" #include #include @@ -29,7 +28,8 @@ using namespace edm; SiPixelBarycenter::SiPixelBarycenter(const edm::ParameterSet& iConfig) : DQMEDHarvester(iConfig), alignmentToken_(esConsumes()), - gprToken_(esConsumes()) { + gprToken_(esConsumes()), + trackerTopologyToken_(esConsumes()) { LogInfo("PixelDQM") << "SiPixelBarycenter::SiPixelBarycenter: Got DQM BackEnd interface" << endl; } @@ -51,8 +51,9 @@ void SiPixelBarycenter::dqmEndLuminosityBlock(DQMStore::IBooker& iBooker, const Alignments* alignments = &c.getData(alignmentToken_); const Alignments* gpr = &c.getData(gprToken_); + const TrackerTopology* tTopo = &c.getData(trackerTopologyToken_); - fillBarycenterHistograms(iBooker, iGetter, alignments->m_align, gpr->m_align); + fillBarycenterHistograms(iBooker, iGetter, alignments->m_align, gpr->m_align, *tTopo); } //------------------------------------------------------------------ // Used to book the barycenter histograms @@ -84,15 +85,14 @@ void SiPixelBarycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { void SiPixelBarycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter, const std::vector& input, - const std::vector& GPR) { + const std::vector& GPR, + const TrackerTopology& tTopo) { const auto GPR_translation_pixel = GPR[0].translation(); const std::map GPR_pixel = {{DQMBarycenter::t_x, GPR_translation_pixel.x()}, {DQMBarycenter::t_y, GPR_translation_pixel.y()}, {DQMBarycenter::t_z, GPR_translation_pixel.z()}}; DQMBarycenter::TkAlBarycenters barycenters; - TrackerTopology tTopo = StandaloneTrackerTopology::fromTrackerParametersXMLFile( - edm::FileInPath("Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml").fullPath()); barycenters.computeBarycenters(input, tTopo, GPR_pixel); auto Xbarycenters = barycenters.getX(); From 6710dfa9cf7c3f5d9e4ff3a062ead0b6b42cfb0c Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Wed, 2 Jun 2021 12:14:13 +0200 Subject: [PATCH 6/8] Declare methods of TkAlBarycenters as inline --- .../interface/SiPixelBarycenterHelper.h | 115 +++++++++--------- 1 file changed, 56 insertions(+), 59 deletions(-) diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h index 8129ff28d529d..8a2f299e38f16 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h @@ -45,90 +45,87 @@ namespace DQMBarycenter { std::map nmodules; public: - void init(); - void computeBarycenters(const std::vector& input, - const TrackerTopology& tTopo, - const std::map& GPR); + inline void init(); /*--------------------------------------------------------------------*/ - const std::array getX() + inline const std::array getX() /*--------------------------------------------------------------------*/ { return {{Xbarycenters[PARTITION::BPIX], Xbarycenters[PARTITION::FPIXm], Xbarycenters[PARTITION::FPIXp]}}; }; /*--------------------------------------------------------------------*/ - const std::array getY() + inline const std::array getY() /*--------------------------------------------------------------------*/ { return {{Ybarycenters[PARTITION::BPIX], Ybarycenters[PARTITION::FPIXm], Ybarycenters[PARTITION::FPIXp]}}; }; /*--------------------------------------------------------------------*/ - const std::array getZ() + inline const std::array getZ() /*--------------------------------------------------------------------*/ { return {{Zbarycenters[PARTITION::BPIX], Zbarycenters[PARTITION::FPIXm], Zbarycenters[PARTITION::FPIXp]}}; }; - virtual ~TkAlBarycenters() {} - }; + inline virtual ~TkAlBarycenters() {} - /*--------------------------------------------------------------------*/ - void TkAlBarycenters::computeBarycenters(const std::vector& input, - const TrackerTopology& tTopo, - const std::map& GPR) - /*--------------------------------------------------------------------*/ - { - for (const auto& ali : input) { - if (DetId(ali.rawId()).det() != DetId::Tracker) { - edm::LogWarning("SiPixelBarycenters::computeBarycenters") - << "Encountered invalid Tracker DetId:" << ali.rawId() << " " << DetId(ali.rawId()).det() - << " is different from " << DetId::Tracker << " - terminating "; - assert(DetId(ali.rawId()).det() != DetId::Tracker); - } + /*--------------------------------------------------------------------*/ + inline void computeBarycenters(const std::vector& input, + const TrackerTopology& tTopo, + const std::map& GPR) + /*--------------------------------------------------------------------*/ + { + for (const auto& ali : input) { + if (DetId(ali.rawId()).det() != DetId::Tracker) { + edm::LogWarning("SiPixelBarycenters::computeBarycenters") + << "Encountered invalid Tracker DetId:" << ali.rawId() << " " << DetId(ali.rawId()).det() + << " is different from " << DetId::Tracker << " - terminating "; + assert(DetId(ali.rawId()).det() != DetId::Tracker); + } - int subid = DetId(ali.rawId()).subdetId(); - if (subid == PixelSubdetector::PixelBarrel || subid == PixelSubdetector::PixelEndcap) { // use only pixel - switch (subid) { - case PixelSubdetector::PixelBarrel: - Xbarycenters[PARTITION::BPIX] += (ali.translation().x()); - Ybarycenters[PARTITION::BPIX] += (ali.translation().y()); - Zbarycenters[PARTITION::BPIX] += (ali.translation().z()); - nmodules[PARTITION::BPIX]++; - break; - case PixelSubdetector::PixelEndcap: - - // minus side - if (tTopo.pxfSide(DetId(ali.rawId())) == 1) { - Xbarycenters[PARTITION::FPIXm] += (ali.translation().x()); - Ybarycenters[PARTITION::FPIXm] += (ali.translation().y()); - Zbarycenters[PARTITION::FPIXm] += (ali.translation().z()); - nmodules[PARTITION::FPIXm]++; - } // plus side - else { - Xbarycenters[PARTITION::FPIXp] += (ali.translation().x()); - Ybarycenters[PARTITION::FPIXp] += (ali.translation().y()); - Zbarycenters[PARTITION::FPIXp] += (ali.translation().z()); - nmodules[PARTITION::FPIXp]++; - } - break; - default: - edm::LogError("PixelDQM") << "Unrecognized partition for barycenter computation " << subid << std::endl; - break; + int subid = DetId(ali.rawId()).subdetId(); + if (subid == PixelSubdetector::PixelBarrel || subid == PixelSubdetector::PixelEndcap) { // use only pixel + switch (subid) { + case PixelSubdetector::PixelBarrel: + Xbarycenters[PARTITION::BPIX] += (ali.translation().x()); + Ybarycenters[PARTITION::BPIX] += (ali.translation().y()); + Zbarycenters[PARTITION::BPIX] += (ali.translation().z()); + nmodules[PARTITION::BPIX]++; + break; + case PixelSubdetector::PixelEndcap: + + // minus side + if (tTopo.pxfSide(DetId(ali.rawId())) == 1) { + Xbarycenters[PARTITION::FPIXm] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIXm] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIXm] += (ali.translation().z()); + nmodules[PARTITION::FPIXm]++; + } // plus side + else { + Xbarycenters[PARTITION::FPIXp] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIXp] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIXp] += (ali.translation().z()); + nmodules[PARTITION::FPIXp]++; + } + break; + default: + edm::LogError("PixelDQM") << "Unrecognized partition for barycenter computation " << subid << std::endl; + break; + } } } - } - for (const auto& p : PARTITIONS) { - Xbarycenters[p] /= nmodules[p]; - Ybarycenters[p] /= nmodules[p]; - Zbarycenters[p] /= nmodules[p]; + for (const auto& p : PARTITIONS) { + Xbarycenters[p] /= nmodules[p]; + Ybarycenters[p] /= nmodules[p]; + Zbarycenters[p] /= nmodules[p]; - Xbarycenters[p] += GPR.at(DQMBarycenter::t_x); - Ybarycenters[p] += GPR.at(DQMBarycenter::t_y); - Zbarycenters[p] += GPR.at(DQMBarycenter::t_z); + Xbarycenters[p] += GPR.at(DQMBarycenter::t_x); + Ybarycenters[p] += GPR.at(DQMBarycenter::t_y); + Zbarycenters[p] += GPR.at(DQMBarycenter::t_z); + } } - } + }; } // namespace DQMBarycenter #endif From 3a282e9069a8523e2020cd670a71319459ab4f30 Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Thu, 1 Jul 2021 19:39:12 +0200 Subject: [PATCH 7/8] Added Barycenter plots for PCL HLS --- DQM/SiPixelPhase1Summary/BuildFile.xml | 1 + .../interface/SiPixelBarycenterHelper.h | 147 ++++++++++++++---- .../src/SiPixelBarycenter.cc | 6 +- 3 files changed, 125 insertions(+), 29 deletions(-) diff --git a/DQM/SiPixelPhase1Summary/BuildFile.xml b/DQM/SiPixelPhase1Summary/BuildFile.xml index f317bf3773a72..299313667c13c 100644 --- a/DQM/SiPixelPhase1Summary/BuildFile.xml +++ b/DQM/SiPixelPhase1Summary/BuildFile.xml @@ -5,5 +5,6 @@ + diff --git a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h index 8a2f299e38f16..2e6bd3a83514c 100644 --- a/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h +++ b/DQM/SiPixelPhase1Summary/interface/SiPixelBarycenterHelper.h @@ -4,6 +4,9 @@ #include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "CondFormats/Alignment/interface/Alignments.h" +#include "Alignment/TrackerAlignment/interface/TrackerNameSpace.h" +#include "DataFormats/TrackerCommon/interface/PixelBarrelName.h" +#include "DataFormats/TrackerCommon/interface/PixelEndcapName.h" // Helper mainly based on https://github.com/cms-sw/cmssw/blob/master/CondCore/AlignmentPlugins/interface/AlignmentPayloadInspectorHelper.h @@ -20,22 +23,40 @@ namespace DQMBarycenter { enum partitions { BPix = 1, - FPix_p = 2, - FPix_m = 3, + FPix_zp = 2, + FPix_zm = 3, + BPix_xp = 4, + BPix_xm = 5, + FPix_zp_xp = 6, + FPix_zm_xp = 7, + FPix_zp_xm = 8, + FPix_zm_xm = 9, }; enum class PARTITION { - BPIX, // 0 Barrel Pixel - FPIXp, // 1 Forward Pixel Plus - FPIXm, // 2 Forward Pixel Minus - LAST = FPIXm + BPIX, // 0 Barrel Pixel + FPIX_zp, // 1 Forward Pixel Z-Plus + FPIX_zm, // 2 Forward Pixel Z-Minus + BPIX_xp, // 3 Barrel Pixel X-Plus + BPIX_xm, // 4 Barrel Pixel X-Minus + FPIX_zp_xp, // 5 Forward Pixel Z-Plus X-Plus + FPIX_zm_xp, // 6 Forward Pixel Z-Minus X-Plus + FPIX_zp_xm, // 7 Forward Pixel Z-Plus X-Minus + FPIX_zm_xm, // 8 Forward Pixel Z-Minus X-Minus + LAST = FPIX_zm_xm }; extern const PARTITION PARTITIONS[(int)PARTITION::LAST + 1]; const PARTITION PARTITIONS[] = { PARTITION::BPIX, - PARTITION::FPIXp, - PARTITION::FPIXm, + PARTITION::FPIX_zp, + PARTITION::FPIX_zm, + PARTITION::BPIX_xp, + PARTITION::BPIX_xm, + PARTITION::FPIX_zp_xp, + PARTITION::FPIX_zm_xp, + PARTITION::FPIX_zp_xm, + PARTITION::FPIX_zm_xm, }; class TkAlBarycenters { @@ -48,31 +69,55 @@ namespace DQMBarycenter { inline void init(); /*--------------------------------------------------------------------*/ - inline const std::array getX() + inline const std::array getX() /*--------------------------------------------------------------------*/ { - return {{Xbarycenters[PARTITION::BPIX], Xbarycenters[PARTITION::FPIXm], Xbarycenters[PARTITION::FPIXp]}}; + return {{Xbarycenters[PARTITION::BPIX], + Xbarycenters[PARTITION::FPIX_zm], + Xbarycenters[PARTITION::FPIX_zp], + Xbarycenters[PARTITION::BPIX_xp], + Xbarycenters[PARTITION::BPIX_xm], + Xbarycenters[PARTITION::FPIX_zp_xp], + Xbarycenters[PARTITION::FPIX_zm_xp], + Xbarycenters[PARTITION::FPIX_zp_xm], + Xbarycenters[PARTITION::FPIX_zm_xm]}}; }; /*--------------------------------------------------------------------*/ - inline const std::array getY() + inline const std::array getY() /*--------------------------------------------------------------------*/ { - return {{Ybarycenters[PARTITION::BPIX], Ybarycenters[PARTITION::FPIXm], Ybarycenters[PARTITION::FPIXp]}}; + return {{Ybarycenters[PARTITION::BPIX], + Ybarycenters[PARTITION::FPIX_zm], + Ybarycenters[PARTITION::FPIX_zp], + Ybarycenters[PARTITION::BPIX_xp], + Ybarycenters[PARTITION::BPIX_xm], + Ybarycenters[PARTITION::FPIX_zp_xp], + Ybarycenters[PARTITION::FPIX_zm_xp], + Ybarycenters[PARTITION::FPIX_zp_xm], + Ybarycenters[PARTITION::FPIX_zm_xm]}}; }; /*--------------------------------------------------------------------*/ - inline const std::array getZ() + inline const std::array getZ() /*--------------------------------------------------------------------*/ { - return {{Zbarycenters[PARTITION::BPIX], Zbarycenters[PARTITION::FPIXm], Zbarycenters[PARTITION::FPIXp]}}; + return {{Zbarycenters[PARTITION::BPIX], + Zbarycenters[PARTITION::FPIX_zm], + Zbarycenters[PARTITION::FPIX_zp], + Zbarycenters[PARTITION::BPIX_xp], + Zbarycenters[PARTITION::BPIX_xm], + Zbarycenters[PARTITION::FPIX_zp_xp], + Zbarycenters[PARTITION::FPIX_zm_xp], + Zbarycenters[PARTITION::FPIX_zp_xm], + Zbarycenters[PARTITION::FPIX_zm_xm]}}; }; inline virtual ~TkAlBarycenters() {} /*--------------------------------------------------------------------*/ inline void computeBarycenters(const std::vector& input, - const TrackerTopology& tTopo, - const std::map& GPR) + const TrackerTopology& tTopo, + const std::map& GPR) /*--------------------------------------------------------------------*/ { for (const auto& ali : input) { @@ -83,9 +128,10 @@ namespace DQMBarycenter { assert(DetId(ali.rawId()).det() != DetId::Tracker); } + const auto& tns = align::TrackerNameSpace(&tTopo); int subid = DetId(ali.rawId()).subdetId(); if (subid == PixelSubdetector::PixelBarrel || subid == PixelSubdetector::PixelEndcap) { // use only pixel - switch (subid) { + switch (subid) { // Separate BPIX, FPIX_zp and FPIX_zm case PixelSubdetector::PixelBarrel: Xbarycenters[PARTITION::BPIX] += (ali.translation().x()); Ybarycenters[PARTITION::BPIX] += (ali.translation().y()); @@ -93,19 +139,66 @@ namespace DQMBarycenter { nmodules[PARTITION::BPIX]++; break; case PixelSubdetector::PixelEndcap: - // minus side - if (tTopo.pxfSide(DetId(ali.rawId())) == 1) { - Xbarycenters[PARTITION::FPIXm] += (ali.translation().x()); - Ybarycenters[PARTITION::FPIXm] += (ali.translation().y()); - Zbarycenters[PARTITION::FPIXm] += (ali.translation().z()); - nmodules[PARTITION::FPIXm]++; + if (tns.tpe().endcapNumber(ali.rawId()) == 1) { + Xbarycenters[PARTITION::FPIX_zm] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIX_zm] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIX_zm] += (ali.translation().z()); + nmodules[PARTITION::FPIX_zm]++; } // plus side else { - Xbarycenters[PARTITION::FPIXp] += (ali.translation().x()); - Ybarycenters[PARTITION::FPIXp] += (ali.translation().y()); - Zbarycenters[PARTITION::FPIXp] += (ali.translation().z()); - nmodules[PARTITION::FPIXp]++; + Xbarycenters[PARTITION::FPIX_zp] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIX_zp] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIX_zp] += (ali.translation().z()); + nmodules[PARTITION::FPIX_zp]++; + } + break; + default: + edm::LogError("PixelDQM") << "Unrecognized partition for barycenter computation " << subid << std::endl; + break; + } + + switch (subid) { // Separate following the PCL HLS + case PixelSubdetector::PixelBarrel: + if ((PixelBarrelName(DetId(ali.rawId()), true).shell() == PixelBarrelName::mO) || + (PixelBarrelName(DetId(ali.rawId()), true).shell() == PixelBarrelName::pO)) { // BPIX x- + Xbarycenters[PARTITION::BPIX_xm] += (ali.translation().x()); + Ybarycenters[PARTITION::BPIX_xm] += (ali.translation().y()); + Zbarycenters[PARTITION::BPIX_xm] += (ali.translation().z()); + nmodules[PARTITION::BPIX_xm]++; + } else { // BPIX x+ + Xbarycenters[PARTITION::BPIX_xp] += (ali.translation().x()); + Ybarycenters[PARTITION::BPIX_xp] += (ali.translation().y()); + Zbarycenters[PARTITION::BPIX_xp] += (ali.translation().z()); + nmodules[PARTITION::BPIX_xp]++; + } + break; + case PixelSubdetector::PixelEndcap: + if (PixelEndcapName(DetId(ali.rawId()), true).halfCylinder() == PixelEndcapName::mO) { //FPIX z- x- + Xbarycenters[PARTITION::FPIX_zm_xm] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIX_zm_xm] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIX_zm_xm] += (ali.translation().z()); + nmodules[PARTITION::FPIX_zm_xm]++; + } else if (PixelEndcapName(DetId(ali.rawId()), true).halfCylinder() == + PixelEndcapName::mI) { //FPIX z- x+ + Xbarycenters[PARTITION::FPIX_zm_xp] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIX_zm_xp] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIX_zm_xp] += (ali.translation().z()); + nmodules[PARTITION::FPIX_zm_xp]++; + } else if (PixelEndcapName(DetId(ali.rawId()), true).halfCylinder() == + PixelEndcapName::pO) { //FPIX z+ x- + Xbarycenters[PARTITION::FPIX_zp_xm] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIX_zp_xm] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIX_zp_xm] += (ali.translation().z()); + nmodules[PARTITION::FPIX_zp_xm]++; + } else if (PixelEndcapName(DetId(ali.rawId()), true).halfCylinder() == + PixelEndcapName::pI) { //FPIX z+ x+ + Xbarycenters[PARTITION::FPIX_zp_xp] += (ali.translation().x()); + Ybarycenters[PARTITION::FPIX_zp_xp] += (ali.translation().y()); + Zbarycenters[PARTITION::FPIX_zp_xp] += (ali.translation().z()); + nmodules[PARTITION::FPIX_zp_xp]++; + } else { + edm::LogError("PixelDQM") << "Unrecognized partition for barycenter computation " << subid << std::endl; } break; default: diff --git a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc index 1b64fbaa9be17..df203e0686002 100644 --- a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc +++ b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc @@ -63,7 +63,8 @@ void SiPixelBarycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { iBooker.setCurrentFolder("PixelPhase1/Barycenter"); //Book one histogram for each subdetector - for (std::string subdetector : {"BPIX", "FPIXm", "FPIXp"}) { + for (std::string subdetector : + {"BPIX", "FPIX_zm", "FPIX_zp", "BPix_xp", "BPix_xm", "FPix_zp_xp", "FPix_zm_xp", "FPix_zp_xm", "FPix_zm_xm"}) { barycenters_[subdetector] = iBooker.book1D("barycenters_" + subdetector, "Position of the barycenter for " + subdetector + ";Coordinate;Position [mm]", @@ -100,7 +101,8 @@ void SiPixelBarycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, auto Zbarycenters = barycenters.getZ(); //Fill histogram for each subdetector - std::vector subdetectors = {"BPIX", "FPIXm", "FPIXp"}; + std::vector subdetectors = { + "BPIX", "FPIX_zm", "FPIX_zp", "BPix_xp", "BPix_xm", "FPix_zp_xp", "FPix_zm_xp", "FPix_zp_xm", "FPix_zm_xm"}; for (std::size_t i = 0; i < subdetectors.size(); ++i) { barycenters_[subdetectors[i]]->setBinContent(1, Xbarycenters[i]); barycenters_[subdetectors[i]]->setBinContent(2, Ybarycenters[i]); From 5a9d4eb1bab537c33856236673586965ac68a47e Mon Sep 17 00:00:00 2001 From: Danilo Meuser Date: Thu, 1 Jul 2021 23:21:12 +0200 Subject: [PATCH 8/8] Fixed plot names --- DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc index df203e0686002..69c9392c69edc 100644 --- a/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc +++ b/DQM/SiPixelPhase1Summary/src/SiPixelBarycenter.cc @@ -64,7 +64,7 @@ void SiPixelBarycenter::bookBarycenterHistograms(DQMStore::IBooker& iBooker) { iBooker.setCurrentFolder("PixelPhase1/Barycenter"); //Book one histogram for each subdetector for (std::string subdetector : - {"BPIX", "FPIX_zm", "FPIX_zp", "BPix_xp", "BPix_xm", "FPix_zp_xp", "FPix_zm_xp", "FPix_zp_xm", "FPix_zm_xm"}) { + {"BPIX", "FPIX_zm", "FPIX_zp", "BPIX_xp", "BPIX_xm", "FPIX_zp_xp", "FPIX_zm_xp", "FPIX_zp_xm", "FPIX_zm_xm"}) { barycenters_[subdetector] = iBooker.book1D("barycenters_" + subdetector, "Position of the barycenter for " + subdetector + ";Coordinate;Position [mm]", @@ -102,7 +102,7 @@ void SiPixelBarycenter::fillBarycenterHistograms(DQMStore::IBooker& iBooker, //Fill histogram for each subdetector std::vector subdetectors = { - "BPIX", "FPIX_zm", "FPIX_zp", "BPix_xp", "BPix_xm", "FPix_zp_xp", "FPix_zm_xp", "FPix_zp_xm", "FPix_zm_xm"}; + "BPIX", "FPIX_zm", "FPIX_zp", "BPIX_xp", "BPIX_xm", "FPIX_zp_xp", "FPIX_zm_xp", "FPIX_zp_xm", "FPIX_zm_xm"}; for (std::size_t i = 0; i < subdetectors.size(); ++i) { barycenters_[subdetectors[i]]->setBinContent(1, Xbarycenters[i]); barycenters_[subdetectors[i]]->setBinContent(2, Ybarycenters[i]);