CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
L2MuonIsolationProducer Class Reference

#include <L2MuonIsolationProducer.h>

Inheritance diagram for L2MuonIsolationProducer:
edm::stream::EDProducer<>

Public Member Functions

 L2MuonIsolationProducer (const edm::ParameterSet &)
 constructor with config More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 Produce isolation maps. More...
 
 ~L2MuonIsolationProducer () override
 destructor More...
 
- Public Member Functions inherited from edm::stream::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
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 ParameterSet descriptions. More...
 

Private Attributes

bool optOutputDecision
 
bool optOutputIsolatorFloat
 
std::unique_ptr
< muonisolation::MuIsoBaseIsolator
theDepositIsolator
 
std::unique_ptr
< reco::isodeposit::IsoDepositExtractor
theExtractor
 
edm::InputTag theSACollectionLabel
 
edm::EDGetTokenT
< reco::RecoChargedCandidateCollection
theSACollectionToken
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Author
J. Alcaraz

L2 HLT muon isolation producer

Author
J.Alcaraz

Definition at line 22 of file L2MuonIsolationProducer.h.

Constructor & Destructor Documentation

L2MuonIsolationProducer::L2MuonIsolationProducer ( const edm::ParameterSet par)

constructor with config

Definition at line 36 of file L2MuonIsolationProducer.cc.

References edm::ParameterSet::empty(), get, edm::ParameterSet::getParameter(), LogDebug, optOutputDecision, optOutputIsolatorFloat, AlCaHLTBitMon_QueryRunRegistry::string, theDepositIsolator, theExtractor, theSACollectionLabel, and theSACollectionToken.

37  : theSACollectionLabel(par.getParameter<edm::InputTag>("StandAloneCollectionLabel")) {
38  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer") << " L2MuonIsolationProducer constructor called";
39 
40  theSACollectionToken = consumes<RecoChargedCandidateCollection>(theSACollectionLabel);
41 
42  //
43  // Extractor
44  //
45  edm::ParameterSet extractorPSet = par.getParameter<edm::ParameterSet>("ExtractorPSet");
46  std::string extractorName = extractorPSet.getParameter<std::string>("ComponentName");
47  theExtractor = std::unique_ptr<reco::isodeposit::IsoDepositExtractor>{
48  IsoDepositExtractorFactory::get()->create(extractorName, extractorPSet, consumesCollector())};
49 
50  edm::ParameterSet isolatorPSet = par.getParameter<edm::ParameterSet>("IsolatorPSet");
51  bool haveIsolator = !isolatorPSet.empty();
52  optOutputDecision = haveIsolator;
53  if (optOutputDecision) {
54  std::string type = isolatorPSet.getParameter<std::string>("ComponentName");
55  theDepositIsolator = std::unique_ptr<muonisolation::MuIsoBaseIsolator>{
56  MuonIsolatorFactory::get()->create(type, isolatorPSet, consumesCollector())};
57  }
59  produces<edm::ValueMap<bool>>();
60  produces<reco::IsoDepositMap>();
61 
62  optOutputIsolatorFloat = par.getParameter<bool>("WriteIsolatorFloat");
63  if (optOutputIsolatorFloat && haveIsolator) {
64  produces<edm::ValueMap<float>>();
65  }
66 }
bool empty() const
Definition: ParameterSet.h:201
std::unique_ptr< muonisolation::MuIsoBaseIsolator > theDepositIsolator
std::unique_ptr< reco::isodeposit::IsoDepositExtractor > theExtractor
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > theSACollectionToken
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
#define get
#define LogDebug(id)
L2MuonIsolationProducer::~L2MuonIsolationProducer ( )
override

destructor

Definition at line 69 of file L2MuonIsolationProducer.cc.

References LogDebug.

69  {
70  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer") << " L2MuonIsolationProducer destructor called";
71 }
#define LogDebug(id)

Member Function Documentation

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

ParameterSet descriptions.

Definition at line 74 of file L2MuonIsolationProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, HLT_FULL_cff::InputTag, AlCaHLTBitMon_QueryRunRegistry::string, and groupFilesInBlocks::temp.

