Skip to content

Commit 0993450

Browse files
committed
make input folder for residuals extra plots configurable, generalized clean-up of SiPixelPhase1ResidualsExtra plugin
1 parent b9a1a9a commit 0993450

File tree

5 files changed

+87
-99
lines changed

5 files changed

+87
-99
lines changed

DQM/SiPixelPhase1Track/interface/SiPixelPhase1ResidualsExtra.h

Lines changed: 0 additions & 58 deletions
This file was deleted.

DQM/SiPixelPhase1Track/plugins/SiPixelPhase1ResidualsExtra.cc

Lines changed: 77 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,55 +7,87 @@
77
88
Description: Create the Phsae 1 pixel DRnR plots
99
10-
Implementation:
11-
<Notes on implementation>
10+
Implementation: Introduce some computation over the PixelPhase1 residuals distributions
1211
*/
1312
//
1413
// Original Author: Alessandro Rossi
1514
// Created: 25th May 2021
1615
//
1716
//
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
2426
#include "DQM/SiPixelCommon/interface/SiPixelFolderOrganizer.h"
27+
#include "DQMServices/Core/interface/DQMEDHarvester.h"
2528
#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
3329
#include "DataFormats/DetId/interface/DetId.h"
30+
#include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h"
31+
#include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h"
3432
#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
3533
#include "DataFormats/TrackerCommon/interface/PixelBarrelName.h"
36-
#include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h"
3734
#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"
4549

4650
using namespace std;
4751
using namespace edm;
4852

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+
4982
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")) {
5187
LogInfo("PixelDQM") << "SiPixelPhase1ResidualsExtra::SiPixelPhase1ResidualsExtra: Got DQM BackEnd interface" << endl;
52-
topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
53-
minHits_ = conf_.getParameter<int>("MinHits");
5488
}
5589

5690
SiPixelPhase1ResidualsExtra::~SiPixelPhase1ResidualsExtra() {
57-
// do anything here that needs to be done at desctruction time
58-
// (e.g. close files, deallocate resources etc.)
5991
LogInfo("PixelDQM") << "SiPixelPhase1ResidualsExtra::~SiPixelPhase1ResidualsExtra: Destructor" << endl;
6092
}
6193

@@ -292,13 +324,13 @@ void SiPixelPhase1ResidualsExtra::fillMEs(DQMStore::IBooker& iBooker, DQMStore::
292324

293325
for (std::string layer : {"1", "2", "3", "4"}) {
294326
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);
296328
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);
298330
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);
300332
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);
302334

303335
if (me_x == nullptr || me_y == nullptr || me2_x == nullptr || me2_y == nullptr) {
304336
edm::LogWarning("SiPixelPhase1ResidualsExtra")
@@ -388,13 +420,13 @@ void SiPixelPhase1ResidualsExtra::fillMEs(DQMStore::IBooker& iBooker, DQMStore::
388420
//PXForward separating outer and inner modules as well as positive and negative side
389421
for (std::string ring : {"1", "2"}) {
390422
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);
392424
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);
394426
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);
396428
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);
398430

399431
if (me_x == nullptr || me_y == nullptr || me2_x == nullptr || me2_y == nullptr) {
400432
edm::LogWarning("SiPixelPhase1ResidualsExtra")
@@ -472,5 +504,14 @@ void SiPixelPhase1ResidualsExtra::fillMEs(DQMStore::IBooker& iBooker, DQMStore::
472504
}
473505
}
474506

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+
475516
//define this as a plug-in
476517
DEFINE_FWK_MODULE(SiPixelPhase1ResidualsExtra);

DQM/SiPixelPhase1Track/python/SiPixelPhase1ResidualsExtra_cfi.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33

44
SiPixelPhase1ResidualsExtra = DQMEDHarvester("SiPixelPhase1ResidualsExtra",
55
TopFolderName = cms.string('PixelPhase1/Tracks/ResidualsExtra'),
6+
InputFolderName = cms.string('PixelPhase1/Tracks'),
67
MinHits = cms.int32(30)
78
)

