File indexing completed on 2024-05-10 02:20:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <memory>
0022
0023
0024 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0025 #include "CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h"
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/Frameworkfwd.h"
0028 #include "FWCore/Framework/interface/global/EDAnalyzer.h"
0029 #include "FWCore/Framework/interface/MakerMacros.h"
0030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0031 #include "FWCore/ServiceRegistry/interface/Service.h"
0032
0033 #include <CLHEP/Units/SystemOfUnits.h>
0034 #include <CLHEP/Units/GlobalPhysicalConstants.h>
0035
0036
0037
0038
0039 class BeamProfile2DBWriter : public edm::global::EDAnalyzer<> {
0040 public:
0041 explicit BeamProfile2DBWriter(const edm::ParameterSet&);
0042 ~BeamProfile2DBWriter() override = default;
0043
0044 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0045
0046 private:
0047 void analyze(edm::StreamID, const edm::Event&, const edm::EventSetup&) const override;
0048 void endJob() override;
0049
0050
0051 const std::string recordName_;
0052 SimBeamSpotObjects beamSpot_;
0053 };
0054
0055
0056
0057
0058 BeamProfile2DBWriter::BeamProfile2DBWriter(const edm::ParameterSet& iConfig)
0059 : recordName_(iConfig.getParameter<std::string>("recordName")) {
0060 beamSpot_.setX(iConfig.getParameter<double>("X0"));
0061 beamSpot_.setY(iConfig.getParameter<double>("Y0"));
0062 beamSpot_.setZ(iConfig.getParameter<double>("Z0"));
0063 beamSpot_.setMeanX(iConfig.getParameter<double>("MeanX"));
0064 beamSpot_.setMeanY(iConfig.getParameter<double>("MeanY"));
0065 beamSpot_.setMeanZ(iConfig.getParameter<double>("MeanZ"));
0066 beamSpot_.setSigmaX(iConfig.getParameter<double>("SigmaX"));
0067 beamSpot_.setSigmaY(iConfig.getParameter<double>("SigmaY"));
0068 beamSpot_.setSigmaZ(iConfig.getParameter<double>("SigmaZ"));
0069 beamSpot_.setAlpha(iConfig.getParameter<double>("Alpha"));
0070 beamSpot_.setPhi(iConfig.getParameter<double>("Phi"));
0071 beamSpot_.setBetaStar(iConfig.getParameter<double>("BetaStar"));
0072 beamSpot_.setEmittance(iConfig.getParameter<double>("Emittance"));
0073 beamSpot_.setTimeOffset(iConfig.getParameter<double>("TimeOffset"));
0074 }
0075
0076
0077
0078
0079
0080
0081 void BeamProfile2DBWriter::analyze(edm::StreamID, const edm::Event& iEvent, const edm::EventSetup& iSetup) const {}
0082
0083
0084 void BeamProfile2DBWriter::endJob() {
0085 edm::Service<cond::service::PoolDBOutputService> poolDbService;
0086 poolDbService->createOneIOV<SimBeamSpotObjects>(beamSpot_, poolDbService->beginOfTime(), recordName_);
0087 }
0088
0089
0090 void BeamProfile2DBWriter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0091
0092
0093 edm::ParameterSetDescription desc;
0094 desc.add<std::string>("recordName", "SimBeamSpotObjectsRcd")
0095 ->setComment("name of the record to use for the PoolDBOutputService");
0096 desc.add<double>("X0", 0.0)->setComment("in cm");
0097 desc.add<double>("Y0", 0.0)->setComment("in cm");
0098 desc.add<double>("Z0", 0.0)->setComment("in cm");
0099 desc.add<double>("MeanX", 0.0)->setComment("in cm");
0100 desc.add<double>("MeanY", 0.0)->setComment("in cm");
0101 desc.add<double>("MeanZ", 0.0)->setComment("in cm");
0102 desc.add<double>("SigmaX", -1.0)->setComment("in cm");
0103 desc.add<double>("SigmaY", -1.0)->setComment("in cm");
0104 desc.add<double>("SigmaZ", 0.0)->setComment("in cm");
0105 desc.add<double>("BetaStar", 0.0)->setComment("in cm");
0106 desc.add<double>("Emittance", 0.0)->setComment("in cm");
0107 desc.add<double>("Alpha", 0.0)->setComment("in radians");
0108 desc.add<double>("Phi", 0.0)->setComment("in radians");
0109 desc.add<double>("TimeOffset", 0.0)->setComment("in ns");
0110 descriptions.addWithDefaultLabel(desc);
0111 }
0112
0113
0114 DEFINE_FWK_MODULE(BeamProfile2DBWriter);