CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
GsfElectronBaseProducer Class Reference

#include <GsfElectronBaseProducer.h>

Inheritance diagram for GsfElectronBaseProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper GsfElectronEcalDrivenProducer GsfElectronProducer

Public Member Functions

 GsfElectronBaseProducer (const edm::ParameterSet &)
 
virtual ~GsfElectronBaseProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Static Public Member Functions

static void fillDescription (edm::ParameterSetDescription &)
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 

Protected Member Functions

void beginEvent (edm::Event &, const edm::EventSetup &)
 
void endEvent ()
 
void fillEvent (edm::Event &)
 
reco::GsfElectronnewElectron ()
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Protected Attributes

GsfElectronAlgoalgo_
 
GsfElectronAlgo::CutsConfiguration cutsCfg_
 
GsfElectronAlgo::CutsConfiguration cutsCfgPflow_
 
ElectronHcalHelper::Configuration hcalCfg_
 
ElectronHcalHelper::Configuration hcalCfgPflow_
 
GsfElectronAlgo::InputTagsConfiguration inputCfg_
 
GsfElectronAlgo::StrategyConfiguration strategyCfg_
 

Private Member Functions

void checkEcalSeedingParameters (edm::ParameterSetID const &)
 

Private Attributes

bool ecalSeedingParametersChecked_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 

Detailed Description

Definition at line 26 of file GsfElectronBaseProducer.h.

Constructor & Destructor Documentation

GsfElectronBaseProducer::GsfElectronBaseProducer ( const edm::ParameterSet cfg)
explicit

Definition at line 143 of file GsfElectronBaseProducer.cc.

References GsfElectronAlgo::StrategyConfiguration::addPflowElectrons, algo_, GsfElectronAlgo::StrategyConfiguration::ambClustersOverlapStrategy, GsfElectronAlgo::StrategyConfiguration::ambSortingStrategy, GsfElectronAlgo::StrategyConfiguration::applyAmbResolution, GsfElectronAlgo::StrategyConfiguration::applyEtaCorrection, GsfElectronAlgo::StrategyConfiguration::applyPreselection, GsfElectronAlgo::InputTagsConfiguration::beamSpotTag, GsfElectronAlgo::InputTagsConfiguration::ctfTracks, GsfElectronAlgo::StrategyConfiguration::ctfTracksCheck, cutsCfg_, cutsCfgPflow_, GsfElectronAlgo::IsolationConfiguration::eMinBarrel, GsfElectronAlgo::IsolationConfiguration::eMinEndcaps, GsfElectronAlgo::IsolationConfiguration::etMinBarrel, GsfElectronAlgo::IsolationConfiguration::etMinEndcaps, GsfElectronAlgo::IsolationConfiguration::etMinHcal, reco::get(), edm::ParameterSet::getParameter(), GsfElectronAlgo::InputTagsConfiguration::gsfElectronCores, GsfElectronAlgo::InputTagsConfiguration::gsfPfRecTracksTag, hcalCfg_, hcalCfgPflow_, ElectronHcalHelper::Configuration::hcalTowers, GsfElectronAlgo::InputTagsConfiguration::hcalTowersTag, ElectronHcalHelper::Configuration::hOverEConeSize, ElectronHcalHelper::Configuration::hOverEPtMin, inputCfg_, GsfElectronAlgo::IsolationConfiguration::intRadiusBarrelTk, GsfElectronAlgo::IsolationConfiguration::intRadiusEcalBarrel, GsfElectronAlgo::IsolationConfiguration::intRadiusEcalEndcaps, GsfElectronAlgo::IsolationConfiguration::intRadiusEndcapTk, GsfElectronAlgo::IsolationConfiguration::intRadiusHcal, GsfElectronAlgo::CutsConfiguration::isBarrel, GsfElectronAlgo::CutsConfiguration::isEndcaps, GsfElectronAlgo::CutsConfiguration::isFiducial, GsfElectronAlgo::IsolationConfiguration::jurassicWidth, GsfElectronAlgo::CutsConfiguration::maxDeltaEtaBarrel, GsfElectronAlgo::CutsConfiguration::maxDeltaEtaEndcaps, GsfElectronAlgo::CutsConfiguration::maxDeltaPhiBarrel, GsfElectronAlgo::CutsConfiguration::maxDeltaPhiEndcaps, GsfElectronAlgo::IsolationConfiguration::maxDrbTk, GsfElectronAlgo::CutsConfiguration::maxEOverPBarrel, GsfElectronAlgo::CutsConfiguration::maxEOverPEndcaps, GsfElectronAlgo::CutsConfiguration::maxFbremBarrel, GsfElectronAlgo::CutsConfiguration::maxFbremEndcaps, GsfElectronAlgo::CutsConfiguration::maxHBarrel, GsfElectronAlgo::CutsConfiguration::maxHEndcaps, GsfElectronAlgo::CutsConfiguration::maxHOverEBarrel, GsfElectronAlgo::CutsConfiguration::maxHOverEEndcaps, GsfElectronAlgo::CutsConfiguration::maxSigmaIetaIetaBarrel, GsfElectronAlgo::CutsConfiguration::maxSigmaIetaIetaEndcaps, GsfElectronAlgo::CutsConfiguration::maxTIP, GsfElectronAlgo::IsolationConfiguration::maxVtxDistTk, GsfElectronAlgo::CutsConfiguration::minEOverPBarrel, GsfElectronAlgo::CutsConfiguration::minEOverPEndcaps, GsfElectronAlgo::CutsConfiguration::minMVA, GsfElectronAlgo::CutsConfiguration::minSCEtBarrel, GsfElectronAlgo::CutsConfiguration::minSCEtEndcaps, GsfElectronAlgo::InputTagsConfiguration::pflowGsfElectronsTag, GsfElectronAlgo::InputTagsConfiguration::pfMVA, GsfElectronAlgo::InputTagsConfiguration::previousGsfElectrons, GsfElectronAlgo::IsolationConfiguration::ptMinTk, GsfElectronAlgo::InputTagsConfiguration::reducedBarrelRecHitCollection, GsfElectronAlgo::InputTagsConfiguration::reducedEndcapRecHitCollection, GsfElectronAlgo::CutsConfiguration::seedFromTEC, GsfElectronAlgo::InputTagsConfiguration::seedsTag, GsfElectronAlgo::SpikeConfiguration::severityLevelCut, strategyCfg_, GsfElectronAlgo::IsolationConfiguration::stripBarrelTk, GsfElectronAlgo::IsolationConfiguration::stripEndcapTk, funct::true, GsfElectronAlgo::StrategyConfiguration::useGsfPfRecTracks, GsfElectronAlgo::IsolationConfiguration::useNumCrystals, ElectronHcalHelper::Configuration::useTowers, and GsfElectronAlgo::IsolationConfiguration::vetoClustered.

