CMS 3D CMS Logo

IsoDepositVetos.h
Go to the documentation of this file.
1 #ifndef DataFormats_MuonReco_IsoDepositVetos_h
2 #define DataFormats_MuonReco_IsoDepositVetos_h
3 
6 
7 namespace reco {
8  namespace isodeposit {
9  class ConeVeto : public AbsVeto {
10  public:
11  ConeVeto(Direction dir, double dr) : vetoDir_(dir), dR2_(dr * dr) {}
12  ConeVeto(const reco::IsoDeposit::Veto& veto) : vetoDir_(veto.vetoDir), dR2_(veto.dR * veto.dR) {}
13  bool veto(double eta, double phi, float value) const override;
14  void centerOn(double eta, double phi) override;
15 
16  private:
18  float dR2_;
19  };
20 
21  class ThresholdVeto : public AbsVeto {
22  public:
23  ThresholdVeto(double threshold) : threshold_(threshold) {}
24  bool veto(double eta, double phi, float value) const override;
25  void centerOn(double eta, double phi) override;
26 
27  private:
28  float threshold_;
29  };
30 
32  public:
33  ThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
34  bool veto(double eta, double phi, float value) const override;
35  void centerOn(double eta, double phi) override;
36 
37  private:
38  float threshold_;
39  };
40 
41  class AbsThresholdVeto : public AbsVeto {
42  public:
43  AbsThresholdVeto(double threshold) : threshold_(threshold) {}
44  bool veto(double eta, double phi, float value) const override;
45  void centerOn(double eta, double phi) override;
46 
47  private:
48  float threshold_;
49  };
50 
52  public:
53  AbsThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
54  bool veto(double eta, double phi, float value) const override;
55  void centerOn(double eta, double phi) override;
56 
57  private:
58  float threshold_;
59  };
60 
61  class ConeThresholdVeto : public AbsVeto {
62  public:
64  : vetoDir_(dir), dR2_(dr * dr), threshold_(threshold) {}
65  bool veto(double eta, double phi, float value) const override;
66  void centerOn(double eta, double phi) override;
67 
68  private:
70  float dR2_;
71  float threshold_;
72  };
73 
74  class AngleConeVeto : public AbsVeto {
75  public:
76  AngleConeVeto(const math::XYZVectorD& dir, double angle);
77  AngleConeVeto(Direction dir, double angle);
78  bool veto(double eta, double phi, float value) const override;
79  void centerOn(double eta, double phi) override;
80 
81  private:
83  float cosTheta_;
84  };
85 
86  class AngleCone : public AbsVeto {
87  public:
88  AngleCone(const math::XYZVectorD& dir, double angle);
89  AngleCone(Direction dir, double angle);
90  bool veto(double eta, double phi, float value) const override;
91  void centerOn(double eta, double phi) override;
92 
93  private:
95  float cosTheta_;
96  };
97 
98  class RectangularEtaPhiVeto : public AbsVeto {
99  public:
100  RectangularEtaPhiVeto(const math::XYZVectorD& dir, double etaMin, double etaMax, double phiMin, double phiMax);
101  RectangularEtaPhiVeto(Direction dir, double etaMin, double etaMax, double phiMin, double phiMax);
102  bool veto(double eta, double phi, float value) const override;
103  void centerOn(double eta, double phi) override;
104 
105  private:
107  double etaMin_, etaMax_, phiMin_, phiMax_;
108  };
109 
110  } // namespace isodeposit
111 } // namespace reco
112 #endif
ConeVeto(const reco::IsoDeposit::Veto &veto)
bool veto(double eta, double phi, float value) const override
Return "true" if a deposit at specific (eta,phi) with that value must be vetoed in the sum...
void centerOn(double eta, double phi) override
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
ConeVeto(Direction dir, double dr)
Definition: value.py:1
ConeThresholdVeto(Direction dir, double dr, double threshold)
fixed size matrix
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11