Back to home page

sPhenix code displayed by LXR

 
 

    


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

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