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
0023 Cuts() {}
0024
0025
0026 Cuts(const edm::ParameterSet& pset);
0027
0028
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 }
0050 #endif