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  private:
17  };
18 
19  class ThresholdVeto : public AbsVeto {
20  public:
21  ThresholdVeto(double threshold) : threshold_(threshold) {}
22  bool veto(double eta, double phi, float value) const override ;
23  void centerOn(double eta, double phi) override ;
24  private:
25  float threshold_;
26  };
27 
29  public:
30  ThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
31  bool veto(double eta, double phi, float value) const override ;
32  void centerOn(double eta, double phi) override ;
33  private:
34  float threshold_;
35  };
36 
37  class AbsThresholdVeto : public AbsVeto {
38  public:
39  AbsThresholdVeto(double threshold) : threshold_(threshold) {}
40  bool veto(double eta, double phi, float value) const override ;
41  void centerOn(double eta, double phi) override ;
42  private:
43  float threshold_;
44  };
45 
47  public:
48  AbsThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
49  bool veto(double eta, double phi, float value) const override ;
50  void centerOn(double eta, double phi) override ;
51  private:
52  float threshold_;
53  };
54 
55  class ConeThresholdVeto : public AbsVeto {
56  public:
57  ConeThresholdVeto(Direction dir, double dr, double threshold) : vetoDir_(dir), dR2_(dr*dr), threshold_(threshold) {}
58  bool veto(double eta, double phi, float value) const override ;
59  void centerOn(double eta, double phi) override ;
60  private:
61  Direction vetoDir_; float dR2_; float threshold_;
62  };
63 
64  class AngleConeVeto : public AbsVeto {
65  public:
66  AngleConeVeto(const math::XYZVectorD& dir, double angle) ;
67  AngleConeVeto(Direction dir, double angle) ;
68  bool veto(double eta, double phi, float value) const override ;
69  void centerOn(double eta, double phi) override ;
70  private:
71  math::XYZVectorD vetoDir_; float cosTheta_;
72  };
73 
74  class AngleCone : public AbsVeto {
75  public:
76  AngleCone(const math::XYZVectorD& dir, double angle) ;
77  AngleCone(Direction dir, double angle) ;
78  bool veto(double eta, double phi, float value) const override ;
79  void centerOn(double eta, double phi) override ;
80  private:
81  math::XYZVectorD coneDir_; float cosTheta_;
82  };
83 
84  class RectangularEtaPhiVeto : public AbsVeto {
85  public:
86  RectangularEtaPhiVeto(const math::XYZVectorD& dir, double etaMin, double etaMax, double phiMin, double phiMax) ;
87  RectangularEtaPhiVeto(Direction dir, double etaMin, double etaMax, double phiMin, double phiMax) ;
88  bool veto(double eta, double phi, float value) const override ;
89  void centerOn(double eta, double phi) override ;
90  private:
92  double etaMin_, etaMax_, phiMin_, phiMax_;
93  };
94 
95  }
96 }
97 #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
dbl *** dir
Definition: mlp_gen.cc:35
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11