CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

ConfigurableAPVCyclePhaseProducer Class Reference

#include <DPGAnalysis/SiStripTools/plugins/ConfigurableAPVCyclePhaseProducer.cc>

Inheritance diagram for ConfigurableAPVCyclePhaseProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 ConfigurableAPVCyclePhaseProducer (const edm::ParameterSet &)
 ~ConfigurableAPVCyclePhaseProducer ()

Private Member Functions

virtual void beginJob ()
virtual void beginRun (const edm::Run &, const edm::EventSetup &) override
virtual void endJob ()
virtual void produce (edm::Event &, const edm::EventSetup &) override

Private Attributes

APVCyclePhaseCollection _currapvphases
const std::vector< std::string > _defpartnames
const std::vector< int > _defphases
std::map< int, std::vector
< std::string > > 
_runpartnames
std::map< int, std::vector< int > > _runphases

Detailed Description

Description: EDproducer for APVCyclePhaseCollection which uses the configuration file to assign a phase to the run

Implementation: <Notes on="" implementation>="">

Definition at line 45 of file ConfigurableAPVCyclePhaseProducer.cc.


Constructor & Destructor Documentation

ConfigurableAPVCyclePhaseProducer::ConfigurableAPVCyclePhaseProducer ( const edm::ParameterSet iConfig) [explicit]

Definition at line 79 of file ConfigurableAPVCyclePhaseProducer.cc.

References _defpartnames, _defphases, _runpartnames, _runphases, Exception, edm::ParameterSet::getParameter(), and findQualityFiles::size.

                                                                                                  :
  _defpartnames(iConfig.getParameter<std::vector<std::string> >("defaultPartitionNames")),
  _defphases(iConfig.getParameter<std::vector<int> >("defaultPhases")),
  _currapvphases()
{

  produces<APVCyclePhaseCollection,edm::InEvent>();

   //now do what ever other initialization is needed

  if(_defphases.size() < _defpartnames.size() ) {
    // throw exception
    throw cms::Exception("InvalidAPVCyclePhases") << " Inconsistent default phases/partitions vector sizes: "  
                                             << _defphases.size() << " " 
                                             << _defpartnames.size();
  }

  std::vector<edm::ParameterSet> vps(iConfig.getParameter<std::vector<edm::ParameterSet> >("runPhases"));

  for(std::vector<edm::ParameterSet>::const_iterator ps = vps.begin();ps!=vps.end();ps++) {
    _runphases[ps->getParameter<int>("runNumber")] = ps->getUntrackedParameter<std::vector<int> >("phases",_defphases);
    _runpartnames[ps->getParameter<int>("runNumber")] = ps->getUntrackedParameter<std::vector<std::string> >("partitions",_defpartnames);

    if(_runphases[ps->getParameter<int>("runNumber")].size() < _runpartnames[ps->getParameter<int>("runNumber")].size() ) {
      // throw exception
      throw cms::Exception("InvalidAPVCyclePhases") << " Inconsistent run " << ps->getParameter<int>("runNumber")
                                               << " phases/partitions vector sizes: " 
                                               << _runphases[ps->getParameter<int>("runNumber")].size() << " " 
                                               << _runpartnames[ps->getParameter<int>("runNumber")].size();
    }

  }
  
}
ConfigurableAPVCyclePhaseProducer::~ConfigurableAPVCyclePhaseProducer ( )

Definition at line 115 of file ConfigurableAPVCyclePhaseProducer.cc.

{
 
   // do anything here that needs to be done at desctruction time
   // (e.g. close files, deallocate resources etc.)

}

Member Function Documentation

void ConfigurableAPVCyclePhaseProducer::beginJob ( void  ) [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 191 of file ConfigurableAPVCyclePhaseProducer.cc.

{
}
void ConfigurableAPVCyclePhaseProducer::beginRun ( const edm::Run iRun,
const edm::EventSetup iSetup 
) [override, private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 130 of file ConfigurableAPVCyclePhaseProducer.cc.

References _currapvphases, _defpartnames, _defphases, _runpartnames, _runphases, Exception, APVCyclePhaseCollection::get(), and edm::RunBase::run().

{

  using namespace edm;
  
  _currapvphases.get().clear();

  // fill phase map

  const std::map<int,std::vector<std::string> >& _crunpartnames = _runpartnames;
  const std::map<int,std::vector<int> >& _crunphases = _runphases;

  std::map<int,std::vector<int> >::const_iterator trphases = _crunphases.find(iRun.run());
  std::map<int,std::vector<std::string> >::const_iterator trpartnames = _crunpartnames.find(iRun.run());

  std::vector<int> phases = _defphases;
  std::vector<std::string> partnames = _defpartnames;

  if(trphases != _crunphases.end()) {
    phases = trphases->second;
  }
  if(trpartnames != _crunpartnames.end()) {
    partnames = trpartnames->second;
  }

  if(phases.size() < partnames.size() ) {
    // throw exception
    throw cms::Exception("InvalidAPVCyclePhases") << " Inconsistent phases/partitions vector sizes: " 
                                             << phases.size() << " " 
                                             << partnames.size();
  }

  for(unsigned int ipart=0;ipart<partnames.size();++ipart) {
    if(phases[ipart]>=0) {
      _currapvphases.get()[partnames[ipart]] = phases[ipart];
    }
  }

  
  for(std::map<std::string,int>::const_iterator it=_currapvphases.get().begin(); it!=_currapvphases.get().end();it++) {
    
    edm::LogInfo("APVCyclePhaseProducerDebug") << "partition " << it->first << " phase " << it->second;

  }
  
}
void ConfigurableAPVCyclePhaseProducer::endJob ( void  ) [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 197 of file ConfigurableAPVCyclePhaseProducer.cc.

                                          {
}
void ConfigurableAPVCyclePhaseProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [override, private, virtual]

Implements edm::EDProducer.

Definition at line 178 of file ConfigurableAPVCyclePhaseProducer.cc.

References _currapvphases, and edm::Event::put().

{

  using namespace edm;
  
  std::auto_ptr<APVCyclePhaseCollection> apvphases(new APVCyclePhaseCollection(_currapvphases) );
  
  iEvent.put(apvphases);

}

Member Data Documentation

Definition at line 64 of file ConfigurableAPVCyclePhaseProducer.cc.

Referenced by beginRun(), and produce().

const std::vector<std::string> ConfigurableAPVCyclePhaseProducer::_defpartnames [private]
const std::vector<int> ConfigurableAPVCyclePhaseProducer::_defphases [private]
std::map<int,std::vector<std::string> > ConfigurableAPVCyclePhaseProducer::_runpartnames [private]
std::map<int,std::vector<int> > ConfigurableAPVCyclePhaseProducer::_runphases [private]