diff --git a/CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h b/CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h index bebe96f5a8c59..5723306c2319e 100644 --- a/CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h +++ b/CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h @@ -35,8 +35,8 @@ class SimBeamSpotObjects { fMeanX = 0.0; fMeanY = 0.0; fMeanZ = 0.0; - fSigmaX = 0.0; - fSigmaY = 0.0; + fSigmaX = -1.0; + fSigmaY = -1.0; fSigmaZ = 0.0; fbetastar = 0.0; femittance = 0.0; @@ -56,8 +56,8 @@ class SimBeamSpotObjects { void setMeanY(double val) { fMeanY = val; } void setMeanZ(double val) { fMeanZ = val; } /// set sigmaX, sigmaY, sigmaZ - void setSigmaX(double val) { fSigmaX = val; } - void setSigmaY(double val) { fSigmaY = val; } + void setSigmaX(double val); + void setSigmaY(double val); void setSigmaZ(double val) { fSigmaZ = val; } /// set BetaStar and Emittance void setBetaStar(double val) { fbetastar = val; } diff --git a/CondFormats/BeamSpotObjects/src/SimBeamSpotObjects.cc b/CondFormats/BeamSpotObjects/src/SimBeamSpotObjects.cc index da9b8f63d9641..b37d4f825c81d 100644 --- a/CondFormats/BeamSpotObjects/src/SimBeamSpotObjects.cc +++ b/CondFormats/BeamSpotObjects/src/SimBeamSpotObjects.cc @@ -1,7 +1,28 @@ #include "CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h" +#include #include +// Set SigmaX and SigmaY: +// - from value in case of Gaussian Smearing +// - from LPC-like calculation in case of BetaFunc Smearing +void SimBeamSpotObjects::setSigmaX(double val) { + if (val >= 0.) { // Gaussian smearing + fSigmaX = val; + } else { // BetaFunc smearing + fSigmaX = (1 / std::sqrt(2)) * std::sqrt(femittance * fbetastar); + } +} + +void SimBeamSpotObjects::setSigmaY(double val) { + if (val >= 0.) { // Gaussian smearing + fSigmaY = val; + } else { // BetaFunc smearing + fSigmaY = (1 / std::sqrt(2)) * std::sqrt(femittance * fbetastar); + } +} + +// Printout SimBeamSpotObjects void SimBeamSpotObjects::print(std::stringstream& ss) const { ss << "-----------------------------------------------------\n" << " Sim Beam Spot Data\n\n" diff --git a/CondTools/BeamSpot/plugins/BeamProfile2DBWriter.cc b/CondTools/BeamSpot/plugins/BeamProfile2DBWriter.cc index f3f17fe0f34dd..7868951ed266f 100644 --- a/CondTools/BeamSpot/plugins/BeamProfile2DBWriter.cc +++ b/CondTools/BeamSpot/plugins/BeamProfile2DBWriter.cc @@ -63,14 +63,14 @@ BeamProfile2DBWriter::BeamProfile2DBWriter(const edm::ParameterSet& iConfig) beamSpot_.setMeanX(iConfig.getParameter("MeanX")); beamSpot_.setMeanY(iConfig.getParameter("MeanY")); beamSpot_.setMeanZ(iConfig.getParameter("MeanZ")); - beamSpot_.setSigmaX(iConfig.getParameter("SigmaX")); - beamSpot_.setSigmaY(iConfig.getParameter("SigmaY")); beamSpot_.setSigmaZ(iConfig.getParameter("SigmaZ")); beamSpot_.setAlpha(iConfig.getParameter("Alpha")); beamSpot_.setPhi(iConfig.getParameter("Phi")); beamSpot_.setBetaStar(iConfig.getParameter("BetaStar")); beamSpot_.setEmittance(iConfig.getParameter("Emittance")); beamSpot_.setTimeOffset(iConfig.getParameter("TimeOffset")); + beamSpot_.setSigmaX(iConfig.getParameter("SigmaX")); + beamSpot_.setSigmaY(iConfig.getParameter("SigmaY")); } // @@ -99,8 +99,8 @@ void BeamProfile2DBWriter::fillDescriptions(edm::ConfigurationDescriptions& desc desc.add("MeanX", 0.0)->setComment("in cm"); desc.add("MeanY", 0.0)->setComment("in cm"); desc.add("MeanZ", 0.0)->setComment("in cm"); - desc.add("SigmaX", 0.0)->setComment("in cm"); - desc.add("SigmaY", 0.0)->setComment("in cm"); + desc.add("SigmaX", -1.0)->setComment("in cm"); + desc.add("SigmaY", -1.0)->setComment("in cm"); desc.add("SigmaZ", 0.0)->setComment("in cm"); desc.add("BetaStar", 0.0)->setComment("in cm"); desc.add("Emittance", 0.0)->setComment("in cm"); diff --git a/CondTools/BeamSpot/test/BeamProfile2DBWriter_cfg.py b/CondTools/BeamSpot/test/BeamProfile2DBWriter_cfg.py index 459dda7f17cc4..3bdfc7c77858c 100644 --- a/CondTools/BeamSpot/test/BeamProfile2DBWriter_cfg.py +++ b/CondTools/BeamSpot/test/BeamProfile2DBWriter_cfg.py @@ -42,6 +42,8 @@ process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(1)) from CondTools.BeamSpot.beamProfile2DBWriter_cfi import beamProfile2DBWriter +# For the BetaFunc smearing (realistic Beamspot) set the following parameters: +# - X0, Y0, Z0, SigmaZ, BetaStar, Emittance process.BeamProfile2DBWriter = beamProfile2DBWriter.clone(X0 = 0.0458532, Y0 = -0.016966, Z0 = -0.074992, @@ -49,4 +51,13 @@ BetaStar = 30.0, Emittance = 3.931e-8,) +# For the Gaussian smearing (ideal Beamspot) set the following parameters: +# - MeanX, MeanY, MeanZ, SigmaX, SigmaY, SigmaZ +#process.BeamProfile2DBWriter = beamProfile2DBWriter.clone(MeanX = 0.0, +# MeanY = 0.0, +# MeanZ = 0.0, +# SigmaX = 0.0015, +# SigmaY = 0.0015, +# SigmaZ = 3.6,) + process.p = cms.Path(process.BeamProfile2DBWriter)