47 : basicclusterCollection_ (ps.getParameter<
std::
string>(
"basicclusterCollection"))
48 , superclusterCollection_ (ps.getParameter<
std::
string>(
"superclusterCollection"))
50 , hitcollection_ (ps.getParameter<
edm::InputTag>(
"ecalhitcollection"))
56 , doIsolated_ (ps.getParameter<
bool>(
"doIsolated"))
58 , l1LowerThr_ (ps.getParameter<double> (
"l1LowerThr"))
59 , l1UpperThr_ (ps.getParameter<double> (
"l1UpperThr"))
60 , l1LowerThrIgnoreIsolation_ (ps.getParameter<double> (
"l1LowerThrIgnoreIsolation"))
62 , regionEtaMargin_ (ps.getParameter<double>(
"regionEtaMargin"))
63 , regionPhiMargin_ (ps.getParameter<double>(
"regionPhiMargin"))
69 ps.getParameter<double>(
"HybridBarrelSeedThr"),
70 ps.getParameter<
int>(
"step"),
71 ps.getParameter<double>(
"ethresh"),
72 ps.getParameter<double>(
"eseed"),
73 ps.getParameter<double>(
"xi"),
74 ps.getParameter<
bool>(
"useEtForXi"),
75 ps.getParameter<double>(
"ewing"),
77 ps.getParameter<
std::vector<
std::
string> >(
"RecHitFlagToBeExcluded")),
79 ps.getParameter<
bool>(
"dynamicEThresh"),
80 ps.getParameter<double>(
"eThreshA"),
81 ps.getParameter<double>(
"eThreshB"),
83 ps.getParameter<
std::vector<
std::
string> >(
"RecHitSeverityToBeExcluded")),
84 ps.getParameter<
bool>(
"excludeFlagged")))
110 desc.
add<
bool>(
"doIsolated",
true);
111 desc.
add<
double>(
"l1LowerThr", 0);
112 desc.
add<
double>(
"l1UpperThr", 9999.0);
113 desc.
add<
double>(
"l1LowerThrIgnoreIsolation", 999.0);
114 desc.
add<
double>(
"regionEtaMargin", 0.14);
115 desc.
add<
double>(
"regionPhiMargin", 0.4);
118 posCalcPSET.
add<
double>(
"T0_barl", 7.4);
119 posCalcPSET.
add<
double>(
"T0_endc", 3.1);
120 posCalcPSET.
add<
double>(
"T0_endcPresh", 1.2);
121 posCalcPSET.
add<
double>(
"W0", 4.2);
122 posCalcPSET.
add<
double>(
"X0", 0.89);
123 posCalcPSET.
add<
bool>(
"LogWeighted",
true);
126 desc.
add<std::vector<std::string>>(
"RecHitFlagToBeExcluded", std::vector<std::string>());
127 desc.
add<std::vector<std::string> >(
"RecHitSeverityToBeExcluded", std::vector<std::string>());
128 desc.
add<
double>(
"severityRecHitThreshold", 4.0);
129 desc.
add<
double>(
"HybridBarrelSeedThr", 1.0);
130 desc.
add<
int>(
"step", 10);
131 desc.
add<
double>(
"ethresh", 0.1);
132 desc.
add<
double>(
"eseed", 0.35);
133 desc.
add<
double>(
"xi", 0);
134 desc.
add<
bool>(
"useEtForXi",
true);
135 desc.
add<
double>(
"ewing", 1.0);
136 desc.
add<
bool>(
"dynamicEThresh",
false);
137 desc.
add<
double>(
"eThreshA", 0.003);
138 desc.
add<
double>(
"eThreshB", 0.1);
139 desc.
add<
bool>(
"excludeFlagged",
false);
140 desc.
add<
bool>(
"dynamicPhiRoad",
false);
143 descriptions.
add(
"hltEgammaHLTHybridClusterProducer", desc);
155 edm::LogError(
"ProductNotFound")<<
"could not get a handle on the EcalRecHitCollection!" << std::endl;
165 std::unique_ptr<const CaloSubdetectorTopology>
topology;
177 topology = std::make_unique<EcalBarrelTopology>(*geoHandle);
180 topology = std::make_unique<EcalEndcapTopology>(*geoHandle);
183 topology = std::make_unique<EcalPreshowerTopology>();
184 }
else throw(std::runtime_error(
"\n\nHybrid Cluster Producer encountered invalied ecalhitcollection type.\n\n"));
200 std::vector<RectangularEtaPhiRegion>
regions;
203 for( l1extra::L1EmParticleCollection::const_iterator emItr = emIsolColl->begin(); emItr != emIsolColl->end() ;++emItr ){
208 int etaIndex = emItr->gctEmCand()->etaIndex() ;
209 int phiIndex = emItr->gctEmCand()->phiIndex() ;
219 if(((
float)(etaLow)>-1.479 && (
float)(etaLow)<1.479) ||
220 ((
float)(etaHigh)>-1.479 && (
float)(etaHigh)<1.479)) isbarl=1;
228 if (etaHigh>1.479) etaHigh=1.479;
229 if (etaLow<-1.479) etaLow=-1.479;
238 for( l1extra::L1EmParticleCollection::const_iterator emItr = emNonIsolColl->begin(); emItr != emNonIsolColl->end() ;++emItr ){
245 int etaIndex = emItr->gctEmCand()->etaIndex() ;
246 int phiIndex = emItr->gctEmCand()->phiIndex() ;
256 if(((
float)(etaLow)>-1.479 && (
float)(etaLow)<1.479) ||
257 ((
float)(etaHigh)>-1.479 && (
float)(etaHigh)<1.479)) isbarl=1;
265 if (etaHigh>1.479) etaHigh=1.479;
266 if (etaLow<-1.479) etaLow=-1.479;
279 auto basicclusters_p = std::make_unique<reco::BasicClusterCollection>();
280 basicclusters_p->assign(basicClusters.begin(), basicClusters.end());
289 for (
unsigned int i = 0;
i < clusterCollection.size();
i++){
295 auto superclusters_p = std::make_unique<reco::SuperClusterCollection>();
296 superclusters_p->assign(superClusters.begin(), superClusters.end());
T getParameter(std::string const &) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
HybridClusterAlgo *const hybrid_p
const double regionEtaMargin_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
~EgammaHLTHybridClusterProducer() override
double etaBinHighEdge(unsigned int etaIndex, bool central=true) const
CaloTopology const * topology(0)
double etaBinLowEdge(unsigned int etaIndex, bool central=true) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void push_back(Ptr< T > const &iPtr)
const edm::EDGetTokenT< l1extra::L1EmParticleCollection > l1TagIsolated_
void produce(edm::Event &, const edm::EventSetup &) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
reco::SuperClusterCollection makeSuperClusters(const reco::CaloClusterPtrVector &)
const std::string basicclusterCollection_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void setDynamicPhiRoad(const edm::ParameterSet &bremRecoveryPset)
const edm::InputTag hitcollection_
T const * product() const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< BasicCluster > BasicClusterCollection
collection of BasicCluster objects
const std::string superclusterCollection_
const edm::EDGetTokenT< l1extra::L1EmParticleCollection > l1TagNonIsolated_
int StringToEnumValue(std::string const &enumConstName)
double emJetPhiBinLowEdge(unsigned int phiIndex) const
void makeClusters(const EcalRecHitCollection *, const CaloSubdetectorGeometry *geometry, reco::BasicClusterCollection &basicClusters, const EcalSeverityLevelAlgo *sevLv, bool regional=false, const std::vector< RectangularEtaPhiRegion > ®ions=std::vector< RectangularEtaPhiRegion >())
T const * product() const
const edm::EDGetTokenT< EcalRecHitCollection > hittoken_
const double l1LowerThrIgnoreIsolation_
EgammaHLTHybridClusterProducer(const edm::ParameterSet &ps)
const double regionPhiMargin_
double emJetPhiBinHighEdge(unsigned int phiIndex) const