CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
ElectronSeedProducer Class Reference
Inheritance diagram for ElectronSeedProducer:
edm::stream::EDProducer<>

Public Member Functions

 ElectronSeedProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) final
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

reco::SuperClusterRefVector filterClusters (math::XYZPoint const &beamSpotPosition, const edm::Handle< reco::SuperClusterCollection > &superClusters) const
 

Private Attributes

bool allowHGCal_
 
bool applyHOverECut_ = true
 
edm::EDGetTokenT< reco::BeamSpotbeamSpotTag_
 
std::unique_ptr< ElectronHcalHelperhcalHelper_ = 0
 
std::unique_ptr< hgcal::ClusterToolshgcClusterTools_
 
std::vector< edm::EDGetTokenT< TrajectorySeedCollection > > initialSeeds_
 
std::unique_ptr< ElectronSeedGeneratormatcher_
 
double maxHBarrel_
 
double maxHEndcaps_
 
double maxHOverEBarrel_
 
double maxHOverEEndcaps_
 
bool prefilteredSeeds_
 
double SCEtCut_
 
std::unique_ptr< SeedFilterseedFilter_
 
edm::EDGetTokenT< reco::SuperClusterCollectionsuperClusters_ [2]
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Description: EDProducer of ElectronSeed objects

Implementation: <Notes on="" implementation>="">

Definition at line 34 of file ElectronSeedProducer.cc.

Constructor & Destructor Documentation

ElectronSeedProducer::ElectronSeedProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 69 of file ElectronSeedProducer.cc.

References allowHGCal_, applyHOverECut_, beamSpotTag_, edm::ParameterSet::empty(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), hcalHelper_, ElectronHcalHelper::Configuration::hcalTowers, hgcClusterTools_, ElectronHcalHelper::Configuration::hOverEConeSize, ElectronHcalHelper::Configuration::hOverEPtMin, initialSeeds_, matcher_, maxHBarrel_, maxHEndcaps_, maxHOverEBarrel_, maxHOverEEndcaps_, prefilteredSeeds_, SCEtCut_, seedFilter_, superClusters_, GlobalPosition_Frontier_DevDB_cff::tag, SeedFilter::Tokens::token_bs, ElectronSeedGenerator::Tokens::token_bs, SeedFilter::Tokens::token_vtx, ElectronHcalHelper::Configuration::useTowers, and edm::vector_transform().