DQMOffline/Trigger/python/SiPixel_OfflineMonitoring_HistogramManager_cfi.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
hltDefaultHistoTrack = DefaultHistoTrack.clone(
2424
topFolderName= "HLT/Pixel/TrackClusters"
2525
)
26+
hltDefaultHistoTrackResiduals = DefaultHistoTrack.clone(
27+
topFolderName= "HLT/Pixel/Tracks"
28+
)
2629

2730
hltStandardSpecificationPixelmapProfile = [#produces pixel map with the mean (TProfile)
2831
Specification(PerLayer2D)

DQMOffline/Trigger/python/SiPixel_OfflineMonitoring_TrackResiduals_cff.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from DQMOffline.Trigger.SiPixel_OfflineMonitoring_HistogramManager_cfi import *
55

66
# order is important and it should follow ordering in hltSiPixelPhase1ClustersConf VPSet
7-
hltSiPixelPhase1TrackResidualsResidualsX = hltDefaultHistoTrack.clone(
7+
hltSiPixelPhase1TrackResidualsResidualsX = hltDefaultHistoTrackResiduals.clone(
88
name = "residual_x",
99
title = "Track Residuals X",
1010
range_min = -0.1, range_max = 0.1, range_nbins = 100,
@@ -36,7 +36,7 @@
3636
xlabel = "(y_rec - y_pred) [cm]",
3737
)
3838

39-
hltSiPixelPhase1TrackResidualsResOnEdgeX = hltDefaultHistoTrack.clone(
39+
hltSiPixelPhase1TrackResidualsResOnEdgeX = hltDefaultHistoTrackResiduals.clone(
4040
name = "residual_OnEdge_x",
4141
title = "Track Residuals X (OnEdge Clusters)",
4242
range_min = -0.1, range_max = 0.1, range_nbins = 100,
@@ -57,7 +57,7 @@
5757
)
5858

5959

60-
hltSiPixelPhase1TrackResidualsResOtherBadX = hltDefaultHistoTrack.clone(
60+
hltSiPixelPhase1TrackResidualsResOtherBadX = hltDefaultHistoTrackResiduals.clone(
6161
name = "residual_OtherBad_x",
6262
title = "Track Residuals X (OtherBad Clusters)",
6363
range_min = -0.1, range_max = 0.1, range_nbins = 100,
@@ -78,7 +78,7 @@
7878
)
7979

8080

81-
hltSiPixelPhase1TrackNormResX = hltDefaultHistoTrack.clone(
81+
hltSiPixelPhase1TrackNormResX = hltDefaultHistoTrackResiduals.clone(
8282
topFolderName= cms.string("HLT/Pixel/Tracks/ResidualsExtra"),
8383
name = "NormRes_x",
8484
title = "Normalized Residuals X",
@@ -100,7 +100,7 @@
100100
xlabel = "(y_rec - y_pred)/y_err",
101101
)
102102

103-
hltSiPixelPhase1TrackDRnRX = hltDefaultHistoTrack.clone(
103+
hltSiPixelPhase1TrackDRnRX = hltDefaultHistoTrackResiduals.clone(
104104
topFolderName= cms.string("HLT/Pixel/Tracks/ResidualsExtra"),
105105
name = "DRnR_x",
106106
title = "Distribution of RMS of Normalized Residuals X",
@@ -149,5 +149,6 @@
149149

150150
hltSiPixelPhase1ResidualsExtra = DQMEDHarvester("SiPixelPhase1ResidualsExtra",
151151
TopFolderName = cms.string('HLT/Pixel/Tracks/ResidualsExtra'),
152+
InputFolderName = cms.string('HLT/Pixel/Tracks'),
152153
MinHits = cms.int32(30)
153154
)

0 commit comments

Comments
 (0)