Gaudi Framework, version v22r2

Home   Generated: Tue May 10 2011
Classes | Public Member Functions | Static Public Member Functions

RootHistCnv::RHistogramCnv< T, S, Q > Class Template Reference

Generic converter to save/read AIDA_ROOT histograms using ROOT. More...

#include <RHistogramCnv.h>

Inheritance diagram for RootHistCnv::RHistogramCnv< T, S, Q >:
Inheritance graph
[legend]
Collaboration diagram for RootHistCnv::RHistogramCnv< T, S, Q >:
Collaboration graph
[legend]

List of all members.

Classes

struct  TTH

Public Member Functions

virtual StatusCode createObj (IOpaqueAddress *pAddr, DataObject *&refpObj)
 Create the transient representation of an object.
virtual StatusCode updateObj (IOpaqueAddress *, DataObject *)
 Update the transient object from the other representation.
virtual TObject * createPersistent (DataObject *pObj)
 Create the persistent representation of the histogram object.
 RHistogramCnv (ISvcLocator *svc)
 Standard constructor.
virtual ~RHistogramCnv ()

Static Public Member Functions

static const CLIDclassID ()
 Inquire class type.

Detailed Description

template<typename T, typename S, typename Q>
class RootHistCnv::RHistogramCnv< T, S, Q >

Generic converter to save/read AIDA_ROOT histograms using ROOT.

This converter shortcuts the AIDA binding and takes advantage of the underlying implementation of transient histograms using ROOT.

Note: THxY::Copy cannot be used - only THxY::Add !

Author:
Markus Frank

Definition at line 30 of file RHistogramCnv.h.


Constructor & Destructor Documentation

template<typename T , typename S , typename Q >
RootHistCnv::RHistogramCnv< T, S, Q >::RHistogramCnv ( ISvcLocator svc ) [inline]

Standard constructor.

Definition at line 88 of file RHistogramCnv.h.

: RConverter(classID(), svc) {}
template<typename T , typename S , typename Q >
virtual RootHistCnv::RHistogramCnv< T, S, Q >::~RHistogramCnv (  ) [inline, virtual]

Definition at line 89 of file RHistogramCnv.h.

{}

Member Function Documentation

const CLID & RootHistCnv::RootHistCnvH3DCnv::classID (  ) [static]

Inquire class type.

Definition at line 5 of file RHistogramCnv.cpp.

{
template<typename T , typename S , typename Q >
virtual StatusCode RootHistCnv::RHistogramCnv< T, S, Q >::createObj ( IOpaqueAddress pAddr,
DataObject *&  refpObj 
) [inline, virtual]

Create the transient representation of an object.

Reimplemented from Converter.

Definition at line 36 of file RHistogramCnv.h.

                                                                              {
      refpObj = ROOT::Reflex::PluginService::CreateWithId<DataObject*>(objType());
      RootObjAddress *r = dynamic_cast<RootObjAddress*>(pAddr);
      Q* h = dynamic_cast<Q*>(refpObj);
      if ( r && h )   {
        // Need to flip representation .... clumsy for the time being, because
        // THXY constructor has no "generic" copy constructor
        std::auto_ptr<T> p(new T());
        S *s = dynamic_cast<S*>(r->tObj());
        if ( s && p.get() )  {
          TTH<S>* casted = (TTH<S>*)s;
          TArray* a = dynamic_cast<TArray*>(s);
          casted->CopyH(*p);
          if ( 0 != a )  {
            p->Set(a->GetSize());
            p->Reset();
            p->Add(s);
            h->adoptRepresentation(p.release());
            return StatusCode::SUCCESS;
          }
        }
      }
      return error("Cannot create histogram - invalid address.");
    }
template<typename T , typename S , typename Q >
virtual TObject* RootHistCnv::RHistogramCnv< T, S, Q >::createPersistent ( DataObject pObj ) [inline, virtual]

Create the persistent representation of the histogram object.

Reimplemented from RootHistCnv::RConverter.

Definition at line 65 of file RHistogramCnv.h.

                                                          {
      Q* h = dynamic_cast<Q*>(pObj);
      if ( 0 != h ) {
        T *r = dynamic_cast<T*>(h->representation());
        if ( r )   {
          T* c = new T();
          TArray* a = dynamic_cast<TArray*>(r);
          ((TTH<S>*)r)->CopyH(*c);
          if ( 0 != a )  {
            c->Set(a->GetSize());
            c->Reset();
            c->Add(r);
            c->SetName(pObj->registry()->name().c_str()+1);
            return c;
          }
        }
      }
      error("Histogram object is invalid!");
      return 0;
    }
template<typename T , typename S , typename Q >
virtual StatusCode RootHistCnv::RHistogramCnv< T, S, Q >::updateObj ( IOpaqueAddress ,
DataObject  
) [inline, virtual]

Update the transient object from the other representation.

Reimplemented from Converter.

Definition at line 61 of file RHistogramCnv.h.

                                                                                       {
      return StatusCode::SUCCESS;
    }

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Tue May 10 2011 18:55:46 for Gaudi Framework, version v22r2 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004