93 auto out = std::make_unique<std::vector<pat::Muon>>();
96 auto outDTSegments = std::make_unique<DTRecSegment4DCollection>();
97 std::set<DTRecSegment4DRef> dtSegmentsRefs;
98 auto outCSCSegments = std::make_unique<CSCSegmentCollection>();
99 std::set<CSCSegmentRef> cscSegmentsRefs;
105 std::map<reco::CandidatePtr, pat::PackedCandidateRef> mu2pc;
109 for (
unsigned int ipfh = 0, npfh =
pf_.size(); ipfh < npfh; ++ipfh) {
112 const auto &pfcoll = (*pf);
113 const auto &pfmap = (*pf2pc);
114 for (
unsigned int i = 0,
n =
pf->size();
i <
n; ++
i) {
116 if (
p.muonRef().isNonnull())
122 for (vector<pat::Muon>::const_iterator it =
src->begin(), ed =
src->end(); it != ed; ++it) {
140 mu.setPFIsolation(
"pfIsoMeanDRProfileR03", zero);
141 mu.setPFIsolation(
"pfIsoSumDRProfileR03", zero);
142 mu.setPFIsolation(
"pfIsoMeanDRProfileR04", zero);
143 mu.setPFIsolation(
"pfIsoSumDRProfileR04", zero);
150 ene.
tower = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
tower);
152 ene.
towerS9 = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
towerS9);
154 ene.
had = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
had);
156 ene.
hadS9 = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
hadS9);
158 ene.
hadMax = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
hadMax);
160 ene.
em = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
em);
162 ene.
emS25 = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
emS25);
164 ene.
emMax = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
emMax);
174 MiniFloatConverter::reduceMantissaToNbitsRounding<14>(ene.
ecal_position.Y()),
175 MiniFloatConverter::reduceMantissaToNbitsRounding<14>(ene.
ecal_position.Z()));
177 MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
hcal_position.Y()),
178 MiniFloatConverter::reduceMantissaToNbitsRounding<12>(ene.
hcal_position.Z()));
179 mu.setCalEnergy(ene);
185 MiniFloatConverter::reduceMantissaToNbitsRounding<12>(qual.
tkKink_position.Y()),
186 MiniFloatConverter::reduceMantissaToNbitsRounding<12>(qual.
tkKink_position.Z()));
187 mu.setCombinedQuality(qual);
192 MiniFloatConverter::reduceMantissaToNbitsRounding<10>(corrs.
corrX()),
193 MiniFloatConverter::reduceMantissaToNbitsRounding<10>(corrs.
corrY()));
194 mu.embedCaloMETMuonCorrs(corrs);
198 cmatch.edgeX = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(cmatch.edgeX);
199 cmatch.edgeY = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(cmatch.edgeY);
200 cmatch.xErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(cmatch.xErr);
201 cmatch.yErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(cmatch.yErr);
202 cmatch.dXdZErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(cmatch.dXdZErr);
203 cmatch.dYdZErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(cmatch.dYdZErr);
205 smatch.
xErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(smatch.
xErr);
206 smatch.
yErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(smatch.
yErr);
207 smatch.
dXdZErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(smatch.
dXdZErr);
208 smatch.
dYdZErr = MiniFloatConverter::reduceMantissaToNbitsRounding<12>(smatch.
dYdZErr);
221 std::map<DTRecSegment4DRef, size_t> dtMap;
222 std::vector<DTRecSegment4D> outDTSegmentsTmp;
223 std::map<CSCSegmentRef, size_t> cscMap;
224 std::vector<CSCSegment> outCSCSegmentsTmp;
225 for (
auto &seg : dtSegmentsRefs) {
226 dtMap[seg] = outDTSegments->size();
227 outDTSegmentsTmp.push_back(*seg);
229 for (
auto &seg : cscSegmentsRefs) {
230 cscMap[seg] = outCSCSegments->size();
231 outCSCSegmentsTmp.push_back(*seg);
233 outDTSegments->put(
DTChamberId(), outDTSegmentsTmp.begin(), outDTSegmentsTmp.end());
234 outCSCSegments->put(
CSCDetId(), outCSCSegmentsTmp.begin(), outCSCSegmentsTmp.end());
237 for (
auto &
mu : *
out) {
238 if (
mu.isMatchesValid()) {