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
 
- 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)
 
virtual ~ProducerBase () noexcept(false)
 
- 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
 
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
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
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 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:230
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
const double ChargedRelIsoCut_
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > L3MuonsToken_
edm::Handle< reco::RecoChargedCandidateCollection > AllMuCands
T1 deltaR2(T1 eta1, T2 phi1, T3 eta2, T4 phi2)
Definition: deltaR.h:36
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:510
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().