00001 #include "OnlineDB/SiStripO2O/plugins/newSiStripO2O.h"
00002 #include "OnlineDB/SiStripESSources/interface/SiStripCondObjBuilderFromDb.h"
00003 #include "CalibFormats/SiStripObjects/interface/SiStripQuality.h"
00004
00005 newSiStripO2O::newSiStripO2O( const edm::ParameterSet& pset ):
00006 UsingDb_(pset.getUntrackedParameter<bool>("UsingDb",true))
00007 {}
00008
00009 newSiStripO2O::~newSiStripO2O(){
00010 edm::LogInfo("newSiStripO2O") << "[newSiStripO2O::~newSiStripO2O]"
00011 << " Destructing object...";
00012 }
00013
00014 void newSiStripO2O::analyze(const edm::Event& evt, const edm::EventSetup& iSetup){
00015
00016 unsigned int run=evt.id().run();
00017 std::cout << "RunNb " << run << std::endl;
00018
00019 SiStripCondObjBuilderFromDb condObjBuilder;
00020
00021 condObjBuilder.buildCondObj();
00022
00023
00024 SiStripFedCabling *cabling_cpy = condObjBuilder.getFedCabling();
00025
00026 SiStripDetCabling* det_cabling=new SiStripDetCabling(*cabling_cpy);
00027
00028 SiStripPedestals *ped_cpy = condObjBuilder.getPedestals();
00029 SiStripPedestals *ped = condObjBuilder.getPedestals();
00030
00031 SiStripNoises *noise_cpy = condObjBuilder.getNoises();
00032 SiStripNoises *noise = condObjBuilder.getNoises();
00033
00034
00035 vector<uint32_t> det_ids;
00036 det_cabling->addActiveDetectorsRawIds(det_ids);
00037 if ( det_ids.empty() ) {
00038 edm::LogWarning("SiStripO2O")
00039 << "detids vetor empty";
00040 }
00041 edm::LogInfo("SiStripO2O") << " Cabling Found " << det_ids.size() << " active DetIds";
00042 if (edm::isDebugEnabled()){
00043
00044 vector<uint32_t>::const_iterator det_id = det_ids.begin();
00045 for ( ; det_id != det_ids.end(); det_id++ ) {
00046 LogTrace("SiStripO2O") << " mySiStripO2O detid " << *det_id << std::endl;
00047 }
00048 }
00049
00050 det_ids.clear();
00051 SiStripDetCabling det_cabling_cpy( *cabling_cpy );
00052 det_cabling_cpy.addActiveDetectorsRawIds(det_ids);
00053 if ( det_ids.empty() ) {
00054 edm::LogWarning("SiStripO2O")
00055 << "detids vetor empty";
00056 }
00057 edm::LogInfo("SiStripO2O") << " Cabling_cpy Found " << det_ids.size() << " active DetIds";
00058 if (edm::isDebugEnabled()){
00059
00060 vector<uint32_t>::const_iterator det_id = det_ids.begin();
00061 for ( ; det_id != det_ids.end(); det_id++ ) {
00062 LogTrace("SiStripO2O") << " cabling_cpy detid " << *det_id << std::endl;
00063 }
00064 }
00065
00066
00067
00068
00069 std::vector<uint32_t> ndetid;
00070 noise->getDetIds(ndetid);
00071 edm::LogInfo("SiStripO2O") << " Noise Found " << ndetid.size() << " DetIds";
00072 for (size_t id=0;id<ndetid.size();id++){
00073 SiStripNoises::Range range=noise->getRange(ndetid[id]);
00074
00075 if (edm::isDebugEnabled()){
00076 int strip=0;
00077 LogTrace("SiStripO2O") << "NOISE detid " << ndetid[id] << " \t"
00078 << " strip " << strip << " \t"
00079 << noise->getNoise(strip,range) << " \t"
00080
00081 << std::endl;
00082 }
00083 }
00084
00085
00086 std::vector<uint32_t> pdetid;
00087 ped->getDetIds(pdetid);
00088 edm::LogInfo("SiStripO2O") << " Peds Found " << pdetid.size() << " DetIds";
00089 for (size_t id=0;id<pdetid.size();id++){
00090 SiStripPedestals::Range range=ped->getRange(pdetid[id]);
00091 if (edm::isDebugEnabled()){
00092 int strip=0;
00093 LogTrace("SiStripO2O") << "PED detid " << pdetid[id] << " \t"
00094 << " strip " << strip << " \t"
00095 << ped->getPed (strip,range) << " \t"
00096 << std::endl;
00097 }
00098 }
00099
00100
00101 if(UsingDb_){
00102 edm::LogInfo("SiStripO2O") << "calling PoolDBOutputService" << std::endl;
00103 edm::Service<cond::service::PoolDBOutputService> mydbservice;
00104
00105 if( mydbservice.isAvailable() ){
00106
00107 if( mydbservice->isNewTagRequest("SiStripPedestalsRcd") ){
00108 edm::LogInfo("SiStripO2O") << "new tag requested for SiStripPedestalsRcd" << std::endl;
00109 mydbservice->createNewIOV<SiStripPedestals>(ped_cpy,mydbservice->beginOfTime(),mydbservice->endOfTime(),"SiStripPedestalsRcd");
00110 } else {
00111 edm::LogInfo("SiStripO2O") << "append to existing tag for SiStripPedestalsRcd" << std::endl;
00112 mydbservice->appendSinceTime<SiStripPedestals>(ped_cpy,mydbservice->currentTime(),"SiStripPedestalsRcd");
00113 }
00114
00115 if( mydbservice->isNewTagRequest("SiStripNoisesRcd") ){
00116 edm::LogInfo("SiStripO2O") << "new tag requested for SiStripNoisesRcd" << std::endl;
00117 mydbservice->createNewIOV<SiStripNoises>(noise_cpy,mydbservice->beginOfTime(),mydbservice->endOfTime(),"SiStripNoisesRcd");
00118 } else {
00119 edm::LogInfo("SiStripO2O") << "append to existing tag for SiStripNoisesRcd" << std::endl;
00120 mydbservice->appendSinceTime<SiStripNoises>(noise_cpy,mydbservice->currentTime(),"SiStripNoisesRcd");
00121 }
00122
00123 if( mydbservice->isNewTagRequest("SiStripFedCablingRcd") ){
00124 edm::LogInfo("SiStripO2O") << "new tag requested for SiStripFedCablingRcd" << std::endl;
00125 mydbservice->createNewIOV<SiStripFedCabling>(cabling_cpy,mydbservice->beginOfTime(),mydbservice->endOfTime(),"SiStripFedCablingRcd");
00126 } else {
00127 edm::LogInfo("SiStripO2O") << "append to existing tag for SiStripFedCablingRcd" << std::endl;
00128 mydbservice->appendSinceTime<SiStripFedCabling>(cabling_cpy,mydbservice->currentTime(),"SiStripFedCablingRcd");
00129 }
00130
00131 if( mydbservice->isNewTagRequest("SiStripThresholdRcd") ){
00132 edm::LogInfo("SiStripO2O") << "new tag requested for SiStripThresholdRcd" << std::endl;
00133 mydbservice->createNewIOV<SiStripThreshold>(condObjBuilder.getThreshold(),mydbservice->beginOfTime(),mydbservice->endOfTime(),"SiStripThresholdRcd");
00134 } else {
00135 edm::LogInfo("SiStripO2O") << "append to existing tag for SiStripThresholdRcd" << std::endl;
00136 mydbservice->appendSinceTime<SiStripThreshold>(condObjBuilder.getThreshold(),mydbservice->currentTime(),"SiStripThresholdRcd");
00137 }
00138
00139 SiStripQuality qobj=SiStripQuality(*(condObjBuilder.getQuality()));
00140 SiStripBadStrip* obj= new SiStripBadStrip(qobj);
00141 if( mydbservice->isNewTagRequest("SiStripBadStripRcd") ){
00142 edm::LogInfo("SiStripO2O") << "new tag requested for SiStripBadStripRcd" << std::endl;
00143 mydbservice->createNewIOV<SiStripBadStrip>(obj,mydbservice->beginOfTime(),mydbservice->endOfTime(),"SiStripBadStripRcd");
00144 } else {
00145 edm::LogInfo("SiStripO2O") << "append to existing tag for SiStripBadStripRcd" << std::endl;
00146 mydbservice->appendSinceTime<SiStripBadStrip>(obj,mydbservice->currentTime(),"SiStripBadStripRcd");
00147 }
00148
00149
00150 }else{
00151 edm::LogError("newSiStripO2O")<<"Service is unavailable"<<std::endl;
00152 }
00153 }
00154 }
00155