CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
GsfMaterialEffectsESProducer Class Reference
Inheritance diagram for GsfMaterialEffectsESProducer:
edm::ESProducer edm::ESProductResolverFactoryProducer edm::eventsetup::ESProductResolverProvider

Classes

struct  BetheHeitlerInit
 

Public Member Functions

 GsfMaterialEffectsESProducer (const edm::ParameterSet &p)
 
std::unique_ptr< GsfMaterialEffectsUpdatorproduce (const TrackingComponentsRecord &)
 
- Public Member Functions inherited from edm::ESProducer
 ESProducer ()
 
 ESProducer (const ESProducer &)=delete
 
 ESProducer (ESProducer &&)=delete
 
ESResolverIndex const * getTokenIndices (unsigned int iIndex) const
 
ESRecordIndex const * getTokenRecordIndices (unsigned int iIndex) const
 
bool hasMayConsumes () const noexcept
 
size_t numberOfTokenIndices (unsigned int iIndex) const
 
ESProduceroperator= (const ESProducer &)=delete
 
ESProduceroperator= (ESProducer &&)=delete
 
SerialTaskQueueChainqueue ()
 
template<typename Record >
std::optional< std::vector< ESResolverIndex > > updateFromMayConsumes (unsigned int iIndex, const Record &iRecord) const
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &) final
 
 ~ESProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::ESProductResolverFactoryProducer
 ESProductResolverFactoryProducer ()
 
 ESProductResolverFactoryProducer (const ESProductResolverFactoryProducer &)=delete
 
const ESProductResolverFactoryProduceroperator= (const ESProductResolverFactoryProducer &)=delete
 
 ~ESProductResolverFactoryProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::eventsetup::ESProductResolverProvider
