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
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () 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
 
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)
 
 ~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
 
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::vector< ModuleDescription const * > &modules, 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
 
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
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::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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<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)
 

Detailed Description

Definition at line 23 of file HLTTriMuonIsolation.h.

Constructor & Destructor Documentation

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

Definition at line 65 of file HLTTriMuonIsolation.h.

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

Definition at line 92 of file HLTTriMuonIsolation.h.

92 { }

Member Function Documentation

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

Definition at line 249 of file HLTTriMuonIsolation.h.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and funct::true.

250 {
252  desc.add<edm::InputTag>("L3MuonsSrc" , edm::InputTag("hltIterL3FromL2MuonCandidates" ));
253  desc.add<edm::InputTag>("AllMuonsSrc" , edm::InputTag("hltGlbTrkMuonCands" ));
254  desc.add<edm::InputTag>("L3DiMuonsFilterSrc", edm::InputTag("hltDiMuonForTau3MuDzFiltered0p3"));
255  desc.add<edm::InputTag>("IsoTracksSrc" , edm::InputTag("hltIter2L3FromL2MuonMerged" ));
256  desc.add<double>("Muon1PtCut" , 5. );
257  desc.add<double>("Muon2PtCut" , 3. );
258  desc.add<double>("Muon3PtCut" , 0. );
259  desc.add<double>("TriMuonPtCut" , 8. );
260  desc.add<double>("TriMuonEtaCut" , 2.5 );
261  desc.add<double>("ChargedAbsIsoCut", 3.0 );
262  desc.add<double>("ChargedRelIsoCut", 0.1 );
263  desc.add<double>("IsoConeSize" , 0.5 );
264  desc.add<double>("MatchingConeSize", 0.03 );
265  desc.add<double>("MinTriMuonMass" , 0.5 );
266  desc.add<double>("MaxTriMuonMass" , 2.8 );
267  desc.add<double>("MaxTriMuonRadius", 0.6 );
268  desc.add<int> ("TriMuonAbsCharge", -1 );
269  desc.add<double>("MaxDZ" , 0.3 );
270  desc.add<bool> ("EnableRelIso" , false);
271  desc.add<bool> ("EnableAbsIso" , true );
272  descriptions.add("hltTriMuonIsolationProducer",desc);
273 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void HLTTriMuonIsolation::produce ( edm::StreamID  ,
edm::Event ,
const edm::EventSetup  
) const
override

Definition at line 95 of file HLTTriMuonIsolation.h.

References funct::abs(), reco::CompositeCandidate::addDaughter(), AllMuCands, AllMuonsToken_, ALCARECOTkAlJpsiMuMu_cff::charge, reco::LeafCandidate::charge(), ChargedAbsIsoCut_, ChargedRelIsoCut_, reco::CompositeCandidate::daughter(), BPhysicsValidation_cfi::daughters, reco::deltaR2(), EnableAbsIso_, EnableRelIso_, reco::LeafCandidate::eta(), edm::Event::getByToken(), trigger::TriggerRefsCollections::getObjects(), mps_fire::i, infinity, IsoConeSize_, IsoTracks, IsoTracksToken_, gen::k, L3DiMuonsFilterCands, L3DiMuonsFilterToken_, L3MuCands, L3MuonsToken_, ResonanceBuilder::mass, reco::LeafCandidate::mass(), MatchingConeSize_, MaxDZ_, MaxTriMuonMass_, MaxTriMuonRadius_, MinTriMuonMass_, eostools::move(), Muon1PtCut_, Muon2PtCut_, Muon3PtCut_, reco::Candidate::p4(), reco::LeafCandidate::p4(), PassedL3Muons, EnergyCorrector::pt, reco::LeafCandidate::pt(), edm::Event::put(), reco::LeafCandidate::setCharge(), reco::LeafCandidate::setP4(), reco::LeafCandidate::setPdgId(), reco::LeafCandidate::setVertex(), TtFullHadEvtBuilder_cfi::sumPt, metsig::tau, trigger::TriggerMuon, TriMuonAbsCharge_, TriMuonEtaCut_, TriMuonPtCut_, TwiceMuonMass_, reco::Candidate::vz(), and reco::LeafCandidate::vz().

96 {
97  std::unique_ptr<reco::CompositeCandidateCollection> Taus (new reco::CompositeCandidateCollection);
98  std::unique_ptr<reco::CompositeCandidateCollection> SelectedTaus(new reco::CompositeCandidateCollection);
99 
100  // Get the L3 muon candidates
102  iEvent.getByToken(L3MuonsToken_, L3MuCands);
103 
104  // Get the L3 muon candidates that passed the filter
106  iEvent.getByToken(L3DiMuonsFilterToken_, L3DiMuonsFilterCands);
107 
108  std::vector<reco::RecoChargedCandidateRef> PassedL3Muons;
109  L3DiMuonsFilterCands->getObjects(trigger::TriggerMuon, PassedL3Muons);
110 
111  // Get the Trk + L3 muon candidates (after merging)
113  iEvent.getByToken(AllMuonsToken_, AllMuCands);
114 
115  // Get iso tracks
117  iEvent.getByToken(IsoTracksToken_, IsoTracks);
118 
119  if (AllMuCands->size() >= 3 && L3MuCands->size() >= 2){
120  // Create the 3-muon candidates
121  // loop over L3/Trk muons and create all combinations
122  auto AllMuCands_end = AllMuCands->end();
123  for (auto i = AllMuCands->begin(); i != AllMuCands_end-2; ++i) {
124  // check that muon_i passes the previous filter
125  bool passingPreviousFilter_1 = false;
126  for (const auto & imu : PassedL3Muons){
127  if (reco::deltaR2(i->momentum(), imu->momentum()) < (MatchingConeSize_*MatchingConeSize_)) 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_)) passingPreviousFilter_2 = true;
134  }
135  // if, at this point, no muons passed the previous filter just skip to the next iteration
136  if (!(passingPreviousFilter_1 || passingPreviousFilter_2)) continue;
137  for (auto k = j+1; k != AllMuCands_end; ++k){
138  // check that muon_k passes the previous filter
139  bool passingPreviousFilter_3 = false;
140  for (const auto & kmu : PassedL3Muons){
141  if (reco::deltaR2(k->momentum(), kmu->momentum()) < (MatchingConeSize_*MatchingConeSize_)) passingPreviousFilter_3 = true;
142  }
143  // at least two muons must have passed the previous di-muon filter
144  if (!( (passingPreviousFilter_1 & passingPreviousFilter_2 ) ||
145  (passingPreviousFilter_1 & passingPreviousFilter_3 ) ||
146  (passingPreviousFilter_2 & passingPreviousFilter_3 ) )) continue;
147 
148  // Create a composite candidate to be a tau
150 
151  // sort the muons by pt and add them to the tau
153  daughters.reserve(3);
154 
155  daughters.push_back(*i);
156  daughters.push_back(*j);
157  daughters.push_back(*k);
158 
159  std::sort(daughters.begin(), daughters.end(), ptComparer<reco::RecoChargedCandidate>);
160 
161  // Muon kinematic selections
162  if (daughters[0].pt() < Muon1PtCut_) continue;
163  if (daughters[1].pt() < Muon2PtCut_) continue;
164  if (daughters[2].pt() < Muon3PtCut_) continue;
165 
166  // assign the tau its daughters
167  tau.addDaughter((daughters)[0], "Muon_1");
168  tau.addDaughter((daughters)[1], "Muon_2");
169  tau.addDaughter((daughters)[2], "Muon_3");
170 
171  // start building the tau
172  int charge = daughters[0].charge() + daughters[1].charge() + daughters[2].charge();
173  math::XYZTLorentzVectorD taup4 = daughters[0].p4() + daughters[1].p4() + daughters[2].p4() ;
174  int tauPdgId = charge > 0? 15 : -15;
175 
176  tau.setP4(taup4);
177  tau.setCharge(charge);
178  tau.setPdgId(tauPdgId);
179  tau.setVertex((daughters)[0].vertex()); // assign the leading muon vertex as tau vertex
180 
181  // the three muons must be close to each other in Z
182  if (std::abs(tau.daughter(0)->vz() - tau.vz()) > MaxDZ_) continue;
183  if (std::abs(tau.daughter(1)->vz() - tau.vz()) > MaxDZ_) continue;
184  if (std::abs(tau.daughter(2)->vz() - tau.vz()) > MaxDZ_) continue;
185 
186  // require muons to be collimated
187  bool collimated = true;
188  for (auto const &idau : daughters){
189  if (reco::deltaR2(tau.p4(), idau.p4()) > MaxTriMuonRadius_*MaxTriMuonRadius_) {
190  collimated = false;
191  break;
192  }
193  }
194 
195  if (!collimated) continue;
196 
197  // Tau kinematic selections
198  if (tau.pt() < TriMuonPtCut_ ) continue;
199  if (tau.mass() < MinTriMuonMass_) continue;
200  if (tau.mass() > MaxTriMuonMass_) continue;
201  if (std::abs(tau.eta()) > TriMuonEtaCut_ ) continue;
202 
203  // Tau charge selection
204  if ((std::abs(tau.charge()) != TriMuonAbsCharge_) & (TriMuonAbsCharge_ >= 0)) continue;
205 
206  // Sanity check against duplicates, di-muon masses must be > 2 * mass_mu
207  if ( (tau.daughter(0)->p4() + tau.daughter(1)->p4()).mass() < TwiceMuonMass_) continue;
208  if ( (tau.daughter(0)->p4() + tau.daughter(2)->p4()).mass() < TwiceMuonMass_) continue;
209  if ( (tau.daughter(1)->p4() + tau.daughter(2)->p4()).mass() < TwiceMuonMass_) continue;
210 
211  // a good tau, at last
212  Taus->push_back(tau);
213  }
214  }
215  }
216 
217  // Sort taus by pt
218  std::sort(Taus->begin(), Taus->end(), ptComparer<reco::CompositeCandidate>);
219 
220  // Loop over taus and further select by isolation
221  for (const auto & itau : *Taus){
222 
223  // remove the candidate pt from the iso sum
224  double sumPt = -itau.pt();
225 
226  // compute iso sum pT
227  for (const auto & itrk : *IsoTracks){
228  if (reco::deltaR2(itrk.momentum(), itau.p4()) > IsoConeSize_*IsoConeSize_) continue;
229  if (std::abs(itrk.vz() - itau.vz()) > MaxDZ_) continue;
230  sumPt += itrk.pt();
231  }
232 
233  // apply the isolation cut
235  double chRelIsoCut = EnableRelIso_ ? ChargedRelIsoCut_ * itau.pt() : std::numeric_limits<double>::infinity();
236 
237  if ( !( (sumPt < chAbsIsoCut)||(sumPt < chRelIsoCut) ) ) continue;
238 
239  SelectedTaus->push_back(itau);
240  }
241  }
242 
243  // finally put the vector of 3-muon candidates in the event
244  iEvent.put(std::move(Taus) , "Taus" );
245  iEvent.put(std::move(SelectedTaus), "SelectedTaus");
246 }
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > AllMuonsToken_
double eta() const final
momentum pseudorapidity
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_
double pt() const final
transverse momentum
int charge() const final
electric charge
Definition: LeafCandidate.h:91
void setVertex(const Point &vertex) override
set vertex
void setCharge(Charge q) final
set electric charge
Definition: LeafCandidate.h:93
int iEvent
Definition: GenABIO.cc:224
const double ChargedAbsIsoCut_
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
const double MatchingConeSize_
const double infinity
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const LorentzVector & p4() const final
four-momentum Lorentz vector
Definition: LeafCandidate.h:99
edm::Handle< reco::TrackCollection > IsoTracks
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
void addDaughter(const Candidate &, const std::string &s="")
add a clone of the passed candidate as daughter
double vz() const override
z coordinate of vertex position
int k[5][pyjets_maxn]
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
virtual double vz() const =0
z coordinate of vertex position
const double MaxTriMuonRadius_
void setPdgId(int pdgId) final
void setP4(const LorentzVector &p4) final
set 4-momentum
def move(src, dest)
Definition: eostools.py:511
const edm::EDGetTokenT< reco::TrackCollection > IsoTracksToken_
double mass() const final
mass
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > L3DiMuonsFilterToken_
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 { return cand_1.pt() > cand_2.pt(); }

