33 using namespace muonisolation;
37 : theSACollectionLabel(par.getParameter<edm::
InputTag>(
"StandAloneCollectionLabel")) {
38 LogDebug(
"Muon|RecoMuon|L2MuonIsolationProducer") <<
" L2MuonIsolationProducer constructor called";
47 theExtractor = std::unique_ptr<reco::isodeposit::IsoDepositExtractor>{
51 bool haveIsolator = !isolatorPSet.
empty();
59 produces<edm::ValueMap<bool>>();
60 produces<reco::IsoDepositMap>();
63 if (optOutputIsolatorFloat && haveIsolator) {
64 produces<edm::ValueMap<float>>();
70 LogDebug(
"Muon|RecoMuon|L2MuonIsolationProducer") <<
" L2MuonIsolationProducer destructor called";
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");
90 extractorPSet.add<
double>(
"Weight_H", 1.0);
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);
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);
117 desc.
add<
bool>(
"WriteIsolatorFloat",
false);
118 descriptions.
add(
"hltL2MuonIsolations", desc);
125 LogDebug(metname) <<
" L2 Muon Isolation producing...";
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>>();
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);
145 for (
unsigned int i = 0;
i < nMuons;
i++) {
147 muonTracks.push_back(*tk);
152 for (
unsigned int i = 0;
i < nMuons;
i++) {
168 depFiller.
insert(muons, deps.begin(), deps.end());
174 isoFiller.
insert(muons, isos.begin(), isos.end());
180 isoFloatFiller.
insert(muons, isoFloats.begin(), isoFloats.end());
181 isoFloatFiller.
fill();
186 LogDebug(metname) <<
" Event loaded"
187 <<
"================================";
~L2MuonIsolationProducer() override
destructor
std::unique_ptr< muonisolation::MuIsoBaseIsolator > theDepositIsolator
const std::string metname
void insert(const H &h, I begin, I end)
std::vector< Track > TrackCollection
collection of Tracks
edm::InputTag theSACollectionLabel
std::unique_ptr< reco::isodeposit::IsoDepositExtractor > theExtractor
ParameterDescriptionBase * add(U const &iLabel, T const &value)
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > theSACollectionToken
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ParameterSet descriptions.
std::vector< DepositAndVetos > DepositContainer
T getParameter(std::string const &) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void produce(edm::Event &, const edm::EventSetup &) override
Produce isolation maps.
bool optOutputIsolatorFloat
L2MuonIsolationProducer(const edm::ParameterSet &)
constructor with config