File indexing completed on 2023-03-17 10:40:51
0001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayVirtualMeasurement_h
0002 #define Alignment_TwoBodyDecay_TwoBodyDecayVirtualMeasurement_h
0003
0004 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0005 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h"
0006 #include "DataFormats/Math/interface/Point3D.h"
0007
0008 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 class TwoBodyDecayVirtualMeasurement {
0020 public:
0021 TwoBodyDecayVirtualMeasurement(const double primaryMass,
0022 const double primaryWidth,
0023 const double secondaryMass,
0024 const reco::BeamSpot &beamSpot)
0025 : thePrimaryMass(primaryMass),
0026 thePrimaryWidth(primaryWidth),
0027 theSecondaryMass(secondaryMass),
0028 theBeamSpot(beamSpot) {}
0029
0030 TwoBodyDecayVirtualMeasurement(const TwoBodyDecayVirtualMeasurement &other)
0031 : thePrimaryMass(other.thePrimaryMass),
0032 thePrimaryWidth(other.thePrimaryWidth),
0033 theSecondaryMass(other.theSecondaryMass),
0034 theBeamSpot(other.theBeamSpot) {}
0035
0036 inline const double &primaryMass(void) const { return thePrimaryMass; }
0037 inline const double &primaryWidth(void) const { return thePrimaryWidth; }
0038 inline const double &secondaryMass(void) const { return theSecondaryMass; }
0039
0040 inline const reco::BeamSpot &beamSpot(void) const { return theBeamSpot; }
0041 inline const AlgebraicVector beamSpotPosition(void) const { return convertXYZPoint(theBeamSpot.position()); }
0042 inline const AlgebraicSymMatrix beamSpotError(void) const { return extractBeamSpotError(); }
0043
0044 private:
0045 inline const AlgebraicVector convertXYZPoint(const math::XYZPoint &p) const {
0046 AlgebraicVector v(3);
0047 v(1) = p.x();
0048 v(2) = p.y();
0049 v(3) = p.z();
0050 return v;
0051 }
0052
0053 inline const AlgebraicSymMatrix extractBeamSpotError() const {
0054 AlgebraicSymMatrix bse(3, 0);
0055 bse[0][0] = theBeamSpot.BeamWidthX();
0056 bse[1][1] = theBeamSpot.BeamWidthY();
0057 bse[2][2] = theBeamSpot.sigmaZ();
0058 return bse;
0059 }
0060
0061 const double thePrimaryMass;
0062 const double thePrimaryWidth;
0063 const double theSecondaryMass;
0064 const reco::BeamSpot &theBeamSpot;
0065 };
0066
0067 #endif