CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
HGCalRecHitsClient.cc
Go to the documentation of this file.
1 #include <unistd.h>
2 #include <iostream>
3 #include <fstream>
4 #include <vector>
5 
8 
10 
13 
21 
26 
28 private:
29  //member data
32  unsigned int layers_;
33 
34 public:
35  explicit HGCalRecHitsClient(const edm::ParameterSet &);
36  ~HGCalRecHitsClient() override {}
37 
38  void beginRun(const edm::Run &run, const edm::EventSetup &c) override;
39  void dqmEndJob(DQMStore::IBooker &ib, DQMStore::IGetter &ig) override;
41 
42  int recHitsEndjob(const std::vector<MonitorElement *> &hcalMEs);
43 };
44 
46  : nameDetector_(iConfig.getParameter<std::string>("DetectorName")),
47  verbosity_(iConfig.getUntrackedParameter<int>("Verbosity", 0)) {}
48 
50  if (nameDetector_ == "HCal") {
52  iSetup.get<HcalRecNumberingRecord>().get(pHRNDC);
53  const HcalDDDRecConstants *hcons = &(*pHRNDC);
54  layers_ = hcons->getMaxDepth(1);
55  } else {
57  iSetup.get<IdealGeometryRecord>().get(nameDetector_, pHGDC);
58  const HGCalDDDConstants &hgcons_ = (*pHGDC);
59  layers_ = hgcons_.layers(true);
60  }
61 }
62 
64 
66  ig.setCurrentFolder("/");
67  if (verbosity_ > 0)
68  edm::LogVerbatim("HGCalValidation") << "\nrunClient";
69  std::vector<MonitorElement *> hgcalMEs;
70  std::vector<std::string> fullDirPath = ig.getSubdirs();
71 
72  for (unsigned int i = 0; i < fullDirPath.size(); i++) {
73  if (verbosity_ > 0)
74  edm::LogVerbatim("HGCalValidation") << "\nfullPath: " << fullDirPath.at(i);
75  ig.setCurrentFolder(fullDirPath.at(i));
76  std::vector<std::string> fullSubDirPath = ig.getSubdirs();
77 
78  for (unsigned int j = 0; j < fullSubDirPath.size(); j++) {
79  if (verbosity_ > 1)
80  edm::LogVerbatim("HGCalValidation") << "fullSubPath: " << fullSubDirPath.at(j);
81  std::string nameDirectory = "HGCAL/HGCalRecHitsV/" + nameDetector_;
82  if (strcmp(fullSubDirPath.at(j).c_str(), nameDirectory.c_str()) == 0) {
83  hgcalMEs = ig.getContents(fullSubDirPath.at(j));
84  if (verbosity_ > 1)
85  edm::LogVerbatim("HGCalValidation") << "hgcalMES size : " << hgcalMEs.size();
86  if (!recHitsEndjob(hgcalMEs))
87  edm::LogWarning("HGCalValidation") << "\nError in RecHitsEndjob!";
88  }
89  }
90  }
91 }
92 
93 int HGCalRecHitsClient::recHitsEndjob(const std::vector<MonitorElement *> &hgcalMEs) {
94  std::vector<MonitorElement *> energy_;
95  std::vector<MonitorElement *> EtaPhi_Plus_;
96  std::vector<MonitorElement *> EtaPhi_Minus_;
97  std::vector<MonitorElement *> HitOccupancy_Plus_;
98  std::vector<MonitorElement *> HitOccupancy_Minus_;
99  std::vector<MonitorElement *> MeanHitOccupancy_Plus_;
100  std::vector<MonitorElement *> MeanHitOccupancy_Minus_;
101 
102  std::ostringstream name;
103  double nevent;
104  int nbinsx, nbinsy;
105 
106  for (unsigned int ilayer = 0; ilayer < layers_; ilayer++) {
107  name.str("");
108  name << "energy_layer_" << ilayer;
109  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
110  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
111  energy_.push_back(hgcalMEs[ih]);
112  }
113  }
114 
115  //normalization
116  nevent = energy_.at(ilayer)->getEntries();
117  nbinsx = energy_.at(ilayer)->getNbinsX();
118  for (int i = 1; i <= nbinsx; i++) {
119  double binValue = energy_.at(ilayer)->getBinContent(i) / nevent;
120  energy_.at(ilayer)->setBinContent(i, binValue);
121  }
122 
123  //EtaPhi 2d plots
124  name.str("");
125  name << "EtaPhi_Plus_"
126  << "layer_" << ilayer;
127  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
128  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
129  EtaPhi_Plus_.push_back(hgcalMEs[ih]);
130  }
131  }
132 
133  name.str("");
134  name << "EtaPhi_Minus_"
135  << "layer_" << ilayer;
136  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
137  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
138  EtaPhi_Minus_.push_back(hgcalMEs[ih]);
139  }
140  }
141 
142  //normalization EtaPhi
143  nevent = EtaPhi_Plus_.at(ilayer)->getEntries();
144  nbinsx = EtaPhi_Plus_.at(ilayer)->getNbinsX();
145  nbinsy = EtaPhi_Plus_.at(ilayer)->getNbinsY();
146  for (int i = 1; i <= nbinsx; ++i) {
147  for (int j = 1; j <= nbinsy; ++j) {
148  double binValue = EtaPhi_Plus_.at(ilayer)->getBinContent(i, j) / nevent;
149  EtaPhi_Plus_.at(ilayer)->setBinContent(i, j, binValue);
150  }
151  }
152 
153  nevent = EtaPhi_Minus_.at(ilayer)->getEntries();
154  nbinsx = EtaPhi_Minus_.at(ilayer)->getNbinsX();
155  nbinsy = EtaPhi_Plus_.at(ilayer)->getNbinsY();
156  for (int i = 1; i <= nbinsx; ++i) {
157  for (int j = 1; j <= nbinsy; ++j) {
158  double binValue = EtaPhi_Minus_.at(ilayer)->getBinContent(i, j) / nevent;
159  EtaPhi_Minus_.at(ilayer)->setBinContent(i, j, binValue);
160  }
161  }
162 
163  //HitOccupancy
164  name.str("");
165  name << "HitOccupancy_Plus_layer_" << ilayer;
166  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
167  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
168  HitOccupancy_Plus_.push_back(hgcalMEs[ih]);
169  }
170  }
171 
172  name.str("");
173  name << "HitOccupancy_Minus_layer_" << ilayer;
174  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
175  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
176  HitOccupancy_Minus_.push_back(hgcalMEs[ih]);
177  }
178  }
179 
180  //normalization of hit occupancy histos
181  nevent = HitOccupancy_Plus_.at(ilayer)->getEntries();
182  nbinsx = HitOccupancy_Plus_.at(ilayer)->getNbinsX();
183  for (int i = 1; i <= nbinsx; ++i) {
184  double binValue = HitOccupancy_Plus_.at(ilayer)->getBinContent(i) / nevent;
185  HitOccupancy_Plus_.at(ilayer)->setBinContent(i, binValue);
186  }
187 
188  nevent = HitOccupancy_Minus_.at(ilayer)->getEntries();
189  nbinsx = HitOccupancy_Minus_.at(ilayer)->getNbinsX();
190  for (int i = 1; i <= nbinsx; ++i) {
191  double binValue = HitOccupancy_Minus_.at(ilayer)->getBinContent(i) / nevent;
192  HitOccupancy_Minus_.at(ilayer)->setBinContent(i, binValue);
193  }
194 
195  } //loop over layers
196 
197  name.str("");
198  name << "SUMOfRecHitOccupancy_Plus";
199  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
200  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
201  MeanHitOccupancy_Plus_.push_back(hgcalMEs[ih]);
202  unsigned int indx = MeanHitOccupancy_Plus_.size() - 1;
203  for (int ilayer = 0; ilayer < (int)layers_; ++ilayer) {
204  double meanVal = HitOccupancy_Plus_.at(ilayer)->getMean();
205  MeanHitOccupancy_Plus_[indx]->setBinContent(ilayer + 1, meanVal);
206  }
207  break;
208  }
209  }
210 
211  name.str("");
212  name << "SUMOfRecHitOccupancy_Plus";
213  for (unsigned int ih = 0; ih < hgcalMEs.size(); ih++) {
214  if (strcmp(hgcalMEs[ih]->getName().c_str(), name.str().c_str()) == 0) {
215  MeanHitOccupancy_Minus_.push_back(hgcalMEs[ih]);
216  unsigned indx = MeanHitOccupancy_Minus_.size() - 1;
217  for (int ilayer = 0; ilayer < (int)layers_; ++ilayer) {
218  double meanVal = HitOccupancy_Minus_.at(ilayer)->getMean();
219  MeanHitOccupancy_Minus_[indx]->setBinContent(ilayer + 1, meanVal);
220  }
221  break;
222  }
223  }
224 
225  return 1;
226 }
227 
229 
HGCalRecHitsClient::~HGCalRecHitsClient
~HGCalRecHitsClient() override
Definition: HGCalRecHitsClient.cc:36
DQMEDHarvester.h
nevent
int nevent
Definition: AMPTWrapper.h:84
Handle.h
mps_fire.i
i
Definition: mps_fire.py:355
HGCalRecHitsClient::verbosity_
int verbosity_
Definition: HGCalRecHitsClient.cc:31
HGCalRecHitsClient::recHitsEndjob
int recHitsEndjob(const std::vector< MonitorElement * > &hcalMEs)
Definition: HGCalRecHitsClient.cc:93
dqm::implementation::IGetter::getContents
virtual std::vector< dqm::harvesting::MonitorElement * > getContents(std::string const &path) const
Definition: DQMStore.cc:593
ESTransientHandle.h
MessageLogger.h
edm::Run
Definition: Run.h:45
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
DQMStore.h
dqm::implementation::IGetter::getSubdirs
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:678
HcalRecNumberingRecord.h
DDCompactView.h
HGCalDDDConstants
Definition: HGCalDDDConstants.h:25
HGCalRecHitsClient::HGCalRecHitsClient
HGCalRecHitsClient(const edm::ParameterSet &)
Definition: HGCalRecHitsClient.cc:45
MakerMacros.h
dqm::legacy::DQMStore::IBooker
dqm::implementation::IBooker IBooker
Definition: DQMStore.h:729
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Service.h
getName
TString getName(TString structure, int layer, TString geometry)
Definition: DMRtrends.cc:235
Run.h
edm::ESHandle
Definition: DTSurvey.h:22
HcalRecNumberingRecord
Definition: HcalRecNumberingRecord.h:23
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::LogWarning
Definition: MessageLogger.h:141
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
HGCalDDDConstants::layers
unsigned int layers(bool reco) const
Definition: HGCalDDDConstants.cc:558
LorentzVector.h
createfilelist.int
int
Definition: createfilelist.py:10
edm::LogVerbatim
Definition: MessageLogger.h:297
cuy.ib
ib
Definition: cuy.py:662
IdealGeometryRecord.h
edm::EventSetup
Definition: EventSetup.h:57
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
get
#define get
HGCalRecHitsClient::runClient_
virtual void runClient_(DQMStore::IBooker &ib, DQMStore::IGetter &ig)
Definition: HGCalRecHitsClient.cc:65
HGCalRecHitsClient::layers_
unsigned int layers_
Definition: HGCalRecHitsClient.cc:32
DQMEDHarvester
Definition: DQMEDHarvester.py:1
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
dqm::implementation::IGetter
Definition: DQMStore.h:484
HGCalRecHitsClient::dqmEndJob
void dqmEndJob(DQMStore::IBooker &ib, DQMStore::IGetter &ig) override
Definition: HGCalRecHitsClient.cc:63
HcalDDDRecConstants.h
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
HGCalRecHitsClient::beginRun
void beginRun(const edm::Run &run, const edm::EventSetup &c) override
Definition: HGCalRecHitsClient.cc:49
HGCalRecHitsClient::nameDetector_
std::string nameDetector_
Definition: HGCalRecHitsClient.cc:30
dqm::implementation::IBooker
Definition: DQMStore.h:43
HcalDDDRecConstants::getMaxDepth
int getMaxDepth(const int &type) const
Definition: HcalDDDRecConstants.h:88
HcalDDDRecConstants
Definition: HcalDDDRecConstants.h:23
HGCalDDDConstants.h
ParameterSet.h
dqm::legacy::DQMStore::IGetter
dqm::implementation::IGetter IGetter
Definition: DQMStore.h:730
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HGCalRecHitsClient
Definition: HGCalRecHitsClient.cc:27
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27