CMS 3D CMS Logo

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

Public Member Functions

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

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

void setSemiDetRandomSeed (const edm::Event &iEvent, const T &obj, size_t nrObjs, size_t objNr)
 

Private Attributes

edm::EDGetTokenT< edm::View< T > > electronToken_
 
ElectronEnergyCalibrator energyCorrector_
 
EpCombinationTool epCombinationTool_
 
bool produceCalibratedObjs_
 
edm::EDGetTokenT< EcalRecHitCollectionrecHitCollectionEBToken_
 
edm::EDGetTokenT< EcalRecHitCollectionrecHitCollectionEEToken_
 
std::unique_ptr< TRandom > semiDeterministicRng_
 

Static Private Attributes

static const std::vector< int > valMapsToStore_
 

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

template<typename T>
class CalibratedElectronProducerT< T >

Definition at line 40 of file CalibratedElectronProducers.cc.

Constructor & Destructor Documentation

◆ CalibratedElectronProducerT()

template<typename T >
CalibratedElectronProducerT< T >::CalibratedElectronProducerT ( const edm::ParameterSet conf)
explicit

Definition at line 88 of file CalibratedElectronProducers.cc.

89  : electronToken_(consumes(conf.getParameter<edm::InputTag>("src"))),
90  epCombinationTool_{conf.getParameterSet("epCombConfig"), consumesCollector()},
92  recHitCollectionEBToken_(consumes(conf.getParameter<edm::InputTag>("recHitCollectionEB"))),
93  recHitCollectionEEToken_(consumes(conf.getParameter<edm::InputTag>("recHitCollectionEE"))),
94  produceCalibratedObjs_(conf.getParameter<bool>("produceCalibratedObjs")) {
95  energyCorrector_.setMinEt(conf.getParameter<double>("minEtToCalibrate"));
96 
97  if (conf.getParameter<bool>("semiDeterministic")) {
98  semiDeterministicRng_ = std::make_unique<TRandom2>();
100  }
101 
103  produces<std::vector<T>>();
104 
105  for (const auto& toStore : valMapsToStore_) {
106  produces<edm::ValueMap<float>>(EGEnergySysIndex::name(toStore));
107  }
108 }

References edm::ParameterSet::getParameterSet().

◆ ~CalibratedElectronProducerT()

template<typename T >
CalibratedElectronProducerT< T >::~CalibratedElectronProducerT ( )
inlineoverride

Definition at line 43 of file CalibratedElectronProducers.cc.

43 {}

Member Function Documentation

◆ fillDescriptions()

template<typename T >
void CalibratedElectronProducerT< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 111 of file CalibratedElectronProducers.cc.

111  {
113  desc.add<edm::InputTag>("src", edm::InputTag("gedPhotons"));
115  desc.add<edm::InputTag>("recHitCollectionEB", edm::InputTag("reducedEcalRecHitsEB"));
116  desc.add<edm::InputTag>("recHitCollectionEE", edm::InputTag("reducedEcalRecHitsEE"));
117  desc.add<std::string>("correctionFile", std::string());
118  desc.add<double>("minEtToCalibrate", 5.0);
119  desc.add<bool>("produceCalibratedObjs", true);
120  desc.add<bool>("semiDeterministic", true);
121  std::vector<std::string> valMapsProduced;
122  valMapsProduced.reserve(valMapsToStore_.size());
123  for (auto varToStore : valMapsToStore_)
124  valMapsProduced.push_back(EGEnergySysIndex::name(varToStore));
125  desc.add<std::vector<std::string>>("valueMapsStored", valMapsProduced)
126  ->setComment(
127  "provides to python configs the list of valuemaps stored, can not be overriden in the python config");
128  descriptions.addWithDefaultLabel(desc);
129 }

References edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, HLT_FULL_cff::InputTag, EpCombinationTool::makePSetDescription(), EGEnergySysIndex::name(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ produce()

template<typename T >
void CalibratedElectronProducerT< T >::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 132 of file CalibratedElectronProducers.cc.

132  {
134 
135  auto inHandle = iEvent.getHandle(electronToken_);
136 
137  auto recHitCollectionEBHandle = iEvent.getHandle(recHitCollectionEBToken_);
138  auto recHitCollectionEEHandle = iEvent.getHandle(recHitCollectionEEToken_);
139 
140  std::unique_ptr<std::vector<T>> out = std::make_unique<std::vector<T>>();
141 
142  size_t nrObj = inHandle->size();
143  std::array<std::vector<float>, EGEnergySysIndex::kNrSysErrs> results;
144  for (auto& res : results)
145  res.reserve(nrObj);
146 
149 
150  for (const auto& ele : *inHandle) {
151  out->push_back(ele);
152 
154  setSemiDetRandomSeed(iEvent, ele, nrObj, out->size());
155 
157  (ele.isEB()) ? recHitCollectionEBHandle.product() : recHitCollectionEEHandle.product();
158  std::array<float, EGEnergySysIndex::kNrSysErrs> uncertainties =
159  energyCorrector_.calibrate(out->back(), iEvent.id().run(), recHits, iEvent.streamID(), evtType);
160 
161  for (size_t index = 0; index < EGEnergySysIndex::kNrSysErrs; index++) {
162  results[index].push_back(uncertainties[index]);
163  }
164  }
165 
166  auto fillAndStore = [&](auto handle) {
167  for (const auto& mapToStore : valMapsToStore_) {
168  fillAndStoreValueMap(iEvent, handle, results[mapToStore], EGEnergySysIndex::name(mapToStore));
169  }
170  };
171 
173  fillAndStore(iEvent.put(std::move(out)));
174  } else {
175  fillAndStore(inHandle);
176  }
177 }