void createKeyedResolvers (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
const ComponentDescriptiondescription () const
 
 ESProductResolverProvider ()
 
 ESProductResolverProvider (const ESProductResolverProvider &)=delete
 
void fillRecordsNotAllowingConcurrentIOVs (std::set< EventSetupRecordKey > &recordsNotAllowingConcurrentIOVs) const
 
virtual void initConcurrentIOVs (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
bool isUsingRecord (const EventSetupRecordKey &key) const
 
KeyedResolverskeyedResolvers (const EventSetupRecordKey &iRecordKey, unsigned int iovIndex=0)
 
const ESProductResolverProvideroperator= (const ESProductResolverProvider &)=delete
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~ESProductResolverProvider () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::eventsetup::ESProductResolverProvider
static void prevalidate (ConfigurationDescriptions &)
 

Private Member Functions

std::optional< BetheHeitlerInitdoInit (const edm::ParameterSet &p)
 

Private Attributes

std::optional< BetheHeitlerInitbetheHeitlerInit_
 
const double mass_
 
const bool useMultipleScattering_
 

Additional Inherited Members

- Protected Types inherited from edm::ESProductResolverFactoryProducer
using EventSetupRecordKey = eventsetup::EventSetupRecordKey
 
- Protected Types inherited from edm::eventsetup::ESProductResolverProvider
using KeyedResolversVector = std::vector< std::pair< DataKey, std::shared_ptr< ESProductResolver > >>
 
- Protected Member Functions inherited from edm::ESProducer
ESConsumesInfoconsumesInfoPushBackNew ()
 
unsigned int consumesInfoSize () const
 
template<typename CallbackT , typename TList , typename TRecord >
void registerProducts (std::shared_ptr< std::pair< unsigned int, std::shared_ptr< CallbackT >>> iCallback, const TList *, const TRecord *iRecord, const es::Label &iLabel)
 
template<typename CallbackT , typename TRecord >
void registerProducts (std::shared_ptr< std::pair< unsigned int, std::shared_ptr< CallbackT >>>, const eventsetup::produce::Null *, const TRecord *, const es::Label &)
 
template<typename T >
auto setWhatProduced (T *iThis, const es::Label &iLabel={})
 
template<typename T >
auto setWhatProduced (T *iThis, const char *iLabel)
 
template<typename T >
auto setWhatProduced (T *iThis, const std::string &iLabel)
 
template<typename T , typename TDecorator >
auto setWhatProduced (T *iThis, const TDecorator &iDec, const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord >
auto setWhatProduced (T *iThis, TReturn(T::*iMethod)(const TRecord &), const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord , typename TDecorator >
auto setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const TDecorator &iDec, const es::Label &iLabel={})
 
template<typename TFunc >
auto setWhatProduced (TFunc &&func, const es::Label &iLabel={})
 
template<typename TReturn , typename TRecord , typename TFunc , typename TDecorator >
ESConsumesCollectorT< TRecord > setWhatProduced (TFunc &&func, TDecorator &&iDec, const es::Label &iLabel={})
 
void usesResources (std::vector< std::string > const &)
 
- Protected Member Functions inherited from edm::ESProductResolverFactoryProducer
template<class TFactory >
void registerFactory (std::unique_ptr< TFactory > iFactory, const std::string &iLabel=std::string())
 
virtual void registerFactoryWithKey (const EventSetupRecordKey &iRecord, std::unique_ptr< eventsetup::ESProductResolverFactoryBase > iFactory, const std::string &iLabel=std::string())
 
KeyedResolversVector registerResolvers (const EventSetupRecordKey &, unsigned int iovIndex) override
 
- Protected Member Functions inherited from edm::eventsetup::ESProductResolverProvider
template<class T >
void usingRecord ()
 
void usingRecordWithKey (const EventSetupRecordKey &key)
 

Detailed Description

Provides algorithms for estimating material effects (GSF compatible). Multiple scattering estimates can be provided according to a single (== "KF") or two-component model. Energy loss estimates can be provided according to a single component ionization- or radiation model (== "KF") or a multi-component Bethe-Heitler model.

Definition at line 29 of file GsfMaterialEffectsESProducer.cc.

Constructor & Destructor Documentation

◆ GsfMaterialEffectsESProducer()

GsfMaterialEffectsESProducer::GsfMaterialEffectsESProducer ( const edm::ParameterSet p)

Definition at line 59 of file GsfMaterialEffectsESProducer.cc.

References AlCaHLTBitMon_ParallelJobs::p, edm::ESProducer::setWhatProduced(), and AlCaHLTBitMon_QueryRunRegistry::string.

61  mass_(p.getParameter<double>("Mass")),
62  useMultipleScattering_(p.getParameter<std::string>("MultipleScatteringUpdator") == "GsfMultipleScatteringUpdator")
63 
64 {
65  std::string myname = p.getParameter<std::string>("ComponentName");
66  setWhatProduced(this, myname);
67 }
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:166
std::optional< BetheHeitlerInit > betheHeitlerInit_
std::optional< BetheHeitlerInit > doInit(const edm::ParameterSet &p)

Member Function Documentation

◆ doInit()

std::optional<BetheHeitlerInit> GsfMaterialEffectsESProducer::doInit ( const edm::ParameterSet p)
inlineprivate

Definition at line 44 of file GsfMaterialEffectsESProducer.cc.

References AlCaHLTBitMon_ParallelJobs::p, and AlCaHLTBitMon_QueryRunRegistry::string.

44  {
45  if (p.getParameter<std::string>("EnergyLossUpdator") != "GsfBetheHeitlerUpdator") {
46  return std::optional<BetheHeitlerInit>();
47  }
48  return std::make_optional<BetheHeitlerInit>(p.getParameter<std::string>("BetheHeitlerParametrization"),
49  p.getParameter<int>("BetheHeitlerCorrection"));
50  }

◆ fillDescriptions()

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

Definition at line 90 of file GsfMaterialEffectsESProducer.cc.

References edm::ConfigurationDescriptions::addDefault(), submitPVResolutionJobs::desc, or, and AlCaHLTBitMon_QueryRunRegistry::string.

90  {
92 
93  desc.add<std::string>("ComponentName");
94  desc.add<double>("Mass");
95  desc.add<std::string>("MultipleScatteringUpdator");
96  //Depending on the value of "EnergyLossUpdator", different parameters are allowed
97  desc.ifValue(
98  edm::ParameterDescription<std::string>("EnergyLossUpdator", "GsfBetheHeitlerUpdator", true),
99  "GsfBetheHeitlerUpdator" >> (edm::ParameterDescription<std::string>("BetheHeitlerParametrization", true) and
100  edm::ParameterDescription<int>("BetheHeitlerCorrection", true)) or
101  "EnergyLossUpdator" >> edm::EmptyGroupDescription() //No additional parameters needed
102  );
103  descriptions.addDefault(desc);
104 }
void addDefault(ParameterSetDescription const &psetDescription)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12

◆ produce()

std::unique_ptr< GsfMaterialEffectsUpdator > GsfMaterialEffectsESProducer::produce ( const TrackingComponentsRecord iRecord)

Definition at line 69 of file GsfMaterialEffectsESProducer.cc.

References betheHeitlerInit_, HLT_2023v12_cff::EnergyLossUpdator, mass_, HLT_2023v12_cff::MultipleScatteringUpdator, HLT_2023v12_cff::updator, and useMultipleScattering_.

70  {
71  std::unique_ptr<GsfMaterialEffectsUpdator> msUpdator;
73  msUpdator = std::make_unique<GsfMultipleScatteringUpdator>(mass_);
74  } else {
75  msUpdator = std::make_unique<GsfMaterialEffectsAdapter>(MultipleScatteringUpdator(mass_));
76  }
77 
78  std::unique_ptr<GsfMaterialEffectsUpdator> elUpdator;
79  if (betheHeitlerInit_) {
80  elUpdator = std::make_unique<GsfBetheHeitlerUpdator>(betheHeitlerInit_->fileName, betheHeitlerInit_->correction);
81  } else {
82  elUpdator = std::make_unique<GsfMaterialEffectsAdapter>(EnergyLossUpdator(mass_));
83  }
84 
85  auto updator = std::make_unique<GsfCombinedMaterialEffectsUpdator>(*msUpdator, *elUpdator);
86 
87  return updator;
88 }
std::optional< BetheHeitlerInit > betheHeitlerInit_

Member Data Documentation

◆ betheHeitlerInit_

std::optional<BetheHeitlerInit> GsfMaterialEffectsESProducer::betheHeitlerInit_
private

Definition at line 52 of file GsfMaterialEffectsESProducer.cc.

Referenced by produce().

◆ mass_

const double GsfMaterialEffectsESProducer::mass_
private

Definition at line 53 of file GsfMaterialEffectsESProducer.cc.

Referenced by produce().

◆ useMultipleScattering_

const bool GsfMaterialEffectsESProducer::useMultipleScattering_
private

Definition at line 54 of file GsfMaterialEffectsESProducer.cc.

Referenced by produce().