CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions

edm::eventsetup::ComponentMaker< T, TComponent > Class Template Reference

#include <ComponentMaker.h>

Inheritance diagram for edm::eventsetup::ComponentMaker< T, TComponent >:
edm::eventsetup::ComponentMakerBase< T > edm::eventsetup::ComponentMakerBaseHelper

List of all members.

Public Types

typedef T::base_type base_type

Public Member Functions

virtual boost::shared_ptr
< base_type
addTo (EventSetupsController &esController, EventSetupProvider &iProvider, ParameterSet const &iConfiguration, bool replaceExisting) const
 ComponentMaker ()

Private Member Functions

 ComponentMaker (const ComponentMaker &)
const ComponentMakeroperator= (const ComponentMaker &)
void setDescription (DataProxyProvider *iProv, const ComponentDescription &iDesc) const
void setDescription (void *, const ComponentDescription &) const
void setDescriptionForFinder (EventSetupRecordIntervalFinder *iFinder, const ComponentDescription &iDesc) const
void setDescriptionForFinder (void *, const ComponentDescription &) const
void setPostConstruction (void *, const edm::ParameterSet &) const
void setPostConstruction (DataProxyProvider *iProv, const edm::ParameterSet &iPSet) const

Detailed Description

template<class T, class TComponent>
class edm::eventsetup::ComponentMaker< T, TComponent >

Definition at line 57 of file ComponentMaker.h.


Member Typedef Documentation

template<class T, class TComponent>
typedef T::base_type edm::eventsetup::ComponentMaker< T, TComponent >::base_type

Reimplemented from edm::eventsetup::ComponentMakerBase< T >.

Definition at line 63 of file ComponentMaker.h.


Constructor & Destructor Documentation

template<class T, class TComponent>
edm::eventsetup::ComponentMaker< T, TComponent >::ComponentMaker ( ) [inline]

Definition at line 61 of file ComponentMaker.h.

{}
template<class T, class TComponent>
edm::eventsetup::ComponentMaker< T, TComponent >::ComponentMaker ( const ComponentMaker< T, TComponent > &  ) [private]

Member Function Documentation

template<class T , class TComponent >
boost::shared_ptr< typename ComponentMaker< T, TComponent >::base_type > ComponentMaker::addTo ( EventSetupsController esController,
EventSetupProvider iProvider,
ParameterSet const &  iConfiguration,
bool  replaceExisting 
) const [virtual]

Implements edm::eventsetup::ComponentMakerBase< T >.

Definition at line 102 of file ComponentMaker.h.

References idDealer::description.

{
   // This adds components to the EventSetupProvider for the process. It might
   // make a new component then add it or reuse a component from an earlier
   // SubProcess or the top level process and add that.

   if (!replaceExisting) {
      boost::shared_ptr<typename T::base_type> alreadyMadeComponent = T::getComponentAndRegisterProcess(esController, iConfiguration);

      if (alreadyMadeComponent) {
         // This is for the case when a component is shared between
         // a SubProcess and a previous SubProcess or the top level process
         // because the component has an identical configuration to a component
         // from the top level process or earlier SubProcess.
         boost::shared_ptr<TComponent> component(boost::static_pointer_cast<TComponent, typename T::base_type>(alreadyMadeComponent));
         T::addTo(iProvider, component, iConfiguration, true);
         return component;
      }
   }

   boost::shared_ptr<TComponent> component(new TComponent(iConfiguration));
   ComponentDescription description =
      this->createComponentDescription(iConfiguration);

   this->setDescription(component.get(),description);
   this->setDescriptionForFinder(component.get(),description);
   this->setPostConstruction(component.get(),iConfiguration);

   if (replaceExisting) {
      // This case is for ESProducers where in the first pass
      // the algorithm thought the component could be shared
      // across SubProcess's because there was an ESProducer
      // from a previous process with an identical configuration.
      // But in a later check it was determined that sharing was not
      // possible because other components associated with the
      // same record or records that record depends on had
      // differing configurations.
      T::replaceExisting(iProvider, component);
   } else {
      // This is for the case when a new component is being constructed.
      // All components for the top level process fall in this category.
      // Or it could be a SubProcess where neither the top level process
      // nor any prior SubProcess had a component with exactly the same configuration.
      T::addTo(iProvider, component, iConfiguration, false);
      T::putComponent(esController, iConfiguration, component);
   }
   return component;
}
template<class T, class TComponent>
const ComponentMaker& edm::eventsetup::ComponentMaker< T, TComponent >::operator= ( const ComponentMaker< T, TComponent > &  ) [private]
template<class T, class TComponent>
void edm::eventsetup::ComponentMaker< T, TComponent >::setDescription ( DataProxyProvider iProv,
const ComponentDescription iDesc 
) const [inline, private]

Definition at line 79 of file ComponentMaker.h.

                                                                                             {
        iProv->setDescription(iDesc);
      }
template<class T, class TComponent>
void edm::eventsetup::ComponentMaker< T, TComponent >::setDescription ( void *  ,
const ComponentDescription  
) const [inline, private]

Definition at line 90 of file ComponentMaker.h.

                                                                    {
      }
template<class T, class TComponent>
void edm::eventsetup::ComponentMaker< T, TComponent >::setDescriptionForFinder ( EventSetupRecordIntervalFinder iFinder,
const ComponentDescription iDesc 
) const [inline, private]

Definition at line 82 of file ComponentMaker.h.

                                                                                                                     {
        iFinder->setDescriptionForFinder(iDesc);
      }
template<class T, class TComponent>
void edm::eventsetup::ComponentMaker< T, TComponent >::setDescriptionForFinder ( void *  ,
const ComponentDescription  
) const [inline, private]

Definition at line 92 of file ComponentMaker.h.

                                                                             {
      }
template<class T, class TComponent>
void edm::eventsetup::ComponentMaker< T, TComponent >::setPostConstruction ( void *  ,
const edm::ParameterSet  
) const [inline, private]

Definition at line 94 of file ComponentMaker.h.

                                                                    {
      }
template<class T, class TComponent>
void edm::eventsetup::ComponentMaker< T, TComponent >::setPostConstruction ( DataProxyProvider iProv,
const edm::ParameterSet iPSet 
) const [inline, private]

Definition at line 85 of file ComponentMaker.h.

                                                                                             {
        //The 'appendToDataLabel' parameter was added very late in the development cycle and since
        // the ParameterSet is not sent to the base class we must set the value after construction
        iProv->setAppendToDataLabel(iPSet);
      }