Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-04-02 08:12:46

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef GLOBALVERTEX_MBDVERTEXV3_H
0004 #define GLOBALVERTEX_MBDVERTEXV3_H
0005 
0006 #include "MbdVertex.h"
0007 
0008 #include <iostream>
0009 #include <limits>
0010 
0011 class MbdVertexv3 : public MbdVertex
0012 {
0013  public:
0014   MbdVertexv3() = default;
0015   ~MbdVertexv3() override = default;
0016 
0017   // PHObject virtual overloads
0018   void identify(std::ostream& os = std::cout) const override;
0019   void Reset() override { *this = MbdVertexv3(); }
0020   int isValid() const override;
0021   PHObject* CloneMe() const override { return new MbdVertexv3(*this); }
0022 
0023   // vertex info
0024   unsigned int get_id() const override { return _id; }
0025   void set_id(unsigned int id) override { _id = id; }
0026 
0027   float get_t() const override { return _t; }
0028   void set_t(float t) override { _t = t; }
0029 
0030   float get_t_err() const override { return _t_err; }
0031   void set_t_err(float t_err) override { _t_err = t_err; }
0032 
0033   // Return 0 for now, can implement beam spot
0034   float get_x() const override { return 0; }
0035   float get_y() const override { return 0; }
0036 
0037   float get_z() const override { return _z; }
0038   void set_z(float z) override { _z = z; }
0039 
0040   float get_z_err() const override { return _z_err; }
0041   void set_z_err(float z_err) override { _z_err = z_err; }
0042 
0043   float get_position(unsigned int coor) const override;
0044 
0045   // beam crossing methods (v3: native signed short storage)
0046   short int get_beam_crossing() const override { return _bco; }
0047   void set_beam_crossing(short int bco) override { _bco = bco; }
0048 
0049  private:
0050   unsigned int _id{std::numeric_limits<unsigned int>::max()};      //< unique identifier within container
0051   short int _bco{std::numeric_limits<short int>::max()};           //< global bco (signed short)
0052   float _t{std::numeric_limits<float>::quiet_NaN()};               //< collision time
0053   float _t_err{std::numeric_limits<float>::quiet_NaN()};           //< collision time uncertainty
0054   float _z{std::numeric_limits<float>::quiet_NaN()};               //< collision position z
0055   float _z_err{std::numeric_limits<float>::quiet_NaN()};           //< collision position z uncertainty
0056 
0057   ClassDefOverride(MbdVertexv3, 1);
0058 };
0059 
0060 #endif