00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #include "RawData/RawBeamMonHeaderBlock.h"
00013 #include <OnlineUtil/rawBeamDataBlockLayout.h>
00014
00015 UInt_t RawBeamMonHeaderBlock::fgDebugFlags = 0;
00016
00017 #include "MessageService/MsgService.h"
00018
00019
00020
00021 #include "RawData/RawBlockRegistry.h"
00022 REGISTERRAWBLOCK(RawBeamMonHeaderBlock,kMdBlockBeamMonHeader,1);
00023
00024 ClassImp(RawBeamMonHeaderBlock)
00025
00026
00027 RawBeamMonHeaderBlock::RawBeamMonHeaderBlock() : RawDataBlock()
00028 {
00029
00030 }
00031
00032
00033 RawBeamMonHeaderBlock::RawBeamMonHeaderBlock(const Int_t *block)
00034 : RawDataBlock(block)
00035 {
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 }
00046
00047 RawBeamMonHeaderBlock::RawBeamMonHeaderBlock(const VldContext& vldc,
00048 UInt_t spillcnt)
00049 : RawDataBlock()
00050 {
00051
00052
00053 fSize = zzzz_last;
00054 if (fRawBlock) delete [] fRawBlock;
00055 fRawBlock = new Int_t [fSize];
00056
00057 fRawBlock[0] = fSize;
00058
00059
00060 RawBlockRegistry& rbr = RawBlockRegistry::Instance();
00061 RawBlockProxy* rbp = rbr.LookUp("RawBeamMonHeaderBlock");
00062
00063 Bool_t isDCS = rbp->IsDCS();
00064 Int_t majorId = rbp->GetMajorId();
00065 Int_t minorId = 1;
00066 RawBlockId rbid(majorId,minorId,isDCS,
00067 vldc.GetDetector(),vldc.GetSimFlag());
00068 fRawBlock[2] = rbid.GetEncoded();
00069
00070 fRawBlock[hdr_indx_sec] = vldc.GetTimeStamp().GetSec();
00071 fRawBlock[hdr_indx_nsec] = vldc.GetTimeStamp().GetNanoSec();
00072 fRawBlock[hdr_indx_spillcnt] = spillcnt;
00073
00074
00075 rdxsum_fill((long*)fRawBlock,0);
00076
00077 }
00078
00079
00080 RawBeamMonHeaderBlock::~RawBeamMonHeaderBlock()
00081 {
00082
00083 }
00084
00085
00086 VldTimeStamp RawBeamMonHeaderBlock::GetTimeStamp() const
00087 {
00088
00089 if (fSize > hdr_indx_nsec)
00090 return VldTimeStamp(fRawBlock[hdr_indx_sec],fRawBlock[hdr_indx_nsec]);
00091
00092 return VldTimeStamp((time_t)0,(Int_t)0);
00093 }
00094
00095
00096 Int_t RawBeamMonHeaderBlock::GetSpillCountNum() const
00097 {
00098
00099 if (fSize > hdr_indx_spillcnt) return fRawBlock[hdr_indx_spillcnt];
00100 return -1;
00101 }
00102
00103
00104 VldContext RawBeamMonHeaderBlock::GetVldContext() const
00105 {
00106
00107 RawBlockId rbid = GetBlockId();
00108 return VldContext(rbid.GetDetector(),rbid.GetSimFlag(),GetTimeStamp());
00109 }
00110
00111
00112 std::ostream& RawBeamMonHeaderBlock::FormatToOStream(ostream& os,
00113 Option_t *option) const
00114 {
00115 RawDataBlock::FormatToOStream(os,option);
00116 if (option[0] == 'X') return os;
00117
00118 os << " TimeStamp " << GetTimeStamp().AsString("c")
00119 << " SpillCount " << GetSpillCountNum() << endl;
00120
00121 return os;
00122 }
00123
00124