69  {
70  auto const& conf = iConfig.getParameter<edm::ParameterSet>("SeedConfiguration");
71 
72  auto legacyConfSeeds = conf.getParameter<edm::InputTag>("initialSeeds");
73  if (legacyConfSeeds.label().empty()) { //new format
75  edm::vector_transform(conf.getParameter<std::vector<edm::InputTag>>("initialSeedsVector"),
76  [this](edm::InputTag const& tag) { return consumes<TrajectorySeedCollection>(tag); });
77  } else {
78  initialSeeds_ = {consumes<TrajectorySeedCollection>(conf.getParameter<edm::InputTag>("initialSeeds"))};
79  }
80 
81  SCEtCut_ = conf.getParameter<double>("SCEtCut");
82  prefilteredSeeds_ = conf.getParameter<bool>("preFilteredSeeds");
83 
84  auto theconsumes = consumesCollector();
85 
86  // new beamSpot tag
87  beamSpotTag_ = consumes<reco::BeamSpot>(conf.getParameter<edm::InputTag>("beamSpot"));
88 
89  // for H/E
90  applyHOverECut_ = conf.getParameter<bool>("applyHOverECut");
91  if (applyHOverECut_) {
93  hcalCfg.hOverEConeSize = conf.getParameter<double>("hOverEConeSize");
94  if (hcalCfg.hOverEConeSize > 0) {
95  hcalCfg.useTowers = true;
96  hcalCfg.hcalTowers = consumes<CaloTowerCollection>(conf.getParameter<edm::InputTag>("hcalTowers"));
97  hcalCfg.hOverEPtMin = conf.getParameter<double>("hOverEPtMin");
98  }
99  hcalHelper_ = std::make_unique<ElectronHcalHelper>(hcalCfg);
100 
101  allowHGCal_ = conf.getParameter<bool>("allowHGCal");
102  if (allowHGCal_) {
103  const edm::ParameterSet& hgcCfg = conf.getParameterSet("HGCalConfig");
104  hgcClusterTools_ = std::make_unique<hgcal::ClusterTools>(hgcCfg, theconsumes);
105  }
106 
107  maxHOverEBarrel_ = conf.getParameter<double>("maxHOverEBarrel");
108  maxHOverEEndcaps_ = conf.getParameter<double>("maxHOverEEndcaps");
109  maxHBarrel_ = conf.getParameter<double>("maxHBarrel");
110  maxHEndcaps_ = conf.getParameter<double>("maxHEndcaps");
111  }
112 
113  edm::ParameterSet rpset = conf.getParameter<edm::ParameterSet>("RegionPSet");
114 
116  esg_tokens.token_bs = beamSpotTag_;
117  esg_tokens.token_vtx = mayConsume<reco::VertexCollection>(conf.getParameter<edm::InputTag>("vertices"));
118 
119  matcher_ = std::make_unique<ElectronSeedGenerator>(conf, esg_tokens);
120 
121  superClusters_[0] =
122  consumes<reco::SuperClusterCollection>(iConfig.getParameter<edm::InputTag>("barrelSuperClusters"));
123  superClusters_[1] =
124  consumes<reco::SuperClusterCollection>(iConfig.getParameter<edm::InputTag>("endcapSuperClusters"));
125 
126  // Construction of SeedFilter was in beginRun() with the comment
127  // below, but it has to be done here because of ConsumesCollector
128  //
129  // FIXME: because of a bug presumably in tracker seeding,
130  // perhaps in CombinedHitPairGenerator, badly caching some EventSetup product,
131  // we must redo the SeedFilter for each run.
132  if (prefilteredSeeds_) {
133  SeedFilter::Tokens sf_tokens;
134  sf_tokens.token_bs = beamSpotTag_;
135  sf_tokens.token_vtx = consumes<std::vector<reco::Vertex>>(rpset.getParameter<edm::InputTag>("VertexProducer"));
136 
137  edm::ConsumesCollector iC = consumesCollector();
138  seedFilter_ = std::make_unique<SeedFilter>(conf, sf_tokens, iC);
139  }
140 
141  //register your products
142  produces<ElectronSeedCollection>();
143 }
T getParameter(std::string const &) const
bool empty() const
Definition: ParameterSet.h:190
edm::EDGetTokenT< reco::BeamSpot > token_bs
std::unique_ptr< ElectronHcalHelper > hcalHelper_
std::unique_ptr< ElectronSeedGenerator > matcher_
std::unique_ptr< SeedFilter > seedFilter_
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
ParameterSet const & getParameterSet(std::string const &) const
edm::EDGetTokenT< reco::SuperClusterCollection > superClusters_[2]
edm::EDGetTokenT< reco::BeamSpot > token_bs
Definition: SeedFilter.h:38
edm::EDGetTokenT< CaloTowerCollection > hcalTowers
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
edm::EDGetTokenT< std::vector< reco::Vertex > > token_vtx
Definition: SeedFilter.h:37
std::unique_ptr< hgcal::ClusterTools > hgcClusterTools_
std::vector< edm::EDGetTokenT< TrajectorySeedCollection > > initialSeeds_

Member Function Documentation

void ElectronSeedProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 243 of file ElectronSeedProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), DEFINE_FWK_MODULE, and AlCaHLTBitMon_QueryRunRegistry::string.

