00001 #include "RootEventData/TBossFullEvent.h" 00002 #include "TClass.h" 00003 #include <iostream> 00004 00005 ClassImp(TBossFullEvent) 00006 00007 TBossFullEvent::TBossFullEvent() 00008 : m_mask(0), 00009 m_EvtHeader(0), 00010 m_digiEvt(0), 00011 m_dstEvt(0), 00012 m_mcEvt(0), 00013 m_trigEvt(0), 00014 m_hltEvt(0), 00015 m_rectrackEvt(0), 00016 m_evtRecObject(0) 00017 { 00018 } 00019 00020 #define SafeDeleteObject(ObjType, var) \ 00021 if ( m_mask & has##ObjType ) { \ 00022 delete var; \ 00023 } 00024 00025 TBossFullEvent::~TBossFullEvent() 00026 { 00027 SafeDeleteObject(EvtHeader, m_EvtHeader); 00028 SafeDeleteObject(DigiEvent, m_digiEvt); 00029 SafeDeleteObject(DstEvent, m_dstEvt); 00030 SafeDeleteObject(McEvent, m_mcEvt); 00031 SafeDeleteObject(TrigEvent, m_trigEvt); 00032 SafeDeleteObject(HltEvent, m_hltEvt); 00033 SafeDeleteObject(RecTrackEvent, m_rectrackEvt); 00034 SafeDeleteObject(EvtRecObject, m_evtRecObject); 00035 } 00036 00037 #define SafePrintObject(ObjType, var) \ 00038 if ( m_mask & has##ObjType ) { \ 00039 var->Print(); \ 00040 } 00041 00042 void TBossFullEvent::Print(Option_t *option) const 00043 { 00044 std::cout << "=============================================" << std::endl 00045 << "TBossFullEvent mask: 0x" << std::hex << m_mask << std::dec << std::endl 00046 << "---------------------------------------------" << std::endl; 00047 00048 SafePrintObject(EvtHeader, m_EvtHeader); 00049 SafePrintObject(DigiEvent, m_digiEvt); 00050 SafePrintObject(DstEvent, m_dstEvt); 00051 SafePrintObject(McEvent, m_mcEvt); 00052 SafePrintObject(TrigEvent, m_trigEvt); 00053 SafePrintObject(HltEvent, m_hltEvt); 00054 SafePrintObject(RecTrackEvent, m_rectrackEvt); 00055 SafePrintObject(EvtRecObject, m_evtRecObject); 00056 00057 std::cout << "=============================================" << std::endl; 00058 } 00059 00060 void TBossFullEvent::copy(TBossFullEvent* obj) 00061 { 00062 m_mask = obj->m_mask; 00063 m_EvtHeader = obj->m_EvtHeader; 00064 m_digiEvt = obj->m_digiEvt; 00065 m_dstEvt = obj->m_dstEvt; 00066 m_mcEvt = obj->m_mcEvt; 00067 m_trigEvt = obj->m_trigEvt; 00068 m_hltEvt = obj->m_hltEvt; 00069 m_rectrackEvt = obj->m_rectrackEvt; 00070 m_evtRecObject = obj->m_evtRecObject; 00071 } 00072 00073 #define SafeReadObject(ObjType, var) \ 00074 if ( m_mask & has##ObjType ) { \ 00075 var = (T##ObjType*)R__b.ReadObject(T##ObjType::Class()); \ 00076 } 00077 00078 #define SafeWriteObject(ObjType, var) \ 00079 if ( m_mask & has##ObjType ) { \ 00080 R__b.WriteObject(var); \ 00081 } 00082 00083 void TBossFullEvent::Streamer(TBuffer &R__b) 00084 { 00085 if ( R__b.IsReading() ) { 00086 R__b >> m_mask; 00087 SafeReadObject(EvtHeader, m_EvtHeader); 00088 SafeReadObject(DigiEvent, m_digiEvt); 00089 SafeReadObject(DstEvent, m_dstEvt); 00090 SafeReadObject(McEvent, m_mcEvt); 00091 SafeReadObject(TrigEvent, m_trigEvt); 00092 SafeReadObject(HltEvent, m_hltEvt); 00093 SafeReadObject(RecTrackEvent, m_rectrackEvt); 00094 SafeReadObject(EvtRecObject, m_evtRecObject); 00095 } 00096 else { 00097 R__b << m_mask; 00098 SafeWriteObject(EvtHeader, m_EvtHeader); 00099 SafeWriteObject(DigiEvent, m_digiEvt); 00100 SafeWriteObject(DstEvent, m_dstEvt); 00101 SafeWriteObject(McEvent, m_mcEvt); 00102 SafeWriteObject(TrigEvent, m_trigEvt); 00103 SafeWriteObject(HltEvent, m_hltEvt); 00104 SafeWriteObject(RecTrackEvent, m_rectrackEvt); 00105 SafeWriteObject(EvtRecObject, m_evtRecObject); 00106 } 00107 }