00001 #ifndef MuonIsolation_Cuts_H 00002 #define MuonIsolation_Cuts_H 00003 00004 #include "RecoMuon/MuonIsolation/interface/Range.h" 00005 #include <vector> 00006 #include <string> 00007 00008 namespace edm { class ParameterSet; } 00009 00010 namespace muonisolation { 00011 00012 class Cuts { 00013 public: 00014 00015 struct CutSpec { muonisolation::Range<double> etaRange; double conesize; double threshold; }; 00016 00018 Cuts(){} 00019 00021 Cuts(const edm::ParameterSet & pset); 00022 00024 Cuts( const std::vector<double> & etaBounds, 00025 const std::vector<double> & coneSizes, 00026 const std::vector<double> & thresholds); 00027 00028 const CutSpec & operator()(double eta) const; 00029 00030 const CutSpec & operator[](unsigned int i) const {return theCuts[i];}; 00031 00032 unsigned int size() {return theCuts.size();}; 00033 00034 std::string print() const; 00035 00036 private: 00037 void init( 00038 const std::vector<double> & etaBounds, 00039 const std::vector<double> & coneSizes, 00040 const std::vector<double> & thresholds); 00041 00042 std::vector<CutSpec> theCuts; 00043 }; 00044 00045 } 00046 #endif