243  {
245  desc.add<edm::InputTag>("endcapSuperClusters",
246  {"particleFlowSuperClusterECAL", "particleFlowSuperClusterECALEndcapWithPreshower"});
247  {
248  edm::ParameterSetDescription psd0, psd1, psd2, psd3;
249  psd1.add<std::string>("ComponentName", "StandardHitPairGenerator");
250  psd1.addUntracked<int>("useOnDemandTracker", 0);
251  psd0.add<edm::ParameterSetDescription>("OrderedHitsFactoryPSet", psd1);
252 
253  psd2.add<double>("deltaPhiRegion", 0.4);
254  psd2.add<double>("originHalfLength", 15.0);
255  psd2.add<bool>("useZInVertex", true);
256  psd2.add<double>("deltaEtaRegion", 0.1);
257  psd2.add<double>("ptMin", 1.5);
258  psd2.add<double>("originRadius", 0.2);
259  psd2.add<edm::InputTag>("VertexProducer", {"dummyVertices"});
260  psd0.add<edm::ParameterSetDescription>("RegionPSet", psd2);
261 
262  // steering
263  psd0.add<edm::InputTag>("initialSeeds", {""}); //keep for be compatibility
264  psd0.add<std::vector<edm::InputTag>>("initialSeedsVector", {});
265  psd0.add<bool>("preFilteredSeeds", false);
266  psd0.add<bool>("useRecoVertex", false);
267  psd0.add<edm::InputTag>("vertices", {"offlinePrimaryVerticesWithBS"});
268  psd0.add<edm::InputTag>("beamSpot", {"offlineBeamSpot"});
269  psd0.add<bool>("dynamicPhiRoad", true);
270 
271  // specify where to get the hits from
272  psd0.add<edm::InputTag>("measurementTrackerEvent", {"MeasurementTrackerEvent"});
273 
274  // SC filtering
275  psd0.add<double>("SCEtCut", 0.0);
276 
277  // H/E
278  psd0.add<bool>("applyHOverECut", true);
279  psd0.add<double>("hOverEConeSize", 0.15);
280  psd0.add<double>("maxHOverEBarrel", 0.15);
281  psd0.add<double>("maxHOverEEndcaps", 0.15);
282  psd0.add<double>("maxHBarrel", 0.0);
283  psd0.add<double>("maxHEndcaps", 0.0);
284 
285  // H/E towers
286  psd0.add<edm::InputTag>("hcalTowers", {"towerMaker"});
287  psd0.add<double>("hOverEPtMin", 0.0);
288 
289  // H/E equivalent for HGCal
290  psd0.add<bool>("allowHGCal", false);
292  psd4.add<edm::InputTag>("HGCEEInput", {"HGCalRecHit", "HGCEERecHits"});
293  psd4.add<edm::InputTag>("HGCFHInput", {"HGCalRecHit", "HGCHEFRecHits"});
294  psd4.add<edm::InputTag>("HGCBHInput", {"HGCalRecHit", "HGCHEBRecHits"});
295  psd0.add<edm::ParameterSetDescription>("HGCalConfig", psd4);
296 
297  // r/z windows
298  psd0.add<double>("nSigmasDeltaZ1", 5.0); // in case beam spot is used for the matching
299  psd0.add<double>("deltaZ1WithVertex", 25.0); // in case reco vertex is used for the matching
300  psd0.add<double>("z2MinB", -0.09);
301  psd0.add<double>("z2MaxB", 0.09);
302  psd0.add<double>("r2MinF", -0.15);
303  psd0.add<double>("r2MaxF", 0.15);
304  psd0.add<double>("rMinI", -0.2); // intermediate region SC in EB and 2nd hits in PXF
305  psd0.add<double>("rMaxI", 0.2); // intermediate region SC in EB and 2nd hits in PXF
306 
307  // phi windows (dynamic)
308  psd0.add<double>("LowPtThreshold", 5.0);
309  psd0.add<double>("HighPtThreshold", 35.0);
310  psd0.add<double>("SizeWindowENeg", 0.675);
311  psd0.add<double>("DeltaPhi1Low", 0.23);
312  psd0.add<double>("DeltaPhi1High", 0.08);
313  psd0.add<double>("DeltaPhi2B", 0.008);
314  psd0.add<double>("DeltaPhi2F", 0.012);
315 
316  // phi windows (non dynamic, overwritten in case dynamic is selected)
317  psd0.add<double>("ePhiMin1", -0.125);
318  psd0.add<double>("ePhiMax1", 0.075);
319  psd0.add<double>("pPhiMin1", -0.075);
320  psd0.add<double>("pPhiMax1", 0.125);
321  psd0.add<double>("PhiMin2B", -0.002);
322  psd0.add<double>("PhiMax2B", 0.002);
323  psd0.add<double>("PhiMin2F", -0.003);
324  psd0.add<double>("PhiMax2F", 0.003);
325 
326  psd3.add<std::string>("ComponentName", "SeedFromConsecutiveHitsCreator");
327  psd3.add<std::string>("propagator", "PropagatorWithMaterial");
328  psd3.add<double>("SeedMomentumForBOFF", 5.0);
329  psd3.add<double>("OriginTransverseErrorMultiplier", 1.0);
330  psd3.add<double>("MinOneOverPtError", 1.0);
331  psd3.add<std::string>("magneticField", "");
332  psd3.add<std::string>("TTRHBuilder", "WithTrackAngle");
333  psd3.add<bool>("forceKinematicWithRegionDirection", false);
334 
335  psd0.add<edm::ParameterSetDescription>("SeedCreatorPSet", psd3);
336 
337  desc.add<edm::ParameterSetDescription>("SeedConfiguration", psd0);
338  }
339  desc.add<edm::InputTag>("barrelSuperClusters",
340  {"particleFlowSuperClusterECAL", "particleFlowSuperClusterECALBarrel"});
341  descriptions.add("ecalDrivenElectronSeeds", desc);
342 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
SuperClusterRefVector ElectronSeedProducer::filterClusters ( math::XYZPoint const &  beamSpotPosition,
const edm::Handle< reco::SuperClusterCollection > &  superClusters 
) const
private

Definition at line 207 of file ElectronSeedProducer.cc.

References allowHGCal_, applyHOverECut_, hgcalTestNeighbor_cfi::detector, EcalBarrel, EcalEndcap, PVValHelper::eta, hcalHelper_, hgcClusterTools_, mps_fire::i, EcalTools::isHGCalDet(), LogDebug, maxHBarrel_, maxHEndcaps_, maxHOverEBarrel_, maxHOverEEndcaps_, edm::RefVector< C, T, F >::push_back(), SCEtCut_, edm::RefVector< C, T, F >::size(), and HLT_2018_cff::superClusters.

Referenced by produce().

208  {
209  SuperClusterRefVector sclRefs;
210 
211  for (unsigned int i = 0; i < superClusters->size(); ++i) {
212  auto const& scl = (*superClusters)[i];
213  double sclEta = EleRelPoint(scl.position(), beamSpotPosition).eta();
214  if (scl.energy() / cosh(sclEta) > SCEtCut_) {
215  if (applyHOverECut_) {
216  bool hoeVeto = false;
217  double had = hcalHelper_->hcalESumDepth1(scl) + hcalHelper_->hcalESumDepth2(scl);
218  double scle = scl.energy();
219  int det_group = scl.seed()->hitsAndFractions()[0].first.det();
220  int detector = scl.seed()->hitsAndFractions()[0].first.subdetId();
221  if (detector == EcalBarrel && (had < maxHBarrel_ || had / scle < maxHOverEBarrel_))
222  hoeVeto = true;
223  else if (!allowHGCal_ && detector == EcalEndcap && (had < maxHEndcaps_ || had / scle < maxHOverEEndcaps_))
224  hoeVeto = true;
225  else if (allowHGCal_ && EcalTools::isHGCalDet((DetId::Detector)det_group)) {
226  float had_fraction = hgcClusterTools_->getClusterHadronFraction(*(scl.seed()));
227  hoeVeto = (had_fraction >= 0.f && had_fraction < maxHOverEEndcaps_);
228  }
229  if (hoeVeto) {
230  sclRefs.push_back({superClusters, i});
231  }
232  } else {
233  sclRefs.push_back({superClusters, i});
234  }
235  }
236  }
237  LogDebug("ElectronSeedProducer") << "Filtered out " << sclRefs.size() << " superclusters from "
238  << superClusters->size();
239 
240  return sclRefs;
241 }
#define LogDebug(id)
static bool isHGCalDet(DetId::Detector thedet)
identify HGCal cells
Definition: EcalTools.h:48
std::unique_ptr< ElectronHcalHelper > hcalHelper_
Detector
Definition: DetId.h:24
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
Definition: RefVector.h:67
size_type size() const
Size of the RefVector.
Definition: RefVector.h:102
std::unique_ptr< hgcal::ClusterTools > hgcClusterTools_
void ElectronSeedProducer::produce ( edm::Event e,
const edm::EventSetup iSetup 
)
final

Definition at line 145 of file ElectronSeedProducer.cc.

References allowHGCal_, beamSpotTag_, filterClusters(), edm::EventSetup::get(), edm::Event::get(), edm::Event::getHandle(), hcalHelper_, hgcClusterTools_, mps_fire::i, edm::Ref< C, T, F >::id(), initialSeeds_, LogDebug, matcher_, eostools::move(), prefilteredSeeds_, edm::Event::put(), SurveyInfoScenario_cff::seed, seedFilter_, and superClusters_.

145  {
146  LogDebug("ElectronSeedProducer") << "[ElectronSeedProducer::produce] entering ";
147 
148  std::vector<TrajectorySeedCollection const*> initialSeedCollections;
149  std::unique_ptr<TrajectorySeedCollection> initialSeedCollectionPtr = nullptr; //created on the fly
150 
151  if (hcalHelper_) {
152  hcalHelper_->checkSetup(iSetup);
153  hcalHelper_->readEvent(e);
154  if (allowHGCal_) {
155  hgcClusterTools_->getEventSetup(iSetup);
156  hgcClusterTools_->getEvent(e);
157  }
158  }
159 
160  matcher_->setupES(iSetup);
161 
162  // get initial TrajectorySeeds if necessary
163  if (!prefilteredSeeds_) {
164  initialSeedCollections.clear();
165  for (auto const& seeds : initialSeeds_) {
166  initialSeedCollections.push_back(&e.get(seeds));
167  }
168  } else {
169  initialSeedCollections.clear(); //reset later
170  initialSeedCollectionPtr = std::make_unique<TrajectorySeedCollection>();
171  }
172 
173  auto seeds = std::make_unique<ElectronSeedCollection>();
174  auto const& beamSportPosition = e.get(beamSpotTag_).position();
175 
176  // loop over barrel + endcap
177  for (unsigned int i = 0; i < 2; i++) {
178  auto clusterRefs = filterClusters(beamSportPosition, e.getHandle(superClusters_[i]));
179  if (prefilteredSeeds_) {
180  for (auto const& sclRef : clusterRefs) {
181  seedFilter_->seeds(e, iSetup, sclRef, initialSeedCollectionPtr.get());
182  initialSeedCollections.push_back(initialSeedCollectionPtr.get());
183  LogDebug("ElectronSeedProducer") << "Number of Seeds: " << initialSeedCollections.back()->size();
184  }
185  }
186  matcher_->run(e, iSetup, clusterRefs, initialSeedCollections, *seeds);
187  }
188 
189  // store the accumulated result
190 #ifdef EDM_ML_DEBUG
191  for (auto const& seed : *seeds) {
192  SuperClusterRef superCluster = seed.caloCluster().castTo<SuperClusterRef>();
193  LogDebug("ElectronSeedProducer") << "new seed with " << seed.nHits() << " hits"
194  << ", charge " << seed.getCharge() << " and cluster energy "
195  << superCluster->energy() << " PID " << superCluster.id();
196  }
197 #endif
198  e.put(std::move(seeds));
199 }
#define LogDebug(id)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
std::unique_ptr< ElectronHcalHelper > hcalHelper_
ProductID id() const
Accessor for product ID.
Definition: Ref.h:244
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
Definition: Event.h:547
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:334
reco::SuperClusterRefVector filterClusters(math::XYZPoint const &beamSpotPosition, const edm::Handle< reco::SuperClusterCollection > &superClusters) const
std::unique_ptr< ElectronSeedGenerator > matcher_
std::unique_ptr< SeedFilter > seedFilter_
edm::EDGetTokenT< reco::SuperClusterCollection > superClusters_[2]
T get() const
Definition: EventSetup.h:73
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
def move(src, dest)
Definition: eostools.py:511
std::unique_ptr< hgcal::ClusterTools > hgcClusterTools_
std::vector< edm::EDGetTokenT< TrajectorySeedCollection > > initialSeeds_

Member Data Documentation

bool ElectronSeedProducer::allowHGCal_
private

Definition at line 63 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), filterClusters(), and produce().

