Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:52

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef MBD_MBDOUTV1_H
0004 #define MBD_MBDOUTV1_H
0005 
0006 #include "MbdOut.h"
0007 
0008 #include <iostream>
0009 #include <limits>
0010 
0011 class TClonesArray;
0012 
0013 ///
0014 class MbdOutV1 : public MbdOut
0015 {
0016  public:
0017   ///
0018   MbdOutV1() = default;
0019   ///
0020   ~MbdOutV1() override = default;
0021 
0022   /// Clear Event from memory
0023   virtual void Reset() override;
0024 
0025   /** identify Function from PHObject
0026       @param os Output Stream
0027    */
0028   void identify(std::ostream &out = std::cout) const override;
0029 
0030   /// isValid returns non zero if object contains vailid data
0031   int isValid() const override;
0032 
0033   ///  functions for copying node for embedding
0034   PHObject* CloneMe() const override { return new MbdOutV1(*this); }
0035   void CopyTo(MbdOut *mbd) override;
0036 
0037   /// get ZVertex determined by Mbd
0038   Float_t get_zvtx() const override { return bz; }
0039 
0040   /// get Error on ZVertex determined by Mbd
0041   Float_t get_zvtxerr() const override { return bzerr; }
0042 
0043   /// get T0 determined by Mbd
0044   Float_t get_t0() const override { return bt0; }
0045 
0046   /// get Error on T0 determined by Mbd
0047   Float_t get_t0err() const override { return bt0err; }
0048 
0049   /** set T0 for Mbd
0050       @param t0 Mbd T0
0051       @param t0err Mbd T0 error
0052    */
0053   void set_t0(const Float_t t0, const Float_t t0err = 0) override;
0054 
0055   //! set vertex
0056   void set_zvtx(const Float_t vtx, const Float_t vtxerr = 0) override;
0057 
0058   /** set Vtx Error for Mbd
0059       @param vtxerr Mbd Vtx Error
0060   */
0061   void set_zvtxerr(const Float_t vtxerr) override;
0062 
0063   /** Add Mbd North/South data containing Number of pmt's, Energy and Timing
0064       @param npmt Number of PMT's fired
0065       @param energy Energy in North/South
0066       @param timing Timing of North/South
0067       @param iarm  Arm, use Mbd::North and Mbd::South
0068    */
0069   void set_arm(const int iarm, const Short_t npmt, const Float_t chargesum, const Float_t timing) override;
0070 
0071   /** get Number of PMT's fired in North/South Mbd
0072       @param iarm  Arm, use Mbd::North and Mbd::South
0073    */
0074   Short_t get_npmt(const int iarm) const override;
0075 
0076   /** get Number of Charged Particles into North/South Mbd
0077       @param iarm  Arm, use Mbd::North and Mbd::South
0078    */
0079   Float_t get_q(const int iarm) const override;
0080 
0081   /** get Timing of North/South Mbd
0082       @param iarm  Arm, use Mbd::North and Mbd::South
0083    */
0084   Float_t get_time(const int iarm) const override;
0085 
0086  private:
0087   Float_t bz{std::numeric_limits<Float_t>::quiet_NaN()};
0088   Float_t bzerr{std::numeric_limits<Float_t>::quiet_NaN()};
0089   Float_t bt0{std::numeric_limits<Float_t>::quiet_NaN()};
0090   Float_t bt0err{std::numeric_limits<Float_t>::quiet_NaN()};
0091   Float_t bqs{0};
0092   Float_t bqn{0};
0093   Float_t bts{std::numeric_limits<Float_t>::quiet_NaN()};
0094   Float_t btn{std::numeric_limits<Float_t>::quiet_NaN()};
0095   Short_t bns{0};
0096   Short_t bnn{0};
0097 
0098   ClassDefOverride(MbdOutV1, 1)
0099 };
0100 
0101 #endif