Member Data Documentation

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

Definition at line 39 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 32 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::ChargedAbsIsoCut_
private

Definition at line 53 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::ChargedRelIsoCut_
private

Definition at line 52 of file HLTTriMuonIsolation.h.

Referenced by produce().

const bool HLTTriMuonIsolation::EnableAbsIso_
private

Definition at line 62 of file HLTTriMuonIsolation.h.

Referenced by produce().

const bool HLTTriMuonIsolation::EnableRelIso_
private

Definition at line 61 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::IsoConeSize_
private

Definition at line 54 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 40 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 34 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 37 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 33 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 36 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 31 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::MatchingConeSize_
private

Definition at line 55 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::MaxDZ_
private

Definition at line 60 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::MaxTriMuonMass_
private

Definition at line 57 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::MaxTriMuonRadius_
private

Definition at line 58 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::MinTriMuonMass_
private

Definition at line 56 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::Muon1PtCut_
private

Definition at line 47 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::Muon2PtCut_
private

Definition at line 48 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::Muon3PtCut_
private

Definition at line 49 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 38 of file HLTTriMuonIsolation.h.

Referenced by produce().

const int HLTTriMuonIsolation::TriMuonAbsCharge_
private

Definition at line 59 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::TriMuonEtaCut_
private

Definition at line 51 of file HLTTriMuonIsolation.h.

Referenced by produce().

const double HLTTriMuonIsolation::TriMuonPtCut_
private

Definition at line 50 of file HLTTriMuonIsolation.h.

Referenced by produce().

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

Definition at line 45 of file HLTTriMuonIsolation.h.

Referenced by produce().