#include <EcalDCSHandler.h>
Public Member Functions | |
int | detIDToLogicID (int, int, int) |
EcalDCSHandler (edm::ParameterSet const &) | |
void | getNewObjects () |
int * | HVEELogicIDToDetID (int, int) const |
int * | HVLogicIDToDetID (int, int) const |
std::string | id () const |
bool | insertHVDataSetToOffline (const std::map< EcalLogicID, RunDCSHVDat > *dataset, EcalDCSTowerStatus *dcs_temp) const |
bool | insertLVDataSetToOffline (const std::map< EcalLogicID, RunDCSLVDat > *dataset, EcalDCSTowerStatus *dcs_temp, std::vector< EcalLogicID >) const |
int * | LVLogicIDToDetID (int, int) const |
uint16_t | OffDBStatus (uint16_t dbStatus, int pos) |
void | printHVDataSet (const std::map< EcalLogicID, RunDCSHVDat > *dataset, int) const |
void | printLVDataSet (const std::map< EcalLogicID, RunDCSLVDat > *dataset, int) const |
uint16_t | updateHV (RunDCSHVDat *hv, uint16_t dbStatus, int modo=0) const |
uint16_t | updateLV (RunDCSLVDat *lv, uint16_t dbStatus) const |
~EcalDCSHandler () | |
Public Attributes | |
EcalCondDBInterface * | econn |
Private Attributes | |
unsigned long | m_firstRun |
unsigned long | m_lastRun |
std::string | m_name |
std::string | m_pass |
std::string | m_sid |
std::string | m_user |
Definition at line 52 of file EcalDCSHandler.h.
popcon::EcalDCSHandler::EcalDCSHandler | ( | edm::ParameterSet const & | ps | ) |
Definition at line 11 of file EcalDCSHandler.cc.
References gather_cfg::cout, edm::ParameterSet::getParameter(), m_firstRun, m_lastRun, m_pass, m_sid, m_user, and AlCaHLTBitMon_QueryRunRegistry::string.
: m_name(ps.getUntrackedParameter<std::string>("name","EcalDCSHandler")) { std::cout << "EcalDCS Source handler constructor\n" << std::endl; m_firstRun=(unsigned long)atoi( ps.getParameter<std::string>("firstRun").c_str()); m_lastRun=(unsigned long)atoi( ps.getParameter<std::string>("lastRun").c_str()); m_sid= ps.getParameter<std::string>("OnlineDBSID"); m_user= ps.getParameter<std::string>("OnlineDBUser"); m_pass= ps.getParameter<std::string>("OnlineDBPassword"); std::cout << m_sid<<"/"<<m_user<<std::endl; }
popcon::EcalDCSHandler::~EcalDCSHandler | ( | ) |
Definition at line 26 of file EcalDCSHandler.cc.
{ }
int popcon::EcalDCSHandler::detIDToLogicID | ( | int | iz, |
int | i, | ||
int | j | ||
) |
Definition at line 324 of file EcalDCSHandler.cc.
{ // returns the number from 0 to 1223 from SM1 to 36 from ch 1 to 34 int sm=0; int hv_chan=0; sm = (i-1)/4; if(iz<0) sm=sm+18; int ilocal=(i-1)-sm*4; if(iz<0){ if(ilocal==0 || ilocal==1) hv_chan=1; if(ilocal==2 || ilocal==3) hv_chan=2; } else { if(ilocal==0 || ilocal==1) hv_chan=2; if(ilocal==2 || ilocal==3) hv_chan=1; } sm=sm+1; hv_chan=(j-1)*2+hv_chan; hv_chan=(sm-1)*34+hv_chan -1 ; return hv_chan; }
void popcon::EcalDCSHandler::getNewObjects | ( | ) | [virtual] |
Implements popcon::PopConSourceHandler< EcalDCSTowerStatus >.
Definition at line 626 of file EcalDCSHandler.cc.
References gather_cfg::cout, dataset::dataset, EcalBarrel, Exception, RunIOV::getRunNumber(), EcalTrigTowerDetId::hashedIndex(), i, j, gen::k, NULL, EcalLogicID::NULLID, alignCSCRings::r, DetId::rawId(), EcalCondTowerObjectContainer< T >::setValue(), AlCaHLTBitMon_QueryRunRegistry::string, EcalTrigTowerDetId::validDetId(), and EcalScDetId::validDetId().
{ bool lot_of_printout=false; std::cout << "------- Ecal DCS - > getNewObjects\n"; std::ostringstream ss; ss<<"ECAL "; unsigned long long max_since= 1; max_since=tagInfo().lastInterval.first; std::cout << "max_since : " << max_since << std::endl; Ref dcs_db = lastPayload(); std::cout << "retrieved last payload " << std::endl; // we copy the last valid record to a temporary object EcalDCSTowerStatus* dcs_temp = new EcalDCSTowerStatus(); // barrel int iz=0; for(int k=0 ; k<2; k++ ) { if(k==0) iz=-1; if(k==1) iz= 1; for(int i=1 ; i<73; i++) { for(int j=1 ; j<18; j++) { if (EcalTrigTowerDetId::validDetId(iz,EcalBarrel,j,i )){ EcalTrigTowerDetId ebid(iz,EcalBarrel,j,i); uint16_t dbStatus = 0; dbStatus =(dcs_db->barrel( ebid.hashedIndex())).getStatusCode(); EcalDCSTowerStatus::const_iterator it =dcs_db->find(ebid.rawId()); if ( it != dcs_db->end() ) { } else { std::cout<<"*** error channel not found: j/i="<<j<<"/"<<i << std::endl; } dcs_temp->setValue( ebid, dbStatus ); } } } } // endcap for(int k=0 ; k<2; k++ ) { if(k==0) iz=-1; if(k==1) iz=+1; for(int i=1 ; i<21; i++) { for(int j=1 ; j<21; j++) { if (EcalScDetId::validDetId(i,j,iz )){ EcalScDetId eeid(i,j,iz); EcalDCSTowerStatus::const_iterator it =dcs_db->find(eeid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_db->end() ) { dbStatus = it->getStatusCode(); } dcs_temp->setValue( eeid, dbStatus ); } } } } // now read the actual status from the online DB econn = new EcalCondDBInterface( m_sid, m_user, m_pass ); std::cout << "Connection done" << std::endl; if (!econn) { std::cout << " Problem with OMDS: connection parameters " <<m_sid <<"/"<<m_user<<std::endl; throw cms::Exception("OMDS not available"); } std::cout << "Retrieving last run from ONLINE DB ... " << std::endl; std::map<EcalLogicID, RunDat> rundat; RunIOV rp ; run_t runmax=10000000; std::string location_p5="P5_Co"; econn->fetchValidDataSet(&rundat , &rp, location_p5 ,runmax); unsigned long long irun=(unsigned long long) rp.getRunNumber(); // just for testing purposes // irun= max_since+1; if(max_since< irun) { // get the map of the EE LV channels to EE crystals std::cout << "Retrieving endcap channel list from ONLINE DB ... " << std::endl; std::vector<EcalLogicID> my_EELVchan= econn->getEcalLogicIDSetOrdered( "EE_crystal_number", 1,4, 1, 200, EcalLogicID::NULLID, EcalLogicID::NULLID, "EE_LV_channel", 12 ) ; std::cout << "done endcap channel list ... " << std::endl; // retrieve from last value data record // always call this method at first run std::map<EcalLogicID, RunDCSHVDat> dataset; RunIOV *r = NULL; econn->fetchDataSet(&dataset, r); if (!dataset.size()) { throw(std::runtime_error("Zero rows read back")); } if(lot_of_printout) std::cout << "read OK" << std::endl; if(lot_of_printout) printHVDataSet(&dataset,10); std::map<EcalLogicID, RunDCSLVDat> dataset_lv; econn->fetchDataSet(&dataset_lv, r); if (!dataset_lv.size()) { throw(std::runtime_error("Zero rows read back")); } if(lot_of_printout) std::cout << "read OK" << std::endl; if(lot_of_printout) printLVDataSet(&dataset_lv); bool somediff_hv= insertHVDataSetToOffline(&dataset, dcs_temp ); bool somediff_lv= insertLVDataSetToOffline(&dataset_lv, dcs_temp, my_EELVchan ); if(somediff_hv || somediff_lv) { /* Tm t_now_gmt; t_now_gmt.setToCurrentGMTime(); uint64_t tsincetemp= t_now_gmt.microsTime()/1000000 ; uint64_t tsince = tsincetemp<< 32; std::cout << "Generating popcon record for time " << tsincetemp << "..." << std::flush; */ std::cout << "Generating popcon record for run " << irun << "..." << std::flush; // this is for timestamp // m_to_transfer.push_back(std::make_pair((EcalDCSTowerStatus*)dcs_temp,tsince)); // ss << "Time=" << t_now_gmt.str() << "_DCSchanged_"<<std::endl; // this is for run number m_to_transfer.push_back(std::make_pair((EcalDCSTowerStatus*)dcs_temp,irun)); ss << "Run=" << irun << "_DCSchanged_"<<std::endl; m_userTextLog = ss.str()+";"; } else { // Tm t_now_gmt; // t_now_gmt.setToCurrentGMTime(); std::cout<< "Run DCS record was the same as previous run " << std::endl; ss << "Run=" << irun << "_DCSchanged_"<<std::endl; m_userTextLog = ss.str()+";"; delete dcs_temp; } /* } else { // here we fetch historical data uint64_t t_max_val= ((max_since >> 32 ) +2)*1000000 ; // time in microseconds (2 seconds more than old data) Tm t_test(t_max_val); std::list< std::pair< Tm, std::map< EcalLogicID, RunDCSHVDat > > > dataset; econn->fetchDCSDataSet(&dataset, t_test); if (!dataset.size()) { std::cout<< " DCS query retrieved zero lines "<< std::endl; } else { int num_dcs=0; std::list< std::pair< Tm, std::map< EcalLogicID, RunDCSHVDat > > >::iterator it; for (it=dataset.begin(); it!=dataset.end(); ++it){ std::pair< Tm, std::map< EcalLogicID, RunDCSHVDat > > a_pair =(*it); Tm t_pair=a_pair.first; std::map< EcalLogicID, RunDCSHVDat > a_map = a_pair.second; num_dcs=num_dcs+a_map.size(); bool somediff_hv= insertHVDataSetToOffline(&a_map, dcs_temp ); if(somediff_hv ) { std::cout << "some diff" << std::endl; // we have to copy this record to offline // we copy dcs_temp to dcs_pop EcalDCSTowerStatus* dcs_pop = new EcalDCSTowerStatus(); // barrel int iz=0; for(int k=0 ; k<2; k++ ) { if(k==0) iz=-1; if(k==1) iz= 1; for(int i=1 ; i<73; i++) { for(int j=1 ; j<18; j++) { if (EcalTrigTowerDetId::validDetId(iz,EcalBarrel,j,i )){ EcalTrigTowerDetId ebid(iz,EcalBarrel,j,i); uint16_t dbStatus = 0; dbStatus =(dcs_temp->barrel( ebid.hashedIndex())).getStatusCode(); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(ebid.rawId()); if ( it != dcs_temp->end() ) { } else { std::cout<<"*** error channel not found: j/i="<<j<<"/"<<i << std::endl; } dcs_pop->setValue( ebid, dbStatus ); } } } } // endcap for(int k=0 ; k<2; k++ ) { if(k==0) iz=-1; if(k==1) iz=+1; for(int i=1 ; i<21; i++) { for(int j=1 ; j<21; j++) { if (EcalScDetId::validDetId(i,j,iz )){ EcalScDetId eeid(i,j,iz); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(eeid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_temp->end() ) { dbStatus = it->getStatusCode(); } dcs_pop->setValue( eeid, dbStatus ); } } } } uint64_t tsincetemp= t_pair.microsTime()/1000000 ; uint64_t tsince = tsincetemp<< 32; Tm tnew(t_pair.microsTime()); std::cout << "Generating popcon record for time " << tsince << "HRF time " << tnew.str() << "..." << std::flush; m_to_transfer.push_back(std::make_pair((EcalDCSTowerStatus*)dcs_pop,tsince)); ss << "Time=" << tnew.str() << "_DCSchanged_"<<std::endl; m_userTextLog = ss.str()+";"; } } std::cout << " num DCS = "<< num_dcs << std::endl; } delete dcs_temp; */ } delete econn; std::cout << "Ecal - > end of getNewObjects -----------\n"; }
int * popcon::EcalDCSHandler::HVEELogicIDToDetID | ( | int | dee, |
int | chan | ||
) | const |
Definition at line 355 of file EcalDCSHandler.cc.
References query::result.
{ int iz=-1; if(dee==1 || dee==2) iz=1; int ix1=1; int ix2=1; int iy1=1; int iy2=1; if(dee==1 && chan==1) { ix1=1; ix2=10; iy1=11; iy2=20; } else if(dee==2 && chan==1) { ix1=11; ix2=20; iy1=1; iy2=10; } else if(dee==3 && chan==1) { ix1=11; ix2=20; iy1=11; iy2=20; } else if(dee==4 && chan==1) { ix1=1; ix2=10; iy1=1; iy2=10; } else if(dee==1 && chan==2) { ix1=1; ix2=10; iy1=1; iy2=10; } else if(dee==2 && chan==2) { ix1=11; ix2=20; iy1=11; iy2=20; } else if(dee==3 && chan==2) { ix1=11; ix2=20; iy1=1; iy2=10; } else if(dee==4 && chan==2) { ix1=1; ix2=10; iy1=11; iy2=20; } int *result = new int[5]; result[0]=iz; result[1]=ix1; result[2]=ix2; result[3]=iy1; result[4]=iy2; return result; }
int * popcon::EcalDCSHandler::HVLogicIDToDetID | ( | int | sm, |
int | chan | ||
) | const |
Definition at line 400 of file EcalDCSHandler.cc.
References j, and query::result.
{ // returns the numbers iz, i1, i2 and j1, j2 on which to loop for the towers int iz=-1; if(sm>0 && sm <= 18) iz=1; int j = (chan-1)/2 +1; int i_local_hv = (chan-1) - (j-1)*2 + 1; // this gives 1 for odd channels and 2 for even channels int i1 =0; int i2 =0; if( iz>0 ) { // EB plus phi turns opposite to HV numbering if(i_local_hv==1) { i1=3 ; i2=4 ; } else { i1=1 ; i2=2 ; } } else { // EB minus phi turns as HV numbering if(i_local_hv==1) { i1=1 ; i2=2 ; } else { i1=3 ; i2=4 ; } } int ioffset=0; if(iz==1) ioffset=(sm-1)*4; if(iz==-1) ioffset=(sm-18-1)*4; i1=i1+ioffset; i2=i2+ioffset; int *result = new int[5]; result[0]=iz; result[1]=i1; result[2]=i2; result[3]=j; result[4]=j; return result; }
std::string popcon::EcalDCSHandler::id | ( | void | ) | const [inline, virtual] |
Implements popcon::PopConSourceHandler< EcalDCSTowerStatus >.
Definition at line 66 of file EcalDCSHandler.h.
References m_name.
{ return m_name;}
bool popcon::EcalDCSHandler::insertHVDataSetToOffline | ( | const std::map< EcalLogicID, RunDCSHVDat > * | dataset, |
EcalDCSTowerStatus * | dcs_temp | ||
) | const |
Definition at line 162 of file EcalDCSHandler.cc.
References gather_cfg::cout, EcalBarrel, EcalCondTowerObjectContainer< T >::end(), EcalCondTowerObjectContainer< T >::find(), RunDCSHVDat::getHV(), RunDCSHVDat::getHVNominal(), EcalLogicID::getID1(), EcalLogicID::getID2(), EcalLogicID::getName(), j, prof2calltree::l, AlCaHLTBitMon_ParallelJobs::p, DetId::rawId(), query::result, EcalCondTowerObjectContainer< T >::setValue(), EcalTrigTowerDetId::validDetId(), and EcalScDetId::validDetId().
{ bool result=false; if (dataset->size() == 0) { std::cout << "No data in std::map!" << std::endl; } EcalLogicID ecid; RunDCSHVDat hv; typedef std::map< EcalLogicID, RunDCSHVDat >::const_iterator CI ; for (CI p = dataset->begin(); p != dataset->end(); ++p) { ecid = p->first; hv = p->second; if(ecid.getName()=="EB_HV_channel"){ int sm= ecid.getID1() ; int chan= ecid.getID2(); int* limits=0; limits= HVLogicIDToDetID(sm,chan); int iz=limits[0]; int i1=limits[1]; int i2=limits[2]; int j=limits[3]; for(int ik=i1; ik<=i2; ik++){ if (EcalTrigTowerDetId::validDetId(iz,EcalBarrel,j,ik )){ EcalTrigTowerDetId ebid(iz,EcalBarrel,j,ik); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(ebid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_temp->end() ) { dbStatus = it->getStatusCode(); } int modo=0; uint16_t new_dbStatus= updateHV(&hv, dbStatus, modo); if(new_dbStatus != dbStatus ) result=true; dcs_temp->setValue( ebid, new_dbStatus ); if(new_dbStatus != dbStatus) { std::cout <<"SM/chan:"<<sm<<"/"<<chan <<" new db status ="<< new_dbStatus << " old "<<dbStatus<<" HV: "<< hv.getHV()<<"/"<<hv.getHVNominal()<<std::endl; } } } delete [] limits; } else { // endcaps int dee= ecid.getID1() ; int chan= ecid.getID2(); int* limits=0; limits= HVEELogicIDToDetID(dee,chan); int iz=limits[0]; int i1=limits[1]; int i2=limits[2]; int j1=limits[3]; int j2=limits[4]; int ex_x[6]; int ex_y[6]; if(dee==1 ) { ex_x[0]=4; ex_y[0]=8; ex_x[1]=4; ex_y[1]=9; ex_x[2]=4; ex_y[2]=10; ex_x[3]=5; ex_y[3]=9; ex_x[4]=5; ex_y[4]=10; ex_x[5]=6; ex_y[5]=10; } else if(dee==2) { ex_x[0]=17; ex_y[0]=11; ex_x[1]=17; ex_y[1]=12; ex_x[2]=17; ex_y[2]=13; ex_x[3]=16; ex_y[3]=11; ex_x[4]=16; ex_y[4]=12; ex_x[5]=15; ex_y[5]=11; } else if(dee==3) { ex_x[0]=17; ex_y[0]=8; ex_x[1]=17; ex_y[1]=9; ex_x[2]=17; ex_y[2]=10; ex_x[3]=16; ex_y[3]=9; ex_x[4]=16; ex_y[4]=10; ex_x[5]=15; ex_y[5]=10; } else if(dee==4) { ex_x[0]=4; ex_y[0]=11; ex_x[1]=4; ex_y[1]=12; ex_x[2]=4; ex_y[2]=13; ex_x[3]=5; ex_y[3]=11; ex_x[4]=5; ex_y[4]=12; ex_x[5]=6; ex_y[5]=11; } int modo=1; if(ecid.getName()=="EE_HVD_channel") modo=2; for(int ik=i1; ik<=i2; ik++){ for(int ip=j1; ip<=j2; ip++){ bool not_excluded=true; if(chan==2 ) { // channel 2 has half a dee minus 6 towers for (int l=0; l<6; l++){ if(ik== ex_x[l] && ip== ex_y[l] ) not_excluded=false; } } if(not_excluded){ if (EcalScDetId::validDetId(ik,ip,iz)){ EcalScDetId eeid(ik,ip,iz); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(eeid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_temp->end() ) { dbStatus = it->getStatusCode(); } // FIXME - UPDATE HV A and D uint16_t new_dbStatus= updateHV(&hv, dbStatus, modo); if(new_dbStatus != dbStatus ) result=true; dcs_temp->setValue( eeid, new_dbStatus ); if(new_dbStatus != dbStatus) { std::cout <<"Dee/chan:"<<dee<<"/"<<chan <<" new db status ="<< new_dbStatus << " old "<<dbStatus<<" HV: "<< hv.getHV()<<"/"<<hv.getHVNominal()<<std::endl; } } } } } if(chan==1){ // channel 1 has half a dee plus 6 more towers for (int l=0; l<6; l++){ int ik=ex_x[l]; int ip=ex_y[l]; if (EcalScDetId::validDetId(ik,ip,iz)){ EcalScDetId eeid(ik,ip,iz); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(eeid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_temp->end() ) { dbStatus = it->getStatusCode(); } uint16_t new_dbStatus= updateHV(&hv, dbStatus,modo); if(new_dbStatus != dbStatus ) result=true; dcs_temp->setValue( eeid, new_dbStatus ); if(new_dbStatus != dbStatus) { std::cout <<"Dee/chan:"<<dee<<"/"<<chan <<" new db status ="<< new_dbStatus << " old "<<dbStatus<<" HV: "<< hv.getHV()<<"/"<<hv.getHVNominal()<<std::endl; } } } } delete [] limits; } } return result; }
bool popcon::EcalDCSHandler::insertLVDataSetToOffline | ( | const std::map< EcalLogicID, RunDCSLVDat > * | dataset, |
EcalDCSTowerStatus * | dcs_temp, | ||
std::vector< EcalLogicID > | my_EELVchan | ||
) | const |
Definition at line 504 of file EcalDCSHandler.cc.
References gather_cfg::cout, EcalBarrel, EcalCondTowerObjectContainer< T >::end(), EcalCondTowerObjectContainer< T >::find(), EcalLogicID::getID1(), EcalLogicID::getID2(), RunDCSLVDat::getLV(), RunDCSLVDat::getLVNominal(), EcalLogicID::getName(), j, n, AlCaHLTBitMon_ParallelJobs::p, DetId::rawId(), query::result, EcalCondTowerObjectContainer< T >::setValue(), EcalTrigTowerDetId::validDetId(), and EcalScDetId::validDetId().
{ bool result= false; if (dataset->size() == 0) { std::cout << "No data in map!" << std::endl; } EcalLogicID ecid; RunDCSLVDat lv; typedef std::map< EcalLogicID, RunDCSLVDat >::const_iterator CI; for (CI p = dataset->begin(); p != dataset->end(); ++p) { ecid = p->first; lv = p->second; if(ecid.getName()=="EB_LV_channel"){ int sm= ecid.getID1() ; int chan= ecid.getID2(); int* limits=0; limits= LVLogicIDToDetID(sm,chan); int iz=limits[0]; int i1=limits[1]; int i2=limits[2]; int j1=limits[3]; int j2=limits[4]; for(int ik=i1; ik<=i2; ik++){ for(int j=j1; j<=j2; j++){ if (EcalTrigTowerDetId::validDetId(iz,EcalBarrel,j,ik )){ EcalTrigTowerDetId ebid(iz,EcalBarrel,j,ik); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(ebid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_temp->end() ) { dbStatus = it->getStatusCode(); } uint16_t new_dbStatus= updateLV(&lv, dbStatus); if(new_dbStatus != dbStatus ) result=true; dcs_temp->setValue( ebid, new_dbStatus ); if(new_dbStatus != dbStatus) { std::cout <<"SM/chan:"<<sm<<"/"<<chan <<" new db status ="<< new_dbStatus << " old "<<dbStatus<<" LV: "<< lv.getLV()<<"/"<<lv.getLVNominal()<<std::endl; } } } } delete [] limits; } else { // endcaps int dee= ecid.getID1() ; int chan= ecid.getID2(); int n=my_EELVchan.size(); for (int ixt=0; ixt<n; ixt++) { if(my_EELVchan[ixt].getID1()==dee && my_EELVchan[ixt].getID2()==chan){ int ilogic=my_EELVchan[ixt].getLogicID(); if(ilogic == 2012058060 || ilogic == 2010060058 || ilogic == 2012043041 || ilogic == 2010041043) { std::cout<< "crystal " << ilogic << " in the corner ignored" << std::endl; } else { int iz= (ilogic/1000000)-2010; if(iz==0) iz=-1; if(iz==2) iz=1; if(iz != 1 && iz!= -1) std::cout<< "BAD z"<< std::endl; int iy=ilogic- int(ilogic/1000)*1000; int ix=(ilogic- int(ilogic/1000000)*1000000 -iy)/1000; int ixtower= ((ix-1)/5) +1; int iytower= ((iy-1)/5) +1; if(ixtower<1 || ixtower>20 || iytower <1 || iytower >20) std::cout<< "BAD x/y"<<ilogic<<"/"<< ixtower<<"/"<<iytower<< std::endl; if (EcalScDetId::validDetId(ixtower,iytower,iz )){ EcalScDetId eeid(ixtower,iytower,iz ); EcalDCSTowerStatus::const_iterator it =dcs_temp->find(eeid.rawId()); uint16_t dbStatus = 0; if ( it != dcs_temp->end() ) { dbStatus = it->getStatusCode(); } uint16_t new_dbStatus= updateLV(&lv, dbStatus); if(new_dbStatus != dbStatus ) result=true; dcs_temp->setValue( eeid, new_dbStatus ); // std::cout <<"Dee/chan:"<<dee<<"/"<<chan <<" new db status ="<< new_dbStatus << " old "<<dbStatus<<" LV: "<< lv.getLV()<<"/"<<lv.getLVNominal()<<" ilogic/x/y " <<ilogic<<"/"<< ixtower<<"/"<<iytower<<std::endl; if(new_dbStatus != dbStatus) { std::cout <<"Dee/chan:"<<dee<<"/"<<chan <<" new db status ="<< new_dbStatus << " old "<<dbStatus<<" LV: "<< lv.getLV()<<"/"<<lv.getLVNominal()<<std::endl; } } } } } }// end of endcaps } return result; }
int * popcon::EcalDCSHandler::LVLogicIDToDetID | ( | int | sm, |
int | chan | ||
) | const |
Definition at line 444 of file EcalDCSHandler.cc.
References query::result.
{ // returns the numbers iz, i1, i2 and j1, j2 on which to loop for the towers int iz=-1; if(sm>0 && sm <= 18) iz=1; int j1=0; int j2=0; int i1=0; int i2=0; if(chan==1) { i1=1; i2=4; j1=1; j2=1; } else { int ch2= (chan/2)*2; if(ch2==chan) { j1=chan; } else { j1=chan-1; } j2 = j1+1; if( iz>0 ) { // EB plus phi turns opposite to LV numbering if(ch2==chan) { i1=3 ; i2=4 ; } else { i1=1 ; i2=2 ; } } else { // EB minus phi turns as LV numbering if(ch2==chan) { i1=1 ; i2=2 ; } else { i1=3 ; i2=4 ; } } } int ioffset=0; if(iz==1) ioffset=(sm-1)*4; if(iz==-1) ioffset=(sm-18-1)*4; i1=i1+ioffset; i2=i2+ioffset; int *result = new int[5]; result[0]=iz; result[1]=i1; result[2]=i2; result[3]=j1; result[4]=j2; return result; }
uint16_t popcon::EcalDCSHandler::OffDBStatus | ( | uint16_t | dbStatus, |
int | pos | ||
) |
Definition at line 86 of file EcalDCSHandler.cc.
References pos.
{ uint16_t hv_off_dbstatus = ( dbStatus & (1 << pos ) ) ; if(hv_off_dbstatus>0) hv_off_dbstatus=1; return hv_off_dbstatus; }
void popcon::EcalDCSHandler::printHVDataSet | ( | const std::map< EcalLogicID, RunDCSHVDat > * | dataset, |
int | limit = 0 |
||
) | const |
Definition at line 30 of file EcalDCSHandler.cc.
References prof2calltree::count, gather_cfg::cout, RunDCSHVDat::getHV(), RunDCSHVDat::getHVNominal(), EcalLogicID::getID1(), EcalLogicID::getID2(), RunDCSHVDat::getStatus(), MessageLogger_cff::limit, and AlCaHLTBitMon_ParallelJobs::p.
{ std::cout << "==========printDataSet()" << std::endl; if (dataset->size() == 0) { std::cout << "No data in map!" << std::endl; } EcalLogicID ecid; RunDCSHVDat hv; int count = 0; typedef std::map< EcalLogicID, RunDCSHVDat >::const_iterator CI; for (CI p = dataset->begin(); p != dataset->end(); ++p) { count++; if (limit && count > limit) { return; } ecid = p->first; hv = p->second; std::cout << "SM: " << ecid.getID1() << std::endl; std::cout << "Channel: " << ecid.getID2() << std::endl; std::cout << "HV: " << hv.getHV() << std::endl; std::cout << "HV nominal: " << hv.getHVNominal() << std::endl; std::cout << "HV status: " << hv.getStatus() << std::endl; std::cout << "========================" << std::endl; } std::cout << std::endl; }
void popcon::EcalDCSHandler::printLVDataSet | ( | const std::map< EcalLogicID, RunDCSLVDat > * | dataset, |
int | limit = 0 |
||
) | const |
Definition at line 58 of file EcalDCSHandler.cc.
References prof2calltree::count, gather_cfg::cout, EcalLogicID::getID1(), EcalLogicID::getID2(), RunDCSLVDat::getLV(), RunDCSLVDat::getLVNominal(), RunDCSLVDat::getStatus(), MessageLogger_cff::limit, and AlCaHLTBitMon_ParallelJobs::p.
{ std::cout << "==========printDataSet()" << std::endl; if (dataset->size() == 0) { std::cout << "No data in map!" << std::endl; } EcalLogicID ecid; RunDCSLVDat lv; int count = 0; typedef std::map< EcalLogicID, RunDCSLVDat >::const_iterator CI; for (CI p = dataset->begin(); p != dataset->end(); ++p) { count++; if (limit && count > limit) { return; } ecid = p->first; lv = p->second; std::cout << "SM: " << ecid.getID1() << std::endl; std::cout << "Channel: " << ecid.getID2() << std::endl; std::cout << "LV: " << lv.getLV() << std::endl; std::cout << "LV nominal: " << lv.getLVNominal() << std::endl; std::cout << "LV status: " << lv.getStatus() << std::endl; std::cout << "========================" << std::endl; } std::cout << std::endl; }
uint16_t popcon::EcalDCSHandler::updateHV | ( | RunDCSHVDat * | hv, |
uint16_t | dbStatus, | ||
int | modo = 0 |
||
) | const |
Definition at line 92 of file EcalDCSHandler.cc.
References RunDCSHVDat::getStatus(), EcalDCSTowerStatusHelper::HVEEDNOMINALSTATUS, EcalDCSTowerStatusHelper::HVEEDSTATUS, EcalDCSTowerStatusHelper::HVNOMINALSTATUS, RunDCSHVDat::HVNOTNOMINAL, RunDCSHVDat::HVOFF, EcalDCSTowerStatusHelper::HVSTATUS, i, query::result, and groupFilesInBlocks::temp.
{ // mode ==0 EB , mode==1 EE Anode , mode==2 EE Dynode uint16_t result=0; uint16_t hv_on_dbstatus=0; uint16_t hv_nomi_on_dbstatus=0; if( hv->getStatus()==RunDCSHVDat::HVNOTNOMINAL ) hv_nomi_on_dbstatus=1; if( hv->getStatus()==RunDCSHVDat::HVOFF ) hv_on_dbstatus=1; uint16_t temp=0; if(mode == 0 || mode == 1) { for (int i=0; i<16; i++) { if( i!= EcalDCSTowerStatusHelper::HVSTATUS && i!=EcalDCSTowerStatusHelper::HVNOMINALSTATUS ) { temp = temp | (1<<i) ; } else { temp = temp | (0<<i); } } result= dbStatus & temp ; result= ( result | ( hv_on_dbstatus << EcalDCSTowerStatusHelper::HVSTATUS ) ) | ( hv_nomi_on_dbstatus << EcalDCSTowerStatusHelper::HVNOMINALSTATUS ) ; } else { for (int i=0; i<16; i++) { if( i!=EcalDCSTowerStatusHelper::HVEEDNOMINALSTATUS && i!= EcalDCSTowerStatusHelper::HVEEDSTATUS ) { temp = temp | (1<<i) ; } else { temp = temp | (0<<i); } } result= dbStatus & temp ; result= ( result | ( hv_on_dbstatus << EcalDCSTowerStatusHelper::HVEEDSTATUS )) | ( hv_nomi_on_dbstatus << EcalDCSTowerStatusHelper::HVEEDNOMINALSTATUS ) ; } return result; }
uint16_t popcon::EcalDCSHandler::updateLV | ( | RunDCSLVDat * | lv, |
uint16_t | dbStatus | ||
) | const |
Definition at line 132 of file EcalDCSHandler.cc.
References RunDCSLVDat::getStatus(), i, EcalDCSTowerStatusHelper::LVNOMINALSTATUS, RunDCSLVDat::LVNOTNOMINAL, RunDCSLVDat::LVOFF, EcalDCSTowerStatusHelper::LVSTATUS, query::result, and groupFilesInBlocks::temp.
{ uint16_t result=0; uint16_t lv_on_dbstatus=0; uint16_t lv_nomi_on_dbstatus=0; if( lv->getStatus()==RunDCSLVDat::LVNOTNOMINAL ) lv_nomi_on_dbstatus=1; if( lv->getStatus()==RunDCSLVDat::LVOFF ) lv_on_dbstatus=1; uint16_t lv_off_dbstatus = ( dbStatus & (1 << EcalDCSTowerStatusHelper::LVSTATUS ) ) ; uint16_t lv_nomi_off_dbstatus = ( dbStatus & (1 << EcalDCSTowerStatusHelper::LVNOMINALSTATUS ) ) ; if(lv_off_dbstatus>0) lv_off_dbstatus=1; if(lv_nomi_off_dbstatus>0) lv_nomi_off_dbstatus=1; uint16_t temp=0; for (int i=0; i<16; i++) { if( i!= EcalDCSTowerStatusHelper::LVSTATUS && i!=EcalDCSTowerStatusHelper::LVNOMINALSTATUS ) { temp = temp | (1<<i) ; } else { temp = temp | ( 0 << i ); } } result= dbStatus & temp ; result= ( result | ( lv_on_dbstatus << EcalDCSTowerStatusHelper::LVSTATUS ) ) | ( lv_nomi_on_dbstatus << EcalDCSTowerStatusHelper::LVNOMINALSTATUS ) ; return result; }
Definition at line 67 of file EcalDCSHandler.h.
unsigned long popcon::EcalDCSHandler::m_firstRun [private] |
Definition at line 78 of file EcalDCSHandler.h.
Referenced by EcalDCSHandler().
unsigned long popcon::EcalDCSHandler::m_lastRun [private] |
Definition at line 79 of file EcalDCSHandler.h.
Referenced by EcalDCSHandler().
std::string popcon::EcalDCSHandler::m_name [private] |
Definition at line 84 of file EcalDCSHandler.h.
Referenced by id().
std::string popcon::EcalDCSHandler::m_pass [private] |
Definition at line 83 of file EcalDCSHandler.h.
Referenced by EcalDCSHandler().
std::string popcon::EcalDCSHandler::m_sid [private] |
Definition at line 81 of file EcalDCSHandler.h.
Referenced by EcalDCSHandler().
std::string popcon::EcalDCSHandler::m_user [private] |
Definition at line 82 of file EcalDCSHandler.h.
Referenced by EcalDCSHandler().