61 : changeFrame_(iconf.getParameter<
bool>(
"changeToCMSCoordinates")),
62 theMaxZ(iconf.getParameter<double>(
"maxZ")),
63 theSetSigmaZ(iconf.getParameter<double>(
"setSigmaZ")),
64 useTransientRecord_(iconf.getParameter<
bool>(
"useTransientRecord")),
69 theBeamShoutMode(iconf.getUntrackedParameter<unsigned
int>(
"beamMode", 11)) {
73 produces<reco::BeamSpot>();
78 ps.
add<
bool>(
"changeToCMSCoordinates",
false);
79 ps.
add<
double>(
"maxZ", 40.);
80 ps.
add<
double>(
"setSigmaZ", -1.);
84 ps.
add<
double>(
"maxRadius", 2.0);
85 ps.
add<
bool>(
"useTransientRecord",
false);
91 auto result = std::make_unique<reco::BeamSpot>();
94 bool shoutMODE =
false;
102 bool fallBackToDB =
false;
106 if (spotDB.beamType() != 2) {
108 edm::LogWarning(
"BeamSpotFromDB") <<
"Online Beam Spot producer writes a fake beamspot value because the " 109 "ESProducer returned a fake beamspot!";
122 for (
int i = 0;
i < 7; ++
i) {
123 for (
int j = 0;
j < 7; ++
j) {
127 double sigmaZ = spotDB.sigmaZ();
133 aSpot.setBeamWidthY(spotDB.beamWidthY());
134 aSpot.setEmittanceX(spotDB.emittanceX());
135 aSpot.setEmittanceY(spotDB.emittanceY());
136 aSpot.setbetaStar(spotDB.betaStar());
137 aSpot.setType(static_cast<reco::BeamSpot::BeamType>(spotDB.beamType()));
147 auto result = std::make_unique<reco::BeamSpot>();
149 if (!handleScaler->empty()) {
151 spotOnline = *(handleScaler->begin());
173 aSpot.setBeamWidthY(spotOnline.
width_y());
174 aSpot.setEmittanceX(0.);
175 aSpot.setEmittanceY(0.);
176 aSpot.setbetaStar(0.);
180 if (spotOnline.
x() == 0 && spotOnline.
y() == 0 && spotOnline.
z() == 0 && spotOnline.
width_x() == 0 &&
184 <<
"Online Beam Spot producer falls back to DB value because the scaler values are zero ";
188 double r2 = spotOnline.
x() * spotOnline.
x() + spotOnline.
y() * spotOnline.
y();
192 <<
"Online Beam Spot producer falls back to DB value because the scaler values are too big to be true :" 193 << spotOnline.
x() <<
" " << spotOnline.
y() <<
" " << spotOnline.
z();
211 for (
int i = 0;
i < 7; ++
i) {
212 for (
int j = 0;
j < 7; ++
j) {
222 aSpot.setbetaStar(spotDB->
betaStar());
double emittanceX() const
get emittance
std::vector< BeamSpotOnline > BeamSpotOnlineCollection
math::Error< dimension >::type CovarianceMatrix
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
T getParameter(std::string const &) const
double z() const
get Z beam position
const edm::ESGetToken< BeamSpotObjects, BeamSpotTransientObjectsRcd > beamTransientToken_
const cms_uint16_t beamMode() const
double dydz() const
get dydz slope, crossing angle in YZ
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
double covariance(int i, int j) const
get i,j element of the full covariance matrix 7x7
const double theSetSigmaZ
const edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > l1GtEvmReadoutRecordToken_
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
produce a beam spot class
BeamSpotOnlineProducer(const edm::ParameterSet &iConf)
constructor
const edm::EDGetTokenT< BeamSpotOnlineCollection > scalerToken_
const L1GtfeExtWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
math::XYZPoint Point
point in the space
double beamWidthX() const
get average transverse beam width
Log< level::Error, false > LogError
float err_sigma_z() const
const edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcd > beamToken_
T const * product() const
Abs< T >::type abs(const T &t)
double x() const
get X beam position
edm::ESWatcher< BeamSpotTransientObjectsRcd > beamTransientRcdESWatcher_
#define DEFINE_FWK_MODULE(type)
const unsigned int theBeamShoutMode
ParameterDescriptionBase * add(U const &iLabel, T const &value)
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
double beamWidthY() const
get average transverse beam width
double y() const
get Y beam position
static void fillDescriptions(edm::ConfigurationDescriptions &iDesc)
Fill descriptor.
const bool useTransientRecord_
double sigmaZ() const
get sigma Z, RMS bunch length
bool check(const edm::EventSetup &iSetup)
double emittanceY() const
get emittance
double betaStar() const
get beta star
Log< level::Warning, false > LogWarning
double dxdz() const
get dxdz slope, crossing angle in XZ