CMS 3D CMS Logo

Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes

CSCPedestalsDBConditions Class Reference

#include <CSCPedestalsDBConditions.h>

Inheritance diagram for CSCPedestalsDBConditions:
edm::ESProducer edm::EventSetupRecordIntervalFinder edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

List of all members.

Public Types

typedef const CSCDBPedestalsReturnType

Public Member Functions

 CSCPedestalsDBConditions (const edm::ParameterSet &)
ReturnType produceDBPedestals (const CSCDBPedestalsRcd &)
 ~CSCPedestalsDBConditions ()

Static Public Member Functions

static CSCDBPedestalsprefillDBPedestals ()

Private Member Functions

void setIntervalFor (const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &)

Private Attributes

CSCDBPedestalscndbPedestals

Detailed Description

Definition at line 20 of file CSCPedestalsDBConditions.h.


Member Typedef Documentation

Definition at line 27 of file CSCPedestalsDBConditions.h.


Constructor & Destructor Documentation

CSCPedestalsDBConditions::CSCPedestalsDBConditions ( const edm::ParameterSet iConfig)

Definition at line 10 of file CSCPedestalsDBConditions.cc.

References cndbPedestals, prefillDBPedestals(), produceDBPedestals(), and edm::ESProducer::setWhatProduced().

{
  //the following line is needed to tell the framework what
  // data is being produced
 cndbPedestals = prefillDBPedestals();
  // added by Zhen (changed since 1_2_0)
  setWhatProduced(this,&CSCPedestalsDBConditions::produceDBPedestals);
  findingRecord<CSCDBPedestalsRcd>();
  //now do what ever other initialization is needed
}
CSCPedestalsDBConditions::~CSCPedestalsDBConditions ( )

Definition at line 22 of file CSCPedestalsDBConditions.cc.

References cndbPedestals.

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

Member Function Documentation

CSCDBPedestals * CSCPedestalsDBConditions::prefillDBPedestals ( ) [inline, static]

Definition at line 47 of file CSCPedestalsDBConditions.h.

References ExpressReco_HICollisions_FallBack::cerr, cmsDriverOptions::counter, cmsRelvalreport::exit, CSCDBPedestals::factor_ped, CSCDBPedestals::factor_rms, i, recoMuon::in, gen::k, and CSCDBPedestals::pedestals.

Referenced by CSCPedestalsDBConditions().

{
  const int PED_FACTOR=10;
  const int RMS_FACTOR=1000;
  const int MAX_SIZE = 252288;
  //const int MAX_SIZE = 273024; //for extra ME1a unganged case
  const int MAX_SHORT= 32767;
  CSCDBPedestals * cndbpedestals = new CSCDBPedestals();

  int db_index;
  float db_ped, db_rms;
  std::vector<int> db_index_id;
  std::vector<float> db_peds;
  std::vector<float> db_pedrms;
  int new_index;
  float new_ped,new_rms;
  std::vector<int> new_index_id;
  std::vector<float> new_peds;
  std::vector<float> new_pedrms;

  int counter;
  int db_nrlines=0;
  int new_nrlines=0;
  
  std::ifstream dbdata; 
  dbdata.open("old_dbpeds.dat",std::ios::in); 
  if(!dbdata) {
    std::cerr <<"Error: old_dbpeds.dat -> no such file!"<< std::endl;
    exit(1);
  }
  
  while (!dbdata.eof() ) { 
    dbdata >> db_index >> db_ped >> db_rms ; 
    db_index_id.push_back(db_index);
    db_peds.push_back(db_ped);
    db_pedrms.push_back(db_rms);
    db_nrlines++;
  }
  dbdata.close();

  std::ifstream newdata;
  newdata.open("peds.dat",std::ios::in); 
  if(!newdata) {
    std::cerr <<"Error: peds.dat -> no such file!"<< std::endl;
    exit(1);
  }
  
  while (!newdata.eof() ) { 
    newdata >> new_index >> new_ped >> new_rms ; 
    new_index_id.push_back(new_index);
    new_peds.push_back(new_ped);
    new_pedrms.push_back(new_rms);
    new_nrlines++;
  }
  newdata.close();
  
  CSCDBPedestals::PedestalContainer & itemvector = cndbpedestals->pedestals;
  itemvector.resize(MAX_SIZE);
  cndbpedestals->factor_ped= int (PED_FACTOR);
  cndbpedestals->factor_rms= int (RMS_FACTOR);

  for(int i=0; i<MAX_SIZE;++i){
    itemvector[i].ped= (short int) (db_peds[i]*PED_FACTOR+0.5);
    itemvector[i].rms= (short int) (db_pedrms[i]*RMS_FACTOR+0.5);
  }

  for(int i=0; i<MAX_SIZE;++i){
     counter=db_index_id[i];  
     itemvector[i] = itemvector[counter];
     itemvector[i].ped = int (db_peds[i]);
     itemvector[i].rms = int (db_pedrms[i]);

     for (unsigned int k=0;k<new_index_id.size()-1;k++){
       if(counter==new_index_id[k]){
         if((short int) (fabs(new_peds[k]*PED_FACTOR+0.5))<MAX_SHORT)   itemvector[counter].ped= int (new_peds[k]*PED_FACTOR+0.5);
         if((short int) (fabs(new_pedrms[k]*RMS_FACTOR+0.5))<MAX_SHORT) itemvector[counter].rms= int (new_pedrms[k]*RMS_FACTOR+0.5);
         itemvector[i] = itemvector[counter];
         //if (new_peds[k]==0) itemvector[counter].ped = int (db_peds[i]);
         //if (new_pedrms[k]==0) itemvector[counter].rms = int (db_pedrms[i]);
       }  
     }
     
     if (counter>223968){
       itemvector[counter].ped = int (db_peds[i]);
       itemvector[counter].rms = int (db_pedrms[i]);
       itemvector[i] = itemvector[counter];
     }
     
   }
   return cndbpedestals;
}
CSCPedestalsDBConditions::ReturnType CSCPedestalsDBConditions::produceDBPedestals ( const CSCDBPedestalsRcd iRecord)

Definition at line 37 of file CSCPedestalsDBConditions.cc.

References cndbPedestals.

Referenced by CSCPedestalsDBConditions().

{
  //need a new object so to not be deleted at exit
  CSCDBPedestals* mydata=new CSCDBPedestals( *cndbPedestals );
  return mydata;
  
}
void CSCPedestalsDBConditions::setIntervalFor ( const edm::eventsetup::EventSetupRecordKey ,
const edm::IOVSyncValue ,
edm::ValidityInterval oValidity 
) [private, virtual]

Member Data Documentation