CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes

ConditionDBWriter< T > Class Template Reference

#include <ConditionDBWriter.h>

Inheritance diagram for ConditionDBWriter< T >:
edm::EDAnalyzer

List of all members.

Public Member Functions

 ConditionDBWriter (const edm::ParameterSet &iConfig)
virtual ~ConditionDBWriter ()

Protected Member Functions

void storeOnDbNow ()
cond::Time_t timeOfLastIOV ()

Private Member Functions

virtual void algoAnalyze (const edm::Event &, const edm::EventSetup &)
virtual void algoBeginJob (const edm::EventSetup &)
virtual void algoBeginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
virtual void algoBeginRun (const edm::Run &, const edm::EventSetup &)
virtual void algoEndJob ()
virtual void algoEndLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
virtual void algoEndRun (const edm::Run &, const edm::EventSetup &)
void analyze (const edm::Event &event, const edm::EventSetup &iSetup)
void beginJob ()
void beginLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup)
void beginRun (const edm::Run &run, const edm::EventSetup &es)
void endJob ()
void endLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &es)
void endRun (const edm::Run &run, const edm::EventSetup &es)
virtual T * getNewObject ()=0
void setTime ()
void storeOnDb (T *objPointer)

Private Attributes

bool AlgoDrivenMode_
bool doStore_
bool firstRun_
bool JobMode_
bool LumiBlockMode_
std::string Record_
bool RunMode_
bool setSinceTime_
bool SinceAppendMode_
cond::Time_t Time_

Detailed Description

template<class T>
class ConditionDBWriter< T >

Definition at line 151 of file ConditionDBWriter.h.


Constructor & Destructor Documentation

template<class T>
ConditionDBWriter< T >::ConditionDBWriter ( const edm::ParameterSet iConfig) [inline, explicit]

Definition at line 155 of file ConditionDBWriter.h.

                                                             : LumiBlockMode_(false), RunMode_(false), JobMode_(false), AlgoDrivenMode_(false), Time_(0), setSinceTime_(false), firstRun_(true)
  {
    edm::LogInfo("ConditionDBWriter::ConditionDBWriter()") << std::endl;
    SinceAppendMode_=iConfig.getParameter<bool>("SinceAppendMode");
    std::string IOVMode=iConfig.getParameter<std::string>("IOVMode");
    if (IOVMode==std::string("Job")) JobMode_=true;
    else if (IOVMode==std::string("Run")) RunMode_=true;
    else if (IOVMode==std::string("LumiBlock")) LumiBlockMode_=true;
    else if (IOVMode==std::string("AlgoDriven")) AlgoDrivenMode_=true;
    else  edm::LogError("ConditionDBWriter::ConditionDBWriter(): ERROR - unknown IOV interval write mode...will not store anything on the DB") << std::endl;
    Record_=iConfig.getParameter<std::string>("Record");
    doStore_=iConfig.getParameter<bool>("doStoreOnDB");
    
    if(! SinceAppendMode_ ) 
      edm::LogError("ConditionDBWriter::endJob(): ERROR - only SinceAppendMode support!!!!");
  }
template<class T>
virtual ConditionDBWriter< T >::~ConditionDBWriter ( ) [inline, virtual]

Definition at line 172 of file ConditionDBWriter.h.

  {
    edm::LogInfo("ConditionDBWriter::~ConditionDBWriter()") << std::endl;
  }

Member Function Documentation

template<class T>
virtual void ConditionDBWriter< T >::algoAnalyze ( const edm::Event ,
const edm::EventSetup  
) [inline, private, virtual]
template<class T>
virtual void ConditionDBWriter< T >::algoBeginJob ( const edm::EventSetup ) [inline, private, virtual]
template<class T>
virtual void ConditionDBWriter< T >::algoBeginLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
) [inline, private, virtual]
template<class T>
virtual void ConditionDBWriter< T >::algoBeginRun ( const edm::Run ,
const edm::EventSetup  
) [inline, private, virtual]
template<class T>
virtual void ConditionDBWriter< T >::algoEndJob ( ) [inline, private, virtual]
template<class T>
virtual void ConditionDBWriter< T >::algoEndLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
) [inline, private, virtual]
template<class T>
virtual void ConditionDBWriter< T >::algoEndRun ( const edm::Run ,
const edm::EventSetup  
) [inline, private, virtual]