145  {
146  produces<GsfElectronCollection>();
147 
148  inputCfg_.previousGsfElectrons = cfg.getParameter<edm::InputTag>("previousGsfElectronsTag");
149  inputCfg_.pflowGsfElectronsTag = cfg.getParameter<edm::InputTag>("pflowGsfElectronsTag");
150  inputCfg_.gsfElectronCores = cfg.getParameter<edm::InputTag>("gsfElectronCoresTag");
151  inputCfg_.hcalTowersTag = cfg.getParameter<edm::InputTag>("hcalTowers") ;
152  //inputCfg_.tracks_ = cfg.getParameter<edm::InputTag>("tracks");
153  inputCfg_.reducedBarrelRecHitCollection = cfg.getParameter<edm::InputTag>("reducedBarrelRecHitCollectionTag") ;
154  inputCfg_.reducedEndcapRecHitCollection = cfg.getParameter<edm::InputTag>("reducedEndcapRecHitCollectionTag") ;
155  inputCfg_.pfMVA = cfg.getParameter<edm::InputTag>("pfMvaTag") ;
156  inputCfg_.ctfTracks = cfg.getParameter<edm::InputTag>("ctfTracksTag");
157  inputCfg_.seedsTag = cfg.getParameter<edm::InputTag>("seedsTag"); // used to check config consistency with seeding
158  inputCfg_.beamSpotTag = cfg.getParameter<edm::InputTag>("beamSpotTag") ;
159  inputCfg_.gsfPfRecTracksTag = cfg.getParameter<edm::InputTag>("gsfPfRecTracksTag") ;
160 
161  strategyCfg_.useGsfPfRecTracks = cfg.getParameter<bool>("useGsfPfRecTracks") ;
162  strategyCfg_.applyPreselection = cfg.getParameter<bool>("applyPreselection") ;
163  strategyCfg_.applyEtaCorrection = cfg.getParameter<bool>("applyEtaCorrection") ;
164  strategyCfg_.applyAmbResolution = cfg.getParameter<bool>("applyAmbResolution") ;
165  strategyCfg_.ambSortingStrategy = cfg.getParameter<unsigned>("ambSortingStrategy") ;
166  strategyCfg_.ambClustersOverlapStrategy = cfg.getParameter<unsigned>("ambClustersOverlapStrategy") ;
167  strategyCfg_.addPflowElectrons = cfg.getParameter<bool>("addPflowElectrons") ;
168  strategyCfg_.ctfTracksCheck = cfg.getParameter<bool>("ctfTracksCheck");
169 
170  cutsCfg_.minSCEtBarrel = cfg.getParameter<double>("minSCEtBarrel") ;
171  cutsCfg_.minSCEtEndcaps = cfg.getParameter<double>("minSCEtEndcaps") ;
172  cutsCfg_.maxEOverPBarrel = cfg.getParameter<double>("maxEOverPBarrel") ;
173  cutsCfg_.maxEOverPEndcaps = cfg.getParameter<double>("maxEOverPEndcaps") ;
174  cutsCfg_.minEOverPBarrel = cfg.getParameter<double>("minEOverPBarrel") ;
175  cutsCfg_.minEOverPEndcaps = cfg.getParameter<double>("minEOverPEndcaps") ;
176 
177  // H/E
178  cutsCfg_.maxHOverEBarrel = cfg.getParameter<double>("maxHOverEBarrel") ;
179  cutsCfg_.maxHOverEEndcaps = cfg.getParameter<double>("maxHOverEEndcaps") ;
180  cutsCfg_.maxHBarrel = cfg.getParameter<double>("maxHBarrel") ;
181  cutsCfg_.maxHEndcaps = cfg.getParameter<double>("maxHEndcaps") ;
182 
183  cutsCfg_.maxDeltaEtaBarrel = cfg.getParameter<double>("maxDeltaEtaBarrel") ;
184  cutsCfg_.maxDeltaEtaEndcaps = cfg.getParameter<double>("maxDeltaEtaEndcaps") ;
185  cutsCfg_.maxDeltaPhiBarrel = cfg.getParameter<double>("maxDeltaPhiBarrel") ;
186  cutsCfg_.maxDeltaPhiEndcaps = cfg.getParameter<double>("maxDeltaPhiEndcaps") ;
187  cutsCfg_.maxDeltaPhiBarrel = cfg.getParameter<double>("maxDeltaPhiBarrel") ;
188  cutsCfg_.maxDeltaPhiEndcaps = cfg.getParameter<double>("maxDeltaPhiEndcaps") ;
189  cutsCfg_.maxDeltaPhiBarrel = cfg.getParameter<double>("maxDeltaPhiBarrel") ;
190  cutsCfg_.maxDeltaPhiEndcaps = cfg.getParameter<double>("maxDeltaPhiEndcaps") ;
191  cutsCfg_.maxSigmaIetaIetaBarrel = cfg.getParameter<double>("maxSigmaIetaIetaBarrel") ;
192  cutsCfg_.maxSigmaIetaIetaEndcaps = cfg.getParameter<double>("maxSigmaIetaIetaEndcaps") ;
193  cutsCfg_.maxFbremBarrel = cfg.getParameter<double>("maxFbremBarrel") ;
194  cutsCfg_.maxFbremEndcaps = cfg.getParameter<double>("maxFbremEndcaps") ;
195  cutsCfg_.isBarrel = cfg.getParameter<bool>("isBarrel") ;
196  cutsCfg_.isEndcaps = cfg.getParameter<bool>("isEndcaps") ;
197  cutsCfg_.isFiducial = cfg.getParameter<bool>("isFiducial") ;
198  cutsCfg_.minMVA = cfg.getParameter<double>("minMVA") ;
199  cutsCfg_.maxTIP = cfg.getParameter<double>("maxTIP") ;
200  cutsCfg_.seedFromTEC = cfg.getParameter<bool>("seedFromTEC") ;
201 
202  cutsCfgPflow_.minSCEtBarrel = cfg.getParameter<double>("minSCEtBarrelPflow") ;
203  cutsCfgPflow_.minSCEtEndcaps = cfg.getParameter<double>("minSCEtEndcapsPflow") ;
204  cutsCfgPflow_.maxEOverPBarrel = cfg.getParameter<double>("maxEOverPBarrelPflow") ;
205  cutsCfgPflow_.maxEOverPEndcaps = cfg.getParameter<double>("maxEOverPEndcapsPflow") ;
206  cutsCfgPflow_.minEOverPBarrel = cfg.getParameter<double>("minEOverPBarrelPflow") ;
207  cutsCfgPflow_.minEOverPEndcaps = cfg.getParameter<double>("minEOverPEndcapsPflow") ;
208 
209  // H/E
210  cutsCfgPflow_.maxHOverEBarrel = cfg.getParameter<double>("maxHOverEBarrelPflow") ;
211  cutsCfgPflow_.maxHOverEEndcaps = cfg.getParameter<double>("maxHOverEEndcapsPflow") ;
212  cutsCfgPflow_.maxHBarrel = cfg.getParameter<double>("maxHBarrelPflow") ;
213  cutsCfgPflow_.maxHEndcaps = cfg.getParameter<double>("maxHEndcapsPflow") ;
214 
215  cutsCfgPflow_.maxDeltaEtaBarrel = cfg.getParameter<double>("maxDeltaEtaBarrelPflow") ;
216  cutsCfgPflow_.maxDeltaEtaEndcaps = cfg.getParameter<double>("maxDeltaEtaEndcapsPflow") ;
217  cutsCfgPflow_.maxDeltaPhiBarrel = cfg.getParameter<double>("maxDeltaPhiBarrelPflow") ;
218  cutsCfgPflow_.maxDeltaPhiEndcaps = cfg.getParameter<double>("maxDeltaPhiEndcapsPflow") ;
219  cutsCfgPflow_.maxDeltaPhiBarrel = cfg.getParameter<double>("maxDeltaPhiBarrelPflow") ;
220  cutsCfgPflow_.maxDeltaPhiEndcaps = cfg.getParameter<double>("maxDeltaPhiEndcapsPflow") ;
221  cutsCfgPflow_.maxDeltaPhiBarrel = cfg.getParameter<double>("maxDeltaPhiBarrelPflow") ;
222  cutsCfgPflow_.maxDeltaPhiEndcaps = cfg.getParameter<double>("maxDeltaPhiEndcapsPflow") ;
223  cutsCfgPflow_.maxSigmaIetaIetaBarrel = cfg.getParameter<double>("maxSigmaIetaIetaBarrelPflow") ;
224  cutsCfgPflow_.maxSigmaIetaIetaEndcaps = cfg.getParameter<double>("maxSigmaIetaIetaEndcapsPflow") ;
225  cutsCfgPflow_.maxFbremBarrel = cfg.getParameter<double>("maxFbremBarrelPflow") ;
226  cutsCfgPflow_.maxFbremEndcaps = cfg.getParameter<double>("maxFbremEndcapsPflow") ;
227  cutsCfgPflow_.isBarrel = cfg.getParameter<bool>("isBarrelPflow") ;
228  cutsCfgPflow_.isEndcaps = cfg.getParameter<bool>("isEndcapsPflow") ;
229  cutsCfgPflow_.isFiducial = cfg.getParameter<bool>("isFiducialPflow") ;
230  cutsCfgPflow_.minMVA = cfg.getParameter<double>("minMVAPflow") ;
231  cutsCfgPflow_.maxTIP = cfg.getParameter<double>("maxTIPPflow") ;
232  cutsCfgPflow_.seedFromTEC = true ; // not applied for pflow
233 
234  // hcal helpers
235  hcalCfg_.hOverEConeSize = cfg.getParameter<double>("hOverEConeSize") ;
236  if (hcalCfg_.hOverEConeSize>0)
237  {
239  hcalCfg_.hcalTowers = cfg.getParameter<edm::InputTag>("hcalTowers") ;
240  hcalCfg_.hOverEPtMin = cfg.getParameter<double>("hOverEPtMin") ;
241  }
242  hcalCfgPflow_.hOverEConeSize = cfg.getParameter<double>("hOverEConeSizePflow") ;
244  {
246  hcalCfgPflow_.hcalTowers = cfg.getParameter<edm::InputTag>("hcalTowers") ;
247  hcalCfgPflow_.hOverEPtMin = cfg.getParameter<double>("hOverEPtMinPflow") ;
248  }
249 
250  // isolation
252  isoCfg.intRadiusBarrelTk = cfg.getParameter<double>("intRadiusBarrelTk") ;
253  isoCfg.intRadiusEndcapTk = cfg.getParameter<double>("intRadiusEndcapTk") ;
254  isoCfg.stripBarrelTk = cfg.getParameter<double>("stripBarrelTk") ;
255  isoCfg.stripEndcapTk = cfg.getParameter<double>("stripEndcapTk") ;
256  isoCfg.ptMinTk = cfg.getParameter<double>("ptMinTk") ;
257  isoCfg.maxVtxDistTk = cfg.getParameter<double>("maxVtxDistTk") ;
258  isoCfg.maxDrbTk = cfg.getParameter<double>("maxDrbTk") ;
259  isoCfg.intRadiusHcal = cfg.getParameter<double>("intRadiusHcal") ;
260  isoCfg.etMinHcal = cfg.getParameter<double>("etMinHcal") ;
261  isoCfg.intRadiusEcalBarrel = cfg.getParameter<double>("intRadiusEcalBarrel") ;
262  isoCfg.intRadiusEcalEndcaps = cfg.getParameter<double>("intRadiusEcalEndcaps") ;
263  isoCfg.jurassicWidth = cfg.getParameter<double>("jurassicWidth") ;
264  isoCfg.etMinBarrel = cfg.getParameter<double>("etMinBarrel") ;
265  isoCfg.eMinBarrel = cfg.getParameter<double>("eMinBarrel") ;
266  isoCfg.etMinEndcaps = cfg.getParameter<double>("etMinEndcaps") ;
267  isoCfg.eMinEndcaps = cfg.getParameter<double>("eMinEndcaps") ;
268  isoCfg.vetoClustered = cfg.getParameter<bool>("vetoClustered") ;
269  isoCfg.useNumCrystals = cfg.getParameter<bool>("useNumCrystals") ;
270 
271  // spike removal configuration
273  spikeCfg.severityLevelCut = cfg.getParameter<int>("severityLevelCut") ;
274 // spikeCfg.severityRecHitThreshold = cfg.getParameter<double>("severityRecHitThreshold") ;
275 // spikeCfg.spikeIdThreshold = cfg.getParameter<double>("spikeIdThreshold") ;
276 // std::string spikeIdString = cfg.getParameter<std::string>("spikeIdString") ;
277 // if (!spikeIdString.compare("kE1OverE9")) spikeCfg.spikeId = EcalSeverityLevelAlgo::kE1OverE9 ;
278 // else if(!spikeIdString.compare("kSwissCross")) spikeCfg.spikeId = EcalSeverityLevelAlgo::kSwissCross ;
279 // else if(!spikeIdString.compare("kSwissCrossBordersIncluded")) spikeCfg.spikeId = EcalSeverityLevelAlgo::kSwissCrossBordersIncluded ;
280 // else
281 // {
282 // spikeCfg.spikeId = EcalSeverityLevelAlgo::kSwissCrossBordersIncluded ;
283 // edm::LogWarning("GsfElectronAlgo|SpikeRemovalForIsolation")
284 // << "Cannot find the requested method. kSwissCross set instead." ;
285 // }
286  spikeCfg.recHitFlagsToBeExcluded = cfg.getParameter<std::vector<int> >("recHitFlagsToBeExcluded") ;
287 
288  // function for corrector
289  EcalClusterFunctionBaseClass * superClusterErrorFunction = 0 ;
290  std::string superClusterErrorFunctionName
291  = cfg.getParameter<std::string>("superClusterErrorFunction") ;
292  if (superClusterErrorFunctionName!="")
293  {
294  superClusterErrorFunction
295  = EcalClusterFunctionFactory::get()->create(superClusterErrorFunctionName,cfg) ;
296  }
297 
298  // create algo
299  algo_ = new GsfElectronAlgo
303  isoCfg,spikeCfg,
304  superClusterErrorFunction ) ;
305  }
T getParameter(std::string const &) const
GsfElectronAlgo::InputTagsConfiguration inputCfg_
GsfElectronAlgo::CutsConfiguration cutsCfg_
ElectronHcalHelper::Configuration hcalCfg_
ElectronHcalHelper::Configuration hcalCfgPflow_
GsfElectronAlgo::StrategyConfiguration strategyCfg_
T get(const Candidate &c)
Definition: component.h:56
GsfElectronAlgo::CutsConfiguration cutsCfgPflow_
GsfElectronBaseProducer::~GsfElectronBaseProducer ( )
virtual

