CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes
HLTTriMuonIsolation Class Reference

#include <HLTTriMuonIsolation.h>

Inheritance diagram for HLTTriMuonIsolation:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HLTTriMuonIsolation (const edm::ParameterSet &iConfig)
 
void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 
 ~HLTTriMuonIsolation () override=default
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Static Private Member Functions

template<typename T >
static bool ptComparer (const T &cand_1, const T &cand_2)
 

Private Attributes

edm::Handle< reco::RecoChargedCandidateCollectionAllMuCands
 
const edm::EDGetTokenT< reco::RecoChargedCandidateCollectionAllMuonsToken_
 
const double ChargedAbsIsoCut_
 
const double ChargedRelIsoCut_
 
const bool EnableAbsIso_
 
const bool EnableRelIso_
 
const double IsoConeSize_
 
edm::Handle< reco::TrackCollectionIsoTracks
 
const edm::EDGetTokenT< reco::TrackCollectionIsoTracksToken_
 
edm::Handle< trigger::TriggerFilterObjectWithRefsL3DiMuonsFilterCands
 
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefsL3DiMuonsFilterToken_
 
edm::Handle< reco::RecoChargedCandidateCollectionL3MuCands
 
const edm::EDGetTokenT< reco::RecoChargedCandidateCollectionL3MuonsToken_
 
const double MatchingConeSize_
 
const double MaxDZ_
 
const double MaxTriMuonMass_
 
const double MaxTriMuonRadius_
 
const double MinTriMuonMass_
 
const double Muon1PtCut_
 
const double Muon2PtCut_
 
const double Muon3PtCut_
 
edm::Handle< reco::RecoChargedCandidateRefPassedL3Muons
 
const int TriMuonAbsCharge_
 
const double TriMuonEtaCut_
 
const double TriMuonPtCut_
 
const double TwiceMuonMass_ = 2. * 0.1056583715
 

Additional Inherited Members

- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 23 of file HLTTriMuonIsolation.h.

Constructor & Destructor Documentation

◆ HLTTriMuonIsolation()

HLTTriMuonIsolation::HLTTriMuonIsolation ( const edm::ParameterSet iConfig)
inlineexplicit

Definition at line 67 of file HLTTriMuonIsolation.h.

