CMS 3D CMS Logo

AlignmentRelCombIsoMuonSelector.cc
Go to the documentation of this file.
12 
14 public:
16  ~AlignmentRelCombIsoMuonSelector() override = default;
17 
18  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
19 
20 private:
21  bool filter(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
22 
24  const double relCombIsoCut_;
25  const bool useTrackerOnlyIsolation_; // New flag for tracker-only isolation
26  const bool filterEvents_;
27 };
28 
31  desc.add<edm::InputTag>("src", edm::InputTag("muons"))->setComment("Input muon collection");
32  desc.add<double>("relCombIsoCut", 0.15)->setComment("cut on the relative combined isolation");
33  desc.add<bool>("useTrackerOnlyIsolation", false)->setComment("use only tracker isolation");
34  desc.add<bool>("filter", true);
35  descriptions.addWithDefaultLabel(desc);
36 }
37 
39  : muonToken_(consumes<reco::MuonCollection>(iConfig.getParameter<edm::InputTag>("src"))),
40  relCombIsoCut_(iConfig.getParameter<double>("relCombIsoCut")),
41  useTrackerOnlyIsolation_(iConfig.getParameter<bool>("useTrackerOnlyIsolation")),
42  filterEvents_(iConfig.getParameter<bool>("filter")) {
43  produces<reco::MuonCollection>();
44 }
45 
48  iEvent.getByToken(muonToken_, muons);
49 
50  auto selectedMuons = std::make_unique<reco::MuonCollection>();
51 
52  for (const auto& muon : *muons) {
53  double relCombIso;
55  // Tracker-only isolation
56  relCombIso = muon.isolationR03().sumPt / muon.pt();
57  } else {
58  // Full combined isolation
59  relCombIso = (muon.isolationR03().sumPt + muon.isolationR03().emEt + muon.isolationR03().hadEt) / muon.pt();
60  }
61 
62  if (relCombIso < relCombIsoCut_) {
63  selectedMuons->push_back(muon);
64  }
65  }
66 
67  const bool passEvent = !selectedMuons->empty();
69 
70  // Apply the filter flag logic
71  return filterEvents_ ? passEvent : true;
72 }
73 
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
~AlignmentRelCombIsoMuonSelector() override=default
edm::EDGetTokenT< reco::MuonCollection > muonToken_
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
Definition: DiMuonV_cfg.py:214
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
bool filter(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
AlignmentRelCombIsoMuonSelector(const edm::ParameterSet &)
fixed size matrix
HLT enums.
def move(src, dest)
Definition: eostools.py:511