Definition at line 195 of file ConditionDBWriter.h.

Referenced by ConditionDBWriter< SiStripApvGain >::endRun().

{};
template<class T>
void ConditionDBWriter< T >::analyze ( const edm::Event event,
const edm::EventSetup iSetup 
) [inline, private, virtual]

Implements edm::EDAnalyzer.

Definition at line 221 of file ConditionDBWriter.h.

  {
    if(setSinceTime_ ){
      setTime(); //set new since time for possible next upload to DB  
      setSinceTime_=false;
    }
    algoAnalyze(event, iSetup);
  }
template<class T>
void ConditionDBWriter< T >::beginJob ( void  ) [inline, private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 199 of file ConditionDBWriter.h.

{}
template<class T>
void ConditionDBWriter< T >::beginLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
) [inline, private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 214 of file ConditionDBWriter.h.

  {
    edm::LogInfo("ConditionDBWriter::beginLuminosityBlock") << std::endl;
    if(LumiBlockMode_ && SinceAppendMode_) setSinceTime_=true;
    algoBeginLuminosityBlock(lumiBlock, iSetup);
  }
template<class T>
void ConditionDBWriter< T >::beginRun ( const edm::Run run,
const edm::EventSetup es 
) [inline, private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 201 of file ConditionDBWriter.h.

  {
    if( firstRun_ ) {
      edm::LogInfo("ConditionDBWriter::beginJob") << std::endl;
      if( (JobMode_ || AlgoDrivenMode_) && SinceAppendMode_) setSinceTime_=true;
      algoBeginJob(es);
      firstRun_ = false;
    }
    edm::LogInfo("ConditionDBWriter::beginRun") << std::endl;
    if(RunMode_ && SinceAppendMode_) setSinceTime_=true;
    algoBeginRun(run,es);
  }
template<class T>
void ConditionDBWriter< T >::endJob ( void  ) [inline, private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 269 of file ConditionDBWriter.h.

  {
    edm::LogInfo("ConditionDBWriter::endJob") << std::endl;
    
    algoEndJob();
    
    if(JobMode_){
      
      T * objPointer = getNewObject();
      
      if( objPointer ){
        storeOnDb(objPointer);
      }
      
      else {
        
        edm::LogError("ConditionDBWriter::endJob(): ERROR - requested to store on DB on a Job based interval, but received null pointer...will not store anything on the DB") << std::endl;
      }
    }
  }
template<class T>
void ConditionDBWriter< T >::endLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup es 
) [inline, private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 230 of file ConditionDBWriter.h.

  {
    edm::LogInfo("ConditionDBWriter::endLuminosityBlock") << std::endl;
    algoEndLuminosityBlock(lumiBlock, es);
    
    if(LumiBlockMode_){
      
      T * objPointer = getNewObject();
      
      if(objPointer ){
        storeOnDb(objPointer);
      }
      else {
        edm::LogError("ConditionDBWriter::endLuminosityblock(): ERROR - requested to store on DB on a Lumi Block based interval, but received null pointer...will not store anything on the DB") << std::endl;
      }
    }
  }
template<class T>
void ConditionDBWriter< T >::endRun ( const edm::Run run,
const edm::EventSetup es 
) [inline, private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 250 of file ConditionDBWriter.h.

  {
    edm::LogInfo("ConditionDBWriter::endRun") << std::endl;
    
    algoEndRun(run, es);
    
    if(RunMode_){
      
      T * objPointer = getNewObject();
      
      if(objPointer ){
        storeOnDb(objPointer);
      }
      else {
        edm::LogError("ConditionDBWriter::endRun(): ERROR - requested to store on DB on a Run based interval, but received null pointer...will not store anything on the DB") << std::endl;
      }
    }
  }
template<class T>
virtual T* ConditionDBWriter< T >::getNewObject ( ) [private, pure virtual]
template<class T>
void ConditionDBWriter< T >::setTime ( ) [inline, private]

Definition at line 317 of file ConditionDBWriter.h.

Referenced by ConditionDBWriter< SiStripApvGain >::analyze().

  {
    edm::Service<cond::service::PoolDBOutputService> mydbservice;
    
    if( mydbservice.isAvailable() ){
      Time_ = mydbservice->currentTime();
      edm::LogInfo("ConditionDBWriter::setTime: time set to ") << Time_ << std::endl;
    }
    else{
      edm::LogError("ConditionDBWriter::setTime(): PoolDBOutputService is not available...cannot set current time") << std::endl;
    }
  }
template<class T>
void ConditionDBWriter< T >::storeOnDb ( T *  objPointer) [inline, private]

Definition at line 290 of file ConditionDBWriter.h.

Referenced by ConditionDBWriter< SiStripApvGain >::endJob(), ConditionDBWriter< SiStripApvGain >::endLuminosityBlock(), ConditionDBWriter< SiStripApvGain >::endRun(), and ConditionDBWriter< SiStripApvGain >::storeOnDbNow().

  {
    edm::LogInfo("ConditionDBWriter::storeOnDb ")  << std::endl;
    
    setSinceTime_=true;
    
    if(! objPointer) {
      edm::LogError("ConditionDBWriter: Pointer to object has not been set...storing no data on DB") ;
      return;
    }
    
    //And now write  data in DB
    if( !doStore_ ) return;
    edm::Service<cond::service::PoolDBOutputService> mydbservice;
    if (!  mydbservice.isAvailable() ) {
      edm::LogError("ConditionDBWriter")<<"PoolDBOutputService is unavailable"<<std::endl;
      return;
    }
    
    cond::Time_t since = 
      ( mydbservice->isNewTagRequest(Record_) ) ? mydbservice->beginOfTime() : Time_;
    
    edm::LogInfo("ConditionDBWriter") << "appending a new object to tag " 
                                      <<Record_ <<" in since mode " << std::endl;
    mydbservice->writeOne<T>(objPointer, since, Record_);
  }
template<class T>
void ConditionDBWriter< T >::storeOnDbNow ( ) [inline, protected]

Definition at line 334 of file ConditionDBWriter.h.

  {
    T * objPointer = 0;
    
    if(AlgoDrivenMode_){
      
      setSinceTime_=true;
      
      objPointer = getNewObject();
      
      if (!objPointer ) {
        edm::LogError("ConditionDBWriter::storeOnDbNow: ERROR - requested to store on DB a new object (module configuration is algo driven based IOV), but received NULL pointer...will not store anything on the DB") << std::endl;
        return;
      }
      else {storeOnDb(objPointer);}
      
    }
    else {
      
      edm::LogError("ConditionDBWriter::storeOnDbNow(): ERROR - received a direct request from concrete algorithm to store on DB a new object, but module configuration is not to store on DB on an algo driven based interval...will not store anything on the DB") << std::endl;
      return;
    }
  }
template<class T>
cond::Time_t ConditionDBWriter< T >::timeOfLastIOV ( ) [inline, protected]

Definition at line 360 of file ConditionDBWriter.h.

{return Time_;}

Member Data Documentation

template<class T>
bool ConditionDBWriter< T >::AlgoDrivenMode_ [private]
template<class T>
bool ConditionDBWriter< T >::doStore_ [private]
template<class T>
bool ConditionDBWriter< T >::firstRun_ [private]

Definition at line 377 of file ConditionDBWriter.h.

Referenced by ConditionDBWriter< SiStripApvGain >::beginRun().

template<class T>
bool ConditionDBWriter< T >::JobMode_ [private]
template<class T>
bool ConditionDBWriter< T >::LumiBlockMode_ [private]
template<class T>
std::string ConditionDBWriter< T >::Record_ [private]
template<class T>
bool ConditionDBWriter< T >::RunMode_ [private]
template<class T>
bool ConditionDBWriter< T >::setSinceTime_ [private]
template<class T>
bool ConditionDBWriter< T >::SinceAppendMode_ [private]
template<class T>
cond::Time_t ConditionDBWriter< T >::Time_ [private]