CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/DataFormats/RecoCandidate/interface/IsoDepositVetos.h

Go to the documentation of this file.
00001 #ifndef DataFormats_MuonReco_IsoDepositVetos_h
00002 #define DataFormats_MuonReco_IsoDepositVetos_h
00003 
00004 #include "DataFormats/Math/interface/Vector3D.h"
00005 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00006 
00007 namespace reco {
00008     namespace isodeposit {
00009         class ConeVeto : public AbsVeto { 
00010             public:
00011                 ConeVeto(Direction dir, double dr) : vetoDir_(dir), dR2_(dr*dr) {}
00012                 ConeVeto(const reco::IsoDeposit::Veto &veto) : vetoDir_(veto.vetoDir), dR2_(veto.dR*veto.dR) {}
00013                 virtual bool veto(double eta, double phi, float value) const ;
00014                 virtual void centerOn(double eta, double phi) ;
00015             private:
00016                 Direction vetoDir_; float dR2_; 
00017         };
00018 
00019         class ThresholdVeto : public AbsVeto { 
00020             public:
00021                 ThresholdVeto(double threshold) : threshold_(threshold) {}
00022                 virtual bool veto(double eta, double phi, float value) const ;
00023                 virtual void centerOn(double eta, double phi) ;
00024             private:
00025                 float threshold_;
00026         };
00027 
00028         class ThresholdVetoFromTransverse : public AbsVeto {
00029             public:
00030                 ThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
00031                 virtual bool veto(double eta, double phi, float value) const ;
00032                 virtual void centerOn(double eta, double phi) ;
00033             private:
00034                 float threshold_;
00035         };
00036 
00037         class AbsThresholdVeto : public AbsVeto { 
00038             public:
00039                 AbsThresholdVeto(double threshold) : threshold_(threshold) {}
00040                 virtual bool veto(double eta, double phi, float value) const ;
00041                 virtual void centerOn(double eta, double phi) ;
00042             private:
00043                 float threshold_;
00044         };
00045 
00046         class AbsThresholdVetoFromTransverse : public AbsVeto {
00047             public:
00048                 AbsThresholdVetoFromTransverse(double threshold) : threshold_(threshold) {}
00049                 virtual bool veto(double eta, double phi, float value) const ;
00050                 virtual void centerOn(double eta, double phi) ;
00051             private:
00052                 float threshold_;
00053         };
00054 
00055         class ConeThresholdVeto : public AbsVeto { 
00056             public:
00057                 ConeThresholdVeto(Direction dir, double dr, double threshold) : vetoDir_(dir), dR2_(dr*dr), threshold_(threshold) {}
00058                 virtual bool veto(double eta, double phi, float value) const ;
00059                 virtual void centerOn(double eta, double phi) ;
00060             private:
00061                 Direction vetoDir_; float dR2_; float threshold_;
00062         };
00063 
00064         class AngleConeVeto : public AbsVeto { 
00065             public:
00066                 AngleConeVeto(math::XYZVectorD dir, double angle) ;
00067                 AngleConeVeto(Direction dir, double angle) ;
00068                 virtual bool veto(double eta, double phi, float value) const ;
00069                 virtual void centerOn(double eta, double phi) ;
00070             private:
00071                 math::XYZVectorD vetoDir_; float cosTheta_; 
00072         };
00073 
00074         class AngleCone : public AbsVeto { 
00075             public:
00076                 AngleCone(math::XYZVectorD dir, double angle) ;
00077                 AngleCone(Direction dir, double angle) ;
00078                 virtual bool veto(double eta, double phi, float value) const ;
00079                 virtual void centerOn(double eta, double phi) ;
00080             private:
00081                 math::XYZVectorD coneDir_; float cosTheta_; 
00082         };
00083 
00084         class RectangularEtaPhiVeto : public AbsVeto { 
00085             public:
00086                 RectangularEtaPhiVeto(math::XYZVectorD dir, double etaMin, double etaMax, double phiMin, double phiMax) ;
00087                 RectangularEtaPhiVeto(Direction dir, double etaMin, double etaMax, double phiMin, double phiMax) ;
00088                 virtual bool veto(double eta, double phi, float value) const ;
00089                 virtual void centerOn(double eta, double phi) ;
00090             private:
00091                 Direction vetoDir_;
00092                 double etaMin_, etaMax_, phiMin_, phiMax_;
00093         };
00094 
00095     } 
00096 }
00097 #endif