References ElectronEnergyCalibrator::DATA, patZpeak::handle, iEvent, EGEnergySysIndex::kNrSysErrs, ElectronEnergyCalibrator::MC, eostools::move(), EGEnergySysIndex::name(), MillePedeFileConverter_cfg::out, FastTrackerRecHitMaskProducer_cfi::recHits, and bookConverter::results.

◆ setSemiDetRandomSeed()

template<typename T >
void CalibratedElectronProducerT< T >::setSemiDetRandomSeed ( const edm::Event iEvent,
const T obj,
size_t  nrObjs,
size_t  objNr 
)
private

Definition at line 180 of file CalibratedElectronProducers.cc.

183  {
184  if (obj.superCluster().isNonnull()) {
185  semiDeterministicRng_->SetSeed(egamma::getRandomSeedFromSC(iEvent, obj.superCluster()));
186  } else {
188  }
189 }

References egamma::getRandomSeedFromObj(), egamma::getRandomSeedFromSC(), iEvent, and getGTfromDQMFile::obj.

Member Data Documentation

◆ electronToken_

template<typename T >
edm::EDGetTokenT<edm::View<T> > CalibratedElectronProducerT< T >::electronToken_
private

Definition at line 50 of file CalibratedElectronProducers.cc.

◆ energyCorrector_

template<typename T >
ElectronEnergyCalibrator CalibratedElectronProducerT< T >::energyCorrector_
private

Definition at line 53 of file CalibratedElectronProducers.cc.

◆ epCombinationTool_

template<typename T >
EpCombinationTool CalibratedElectronProducerT< T >::epCombinationTool_
private

Definition at line 52 of file CalibratedElectronProducers.cc.

◆ produceCalibratedObjs_

template<typename T >
bool CalibratedElectronProducerT< T >::produceCalibratedObjs_
private

Definition at line 57 of file CalibratedElectronProducers.cc.

◆ recHitCollectionEBToken_

template<typename T >
edm::EDGetTokenT<EcalRecHitCollection> CalibratedElectronProducerT< T >::recHitCollectionEBToken_
private

Definition at line 55 of file CalibratedElectronProducers.cc.

◆ recHitCollectionEEToken_

template<typename T >
edm::EDGetTokenT<EcalRecHitCollection> CalibratedElectronProducerT< T >::recHitCollectionEEToken_
private

Definition at line 56 of file CalibratedElectronProducers.cc.

◆ semiDeterministicRng_

template<typename T >
std::unique_ptr<TRandom> CalibratedElectronProducerT< T >::semiDeterministicRng_
private

Definition at line 54 of file CalibratedElectronProducers.cc.

◆ valMapsToStore_