Definition at line 307 of file GsfElectronBaseProducer.cc.

References algo_.

308  { delete algo_ ; }

Member Function Documentation

void GsfElectronBaseProducer::beginEvent ( edm::Event event,
const edm::EventSetup setup 
)
protected

Definition at line 310 of file GsfElectronBaseProducer.cc.

References algo_, GsfElectronAlgo::beginEvent(), checkEcalSeedingParameters(), GsfElectronAlgo::checkSetup(), ecalSeedingParametersChecked_, inputCfg_, edm::HandleBase::isValid(), edm::HandleBase::provenance(), edm::Provenance::psetID(), GsfElectronAlgo::InputTagsConfiguration::seedsTag, and funct::true.

Referenced by GsfElectronProducer::beginEvent(), and GsfElectronEcalDrivenProducer::produce().

311  {
312  // check configuration
314  {
317  event.getByLabel(inputCfg_.seedsTag,seeds) ;
318  if (!seeds.isValid())
319  {
320  edm::LogWarning("GsfElectronAlgo|UnreachableSeedsProvenance")
321  <<"Cannot check consistency of parameters with ecal seeding ones,"
322  <<" because the original collection of seeds is not any more available." ;
323  }
324  else
325  {
327  }
328  }
329 
330  // init the algo
331  algo_->checkSetup(setup) ;
332  algo_->beginEvent(event) ;
333  }
void checkEcalSeedingParameters(edm::ParameterSetID const &)
void beginEvent(edm::Event &)
ParameterSetID psetID() const
Definition: Provenance.cc:56
GsfElectronAlgo::InputTagsConfiguration inputCfg_
bool isValid() const
Definition: HandleBase.h:76
Provenance const * provenance() const
Definition: HandleBase.h:84
void checkSetup(const edm::EventSetup &)
void GsfElectronBaseProducer::checkEcalSeedingParameters ( edm::ParameterSetID const &  psetid)
private

