28 barrelSuperClusterProducer_ =
30 endcapSuperClusterProducer_ =
44 cluster_pt_thresh_ = ps.
getParameter<
double>(
"cluster_pt_thresh");
45 single_cluster_thresh_ = ps.
getParameter<
double>(
"single_cluster_thresh");
48 produces<EBDigiCollection>(selectedEcalEBDigiCollection_);
49 produces<EEDigiCollection>(selectedEcalEEDigiCollection_);
59 evt.
getByToken(barrelSuperClusterProducer_, pBarrelSuperClusters);
67 evt.
getByToken(endcapSuperClusterProducer_, pEndcapSuperClusters);
74 bool meet_single_thresh =
false;
78 float eta1 = clus1.
eta();
79 float energy1 = clus1.
energy();
80 float theta1 = 2*atan(
exp(-1.*eta1));
81 float cluspt1 = energy1 *
sin(theta1);
82 if (cluspt1 > cluster_pt_thresh_){
83 saveBarrelSuperClusters.push_back(clus1);
84 if (cluspt1 > single_cluster_thresh_)
85 meet_single_thresh =
true;
93 float eta1 = clus1.
eta();
94 float energy1 = clus1.
energy();
95 float theta1 = 2*atan(
exp(-1.*eta1));
96 float cluspt1 = energy1 *
sin(theta1);
97 if (cluspt1 > cluster_pt_thresh_){
98 saveEndcapSuperClusters.push_back(clus1);
99 if (cluspt1 > single_cluster_thresh_)
100 meet_single_thresh =
true;
104 auto SEBDigiCol = std::make_unique<EBDigiCollection>();
105 auto SEEDigiCol = std::make_unique<EEDigiCollection>();
106 int TotClus = saveBarrelSuperClusters.size() + saveEndcapSuperClusters.size();
108 if (TotClus >= nclus_sel_ || meet_single_thresh){
110 if (!saveBarrelSuperClusters.empty()){
130 std::vector<DetId> saveTheseDetIds;
137 DetId maxDetId = EcalClusterTools::getMaximum(*bc,rechits).first;
142 for (
int detloop=0; detloop <
int(saveTheseDetIds.size());++detloop){
146 blah!=digis->
end();blah++){
148 if (detL == blah->id()){
150 SEBDigiCol->push_back(detL);
153 for (
int iq =0;iq<myDigi.
size();++iq){
167 if (!saveEndcapSuperClusters.empty()){
187 std::set<DetId> saveTheseDetIds;
194 DetId maxDetId = EcalClusterTools::getMaximum(*bc,rechits).first;
200 blah!=digis->
end();blah++){
201 std::set<DetId>::const_iterator
finder = saveTheseDetIds.find(blah->id());
202 if (finder!=saveTheseDetIds.end()){
205 if (detL == blah->id()){
207 SEEDigiCol->push_back(detL);
209 for (
int iq =0;iq<myDigi.
size();++iq){
216 if (eecounter >=
int(saveTheseDetIds.size()))
break;
229 evt.
put(
std::move(SEBDigiCol), selectedEcalEBDigiCollection_);
230 evt.
put(
std::move(SEEDigiCol), selectedEcalEEDigiCollection_);
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
CaloTopology const * topology(0)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
T const * get() const
Returns C++ pointer to the item.
Sin< T >::type sin(const T &t)
EcalMGPASample sample(int i) const
const_iterator begin() const
uint16_t raw() const
get the raw word
double eta() const
pseudorapidity of cluster centroid
EcalDigiSelector(const edm::ParameterSet &ps)
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
double energy() const
cluster energy
T const * product() const
const_iterator end() const
void setSample(int i, EcalMGPASample sam)
const CaloClusterPtr & seed() const
seed BasicCluster
void produce(edm::Event &, const edm::EventSetup &) override
T const * product() const