216 if(!recoEcalCandHandle.
isValid())
return;
217 else if(!pixelSeedsHandle.
isValid()){
218 auto s2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
219 for(
unsigned int candNr = 0; candNr<recoEcalCandHandle->size(); candNr++) {
221 s2Map->insert(candRef,0);
230 auto dPhi1BestS2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
231 auto dPhi2BestS2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
232 auto dzBestS2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
233 auto s2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
235 auto nrClusMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
236 auto seedClusEFracMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
237 auto phiWidthMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
238 auto etaWidthMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
240 std::vector<PixelData> pixelData;
241 for(
size_t hitNr=0;hitNr<
nrHits_;hitNr++){
246 for(
unsigned int candNr = 0; candNr<recoEcalCandHandle->size(); candNr++) {
252 for(
auto &
seed : *pixelSeedsHandle){
255 if(&(*candSCRef) == &(*pixelSCRef)){
257 std::array<float,4> s2Data =
calS2(
seed,-1);
258 std::array<float,4> s2DataPos =
calS2(
seed,+1);
259 if(s2Data[0]<bestS2[0]) bestS2=s2Data;
260 if(s2DataPos[0]<bestS2[0]) bestS2=s2DataPos;
263 for(
auto& pixelDatum : pixelData){
264 pixelDatum.fill(
seed);
271 s2Map->insert(candRef,bestS2[0]);
273 dPhi1BestS2Map->insert(candRef,bestS2[1]);
274 dPhi2BestS2Map->insert(candRef,bestS2[2]);
275 dzBestS2Map->insert(candRef,bestS2[3]);
278 nrClusMap->insert(candRef,candSCRef->clustersSize());
279 float seedClusEFrac = candSCRef->rawEnergy()>0 ? candSCRef->seed()->energy() / candSCRef->rawEnergy() : 0.;
282 seedClusEFracMap->insert(candRef,seedClusEFrac);
283 float phiWidth = candSCRef->phiWidth();
284 float etaWidth = candSCRef->etaWidth();
285 phiWidthMap->insert(candRef,phiWidth);
286 etaWidthMap->insert(candRef,etaWidth);
288 for(
auto& pixelDatum : pixelData){
289 pixelDatum.fill(candRef);
301 for(
auto& pixelDatum : pixelData){
302 pixelDatum.putInto(iEvent);
305 iEvent.
put(
std::move(seedClusEFracMap),
"seedClusEFrac");
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandidateToken_
float dPhiBest(size_t hitNr) const
std::array< float, 4 > calS2(const reco::ElectronSeed &seed, int charge) const
float dRZBest(size_t hitNr) const
const edm::EDGetTokenT< reco::ElectronSeedCollection > pixelSeedsToken_