31 : monitorName_(ps.getUntrackedParameter<
string>(
"MonitorName")),
35 numberOfValuesToSave_(0) {
62 histosMap_[itV][itM.first][itM.second] =
nullptr;
84 for (
auto& itMM : itM.second) {
85 if (itMM.first !=
"run") {
86 for (
auto& itMMM : itMM.second) {
87 name =
string(
"h") + itM.first + itMMM.first;
88 title = itM.first +
"_{0} " + itMMM.first;
89 if (itMM.first ==
"lumi") {
91 itMMM.second = ibooker.
book1D(name, title, lastLumi - firstLumi + 1, firstLumi - 0.5, lastLumi + 0.5);
94 LogInfo(
"OnlineBeamMonitorClient") <<
"Unrecognized category " << itMM.first;
96 if (itMMM.second !=
nullptr) {
97 if (itMMM.first.find(
'-') != string::npos) {
98 itMMM.second->setAxisTitle(
string(
"#Delta ") + itM.first +
"_{0} (cm)", 2);
100 itMMM.second->setAxisTitle(itM.first +
"_{0} (cm)", 2);
102 itMMM.second->setAxisTitle(
"Lumisection", 1);
113 "BS Choice (+1): HLT - (-1): Legacy - (-10): Fake BS - (0): No Transient ",
114 lastLumi - firstLumi + 1,
137 auto const& spotDB = *bsHLTHandle;
143 for (
int i = 0;
i < 7; ++
i) {
144 for (
int j = 0;
j < 7; ++
j) {
154 aSpot->setEmittanceX(spotDB.emittanceX());
155 aSpot->setEmittanceY(spotDB.emittanceY());
156 aSpot->setbetaStar(spotDB.betaStar());
158 if (spotDB.beamType() == 2) {
169 auto const& spotDB = *bsLegacyHandle;
174 for (
int i = 0;
i < 7; ++
i) {
175 for (
int j = 0;
j < 7; ++
j) {
181 BeamSpot(apoint, spotDB.sigmaZ(), spotDB.dxdz(), spotDB.dydz(), spotDB.beamWidthX(),
matrix);
186 aSpot->setEmittanceX(spotDB.emittanceX());
187 aSpot->setEmittanceY(spotDB.emittanceY());
188 aSpot->setbetaStar(spotDB.betaStar());
190 if (spotDB.beamType() == 2) {
201 auto const& spotDB = *bsTransientHandle;
207 for (
int i = 0;
i < 7; ++
i) {
208 for (
int j = 0;
j < 7; ++
j) {
214 BeamSpot(apoint, spotDB.sigmaZ(), spotDB.dxdz(), spotDB.dydz(), spotDB.beamWidthX(),
matrix);
219 aSpot->setEmittanceX(spotDB.emittanceX());
220 aSpot->setEmittanceY(spotDB.emittanceY());
221 aSpot->setbetaStar(spotDB.betaStar());
223 if (spotDB.beamType() == 2) {
258 map<std::string, pair<double, double> > resultsMap;
259 vector<pair<double, double> > vertexResults;
266 resultsMap[itBS.first] = pair<double, double>(itBS.second.x0(), itBS.second.x0Error());
267 }
else if (itV ==
"y") {
268 resultsMap[itBS.first] = pair<double, double>(itBS.second.y0(), itBS.second.y0Error());
269 }
else if (itV ==
"z") {
270 resultsMap[itBS.first] = pair<double, double>(itBS.second.z0(), itBS.second.z0Error());
271 }
else if (itV ==
"sigmaX") {
272 resultsMap[itBS.first] = pair<double, double>(itBS.second.BeamWidthX(), itBS.second.BeamWidthXError());
273 }
else if (itV ==
"sigmaY") {
274 resultsMap[itBS.first] = pair<double, double>(itBS.second.BeamWidthY(), itBS.second.BeamWidthYError());
275 }
else if (itV ==
"sigmaZ") {
276 resultsMap[itBS.first] = pair<double, double>(itBS.second.sigmaZ(), itBS.second.sigmaZ0Error());
278 LogInfo(
"OnlineBeamMonitor") <<
"The histosMap_ has been built with the name " << itV
279 <<
" that I can't recognize!";
285 if ((histo =
histosMap_[itV][itM.first][itM.second]) ==
nullptr)
287 if (itM.second ==
"Lumibased BeamSpotHLT") {
288 if (resultsMap.find(
"HLT") != resultsMap.end()) {
292 }
else if (itM.second ==
"Lumibased BeamSpotLegacy") {
293 if (resultsMap.find(
"Legacy") != resultsMap.end()) {
297 }
else if (itM.second ==
"Lumibased BeamSpotTransient") {
298 if (resultsMap.find(
"Transient") != resultsMap.end()) {
303 LogInfo(
"OnlineBeamMonitor") <<
"The histosMap_ have a histogram named " << itM.second
304 <<
" that I can't recognize in this loop!";
315 const double bigNumber = 1000000.;
319 bsChoice_->
getTH1()->GetXaxis()->SetRangeUser(firstLumi - 0.5, lastLumi + 0.5);
321 for (
auto& itHH : itH.second) {
322 double min = bigNumber;
323 double max = -bigNumber;
324 if (itHH.first !=
"run") {
325 for (
auto& itHHH : itHH.second) {
326 if (itHHH.second !=
nullptr) {
327 for (
int bin = 1;
bin <= itHHH.second->getTH1()->GetNbinsX();
bin++) {
328 if (itHHH.second->getTH1()->GetBinError(
bin) != 0 || itHHH.second->getTH1()->GetBinContent(
bin) != 0) {
329 if (itHHH.first ==
"Lumibased BeamSpotHLT" || itHHH.first ==
"Lumibased BeamSpotLegacy" ||
330 itHHH.first ==
"Lumibased BeamSpotTransient") {
331 if (min > itHHH.second->getTH1()->GetBinContent(
bin)) {
332 min = itHHH.second->getTH1()->GetBinContent(
bin);
334 if (max < itHHH.second->getTH1()->GetBinContent(
bin)) {
335 max = itHHH.second->getTH1()->GetBinContent(
bin);
338 LogInfo(
"OnlineBeamMonitorClient") <<
"The histosMap_ have a histogram named " << itHHH.first
339 <<
" that I can't recognize in this loop!";
345 for (
auto& itHHH : itHH.second) {
346 if (itHHH.second !=
nullptr) {
347 if (itHHH.first ==
"Lumibased BeamSpotHLT" || itHHH.first ==
"Lumibased BeamSpotLegacy" ||
348 itHHH.first ==
"Lumibased BeamSpotTransient") {
349 if ((max == -bigNumber && min == bigNumber) || max - min == 0) {
350 itHHH.second->getTH1()->SetMinimum(itHHH.second->getTH1()->GetMinimum() - 0.01);
351 itHHH.second->getTH1()->SetMaximum(itHHH.second->getTH1()->GetMaximum() + 0.01);
353 itHHH.second->getTH1()->SetMinimum(min - 0.1 * (max - min));
354 itHHH.second->getTH1()->SetMaximum(max + 0.1 * (max - min));
357 LogInfo(
"OnlineBeamMonitorClient")
358 <<
"The histosMap_ have a histogram named " << itHHH.first <<
" that I can't recognize in this loop!";
360 itHHH.second->getTH1()->GetXaxis()->SetRangeUser(firstLumi - 0.5, lastLumi + 0.5);
LuminosityBlockID id() const
math::Error< dimension >::type CovarianceMatrix
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::multimap< std::string, std::string > histoByCategoryNames_
virtual void setCurrentFolder(std::string const &fullpath)
#define DEFINE_FWK_MODULE(type)
edm::ESGetToken< BeamSpotOnlineObjects, BeamSpotOnlineLegacyObjectsRcd > bsLegacyToken_
void dqmEndRun(edm::Run const &, edm::EventSetup const &) override
math::XYZPoint Point
point in the space
BeamSpotContainer beamSpotsMap_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< std::string > varNamesV_
void setBeamWidthY(double v)
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
OnlineBeamMonitor(const edm::ParameterSet &)
void globalEndLuminosityBlock(const edm::LuminosityBlock &iLumi, const edm::EventSetup &iSetup) override
std::vector< int > processedLumis_
Log< level::Info, false > LogInfo
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * bsChoice_
edm::ESGetToken< BeamSpotOnlineObjects, BeamSpotOnlineHLTObjectsRcd > bsHLTToken_
static void fillDescriptions(edm::ConfigurationDescriptions &)
HistosContainer histosMap_
edm::ESGetToken< BeamSpotObjects, BeamSpotTransientObjectsRcd > bsTransientToken_
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
std::shared_ptr< onlinebeammonitor::NoCache > globalBeginLuminosityBlock(const edm::LuminosityBlock &iLumi, const edm::EventSetup &iSetup) const override
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)