![]() |
![]() |
00001 #ifndef _CSCBADCHAMBERSCONDITIONS_H 00002 #define _CSCBADCHAMBERSCONDITIONS_H 00003 00004 #include <memory> 00005 #include <cmath> 00006 #include "FWCore/Framework/interface/SourceFactory.h" 00007 #include "FWCore/Framework/interface/Frameworkfwd.h" 00008 #include "FWCore/Framework/interface/ESProducer.h" 00009 #include "FWCore/Framework/interface/Event.h" 00010 #include "FWCore/Framework/interface/MakerMacros.h" 00011 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h" 00012 #include "FWCore/Framework/interface/ESHandle.h" 00013 #include "FWCore/Framework/interface/EventSetup.h" 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 00016 #include <DataFormats/MuonDetId/interface/CSCDetId.h> 00017 #include "CondFormats/CSCObjects/interface/CSCBadChambers.h" 00018 #include "CondFormats/DataRecord/interface/CSCBadChambersRcd.h" 00019 00020 class CSCBadChambersConditions: public edm::ESProducer, public edm::EventSetupRecordIntervalFinder { 00021 public: 00022 CSCBadChambersConditions(const edm::ParameterSet&); 00023 ~CSCBadChambersConditions(); 00024 00025 00026 inline static CSCBadChambers * prefillBadChambers(); 00027 00028 typedef const CSCBadChambers * ReturnType; 00029 00030 ReturnType produceBadChambers(const CSCBadChambersRcd&); 00031 00032 private: 00033 // ----------member data --------------------------- 00034 void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue&, edm::ValidityInterval & ); 00035 CSCBadChambers *cndbBadChambers ; 00036 00037 }; 00038 00039 #include<fstream> 00040 #include<vector> 00041 #include<iostream> 00042 00043 // to workaround plugin library 00044 inline CSCBadChambers * CSCBadChambersConditions::prefillBadChambers() 00045 { 00046 // const int MAX_SIZE = 468; 00047 //cndbbadchambers = new CSCBadChambers(); 00048 00049 CSCBadChambers * cndbbadchambers = new CSCBadChambers(); 00050 00051 int new_chambers; 00052 std::vector<int> new_badchambers; 00053 00054 int new_nrlines; 00055 new_nrlines=0; 00056 00057 std::ifstream newdata; 00058 00059 newdata.open("badchambers.dat",std::ios::in); 00060 if(!newdata) { 00061 std::cerr <<"Error: badchambers.dat -> no such file!"<< std::endl; 00062 exit(1); 00063 } 00064 00065 while(!newdata.eof() ) { 00066 newdata >> new_chambers; 00067 new_badchambers.push_back(new_chambers); 00068 new_nrlines++; 00069 } 00070 newdata.close(); 00071 00072 cndbbadchambers->numberOfBadChambers = new_nrlines; 00073 //std::cout <<"numberOfBadChambers "<<new_nrlines<<std::endl; 00074 00075 std::vector<int>& itemvector = cndbbadchambers->chambers; 00076 itemvector.resize(new_nrlines); 00077 00078 for(int i=0; i<new_nrlines;i++){ 00079 itemvector[i] = new_badchambers[i]; 00080 // std::cout<<"itemvector= "<<i<<" "<<itemvector[i]<<std::endl; 00081 } 00082 00083 00084 return cndbbadchambers; 00085 } 00086 00087 #endif