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
|
#ifndef DQMOFFLINE_TRIGGER_EGHLTMONELEMWITHCUTEBEE
#define DQMOFFLINE_TRIGGER_EGHLTMONELEMWITHCUTEBEE
//struct: MonElemWithEBEE (Monitor Element Manger With Cut Barrel and Endcap)
//
//author: Sam Harper (July 2008)
//
//WARNING: interface is NOT final, please dont use this class for now without clearing it with me
// as I will change it and possibly break all your code
//
//aim: a monitor element which seperates transparently the objects into barrel and endcap
//
//implimentation: class simply has two MonElemWithCuts, one for endcap electrons, one for barrel electrons
// and fills them approprately. It assumes that the class passed in has a detEta function
// and uses 1.5 as the barrel,endcap descriminate
//
//
#include <cmath>
#include "DQMOffline/Trigger/interface/EgHLTMonElemWithCut.h"
namespace egHLT {
template <class T, typename varType>
class MonElemWithCutEBEE : public MonElemWithCutBase<T> {
private:
MonElemWithCut<T, varType> barrel_;
MonElemWithCut<T, varType> endcap_;
public:
MonElemWithCutEBEE(DQMStore::IBooker& iBooker,
const std::string& name,
const std::string& title,
int nrBins,
float min,
float max,
varType (T::*varFunc)() const)
: barrel_(iBooker, name + "_eb", "Barrel " + title, nrBins, min, max, varFunc, nullptr),
endcap_(iBooker, name + "_ee", "Endcap " + title, nrBins, min, max, varFunc, nullptr) {}
MonElemWithCutEBEE(DQMStore::IBooker& iBooker,
const std::string& name,
const std::string& title,
int nrBins,
float min,
float max,
varType (T::*varFunc)() const,
const EgHLTDQMCut<T>* cut)
: barrel_(iBooker, name + "_eb", "Barrel " + title, nrBins, min, max, varFunc, cut),
endcap_(iBooker, name + "_ee", "Endcap " + title, nrBins, min, max, varFunc, cut ? cut->clone() : nullptr) {}
~MonElemWithCutEBEE() override = default;
void fill(const T& obj, const OffEvt& evt, float weight) override;
};
} // namespace egHLT
template <class T, typename varType>
void egHLT::MonElemWithCutEBEE<T, varType>::fill(const T& obj, const OffEvt& evt, float weight) {
if (std::fabs(obj.detEta()) < 1.5)
barrel_.fill(obj, evt, weight);
else
endcap_.fill(obj, evt, weight);
}
#endif
|