Difference between revisions of "Serializing and deserializing root objects"

From GlueXWiki
Jump to: navigation, search
m
m
Line 10: Line 10:
 
ROOT TMessage objects can hold serialized ROOT objects.  They are filled via the write() method:
 
ROOT TMessage objects can hold serialized ROOT objects.  They are filled via the write() method:
  
 +
<pre>
 +
#include "TH1F.h"
 +
#include "TMessage.h"
  
 +
// create TMessage object that contains serialized version of hist object
 +
TMessage *tm = new TMessage(kMESS_OBJECT);
 +
tm->WriteObject(some_root_object);
  
 +
</pre>
  
  

Revision as of 14:19, 30 June 2009

Introduction

ROOT objects can be serialized to a byte array or reconstructed from the byte array quite easily. One reason to do this might be to store or transport ROOT objects in a way not supported by ROOT itself. An example is transport of a ROOT histogram from a producer to a consumer program via the cMsg package, a publish/subscribe messaging system that will be used extensively in the Hall D online monitoring system (see section on Example Programs below).


Serialize

ROOT TMessage objects can hold serialized ROOT objects. They are filled via the write() method:

#include "TH1F.h"
#include "TMessage.h"

// create TMessage object that contains serialized version of hist object
TMessage *tm = new TMessage(kMESS_OBJECT);
tm->WriteObject(some_root_object);


Deserialize

Example Programs

cMsgRootProducer.cc,cMsgRootConsumer.cc,Makefile Examples demonstrate transport via cMsg package.