-
Notifications
You must be signed in to change notification settings - Fork 4.4k
/
Copy pathOnlineBeamMonitor.h
73 lines (64 loc) · 3.04 KB
/
OnlineBeamMonitor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef DQM_BeamMonitor_OnlineBeamMonitor_h
#define DQM_BeamMonitor_OnlineBeamMonitor_h
/** \class OnlineBeamMonitor
* *
* \author Simone Gennai INFN/Bicocca
*/
// C++
#include <map>
#include <vector>
#include <string>
// CMS
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/ESGetToken.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
#include "DataFormats/Provenance/interface/LuminosityBlockID.h"
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h"
#include "CondFormats/BeamSpotObjects/interface/BeamSpotOnlineObjects.h"
#include "CondFormats/DataRecord/interface/BeamSpotOnlineLegacyObjectsRcd.h"
#include "CondFormats/DataRecord/interface/BeamSpotOnlineHLTObjectsRcd.h"
#include "CondFormats/DataRecord/interface/BeamSpotTransientObjectsRcd.h"
namespace onlinebeammonitor {
struct NoCache {};
} // namespace onlinebeammonitor
class OnlineBeamMonitor : public DQMOneEDAnalyzer<edm::LuminosityBlockCache<onlinebeammonitor::NoCache>> {
public:
OnlineBeamMonitor(const edm::ParameterSet&);
static void fillDescriptions(edm::ConfigurationDescriptions&);
protected:
void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
std::shared_ptr<onlinebeammonitor::NoCache> globalBeginLuminosityBlock(const edm::LuminosityBlock& iLumi,
const edm::EventSetup& iSetup) const override;
void globalEndLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override;
void dqmEndRun(edm::Run const&, edm::EventSetup const&) override;
private:
//Typedefs
// BF,BS...
typedef std::map<std::string, reco::BeamSpot> BeamSpotContainer;
// x,y,z,sigmax(y,z)... [run,lumi] Histo name
typedef std::map<std::string, std::map<std::string, std::map<std::string, MonitorElement*>>> HistosContainer;
// x,y,z,sigmax(y,z)... [run,lumi] Histo name
typedef std::map<std::string, std::map<std::string, std::map<std::string, int>>> PositionContainer;
//Parameters
std::string monitorName_;
edm::ESGetToken<BeamSpotObjects, BeamSpotTransientObjectsRcd> bsTransientToken_;
edm::ESGetToken<BeamSpotOnlineObjects, BeamSpotOnlineHLTObjectsRcd> bsHLTToken_;
edm::ESGetToken<BeamSpotOnlineObjects, BeamSpotOnlineLegacyObjectsRcd> bsLegacyToken_;
//Service variables
int numberOfValuesToSave_;
mutable int numberOfProcessedLumis_;
mutable std::vector<int> processedLumis_;
// MonitorElements:
MonitorElement* bsChoice_;
//Containers
mutable BeamSpotContainer beamSpotsMap_;
HistosContainer histosMap_;
PositionContainer positionsMap_;
std::vector<std::string> varNamesV_; //x,y,z,sigmax(y,z)
std::multimap<std::string, std::string> histoByCategoryNames_; //run, lumi
};
#endif