Definition at line 366 of file GsfElectronBaseProducer.cc.

References cutsCfg_, edm::detail::ThreadSafeRegistry< KEY, T, E >::getMapped(), edm::ParameterSet::getParameter(), hcalCfg_, ElectronHcalHelper::Configuration::hOverEConeSize, edm::detail::ThreadSafeRegistry< KEY, T, E >::instance(), GsfElectronAlgo::CutsConfiguration::maxHOverEBarrel, GsfElectronAlgo::CutsConfiguration::maxHOverEEndcaps, GsfElectronAlgo::CutsConfiguration::minSCEtBarrel, GsfElectronAlgo::CutsConfiguration::minSCEtEndcaps, and MultipleCompare::pset.

Referenced by beginEvent().

367  {
369  edm::pset::Registry::instance()->getMapped(psetid,pset) ;
370  edm::ParameterSet seedConfiguration = pset.getParameter<edm::ParameterSet>("SeedConfiguration") ;
371  //edm::ParameterSet orderedHitsFactoryPSet = seedConfiguration.getParameter<edm::ParameterSet>("OrderedHitsFactoryPSet") ;
372  //edm::ParameterSet seedParameters = seedConfiguration.getParameter<edm::ParameterSet>("ecalDrivenElectronSeedsParameters") ;
373 
374  if (seedConfiguration.getParameter<bool>("applyHOverECut"))
375  {
376  if ((hcalCfg_.hOverEConeSize!=0)&&(hcalCfg_.hOverEConeSize!=seedConfiguration.getParameter<double>("hOverEConeSize")))
377  { edm::LogWarning("GsfElectronAlgo|InconsistentParameters") <<"The H/E cone size ("<<hcalCfg_.hOverEConeSize<<") is different from ecal seeding ("<<seedConfiguration.getParameter<double>("hOverEConeSize")<<")." ; }
378  if (cutsCfg_.maxHOverEBarrel<seedConfiguration.getParameter<double>("maxHOverEBarrel"))
379  { edm::LogWarning("GsfElectronAlgo|InconsistentParameters") <<"The max barrel H/E is lower than during ecal seeding." ; }
380  if (cutsCfg_.maxHOverEEndcaps<seedConfiguration.getParameter<double>("maxHOverEEndcaps"))
381  { edm::LogWarning("GsfElectronAlgo|InconsistentParameters") <<"The max endcaps H/E is lower than during ecal seeding." ; }
382  }
383 
384  if (cutsCfg_.minSCEtBarrel<seedConfiguration.getParameter<double>("SCEtCut"))
385  { edm::LogWarning("GsfElectronAlgo|InconsistentParameters") <<"The minimum super-cluster Et in barrel is lower than during ecal seeding." ; }
386  if (cutsCfg_.minSCEtEndcaps<seedConfiguration.getParameter<double>("SCEtCut"))
387  { edm::LogWarning("GsfElectronAlgo|InconsistentParameters") <<"The minimum super-cluster Et in endcaps is lower than during ecal seeding." ; }
388  }
T getParameter(std::string const &) const
bool getMapped(key_type const &k, value_type &result) const
GsfElectronAlgo::CutsConfiguration cutsCfg_
ElectronHcalHelper::Configuration hcalCfg_
static ThreadSafeRegistry * instance()
void GsfElectronBaseProducer::endEvent ( )
protected
void GsfElectronBaseProducer::fillDescription ( edm::ParameterSetDescription desc)
static

