57 preshClusterCollectionX_ = ps.
getParameter<std::string>(
"preshClusterCollectionX");
58 preshClusterCollectionY_ = ps.
getParameter<std::string>(
"preshClusterCollectionY");
63 assocSClusterCollection_ = ps.
getParameter<std::string>(
"assocSClusterCollection");
65 produces< reco::PreshowerClusterCollection >(preshClusterCollectionX_);
66 produces< reco::PreshowerClusterCollection >(preshClusterCollectionY_);
67 produces< reco::SuperClusterCollection >(assocSClusterCollection_);
69 float preshStripECut = ps.
getParameter<
double>(
"preshStripEnergyCut");
70 int preshSeededNst = ps.
getParameter<
int>(
"preshSeededNstrip");
71 preshClustECut = ps.
getParameter<
double>(
"preshClusterEnergyCut");
110 evt.
getByLabel(endcapSClusterProducer_, pSuperClusters);
118 LogTrace(
"EcalClusters") <<
"PreshowerClusterProducerInfo: ### Total # of preshower RecHits: "<< rechits->
size();
121 std::map<DetId, EcalRecHit> rechits_map;
123 for (it = rechits->
begin(); it != rechits->
end(); it++) {
125 if (it->recoFlag()==1 || it->recoFlag()==14 || (it->recoFlag()<=10 && it->recoFlag()>=5))
continue;
127 rechits_map.insert(std::make_pair(it->id(), *it));
130 std::set<DetId> used_strips;
132 LogTrace(
"EcalClusters") <<
"PreshowerClusterProducerInfo: ### rechits_map of size " << rechits_map.size() <<
" was created!";
139 reco::SuperClusterCollection::const_iterator it_super;
142 for (it_super=SClusts->begin(); it_super!=SClusts->end(); ++it_super) {
147 if (fabs(it_super->eta()) < 1.9) ieta = 0;
148 else if (fabs(it_super->eta()) >= 1.9 && fabs(it_super->eta()) < 2.1) ieta = 1;
149 else if (fabs(it_super->eta()) >= 2.1 && fabs(it_super->eta()) < 2.3) ieta = 2;
150 else if (fabs(it_super->eta()) >= 2.3) ieta = 3;
154 LogTrace(
"EcalClusters")<<
" superE = " << it_super->energy() <<
" superETA = " << it_super->eta() <<
" superPHI = " << it_super->phi() ;
160 for ( ; bc_iter !=it_super->clustersEnd(); ++bc_iter ) {
164 double X = (*bc_iter)->x();
165 double Y = (*bc_iter)->y();
166 double Z = (*bc_iter)->z();
178 if (status_p1->getStatusCode() == 1) condP1 = 0;
179 if (status_p2->getStatusCode() == 1) condP2 = 0;
180 }
else if (strip1 ==
ESDetId(0))
187 for (
int i=0;
i<preshNclust_;
i++) {
188 reco::PreshowerCluster cl1 = presh_algo->makeOneCluster(strip1,&used_strips,&rechits_map,geometry_p,topology_p);
190 if (cl1.
energy() > preshClustECut) {
191 clusters1.push_back(cl1);
197 if ( cl2.
energy() > preshClustECut) {
198 clusters2.push_back(cl2);
208 LogTrace(
"EcalClusters") <<
" For SC #" << isc-1 <<
", containing "
209 << it_super->clustersSize()
210 <<
" basic clusters, PreshowerClusterAlgo made "
211 << clusters1.size() <<
" in X plane and "
213 <<
" in Y plane " <<
" preshower clusters " ;
216 if(e1+e2 > 1.0
e-10) {
221 if (condP1 == 1 && condP2 == 1) {
222 deltaE = gamma0_*(e1 + alpha0_*e2);
223 }
else if (condP1 == 1 && condP2 == 0) {
224 e2 = e1 * (aEta_[ieta] + bEta_[ieta] *it_super->energy());
225 deltaE = gamma1_*(e1 + alpha1_*e2);
226 }
else if (condP1 == 0 && condP2 == 1) {
227 if (aEta_[ieta] != 0 || bEta_[ieta] != 0)
228 e1 = e2 / (aEta_[ieta] + bEta_[ieta] *it_super->energy());
229 deltaE = gamma2_*(e1 + alpha2_*e2);
230 }
else if (condP1 == 0 && condP2 == 0) {
231 deltaE = gamma3_*(e1 + alpha3_*e2);
236 float E = it_super->energy() + deltaE;
238 LogTrace(
"EcalClusters") <<
" Creating corrected SC ";
242 else if (condP1 == 1 && condP2 == 0) sc.setPreshowerPlanesStatus(1);
243 else if (condP1 == 0 && condP2 == 1) sc.setPreshowerPlanesStatus(2);
244 else if (condP1 == 0 && condP2 == 0) sc.setPreshowerPlanesStatus(3);
246 if (sc.energy()*
sin(sc.position().theta())>etThresh_)
247 new_SC.push_back(sc);
248 LogTrace(
"EcalClusters") <<
" SuperClusters energies: new E = " << sc.energy() <<
" vs. old E =" << it_super->energy();
253 clusters_p1->assign(clusters1.begin(), clusters1.end());
254 clusters_p2->assign(clusters2.begin(), clusters2.end());
256 evt.
put( clusters_p1, preshClusterCollectionX_ );
257 evt.
put( clusters_p2, preshClusterCollectionY_ );
258 LogTrace(
"EcalClusters") <<
"Preshower clusters added to the event" ;
261 superclusters_p->assign(new_SC.begin(), new_SC.end());
262 evt.
put(superclusters_p, assocSClusterCollection_);
263 LogTrace(
"EcalClusters") <<
"Corrected SClusters added to the event" ;
275 const ESGain *gain = esgain_.product();
const double Z[kNumberCalorimeter]
T getParameter(std::string const &) const
float getConstAEta1() const
void push_back(Ptr< T > const &iPtr)
const self & getMap() const
float getESValueLow() const
Sin< T >::type sin(const T &t)
float getConstAEta2() const
std::vector< EcalRecHit >::const_iterator const_iterator
float getGammaLow2() const
float getAlphaHigh3() const
float getGammaHigh2() const
float getConstAEta0() const
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
void setBCRef(const CaloClusterPtr &r)
DetIds of component RecHits – now inherited from CaloCluster.
const_iterator find(uint32_t rawId) const
~PreshowerClusterProducer()
float getConstBEta0() const
std::vector< PreshowerCluster > PreshowerClusterCollection
collection of PreshowerCluster objects
double energy() const
cluster energy
float getConstBEta2() const
float getConstAEta3() const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
float getGammaHigh3() const
float getConstBEta1() const
float getGammaHigh1() const
const_iterator end() const
virtual void produce(edm::Event &evt, const edm::EventSetup &es)
void setPreshowerPlanesStatus(const uint32_t &status)
float getGammaLow3() const
float getGammaLow0() const
float getAlphaHigh0() const
float getAlphaLow3() const
float getAlphaHigh2() const
PreshowerClusterProducer(const edm::ParameterSet &ps)
void set(const edm::EventSetup &es)
float getAlphaLow2() const
T const * product() const
std::vector< Item >::const_iterator const_iterator
float getGammaLow1() const
float getAlphaHigh1() const
ESHandle< TrackerGeometry > geometry
float getConstBEta3() const
float getGammaHigh0() const
float getAlphaLow1() const
float getESValueHigh() const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
float getAlphaLow0() const
const_iterator begin() const
void set(const std::string &name, int value)
set the flag, with a run-time name