bool ElectronSeedProducer::applyHOverECut_ = true
private

Definition at line 53 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and filterClusters().

edm::EDGetTokenT<reco::BeamSpot> ElectronSeedProducer::beamSpotTag_
private

Definition at line 48 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and produce().

std::unique_ptr<ElectronHcalHelper> ElectronSeedProducer::hcalHelper_ = 0
private

Definition at line 54 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), filterClusters(), and produce().

std::unique_ptr<hgcal::ClusterTools> ElectronSeedProducer::hgcClusterTools_
private

Definition at line 64 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), filterClusters(), and produce().

std::vector<edm::EDGetTokenT<TrajectorySeedCollection> > ElectronSeedProducer::initialSeeds_
private

Definition at line 47 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and produce().

std::unique_ptr<ElectronSeedGenerator> ElectronSeedProducer::matcher_
private

Definition at line 50 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and produce().

double ElectronSeedProducer::maxHBarrel_
private

Definition at line 57 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and filterClusters().

double ElectronSeedProducer::maxHEndcaps_
private

Definition at line 58 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and filterClusters().

double ElectronSeedProducer::maxHOverEBarrel_
private

Definition at line 55 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and filterClusters().

double ElectronSeedProducer::maxHOverEEndcaps_
private

Definition at line 56 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and filterClusters().

bool ElectronSeedProducer::prefilteredSeeds_
private

Definition at line 61 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and produce().

double ElectronSeedProducer::SCEtCut_
private

Definition at line 59 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and filterClusters().

std::unique_ptr<SeedFilter> ElectronSeedProducer::seedFilter_
private

Definition at line 51 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and produce().

edm::EDGetTokenT<reco::SuperClusterCollection> ElectronSeedProducer::superClusters_[2]
private

Definition at line 46 of file ElectronSeedProducer.cc.

Referenced by ElectronSeedProducer(), and produce().