Definition at line 27 of file GsfElectronBaseProducer.cc.

References edm::ParameterSetDescription::add().

28  {
29  // input collections
30  desc.add<edm::InputTag>("previousGsfElectronsTag",edm::InputTag("ecalDrivenGsfElectrons")) ;
31  desc.add<edm::InputTag>("pflowGsfElectronsTag",edm::InputTag("pflowGsfElectrons")) ;
32  desc.add<edm::InputTag>("gsfElectronCoresTag",edm::InputTag("gsfElectronCores")) ;
33  desc.add<edm::InputTag>("hcalTowers",edm::InputTag("towerMaker")) ;
34  desc.add<edm::InputTag>("reducedBarrelRecHitCollectionTag",edm::InputTag("ecalRecHit","EcalRecHitsEB")) ;
35  desc.add<edm::InputTag>("reducedEndcapRecHitCollectionTag",edm::InputTag("ecalRecHit","EcalRecHitsEE")) ;
36  //desc.add<edm::InputTag>("pfMvaTag",edm::InputTag("pfElectronTranslator:pf")) ;
37  desc.add<edm::InputTag>("seedsTag",edm::InputTag("ecalDrivenElectronSeeds")) ;
38  desc.add<edm::InputTag>("beamSpotTag",edm::InputTag("offlineBeamSpot")) ;
39  desc.add<edm::InputTag>("gsfPfRecTracksTag",edm::InputTag("pfTrackElec")) ;
40 
41  // backward compatibility mechanism for ctf tracks
42  desc.add<bool>("ctfTracksCheck",true) ;
43  desc.add<edm::InputTag>("ctfTracksTag",edm::InputTag("generalTracks")) ;
44 
45  // steering
46  desc.add<bool>("useGsfPfRecTracks",true) ;
47  desc.add<bool>("applyPreselection",false) ;
48  desc.add<bool>("applyEtaCorrection",false) ;
49  desc.add<bool>("applyAmbResolution",false) ;
50  desc.add<unsigned>("ambSortingStrategy",1) ;
51  desc.add<unsigned>("ambClustersOverlapStrategy",1) ;
52  //desc.add<bool>("addPflowElectrons",true) ;
53 
54 // // preselection parameters (ecal driven electrons)
55 // desc.add<bool>("seedFromTEC",true) ;
56 // desc.add<double>("minSCEtBarrel",4.0) ;
57 // desc.add<double>("minSCEtEndcaps",4.0) ;
58 // desc.add<double>("minEOverPBarrel",0.0) ;
59 // desc.add<double>("maxEOverPBarrel",999999999.) ;
60 // desc.add<double>("minEOverPEndcaps",0.0) ;
61 // desc.add<double>("maxEOverPEndcaps",999999999.) ;
62 // desc.add<double>("maxDeltaEtaBarrel",0.02) ;
63 // desc.add<double>("maxDeltaEtaEndcaps",0.02) ;
64 // desc.add<double>("maxDeltaPhiBarrel",0.15) ;
65 // desc.add<double>("maxDeltaPhiEndcaps",0.15) ;
66 // desc.add<double>("hOverEConeSize",0.15) ;
67 // desc.add<double>("hOverEPtMin",0.) ;
68 // desc.add<double>("maxHOverEBarrel",0.15) ;
69 // desc.add<double>("maxHOverEEndcaps",0.15) ;
70 // desc.add<double>("maxHBarrel",0.0) ;
71 // desc.add<double>("maxHEndcaps",0.0) ;
72 // desc.add<double>("maxSigmaIetaIetaBarrel",999999999.) ;
73 // desc.add<double>("maxSigmaIetaIetaEndcaps",999999999.) ;
74 // desc.add<double>("maxFbremBarrel",999999999.) ;
75 // desc.add<double>("maxFbremEndcaps",999999999.) ;
76 // desc.add<bool>("isBarrel",false) ;
77 // desc.add<bool>("isEndcaps",false) ;
78 // desc.add<bool>("isFiducial",false) ;
79 // desc.add<double>("maxTIP",999999999.) ;
80 // desc.add<double>("minMVA",-0.4) ;
81 //
82 // // preselection parameters (tracker driven only electrons)
83 // desc.add<double>("minSCEtBarrelPflow",0.0) ;
84 // desc.add<double>("minSCEtEndcapsPflow",0.0) ;
85 // desc.add<double>("minEOverPBarrelPflow",0.0) ;
86 // desc.add<double>("maxEOverPBarrelPflow",999999999.) ;
87 // desc.add<double>("minEOverPEndcapsPflow",0.0) ;
88 // desc.add<double>("maxEOverPEndcapsPflow",999999999.) ;
89 // desc.add<double>("maxDeltaEtaBarrelPflow",999999999.) ;
90 // desc.add<double>("maxDeltaEtaEndcapsPflow",999999999.) ;
91 // desc.add<double>("maxDeltaPhiBarrelPflow",999999999.) ;
92 // desc.add<double>("maxDeltaPhiEndcapsPflow",999999999.) ;
93 // desc.add<double>("hOverEConeSizePflow",0.15) ;
94 // desc.add<double>("hOverEPtMinPflow",0.) ;
95 // desc.add<double>("maxHOverEBarrelPflow",999999999.) ;
96 // desc.add<double>("maxHOverEEndcapsPflow",999999999.) ;
97 // desc.add<double>("maxHBarrelPflow",0.0) ;
98 // desc.add<double>("maxHEndcapsPflow",0.0) ;
99 // desc.add<double>("maxSigmaIetaIetaBarrelPflow",999999999.) ;
100 // desc.add<double>("maxSigmaIetaIetaEndcapsPflow",999999999.) ;
101 // desc.add<double>("maxFbremBarrelPflow",999999999.) ;
102 // desc.add<double>("maxFbremEndcapsPflow",999999999.) ;
103 // desc.add<bool>("isBarrelPflow",false) ;
104 // desc.add<bool>("isEndcapsPflow",false) ;
105 // desc.add<bool>("isFiducialPflow",false) ;
106 // desc.add<double>("maxTIPPflow",999999999.) ;
107 // desc.add<double>("minMVAPflow",-0.4) ;
108 
109  // Isolation algos configuration
110  desc.add<double>("intRadiusBarrelTk",0.015) ;
111  desc.add<double>("intRadiusEndcapTk",0.015) ;
112  desc.add<double>("stripBarrelTk",0.015) ;
113  desc.add<double>("stripEndcapTk",0.015) ;
114  desc.add<double>("ptMinTk",0.7) ;
115  desc.add<double>("maxVtxDistTk",0.2) ;
116  desc.add<double>("maxDrbTk",999999999.) ;
117  desc.add<double>("intRadiusHcal",0.15) ;
118  desc.add<double>("etMinHcal",0.0) ;
119  desc.add<double>("intRadiusEcalBarrel",3.0) ;
120  desc.add<double>("intRadiusEcalEndcaps",3.0) ;
121  desc.add<double>("jurassicWidth",1.5) ;
122  desc.add<double>("etMinBarrel",0.0) ;
123  desc.add<double>("eMinBarrel",0.08) ;
124  desc.add<double>("etMinEndcaps",0.1) ;
125  desc.add<double>("eMinEndcaps",0.0) ;
126  desc.add<bool>("vetoClustered",false) ;
127  desc.add<bool>("useNumCrystals",true) ;
128  desc.add<int>("severityLevelCut",4) ;
129  //desc.add<double>("severityRecHitThreshold",5.0) ;
130  //desc.add<double>("spikeIdThreshold",0.95) ;
131  //desc.add<std::string>("spikeIdString","kSwissCrossBordersIncluded") ;
132  desc.add<std::vector<int> >("recHitFlagsToBeExcluded") ;
133 
134  edm::ParameterSetDescription descNested ;
135  descNested.add<std::string>("propagatorAlongTISE","PropagatorWithMaterial") ;
136  descNested.add<std::string>("propagatorOppositeTISE","PropagatorWithMaterialOpposite") ;
137  desc.add<edm::ParameterSetDescription>("TransientInitialStateEstimatorParameters",descNested) ;
138 
139  // Corrections
140  desc.add<std::string>("superClusterErrorFunction","EcalClusterEnergyUncertainty") ;
141  }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void GsfElectronBaseProducer::fillEvent ( edm::Event event)
protected

