CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
< GsfMaterialEffectsUpdator
produce (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 >
ESConsumesCollectorT< TRecord > setWhatProduced (T *iThis, TReturn(T::*iMethod)(const TRecord &), const TArg &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 ( const edm::ParameterSet p)

Definition at line 59 of file GsfMaterialEffectsESProducer.cc.

References edm::ParameterSet::getParameter(), 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)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303

Member Function Documentation

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

Definition at line 44 of file GsfMaterialEffectsESProducer.cc.

References edm::ParameterSet::getParameter(), 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  }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void GsfMaterialEffectsESProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 90 of file GsfMaterialEffectsESProducer.cc.

References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::addDefault(), submitPVResolutionJobs::desc, edm::ParameterSetDescription::ifValue(), 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 }
ParameterDescriptionNode * ifValue(ParameterDescription< T > const &switchParameter, std::unique_ptr< ParameterDescriptionCases< T >> cases)
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void addDefault(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::unique_ptr< GsfMaterialEffectsUpdator > GsfMaterialEffectsESProducer::produce ( const TrackingComponentsRecord iRecord)

Definition at line 69 of file GsfMaterialEffectsESProducer.cc.

References betheHeitlerInit_, HLT_FULL_cff::EnergyLossUpdator, mass_, HLT_FULL_cff::MultipleScatteringUpdator, HLT_FULL_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_
tuple MultipleScatteringUpdator
tuple EnergyLossUpdator

Member Data Documentation

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

Definition at line 52 of file GsfMaterialEffectsESProducer.cc.

Referenced by produce().

const double GsfMaterialEffectsESProducer::mass_
private

Definition at line 53 of file GsfMaterialEffectsESProducer.cc.

Referenced by produce().

const bool GsfMaterialEffectsESProducer::useMultipleScattering_
private

Definition at line 54 of file GsfMaterialEffectsESProducer.cc.

Referenced by produce().