CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Member Functions
edm::PuttableSourceBase Class Reference

#include <PuttableSourceBase.h>

Inheritance diagram for edm::PuttableSourceBase:
edm::InputSource edm::ProducerBase edm::ProductRegistryHelper DQMRootSource dqmservices::DQMProtobufReader edm::IDGeneratorSourceBase< PuttableSourceBase > edm::ProducerSourceBase cond::EmptyIOVSource cond::FileBasedEmptySource edm::ProducerSourceFromFiles LmfSource AlpgenSource edm::MCFileSource FRDStreamSource HcalTBSource L1MuGMTHWFileReader LH5Source LHESource MCatNLOSource PixelSLinkDataInputSource

Public Member Functions

bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
 PuttableSourceBase (ParameterSet const &, InputSourceDescription const &)
 
void registerProducts () final
 Register any produced products. More...
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
- Public Member Functions inherited from edm::InputSource
std::shared_ptr< ActivityRegistryactReg () const
 Accessor for Activity Registry. More...
 
std::shared_ptr< BranchIDListHelper > & branchIDListHelper ()
 
std::shared_ptr< BranchIDListHelper const > branchIDListHelper () const
 Accessors for branchIDListHelper. More...
 
void closeFile (FileBlock *, bool cleaningUpAfterException)
 close current file More...
 
void doBeginJob ()
 Called by framework at beginning of job. More...
 
void doEndJob ()
 Called by framework at end of job. More...
 
ProcessingController::ForwardState forwardState () const
 
bool goToEvent (EventID const &eventID)
 
 InputSource (InputSource const &)=delete
 
 InputSource (ParameterSet const &, InputSourceDescription const &)
 Constructor. More...
 
void issueReports (EventID const &eventID, StreamID streamID)
 issue an event report More...
 
LuminosityBlockNumber_t luminosityBlock () const
 Accessor for current luminosity block number. More...
 
std::shared_ptr< LuminosityBlockAuxiliaryluminosityBlockAuxiliary () const
 Called by the framework to merge or insert lumi in principal cache. More...
 
int maxEvents () const
 
int maxLuminosityBlocks () const
 
ModuleDescription const & moduleDescription () const
 Accessor for 'module' description. More...
 
ItemType nextItemType ()
 Advances the source to the next item. More...
 
InputSourceoperator= (InputSource const &)=delete
 
ProcessConfiguration const & processConfiguration () const
 Accessor for Process Configuration. More...
 
std::string const & processGUID () const
 Accessor for global process identifier. More...
 
ProcessHistoryRegistryprocessHistoryRegistry ()
 
ProcessHistoryRegistry const & processHistoryRegistry () const
 Accessors for process history registry. More...
 
ProcessingMode processingMode () const
 RunsLumisAndEvents (default), RunsAndLumis, or Runs. More...
 
std::shared_ptr< ProductRegistry > & productRegistry ()
 
std::shared_ptr< ProductRegistry const > productRegistry () const
 Accessors for product registry. More...
 
bool randomAccess () const
 
void readAndMergeLumi (LuminosityBlockPrincipal &lbp)
 Read next luminosity block (same as a prior lumi) More...
 
void readAndMergeRun (RunPrincipal &rp)
 Read next run (same as a prior run) More...
 
bool readEvent (EventPrincipal &ep, EventID const &, StreamContext &)
 Read a specific event. More...
 
void readEvent (EventPrincipal &ep, StreamContext &)
 Read next event. More...
 
std::unique_ptr< FileBlockreadFile ()
 Read next file. More...
 
void readLuminosityBlock (LuminosityBlockPrincipal &lumiPrincipal, HistoryAppender &historyAppender)
 Read next luminosity block (new lumi) More...
 
std::shared_ptr< LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. More...
 
bool readProcessBlock ()
 Read next process block. More...
 
void readRun (RunPrincipal &runPrincipal, HistoryAppender &historyAppender)
 Read next run (new run) More...
 
std::shared_ptr< RunAuxiliaryreadRunAuxiliary ()
 Read next run Auxiliary. More...
 
ProcessHistoryID const & reducedProcessHistoryID () const
 
int remainingEvents () const
 
int remainingLuminosityBlocks () const
 
void repeat ()
 Reset the remaining number of events/lumis to the maximum number. More...
 
std::pair< SharedResourcesAcquirer *, std::recursive_mutex * > resourceSharedWithDelayedReader ()
 Returns nullptr if no resource shared between the Source and a DelayedReader. More...
 
ProcessingController::ReverseState reverseState () const
 
void rewind ()
 Begin again at the first event. More...
 
