File indexing completed on 2023-03-17 11:10:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/global/EDAnalyzer.h"
0025 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0026
0027 #include "FWCore/Framework/interface/Event.h"
0028 #include "FWCore/Framework/interface/MakerMacros.h"
0029
0030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0031
0032 #include "FWCore/ServiceRegistry/interface/Service.h"
0033 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0034 #include "CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h"
0035
0036 #include "CLHEP/Units/GlobalSystemOfUnits.h"
0037 #include "CLHEP/Units/GlobalPhysicalConstants.h"
0038
0039
0040
0041
0042
0043 class BeamProfile2DB : public edm::global::EDAnalyzer<> {
0044 public:
0045 explicit BeamProfile2DB(const edm::ParameterSet&);
0046 ~BeamProfile2DB() override;
0047
0048 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0049
0050 private:
0051 void beginJob() override;
0052 void analyze(edm::StreamID, const edm::Event&, const edm::EventSetup&) const override;
0053 void endJob() override;
0054
0055
0056 SimBeamSpotObjects beamSpot_;
0057 };
0058
0059 namespace {
0060 SimBeamSpotObjects read(const edm::ParameterSet& p) {
0061 SimBeamSpotObjects ret;
0062 ret.fX0 = p.getParameter<double>("X0") * cm;
0063 ret.fY0 = p.getParameter<double>("Y0") * cm;
0064 ret.fZ0 = p.getParameter<double>("Z0") * cm;
0065 ret.fSigmaZ = p.getParameter<double>("SigmaZ") * cm;
0066 ret.fAlpha = p.getParameter<double>("Alpha") * radian;
0067 ret.fPhi = p.getParameter<double>("Phi") * radian;
0068 ret.fbetastar = p.getParameter<double>("BetaStar") * cm;
0069 ret.femittance = p.getParameter<double>("Emittance") * cm;
0070 ret.fTimeOffset = p.getParameter<double>("TimeOffset") * ns * c_light;
0071 return ret;
0072 }
0073
0074 }
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086 BeamProfile2DB::BeamProfile2DB(const edm::ParameterSet& iConfig) : beamSpot_(read(iConfig)) {}
0087
0088 BeamProfile2DB::~BeamProfile2DB() {
0089
0090
0091 }
0092
0093
0094
0095
0096
0097
0098 void BeamProfile2DB::analyze(edm::StreamID, const edm::Event& iEvent, const edm::EventSetup& iSetup) const {}
0099
0100
0101 void BeamProfile2DB::beginJob() {}
0102
0103
0104 void BeamProfile2DB::endJob() {
0105 edm::Service<cond::service::PoolDBOutputService> poolDbService;
0106 poolDbService->createOneIOV<SimBeamSpotObjects>(beamSpot_, poolDbService->beginOfTime(), "SimBeamSpotObjectsRcd");
0107 }
0108
0109
0110 void BeamProfile2DB::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0111
0112
0113 edm::ParameterSetDescription desc;
0114 desc.add<double>("X0")->setComment("in cm");
0115 desc.add<double>("Y0")->setComment("in cm");
0116 desc.add<double>("Z0")->setComment("in cm");
0117 desc.add<double>("SigmaZ")->setComment("in cm");
0118 desc.add<double>("BetaStar")->setComment("in cm");
0119 desc.add<double>("Emittance")->setComment("in cm");
0120 desc.add<double>("Alpha")->setComment("in radians");
0121 desc.add<double>("Phi")->setComment("in radians");
0122 desc.add<double>("TimeOffset")->setComment("in ns");
0123 descriptions.addDefault(desc);
0124 }
0125
0126
0127 DEFINE_FWK_MODULE(BeamProfile2DB);