108 auto outElectrons = std::make_unique<Run3ScoutingElectronCollection>();
109 auto outPhotons = std::make_unique<Run3ScoutingPhotonCollection>();
224 for (
auto& candidate : *EgammaCandidateCollection) {
241 Cluster2ndMoments moments = EcalClusterTools::cluster2ndMoments(*SCseed, *rechits);
245 uint32_t
seedId = (*SCseed).seed();
249 int detSize = mDetIds.size();
250 std::vector<uint32_t> mDetIdIds;
251 std::vector<float> mEnergies;
252 std::vector<float> mTimes;
253 mDetIdIds.reserve(detSize);
254 mEnergies.reserve(detSize);
255 mTimes.reserve(detSize);
257 for (
int i = 0;
i < detSize;
i++) {
258 auto const recHit_en =
recHitE(mDetIds[
i], *rechits);
260 mDetIdIds.push_back(mDetIds[
i]);
269 auto const HoE = candidate.superCluster()->energy() != 0.
270 ? ((*HoverEMap)[candidateRef] / candidate.superCluster()->energy())
276 auto const sinin = candidate.superCluster()->energy() != 0. ? (*SigmaIEtaIEtaMap)[candidateRef] : 999.;
285 unsigned int const maxTrkSize = EgammaGsfTrackCollection->size();
286 std::vector<float> trkd0;
287 std::vector<float> trkdz;
288 std::vector<float> trkpt;
289 std::vector<float> trketa;
290 std::vector<float> trkphi;
291 std::vector<float> trkpMode;
292 std::vector<float> trketaMode;
293 std::vector<float> trkphiMode;
294 std::vector<float> trkqoverpModeError;
295 std::vector<float> trkchi2overndf;
296 std::vector<int> trkcharge;
297 trkd0.reserve(maxTrkSize);
298 trkdz.reserve(maxTrkSize);
299 trkpt.reserve(maxTrkSize);
300 trketa.reserve(maxTrkSize);
301 trkphi.reserve(maxTrkSize);
302 trkpMode.reserve(maxTrkSize);
303 trketaMode.reserve(maxTrkSize);
304 trkphiMode.reserve(maxTrkSize);
305 trkqoverpModeError.reserve(maxTrkSize);
306 trkchi2overndf.reserve(maxTrkSize);
307 trkcharge.reserve(maxTrkSize);
309 for (
auto&
track : *EgammaGsfTrackCollection) {
314 if (scRefFromTrk == scRef) {
315 trkd0.push_back(
track.d0());
316 trkdz.push_back(
track.dz());
317 trkpt.push_back(
track.pt());
318 trketa.push_back(
track.eta());
319 trkphi.push_back(
track.phi());
320 trkpMode.push_back(
track.pMode());
321 trketaMode.push_back(
track.etaMode());
322 trkphiMode.push_back(
track.phiMode());
323 trkqoverpModeError.push_back(
track.qoverpModeError());
324 auto const trackndof =
track.ndof();
325 trkchi2overndf.push_back(((trackndof == 0) ? -1 : (
track.chi2() / trackndof)));
326 trkcharge.push_back(
track.charge());
329 if (trkcharge.empty()) {
330 outPhotons->emplace_back(candidate.pt(),
335 scRef->preshowerEnergy(),
336 scRef->correctedEnergyUncertainty(),
337 (*SigmaIEtaIEtaMap)[candidateRef],
339 (*EcalPFClusterIsoMap)[candidateRef],
340 (*HcalPFClusterIsoMap)[candidateRef],
342 (*R9Map)[candidateRef],
346 scRef->clustersSize(),
353 outElectrons->emplace_back(candidate.pt(),
358 scRef->preshowerEnergy(),
359 scRef->correctedEnergyUncertainty(),
370 (*DetaMap)[candidateRef],
371 (*DphiMap)[candidateRef],
372 (*SigmaIEtaIEtaMap)[candidateRef],
374 (*OneOEMinusOneOPMap)[candidateRef],
375 (*MissingHitsMap)[candidateRef],
377 (*fBremMap)[candidateRef],
378 (*EcalPFClusterIsoMap)[candidateRef],
379 (*HcalPFClusterIsoMap)[candidateRef],
380 (*EleGsfTrackIsoMap)[candidateRef],
381 (*R9Map)[candidateRef],
385 scRef->clustersSize(),
helper::MatcherGetRef< C >::ref_type getRef(const Handle< C > &c, size_t k)
const int mantissaPrecision
const edm::EDGetTokenT< RecoEcalCandMap > SigmaIEtaIEtaMap_
const edm::EDGetTokenT< EcalRecHitCollection > ecalRechitEE_
edm::ESGetToken< CaloTopology, CaloTopologyRecord > topologyToken_
const edm::EDGetTokenT< RecoEcalCandMap > R9Map_
const std::vector< double > egammaSigmaIEtaIEtaCut
T const * product() const
const edm::EDGetTokenT< reco::GsfTrackCollection > EgammaGsfTrackCollection_
const edm::EDGetTokenT< RecoEcalCandMap > EleGsfTrackIsoMap_
const edm::EDGetTokenT< RecoEcalCandMap > fBremMap_
const edm::EDGetTokenT< RecoEcalCandMap > HoverEMap_
const edm::EDGetTokenT< reco::RecoEcalCandidateCollection > EgammaCandidateCollection_
const std::vector< double > absEtaBinUpperEdges
const edm::EDGetTokenT< RecoEcalCandMap > DetaMap_
const double egammaHoverECut
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
const int rechitMatrixSize
Abs< T >::type abs(const T &t)
const double egammaEtaCut
bool isNull() const
Checks for null.
float recHitT(const DetId id, const EcalRecHitCollection &recHits)
const edm::EDGetTokenT< RecoEcalCandMap > OneOEMinusOneOPMap_
const edm::EDGetTokenT< RecoEcalCandMap > MissingHitsMap_
const edm::EDGetTokenT< RecoEcalCandMap > DphiMap_
const bool saveRecHitTiming
static float reduceMantissaToNbitsRounding(const float &f)
const bool rechitZeroSuppression
const edm::EDGetTokenT< EcalRecHitCollection > ecalRechitEB_
float recHitE(const DetId id, const EcalRecHitCollection &recHits)
const edm::EDGetTokenT< RecoEcalCandMap > HcalPFClusterIsoMap_
const edm::EDGetTokenT< RecoEcalCandMap > EcalPFClusterIsoMap_