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::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

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
 
ESProxyIndex const * getTokenIndices (unsigned int iIndex) const
 
ESRecordIndex const * getTokenRecordIndices (unsigned int iIndex) const
 
bool hasMayConsumes () const noexcept
 
size_t numberOfTokenIndices (unsigned int iIndex) const
 
ESProducer const & operator= (const ESProducer &)=delete
 
SerialTaskQueueChainqueue ()
 
template<typename Record >
std::optional< std::vector< ESProxyIndex > > updateFromMayConsumes (unsigned int iIndex, const Record &iRecord) const
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &) final
 
 ~ESProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::ESProxyFactoryProducer
 ESProxyFactoryProducer ()
 
 ESProxyFactoryProducer (const ESProxyFactoryProducer &)=delete
 
const ESProxyFactoryProduceroperator= (const ESProxyFactoryProducer &)=delete
 
 ~ESProxyFactoryProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::eventsetup::DataProxyProvider
void createKeyedProxies (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
 DataProxyProvider ()
 
 DataProxyProvider (const DataProxyProvider &)=delete
 
const ComponentDescriptiondescription () const
 
void fillRecordsNotAllowingConcurrentIOVs (std::set< EventSetupRecordKey > &recordsNotAllowingConcurrentIOVs) const
 
virtual void initConcurrentIOVs (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
bool isUsingRecord (const EventSetupRecordKey &key) const
 
KeyedProxieskeyedProxies (const EventSetupRecordKey &iRecordKey, unsigned int iovIndex=0)
 
const DataProxyProvideroperator= (const DataProxyProvider &)=delete
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~DataProxyProvider () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::eventsetup::DataProxyProvider
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::ESProxyFactoryProducer
using EventSetupRecordKey = eventsetup::EventSetupRecordKey
 
- Protected Types inherited from edm::eventsetup::DataProxyProvider
using KeyedProxiesVector = std::vector< std::pair< DataKey, std::shared_ptr< DataProxy > >>
 
- Protected Member Functions inherited from edm::ESProducer
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 TArg >
auto setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const TArg &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::ESProxyFactoryProducer
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::ProxyFactoryBase > iFactory, const std::string &iLabel=std::string())
 
KeyedProxiesVector registerProxies (const EventSetupRecordKey &, unsigned int iovIndex) override
 
- Protected Member Functions inherited from edm::eventsetup::DataProxyProvider
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:163
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_2023v11_cff::EnergyLossUpdator, mass_, HLT_2023v11_cff::MultipleScatteringUpdator, HLT_2023v11_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().