File indexing completed on 2025-08-06 08:17:52
0001 #include "MbdOutV1.h"
0002 #include "MbdReturnCodes.h"
0003
0004 #include <TClonesArray.h>
0005
0006 #include <iostream>
0007
0008
0009 void MbdOutV1::Reset()
0010 {
0011 bz = std::numeric_limits<Float_t>::quiet_NaN();
0012 bzerr = std::numeric_limits<Float_t>::quiet_NaN();
0013 bt0 = std::numeric_limits<Float_t>::quiet_NaN();
0014 bt0err = std::numeric_limits<Float_t>::quiet_NaN();
0015 bns = 0.;
0016 bnn = 0.;
0017 bqs = 0.;
0018 bqn = 0.;
0019 bts = std::numeric_limits<Float_t>::quiet_NaN();
0020 btn = std::numeric_limits<Float_t>::quiet_NaN();
0021 }
0022
0023
0024 int MbdOutV1::isValid() const
0025 {
0026
0027 return ((std::isfinite(bt0) && (bt0 > -9999.)) ? 1 : 0);
0028 }
0029
0030
0031 void MbdOutV1::identify(std::ostream &out) const
0032 {
0033 out << "identify yourself: I am a MbdOutV1 object" << std::endl;
0034 out << "Vertex: " << bz << " Error: " << bzerr << std::endl;
0035 out << "T0: " << bt0 << " Error: " << bt0err << std::endl;
0036 }
0037
0038
0039 void MbdOutV1::set_t0(const Float_t t0, const Float_t t0err)
0040 {
0041 bt0 = t0;
0042 bt0err = t0err;
0043 }
0044
0045
0046 void MbdOutV1::set_zvtx(const Float_t vtx, const Float_t vtxerr)
0047 {
0048 bz = vtx;
0049 bzerr = vtxerr;
0050 }
0051
0052
0053 void MbdOutV1::set_zvtxerr(const Float_t vtxerr)
0054 {
0055 bzerr = vtxerr;
0056 }
0057
0058
0059 void MbdOutV1::set_arm(const int iarm, const Short_t npmt, const Float_t charge, const Float_t timing)
0060 {
0061 if (iarm == 0)
0062 {
0063 bns = npmt;
0064 bqs = charge;
0065 bts = timing;
0066 }
0067 else if (iarm == 1)
0068 {
0069 bnn = npmt;
0070 bqn = charge;
0071 btn = timing;
0072 }
0073 else
0074 {
0075 std::cerr << "MbdOutV1::set_arm(): ERROR, invalid arm " << iarm << std::endl;
0076 }
0077 }
0078
0079
0080 Short_t MbdOutV1::get_npmt(const int iarm) const
0081 {
0082 return (iarm == 0) ? bns : bnn;
0083 }
0084
0085
0086 Float_t MbdOutV1::get_q(const int iarm) const
0087 {
0088 return (iarm == 0) ? bqs : bqn;
0089 }
0090
0091 Float_t MbdOutV1::get_time(const int iarm) const
0092 {
0093 return (iarm == 0) ? bts : btn;
0094 }
0095
0096
0097 void MbdOutV1::CopyTo(MbdOut *mbd)
0098 {
0099
0100 mbd->set_t0(bt0, bt0err);
0101 mbd->set_zvtx(bz, bzerr);
0102
0103 mbd->set_arm(0, bns, bqs, bts);
0104 mbd->set_arm(1, bnn, bqn, btn);
0105
0106 }