00001 #ifndef __PXXVCompositePayload__H__ 00002 #define __PXXVCompositePayload__H__ 00003 00014 00015 #include "payloads-unpacker/payloads/PXXVTriggerPayload.h" 00016 #include "payloads-unpacker/payloads/PXXICompositePayload.h" 00017 #include "payloads-unpacker/payloads/PXXCompositePayloadEnvelope.h" 00018 #include <vector> 00019 using namespace std; 00020 00021 class PXXVCompositePayload : public PXXVTriggerPayload, public PXXICompositePayload 00022 { 00023 public: 00024 00028 virtual ~PXXVCompositePayload(); 00029 //------------------------------------------------------------------------------ 00030 00034 virtual const PXXCompositePayloadEnvelope &GetCompositePayloadEnvelope() 00035 { return fTCompositeEnvelope_; } 00036 //------------------------------------------------------------------------------ 00037 00041 virtual const vector<PXXIPayloadPtr> &GetPayloadPtrs() const 00042 { return fPayloadPtrs_;} 00043 //------------------------------------------------------------------------------ 00044 00049 virtual const vector<PXXIHitPayloadPtr> &GetHitPtrs() const { return fHitPtrs_;} 00050 //------------------------------------------------------------------------------ 00051 00055 virtual void WriteCompositePayload(); 00056 //------------------------------------------------------------------------------ 00057 00058 protected: 00059 00063 PXXVCompositePayload(const PXXPayloadEnvelope &envelope); 00064 //------------------------------------------------------------------------------ 00065 00070 PXXVCompositePayload(); 00071 //------------------------------------------------------------------------------ 00072 00077 virtual Int32b_t UnpackCompositePayloadEnvelope(); 00078 //------------------------------------------------------------------------------ 00079 00084 virtual Int32b_t UnpackCompositePayload(); 00085 //------------------------------------------------------------------------------ 00086 00090 virtual vector<PXXIPayloadPtr> &GetPayloadPtrs() { return fPayloadPtrs_; } 00091 virtual vector<PXXIHitPayloadPtr> &GetHitPtrs() { return fHitPtrs_; } 00092 //------------------------------------------------------------------------------ 00093 00094 private: 00095 00096 PXXCompositePayloadEnvelope fTCompositeEnvelope_; // composite payload envelope 00097 vector<PXXIPayloadPtr> fPayloadPtrs_; // it owns the payloads. 00098 vector<PXXIHitPayloadPtr> fHitPtrs_; // it DOESN'T own the hit list. 00099 00100 ClassDef(PXXVCompositePayload, 0) // interface of payloads 00101 00102 }; 00103 00104 #ifdef __USEROOT__ // compile with ROOT 00105 typedef PXXVCompositePayload* PXXVCompositePayloadPtr; 00106 #else // compile with IceTray 00107 typedef shared_ptr<PXXVCompositePayload> PXXVCompositePayloadPtr; 00108 #endif 00109 00110 #endif // PXXIPAYLOAD_H