RunNumber_t run () const
 Accessor for current run number. More...
 
std::shared_ptr< RunAuxiliaryrunAuxiliary () const
 Called by the framework to merge or insert run in principal cache. More...
 
void setLuminosityBlockNumber_t (LuminosityBlockNumber_t lb)
 Set the luminosity block ID. More...
 
void setRunNumber (RunNumber_t r)
 Set the run number. More...
 
void skipEvents (int offset)
 
std::shared_ptr< ThinnedAssociationsHelper > & thinnedAssociationsHelper ()
 
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper () const
 Accessors for thinnedAssociationsHelper. More...
 
Timestamp const & timestamp () const
 Accessor for the current time, as seen by the input source. More...
 
virtual ~InputSource () noexcept(false)
 Destructor. More...
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 

Protected Member Functions

void beginJob () override
 Begin protected makes it easier to do template programming. More...
 
- Protected Member Functions inherited from edm::InputSource
void decreaseRemainingEventsBy (int iSkipped)
 
bool eventCached () const
 
bool newLumi () const
 
bool newRun () const
 
ProcessHistoryRegistryprocessHistoryRegistryForUpdate ()
 
ProductRegistryproductRegistryUpdate ()
 
void reset () const
 
void resetEventCached ()
 
void resetLuminosityBlockAuxiliary (bool isNewLumi=true) const
 
void resetNewLumi ()
 
void resetNewRun ()
 
void resetRunAuxiliary (bool isNewRun=true) const
 
void setEventCached ()
 Called by the framework to merge or ached() const {return eventCached_;}. More...
 
void setLuminosityBlockAuxiliary (LuminosityBlockAuxiliary *lbp)
 
void setNewLumi ()
 
void setNewRun ()
 
void setRunAuxiliary (RunAuxiliary *rp)
 
void setTimestamp (Timestamp const &theTime)
 To set the current time, as seen by the input source. More...
 
virtual void skip (int offset)
 
ItemType state () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 

Private Member Functions

virtual void beginLuminosityBlock (LuminosityBlock &)
 
virtual void beginRun (Run &)
 
void doBeginLumi (LuminosityBlockPrincipal &lbp, ProcessContext const *) override
 Called by framework at beginning of lumi block. More...
 
void doBeginRun (RunPrincipal &rp, ProcessContext const *) override
 Called by framework at beginning of run. More...
 
PuttableSourceBaseoperator= (const PuttableSourceBase &)=delete
 
 PuttableSourceBase (const PuttableSourceBase &)=delete
 

Additional Inherited Members

- Public Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Static Public Member Functions inherited from edm::InputSource
static const std::string & baseType ()
 
static void fillDescription (ParameterSetDescription &desc)
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Public Attributes inherited from edm::InputSource
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postEventReadFromSourceSignal_
 
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preEventReadFromSourceSignal_
 

Detailed Description

Definition at line 30 of file PuttableSourceBase.h.

Constructor & Destructor Documentation

◆ PuttableSourceBase() [1/2]

PuttableSourceBase::PuttableSourceBase ( ParameterSet const &  iPSet,
InputSourceDescription const &  iISD 
)

Definition at line 38 of file PuttableSourceBase.cc.

39  : InputSource(iPSet, iISD) {}

◆ PuttableSourceBase() [2/2]

edm::PuttableSourceBase::PuttableSourceBase ( const PuttableSourceBase )
privatedelete

Member Function Documentation

◆ beginJob()

void PuttableSourceBase::beginJob ( void  )
overrideprotectedvirtual

Begin protected makes it easier to do template programming.

Reimplemented from edm::InputSource.

Reimplemented in edm::IDGeneratorSourceBase< PuttableSourceBase >.

Definition at line 43 of file PuttableSourceBase.cc.

43  {
44  auto r = productRegistry();
45  auto const runLookup = r->productLookup(InRun);
46  auto const lumiLookup = r->productLookup(InLumi);
47  auto const eventLookup = r->productLookup(InEvent);
48  auto const& processName = moduleDescription().processName();
49  auto const& moduleLabel = moduleDescription().moduleLabel();
50 
51  auto const& runModuleToIndicies = runLookup->indiciesForModulesInProcess(processName);
52  auto const& lumiModuleToIndicies = lumiLookup->indiciesForModulesInProcess(processName);
53  auto const& eventModuleToIndicies = eventLookup->indiciesForModulesInProcess(processName);
54  resolvePutIndicies(InRun, runModuleToIndicies, moduleLabel);
55  resolvePutIndicies(InLumi, lumiModuleToIndicies, moduleLabel);
56  resolvePutIndicies(InEvent, eventModuleToIndicies, moduleLabel);
57 }

