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

In This Package:

NTupleInfo.h

Go to the documentation of this file.
00001 #ifdef __cplusplus
00002 
00003 #ifndef HBOOKCNV_NTUPLEINFO_H
00004 #define HBOOKCNV_NTUPLEINFO_H 1
00005 
00006 #include "GaudiKernel/Kernel.h"
00007 #include "GaudiKernel/NTuple.h"
00008 
00009 class NTUPLEINFO   {
00010 public:
00011   long    id;
00012   char    title[128];
00013   char    rzdir[256];
00014   long    numEnt;
00015   long    numVar;
00016   char    block[32];
00017 
00018   //  struct _var   {
00019     char     name[512][64];
00020     long     dim[512];
00021     long     theDim[512][5];
00022     long     hasIndex[512];
00023     char     index[512][64];
00024     char     type[512];
00025     long     size[512];
00026     long     hasRange[512];
00027     long     irange[512][2];
00028     double   frange[512][2];
00029     template <class TYPE>
00030     void getBounds(long i, TYPE& min, TYPE& max, TYPE& null)  const  {
00031       if ( hasRange )   {
00032         min = (type[i]=='R') ? TYPE(frange[i][0]) : TYPE(irange[i][0]);
00033         max = (type[i]=='R') ? TYPE(frange[i][1]) : TYPE(irange[i][1]);
00034       }
00035       else  {
00036         min = NTuple::Range<TYPE>::min();
00037         max = NTuple::Range<TYPE>::max();
00038       }
00039       null = TYPE(0);
00040     }
00041     TEMPLATE_SPECIALIZATION
00042     void getBounds(long /*i*/, bool& min, bool& max, bool& null )  const  {
00043       min = null = false;
00044       max = true;
00045     }
00046     template <class TYPE>
00047     bool isRangeWithin(long i, TYPE min, TYPE max)  const  {
00048       if ( hasRange[i] )   {
00049         return min <= (TYPE)irange[i][0] && (TYPE)irange[i][1] <= max;
00050       }
00051       else if ( type[i] == 'I' || type[i] == 'U' )   {
00052         return NTuple::Range<TYPE>::min() <= min && NTuple::Range<TYPE>::max() >= max;
00053       }
00054       return false;
00055     }
00056     TEMPLATE_SPECIALIZATION
00057       bool isRangeWithin(long i, float /* min */, float /* max*/ )  const  {
00058       if ( size[i] == 32 ) return true;
00059       return false;
00060     }
00061     TEMPLATE_SPECIALIZATION
00062       bool isRangeWithin(long i, double /* min */, double /* max */ )  const  {
00063       if ( size[i] == 64 ) return true;
00064       return false;
00065     }
00066    TEMPLATE_SPECIALIZATION
00067     bool isRangeWithin(long /* i */ , bool min, bool max)  const  {
00068       return min == false && max == true;
00069     }
00070     long idist(long i)   const   {
00071         return irange[i][1] - irange[i][0];
00072     }
00073     double fdist(long i)  const    {
00074         return frange[i][1] - frange[i][0];
00075     }
00076   //  } var[512];
00077 
00078   long getIndex(const char* nam)  const  {
00079     if ( nam[0] != 0 )   {
00080       for ( int i = 0; i < numVar; i++ )    {
00081         if ( strncmp(name[i], nam, sizeof(name[i])) == 0 )   {
00082           return i;
00083         }
00084       }
00085     }
00086     return -1;
00087   }
00088 };
00089 #endif // HBOOKCNV_NTUPLEINFO_H
00090 
00091 #else
00092 #ifdef _WIN32
00093         STRUCTURE /NTUPLEVAR/
00094           CHARACTER*64 NAME
00095           INTEGER      NDIM
00096            INTEGER      THEDIM(5)
00097           INTEGER      HASINDEX
00098            CHARACTER*64 INDEX
00099           CHARACTER*1  TYPE
00100            INTEGER      SIZE
00101           INTEGER      HASRANGE
00102           UNION
00103             MAP
00104               INTEGER IMIN, IMAX
00105             END MAP
00106             MAP
00107               REAL*8  FMIN, FMAX
00108             END MAP
00109           END UNION
00110         END STRUCTURE
00111 
00112         STRUCTURE /NTUPLEINFO/
00113           INTEGER       ID
00114           CHARACTER*128 TITLE
00115           INTEGER       NOENT
00116           INTEGER       NDIM
00117            CHARACTER*8   BLOCK 
00118            RECORD /NTUPLEVAR/ VAR(512)
00119         END STRUCTURE
00120 #else
00121 c        TYPE NTUPLEVAR
00122           CHARACTER*64 VNAME(512)
00123           INTEGER      VNDIM(512)
00124           INTEGER      VTHEDIM(512,5)
00125           INTEGER      VHASINDEX(512)
00126           CHARACTER*64 VINDEX(512)
00127           CHARACTER*1  VTYPE(512)
00128           INTEGER      VSIZE(512)
00129           INTEGER      VHASRANGE(512)
00130 c          UNION
00131 c            MAP
00132   INTEGER VIMIN(512), VIMAX(512)
00133 c            END MAP
00134 c            MAP
00135   REAL*8  VFMIN(512), VFMAX(512)
00136 c            END MAP
00137 c          END UNION
00138 c        END TYPE NTUPLEVAR
00139 
00140 c        TYPE NTUPLEINFO
00141           INTEGER       NTID
00142           CHARACTER*128 NTTITLE
00143           INTEGER       NTNOENT
00144           INTEGER       NTNDIM
00145           CHARACTER*8   NTBLOCK 
00146 c          TYPE(NTUPLEVAR) VAR(512)
00147 c        END TYPE NTUPLEINFO
00148        COMMON/NTUPLEINFO/VNAME,VNDIM,VTHEDIM,
00149      &  VHASINDEX,VINDEX,VTYPE,VSIZE,
00150      &  VHASRANGE, VIMIN, VIMAX, VFMIN, VFMAX,
00151      &  NTID, NTTITLE, NTNDIM, NTBLOCK
00152 #endif
00153 #endif
| 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