Gaudi Framework, version v23r5

Home   Generated: Wed Nov 28 2012
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RCWNTupleCnv.h
Go to the documentation of this file.
1 // $Id: RCWNTupleCnv.h,v 1.7 2006/11/30 15:04:07 mato Exp $
2 #ifndef ROOTHISTCNV_RCWNTCNV_H
3 #define ROOTHISTCNV_RCWNTCNV_H 1
4 
5 
6 // Include files
8 #include "RNTupleCnv.h"
9 #include <string>
10 
11 #include "TFile.h"
12 #include "TTree.h"
13 
14 
15 // Forward declarations
16 template <class TYPE> class CnvFactory;
17 
18 namespace RootHistCnv {
19 
26  class RCWNTupleCnv : public RNTupleCnv {
27 
28  friend class CnvFactory<RCWNTupleCnv>;
29 
30  public:
32  static const CLID& classID() {
33  return CLID_ColumnWiseTuple;
34  }
37  }
39  virtual ~RCWNTupleCnv() {
40  }
41  protected:
43  virtual StatusCode load(TTree* tree, INTuple*& refpObject);
45  virtual StatusCode book(const std::string& desc, INTuple* pObject, TTree*& tree);
47  virtual StatusCode writeData(TTree* rtree, INTuple* pObject);
49  virtual StatusCode readData(TTree* rtree, INTuple* pObject, long ievt);
50 
51  template <class T>
52  size_t saveItem(char* target, const T* src, size_t len) {
53  long* tar = (long*)target;
54  for ( size_t i = 0; i < len; i++ ) {
55  *(tar++) = long( *(src++));
56  }
57  return sizeof(long)*len;
58  }
59  template <typename T>
60  size_t saveItem(char* target, T* src, size_t len) {
61  memcpy(target, src, sizeof(T)*len);
62  return sizeof(T)*len;
63  }
64 
65  template <class T>
66  size_t loadItem(char* src, T* tar, size_t len) {
67  long* s = (long*)src;
68  for ( size_t i = 0; i < len; i++ ) {
69  *(tar++) = T( *(s++));
70  }
71  return sizeof(long)*len;
72  }
73  size_t loadItem(char* src, bool* tar, size_t len) {
74  long* s = (long*)src;
75  for ( size_t i = 0; i < len; i++ ) {
76  *(tar++) = (*(s++)) ? true : false;
77  }
78  return sizeof(long)*len;
79  }
80  size_t loadItem(char* src, float* target, size_t len) {
81  memcpy(target, src, sizeof(float)*len);
82  return sizeof(float)*len;
83  }
84  size_t loadItem(char* src, double* target, size_t len) {
85  memcpy(target, src, sizeof(double)*len);
86  return sizeof(double)*len;
87  }
88  size_t loadItem(char* src, long* target, size_t len) {
89  memcpy(target, src, sizeof(long)*len);
90  return sizeof(long)*len;
91  }
92  size_t loadItem(char* src, unsigned long* target, size_t len) {
93  memcpy(target, src, sizeof(unsigned long)*len);
94  return sizeof(unsigned long)*len;
95  }
96 
97  };
98 } // namespace RootHistCnv
99 
100 
101 #endif // ROOTHISTCNV_RCWNTCNV_H

Generated at Wed Nov 28 2012 12:17:19 for Gaudi Framework, version v23r5 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004