References edm::InEvent, edm::InLumi, edm::InRun, edm::InputSource::moduleDescription(), HerwigMaxPtPartonFilter_cfi::moduleLabel, edm::ModuleDescription::moduleLabel(), SimL1EmulatorRepack_CalouGT_cff::processName, edm::ModuleDescription::processName(), edm::InputSource::productRegistry(), alignCSCRings::r, and edm::ProducerBase::resolvePutIndicies().

◆ beginLuminosityBlock()

void PuttableSourceBase::beginLuminosityBlock ( LuminosityBlock )
privatevirtual

Reimplemented in DQMRootSource, and dqmservices::DQMProtobufReader.

Definition at line 75 of file PuttableSourceBase.cc.

75 {}

Referenced by doBeginLumi().

◆ beginRun()

void PuttableSourceBase::beginRun ( Run )
privatevirtual

Reimplemented in DQMRootSource, MCatNLOSource, and AlpgenSource.

Definition at line 73 of file PuttableSourceBase.cc.

73 {}

Referenced by doBeginRun().

◆ doBeginLumi()

void PuttableSourceBase::doBeginLumi ( LuminosityBlockPrincipal lbp,
ProcessContext const *   
)
overrideprivatevirtual

Called by framework at beginning of lumi block.

Reimplemented from edm::InputSource.

Definition at line 66 of file PuttableSourceBase.cc.

66  {
67  LuminosityBlock lb(lbp, moduleDescription(), nullptr, false);
68  lb.setProducer(this);
69  callWithTryCatchAndPrint<void>([this, &lb]() { beginLuminosityBlock(lb); }, "Calling Source::beginLuminosityBlock");
70  commit_(lb);
71 }

References beginLuminosityBlock(), edm::ProducerBase::commit_(), edm::InputSource::moduleDescription(), and edm::LuminosityBlock::setProducer().

◆ doBeginRun()

void PuttableSourceBase::doBeginRun ( RunPrincipal rp,
ProcessContext const *   
)
overrideprivatevirtual

Called by framework at beginning of run.

Reimplemented from edm::InputSource.

Definition at line 59 of file PuttableSourceBase.cc.

59  {
60  Run run(rp, moduleDescription(), nullptr, false);
61  run.setProducer(this);
62  callWithTryCatchAndPrint<void>([this, &run]() { beginRun(run); }, "Calling Source::beginRun");
63  commit_(run);
64 }

References beginRun(), edm::ProducerBase::commit_(), edm::InputSource::moduleDescription(), and edm::InputSource::run().

◆ hasAbilityToProduceInBeginLumis()

bool edm::PuttableSourceBase::hasAbilityToProduceInBeginLumis ( ) const
inlinefinalvirtual

Reimplemented from edm::ProductRegistryHelper.

Definition at line 45 of file PuttableSourceBase.h.

45 { return true; }

◆ hasAbilityToProduceInBeginRuns()

bool edm::PuttableSourceBase::hasAbilityToProduceInBeginRuns ( ) const
inlinefinalvirtual

Reimplemented from edm::ProductRegistryHelper.

Definition at line 43 of file PuttableSourceBase.h.

43 { return true; }

◆ operator=()

PuttableSourceBase& edm::PuttableSourceBase::operator= ( const PuttableSourceBase )
privatedelete

◆ registerProducts() [1/2]

void PuttableSourceBase::registerProducts ( )
finalvirtual

Register any produced products.

Reimplemented from edm::InputSource.

Definition at line 41 of file PuttableSourceBase.cc.

References edm::InputSource::moduleDescription(), edm::InputSource::productRegistryUpdate(), and registerProducts().

Referenced by registerProducts().

◆ registerProducts() [2/2]

void edm::ProducerBase::registerProducts

Definition at line 57 of file ProducerBase.cc.

57  {
59  return;
60  }
61  //If we have a callback, first tell the callback about all the entries already in the
62  // product registry, then add any items this producer wants to add to the registry
63  // and only after that do we register the callback. This is done so the callback does not
64  // get called for items registered by this producer (avoids circular reference problems)
65  bool isListener = false;
66  if (registrationCallback()) {
67  isListener = true;
68  iReg->callForEachBranch(registrationCallback());
69  }
70  TypeLabelList const& plist = typeLabelList();
71 
72  ProductRegistryHelper::addToRegistry(plist.begin(), plist.end(), md, *(iReg), this, isListener);
73  if (registrationCallback()) {
75  regService->watchProductAdditions(CallbackWrapper(producer, registrationCallback(), iReg, md));
76  }
77  }

◆ resolvePutIndicies()

void edm::ProducerBase::resolvePutIndicies

Definition at line 79 of file ProducerBase.cc.

81  {
82  auto const& plist = typeLabelList();
83  if (putTokenToResolverIndex_.size() != plist.size()) {
85  }
86  auto range = iIndicies.equal_range(moduleLabel);
87  putIndicies_[iBranchType].reserve(iIndicies.count(moduleLabel));
88  for (auto it = range.first; it != range.second; ++it) {
89  putIndicies_[iBranchType].push_back(std::get<2>(it->second));
90  unsigned int i = 0;
91  for (auto const& tl : plist) {
92  if (convertToBranchType(tl.transition_) == iBranchType and (tl.typeID_ == *std::get<0>(it->second)) and
93  (tl.productInstanceName_ == std::get<1>(it->second))) {
94  putTokenToResolverIndex_[i] = std::get<2>(it->second);
95  //NOTE: The ExternalLHEProducer puts the 'same' product in at
96  // both beginRun and endRun. Therefore we can get multiple matches.
97  // When the module is finally fixed, we can use the 'break'
98  //break;
99  }
100  ++i;
101  }
102  }
103  }
edm::ModuleDescription::moduleLabel
std::string const & moduleLabel() const
Definition: ModuleDescription.h:43
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
mps_fire.i
i
Definition: mps_fire.py:428
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
edm::Run
Definition: Run.h:45
edm::ProducerBase::putIndicies_
std::array< std::vector< edm::ProductResolverIndex >, edm::NumBranchTypes > putIndicies_
Definition: ProducerBase.h:130
edm::ProducerBase::TypeLabelList
ProductRegistryHelper::TypeLabelList TypeLabelList
Definition: ProducerBase.h:72
edm::ProducerBase::commit_
void commit_(P &iPrincipal)
Definition: ProducerBase.h:120
RawToDigi_Repacked_cff.producer
producer
Definition: RawToDigi_Repacked_cff.py:6
edm::ModuleDescription::processName
std::string const & processName() const
Definition: ModuleDescription.cc:47
edm::InRun
Definition: BranchType.h:11
edm::InputSource::productRegistry
std::shared_ptr< ProductRegistry const > productRegistry() const
Accessors for product registry.
Definition: InputSource.h:154
edm::InputSource::moduleDescription
ModuleDescription const & moduleDescription() const
Accessor for 'module' description.
Definition: InputSource.h:201
Service
edm::InEvent
Definition: BranchType.h:11
edm::ProductRegistryHelper::typeLabelList
TypeLabelList const & typeLabelList() const
used by the fwk to register the list of products of this module
Definition: ProductRegistryHelper.cc:20
edm::InputSource::InputSource
InputSource(ParameterSet const &, InputSourceDescription const &)
Constructor.
Definition: InputSource.cc:46
edm::convertToBranchType
constexpr BranchType convertToBranchType(Transition iValue)
Definition: Transition.h:26
edm::ProducerBase::registrationCallback
std::function< void(BranchDescription const &)> registrationCallback() const
used by the fwk to register list of products
Definition: ProducerBase.cc:19
edm::PuttableSourceBase::registerProducts
void registerProducts() final
Register any produced products.
Definition: PuttableSourceBase.cc:41
edm::PuttableSourceBase::beginLuminosityBlock
virtual void beginLuminosityBlock(LuminosityBlock &)
Definition: PuttableSourceBase.cc:75
edm::InputSource::productRegistryUpdate
ProductRegistry & productRegistryUpdate()
Definition: InputSource.h:329
edm::InLumi
Definition: BranchType.h:11
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
edm::ProducerBase::putTokenToResolverIndex_
std::vector< edm::ProductResolverIndex > putTokenToResolverIndex_
Definition: ProducerBase.h:131
edm::ProductRegistryHelper::addToRegistry
static void addToRegistry(TypeLabelList::const_iterator const &iBegin, TypeLabelList::const_iterator const &iEnd, ModuleDescription const &iDesc, ProductRegistry &iReg, ProductRegistryHelper *iProd, bool iIsListener=false)
Definition: ProductRegistryHelper.cc:34
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
alignCSCRings.r
r
Definition: alignCSCRings.py:93
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
edm::ProducerBase::resolvePutIndicies
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
Definition: ProducerBase.cc:79
edm::PuttableSourceBase::beginRun
virtual void beginRun(Run &)
Definition: PuttableSourceBase.cc:73
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
edm::InputSource::run
RunNumber_t run() const
Accessor for current run number.
Definition: InputSource.cc:439