26 void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &)
override {}
34 void MakeHitNumberRatios(
unsigned int id, DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);
37 DQMStore::IBooker &ibooker,
38 DQMStore::IGetter &igetter,
39 bool &rpPlotInitialized);
63 MonitorElement *activity = igetter.get(path +
"/activity in planes (2D)");
69 const string hit_ratio_name =
"hit ratio in hot spot";
70 MonitorElement *hit_ratio = igetter.get(path +
"/" + hit_ratio_name);
72 if (hit_ratio ==
nullptr) {
73 ibooker.setCurrentFolder(path);
76 hit_ratio = ibooker.book1D(hit_ratio_name, title +
";plane;N_hits(320<strip<440) / N_hits(all)", 10, -0.5, 9.5);
82 TAxis *y_axis = activity->
getTH2F()->GetYaxis();
83 for (
int bix = 1; bix <= activity->
getNbinsX(); ++bix) {
84 double S_full = 0., S_sel = 0.;
85 for (
int biy = 1; biy <= activity->
getNbinsY(); ++biy) {
87 double s = y_axis->GetBinCenter(biy);
91 if (s > 320. && s < 440.)
95 double r = (S_full > 0.) ? S_sel / S_full : 0.;
104 DQMStore::IBooker &ibooker,
105 DQMStore::IGetter &igetter,
106 bool &rpPlotInitialized) {
113 MonitorElement *efficiency_num = igetter.get(path +
"/efficiency num");
114 MonitorElement *efficiency_den = igetter.get(path +
"/efficiency den");
116 if (!efficiency_num || !efficiency_den)
120 const string efficiency_name =
"efficiency";
123 if (efficiency ==
nullptr) {
126 TAxis *axis = efficiency_den->
getTH1()->GetXaxis();
127 ibooker.setCurrentFolder(path);
128 efficiency = ibooker.book1D(
129 efficiency_name, title +
";track position (mm)", axis->GetNbins(), axis->GetXmin(), axis->GetXmax());
131 efficiency->
getTH1F()->Reset();
137 const string rp_efficiency_name =
"plane efficiency";
138 MonitorElement *rp_efficiency = igetter.get(path +
"/" + rp_efficiency_name);
140 if (rp_efficiency ==
nullptr) {
143 TAxis *axis = efficiency_den->
getTH1()->GetXaxis();
144 ibooker.setCurrentFolder(path);
145 rp_efficiency = ibooker.book2D(rp_efficiency_name,
146 title +
";plane;track position (mm)",
153 rpPlotInitialized =
true;
155 if (!rpPlotInitialized)
156 rp_efficiency->
getTH2F()->Reset();
157 rpPlotInitialized =
true;
161 for (
signed int bi = 1; bi <= efficiency->
getNbinsX(); bi++) {
166 double p = num / den;
167 double p_unc =
sqrt(p * (1. - p) / den);
171 int pl_bi = detId.
plane() + 1;
182 DQMStore::IGetter &igetter,
186 for (
unsigned int arm = 0; arm < 2; arm++) {
188 for (
unsigned int st = 0; st < 3; st += 2) {
190 for (
unsigned int rp = 0; rp < 6; ++rp) {
205 bool rpPlotInitialized =
false;
208 for (
unsigned int pl = 0; pl < 10; ++pl) {
Detector ID class for TOTEM Si strip detectors.
virtual TH2F * getTH2F() const
virtual int getNbinsY() const
get # of bins in Y-axis
virtual TH1F * getTH1F() const
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
~TotemRPDQMHarvester() override
#define DEFINE_FWK_MODULE(type)
virtual int getNbinsX() const
get # of bins in X-axis
void MakeHitNumberRatios(unsigned int id, DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
void rpName(std::string &name, NameFlag flag=nFull) const
void dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, const edm::LuminosityBlock &, const edm::EventSetup &) override
virtual double getBinContent(int binx) const
get content of bin (1-D)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
void MakePlaneEfficiencyHistograms(unsigned int id, DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, bool &rpPlotInitialized)
Base class for CTPPS detector IDs.
void planeName(std::string &name, NameFlag flag=nFull) const
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
TotemRPDQMHarvester(const edm::ParameterSet &ps)
virtual TH1 * getTH1() const