// test harness #include "TestManager.h" #include "HepTuple/HepHBookNtuple.h" #include "HepTuple/HepNtuple.h" #include "HepTuple/Column.h" #include "HepTuple/Block.h" ZM_USING_NAMESPACE( zmht ) #include "ZMutility/iostream" Int4 c; Int4 func () { return c; } void readFunc (Int4 i) { c = i; } class Test { int _a; public: Int4 a() {return _a;}; void seta(Int4 f) { _a = f; }; }; #include #ifndef DBL_EPSILON #define DBL_EPSILON 2.2204460492503131E-16 #endif #define IS_DBL_EQUAL(a,b) ( a == b \ || ( ::fabs( (a) - (b) ) < 100*DBL_EPSILON \ || ( ::fabs( (a) - (b) ) / (b) ) < 100*DBL_EPSILON ) ) #include "ZMutility/fstream" USING( namespace std ) std::string Starter = "Starter"; std::string Ender = "Ender"; const int dim1 = 10; const int dim2 = 20; // under 1006 behavior with readColumn is weird :( #if 0 int nr1 = 2000; int nr2 = 2006; #else int nr1 = 50; int nr2 = 50; #endif HepNtuple& create ( HepFileManager * man, const string& name ) { HepNtuple& hep = man->ntuple(name); hep.setColumnWise(); hep.column("Col1",3.2,7.0); hep.columnArray("ColArray",2,(Float8)8).dimension(dim1,dim2); hep.columnDirect("ColAt",0); hep.columnDirect("ColAt2",0); return hep; } HepNtuple& create_start ( HepFileManager * man ) { Int4 atInt1 = 55; Float8 arr[dim1][dim2]; Int4 atInt2 = 55; Int4 i,j,k; for ( i = 0; i < dim1 ; i++) { for ( j = 0; j < dim2 ; j++ ) { arr[i][j] = 1.0; } } HepNtuple& hep = create ( man, Starter ); hep.columnAt("ColAt",&atInt1); hep.columnAt("ColAt2",&atInt2); hep.capture(); hep.storeCapturedData(); for (i=0; ifileName() << " to " << man2->fileName() << endl; HepNtuple& start = create_start( man1 ); check_start( start ); HepNtuple& end = create_end( man2 ); check_end( end, 0 ); Int4 start_nrow = start.nrows(); start.append( end ); check_start( start ); check_end ( start, start_nrow ); } int main (int argc, char** argv) { HepFileManager* files[3]; string managerType[3]; Int4 nFiles = 0; #ifdef USE_HBOOK files[nFiles] = OPEN_HBOOK_FILE("append"); managerType[nFiles] = "hbook"; if ( files[nFiles] != NULL ) nFiles++; #endif #ifdef USE_HISTOSCOPE files[nFiles] = OPEN_HISTO_FILE("append"); managerType[nFiles] = "histoscope"; if ( files[nFiles] != NULL ) nFiles++; #endif // Root does not handle ntuples yet #ifdef USE_ROOT #ifdef USE_ROOT files[nFiles] = OPEN_ROOT_FILE("append"); managerType[nFiles] = "root"; if ( files[nFiles] != NULL ) nFiles++; #endif Int4 i,j; for ( i = 0; i < nFiles; i++ ) { for ( j = 0; j < nFiles; j++ ) { if ( i!=j ) { string new_dir_i = string("from_")+managerType[j]; string new_dir_j = string("to_")+managerType[i]; files[i]->cd(); files[i]->mkdir( new_dir_i ); files[i]->cd( new_dir_i ); files[j]->cd(); files[j]->mkdir( new_dir_j ); files[j]->cd( new_dir_j ); } else { files[i]->cd(); files[i]->mkdir( "internal" ); files[i]->cd ( "internal" ); } test ( files[i], files[j] ); } } for ( i=0; i