41 endcapSClusterToken_ =
43 caloGeometryToken_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
45 PreshowerClusterShapeCollectionX_ = ps.
getParameter<
string>(
"PreshowerClusterShapeCollectionX");
46 PreshowerClusterShapeCollectionY_ = ps.
getParameter<
string>(
"PreshowerClusterShapeCollectionY");
48 produces<reco::PreshowerClusterShapeCollection>(PreshowerClusterShapeCollectionX_);
49 produces<reco::PreshowerClusterShapeCollection>(PreshowerClusterShapeCollectionY_);
51 float preshStripECut = ps.
getParameter<
double>(
"preshStripEnergyCut");
54 string debugString = ps.
getParameter<
string>(
"debugLevel");
56 string tmpPath = ps.
getUntrackedParameter<
string>(
"pathToWeightFiles",
"RecoEcal/EgammaClusterProducers/data/");
60 LogTrace(
"EcalClusters") <<
"PreshowerClusterShapeProducer:presh_pi0_algo class instantiated ";
70 LogTrace(
"EcalClusters") <<
"\n ....... Event " << evt.
id() <<
" with Number = " << nEvt_ + 1
71 <<
" is analyzing ....... ";
82 auto ps_cl_for_pi0_disc_x = std::make_unique<reco::PreshowerClusterShapeCollection>();
83 auto ps_cl_for_pi0_disc_y = std::make_unique<reco::PreshowerClusterShapeCollection>();
85 std::unique_ptr<CaloSubdetectorTopology> topology_p;
87 topology_p = std::make_unique<EcalPreshowerTopology>();
94 LogTrace(
"EcalClusters") <<
"PreshowerClusterShapeProducer: ### Total # of preshower RecHits: " <<
rechits->size();
99 map<DetId, EcalRecHit> rechits_map;
102 rechits_map.insert(make_pair(it->id(), *it));
105 LogTrace(
"EcalClusters") <<
"PreshowerClusterShapeProducer: ### Preshower RecHits_map of size " << rechits_map.size()
117 evt.
getByToken(endcapSClusterToken_, pSuperClusters);
119 LogTrace(
"EcalClusters") <<
"### Total # Endcap Superclusters: " << SClusts->size();
121 SuperClusterCollection::const_iterator it_s;
122 for (it_s = SClusts->begin(); it_s != SClusts->end(); it_s++) {
125 float SC_eta = it_super->eta();
127 LogTrace(
"EcalClusters") <<
"PreshowerClusterShapeProducer: superCl_E = " << it_super->energy()
128 <<
" superCl_Et = " << it_super->energy() *
sin(2 * atan(
exp(-it_super->eta())))
129 <<
" superCl_Eta = " << SC_eta <<
" superCl_Phi = " << it_super->phi();
131 if (fabs(SC_eta) >= 1.65 && fabs(SC_eta) <= 2.5) {
133 const GlobalPoint pointSC(it_super->x(), it_super->y(), it_super->z());
134 LogTrace(
"EcalClusters") <<
"SC centroind = " << pointSC;
138 DetId tmp_stripX = (dynamic_cast<const EcalPreshowerGeometry*>(geometry_p))->getClosestCellInPlane(pointSC, 1);
139 DetId tmp_stripY = (dynamic_cast<const EcalPreshowerGeometry*>(geometry_p))->getClosestCellInPlane(pointSC, 2);
143 vector<float> vout_stripE1 = presh_pi0_algo->findPreshVector(stripX, &rechits_map, topology_p.get());
144 vector<float> vout_stripE2 = presh_pi0_algo->findPreshVector(stripY, &rechits_map, topology_p.get());
146 LogTrace(
"EcalClusters") <<
"PreshowerClusterShapeProducer : ES Energy vector associated to the given SC = ";
147 for (
int k1 = 0; k1 < 11; k1++) {
148 LogTrace(
"EcalClusters") << vout_stripE1[k1] <<
" ";
151 for (
int k1 = 0; k1 < 11; k1++) {
152 LogTrace(
"EcalClusters") << vout_stripE2[k1] <<
" ";
157 ps_cl_x.push_back(ps1);
161 ps_cl_y.push_back(ps2);
167 ps_cl_for_pi0_disc_x->assign(ps_cl_x.begin(), ps_cl_x.end());
168 ps_cl_for_pi0_disc_y->assign(ps_cl_y.begin(), ps_cl_y.end());
170 evt.
put(
std::move(ps_cl_for_pi0_disc_x), PreshowerClusterShapeCollectionX_);
171 evt.
put(
std::move(ps_cl_for_pi0_disc_y), PreshowerClusterShapeCollectionY_);
172 LogTrace(
"EcalClusters") <<
"PreshowerClusterShapeCollection added to the event";
176 LogDebug(
"PiZeroDiscriminatorDebug") << ostr.str();