37 theSACollectionLabel(par.getParameter<
edm::
InputTag>(
"StandAloneCollectionLabel")),
41 LogDebug(
"Muon|RecoMuon|L2MuonIsolationProducer")<<
" L2MuonIsolationProducer constructor called";
54 bool haveIsolator = !isolatorPSet.
empty();
61 produces<reco::IsoDepositMap>();
64 if (optOutputIsolatorFloat && haveIsolator){
65 produces<edm::ValueMap<float> >();
71 LogDebug(
"Muon|RecoMuon|L2MuonIsolationProducer")<<
" L2MuonIsolationProducer destructor called";
81 extractorPSet.
add<
double>(
"DR_Veto_H",0.1);
82 extractorPSet.add<
bool>(
"Vertex_Constraint_Z",
false);
83 extractorPSet.add<
double>(
"Threshold_H",0.5);
84 extractorPSet.add<
std::string>(
"ComponentName",
"CaloExtractor");
85 extractorPSet.add<
double>(
"Threshold_E",0.2);
86 extractorPSet.add<
double>(
"DR_Max",1.0);
87 extractorPSet.add<
double>(
"DR_Veto_E",0.07);
88 extractorPSet.add<
double>(
"Weight_E",1.5);
89 extractorPSet.add<
bool>(
"Vertex_Constraint_XY",
false);
90 extractorPSet.addUntracked<
std::string>(
"DepositLabel",
"EcalPlusHcal");
92 extractorPSet.add<
double>(
"Weight_H",1.0);
97 std::vector<double>
temp;
98 isolatorPSet.add<std::vector<double> >(
"ConeSizesRel",std::vector<double>(1, 0.3));
99 isolatorPSet.add<
double>(
"EffAreaSFEndcap",1.0);
100 isolatorPSet.add<
bool>(
"CutAbsoluteIso",
true);
101 isolatorPSet.add<
bool>(
"AndOrCuts",
true);
103 isolatorPSet.add<std::vector<double> >(
"ConeSizes",std::vector<double>(1, 0.3));
104 isolatorPSet.add<
std::string>(
"ComponentName",
"CutsIsolatorWithCorrection");
105 isolatorPSet.add<
bool>(
"ReturnRelativeSum",
false);
106 isolatorPSet.add<
double>(
"RhoScaleBarrel",1.0);
107 isolatorPSet.add<
double>(
"EffAreaSFBarrel",1.0);
108 isolatorPSet.add<
bool>(
"CutRelativeIso",
false);
109 isolatorPSet.add<std::vector<double> >(
"EtaBounds",std::vector<double>(1, 2.411));
110 isolatorPSet.add<std::vector<double> >(
"Thresholds",std::vector<double>(1, 9.9999999E7));
111 isolatorPSet.add<
bool>(
"ReturnAbsoluteSum",
true);
112 isolatorPSet.add<std::vector<double> >(
"EtaBoundsRel",std::vector<double>(1, 2.411));
113 isolatorPSet.add<std::vector<double> >(
"ThresholdsRel",std::vector<double>(1, 9.9999999E7));
114 isolatorPSet.add<
double>(
"RhoScaleEndcap",1.0);
115 isolatorPSet.add<
double>(
"RhoMax",9.9999999E7);
116 isolatorPSet.add<
bool>(
"UseRhoCorrection",
true);
119 desc.
add<
bool>(
"WriteIsolatorFloat",
false);
120 descriptions.
add(
"hltL2MuonIsolations", desc);
127 LogDebug(metname)<<
" L2 Muon Isolation producing...";
135 LogDebug(metname)<<
" Get energy around";
136 auto depMap = std::make_unique<reco::IsoDepositMap>();
137 auto isoMap = std::make_unique<edm::ValueMap<bool>>();
138 auto isoFloatMap = std::make_unique<edm::ValueMap<float>>();
140 unsigned int nMuons = muons->size();
141 std::vector<IsoDeposit>
deps(nMuons);
142 std::vector<bool> isos(nMuons,
false);
143 std::vector<float> isoFloats(nMuons, 0);
149 muonTracks.push_back(*tk);
171 depFiller.
insert(muons, deps.begin(), deps.end());
177 isoFiller.
insert(muons, isos.begin(), isos.end());
183 isoFloatFiller.
insert(muons, isoFloats.begin(), isoFloats.end());
184 isoFloatFiller.
fill();
190 <<
"================================";
T getParameter(std::string const &) const
reco::isodeposit::IsoDepositExtractor * theExtractor
~L2MuonIsolationProducer() override
destructor
const std::string metname
void insert(const H &h, I begin, I end)
std::vector< Track > TrackCollection
collection of Tracks
edm::InputTag theSACollectionLabel
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
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void produce(edm::Event &, const edm::EventSetup &) override
Produce isolation maps.
virtual Result result(const DepositContainer &deposits, const edm::Event *=0) const =0
Compute and return the isolation variable.
bool optOutputIsolatorFloat
muonisolation::MuIsoBaseIsolator * theDepositIsolator
L2MuonIsolationProducer(const edm::ParameterSet &)
constructor with config
T get(const Candidate &c)