Definition at line 335 of file GsfElectronBaseProducer.cc.

References algo_, GsfElectronAlgo::StrategyConfiguration::applyAmbResolution, GsfElectronAlgo::StrategyConfiguration::applyPreselection, GsfElectronAlgo::copyElectrons(), GsfElectronAlgo::displayInternalElectrons(), GsfElectronAlgo::removeAmbiguousElectrons(), GsfElectronAlgo::removeNotPreselectedElectrons(), GsfElectronAlgo::setAmbiguityData(), and strategyCfg_.

Referenced by GsfElectronEcalDrivenProducer::produce(), and GsfElectronProducer::produce().

336  {
337  // all electrons
338  algo_->displayInternalElectrons("GsfElectronAlgo Info (before preselection)") ;
339 
340  // preselection
342  {
344  algo_->displayInternalElectrons("GsfElectronAlgo Info (after preselection)") ;
345  }
346 
347  // ambiguity
350  {
352  algo_->displayInternalElectrons("GsfElectronAlgo Info (after amb. solving)") ;
353  }
354 
355  // final filling
356  std::auto_ptr<GsfElectronCollection> finalCollection( new GsfElectronCollection ) ;
357  algo_->copyElectrons(*finalCollection) ;
358  event.put(finalCollection) ;
359  }
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
GsfElectronAlgo::StrategyConfiguration strategyCfg_
void removeAmbiguousElectrons()
void displayInternalElectrons(const std::string &title) const
void removeNotPreselectedElectrons()
void copyElectrons(reco::GsfElectronCollection &)
void setAmbiguityData(bool ignoreNotPreselected=true)
reco::GsfElectron* GsfElectronBaseProducer::newElectron ( )
inlineprotected

Definition at line 43 of file GsfElectronBaseProducer.h.

43 { return 0 ; }

Member Data Documentation

GsfElectronAlgo* GsfElectronBaseProducer::algo_
protected
GsfElectronAlgo::CutsConfiguration GsfElectronBaseProducer::cutsCfg_
protected
GsfElectronAlgo::CutsConfiguration GsfElectronBaseProducer::cutsCfgPflow_
protected
bool GsfElectronBaseProducer::ecalSeedingParametersChecked_
private

Definition at line 56 of file GsfElectronBaseProducer.h.

Referenced by beginEvent().

ElectronHcalHelper::Configuration GsfElectronBaseProducer::hcalCfg_
protected
ElectronHcalHelper::Configuration GsfElectronBaseProducer::hcalCfgPflow_
protected

Definition at line 51 of file GsfElectronBaseProducer.h.

Referenced by GsfElectronBaseProducer().

GsfElectronAlgo::InputTagsConfiguration GsfElectronBaseProducer::inputCfg_
protected
GsfElectronAlgo::StrategyConfiguration GsfElectronBaseProducer::strategyCfg_
protected