00001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayVirtualMeasurement_h 00002 #define Alignment_TwoBodyDecay_TwoBodyDecayVirtualMeasurement_h 00003 00004 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00005 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" 00006 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00007 00017 class TwoBodyDecayVirtualMeasurement 00018 { 00019 00020 public: 00021 00022 TwoBodyDecayVirtualMeasurement( const double primaryMass, 00023 const double primaryWidth, 00024 const double secondaryMass, 00025 const AlgebraicVector& beamSpot, 00026 const AlgebraicSymMatrix& beamSpotError ) : 00027 thePrimaryMass( primaryMass ), 00028 thePrimaryWidth( primaryWidth ), 00029 theSecondaryMass( secondaryMass ), 00030 theBeamSpot( beamSpot ), 00031 theBeamSpotError( beamSpotError ) {} 00032 00033 TwoBodyDecayVirtualMeasurement( const double primaryMass, 00034 const double primaryWidth, 00035 const double secondaryMass, 00036 const GlobalPoint& beamSpot, 00037 const GlobalError& beamSpotError ) : 00038 thePrimaryMass( primaryMass ), 00039 thePrimaryWidth( primaryWidth ), 00040 theSecondaryMass( secondaryMass ), 00041 theBeamSpot( convertGlobalPoint( beamSpot ) ), 00042 theBeamSpotError( beamSpotError.matrix() ) {} 00043 00044 TwoBodyDecayVirtualMeasurement( void ) : 00045 thePrimaryMass( 0. ), 00046 thePrimaryWidth( 0. ), 00047 theSecondaryMass( 0. ), 00048 theBeamSpot( AlgebraicVector() ), 00049 theBeamSpotError( AlgebraicSymMatrix() ) {} 00050 00051 inline const double primaryMass( void ) const { return thePrimaryMass; } 00052 inline const double primaryWidth( void ) const { return thePrimaryWidth; } 00053 inline const double secondaryMass( void ) const { return theSecondaryMass; } 00054 00055 inline const AlgebraicVector& beamSpot( void ) const { return theBeamSpot; } 00056 inline const AlgebraicSymMatrix& beamSpotError( void ) const { return theBeamSpotError; } 00057 00058 private: 00059 00060 inline const AlgebraicVector convertGlobalPoint( const GlobalPoint & gp ) const 00061 { AlgebraicVector v(3); v(1)=gp.x(); v(2)=gp.y(); v(3)=gp.z(); return v; } 00062 00063 double thePrimaryMass; 00064 double thePrimaryWidth; 00065 double theSecondaryMass; 00066 00067 AlgebraicVector theBeamSpot; 00068 AlgebraicSymMatrix theBeamSpotError; 00069 00070 }; 00071 00072 #endif