Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:16:43

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef MBD_MBDOUT_H
0004 #define MBD_MBDOUT_H
0005 
0006 #include <phool/PHObject.h>
0007 
0008 #include <string>
0009 
0010 ///
0011 class MbdOut : public PHObject
0012 {
0013  public:
0014   ///
0015   ~MbdOut() override = default;
0016 
0017   /** identify Function from PHObject
0018       @param os Output Stream
0019    */
0020   void identify(std::ostream& os = std::cout) const override;
0021 
0022   /// Clear Event
0023   virtual void Reset() override;
0024 
0025   /// isValid returns non zero if object contains vailid data
0026   int isValid() const override;
0027 
0028   ///  copying for embedding
0029   virtual void CopyTo(MbdOut *) {return;}
0030 
0031   /// get ZVertex determined by Mbd
0032   virtual Float_t get_zvtx() const;
0033 
0034   /// get Error on ZVertex determined by Mbd
0035   virtual Float_t get_zvtxerr() const;
0036 
0037   /// get T0 determined by Mbd
0038   virtual Float_t get_t0() const;
0039 
0040   /// get Error on T0 determined by Mbd
0041   virtual Float_t get_t0err() const;
0042 
0043   /** set T0, Error on T0, ZVertex and Error on ZVertex
0044       @param t0 Mbd T0
0045       @param t0err Mbd Error on T0
0046       @param vtx Mbd ZVertex
0047       @param vtxerr Mbd Error on ZVertex
0048    */
0049   virtual void set_t0zvtx(const Float_t t0, const Float_t t0err, const Float_t vtx, const Float_t vtxerr)
0050   {
0051     set_t0(t0, t0err);
0052     set_zvtx(vtx, vtxerr);
0053   }
0054 
0055   /** set T0 for Mbd
0056       @param t0 Mbd T0
0057       @param t0err Mbd T0 error
0058    */
0059   virtual void set_t0(const Float_t t0, const Float_t t0err = 0);
0060 
0061   //! set vertex
0062   virtual void set_zvtx(const Float_t vtx, const Float_t vtxerr);
0063 
0064   /** set Vtx Error for Mbd
0065       @param vtxerr Mbd Vtx Error
0066    */
0067   virtual void set_zvtxerr(const Float_t vtxerr);
0068 
0069   /** Add Mbd North/South data containing Number of pmt's, Energy and Timing
0070       @param npmt Number of PMT's fired
0071       @param ncharge Number of Charged Particles into North/South
0072       @param timing Timing of North/South
0073       @param iarm  Arm, use Mbd::North and Mbd::South
0074    */
0075   virtual void set_arm(const int iarm, const Short_t npmt, const Float_t ncharge, const Float_t timing);
0076 
0077   /** Add Mbd data containing evt, clk, and femclk
0078       @param ievt   Event number
0079       @param iclk    XMIT clock
0080       @param ifemclk FEM clock
0081    */
0082   virtual void set_clocks(const Int_t ievt, const UShort_t iclk, const UShort_t ifemclk);
0083 
0084   /** get Number of PMT's fired in North/South Mbd
0085       @param iarm  Arm, use Mbd::North and Mbd::South
0086    */
0087   virtual Short_t get_npmt(const int iarm) const;
0088 
0089   /** get Number of Charged Particles into North/South Mbd
0090       @param iarm  Arm, use Mbd::North and Mbd::South
0091    */
0092   virtual Float_t get_q(const int iarm) const;
0093 
0094   /** get Timing of North/South Mbd
0095       @param iarm  Arm, use Mbd::North and Mbd::South
0096    */
0097   virtual Float_t get_time(const int iarm) const;
0098 
0099   /** get Event Number
0100    */
0101   virtual Int_t get_evt() const;
0102 
0103   /** get XMIT Clock Counter
0104    */
0105   virtual UShort_t get_clock() const;
0106 
0107   /** get FEM Clock Counter
0108    */
0109   virtual UShort_t get_femclock() const;
0110 
0111   virtual void FillFromClass(const MbdOut& old);
0112 
0113   virtual void Print(Option_t *option = "") const override;
0114 
0115  private:
0116   static void virtual_warning(const std::string& funcsname) ;
0117 
0118   ClassDefOverride(MbdOut, 1)
0119 };
0120 
0121 #endif