template<typename T >
const std::vector< int > CalibratedElectronProducerT< T >::valMapsToStore_
staticprivate
CalibratedElectronProducerT::setSemiDetRandomSeed
void setSemiDetRandomSeed(const edm::Event &iEvent, const T &obj, size_t nrObjs, size_t objNr)
Definition: CalibratedElectronProducers.cc:180
EpCombinationTool::makePSetDescription
static edm::ParameterSetDescription makePSetDescription()
Definition: EpCombinationTool.cc:23
EGEnergySysIndex::kEcalTrkPostCorr
Definition: EGEnergySysIndex.h:39
patZpeak.handle
handle
Definition: patZpeak.py:23
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89353
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
EGEnergySysIndex::kSmearRhoDown
Definition: EGEnergySysIndex.h:23
CalibratedElectronProducerT::recHitCollectionEEToken_
edm::EDGetTokenT< EcalRecHitCollection > recHitCollectionEEToken_
Definition: CalibratedElectronProducers.cc:56
EGEnergySysIndex::kScaleGainUp
Definition: EGEnergySysIndex.h:20
edm::SortedCollection< EcalRecHit >
bookConverter.results
results
Definition: bookConverter.py:144
EGEnergySysIndex::kEcalErrPostCorr
Definition: EGEnergySysIndex.h:36
EGEnergySysIndex::kEcalTrkPreCorr
Definition: EGEnergySysIndex.h:37
EGEnergySysIndex::kSmearRhoUp
Definition: EGEnergySysIndex.h:22
EGEnergySysIndex::kScaleValue
Definition: EGEnergySysIndex.h:30
EGEnergySysIndex::kScaleStatDown
Definition: EGEnergySysIndex.h:17
EGEnergySysIndex::kNrSysErrs
static constexpr size_t kNrSysErrs
Definition: EGEnergySysIndex.h:42
EGEnergySysIndex::kSmearNrSigma
Definition: EGEnergySysIndex.h:32
EGEnergySysIndex::kScaleGainDown
Definition: EGEnergySysIndex.h:21
EGEnergySysIndex::kScaleUp
Definition: EGEnergySysIndex.h:26
egamma::getRandomSeedFromObj
uint32_t getRandomSeedFromObj(const edm::Event &iEvent, const T &obj, size_t nrObjs, size_t objNr)
Definition: EgammaRandomSeeds.h:21
CalibratedElectronProducerT::epCombinationTool_
EpCombinationTool epCombinationTool_
Definition: CalibratedElectronProducers.cc:52
egamma::getRandomSeedFromSC
uint32_t getRandomSeedFromSC(const edm::Event &iEvent, const reco::SuperClusterRef scRef)
Definition: EgammaRandomSeeds.cc:5
EGEnergySysIndex::kEcalErrPreCorr
Definition: EGEnergySysIndex.h:34
ElectronEnergyCalibrator::EventType::DATA
CalibratedElectronProducerT::energyCorrector_
ElectronEnergyCalibrator energyCorrector_
Definition: CalibratedElectronProducers.cc:53
ElectronEnergyCalibrator::EventType
EventType
Definition: ElectronEnergyCalibrator.h:26
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
CalibratedElectronProducerT::produceCalibratedObjs_
bool produceCalibratedObjs_
Definition: CalibratedElectronProducers.cc:57
EGEnergySysIndex::kSmearDown
Definition: EGEnergySysIndex.h:29
EGEnergySysIndex::name
static const std::string & name(size_t index)
Definition: EGEnergySysIndex.h:44
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
CalibratedElectronProducerT::valMapsToStore_
static const std::vector< int > valMapsToStore_
Definition: CalibratedElectronProducers.cc:58
EGEnergySysIndex::kEcalTrkErrPreCorr
Definition: EGEnergySysIndex.h:38
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
ElectronEnergyCalibrator::initPrivateRng
void initPrivateRng(TRandom *rnd)
Definition: ElectronEnergyCalibrator.cc:16
iEvent
int iEvent
Definition: GenABIO.cc:224
CalibratedElectronProducerT::electronToken_
edm::EDGetTokenT< edm::View< T > > electronToken_
Definition: CalibratedElectronProducers.cc:50
EGEnergySysIndex::kScaleDown
Definition: EGEnergySysIndex.h:27
res
Definition: Electron.h:6
EGEnergySysIndex::kEcalPostCorr
Definition: EGEnergySysIndex.h:35
CalibratedElectronProducerT::recHitCollectionEBToken_
edm::EDGetTokenT< EcalRecHitCollection > recHitCollectionEBToken_
Definition: CalibratedElectronProducers.cc:55
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
EpCombinationTool::setEventContent
void setEventContent(const edm::EventSetup &iSetup)
Definition: EpCombinationTool.cc:35
eostools.move
def move(src, dest)
Definition: eostools.py:511
EGEnergySysIndex::kEcalPreCorr
Definition: EGEnergySysIndex.h:33
EGEnergySysIndex::kSmearValue
Definition: EGEnergySysIndex.h:31
EGEnergySysIndex::kSmearUp
Definition: EGEnergySysIndex.h:28
EGEnergySysIndex::kSmearPhiDown
Definition: EGEnergySysIndex.h:25
EGEnergySysIndex::kScaleSystUp
Definition: EGEnergySysIndex.h:18
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EGEnergySysIndex::kScaleSystDown
Definition: EGEnergySysIndex.h:19
CalibratedElectronProducerT::semiDeterministicRng_
std::unique_ptr< TRandom > semiDeterministicRng_
Definition: CalibratedElectronProducers.cc:54
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
EGEnergySysIndex::kScaleStatUp
Definition: EGEnergySysIndex.h:16
ElectronEnergyCalibrator::setMinEt
void setMinEt(float val)
Definition: ElectronEnergyCalibrator.h:40
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
EGEnergySysIndex::kEcalTrkErrPostCorr
Definition: EGEnergySysIndex.h:40
ElectronEnergyCalibrator::EventType::MC
ElectronEnergyCalibrator::calibrate
void calibrate(SimpleElectron &electron, edm::StreamID const &)
Definition: ElectronEnergyCalibrator.cc:144
EGEnergySysIndex::kSmearPhiUp
Definition: EGEnergySysIndex.h:24
edm::InputTag
Definition: InputTag.h:15
edm::ParameterSet::getParameterSet
ParameterSet const & getParameterSet(std::string const &) const
Definition: ParameterSet.cc:2128
edm::ConfigurationDescriptions::addWithDefaultLabel
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:87