29 #include "classlib/utils/StringList.h" 30 #include "classlib/utils/StringOps.h" 53 #include "TProfile2D.h" 54 #include "TObjString.h" 64 edm::LuminosityBlockCache<meedm::Void>,
65 edm::EndLuminosityBlockProducer,
67 edm::one::SharedResources> {
103 std::string MsgLoggerCat =
"MEtoEDMConverter_MEtoEDMConverter";
116 edm::LogInfo(MsgLoggerCat) <<
"\n===============================\n" 117 <<
"Initialized as EDProducer with parameter values:\n" 118 <<
" Name = " <<
fName <<
"\n" 121 <<
" Path = " <<
path <<
"\n" 122 <<
"===============================\n";
129 sName =
fName +
"Run";
145 sName =
fName +
"Lumi";
161 consumesMany<DQMToken, edm::InLumi>();
162 consumesMany<DQMToken, edm::InRun>();
163 usesResource(
"DQMStore");
165 static_assert(
sizeof(int64_t) ==
sizeof(
long long),
"type int64_t is not the same length as long long");
174 return std::shared_ptr<meedm::Void>();
186 return std::shared_ptr<meedm::Void>();
198 std::string MsgLoggerCat =
"MEtoEDMConverter_putData";
201 edm::LogInfo(MsgLoggerCat) <<
"\nStoring MEtoEDM dataformat histograms.";
204 std::vector<MonitorElement*>::iterator mmi, mme;
207 unsigned int n1F = 0;
208 unsigned int n1S = 0;
209 unsigned int n1D = 0;
210 unsigned int n1I = 0;
211 unsigned int n2F = 0;
212 unsigned int n2S = 0;
213 unsigned int n2D = 0;
214 unsigned int n2I = 0;
215 unsigned int n3F = 0;
216 unsigned int nProf = 0;
217 unsigned int nProf2 = 0;
218 unsigned int nDouble = 0;
219 unsigned int nInt64 = 0;
220 unsigned int nString = 0;
222 for (mmi =
items.begin(), mme =
items.end(); mmi != mme; ++mmi) {
227 if (iLumiOnly && !
me->getLumiFlag())
229 if (!iLumiOnly &&
me->getLumiFlag())
232 switch (
me->kind()) {
290 edm::LogError(MsgLoggerCat) <<
"ERROR: The DQM object '" <<
me->getFullname()
291 <<
"' is neither a ROOT object nor a recognised " 292 <<
"simple object.\n";
298 std::unique_ptr<MEtoEDM<double> > pOutDouble(
new MEtoEDM<double>(nDouble));
299 std::unique_ptr<MEtoEDM<TString> > pOutString(
new MEtoEDM<TString>(nString));
300 std::unique_ptr<MEtoEDM<TH1F> > pOut1(
new MEtoEDM<TH1F>(n1F));
301 std::unique_ptr<MEtoEDM<TH1S> > pOut1s(
new MEtoEDM<TH1S>(n1S));
302 std::unique_ptr<MEtoEDM<TH1D> > pOut1d(
new MEtoEDM<TH1D>(n1D));
303 std::unique_ptr<MEtoEDM<TH1I> > pOut1i(
new MEtoEDM<TH1I>(n1I));
304 std::unique_ptr<MEtoEDM<TH2F> > pOut2(
new MEtoEDM<TH2F>(n2F));
305 std::unique_ptr<MEtoEDM<TH2S> > pOut2s(
new MEtoEDM<TH2S>(n2S));
306 std::unique_ptr<MEtoEDM<TH2D> > pOut2d(
new MEtoEDM<TH2D>(n2D));
307 std::unique_ptr<MEtoEDM<TH2I> > pOut2i(
new MEtoEDM<TH2I>(n2I));
308 std::unique_ptr<MEtoEDM<TH3F> > pOut3(
new MEtoEDM<TH3F>(n3F));
312 for (mmi =
items.begin(), mme =
items.end(); mmi != mme; ++mmi) {
318 assert(iLumiOnly ==
me->getLumiFlag());
321 switch (
me->kind()) {
323 pOutInt->putMEtoEdmObject(
me->getFullname(),
me->getIntValue());
327 pOutDouble->putMEtoEdmObject(
me->getFullname(),
me->getFloatValue());
331 pOutString->putMEtoEdmObject(
me->getFullname(),
me->getStringValue());
335 pOut1->putMEtoEdmObject(
me->getFullname(), *
me->getTH1F());
339 pOut1s->putMEtoEdmObject(
me->getFullname(), *
me->getTH1S());
343 pOut1d->putMEtoEdmObject(
me->getFullname(), *
me->getTH1D());
347 pOut1i->putMEtoEdmObject(
me->getFullname(), *
me->getTH1I());
351 pOut2->putMEtoEdmObject(
me->getFullname(), *
me->getTH2F());
355 pOut2s->putMEtoEdmObject(
me->getFullname(), *
me->getTH2S());
359 pOut2d->putMEtoEdmObject(
me->getFullname(), *
me->getTH2D());
363 pOut2i->putMEtoEdmObject(
me->getFullname(), *
me->getTH2I());
367 pOut3->putMEtoEdmObject(
me->getFullname(), *
me->getTH3F());
371 pOutProf->putMEtoEdmObject(
me->getFullname(), *
me->getTProfile());
375 pOutProf2->putMEtoEdmObject(
me->getFullname(), *
me->getTProfile2D());
379 edm::LogError(MsgLoggerCat) <<
"ERROR: The DQM object '" <<
me->getFullname()
380 <<
"' is neither a ROOT object nor a recognised " 381 <<
"simple object.\n";
390 sName =
fName +
"Lumi";
392 sName =
fName +
"Run";
397 iPutTo.put(
std::move(pOutDouble), sName);
398 iPutTo.put(
std::move(pOutString), sName);
LuminosityBlockNumber_t luminosityBlock() const
dqm::legacy::DQMStore DQMStore
~MEtoEDMConverter() override
Log< level::Error, false > LogError
void endRunProduce(edm::Run &, const edm::EventSetup &) override
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
std::vector< uint32_t > TagList
T getUntrackedParameter(std::string const &, T const &) const
void produce(edm::Event &, const edm::EventSetup &) override
std::shared_ptr< meedm::Void > globalBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) const override
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
std::shared_ptr< meedm::Void > globalBeginRun(edm::Run const &, const edm::EventSetup &) const override
void meBookerGetter(iFunc f)
#define DEFINE_FWK_MODULE(type)
void globalEndRun(edm::Run const &, const edm::EventSetup &) override
Log< level::Info, false > LogInfo
LuminosityBlockID id() const
std::map< int, int > iCount
dqm::legacy::MonitorElement MonitorElement
MEtoEDMConverter(const edm::ParameterSet &)
void putData(DQMStore::IGetter &g, T &iPutTo, bool iLumiOnly, uint32_t run, uint32_t lumi)
void globalEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
void endLuminosityBlockProduce(edm::LuminosityBlock &, const edm::EventSetup &) override