CMS 3D CMS Logo

RPCRecHitValidClient.cc
Go to the documentation of this file.
2 
4 
7 
8 using namespace std;
9 
11 
13  subDir_ = pset.getParameter<std::string>("subDir");
14 }
15 
17  booker.setCurrentFolder(subDir_);
18  MEP me_rollEfficiencyBarrel_eff =
19  booker.book1D("RollEfficiencyBarrel_eff", "Roll efficiency in Barrel;Efficiency [%]", 50 + 2, -2, 100 + 2);
20  MEP me_rollEfficiencyEndcap_eff =
21  booker.book1D("RollEfficiencyEndcap_eff", "Roll efficiency in Endcap;Efficiency [%]", 50 + 2, -2, 100 + 2);
22  MEP me_rollEfficiencyStatCutOffBarrel_eff =
23  booker.book1D("RollEfficiencyCutOffBarrel_eff",
24  "Roll efficiency in Barrel without low stat chamber;Efficiency [%]",
25  50 + 2,
26  -2,
27  100 + 2);
28  MEP me_rollEfficiencyStatCutOffEndcap_eff =
29  booker.book1D("RollEfficiencyCutOffEndcap_eff",
30  "Roll efficiency in Endcap without low stat chamber;Efficiency [%]",
31  50 + 2,
32  -2,
33  100 + 2);
34 
35  const double maxNoise = 1e-7;
36  MEP me_rollNoiseBarrel_noise = booker.book1D("RollNoiseBarrel_noise",
37  "Roll noise in Barrel;Noise level [Event^{-1}cm^{-2}]",
38  25 + 2,
39  -maxNoise / 25,
40  maxNoise + maxNoise / 25);
41  MEP me_rollNoiseEndcap_noise = booker.book1D("RollNoiseEndcap_noise",
42  "Roll noise in Endcap;Noise level [Event^{-1}cm^{-2}]",
43  25 + 2,
44  -maxNoise / 25,
45  maxNoise + maxNoise / 25);
46 
47  MEP me_matchOccupancyBarrel_detId = getter.get(subDir_ + "/Occupancy/MatchOccupancyBarrel_detId");
48  MEP me_matchOccupancyEndcap_detId = getter.get(subDir_ + "/Occupancy/MatchOccupancyEndcap_detId");
49  MEP me_refOccupancyBarrel_detId = getter.get(subDir_ + "/Occupancy/RefOccupancyBarrel_detId");
50  MEP me_refOccupancyEndcap_detId = getter.get(subDir_ + "/Occupancy/RefOccupancyEndcap_detId");
51 
52  if (me_matchOccupancyBarrel_detId and me_refOccupancyBarrel_detId) {
53  TH1 *h_matchOccupancyBarrel_detId = me_matchOccupancyBarrel_detId->getTH1();
54  TH1 *h_refOccupancyBarrel_detId = me_refOccupancyBarrel_detId->getTH1();
55 
56  for (int bin = 1, nBin = h_matchOccupancyBarrel_detId->GetNbinsX(); bin <= nBin; ++bin) {
57  const double nRec = h_matchOccupancyBarrel_detId->GetBinContent(bin);
58  const double nRef = h_refOccupancyBarrel_detId->GetBinContent(bin);
59 
60  const double eff = nRef ? nRec / nRef * 100 : -1;
61 
62  me_rollEfficiencyBarrel_eff->Fill(eff);
63  if (nRef >= 20)
64  me_rollEfficiencyStatCutOffBarrel_eff->Fill(eff);
65  }
66  }
67 
68  if (me_matchOccupancyEndcap_detId and me_refOccupancyEndcap_detId) {
69  TH1 *h_matchOccupancyEndcap_detId = me_matchOccupancyEndcap_detId->getTH1();
70  TH1 *h_refOccupancyEndcap_detId = me_refOccupancyEndcap_detId->getTH1();
71 
72  for (int bin = 1, nBin = h_matchOccupancyEndcap_detId->GetNbinsX(); bin <= nBin; ++bin) {
73  const double nRec = h_matchOccupancyEndcap_detId->GetBinContent(bin);
74  const double nRef = h_refOccupancyEndcap_detId->GetBinContent(bin);
75 
76  const double eff = nRef ? nRec / nRef * 100 : -1;
77 
78  me_rollEfficiencyEndcap_eff->Fill(eff);
79  if (nRef >= 20)
80  me_rollEfficiencyStatCutOffEndcap_eff->Fill(eff);
81  }
82  }
83 
84  MEP me_eventCount = getter.get(subDir_ + "/Occupancy/EventCount");
85  const double nEvent = me_eventCount ? me_eventCount->getTH1()->GetBinContent(1) : 1;
86  MEP me_noiseOccupancyBarrel_detId = getter.get(subDir_ + "/Occupancy/NoiseOccupancyBarrel_detId");
87  MEP me_rollAreaBarrel_detId = getter.get(subDir_ + "/Occupancy/RollAreaBarrel_detId");
88  if (me_noiseOccupancyBarrel_detId and me_rollAreaBarrel_detId) {
89  TH1 *h_noiseOccupancyBarrel_detId = me_noiseOccupancyBarrel_detId->getTH1();
90  TH1 *h_rollAreaBarrel_detId = me_rollAreaBarrel_detId->getTH1();
91 
92  for (int bin = 1, nBin = h_noiseOccupancyBarrel_detId->GetNbinsX(); bin <= nBin; ++bin) {
93  const double noiseCount = h_noiseOccupancyBarrel_detId->GetBinContent(bin);
94  const double area = h_rollAreaBarrel_detId->GetBinContent(bin);
95  const double noiseLevel = area > 0 ? noiseCount / area / nEvent : 0;
96  if (noiseLevel == 0.)
97  me_rollNoiseBarrel_noise->Fill(-maxNoise / 50); // Fill underflow bin if noise is exactly zero
98  else
99  me_rollNoiseBarrel_noise->Fill(std::min(noiseLevel, maxNoise));
100  }
101  }
102 
103  MEP me_noiseOccupancyEndcap_detId = getter.get(subDir_ + "/Occupancy/NoiseOccupancyEndcap_detId");
104  MEP me_rollAreaEndcap_detId = getter.get(subDir_ + "/Occupancy/RollAreaEndcap_detId");
105  if (me_noiseOccupancyEndcap_detId and me_rollAreaEndcap_detId) {
106  TH1 *h_noiseOccupancyEndcap_detId = me_noiseOccupancyEndcap_detId->getTH1();
107  TH1 *h_rollAreaEndcap_detId = me_rollAreaEndcap_detId->getTH1();
108 
109  for (int bin = 1, nBin = h_noiseOccupancyEndcap_detId->GetNbinsX(); bin <= nBin; ++bin) {
110  const double noiseCount = h_noiseOccupancyEndcap_detId->GetBinContent(bin);
111  const double area = h_rollAreaEndcap_detId->GetBinContent(bin);
112  const double noiseLevel = area > 0 ? noiseCount / area / nEvent : 0;
113  if (noiseLevel == 0)
114  me_rollNoiseEndcap_noise->Fill(-maxNoise / 50); // Fill underflow bin if noise if exactly zero
115  else
116  me_rollNoiseEndcap_noise->Fill(std::min(noiseLevel, maxNoise));
117  }
118  }
119 }
120 
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
MessageLogger.h
ESHandle.h
min
T min(T a, T b)
Definition: MathUtil.h:58
RPCRecHitValidClient::RPCRecHitValidClient
RPCRecHitValidClient(const edm::ParameterSet &pset)
Definition: RPCRecHitValidClient.cc:12
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
PFElectronDQMAnalyzer_cfi.nBin
nBin
Definition: PFElectronDQMAnalyzer_cfi.py:25
RPCRecHitValidClient.h
nEvent
int nEvent
Definition: myFastSimVal.cc:45
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
MEP
RPCRecHitValidClient::MonitorElement * MEP
Definition: RPCRecHitValidClient.cc:10
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
RPCRecHitValidClient
Definition: RPCRecHitValidClient.h:17
dqm::impl::MonitorElement::getTH1
virtual TH1 * getTH1()
Definition: MonitorElement.cc:969
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:47
newFWLiteAna.bin
bin
Definition: newFWLiteAna.py:161
std
Definition: JetResolutionObject.h:76
dqm::implementation::IGetter
Definition: DQMStore.h:484
fftjetproducer_cfi.noiseLevel
noiseLevel
Definition: fftjetproducer_cfi.py:90
dqm::implementation::IGetter::get
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:651
dqm::implementation::IBooker
Definition: DQMStore.h:43
custom_jme_cff.area
area
Definition: custom_jme_cff.py:140
RPCRecHitValidClient::dqmEndJob
void dqmEndJob(DQMStore::IBooker &booker, DQMStore::IGetter &getter) override
Definition: RPCRecHitValidClient.cc:16
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37