File indexing completed on 2024-04-06 12:29:19
0001 #ifndef RecoVertex_VertexPrimitives_VertexState_H
0002 #define RecoVertex_VertexPrimitives_VertexState_H
0003
0004 #include "RecoVertex/VertexPrimitives/interface/BasicVertexState.h"
0005 #include "RecoVertex/VertexPrimitives/interface/BasicSingleVertexState.h"
0006 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0007 #include <vector>
0008
0009
0010
0011
0012
0013 class VertexState final : private BasicVertexState::Proxy {
0014 using Base = BasicVertexState::Proxy;
0015 using BSVS = BasicSingleVertexState;
0016
0017 public:
0018 VertexState() {}
0019 VertexState(VertexState const&) = default;
0020 VertexState(VertexState&&) = default;
0021 VertexState& operator=(const VertexState&) = default;
0022 VertexState& operator=(VertexState&&) = default;
0023
0024
0025
0026
0027
0028 explicit VertexState(BasicVertexState* p) : Base(p) {}
0029
0030 explicit VertexState(const reco::BeamSpot& beamSpot)
0031 : Base(new BSVS(
0032 GlobalPoint(Basic3DVector<float>(beamSpot.position())), GlobalError(beamSpot.rotatedCovariance3D()), 1.0)) {
0033 }
0034
0035 VertexState(const GlobalPoint& pos, const GlobalError& posErr, const double& weightInMix = 1.0)
0036 : Base(new BSVS(pos, posErr, weightInMix)) {}
0037
0038 VertexState(const GlobalPoint& pos, const GlobalWeight& posWeight, const double& weightInMix = 1.0)
0039 : Base(new BSVS(pos, posWeight, weightInMix)) {}
0040
0041 VertexState(const AlgebraicVector3& weightTimesPosition,
0042 const GlobalWeight& posWeight,
0043 const double& weightInMix = 1.0)
0044 : Base(new BSVS(weightTimesPosition, posWeight, weightInMix)) {}
0045
0046
0047 VertexState(const GlobalPoint& pos, const double time, const GlobalError& posTimeErr, const double& weightInMix = 1.0)
0048 : Base(new BSVS(pos, time, posTimeErr, weightInMix)) {}
0049
0050 VertexState(const GlobalPoint& pos,
0051 const double time,
0052 const GlobalWeight& posTimeWeight,
0053 const double& weightInMix = 1.0)
0054 : Base(new BSVS(pos, time, posTimeWeight, weightInMix)) {}
0055
0056 VertexState(const AlgebraicVector4& weightTimesPosition,
0057 const GlobalWeight& posTimeWeight,
0058 const double& weightInMix = 1.0)
0059 : Base(new BSVS(weightTimesPosition, posTimeWeight, weightInMix)) {}
0060
0061
0062 GlobalPoint position() const { return data().position(); }
0063
0064 GlobalError error() const { return data().error(); }
0065
0066
0067 GlobalError error4D() const { return data().error4D(); }
0068
0069 GlobalWeight weight() const { return data().weight(); }
0070
0071 GlobalWeight weight4D() const { return data().weight4D(); }
0072
0073 double time() const { return data().time(); }
0074
0075 double timeError() const { return data().timeError(); }
0076
0077 AlgebraicVector3 weightTimesPosition() const { return data().weightTimesPosition(); }
0078
0079 AlgebraicVector4 weightTimesPosition4D() const { return data().weightTimesPosition4D(); }
0080
0081 double weightInMixture() const { return data().weightInMixture(); }
0082
0083
0084
0085
0086
0087
0088
0089
0090 std::vector<VertexState> components() const { return data().components(); }
0091
0092
0093 bool isValid() const { return Base::isValid() && data().isValid(); }
0094
0095 bool is4D() const { return data().is4D(); }
0096 };
0097
0098 #endif