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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#ifndef DataFormats_MuonReco_IsoDepositVetos_h
#define DataFormats_MuonReco_IsoDepositVetos_h
#include "DataFormats/Math/interface/Vector3D.h"
#include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
namespace reco {
namespace isodeposit {
class ConeVeto : public AbsVeto {
public:
ConeVeto(Direction dir, double dr) : vetoDir_(dir), dR2_(dr * dr) {}
ConeVeto(const reco::IsoDeposit::Veto& veto) : vetoDir_(veto.vetoDir), dR2_(veto.dR * veto.dR) {}
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
Direction vetoDir_;
float dR2_;
};
class ThresholdVeto : public AbsVeto {
public:
ThresholdVeto(double threshold) : threshold_(threshold) {}
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
float threshold_;
};
class ThresholdVetoFromTransverse : public AbsVeto {
public:
ThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
float threshold_;
};
class AbsThresholdVeto : public AbsVeto {
public:
AbsThresholdVeto(double threshold) : threshold_(threshold) {}
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
float threshold_;
};
class AbsThresholdVetoFromTransverse : public AbsVeto {
public:
AbsThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
float threshold_;
};
class ConeThresholdVeto : public AbsVeto {
public:
ConeThresholdVeto(Direction dir, double dr, double threshold)
: vetoDir_(dir), dR2_(dr * dr), threshold_(threshold) {}
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
Direction vetoDir_;
float dR2_;
float threshold_;
};
class AngleConeVeto : public AbsVeto {
public:
AngleConeVeto(const math::XYZVectorD& dir, double angle);
AngleConeVeto(Direction dir, double angle);
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
math::XYZVectorD vetoDir_;
float cosTheta_;
};
class AngleCone : public AbsVeto {
public:
AngleCone(const math::XYZVectorD& dir, double angle);
AngleCone(Direction dir, double angle);
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
math::XYZVectorD coneDir_;
float cosTheta_;
};
class RectangularEtaPhiVeto : public AbsVeto {
public:
RectangularEtaPhiVeto(const math::XYZVectorD& dir, double etaMin, double etaMax, double phiMin, double phiMax);
RectangularEtaPhiVeto(Direction dir, double etaMin, double etaMax, double phiMin, double phiMax);
bool veto(double eta, double phi, float value) const override;
void centerOn(double eta, double phi) override;
private:
Direction vetoDir_;
double etaMin_, etaMax_, phiMin_, phiMax_;
};
} // namespace isodeposit
} // namespace reco
#endif
|