CMS 3D CMS Logo

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
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

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

Private Attributes

bool optOutputDecision
 
bool optOutputIsolatorFloat
 
std::unique_ptr< muonisolation::MuIsoBaseIsolatortheDepositIsolator
 
std::unique_ptr< reco::isodeposit::IsoDepositExtractortheExtractor
 
edm::InputTag theSACollectionLabel
 
edm::EDGetTokenT< reco::RecoChargedCandidateCollectiontheSACollectionToken
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache 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::L2MuonIsolationProducer ( const edm::ParameterSet par)

constructor with config

Definition at line 36 of file L2MuonIsolationProducer.cc.

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 }

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

◆ ~L2MuonIsolationProducer()

L2MuonIsolationProducer::~L2MuonIsolationProducer ( )
override

destructor

Definition at line 69 of file L2MuonIsolationProducer.cc.

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

References LogDebug.

Member Function Documentation

◆ fillDescriptions()

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

ParameterSet descriptions.

Definition at line 74 of file L2MuonIsolationProducer.cc.

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 }

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

◆ produce()

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.

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 }

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

Member Data Documentation

◆ optOutputDecision

bool L2MuonIsolationProducer::optOutputDecision
private

Definition at line 43 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

◆ optOutputIsolatorFloat

bool L2MuonIsolationProducer::optOutputIsolatorFloat
private

Definition at line 46 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

◆ theDepositIsolator

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

Definition at line 52 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

◆ theExtractor

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

Definition at line 49 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

◆ theSACollectionLabel

edm::InputTag L2MuonIsolationProducer::theSACollectionLabel
private

Definition at line 39 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

◆ theSACollectionToken

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

Definition at line 40 of file L2MuonIsolationProducer.h.

Referenced by L2MuonIsolationProducer(), and produce().

PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
L2MuonIsolationProducer::theDepositIsolator
std::unique_ptr< muonisolation::MuIsoBaseIsolator > theDepositIsolator
Definition: L2MuonIsolationProducer.h:52
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
muonisolation::MuIsoBaseIsolator::Result::valBool
bool valBool
Definition: MuIsoBaseIsolator.h:37
muonisolation::MuIsoBaseIsolator::DepositAndVetos
Definition: MuIsoBaseIsolator.h:17
muonisolation::MuIsoBaseIsolator::Result
Definition: MuIsoBaseIsolator.h:27
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
edm::Handle
Definition: AssociativeIterator.h:50
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::Ref< TrackCollection >
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
L2MuonIsolationProducer::theSACollectionLabel
edm::InputTag theSACollectionLabel
Definition: L2MuonIsolationProducer.h:39
jets_cff.nMuons
nMuons
Definition: jets_cff.py:209
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
L2MuonIsolationProducer::theSACollectionToken
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > theSACollectionToken
Definition: L2MuonIsolationProducer.h:40
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
L2MuonIsolationProducer::theExtractor
std::unique_ptr< reco::isodeposit::IsoDepositExtractor > theExtractor
Definition: L2MuonIsolationProducer.h:49
edm::ParameterSet
Definition: ParameterSet.h:36
get
#define get
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
type
type
Definition: HCALResponse.h:21
eostools.move
def move(src, dest)
Definition: eostools.py:511
muonisolation::MuIsoBaseIsolator::Result::valFloat
float valFloat
Definition: MuIsoBaseIsolator.h:36
muonisolation::MuIsoBaseIsolator::DepositContainer
std::vector< DepositAndVetos > DepositContainer
Definition: MuIsoBaseIsolator.h:23
L2MuonIsolationProducer::optOutputDecision
bool optOutputDecision
Definition: L2MuonIsolationProducer.h:43
L2MuonIsolationProducer::optOutputIsolatorFloat
bool optOutputIsolatorFloat
Definition: L2MuonIsolationProducer.h:46
edm::helper::Filler
Definition: ValueMap.h:22
symbols.deps
deps
Definition: symbols.py:55
event
Definition: event.py:1
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
edm::ParameterSet::empty
bool empty() const
Definition: ParameterSet.h:190
metname
const std::string metname
Definition: MuonSeedOrcaPatternRecognition.cc:43