|
7 | 7 |
|
8 | 8 | Description: Create the Phsae 1 pixel DRnR plots |
9 | 9 |
|
10 | | - Implementation: |
11 | | - <Notes on implementation> |
| 10 | + Implementation: Introduce some computation over the PixelPhase1 residuals distributions |
12 | 11 | */ |
13 | 12 | // |
14 | 13 | // Original Author: Alessandro Rossi |
15 | 14 | // Created: 25th May 2021 |
16 | 15 | // |
17 | 16 | // |
18 | | -#include "DQM/SiPixelPhase1Track/interface/SiPixelPhase1ResidualsExtra.h" |
19 | | -// Framework |
20 | | -#include "FWCore/ServiceRegistry/interface/Service.h" |
21 | | -#include "FWCore/MessageLogger/interface/MessageLogger.h" |
22 | | -#include "FWCore/ParameterSet/interface/ParameterSet.h" |
23 | | -// DQM Framework |
| 17 | + |
| 18 | +// system includes |
| 19 | +#include <string> |
| 20 | +#include <cstdlib> |
| 21 | +#include <iostream> |
| 22 | +#include <fstream> |
| 23 | +#include <sstream> |
| 24 | + |
| 25 | +// user includes |
24 | 26 | #include "DQM/SiPixelCommon/interface/SiPixelFolderOrganizer.h" |
| 27 | +#include "DQMServices/Core/interface/DQMEDHarvester.h" |
25 | 28 | #include "DQMServices/Core/interface/DQMStore.h" |
26 | | -// Geometry |
27 | | -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" |
28 | | -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" |
29 | | -#include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h" |
30 | | -#include "Geometry/CommonTopologies/interface/PixelTopology.h" |
31 | | -#include "Geometry/Records/interface/TrackerTopologyRcd.h" |
32 | | -// DataFormats |
33 | 29 | #include "DataFormats/DetId/interface/DetId.h" |
| 30 | +#include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h" |
| 31 | +#include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h" |
34 | 32 | #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" |
35 | 33 | #include "DataFormats/TrackerCommon/interface/PixelBarrelName.h" |
36 | | -#include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h" |
37 | 34 | #include "DataFormats/TrackerCommon/interface/PixelEndcapName.h" |
38 | | -#include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h" |
39 | | -// |
40 | | -#include <string> |
41 | | -#include <cstdlib> |
42 | | -#include <iostream> |
43 | | -#include <fstream> |
44 | | -#include <sstream> |
| 35 | +#include "FWCore/Framework/interface/Event.h" |
| 36 | +#include "FWCore/Framework/interface/Frameworkfwd.h" |
| 37 | +#include "FWCore/Framework/interface/MakerMacros.h" |
| 38 | +#include "FWCore/MessageLogger/interface/MessageLogger.h" |
| 39 | +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" |
| 40 | +#include "FWCore/ParameterSet/interface/ParameterSet.h" |
| 41 | +#include "FWCore/ParameterSet/interface/ParameterSet.h" |
| 42 | +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" |
| 43 | +#include "FWCore/ServiceRegistry/interface/Service.h" |
| 44 | +#include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h" |
| 45 | +#include "Geometry/CommonTopologies/interface/PixelTopology.h" |
| 46 | +#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" |
| 47 | +#include "Geometry/Records/interface/TrackerTopologyRcd.h" |
| 48 | +#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" |
45 | 49 |
|
46 | 50 | using namespace std; |
47 | 51 | using namespace edm; |
48 | 52 |
|
| 53 | +class SiPixelPhase1ResidualsExtra : public DQMEDHarvester { |
| 54 | +public: |
| 55 | + explicit SiPixelPhase1ResidualsExtra(const edm::ParameterSet& conf); |
| 56 | + ~SiPixelPhase1ResidualsExtra() override; |
| 57 | + |
| 58 | + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); |
| 59 | + |
| 60 | +protected: |
| 61 | + // BeginRun |
| 62 | + void beginRun(edm::Run const& run, edm::EventSetup const& eSetup) override; |
| 63 | + |
| 64 | + // EndJob |
| 65 | + void dqmEndJob(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) override; |
| 66 | + |
| 67 | +private: |
| 68 | + const std::string topFolderName_; |
| 69 | + const std::string inputFolderName_; |
| 70 | + const int minHits_; |
| 71 | + |
| 72 | + std::map<std::string, MonitorElement*> residuals_; |
| 73 | + std::map<std::string, MonitorElement*> DRnR_; |
| 74 | + |
| 75 | + //Book Monitoring Elements |
| 76 | + void bookMEs(DQMStore::IBooker& iBooker); |
| 77 | + |
| 78 | + //Fill Monitoring Elements |
| 79 | + void fillMEs(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter); |
| 80 | +}; |
| 81 | + |
49 | 82 | SiPixelPhase1ResidualsExtra::SiPixelPhase1ResidualsExtra(const edm::ParameterSet& iConfig) |
50 | | - : DQMEDHarvester(iConfig), conf_(iConfig) { |
| 83 | + : DQMEDHarvester(iConfig), |
| 84 | + topFolderName_(iConfig.getParameter<std::string>("TopFolderName")), |
| 85 | + inputFolderName_(iConfig.getParameter<std::string>("InputFolderName")), |
| 86 | + minHits_(iConfig.getParameter<int>("MinHits")) { |
51 | 87 | LogInfo("PixelDQM") << "SiPixelPhase1ResidualsExtra::SiPixelPhase1ResidualsExtra: Got DQM BackEnd interface" << endl; |
52 | | - topFolderName_ = conf_.getParameter<std::string>("TopFolderName"); |
53 | | - minHits_ = conf_.getParameter<int>("MinHits"); |
54 | 88 | } |
55 | 89 |
|
56 | 90 | SiPixelPhase1ResidualsExtra::~SiPixelPhase1ResidualsExtra() { |
57 | | - // do anything here that needs to be done at desctruction time |
58 | | - // (e.g. close files, deallocate resources etc.) |
59 | 91 | LogInfo("PixelDQM") << "SiPixelPhase1ResidualsExtra::~SiPixelPhase1ResidualsExtra: Destructor" << endl; |
60 | 92 | } |
61 | 93 |
|
@@ -292,13 +324,13 @@ void SiPixelPhase1ResidualsExtra::fillMEs(DQMStore::IBooker& iBooker, DQMStore:: |
292 | 324 |
|
293 | 325 | for (std::string layer : {"1", "2", "3", "4"}) { |
294 | 326 | MonitorElement* me_x = |
295 | | - iGetter.get("PixelPhase1/Tracks/PXBarrel/residual_x_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
| 327 | + iGetter.get(inputFolderName_ + "/PXBarrel/residual_x_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
296 | 328 | MonitorElement* me_y = |
297 | | - iGetter.get("PixelPhase1/Tracks/PXBarrel/residual_y_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
| 329 | + iGetter.get(inputFolderName_ + "/PXBarrel/residual_y_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
298 | 330 | MonitorElement* me2_x = iGetter.get( |
299 | | - "PixelPhase1/Tracks/ResidualsExtra/PXBarrel/DRnR_x_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
| 331 | + inputFolderName_ + "/ResidualsExtra/PXBarrel/DRnR_x_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
300 | 332 | MonitorElement* me2_y = iGetter.get( |
301 | | - "PixelPhase1/Tracks/ResidualsExtra/PXBarrel/DRnR_y_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
| 333 | + inputFolderName_ + "/ResidualsExtra/PXBarrel/DRnR_y_per_SignedModule_per_SignedLadder_PXLayer_" + layer); |
302 | 334 |
|
303 | 335 | if (me_x == nullptr || me_y == nullptr || me2_x == nullptr || me2_y == nullptr) { |
304 | 336 | edm::LogWarning("SiPixelPhase1ResidualsExtra") |
@@ -388,13 +420,13 @@ void SiPixelPhase1ResidualsExtra::fillMEs(DQMStore::IBooker& iBooker, DQMStore:: |
388 | 420 | //PXForward separating outer and inner modules as well as positive and negative side |
389 | 421 | for (std::string ring : {"1", "2"}) { |
390 | 422 | MonitorElement* me_x = |
391 | | - iGetter.get("PixelPhase1/Tracks/PXForward/residual_x_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
| 423 | + iGetter.get(inputFolderName_ + "/PXForward/residual_x_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
392 | 424 | MonitorElement* me_y = |
393 | | - iGetter.get("PixelPhase1/Tracks/PXForward/residual_y_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
| 425 | + iGetter.get(inputFolderName_ + "/PXForward/residual_y_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
394 | 426 | MonitorElement* me2_x = iGetter.get( |
395 | | - "PixelPhase1/Tracks/ResidualsExtra/PXForward/DRnR_x_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
| 427 | + inputFolderName_ + "/ResidualsExtra/PXForward/DRnR_x_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
396 | 428 | MonitorElement* me2_y = iGetter.get( |
397 | | - "PixelPhase1/Tracks/ResidualsExtra/PXForward/DRnR_y_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
| 429 | + inputFolderName_ + "/ResidualsExtra/PXForward/DRnR_y_per_PXDisk_per_SignedBladePanel_PXRing_" + ring); |
398 | 430 |
|
399 | 431 | if (me_x == nullptr || me_y == nullptr || me2_x == nullptr || me2_y == nullptr) { |
400 | 432 | edm::LogWarning("SiPixelPhase1ResidualsExtra") |
@@ -472,5 +504,14 @@ void SiPixelPhase1ResidualsExtra::fillMEs(DQMStore::IBooker& iBooker, DQMStore:: |
472 | 504 | } |
473 | 505 | } |
474 | 506 |
|
| 507 | +void SiPixelPhase1ResidualsExtra::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { |
| 508 | + edm::ParameterSetDescription desc; |
| 509 | + desc.add<std::string>("TopFolderName", "PixelPhase1/Tracks/ResidualsExtra") |
| 510 | + ->setComment("Folder in which to write output histograms"); |
| 511 | + desc.add<std::string>("InputFolderName", "")->setComment("Folder from which to fetch in the input MEs"); |
| 512 | + desc.add<int>("MinHits", 30)->setComment("minimum number of hits per module to fill the DRnR plots"); |
| 513 | + descriptions.addWithDefaultLabel(desc); |
| 514 | +} |
| 515 | + |
475 | 516 | //define this as a plug-in |
476 | 517 | DEFINE_FWK_MODULE(SiPixelPhase1ResidualsExtra); |
0 commit comments