| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

RCWNTupleCnv.h

Go to the documentation of this file.
00001 // $Id: RCWNTupleCnv.h,v 1.7 2006/11/30 15:04:07 mato Exp $
00002 #ifndef ROOTHISTCNV_RCWNTCNV_H
00003 #define ROOTHISTCNV_RCWNTCNV_H 1
00004 
00005 
00006 // Include files
00007 #include "GaudiKernel/Converter.h"
00008 #include "RNTupleCnv.h"
00009 #include <string>
00010 
00011 #include "TFile.h"
00012 #include "TTree.h"
00013 
00014 
00015 // Forward declarations
00016 template <class TYPE> class CnvFactory;
00017 
00018 
00019 
00020 namespace RootHistCnv {
00021 
00028   class RCWNTupleCnv : public RNTupleCnv {
00029 
00030     friend class CnvFactory<RCWNTupleCnv>;
00031 
00032   public:
00034     static const CLID& classID()    {
00035       return CLID_ColumnWiseTuple;
00036     }
00038     RCWNTupleCnv( ISvcLocator* svc ) : RNTupleCnv(svc, classID())    {
00039     }
00041     virtual ~RCWNTupleCnv()   {
00042     }
00043   protected:
00045     virtual StatusCode load(TTree* tree, INTuple*& refpObject);
00047     virtual StatusCode book(const std::string& desc, INTuple* pObject, TTree*& tree);
00049     virtual StatusCode writeData(TTree* rtree, INTuple* pObject);
00051     virtual StatusCode readData(TTree* rtree, INTuple* pObject, long ievt);
00052 
00053     template <class T> 
00054     size_t saveItem(char* target, const T* src, size_t len)   {
00055       long* tar = (long*)target;
00056       for ( size_t i = 0; i < len; i++ )   {
00057         *(tar++) = long( *(src++));
00058       }
00059       return sizeof(long)*len;
00060     }
00061     template <typename T>
00062     size_t saveItem(char* target, T* src, size_t len) {
00063       memcpy(target, src, sizeof(T)*len);
00064       return sizeof(T)*len;
00065     }
00066 
00067     template <class T> 
00068     size_t loadItem(char* src, T* tar, size_t len)   {
00069       long* s = (long*)src;
00070       for ( size_t i = 0; i < len; i++ )   {
00071         *(tar++) = T( *(s++));
00072       }
00073       return sizeof(long)*len;
00074     }
00075     size_t loadItem(char* src, bool* tar, size_t len)   {
00076       long* s = (long*)src;
00077       for ( size_t i = 0; i < len; i++ )   {
00078         *(tar++) = (*(s++)) ? true : false;
00079       }
00080       return sizeof(long)*len;
00081     }
00082     size_t loadItem(char* src, float* target, size_t len)   {
00083       memcpy(target, src, sizeof(float)*len);
00084       return sizeof(float)*len;
00085     }
00086     size_t loadItem(char* src, double* target, size_t len)   {
00087       memcpy(target, src, sizeof(double)*len);
00088       return sizeof(double)*len;
00089     }
00090     size_t loadItem(char* src, long* target, size_t len)   {
00091       memcpy(target, src, sizeof(long)*len);
00092       return sizeof(long)*len;
00093     }
00094     size_t loadItem(char* src, unsigned long* target, size_t len)   {
00095       memcpy(target, src, sizeof(unsigned long)*len);
00096       return sizeof(unsigned long)*len;
00097     }
00098 
00099   };
00100 }    // namespace RootHistCnv
00101 
00102  
00103 #endif    // ROOTHISTCNV_RCWNTCNV_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:57:44 2011 for RootHistCnv by doxygen 1.4.7