//----------------------- // This Class's Header -- //----------------------- #include "CalorObjects/Pes2dClusterColl.hh" //------------------------------- // Collaborating Class Headers -- //------------------------------- #include "Experiment/Experiment.hh" #include "AbsEnv/AbsEnv.hh" #include "ErrorLogger_i/gERRLOG.hh" // ROOT Headers : #include "TBuffer.h" #include "EdmUtilities/CdfClassImp.hh" //----------------------------------------------------------------------------- // Creation //----------------------------------------------------------------------------- Pes2dClusterColl::Pes2dClusterColl() : StorableObject() {} Pes2dClusterColl::Pes2dClusterColl(const Pes2dClusterColl& rhs) : StorableObject(rhs), _container(rhs._container) {} //----------------------------------------------------------------------------- // Destruction //----------------------------------------------------------------------------- Pes2dClusterColl::~Pes2dClusterColl() {} void Pes2dClusterColl::destroy() { Pes2dClusterColl::deallocate(); delete this; } void Pes2dClusterColl::deallocate() { StorableObject::deallocate(); } //----------------------------------------------------------------------------- // EDM: functions required by StorableObject //----------------------------------------------------------------------------- std::string Pes2dClusterColl::class_name() const { return "Pes2dClusterColl"; } Version_t Pes2dClusterColl::class_version() const { return Pes2dClusterColl::Class_Version(); } void Pes2dClusterColl::print(std::ostream& os) const { StorableObject::print(os); _container.print(os); } bool Pes2dClusterColl::postread(EventRecord* record) { // Note : ValueVector does not currently call postread on its elements, // so do so here : /* bool status = StorableObject::postread(record); status = _container.postread(record) && status; for (Pes2dClusterColl::iterator i = _container.contents().begin(); i != _container.contents().end(); ++i) { status = (*i).postread(record) && status; } return status;*/ // changed since valuevector does this for us now , i.e. we no longer need // to do our own postreading. 5.mar 2002 Benn Tannenbaum return true; } bool Pes2dClusterColl::prewrite(EventRecord* record) { // Note : ValueVector does not currently call prewrite on its elements, // so do so here : bool status = StorableObject::prewrite(record); status = _container.prewrite(record) && status; for (Pes2dClusterColl::iterator i = _container.contents().begin(); i != _container.contents().end(); ++i) { status = (*i).prewrite(record) && status; } return status; } bool Pes2dClusterColl::activate(EventRecord* record) { bool status = StorableObject::activate(record); return status; } bool Pes2dClusterColl::deactivate(EventRecord* record) { bool status = StorableObject::deactivate(record); return status; } void Pes2dClusterColl::Streamer(TBuffer& iobuffer) { unsigned int start = 0 ; unsigned int byte_count = 0 ; //----------------------------------------------------------------------------- // Read object from buffer //----------------------------------------------------------------------------- if (iobuffer.IsReading()) { Version_t original_version = iobuffer.ReadVersion(&start, &byte_count) ; if (original_version == 2) { StorableObject::Streamer(iobuffer) ; _container.Streamer(iobuffer); } else { ERRLOG( ELerror, "Unsupported Pes2dClusterColl version" ) << "@SUB=Pes2dClusterColl::Streamer()" << "Pes2dClusterColl cannot be read." << endmsg; } iobuffer.CheckByteCount(start, byte_count, Pes2dClusterColl::IsA()) ; } //----------------------------------------------------------------------------- // Write object to buffer //----------------------------------------------------------------------------- else if (iobuffer.IsWriting()) { byte_count = iobuffer.WriteVersion(Pes2dClusterColl::IsA(), kTRUE) ; Version_t current_version = Pes2dClusterColl::class_version() ; if (current_version == 2) { StorableObject::Streamer(iobuffer) ; _container.Streamer(iobuffer); } else { ERRLOG( ELerror, "Unsupported Pes2dClusterColl version" ) << "@SUB=Pes2dClusterColl::Streamer()" << "Pes2dClusterColl cannot be written." << endmsg; } iobuffer.SetByteCount(byte_count, kTRUE) ; } //----------------------------------------------------------------------------- // Unanticipated action //----------------------------------------------------------------------------- else { ERRLOG( ELerror, "Pes2dClusterColl::Streamer()" ) << "@SUB=Pes2dClusterColl::Streamer" << "NOTHING DONE." << endmsg; } } //----------------------------------------------------------------------------- // Functions to retrieve the collection from the event //----------------------------------------------------------------------------- Pes2dClusterColl::Error Pes2dClusterColl::find(Pes2dClusterColl_ch& cHandle) { EventRecord::ConstIterator ciEvent(AbsEnv::theEvent(),"Pes2dClusterColl"); if (ciEvent.is_valid()) { cHandle = ciEvent; return OK; } else { cHandle.set_null(); return ERROR; } } Pes2dClusterColl::Error Pes2dClusterColl::find(Pes2dClusterColl_ch& cHandle, const StorableObject::Selector & selector) { EventRecord::ConstIterator ciEvent(AbsEnv::theEvent(),"Pes2dClusterColl"); while (ciEvent.is_valid() && !selector(*ciEvent)) { ++ciEvent; } if (ciEvent.is_valid()) { cHandle = ciEvent; return OK; } else { cHandle.set_null(); return ERROR; } } //============================================================================= // ROOT I/O Hook //============================================================================= CdfClassImp(Pes2dClusterColl)