1 |
econte |
1.1 |
#ifndef Alignment_TwoBodyDecay_TwoBodyDecayVirtualMeasurement_h
|
2 |
|
|
#define Alignment_TwoBodyDecay_TwoBodyDecayVirtualMeasurement_h
|
3 |
|
|
|
4 |
|
|
#include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
|
5 |
|
|
#include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h"
|
6 |
|
|
#include "DataFormats/Math/interface/Point3D.h"
|
7 |
|
|
//#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
|
8 |
|
|
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
|
9 |
|
|
|
10 |
|
|
/** /class TwoBodyDecayVirtualMeasurement
|
11 |
|
|
*
|
12 |
|
|
* Container-class for the virtual measurements (beam profile, mass-constraint) included
|
13 |
|
|
* into the estimation of the properties of two-body decays (see TwoBodyDecayEstimator).
|
14 |
|
|
*
|
15 |
|
|
* /author Edmund Widl
|
16 |
|
|
*/
|
17 |
|
|
|
18 |
|
|
|
19 |
|
|
class TwoBodyDecayVirtualMeasurement
|
20 |
|
|
{
|
21 |
|
|
|
22 |
|
|
public:
|
23 |
|
|
|
24 |
|
|
TwoBodyDecayVirtualMeasurement( const double primaryMass,
|
25 |
|
|
const double primaryWidth,
|
26 |
|
|
const double secondaryMass,
|
27 |
|
|
const reco::BeamSpot& beamSpot ) :
|
28 |
|
|
thePrimaryMass( primaryMass ),
|
29 |
|
|
thePrimaryWidth( primaryWidth ),
|
30 |
|
|
theSecondaryMass( secondaryMass ),
|
31 |
|
|
theBeamSpot( beamSpot ) {}
|
32 |
|
|
|
33 |
|
|
TwoBodyDecayVirtualMeasurement( const TwoBodyDecayVirtualMeasurement & other ) :
|
34 |
|
|
thePrimaryMass( other.thePrimaryMass ),
|
35 |
|
|
thePrimaryWidth( other.thePrimaryWidth ),
|
36 |
|
|
theSecondaryMass( other.theSecondaryMass ),
|
37 |
|
|
theBeamSpot( other.theBeamSpot ) {}
|
38 |
|
|
|
39 |
|
|
inline const double & primaryMass( void ) const { return thePrimaryMass; }
|
40 |
|
|
inline const double & primaryWidth( void ) const { return thePrimaryWidth; }
|
41 |
|
|
inline const double & secondaryMass( void ) const { return theSecondaryMass; }
|
42 |
|
|
|
43 |
|
|
inline const reco::BeamSpot & beamSpot( void ) const { return theBeamSpot; }
|
44 |
|
|
inline const AlgebraicVector beamSpotPosition( void ) const { return convertXYZPoint( theBeamSpot.position() ); }
|
45 |
|
|
inline const AlgebraicSymMatrix beamSpotError( void ) const { return extractBeamSpotError(); }
|
46 |
|
|
|
47 |
|
|
private:
|
48 |
|
|
|
49 |
|
|
inline const AlgebraicVector convertXYZPoint( const math::XYZPoint & p ) const
|
50 |
|
|
{ AlgebraicVector v(3); v(1)=p.x(); v(2)=p.y(); v(3)=p.z(); return v; }
|
51 |
|
|
|
52 |
|
|
inline const AlgebraicSymMatrix extractBeamSpotError() const
|
53 |
|
|
{ AlgebraicSymMatrix bse(3,0); bse[0][0] = theBeamSpot.BeamWidthX(); bse[1][1] = theBeamSpot.BeamWidthY(); bse[2][2] = theBeamSpot.sigmaZ(); return bse; }
|
54 |
|
|
|
55 |
|
|
const double & thePrimaryMass;
|
56 |
|
|
const double & thePrimaryWidth;
|
57 |
|
|
const double & theSecondaryMass;
|
58 |
|
|
const reco::BeamSpot & theBeamSpot;
|
59 |
|
|
|
60 |
|
|
};
|
61 |
|
|
|
62 |
|
|
#endif
|