13 #include "classlib/utils/StringList.h" 14 #include "classlib/utils/StringOps.h" 21 std::string MsgLoggerCat =
"MEtoEDMConverter_MEtoEDMConverter";
35 edm::LogInfo(MsgLoggerCat) <<
"\n===============================\n" 36 <<
"Initialized as EDProducer with parameter values:\n" 37 <<
" Name = " <<
fName <<
"\n" 38 <<
" Verbosity = " << verbosity <<
"\n" 39 <<
" Frequency = " << frequency <<
"\n" 40 <<
" Path = " << path <<
"\n" 41 <<
"===============================\n";
48 sName =
fName +
"Run";
62 sName =
fName +
"Lumi";
76 consumesMany<DQMToken, edm::InLumi>();
77 consumesMany<DQMToken, edm::InRun>();
78 usesResource(
"DQMStore");
80 static_assert(
sizeof(int64_t) ==
sizeof(
long long),
"type int64_t is not the same length as long long");
95 return std::shared_ptr<meedm::Void>();
107 return std::shared_ptr<meedm::Void>();
119 std::string MsgLoggerCat =
"MEtoEDMConverter_putData";
122 edm::LogInfo(MsgLoggerCat) <<
"\nStoring MEtoEDM dataformat histograms.";
125 std::vector<MonitorElement*>::iterator mmi, mme;
126 std::vector<MonitorElement*>
items(
129 unsigned int n1F = 0;
130 unsigned int n1S = 0;
131 unsigned int n1D = 0;
132 unsigned int n2F = 0;
133 unsigned int n2S = 0;
134 unsigned int n2D = 0;
135 unsigned int n3F = 0;
136 unsigned int nProf = 0;
137 unsigned int nProf2 = 0;
138 unsigned int nDouble = 0;
139 unsigned int nInt64 = 0;
140 unsigned int nString = 0;
142 for (mmi =
items.begin(), mme =
items.end(); mmi != mme; ++mmi) {
152 switch (me->
kind()) {
203 <<
"' is neither a ROOT object nor a recognised " 204 <<
"simple object.\n";
210 std::unique_ptr<MEtoEDM<double> > pOutDouble(
new MEtoEDM<double>(nDouble));
211 std::unique_ptr<MEtoEDM<TString> > pOutString(
new MEtoEDM<TString>(nString));
212 std::unique_ptr<MEtoEDM<TH1F> > pOut1(
new MEtoEDM<TH1F>(n1F));
213 std::unique_ptr<MEtoEDM<TH1S> > pOut1s(
new MEtoEDM<TH1S>(n1S));
214 std::unique_ptr<MEtoEDM<TH1D> > pOut1d(
new MEtoEDM<TH1D>(n1D));
215 std::unique_ptr<MEtoEDM<TH2F> > pOut2(
new MEtoEDM<TH2F>(n2F));
216 std::unique_ptr<MEtoEDM<TH2S> > pOut2s(
new MEtoEDM<TH2S>(n2S));
217 std::unique_ptr<MEtoEDM<TH2D> > pOut2d(
new MEtoEDM<TH2D>(n2D));
218 std::unique_ptr<MEtoEDM<TH3F> > pOut3(
new MEtoEDM<TH3F>(n3F));
222 for (mmi =
items.begin(), mme =
items.end(); mmi != mme; ++mmi) {
233 switch (me->
kind()) {
284 <<
"' is neither a ROOT object nor a recognised " 285 <<
"simple object.\n";
294 sName =
fName +
"Lumi";
296 sName =
fName +
"Run";
301 iPutTo.put(
std::move(pOutDouble), sName);
302 iPutTo.put(
std::move(pOutString), sName);
LuminosityBlockID id() const
virtual TH2D * getTH2D() const
T getUntrackedParameter(std::string const &, T const &) const
virtual TH2F * getTH2F() const
std::shared_ptr< meedm::Void > globalBeginRun(edm::Run const &, const edm::EventSetup &) const override
void meBookerGetter(iFunc f)
virtual TH1F * getTH1F() const
virtual int64_t getIntValue() const
Kind kind() const
Get the type of the monitor element.
~MEtoEDMConverter() override
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
virtual TH1S * getTH1S() const
const std::string getFullname() const
get full name of ME including Pathname
void produce(edm::Event &, const edm::EventSetup &) override
std::shared_ptr< meedm::Void > globalBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) const override
void globalEndRun(edm::Run const &, const edm::EventSetup &) override
virtual TProfile2D * getTProfile2D() const
virtual TH2S * getTH2S() const
virtual TProfile * getTProfile() const
virtual TH1D * getTH1D() const
LuminosityBlockNumber_t luminosityBlock() const
bool getLumiFlag() const
true if ME is meant to be stored for each luminosity section
virtual double getFloatValue() const
virtual const std::string & getStringValue() const
MEtoEDMConverter(const edm::ParameterSet &)
void putData(DQMStore::IGetter &g, T &iPutTo, bool iLumiOnly, uint32_t run, uint32_t lumi)
virtual TH3F * getTH3F() const
std::vector< MonitorElement * > getAllContents(std::string const &path, uint32_t runNumber=0, uint32_t lumi=0)
void endLuminosityBlockProduce(edm::LuminosityBlock &, const edm::EventSetup &) override