Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:04

0001 #ifndef MuonIsolation_Cuts_H
0002 #define MuonIsolation_Cuts_H
0003 
0004 #include "RecoMuon/MuonIsolation/interface/Range.h"
0005 #include <vector>
0006 #include <string>
0007 
0008 namespace edm {
0009   class ParameterSet;
0010 }
0011 
0012 namespace muonisolation {
0013 
0014   class Cuts {
0015   public:
0016     struct CutSpec {
0017       muonisolation::Range<double> etaRange;
0018       double conesize;
0019       double threshold;
0020     };
0021 
0022     /// dummy constructor
0023     Cuts() {}
0024 
0025     /// ctor by PSet
0026     Cuts(const edm::ParameterSet& pset);
0027 
0028     /// constructor from valid parameters
0029     Cuts(const std::vector<double>& etaBounds,
0030          const std::vector<double>& coneSizes,
0031          const std::vector<double>& thresholds);
0032 
0033     const CutSpec& operator()(double eta) const;
0034 
0035     const CutSpec& operator[](unsigned int i) const { return theCuts[i]; };
0036 
0037     unsigned int size() { return theCuts.size(); };
0038 
0039     std::string print() const;
0040 
0041   private:
0042     void init(const std::vector<double>& etaBounds,
0043               const std::vector<double>& coneSizes,
0044               const std::vector<double>& thresholds);
0045 
0046     std::vector<CutSpec> theCuts;
0047   };
0048 
0049 }  // namespace muonisolation
0050 #endif