68  : L3MuonsToken_(consumes<reco::RecoChargedCandidateCollection>(iConfig.getParameter<edm::InputTag>("L3MuonsSrc"))),
70  consumes<reco::RecoChargedCandidateCollection>(iConfig.getParameter<edm::InputTag>("AllMuonsSrc"))),
72  consumes<trigger::TriggerFilterObjectWithRefs>(iConfig.getParameter<edm::InputTag>("L3DiMuonsFilterSrc"))),
73  IsoTracksToken_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("IsoTracksSrc"))),
74  Muon1PtCut_(iConfig.getParameter<double>("Muon1PtCut")),
75  Muon2PtCut_(iConfig.getParameter<double>("Muon2PtCut")),
76  Muon3PtCut_(iConfig.getParameter<double>("Muon3PtCut")),
77  TriMuonPtCut_(iConfig.getParameter<double>("TriMuonPtCut")),
78  TriMuonEtaCut_(iConfig.getParameter<double>("TriMuonEtaCut")),
79  ChargedRelIsoCut_(iConfig.getParameter<double>("ChargedRelIsoCut")),
80  ChargedAbsIsoCut_(iConfig.getParameter<double>("ChargedAbsIsoCut")),
81  IsoConeSize_(iConfig.getParameter<double>("IsoConeSize")),
82  MatchingConeSize_(iConfig.getParameter<double>("MatchingConeSize")),
83  MinTriMuonMass_(iConfig.getParameter<double>("MinTriMuonMass")),
84  MaxTriMuonMass_(iConfig.getParameter<double>("MaxTriMuonMass")),
85  MaxTriMuonRadius_(iConfig.getParameter<double>("MaxTriMuonRadius")),
86  TriMuonAbsCharge_(iConfig.getParameter<int>("TriMuonAbsCharge")),
87  MaxDZ_(iConfig.getParameter<double>("MaxDZ")),
88  EnableRelIso_(iConfig.getParameter<bool>("EnableRelIso")),
89  EnableAbsIso_(iConfig.getParameter<bool>("EnableAbsIso")) {
90  //register products
91  produces<reco::CompositeCandidateCollection>("Taus");
92  produces<reco::CompositeCandidateCollection>("SelectedTaus");
93 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > AllMuonsToken_
const double MaxTriMuonMass_
const double MinTriMuonMass_
const double ChargedAbsIsoCut_
const double MatchingConeSize_
const double ChargedRelIsoCut_
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > L3MuonsToken_
const double MaxTriMuonRadius_
const edm::EDGetTokenT< reco::TrackCollection > IsoTracksToken_
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > L3DiMuonsFilterToken_

◆ ~HLTTriMuonIsolation()

HLTTriMuonIsolation::~HLTTriMuonIsolation ( )
overridedefault

Member Function Documentation

◆ fillDescriptions()

void HLTTriMuonIsolation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
inlinestatic

Definition at line 269 of file HLTTriMuonIsolation.h.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and HLT_2022v15_cff::InputTag.

269  {
271  desc.add<edm::InputTag>("L3MuonsSrc", edm::InputTag("hltIterL3FromL2MuonCandidates"));
272  desc.add<edm::InputTag>("AllMuonsSrc", edm::InputTag("hltGlbTrkMuonCands"));
273  desc.add<edm::InputTag>("L3DiMuonsFilterSrc", edm::InputTag("hltDiMuonForTau3MuDzFiltered0p3"));
274  desc.add<edm::InputTag>("IsoTracksSrc", edm::InputTag("hltIter2L3FromL2MuonMerged"));
275  desc.add<double>("Muon1PtCut", 5.);
276  desc.add<double>("Muon2PtCut", 3.);
277  desc.add<double>("Muon3PtCut", 0.);
278  desc.add<double>("TriMuonPtCut", 8.);
279  desc.add<double>("TriMuonEtaCut", 2.5);
280  desc.add<double>("ChargedAbsIsoCut", 3.0);
281  desc.add<double>("ChargedRelIsoCut", 0.1);
282  desc.add<double>("IsoConeSize", 0.5);
283  desc.add<double>("MatchingConeSize", 0.03);
284  desc.add<double>("MinTriMuonMass", 0.5);
285  desc.add<double>("MaxTriMuonMass", 2.8);
286  desc.add<double>("MaxTriMuonRadius", 0.6);
287  desc.add<int>("TriMuonAbsCharge", -1);
288  desc.add<double>("MaxDZ", 0.3);
289  desc.add<bool>("EnableRelIso", false);
290  desc.add<bool>("EnableAbsIso", true);
291  descriptions.add("hltTriMuonIsolationProducer", desc);
292 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ produce()

void HLTTriMuonIsolation::produce ( edm::StreamID  sid,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
inlineoverridevirtual

Implements edm::global::EDProducerBase.

Definition at line 95 of file HLTTriMuonIsolation.h.

References funct::abs(), AllMuCands, AllMuonsToken_, ALCARECOTkAlJpsiMuMu_cff::charge, ChargedAbsIsoCut_, ChargedRelIsoCut_, BPhysicsValidation_cfi::daughters, reco::deltaR2(), EnableAbsIso_, EnableRelIso_, trigger::TriggerRefsCollections::getObjects(), mps_fire::i, iEvent, infinity, IsoConeSize_, IsoTracks, IsoTracksToken_, dqmiolumiharvest::j, dqmdumpme::k, L3DiMuonsFilterCands, L3DiMuonsFilterToken_, L3MuCands, L3MuonsToken_, EgHLTOffHistBins_cfi::mass, MatchingConeSize_, MaxDZ_, MaxTriMuonMass_, MaxTriMuonRadius_, MinTriMuonMass_, eostools::move(), Muon1PtCut_, Muon2PtCut_, Muon3PtCut_, PassedL3Muons, DiDispStaMuonMonitor_cfi::pt, jetUpdater_cfi::sort, TtFullHadEvtBuilder_cfi::sumPt, metsig::tau, trigger::TriggerMuon, TriMuonAbsCharge_, TriMuonEtaCut_, TriMuonPtCut_, TwiceMuonMass_, and bphysicsOniaDQM_cfi::vertex.

95  {
96  std::unique_ptr<reco::CompositeCandidateCollection> Taus(new reco::CompositeCandidateCollection);
97  std::unique_ptr<reco::CompositeCandidateCollection> SelectedTaus(new reco::CompositeCandidateCollection);
98 
99  // Get the L3 muon candidates
101  iEvent.getByToken(L3MuonsToken_, L3MuCands);
102 
103  // Get the L3 muon candidates that passed the filter
106 
107  std::vector<reco::RecoChargedCandidateRef> PassedL3Muons;
109 
110  // Get the Trk + L3 muon candidates (after merging)
112  iEvent.getByToken(AllMuonsToken_, AllMuCands);
113 
114  // Get iso tracks
116  iEvent.getByToken(IsoTracksToken_, IsoTracks);
117 
118  if (AllMuCands->size() >= 3 && L3MuCands->size() >= 2) {
119  // Create the 3-muon candidates
120  // loop over L3/Trk muons and create all combinations
121  auto AllMuCands_end = AllMuCands->end();
122  for (auto i = AllMuCands->begin(); i != AllMuCands_end - 2; ++i) {
123  // check that muon_i passes the previous filter
124  bool passingPreviousFilter_1 = false;
125  for (const auto& imu : PassedL3Muons) {
126  if (reco::deltaR2(i->momentum(), imu->momentum()) < (MatchingConeSize_ * MatchingConeSize_))
127  passingPreviousFilter_1 = true;
128  }
129  for (auto j = i + 1; j != AllMuCands_end - 1; ++j) {
130  // check that muon_j passes the previous filter
131  bool passingPreviousFilter_2 = false;
132  for (const auto& jmu : PassedL3Muons) {
133  if (reco::deltaR2(j->momentum(), jmu->momentum()) < (MatchingConeSize_ * MatchingConeSize_))
134  passingPreviousFilter_2 = true;
135  }
136  // if, at this point, no muons passed the previous filter just skip to the next iteration
137  if (!(passingPreviousFilter_1 || passingPreviousFilter_2))
138  continue;
139  for (auto k = j + 1; k != AllMuCands_end; ++k) {
140  // check that muon_k passes the previous filter
141  bool passingPreviousFilter_3 = false;
142  for (const auto& kmu : PassedL3Muons) {
143  if (reco::deltaR2(k->momentum(), kmu->momentum()) < (MatchingConeSize_ * MatchingConeSize_))
144  passingPreviousFilter_3 = true;
145  }
146  // at least two muons must have passed the previous di-muon filter
147  if (!((passingPreviousFilter_1 & passingPreviousFilter_2) ||
148  (passingPreviousFilter_1 & passingPreviousFilter_3) ||
149  (passingPreviousFilter_2 & passingPreviousFilter_3)))
150  continue;
151 
152  // Create a composite candidate to be a tau
154 
155  // sort the muons by pt and add them to the tau
157  daughters.reserve(3);
158 
159  daughters.push_back(*i);
160  daughters.push_back(*j);
161  daughters.push_back(*k);
162 
163  std::sort(daughters.begin(), daughters.end(), ptComparer<reco::RecoChargedCandidate>);
164 
165  // Muon kinematic selections
166  if (daughters[0].pt() < Muon1PtCut_)
167  continue;
168  if (daughters[1].pt() < Muon2PtCut_)
169  continue;
170  if (daughters[2].pt() < Muon3PtCut_)
171  continue;
172 
173  // assign the tau its daughters
174  tau.addDaughter((daughters)[0], "Muon_1");
175  tau.addDaughter((daughters)[1], "Muon_2");
176  tau.addDaughter((daughters)[2], "Muon_3");
177 
178  // start building the tau
179  int charge = daughters[0].charge() + daughters[1].charge() + daughters[2].charge();
180  math::XYZTLorentzVectorD taup4 = daughters[0].p4() + daughters[1].p4() + daughters[2].p4();
181  int tauPdgId = charge > 0 ? 15 : -15;
182 
183  tau.setP4(taup4);
184  tau.setCharge(charge);
185  tau.setPdgId(tauPdgId);
186  tau.setVertex((daughters)[0].vertex()); // assign the leading muon vertex as tau vertex
187 
188  // the three muons must be close to each other in Z
189  if (std::abs(tau.daughter(0)->vz() - tau.vz()) > MaxDZ_)
190  continue;
191  if (std::abs(tau.daughter(1)->vz() - tau.vz()) > MaxDZ_)
192  continue;
193  if (std::abs(tau.daughter(2)->vz() - tau.vz()) > MaxDZ_)
194  continue;
195 
196  // require muons to be collimated
197  bool collimated = true;
198  for (auto const& idau : daughters) {
199  if (reco::deltaR2(tau.p4(), idau.p4()) > MaxTriMuonRadius_ * MaxTriMuonRadius_) {
200  collimated = false;
201  break;
202  }
203  }
204 
205  if (!collimated)
206  continue;
207 
208  // Tau kinematic selections
209  if (tau.pt() < TriMuonPtCut_)
210  continue;
211  if (tau.mass() < MinTriMuonMass_)
212  continue;
213  if (tau.mass() > MaxTriMuonMass_)
214  continue;
215  if (std::abs(tau.eta()) > TriMuonEtaCut_)
216  continue;
217 
218  // Tau charge selection
219  if ((std::abs(tau.charge()) != TriMuonAbsCharge_) & (TriMuonAbsCharge_ >= 0))
220  continue;
221 
222  // Sanity check against duplicates, di-muon masses must be > 2 * mass_mu
223  if ((tau.daughter(0)->p4() + tau.daughter(1)->p4()).mass() < TwiceMuonMass_)
224  continue;
225  if ((tau.daughter(0)->p4() + tau.daughter(2)->p4()).mass() < TwiceMuonMass_)
226  continue;
227  if ((tau.daughter(1)->p4() + tau.daughter(2)->p4()).mass() < TwiceMuonMass_)
228  continue;
229 
230  // a good tau, at last
231  Taus->push_back(tau);
232  }
233  }
234  }
235 
236  // Sort taus by pt
237  std::sort(Taus->begin(), Taus->end(), ptComparer<reco::CompositeCandidate>);
238 
239  // Loop over taus and further select by isolation
240  for (const auto& itau : *Taus) {
241  // remove the candidate pt from the iso sum
242  double sumPt = -itau.pt();
243 
244  // compute iso sum pT
245  for (const auto& itrk : *IsoTracks) {
246  if (reco::deltaR2(itrk.momentum(), itau.p4()) > IsoConeSize_ * IsoConeSize_)
247  continue;
248  if (std::abs(itrk.vz() - itau.vz()) > MaxDZ_)
249  continue;
250  sumPt += itrk.pt();
251  }
252 
253  // apply the isolation cut
255  double chRelIsoCut = EnableRelIso_ ? ChargedRelIsoCut_ * itau.pt() : std::numeric_limits<double>::infinity();
256 
257  if (!((sumPt < chAbsIsoCut) || (sumPt < chRelIsoCut)))
258  continue;
259 
260  SelectedTaus->push_back(itau);
261  }
262  }
263 
264  // finally put the vector of 3-muon candidates in the event
265  iEvent.put(std::move(Taus), "Taus");
266  iEvent.put(std::move(SelectedTaus), "SelectedTaus");
267 }
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > AllMuonsToken_
edm::Handle< reco::RecoChargedCandidateCollection > L3MuCands
edm::Handle< trigger::TriggerFilterObjectWithRefs > L3DiMuonsFilterCands
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:14
const double MaxTriMuonMass_
std::vector< CompositeCandidate > CompositeCandidateCollection
collection of Candidate objects
const double MinTriMuonMass_
int iEvent
Definition: GenABIO.cc:224
const double ChargedAbsIsoCut_
const double MatchingConeSize_
const double infinity
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::Handle< reco::TrackCollection > IsoTracks
std::vector< RecoChargedCandidate > RecoChargedCandidateCollection
collectin of RecoChargedCandidate objects
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
const double ChargedRelIsoCut_
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > L3MuonsToken_
edm::Handle< reco::RecoChargedCandidateCollection > AllMuCands
edm::Handle< reco::RecoChargedCandidateRef > PassedL3Muons
const double MaxTriMuonRadius_
def move(src, dest)
Definition: eostools.py:511
const edm::EDGetTokenT< reco::TrackCollection > IsoTracksToken_
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > L3DiMuonsFilterToken_

◆ ptComparer()

template<typename T >
static bool HLTTriMuonIsolation::ptComparer ( const T cand_1,
const T cand_2 
)
inlinestaticprivate

Definition at line 43 of file HLTTriMuonIsolation.h.

43  {
44  return cand_1.pt() > cand_2.pt();
45  }

Member Data Documentation

◆ AllMuCands

edm::Handle<reco::RecoChargedCandidateCollection> HLTTriMuonIsolation::AllMuCands
private

Definition at line 39 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ AllMuonsToken_

const edm::EDGetTokenT<reco::RecoChargedCandidateCollection> HLTTriMuonIsolation::AllMuonsToken_
private

Definition at line 32 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ ChargedAbsIsoCut_

const double HLTTriMuonIsolation::ChargedAbsIsoCut_
private

Definition at line 55 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ ChargedRelIsoCut_

const double HLTTriMuonIsolation::ChargedRelIsoCut_
private

Definition at line 54 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ EnableAbsIso_

const bool HLTTriMuonIsolation::EnableAbsIso_
private

Definition at line 64 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ EnableRelIso_

const bool HLTTriMuonIsolation::EnableRelIso_
private

Definition at line 63 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ IsoConeSize_

const double HLTTriMuonIsolation::IsoConeSize_
private

Definition at line 56 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ IsoTracks

edm::Handle<reco::TrackCollection> HLTTriMuonIsolation::IsoTracks
private

Definition at line 40 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ IsoTracksToken_

const edm::EDGetTokenT<reco::TrackCollection> HLTTriMuonIsolation::IsoTracksToken_
private

Definition at line 34 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ L3DiMuonsFilterCands

edm::Handle<trigger::TriggerFilterObjectWithRefs> HLTTriMuonIsolation::L3DiMuonsFilterCands
private

Definition at line 37 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ L3DiMuonsFilterToken_

const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> HLTTriMuonIsolation::L3DiMuonsFilterToken_
private

Definition at line 33 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ L3MuCands

edm::Handle<reco::RecoChargedCandidateCollection> HLTTriMuonIsolation::L3MuCands
private

Definition at line 36 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ L3MuonsToken_

const edm::EDGetTokenT<reco::RecoChargedCandidateCollection> HLTTriMuonIsolation::L3MuonsToken_
private

Definition at line 31 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ MatchingConeSize_

const double HLTTriMuonIsolation::MatchingConeSize_
private

Definition at line 57 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ MaxDZ_

const double HLTTriMuonIsolation::MaxDZ_
private

Definition at line 62 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ MaxTriMuonMass_

const double HLTTriMuonIsolation::MaxTriMuonMass_
private

Definition at line 59 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ MaxTriMuonRadius_

const double HLTTriMuonIsolation::MaxTriMuonRadius_
private

Definition at line 60 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ MinTriMuonMass_

const double HLTTriMuonIsolation::MinTriMuonMass_
private

Definition at line 58 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ Muon1PtCut_

const double HLTTriMuonIsolation::Muon1PtCut_
private

Definition at line 49 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ Muon2PtCut_

const double HLTTriMuonIsolation::Muon2PtCut_
private

Definition at line 50 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ Muon3PtCut_

const double HLTTriMuonIsolation::Muon3PtCut_
private

Definition at line 51 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ PassedL3Muons

edm::Handle<reco::RecoChargedCandidateRef> HLTTriMuonIsolation::PassedL3Muons
private

Definition at line 38 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ TriMuonAbsCharge_

const int HLTTriMuonIsolation::TriMuonAbsCharge_
private

Definition at line 61 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ TriMuonEtaCut_

const double HLTTriMuonIsolation::TriMuonEtaCut_
private

Definition at line 53 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ TriMuonPtCut_

const double HLTTriMuonIsolation::TriMuonPtCut_
private

Definition at line 52 of file HLTTriMuonIsolation.h.

Referenced by produce().

◆ TwiceMuonMass_

const double HLTTriMuonIsolation::TwiceMuonMass_ = 2. * 0.1056583715
private

Definition at line 47 of file HLTTriMuonIsolation.h.

Referenced by produce().