CMS 3D CMS Logo

BeamSpotProducer.cc
Go to the documentation of this file.
1 
4 
10 
13 
14 //
15 // constructors and destructor
16 //
18  edm::LogInfo("RecoVertex/BeamSpotProducer") << "Initializing Beam Spot producer "
19  << "\n";
20 
21  //fVerbose=conf.getUntrackedParameter<bool>("verbose", false);
22  m_beamToken = esConsumes<BeamSpotObjects, BeamSpotObjectsRcd>();
23 
24  produces<reco::BeamSpot>();
25 }
26 
28 
29 //
30 // member functions
31 //
32 
33 // ------------ method called to produce the data ------------
35  using namespace edm;
36 
37  auto result = std::make_unique<reco::BeamSpot>();
38 
39  reco::BeamSpot aSpot;
40 
41  //typedef math::XYZPoint Point;
42  //enum { dimension = 7 };
43  //typedef math::Error<dimension>::type CovarianceMatrix;
44 
45  //try {
46  edm::LogInfo("RecoVertex/BeamSpotProducer") << "Reconstructing event number: " << iEvent.id() << "\n";
47 
49  const BeamSpotObjects* spotDB = beamhandle.product();
50 
51  // translate from BeamSpotObjects to reco::BeamSpot
52  reco::BeamSpot::Point apoint(spotDB->x(), spotDB->y(), spotDB->z());
53 
55  for (int i = 0; i < 7; ++i) {
56  for (int j = 0; j < 7; ++j) {
57  matrix(i, j) = spotDB->covariance(i, j);
58  }
59  }
60 
61  // this assume beam width same in x and y
62  aSpot = reco::BeamSpot(apoint, spotDB->sigmaZ(), spotDB->dxdz(), spotDB->dydz(), spotDB->beamWidthX(), matrix);
63  aSpot.setBeamWidthY(spotDB->beamWidthY());
64  aSpot.setEmittanceX(spotDB->emittanceX());
65  aSpot.setEmittanceY(spotDB->emittanceY());
66  aSpot.setbetaStar(spotDB->betaStar());
67 
68  //}
69  //
70  //catch (std::exception & err) {
71  // edm::LogInfo("RecoVertex/BeamSpotProducer")
72  // << "Exception during event number: " << iEvent.id()
73  // << "\n" << err.what() << "\n";
74  //}
75 
76  *result = aSpot;
77 
78  iEvent.put(std::move(result));
79 }
80 
81 //define this as a plug-in
double emittanceX() const
get emittance
math::Error< dimension >::type CovarianceMatrix
Definition: BeamSpot.h:29
double z() const
get Z beam position
double dydz() const
get dydz slope, crossing angle in YZ
double covariance(int i, int j) const
get i,j element of the full covariance matrix 7x7
~BeamSpotProducer() override
destructor
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
math::XYZPoint Point
point in the space
Definition: BeamSpot.h:27
double beamWidthX() const
get average transverse beam width
int iEvent
Definition: GenABIO.cc:224
T const * product() const
Definition: ESHandle.h:86
edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcd > m_beamToken
BeamSpotProducer(const edm::ParameterSet &iConf)
constructor
double x() const
get X beam position
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
produce a beam spot class
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:151
double beamWidthY() const
get average transverse beam width
Log< level::Info, false > LogInfo
double y() const
get Y beam position
double sigmaZ() const
get sigma Z, RMS bunch length
double emittanceY() const
get emittance
double betaStar() const
get beta star
HLT enums.
double dxdz() const
get dxdz slope, crossing angle in XZ
def move(src, dest)
Definition: eostools.py:511