File indexing completed on 2024-04-06 12:06:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023 #include <vector>
0024 #include <string>
0025
0026 #include "FWCore/Framework/interface/Frameworkfwd.h"
0027 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0028
0029 #include "FWCore/Framework/interface/Event.h"
0030 #include "FWCore/Framework/interface/MakerMacros.h"
0031
0032 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0033
0034 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0035
0036 #include "FWCore/ServiceRegistry/interface/Service.h"
0037 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0038
0039 #include "Geometry/TrackerNumberingBuilder/interface/utils.h"
0040 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0041 #include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h"
0042 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0043
0044 #include "CalibTracker/SiPixelESProducers/interface/SiPixelDetInfoFileReader.h"
0045 #include "CommonTools/UtilAlgos/interface/DetIdSelector.h"
0046 #include "FWCore/ParameterSet/interface/FileInPath.h"
0047
0048
0049 #include "DQM/SiStripCommon/interface/TkHistoMap.h"
0050 #include "CommonTools/TrackerMap/interface/TrackerMap.h"
0051
0052
0053
0054
0055
0056
0057 class DetIdSelectorTest : public edm::one::EDAnalyzer<> {
0058 public:
0059 explicit DetIdSelectorTest(const edm::ParameterSet&);
0060 ~DetIdSelectorTest() override;
0061
0062 private:
0063 void beginJob() override;
0064 void analyze(const edm::Event&, const edm::EventSetup&) override;
0065 void endJob() override;
0066
0067
0068
0069 std::vector<DetIdSelector> detidsels_;
0070 std::unique_ptr<TkHistoMap> tkhisto_;
0071 TrackerMap tkmap_;
0072
0073 edm::ESGetToken<TkDetMap, TrackerTopologyRcd> tkDetMapToken_;
0074 edm::ESGetToken<GeometricDet, IdealGeometryRecord> geomDetToken_;
0075 };
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088 DetIdSelectorTest::DetIdSelectorTest(const edm::ParameterSet& iConfig)
0089 : detidsels_(), tkhisto_(nullptr), tkmap_(), tkDetMapToken_(esConsumes()), geomDetToken_(esConsumes()) {
0090
0091
0092 std::vector<edm::ParameterSet> selconfigs = iConfig.getParameter<std::vector<edm::ParameterSet> >("selections");
0093
0094 for (std::vector<edm::ParameterSet>::const_iterator selconfig = selconfigs.begin(); selconfig != selconfigs.end();
0095 ++selconfig) {
0096 DetIdSelector selection(*selconfig);
0097 detidsels_.push_back(selection);
0098 }
0099
0100 tkmap_.setPalette(1);
0101 tkmap_.addPixel(true);
0102 }
0103
0104 DetIdSelectorTest::~DetIdSelectorTest() {
0105
0106
0107 }
0108
0109
0110
0111
0112
0113
0114 void DetIdSelectorTest::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0115 using namespace edm;
0116
0117 if (!tkhisto_) {
0118 tkhisto_ = std::make_unique<TkHistoMap>(&iSetup.getData(tkDetMapToken_), "SelectorTest", "SelectorTest", -1);
0119 }
0120
0121 {
0122 const auto detids = TrackerGeometryUtils::getSiStripDetIds(iSetup.getData(geomDetToken_));
0123
0124 for (std::vector<uint32_t>::const_iterator detid = detids.begin(); detid != detids.end(); ++detid) {
0125 LogDebug("DetID") << *detid;
0126 int index = 0;
0127 for (std::vector<DetIdSelector>::const_iterator detidsel = detidsels_.begin(); detidsel != detidsels_.end();
0128 ++detidsel) {
0129 if (detidsel->isSelected(*detid)) {
0130 LogDebug("selected") << "Selected by selection " << index;
0131 unsigned int det = *detid;
0132 tkhisto_->add(det, index);
0133 tkmap_.fill_current_val(det, index);
0134 }
0135 ++index;
0136 }
0137 }
0138 }
0139
0140 {
0141 edm::FileInPath fp("CalibTracker/SiPixelESProducers/data/PixelSkimmedGeometry.txt");
0142
0143 SiPixelDetInfoFileReader pxlreader(fp.fullPath());
0144 const std::vector<uint32_t>& detids = pxlreader.getAllDetIds();
0145
0146 for (std::vector<uint32_t>::const_iterator detid = detids.begin(); detid != detids.end(); ++detid) {
0147 LogDebug("DetID") << *detid;
0148 int index = 0;
0149 for (std::vector<DetIdSelector>::const_iterator detidsel = detidsels_.begin(); detidsel != detidsels_.end();
0150 ++detidsel) {
0151 if (detidsel->isSelected(*detid)) {
0152 LogDebug("selected") << "Selected by selection " << index;
0153 unsigned int det = *detid;
0154
0155 tkmap_.fill_current_val(det, index);
0156 }
0157 ++index;
0158 }
0159 }
0160 }
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185 }
0186
0187
0188 void DetIdSelectorTest::beginJob() {}
0189
0190
0191 void DetIdSelectorTest::endJob() {
0192
0193 std::string mapname = "SelectorTest.png";
0194 tkmap_.save(true, 0, 0, mapname, 5700, 2400);
0195
0196 std::string rootmapname = "TKMap_Selectortest.root";
0197 tkhisto_->save(rootmapname);
0198 }
0199
0200
0201 DEFINE_FWK_MODULE(DetIdSelectorTest);