00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "StBTofHeader.h"
00031
00032 ClassImp(StBTofHeader)
00033
00034 StBTofHeader::StBTofHeader()
00035 {
00036 for(int i=0; i<MAXFIBER; i++) {
00037 mFiberHeader[i] = -1;
00038 mFiberTriggerWord[i] = 0;
00039 mTriggerTime[i] = 0;
00040 }
00041 for(int i=0; i<2; i++) mVpdHitPattern[i] = 0;
00042 for(int i=0; i<MAXVPDVZ; i++) mVpdVz[i] = -999.;
00043 mTStart = 0.;
00044 mTStartErr = 0.;
00045 mTDiff = -999.;
00046 for(int i=0; i<2; i++)
00047 for(int j=0; j<MAXVPD; j++)
00048 mVpdTime[i][j] = 0.;
00049 mNTzero = 0;
00050 }
00051
00052 StBTofHeader::~StBTofHeader() {}
00053
00054 short
00055 StBTofHeader::fiberHeader(int fiberId) const { return mFiberHeader[fiberId]; }
00056
00057 unsigned int
00058 StBTofHeader::fiberTriggerWord(int fiberId) const { return mFiberTriggerWord[fiberId]; }
00059
00060 unsigned int
00061 StBTofHeader::vpdHitPattern(StBeamDirection eastwest) const
00062 {
00063 return mVpdHitPattern[eastwest];
00064 }
00065
00066 unsigned short
00067 StBTofHeader::numberOfVpdHits(StBeamDirection eastwest) const
00068 {
00069 unsigned short nHit = 0;
00070 for(int i=0; i<MAXVPD; i++) {
00071 int tubeId = i + 1;
00072 if (isVpdHit(eastwest, tubeId)) nHit++;
00073 }
00074 return nHit;
00075 }
00076
00077 bool
00078 StBTofHeader::isVpdHit(StBeamDirection eastwest, int tubeId) const
00079 {
00080 return ( (mVpdHitPattern[eastwest])>>(tubeId-1) ) & 0x1;
00081 }
00082
00083 float
00084 StBTofHeader::vpdVz(int rank) const
00085 {
00086 return mVpdVz[rank];
00087 }
00088
00089 double
00090 StBTofHeader::tStart() const { return mTStart; }
00091
00092 double
00093 StBTofHeader::tStartError() const { return mTStartErr; }
00094
00095 double
00096 StBTofHeader::tDiff() const { return mTDiff; }
00097
00098 double
00099 StBTofHeader::vpdTime(StBeamDirection eastwest, int tubeId) const
00100 {
00101 return mVpdTime[eastwest][tubeId-1];
00102 }
00103
00104 unsigned int
00105 StBTofHeader::triggerTime(int fiberId) const { return mTriggerTime[fiberId]; }
00106
00107 int
00108 StBTofHeader::nTzero() const { return mNTzero; }
00109
00110 void
00111 StBTofHeader::setFiberHeader(int fiberId, short val)
00112 {
00113 mFiberHeader[fiberId] = val;
00114 }
00115
00116 void
00117 StBTofHeader::setFiberTriggerWord(int fiberId, unsigned int val)
00118 {
00119 mFiberTriggerWord[fiberId] = val;
00120 }
00121
00122 void
00123 StBTofHeader::setVpdHit(StBeamDirection eastwest, int tubeId)
00124 {
00125 mVpdHitPattern[eastwest] |= 0x1 << (tubeId-1);
00126 }
00127
00128 void
00129 StBTofHeader::removeVpdHit(StBeamDirection eastwest, int tubeId)
00130 {
00131 mVpdHitPattern[eastwest] &= ( 0x7ffff - (0x1 << (tubeId-1)) );
00132 }
00133
00134 void
00135 StBTofHeader::setVpdHitPattern(StBeamDirection eastwest, unsigned int val)
00136 {
00137 mVpdHitPattern[eastwest] = val;
00138 }
00139
00140 void
00141 StBTofHeader::setVpdVz(float vz, int rank)
00142 {
00143 mVpdVz[rank] = vz;
00144 }
00145
00146 void
00147 StBTofHeader::setTStart(double t) { mTStart = t; }
00148
00149 void
00150 StBTofHeader::setTStartError(double t_err) { mTStartErr = t_err; }
00151
00152 void
00153 StBTofHeader::setTDiff(double tdiff) { mTDiff = tdiff; }
00154
00155 void
00156 StBTofHeader::setVpdTime(StBeamDirection eastwest, int tubeId, double t)
00157 {
00158 mVpdTime[eastwest][tubeId-1] = t;
00159 }
00160
00161 void
00162 StBTofHeader::setTriggerTime(unsigned int tdc, int fiberId) { mTriggerTime[fiberId] = tdc; }
00163
00164 void
00165 StBTofHeader::setNTzero(short n) { mNTzero = n; }