File indexing completed on 2024-04-06 12:01:32
0001 #include "FWCore/ServiceRegistry/interface/Service.h"
0002 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0003 #include "CondFormats/Calibration/interface/mySiStripNoises.h"
0004 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0005
0006 #include <random>
0007 #include <string>
0008
0009 namespace edm {
0010 class ParameterSet;
0011 class Event;
0012 class EventSetup;
0013 }
0014
0015
0016 class writeBlob : public edm::one::EDAnalyzer<> {
0017 public:
0018 explicit writeBlob(const edm::ParameterSet& iConfig);
0019 ~writeBlob();
0020 virtual void analyze(const edm::Event&, const edm::EventSetup&);
0021 virtual void endJob() {}
0022
0023 private:
0024 std::string m_StripRecordName;
0025 };
0026
0027 typedef std::minstd_rand base_generator_type;
0028 writeBlob::writeBlob(const edm::ParameterSet& iConfig) : m_StripRecordName("mySiStripNoisesRcd") {}
0029
0030 writeBlob::~writeBlob() { std::cout << "writeBlob::writeBlob" << std::endl; }
0031
0032 void writeBlob::analyze(const edm::Event& evt, const edm::EventSetup& evtSetup) {
0033 std::cout << "writeBlob::analyze " << std::endl;
0034 base_generator_type rng(42u);
0035 std::uniform_real_distribution<> uni_dist(0.0, 1.0);
0036 auto uni = [&]() { return uni_dist(rng); };
0037
0038 edm::Service<cond::service::PoolDBOutputService> mydbservice;
0039
0040 if (!mydbservice.isAvailable()) {
0041 std::cout << "db service unavailable" << std::endl;
0042 return;
0043 }
0044 try {
0045 mySiStripNoises me;
0046 unsigned int detidseed = 1234;
0047 unsigned int bsize = 100;
0048 unsigned int nAPV = 2;
0049 for (uint32_t detid = detidseed; detid < (detidseed + bsize); detid++) {
0050
0051 std::vector<short> theSiStripVector;
0052 for (unsigned int strip = 0; strip < 128 * nAPV; ++strip) {
0053 float noise = uni();
0054 ;
0055 me.setData(noise, theSiStripVector);
0056 }
0057 me.put(detid, theSiStripVector);
0058 }
0059
0060 mydbservice->writeOneIOV(me, mydbservice->currentTime(), m_StripRecordName);
0061 } catch (const cond::Exception& er) {
0062 throw cms::Exception("DBOutputServiceUnitTestFailure", "failed writeBlob", er);
0063
0064 } catch (const cms::Exception& er) {
0065 throw cms::Exception("DBOutputServiceUnitTestFailure", "failed writeBlob", er);
0066 }
0067 }
0068 #include "FWCore/Framework/interface/MakerMacros.h"
0069 DEFINE_FWK_MODULE(writeBlob);