74  {
76  desc.add<edm::InputTag>("StandAloneCollectionLabel", edm::InputTag("hltL2MuonCandidates"));
77  edm::ParameterSetDescription extractorPSet;
78  {
79  extractorPSet.add<double>("DR_Veto_H", 0.1);
80  extractorPSet.add<bool>("Vertex_Constraint_Z", false);
81  extractorPSet.add<double>("Threshold_H", 0.5);
82  extractorPSet.add<std::string>("ComponentName", "CaloExtractor");
83  extractorPSet.add<double>("Threshold_E", 0.2);
84  extractorPSet.add<double>("DR_Max", 1.0);
85  extractorPSet.add<double>("DR_Veto_E", 0.07);
86  extractorPSet.add<double>("Weight_E", 1.5);
87  extractorPSet.add<bool>("Vertex_Constraint_XY", false);
88  extractorPSet.addUntracked<std::string>("DepositLabel", "EcalPlusHcal");
89  extractorPSet.add<edm::InputTag>("CaloTowerCollectionLabel", edm::InputTag("towerMaker"));
90  extractorPSet.add<double>("Weight_H", 1.0);
91  }
92  desc.add<edm::ParameterSetDescription>("ExtractorPSet", extractorPSet);
93  edm::ParameterSetDescription isolatorPSet;
94  {
95  std::vector<double> temp;
96  isolatorPSet.add<std::vector<double>>("ConeSizesRel", std::vector<double>(1, 0.3));
97  isolatorPSet.add<double>("EffAreaSFEndcap", 1.0);
98  isolatorPSet.add<bool>("CutAbsoluteIso", true);
99  isolatorPSet.add<bool>("AndOrCuts", true);
100  isolatorPSet.add<edm::InputTag>("RhoSrc", edm::InputTag("hltKT6CaloJetsForMuons", "rho"));
101  isolatorPSet.add<std::vector<double>>("ConeSizes", std::vector<double>(1, 0.3));
102  isolatorPSet.add<std::string>("ComponentName", "CutsIsolatorWithCorrection");
103  isolatorPSet.add<bool>("ReturnRelativeSum", false);
104  isolatorPSet.add<double>("RhoScaleBarrel", 1.0);
105  isolatorPSet.add<double>("EffAreaSFBarrel", 1.0);
106  isolatorPSet.add<bool>("CutRelativeIso", false);
107  isolatorPSet.add<std::vector<double>>("EtaBounds", std::vector<double>(1, 2.411));
108  isolatorPSet.add<std::vector<double>>("Thresholds", std::vector<double>(1, 9.9999999E7));
109  isolatorPSet.add<bool>("ReturnAbsoluteSum", true);
110  isolatorPSet.add<std::vector<double>>("EtaBoundsRel", std::vector<double>(1, 2.411));
111  isolatorPSet.add<std::vector<double>>("ThresholdsRel", std::vector<double>(1, 9.9999999E7));
112  isolatorPSet.add<double>("RhoScaleEndcap", 1.0);
113  isolatorPSet.add<double>("RhoMax", 9.9999999E7);
114  isolatorPSet.add<bool>("UseRhoCorrection", true);
115  }
116  desc.add<edm::ParameterSetDescription>("IsolatorPSet", isolatorPSet);
117  desc.add<bool>("WriteIsolatorFloat", false);
118  descriptions.add("hltL2MuonIsolations", desc);
119 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void L2MuonIsolationProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

Produce isolation maps.

build deposits

do the business of filling iso map

annoying – I will forget it at some point

annoying – I will forget it at some point

Definition at line 122 of file L2MuonIsolationProducer.cc.

References symbols::deps, edm::helper::Filler< Map >::fill(), mps_fire::i, edm::helper::Filler< Map >::insert(), LogDebug, metname, eostools::move(), patZpeak::muons, optOutputDecision, optOutputIsolatorFloat, AlCaHLTBitMon_QueryRunRegistry::string, theDepositIsolator, theExtractor, theSACollectionLabel, theSACollectionToken, muonisolation::MuIsoBaseIsolator::Result::valBool, and muonisolation::MuIsoBaseIsolator::Result::valFloat.

122  {
123  std::string metname = "Muon|RecoMuon|L2MuonIsolationProducer";
124 
125  LogDebug(metname) << " L2 Muon Isolation producing...";
126 
127  // Take the SA container
128  LogDebug(metname) << " Taking the StandAlone muons: " << theSACollectionLabel;
130  event.getByToken(theSACollectionToken, muons);
131 
132  // Find deposits and load into event
133  LogDebug(metname) << " Get energy around";
134  auto depMap = std::make_unique<reco::IsoDepositMap>();
135  auto isoMap = std::make_unique<edm::ValueMap<bool>>();
136  auto isoFloatMap = std::make_unique<edm::ValueMap<float>>();
137 
138  unsigned int nMuons = muons->size();
139  std::vector<IsoDeposit> deps(nMuons);
140  std::vector<bool> isos(nMuons, false);
141  std::vector<float> isoFloats(nMuons, 0);
142 
143  // fill track collection to use for vetos calculation
144  TrackCollection muonTracks;
145  for (unsigned int i = 0; i < nMuons; i++) {
146  TrackRef tk = (*muons)[i].track();
147  muonTracks.push_back(*tk);
148  }
149 
150  theExtractor->fillVetos(event, eventSetup, muonTracks);
151 
152  for (unsigned int i = 0; i < nMuons; i++) {
153  TrackRef tk = (*muons)[i].track();
154 
155  deps[i] = theExtractor->deposit(event, eventSetup, *tk);
156 
157  if (optOutputDecision) {
160  muonisolation::MuIsoBaseIsolator::Result isoResult = theDepositIsolator->result(isoContainer, *tk, &event);
161  isos[i] = isoResult.valBool;
162  isoFloats[i] = isoResult.valFloat;
163  }
164  }
165 
167  reco::IsoDepositMap::Filler depFiller(*depMap);
168  depFiller.insert(muons, deps.begin(), deps.end());
169  depFiller.fill();
170  event.put(std::move(depMap));
171 
172  if (optOutputDecision) {
173  edm::ValueMap<bool>::Filler isoFiller(*isoMap);
174  isoFiller.insert(muons, isos.begin(), isos.end());
175  isoFiller.fill();
176  event.put(std::move(isoMap));
177 
179  edm::ValueMap<float>::Filler isoFloatFiller(*isoFloatMap);
180  isoFloatFiller.insert(muons, isoFloats.begin(), isoFloats.end());
181  isoFloatFiller.fill();
182  event.put(std::move(isoFloatMap));
183  }
184  }
185 
186  LogDebug(metname) << " Event loaded"
187  << "================================";
188 }
std::unique_ptr< muonisolation::MuIsoBaseIsolator > theDepositIsolator
const std::string metname
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::unique_ptr< reco::isodeposit::IsoDepositExtractor > theExtractor
def move
Definition: eostools.py:511
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > theSACollectionToken
std::vector< DepositAndVetos > DepositContainer
tuple deps
Definition: symbols.py:61
tuple muons
Definition: patZpeak.py:41
#define LogDebug(id)

Member Data Documentation

bool L2MuonIsolationProducer::optOutputDecision
private

Definition at line 43 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

bool L2MuonIsolationProducer::optOutputIsolatorFloat
private

Definition at line 46 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

std::unique_ptr<muonisolation::MuIsoBaseIsolator> L2MuonIsolationProducer::theDepositIsolator
private

Definition at line 52 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

std::unique_ptr<reco::isodeposit::IsoDepositExtractor> L2MuonIsolationProducer::theExtractor
private

Definition at line 49 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

edm::InputTag L2MuonIsolationProducer::theSACollectionLabel
private

Definition at line 39 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

edm::EDGetTokenT<reco::RecoChargedCandidateCollection> L2MuonIsolationProducer::theSACollectionToken
private

Definition at line 40 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().