CMS 3D CMS Logo

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