The Gaudi Framework  v29r0 (ff2e7097)
NTupleInfo.h
Go to the documentation of this file.
1 #ifdef __cplusplus
2 
3 #ifndef HBOOKCNV_NTUPLEINFO_H
4 #define HBOOKCNV_NTUPLEINFO_H 1
5 
6 #include "GaudiKernel/Kernel.h"
7 #include "GaudiKernel/NTuple.h"
8 
9 class NTUPLEINFO
10 {
11 public:
12  long id;
13  char title[128];
14  char rzdir[256];
15  long numEnt;
16  long numVar;
17  char block[32];
18 
19  // struct _var {
20  char name[512][64];
21  long dim[512];
22  long theDim[512][5];
23  long hasIndex[512];
24  char index[512][64];
25  char type[512];
26  long size[512];
27  long hasRange[512];
28  long irange[512][2];
29  double frange[512][2];
30  template <class TYPE>
31  void getBounds( long i, TYPE& min, TYPE& max, TYPE& null ) const
32  {
33  if ( hasRange[i] ) {
34  min = ( type[i] == 'R' ) ? TYPE( frange[i][0] ) : TYPE( irange[i][0] );
35  max = ( type[i] == 'R' ) ? TYPE( frange[i][1] ) : TYPE( irange[i][1] );
36  } else {
39  }
40  null = TYPE( 0 );
41  }
42  TEMPLATE_SPECIALIZATION
43  void getBounds( long /*i*/, bool& min, bool& max, bool& null ) const
44  {
45  min = null = false;
46  max = true;
47  }
48  template <class TYPE>
49  bool isRangeWithin( long i, TYPE min, TYPE max ) const
50  {
51  if ( hasRange[i] ) {
52  return min <= (TYPE)irange[i][0] && (TYPE)irange[i][1] <= max;
53  } else if ( type[i] == 'I' || type[i] == 'U' ) {
54  return NTuple::Range<TYPE>::min() <= min && NTuple::Range<TYPE>::max() >= max;
55  }
56  return false;
57  }
58  TEMPLATE_SPECIALIZATION
59  bool isRangeWithin( long i, float /* min */, float /* max*/ ) const
60  {
61  if ( size[i] == 32 ) return true;
62  return false;
63  }
64  TEMPLATE_SPECIALIZATION
65  bool isRangeWithin( long i, double /* min */, double /* max */ ) const
66  {
67  if ( size[i] == 64 ) return true;
68  return false;
69  }
70  TEMPLATE_SPECIALIZATION
71  bool isRangeWithin( long /* i */, bool min, bool max ) const { return min == false && max == true; }
72  long idist( long i ) const { return irange[i][1] - irange[i][0]; }
73  double fdist( long i ) const { return frange[i][1] - frange[i][0]; }
74  // } var[512];
75 
76  long getIndex( const char* nam ) const
77  {
78  if ( nam[0] != 0 ) {
79  for ( int i = 0; i < numVar; i++ ) {
80  if ( strncmp( name[i], nam, sizeof( name[i] ) ) == 0 ) {
81  return i;
82  }
83  }
84  }
85  return -1;
86  }
87 };
88 #endif // HBOOKCNV_NTUPLEINFO_H
89 
90 #else
91 #ifdef _WIN32
92 STRUCTURE / NTUPLEVAR / CHARACTER * 64 NAME INTEGER NDIM INTEGER THEDIM( 5 ) INTEGER HASINDEX CHARACTER *
93  64 INDEX CHARACTER * 1 TYPE INTEGER SIZE INTEGER HASRANGE UNION MAP INTEGER IMIN,
94  IMAX END MAP MAP REAL * 8 FMIN,
95  FMAX END MAP END UNION END STRUCTURE
96 
97  STRUCTURE
98  / NTUPLEINFO / INTEGER ID CHARACTER * 128 TITLE INTEGER NOENT INTEGER NDIM CHARACTER * 8 BLOCK RECORD
99  / NTUPLEVAR / VAR( 512 ) END STRUCTURE
100 #else
101 c TYPE NTUPLEVAR CHARACTER * 64 VNAME( 512 ) INTEGER VNDIM( 512 ) INTEGER VTHEDIM( 512, 5 ) INTEGER
102  VHASINDEX( 512 ) CHARACTER
103  * 64 VINDEX( 512 ) CHARACTER * 1 VTYPE( 512 ) INTEGER VSIZE( 512 ) INTEGER VHASRANGE( 512 ) c UNION c MAP INTEGER
104  VIMIN( 512 ),
105  VIMAX( 512 ) c END MAP c MAP REAL * 8 VFMIN( 512 ),
106  VFMAX( 512 ) c END MAP c END UNION c END TYPE NTUPLEVAR
107 
108  c TYPE NTUPLEINFO INTEGER NTID CHARACTER
109  * 128 NTTITLE INTEGER NTNOENT INTEGER NTNDIM CHARACTER *
110  8 NTBLOCK c TYPE( NTUPLEVAR ) VAR( 512 ) c END TYPE NTUPLEINFO COMMON / NTUPLEINFO / VNAME,
111  VNDIM, VTHEDIM, &VHASINDEX, VINDEX, VTYPE, VSIZE, &VHASRANGE, VIMIN, VIMAX, VFMIN, VFMAX, &NTID, NTTITLE, NTNDIM,
112  NTBLOCK
113 #endif
114 #endif
c TYPE NTUPLEVAR CHARACTER INTEGER NTTITLE
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER VSIZE
Definition: NTupleInfo.h:111
static TYP min()
Minimal number of data.
Definition: NTuple.h:85
c TYPE NTUPLEVAR CHARACTER INTEGER VTHEDIM
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER VTYPE
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER & NTID
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER VNDIM
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER VINDEX
Definition: NTupleInfo.h:111
static TYP max()
Maximal number of data.
Definition: NTuple.h:87
c TYPE NTUPLEVAR CHARACTER INTEGER VIMAX
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER * VNAME(512) INTEGER VNDIM(512) INTEGER VTHEDIM(512
c TYPE NTUPLEVAR CHARACTER INTEGER VIMIN
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER VFMAX
Definition: NTupleInfo.h:111
T strncmp(T...args)
c TYPE NTUPLEVAR CHARACTER INTEGER VFMIN
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER & VHASRANGE
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER NTNDIM
Definition: NTupleInfo.h:111
c TYPE NTUPLEVAR CHARACTER INTEGER & VHASINDEX
Definition: NTupleInfo.h:111