00001 #include <stdio.h>
00002 #include <time.h>
00003 #include <assert.h>
00004 #include "StEvtHddr.h"
00005 #include "StarRoot/TUnixTime.h"
00006 #include "StMessMgr.h"
00007
00008 ClassImp(StEvtHddr)
00009
00010 StEvtHddr::StEvtHddr(TDataSet *parent):TDataSet("EvtHddr",parent)
00011 {
00012 SetDateTime(20330101,0);
00013 SetEventType("NONE");
00014 memset(&mRunNumber,0,(char*)(&mEventNumber)-(char*)&mRunNumber);
00015 mRunNumber=-1;mOldRunNumber=-2;mEventNumber=-1;
00016 }
00017
00018 StEvtHddr &StEvtHddr::operator=(const StEvtHddr &hddr)
00019 {
00020 if (!GetName() [0]) SetName (hddr.GetName ());
00021 if (!GetTitle()[0]) SetTitle(hddr.GetTitle());
00022 memcpy(&mRunNumber,&hddr.mRunNumber,(char*)((&mEventNumber)+1)-(char*)&mRunNumber);
00023 mEventTime = hddr.mEventTime;
00024 mProdTime = hddr.mProdTime;
00025 mEventType = hddr.mEventType;
00026 return *this;
00027 }
00028
00029 void StEvtHddr::FillTag(EvtHddr_st *tag)
00030 {
00031
00032 assert((char*)&mEventNumber -(char*)&mRunNumber
00033 ==(char*)&tag->mEventNumber-(char*)&tag->mRunNumber);
00034
00035 memcpy(tag,&mRunNumber,(char*)(&mEventNumber+1)-(char*)&mRunNumber);
00036 tag->mEventTime = mEventTime.GetDate() + mEventTime.GetTime()/1000000.;
00037 tag->mProdTime = mProdTime.GetDate() + mProdTime.GetTime()/1000000. ;
00038 tag->mEventType[0] = 0;
00039 strncat(tag->mEventType,mEventType,15);
00040 }
00041
00042 void StEvtHddr::SetGMTime(UInt_t ut)
00043 {
00044 TUnixTime unixTime(ut);
00045 Int_t dat=0,tim=0;
00046 unixTime.GetGTime(dat,tim);
00047 mEventTime.Set(dat,tim);
00048 }
00049
00050 void StEvtHddr::SetProdDateTime(UInt_t ut)
00051 {
00052 TUnixTime unixTime(ut);
00053 Int_t dat=0,tim=0;
00054 unixTime.GetGTime(dat,tim);
00055 mProdTime.Set(dat,tim);
00056 }
00057
00058 UInt_t StEvtHddr::GetUTime() const
00059 {
00060 TUnixTime unixTime;
00061 unixTime.SetGTime(mEventTime.GetDate(),mEventTime.GetTime());
00062 return unixTime.GetUTime();
00063 }
00064
00065 void StEvtHddr::Print(Option_t *option) const
00066 {
00067 LOG_INFO << Form
00068 ("*********** Event Info **********************")
00069 << endm;
00070 LOG_INFO << Form
00071 ("\tRun: \t%5d Event %5d TimeStamp %8d.%6d Bunch %d:%d"
00072 ,mRunNumber,mEventNumber,mEventTime.GetDate(),mEventTime.GetTime()
00073 ,mBunchCrossingNumber[0],mBunchCrossingNumber[1])
00074 << endm;
00075 LOG_INFO << Form
00076 ("\t EvtSize: %d \tInpTrig: %4x OutTrig: %4x"
00077 ,mEventSize,mInputTriggerMask,mTriggerMask)
00078 << endm;
00079 LOG_INFO << Form
00080 ("*********************************************")
00081 << endm;
00082 }