CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
MagneticFieldFilter Class Reference

#include <Alignment/CommonAlignment/plugins/MagneticFieldFilter.cc>

Inheritance diagram for MagneticFieldFilter:
edm::stream::EDFilter<> edm::stream::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 MagneticFieldFilter (const edm::ParameterSet &)
 
 ~MagneticFieldFilter ()=default
 
- Public Member Functions inherited from edm::stream::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::stream::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 
- Static Public Member Functions inherited from edm::stream::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

virtual void beginRun (const edm::Run &, const edm::EventSetup &) override
 
float currentToField (const float &current) const
 convert Ampere (A) to Tesla (T) More...
 
virtual bool filter (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

const int magneticField_
 
int magneticFieldCurrentRun_
 magnetic field that is filtered More...
 

Static Private Attributes

static float constantTermCurrentToField_ = 1.704418e-02
 see: https://hypernews.cern.ch/HyperNews/CMS/get/magnetic-field/63/1/1/1.html More...
 
static float linearCoeffCurrentToField_ = 2.084287e-04
 see: https://hypernews.cern.ch/HyperNews/CMS/get/magnetic-field/63/1/1/1.html More...
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDFilter<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDFilterBase
typedef EDFilterAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: Plugin to filter events based on the magnetic field value

Implementation: Takes the magnet current from the RunInfoRcd and translates it into a magnetic field value using the parameterization given here:

https://hypernews.cern.ch/HyperNews/CMS/get/magnetic-field/63/1/1/1.html

Agrees within an accuracy of ~20 mT with results of: https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary

Definition at line 40 of file MagneticFieldFilter.cc.

Constructor & Destructor Documentation

MagneticFieldFilter::MagneticFieldFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 74 of file MagneticFieldFilter.cc.

74  :
75  magneticField_(iConfig.getUntrackedParameter<int>("magneticField")),
76  magneticFieldCurrentRun_(-10000) {
77 }
T getUntrackedParameter(std::string const &, T const &) const
int magneticFieldCurrentRun_
magnetic field that is filtered
MagneticFieldFilter::~MagneticFieldFilter ( )
default

Member Function Documentation

void MagneticFieldFilter::beginRun ( const edm::Run ,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from edm::stream::EDFilterBase.

Definition at line 93 of file MagneticFieldFilter.cc.

References currentToField(), edm::EventSetup::get(), magneticFieldCurrentRun_, edm::ESHandle< class >::product(), and edmLumisInFiles::summary.

93  {
95  iSetup.get<RunInfoRcd>().get(sum);
96  auto summary = sum.product();
97  // convert from Tesla to kGauss (multiply with 10) and
98  // round off to whole kGauss (add 0.5 and cast to int) as is done in
99  // 'MagneticField::computeNominalValue()':
101  static_cast<int>(currentToField(summary->m_avg_current)*10.0 + 0.5);
102 }
int magneticFieldCurrentRun_
magnetic field that is filtered
float currentToField(const float &current) const
convert Ampere (A) to Tesla (T)
const T & get() const
Definition: EventSetup.h:56
T const * product() const
Definition: ESHandle.h:86
float MagneticFieldFilter::currentToField ( const float &  current) const
private

convert Ampere (A) to Tesla (T)

Definition at line 106 of file MagneticFieldFilter.cc.

References constantTermCurrentToField_, and linearCoeffCurrentToField_.

Referenced by beginRun().

106  {
108 }
static float constantTermCurrentToField_
see: https://hypernews.cern.ch/HyperNews/CMS/get/magnetic-field/63/1/1/1.html
static float linearCoeffCurrentToField_
see: https://hypernews.cern.ch/HyperNews/CMS/get/magnetic-field/63/1/1/1.html
void MagneticFieldFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 113 of file MagneticFieldFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), and edm::ParameterSetDescription::setComment().

113  {
115  desc.setComment("Filters events with a magnetic field of 'magneticField'.");
116  desc.addUntracked<int>("magneticField", 38)
117  ->setComment("In units of kGauss (= 0.1 Tesla).");
118  descriptions.add("magneticFieldFilter", desc);
119 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setComment(std::string const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool MagneticFieldFilter::filter ( edm::Event ,
const edm::EventSetup  
)
overrideprivatevirtual

Member Data Documentation

float MagneticFieldFilter::constantTermCurrentToField_ = 1.704418e-02
staticprivate
float MagneticFieldFilter::linearCoeffCurrentToField_ = 2.084287e-04
staticprivate
const int MagneticFieldFilter::magneticField_
private

Definition at line 60 of file MagneticFieldFilter.cc.

Referenced by filter().

int MagneticFieldFilter::magneticFieldCurrentRun_
private

magnetic field that is filtered

Definition at line 61 of file MagneticFieldFilter.cc.

Referenced by beginRun(), and filter().