| # Gaudi Framework, version v23r0 |

Home |  | Generated: Mon Jan 30 2012

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 >:
[legend]
Collaboration diagram for RootHistCnv::RHistogramCnv< T, S, Q >:
[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 CLID & | classID ()
| 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:

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v23r0/RootHistCnv/src/RHistogramCnv.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v23r0/RootHistCnv/src/RHistogramCnv.cpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines