|
|
Definition at line 76 of file GsfElectronProducer.cc.
◆ GsfElectronProducer()
Definition at line 284 of file GsfElectronProducer.cc.
293 consumes<reco::PFCandidateCollection>(
cfg.getParameter<
edm::InputTag>(
"egmPFCandidatesTag"));
297 consumes<reco::GsfElectronCoreCollection>(
cfg.getParameter<
edm::InputTag>(
"gsfElectronCoresTag"));
300 consumes<EcalRecHitCollection>(
cfg.getParameter<
edm::InputTag>(
"barrelRecHitCollectionTag"));
302 consumes<EcalRecHitCollection>(
cfg.getParameter<
edm::InputTag>(
"endcapRecHitCollectionTag"));
308 if (
cfg.getParameter<
bool>(
"fillConvVtxFitProb"))
314 cfg.getParameter<
bool>(
"ecalDrivenEcalEnergyFromClassBasedParameterization");
316 cfg.getParameter<
bool>(
"ecalDrivenEcalErrorFromClassBasedParameterization");
318 cfg.getParameter<
bool>(
"pureTrackerDrivenEcalErrorFromSimpleParameterization");
342 auto const& flagnamesbarrel =
cfg.getParameter<std::vector<std::string>>(
"recHitFlagsToBeExcludedBarrel");
344 auto const& flagnamesendcaps =
cfg.getParameter<std::vector<std::string>>(
"recHitFlagsToBeExcludedEndcaps");
346 auto const& severitynamesbarrel =
cfg.getParameter<std::vector<std::string>>(
"recHitSeverityToBeExcludedBarrel");
348 StringToEnumValue<EcalSeverityLevel::SeverityLevel>(severitynamesbarrel);
349 auto const& severitynamesendcaps =
cfg.getParameter<std::vector<std::string>>(
"recHitSeverityToBeExcludedEndcaps");
351 StringToEnumValue<EcalSeverityLevel::SeverityLevel>(severitynamesendcaps);
356 .etMinHcal =
cfg.getParameter<
double>(
"etMinHcal"),
357 .intRadiusEcalBarrel =
cfg.getParameter<
double>(
"intRadiusEcalBarrel"),
358 .intRadiusEcalEndcaps =
cfg.getParameter<
double>(
"intRadiusEcalEndcaps"),
359 .jurassicWidth =
cfg.getParameter<
double>(
"jurassicWidth"),
361 .eMinBarrel =
cfg.getParameter<
double>(
"eMinBarrel"),
362 .etMinEndcaps =
cfg.getParameter<
double>(
"etMinEndcaps"),
363 .eMinEndcaps =
cfg.getParameter<
double>(
"eMinEndcaps"),
365 .useNumCrystals =
cfg.getParameter<
bool>(
"useNumCrystals")};
369 .ecalWeightsFromDB =
cfg.getParameter<
bool>(
"ecalWeightsFromDB"),
370 .ecalRegressionWeightFiles =
cfg.getParameter<std::vector<std::string>>(
"ecalRefinedRegressionWeightFiles"),
372 cfg.getParameter<std::vector<std::string>>(
"combinationRegressionWeightLabels"),
373 .combinationWeightsFromDB =
cfg.getParameter<
bool>(
"combinationWeightsFromDB"),
374 .combinationRegressionWeightFiles =
375 cfg.getParameter<std::vector<std::string>>(
"combinationRegressionWeightFile")};
378 algo_ = std::make_unique<GsfElectronAlgo>(
392 consumesCollector());
References looper::cfg.
◆ checkEcalSeedingParameters()
void GsfElectronProducer::checkEcalSeedingParameters |
( |
edm::ParameterSet const & |
pset | ) |
|
|
private |
◆ fillDescriptions()
Definition at line 118 of file GsfElectronProducer.cc.
121 desc.
add<
edm::InputTag>(
"gsfElectronCoresTag", {
"ecalDrivenGsfElectronCores"});
126 desc.
add<
edm::InputTag>(
"barrelRecHitCollectionTag", {
"ecalRecHit",
"EcalRecHitsEB"});
127 desc.
add<
edm::InputTag>(
"endcapRecHitCollectionTag", {
"ecalRecHit",
"EcalRecHitsEE"});
131 desc.
add<
bool>(
"checkHcalStatus",
true);
134 desc.
add<
bool>(
"useDefaultEnergyCorrection",
true);
135 desc.
add<
bool>(
"useCombinationRegression",
false);
136 desc.
add<
bool>(
"ecalDrivenEcalEnergyFromClassBasedParameterization",
true);
137 desc.
add<
bool>(
"ecalDrivenEcalErrorFromClassBasedParameterization",
true);
138 desc.
add<
bool>(
"applyPreselection",
false);
139 desc.
add<
bool>(
"useEcalRegression",
false);
140 desc.
add<
bool>(
"applyAmbResolution",
false);
141 desc.
add<
bool>(
"ignoreNotPreselected",
true);
142 desc.
add<
bool>(
"useGsfPfRecTracks",
true);
143 desc.
add<
bool>(
"pureTrackerDrivenEcalErrorFromSimpleParameterization",
true);
144 desc.
add<
unsigned int>(
"ambSortingStrategy", 1);
145 desc.
add<
unsigned int>(
"ambClustersOverlapStrategy", 1);
146 desc.
add<
bool>(
"fillConvVtxFitProb",
true);
147 desc.
add<
bool>(
"resetMvaValuesUsingPFCandidates",
false);
150 desc.
add<std::vector<std::string>>(
"recHitFlagsToBeExcludedBarrel");
151 desc.
add<std::vector<std::string>>(
"recHitFlagsToBeExcludedEndcaps");
152 desc.
add<std::vector<std::string>>(
"recHitSeverityToBeExcludedBarrel");
153 desc.
add<std::vector<std::string>>(
"recHitSeverityToBeExcludedEndcaps");
160 desc.
add<
bool>(
"useNumCrystals",
true);
161 desc.
add<
double>(
"etMinBarrel", 0.0);
162 desc.
add<
double>(
"etMinEndcaps", 0.11);
163 desc.
add<
double>(
"etMinHcal", 0.0);
164 desc.
add<
double>(
"eMinBarrel", 0.095);
165 desc.
add<
double>(
"eMinEndcaps", 0.0);
166 desc.
add<
double>(
"intRadiusEcalBarrel", 3.0);
167 desc.
add<
double>(
"intRadiusEcalEndcaps", 3.0);
168 desc.
add<
double>(
"intRadiusHcal", 0.15);
169 desc.
add<
double>(
"jurassicWidth", 1.5);
170 desc.add<
bool>(
"vetoClustered",
false);
173 desc.add<
bool>(
"ctfTracksCheck",
true);
176 desc.add<
double>(
"MaxElePtForOnlyMVA", 50.0);
177 desc.add<
double>(
"PreSelectMVA", -0.1);
181 psd0.
add<
double>(
"minSCEtBarrel", 4.0);
182 psd0.add<
double>(
"minSCEtEndcaps", 4.0);
183 psd0.add<
double>(
"minEOverPBarrel", 0.0);
184 psd0.add<
double>(
"minEOverPEndcaps", 0.0);
185 psd0.add<
double>(
"maxEOverPBarrel", 999999999.0);
186 psd0.add<
double>(
"maxEOverPEndcaps", 999999999.0);
187 psd0.add<
double>(
"maxDeltaEtaBarrel", 0.02);
188 psd0.add<
double>(
"maxDeltaEtaEndcaps", 0.02);
189 psd0.add<
double>(
"maxDeltaPhiBarrel", 0.15);
190 psd0.add<
double>(
"maxDeltaPhiEndcaps", 0.15);
191 psd0.add<
double>(
"hOverEConeSize", 0.15);
192 psd0.add<
double>(
"hOverEPtMin", 0.0);
193 psd0.add<
double>(
"maxHOverEBarrelCone", 0.15);
194 psd0.add<
double>(
"maxHOverEEndcapsCone", 0.15);
195 psd0.add<
double>(
"maxHBarrelCone", 0.0);
196 psd0.add<
double>(
"maxHEndcapsCone", 0.0);
197 psd0.add<
double>(
"maxHOverEBarrelTower", 0.15);
198 psd0.add<
double>(
"maxHOverEEndcapsTower", 0.15);
199 psd0.add<
double>(
"maxHBarrelTower", 0.0);
200 psd0.add<
double>(
"maxHEndcapsTower", 0.0);
201 psd0.add<
double>(
"maxSigmaIetaIetaBarrel", 999999999.0);
202 psd0.add<
double>(
"maxSigmaIetaIetaEndcaps", 999999999.0);
203 psd0.add<
double>(
"maxFbremBarrel", 999999999.0);
204 psd0.add<
double>(
"maxFbremEndcaps", 999999999.0);
205 psd0.add<
bool>(
"isBarrel",
false);
206 psd0.add<
bool>(
"isEndcaps",
false);
207 psd0.add<
bool>(
"isFiducial",
false);
208 psd0.add<
bool>(
"seedFromTEC",
true);
209 psd0.add<
double>(
"maxTIP", 999999999.0);
210 psd0.add<
double>(
"minMVA", -0.4);
211 psd0.add<
double>(
"minMvaByPassForIsolated", -0.4);
217 desc.
add<
std::string>(
"superClusterErrorFunction",
"EcalClusterEnergyUncertaintyObjectSpecific");
218 desc.add<
std::string>(
"crackCorrectionFunction",
"EcalClusterCrackCorrection");
220 desc.add<
bool>(
"ecalWeightsFromDB",
true);
221 desc.add<std::vector<std::string>>(
"ecalRefinedRegressionWeightFiles", {})
222 ->setComment(
"if not from DB. Otherwise, keep empty");
223 desc.add<
bool>(
"combinationWeightsFromDB",
true);
224 desc.add<std::vector<std::string>>(
"combinationRegressionWeightFile", {})
225 ->setComment(
"if not from DB. Otherwise, keep empty");
228 desc.add<std::vector<std::string>>(
"ecalRefinedRegressionWeightLabels", {});
229 desc.add<std::vector<std::string>>(
"combinationRegressionWeightLabels", {});
231 desc.add<std::vector<std::string>>(
232 "ElecMVAFilesString",
234 "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_10_17Feb2011.weights.xml",
235 "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_12_17Feb2011.weights.xml",
236 "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_20_17Feb2011.weights.xml",
237 "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_22_17Feb2011.weights.xml",
239 desc.add<std::vector<std::string>>(
240 "SoftElecMVAFilesString",
242 "RecoEgamma/ElectronIdentification/data/TMVA_BDTSoftElectrons_7Feb2014.weights.xml",
245 descriptions.
add(
"gsfElectronProducer", desc);
References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), EleTkIsolFromCands::pSetDescript(), and AlCaHLTBitMon_QueryRunRegistry::string.
◆ globalEndJob()
◆ initializeGlobalCache()
Definition at line 82 of file GsfElectronProducer.cc.
83 return std::make_unique<GsfElectronAlgo::HeavyObjectCache>(conf);
◆ isPreselected()
◆ produce()
Definition at line 547 of file GsfElectronProducer.cc.
552 if (!
seeds.isValid()) {
554 <<
"Cannot check consistency of parameters with ecal seeding ones,"
555 <<
" because the original collection of seeds is not any more available.";
566 el.setMvaInput(gsfMVAInputMap.find(el.gsfTrack())->
second);
570 logElectrons(
electrons,
event,
"GsfElectronAlgo Info (before preselection)");
576 logElectrons(
electrons,
event,
"GsfElectronAlgo Info (after preselection)");
583 logElectrons(
electrons,
event,
"GsfElectronAlgo Info (after amb. solving)");
References algo_, reco::GsfElectron::ambiguous(), GsfElectronAlgo::StrategyConfiguration::applyAmbResolution, GsfElectronAlgo::StrategyConfiguration::applyPreselection, checkEcalSeedingParameters(), ecalSeedingParametersChecked_, egmPFCandidateCollection_, electronPutToken_, pwdgSkimBPark_cfi::electrons, GsfElectronAlgo::StrategyConfiguration::ignoreNotPreselected, inputCfg_, isPreselected(), eostools::move(), edm::parameterSet(), resetMvaValuesUsingPFCandidates_, edm::second(), InitialStep_cff::seeds, GsfElectronAlgo::Tokens::seedsTag, setAmbiguityData(), singleTopDQM_cfi::setup, strategyCfg_, and GsfElectronAlgo::Tokens::vtxCollectionTag.
◆ setAmbiguityData()
Definition at line 432 of file GsfElectronProducer.cc.
447 throw cms::Exception(
"GsfElectronAlgo|UnknownAmbiguitySortingStrategy")
462 if (gsfPfRecTrack.gsfTrackRef() ==
e1.gsfTrack()) {
464 edm::LogWarning(
"GsfElectronAlgo") <<
"associated gsfPfRecTrack already found";
467 for (
auto const& duplicate : gsfPfRecTrack.convBremGsfPFRecTrackRef()) {
468 e1.addAmbiguousGsfTrack(duplicate->gsfTrackRef());
485 LogDebug(
"GsfElectronAlgo") <<
"Blessing electron with E/P " <<
e1->eSuperClusterOverP() <<
", cluster "
486 << scRef1.
get() <<
" & track " <<
e1->gsfTrack().get();
488 for (
auto e2 =
e1 + 1; e2 !=
electrons.end(); ++e2) {
498 bool sameCluster =
false;
500 sameCluster = (scRef1 == scRef2);
510 throw cms::Exception(
"GsfElectronAlgo|UnknownAmbiguityClustersOverlapStrategy")
516 LogDebug(
"GsfElectronAlgo") <<
"Discarding electron with E/P " << e2->eSuperClusterOverP() <<
", cluster "
517 << scRef2.
get() <<
" and track " << e2->gsfTrack().get();
518 e1->addAmbiguousGsfTrack(e2->gsfTrack());
519 e2->setAmbiguous(
true);
520 }
else if (
e1->gsfTrack() == e2->gsfTrack()) {
521 edm::LogWarning(
"GsfElectronAlgo") <<
"Forgetting electron with E/P " << e2->eSuperClusterOverP()
522 <<
", cluster " << scRef2.
get() <<
" and track " << e2->gsfTrack().get();
523 e2->setAmbiguous(
true);
References GsfElectronAlgo::StrategyConfiguration::ambClustersOverlapStrategy, GsfElectronAlgo::StrategyConfiguration::ambSortingStrategy, GsfElectronAlgo::Tokens::barrelRecHitCollection, HLT_2018_cff::barrelRecHits, GsfElectronAlgo::Tokens::beamSpotTag, StorageManager_cfg::e1, HPSPFTauProducerPuppi_cfi::electron, pwdgSkimBPark_cfi::electrons, photonAnalyzer_cfi::eMin, GsfElectronAlgo::Tokens::endcapRecHitCollection, HLT_2018_cff::endcapRecHits, PVValHelper::eta, Exception, newFWLiteAna::found, edm::Ref< C, T, F >::get(), uncleanedOnlyElectronSequence_cff::gsfPfRecTracks, gsfPfRecTracksTag_, gsfElectrons_cfi::ignoreNotPreselected, inputCfg_, egamma::isBetterElectron(), egamma::isInnermostElectron(), isPreselected(), LogDebug, egamma::sharedEnergy(), strategyCfg_, remoteMonitoring_LED_IterMethod_cfg::threshold, and useGsfPfRecTracks_.
Referenced by produce().
◆ algo_
◆ cutsCfg_
◆ ecalSeedingParametersChecked_
bool GsfElectronProducer::ecalSeedingParametersChecked_ |
|
private |
◆ egmPFCandidateCollection_
◆ electronPutToken_
◆ gsfPfRecTracksTag_
◆ hcalCfg_
◆ inputCfg_
◆ resetMvaValuesUsingPFCandidates_
const bool GsfElectronProducer::resetMvaValuesUsingPFCandidates_ |
|
private |
◆ strategyCfg_
◆ useGsfPfRecTracks_
const bool GsfElectronProducer::useGsfPfRecTracks_ |
|
private |
std::vector< int > recHitFlagsToBeExcludedEndcaps
double maxHOverEBarrelCone
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::vector< std::string > ecalRegressionWeightLabels
edm::EDGetTokenT< reco::GsfElectronCoreCollection > gsfElectronCores
bool useCombinationRegression
T const * get() const
Returns C++ pointer to the item.
bool ignoreNotPreselected
GsfElectronAlgo::Tokens inputCfg_
U second(std::pair< T, U > const &p)
unsigned ambClustersOverlapStrategy
const GsfElectronAlgo::CutsConfiguration cutsCfg_
def create(alignables, pedeDump, additionalData, outputFile, config)
std::vector< int > recHitFlagsToBeExcludedBarrel
edm::EDGetTokenT< reco::ElectronSeedCollection > seedsTag
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag
edm::EDGetTokenT< EcalRecHitCollection > barrelRecHitCollection
bool isPreselected(reco::GsfElectron const &ele) const
bool ecalDrivenEcalErrorFromClassBasedParameterization
double maxHOverEEndcapsCone
const bool resetMvaValuesUsingPFCandidates_
unsigned ambSortingStrategy
std::vector< int > recHitSeverityToBeExcludedBarrel
bool pureTrackerDrivenEcalErrorFromSimpleParameterization
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< CaloTowerCollection > hcalTowers
edm::EDGetTokenT< EcalRecHitCollection > endcapRecHitCollection
std::unique_ptr< GsfElectronAlgo > algo_
const bool useGsfPfRecTracks_
edm::EDGetTokenT< reco::ConversionCollection > conversions
edm::EDGetTokenT< reco::PFCandidateCollection > egmPFCandidateCollection_
static edm::ParameterSetDescription pSetDescript()
float sharedEnergy(reco::CaloCluster const &clu1, reco::CaloCluster const &clu2, EcalRecHitCollection const &barrelRecHits, EcalRecHitCollection const &endcapRecHits)
void checkEcalSeedingParameters(edm::ParameterSet const &)
T getParameter(std::string const &) const
const edm::EDPutTokenT< reco::GsfElectronCollection > electronPutToken_
ParameterSet const & parameterSet(Provenance const &provenance, ProcessHistory const &history)
bool ecalSeedingParametersChecked_
edm::EDGetTokenT< reco::VertexCollection > vtxCollectionTag
ElectronHcalHelper::Configuration hcalCfg_
bool useDefaultEnergyCorrection
bool isBetterElectron(reco::GsfElectron const &, reco::GsfElectron const &)
bool isInnermostElectron(reco::GsfElectron const &, reco::GsfElectron const &)
GsfElectronAlgo::StrategyConfiguration strategyCfg_
edm::EDGetTokenT< reco::TrackCollection > ctfTracks
edm::EDGetTokenT< CaloTowerCollection > hcalTowersTag
bool ecalDrivenEcalEnergyFromClassBasedParameterization
combinationRegressionWeightLabels
void setAmbiguityData(reco::GsfElectronCollection &electrons, edm::Event const &event, bool ignoreNotPreselected=true) const
const edm::EDGetTokenT< reco::GsfPFRecTrackCollection > gsfPfRecTracksTag_
std::vector< int > recHitSeverityToBeExcludedEndcaps