From 721a44f217b204e1f4410f7ec7af647d81f21f05 Mon Sep 17 00:00:00 2001 From: Scott Snyder <scott.snyder@cern.ch> Date: Thu, 21 Apr 2016 14:51:26 +0200 Subject: [PATCH] Suppress unused variable warning from CLHEP/Random/Randomize.h. (AtlasSealCLHEP-00-01-13) * Tagging AtlasSealCLHEP-00-01-13. * AtlasSealCLHEP/CLHEP_Random.h: Suppress unused variable warning from CLHEP/Random/Randomize.h. * Tagging AtlasSealCLHEP-00-01-12. * src/OldCLHEPStreamers.cxx: Remove #define private. * Tagging AtlasSealCLHEP-00-01-11. * Add unit test for OldCLHEPStreamers. 2016-04-18 scott snyder <snyder@bnl.gov> * Tagging AtlasSealCLHEP-00-01-10. * src/AtlasSealCLHEPDict_dict_fixes.cxx: Remove obsolete file (fixes cppcheck warnings). --- .../AtlasSealCLHEP/CLHEP_Random.h | 6 + Database/AtlasSealCLHEP/CMakeLists.txt | 9 +- Database/AtlasSealCLHEP/cmt/requirements | 5 + .../share/OldCLHEPStreamers_test.ref | 7 + .../src/AtlasSealCLHEPDict_dict_fixes.cxx | 132 ------------- .../AtlasSealCLHEP/src/OldCLHEPStreamers.cxx | 42 ++--- .../test/OldCLHEPStreamers_test.cxx | 173 ++++++++++++++++++ 7 files changed, 217 insertions(+), 157 deletions(-) create mode 100644 Database/AtlasSealCLHEP/share/OldCLHEPStreamers_test.ref delete mode 100755 Database/AtlasSealCLHEP/src/AtlasSealCLHEPDict_dict_fixes.cxx create mode 100644 Database/AtlasSealCLHEP/test/OldCLHEPStreamers_test.cxx diff --git a/Database/AtlasSealCLHEP/AtlasSealCLHEP/CLHEP_Random.h b/Database/AtlasSealCLHEP/AtlasSealCLHEP/CLHEP_Random.h index d0eda76f9e7..64c492f8246 100755 --- a/Database/AtlasSealCLHEP/AtlasSealCLHEP/CLHEP_Random.h +++ b/Database/AtlasSealCLHEP/AtlasSealCLHEP/CLHEP_Random.h @@ -3,6 +3,12 @@ */ #include "CLHEP/Random/Randomize.h" +#include "CxxUtils/unused.h" + +namespace { + // Suppress unused variable warning from clhep header. + static const int UNUSED(HepRandomGenActive_x) = CLHEP::HepRandomGenActive; +} //----Functions missing in the implementation and required by the dictionary // [ Bug #1806 ] Missing method implementations diff --git a/Database/AtlasSealCLHEP/CMakeLists.txt b/Database/AtlasSealCLHEP/CMakeLists.txt index f8cab648725..83580582580 100644 --- a/Database/AtlasSealCLHEP/CMakeLists.txt +++ b/Database/AtlasSealCLHEP/CMakeLists.txt @@ -7,7 +7,8 @@ atlas_subdir( AtlasSealCLHEP ) # Declare the package's dependencies: atlas_depends_on_subdirs( PUBLIC - Database/AthenaPOOL/AthenaPoolServices ) + Database/AthenaPOOL/AthenaPoolServices + Control/CxxUtils ) # External dependencies: find_package( CLHEP ) @@ -33,3 +34,9 @@ atlas_add_dictionary( AtlasSealCLHEPDict atlas_install_python_modules( python/*.py ) atlas_install_joboptions( share/*.py ) +atlas_add_test( OldCLHEPStreamers_test + SOURCES + test/OldCLHEPStreamers_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasSealCLHEP ) + diff --git a/Database/AtlasSealCLHEP/cmt/requirements b/Database/AtlasSealCLHEP/cmt/requirements index aa6538ac2d3..3a550af9a59 100755 --- a/Database/AtlasSealCLHEP/cmt/requirements +++ b/Database/AtlasSealCLHEP/cmt/requirements @@ -4,6 +4,7 @@ author RD Schaffer <R.D.Schaffer@cern.ch> use AtlasPolicy AtlasPolicy-* use AtlasCLHEP AtlasCLHEP-* External +use CxxUtils CxxUtils-* Control use AthenaPoolServices AthenaPoolServices-* Database/AthenaPOOL @@ -36,3 +37,7 @@ apply_pattern declare_joboptions files="*.py" apply_pattern declare_python_modules files="*.py" +private + +use TestTools TestTools-* AtlasTest +apply_pattern UnitTest_run unit_test=OldCLHEPStreamers diff --git a/Database/AtlasSealCLHEP/share/OldCLHEPStreamers_test.ref b/Database/AtlasSealCLHEP/share/OldCLHEPStreamers_test.ref new file mode 100644 index 00000000000..efca4e07663 --- /dev/null +++ b/Database/AtlasSealCLHEP/share/OldCLHEPStreamers_test.ref @@ -0,0 +1,7 @@ +testVec3d +testPoint3d +testMatrix +testLorVec +test3Vector +testBasicVector +testTransform3DVector diff --git a/Database/AtlasSealCLHEP/src/AtlasSealCLHEPDict_dict_fixes.cxx b/Database/AtlasSealCLHEP/src/AtlasSealCLHEPDict_dict_fixes.cxx deleted file mode 100755 index f17f74bb10f..00000000000 --- a/Database/AtlasSealCLHEP/src/AtlasSealCLHEPDict_dict_fixes.cxx +++ /dev/null @@ -1,132 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Generated at Mon Jul 11 17:45:44 2005. Do not modify it - -#ifdef _WIN32 -#pragma warning ( disable : 4786 ) -#ifndef LCGDICT_STRING -#include <string> // Included here since it is sensitive to private->public trick -#endif -#endif -#define private public -#define protected public -#include "../AtlasSealCLHEP/AtlasSealCLHEPDict.h" -#undef private -#undef protected -#include "ReflectionBuilder/ReflectionBuilder.h" -#include "ReflectionBuilder/CollectionProxy.h" -#include <typeinfo> -using namespace seal::reflect; - -//------Dictionary for class Transform3D ------------------------------- -class HepTransform3D_dict { - public: - HepTransform3D_dict(); - static void* constructor_2212( void* ); - static void destructor( void* o ) { ((HepGeom::Transform3D*)o)->~Transform3D(); } -}; -HepTransform3D_dict::HepTransform3D_dict() { - ClassBuilder _c_("HepTransform3D", "", typeid(HepGeom::Transform3D), sizeof(HepGeom::Transform3D),std::vector<const std::type_info*>(), false, NOCONTAINER, 0, PUBLIC); - _c_.addField("xx", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->xx_)-64, PROTECTED ); - _c_.addField("xy", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->xy_)-64, PROTECTED ); - _c_.addField("xz", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->xz_)-64, PROTECTED ); - _c_.addField("dx", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->dx_)-64, PROTECTED ); - _c_.addField("yx", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->yx_)-64, PROTECTED ); - _c_.addField("yy", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->yy_)-64, PROTECTED ); - _c_.addField("yz", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->yz_)-64, PROTECTED ); - _c_.addField("dy", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->dy_)-64, PROTECTED ); - _c_.addField("zx", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->zx_)-64, PROTECTED ); - _c_.addField("zy", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->zy_)-64, PROTECTED ); - _c_.addField("zz", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->zz_)-64, PROTECTED ); - _c_.addField("dz", "double", "", (size_t)(&((HepGeom::Transform3D*)64)->dz_)-64, PROTECTED ); - _c_.addMethod("HepTransform3D", "", "HepTransform3D", constructor_2212, PUBLIC); - _c_.addMethod("~HepTransform3D", "", destructor, PUBLIC); - _c_.build(); -} - -//------Stub functions for class Transform3D ------------------------------- -void* HepTransform3D_dict::constructor_2212( void* mem) { - return ::new(mem) HepGeom::Transform3D(); -} - -//------Dictionary for class HepLorentzVector ------------------------------- -class HepLorentzVector_dict { - public: - HepLorentzVector_dict(); - static void* constructor_7008( void* ); - static void destructor( void* o ) { ((CLHEP::HepLorentzVector*)o)->~HepLorentzVector(); } -}; -HepLorentzVector_dict::HepLorentzVector_dict() { - ClassBuilder _c_("HepLorentzVector", "", typeid(CLHEP::HepLorentzVector), sizeof(CLHEP::HepLorentzVector),std::vector<const std::type_info*>(), false, NOCONTAINER, 0, PUBLIC); - _c_.addField("pp", "Hep3Vector", "", (size_t)(&((CLHEP::HepLorentzVector*)64)->pp)-64, PRIVATE ); - _c_.addField("ee", "double", "", (size_t)(&((CLHEP::HepLorentzVector*)64)->ee)-64, PRIVATE ); - _c_.addMethod("HepLorentzVector", "", "HepLorentzVector", constructor_7008, PUBLIC); - _c_.addMethod("~HepLorentzVector", "", destructor, PUBLIC); - _c_.build(); -} - -//------Stub functions for class HepLorentzVector ------------------------------- -void* HepLorentzVector_dict::constructor_7008( void* mem) { - return ::new(mem) CLHEP::HepLorentzVector(); -} - - -//------Dictionary for class Hep3Vector ------------------------------- -class Hep3Vector_dict { - public: - Hep3Vector_dict(); - static void* constructor_x46( void* ); - static void destructor( void* o ) { ((CLHEP::Hep3Vector*)o)->~Hep3Vector(); } -}; -Hep3Vector_dict::Hep3Vector_dict() { - ClassBuilder _c_("Hep3Vector", "", typeid(CLHEP::Hep3Vector), sizeof(CLHEP::Hep3Vector),std::vector<const std::type_info*>(), false, NOCONTAINER, 0, PUBLIC); - _c_.addField("dx", "double", "", (size_t)(&((CLHEP::Hep3Vector*)64)->dx)-64, PROTECTED ); - _c_.addField("dy", "double", "", (size_t)(&((CLHEP::Hep3Vector*)64)->dy)-64, PROTECTED ); - _c_.addField("dz", "double", "", (size_t)(&((CLHEP::Hep3Vector*)64)->dz)-64, PROTECTED ); - _c_.addMethod("Hep3Vector", "", "CLHEP::Hep3Vector", constructor_x46, PUBLIC); - _c_.addMethod("~Hep3Vector", "", destructor, PUBLIC); - _c_.build(); -} - -//------Stub functions for class Hep3Vector ------------------------------- - -void* Hep3Vector_dict::constructor_x46( void* mem) { - return ::new(mem) CLHEP::Hep3Vector(); -} - -//--------- Bootstrap for building classes ------ - -namespace { - struct Dictionaries { - Dictionaries() { - HepTransform3D_dict(); - HepLorentzVector_dict(); - Hep3Vector_dict(); - Class::resolvePending(); - } - }; - static Dictionaries instance; -} - - -//--------- Capabilities specification ------ - - -// This file has been generated by lcgdict with the --capabilities option -static const char* clnames[] = { -//--Begin AtlasSealCLHEPDictFix - "LCGDict/HepTransform3D", - "LCGDict/HepLorentzVector", - "LCGDict/Hep3Vector" -//--End AtlasSealCLHEPDict -//--Final End -}; - -extern "C" void SEAL_CAPABILITIES (const char**& names, int& n ) -{ - names = clnames; - n = sizeof(clnames)/sizeof(char*); -} - diff --git a/Database/AtlasSealCLHEP/src/OldCLHEPStreamers.cxx b/Database/AtlasSealCLHEP/src/OldCLHEPStreamers.cxx index 97b059c5ae4..d0bc3a6e133 100755 --- a/Database/AtlasSealCLHEP/src/OldCLHEPStreamers.cxx +++ b/Database/AtlasSealCLHEP/src/OldCLHEPStreamers.cxx @@ -2,15 +2,9 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public -#define protected public #include "CLHEP/Matrix/Matrix.h" #include "CLHEP/Geometry/Transform3D.h" -#undef private -#undef protected - #include "AtlasSealCLHEP/OldCLHEPStreamers.h" - #include <iostream> @@ -22,11 +16,12 @@ CLHEPMatrixStreamer::CopyOldToNew(const OldHepMatrix &old_matx, CLHEP::HepMatrix // std::cout << " matrix nrow="<< old_matx.nrow << std::endl; // std::cout << " matrix ncol="<< old_matx.ncol << std::endl; // std::cout << " matrix m-size="<< old_matx.m.size() << std::endl; - new_matx.m = old_matx.m; // ---- FIXME - new_matx.size_ = old_matx.size; + // intentional swap! somehow necessary for reading root3 data - new_matx.nrow = old_matx.ncol; - new_matx.ncol = old_matx.nrow; + CLHEP::HepMatrix mat (old_matx.ncol, old_matx.nrow); + double* m = &mat[0][0]; + std::copy (old_matx.m.begin(), old_matx.m.end(), m); + std::swap (mat, new_matx); } @@ -73,6 +68,14 @@ CLHEPBasicVectorStreamer::CopyOldToNew(const OldBasicVector3D &old_vec, HepGeom: +namespace { +class Transform3DInit + : public HepGeom::Transform3D +{ +public: + using HepGeom::Transform3D::setTransform; +}; +} @@ -88,20 +91,11 @@ CLHEPTransform3DStreamer::CopyOldToNew(const OldHepTransform3D &old_tr, HepGeom: std::cout << " TRFM= " << old_tr.m5 <<"," << old_tr.m6 <<"," << old_tr.m7 <<"," << old_tr.m8 << std::endl; std::cout << " TRFM= " << old_tr.m9 <<"," << old_tr.m10<<"," << old_tr.m11<<"," << old_tr.m12<< std::endl; #endif - new_tr.xx_ = old_tr.m4; - new_tr.xy_ = old_tr.m5; - new_tr.xz_ = old_tr.m6; - new_tr.dx_ = old_tr.m1; - - new_tr.yx_ = old_tr.m7; - new_tr.yy_ = old_tr.m8; - new_tr.yz_ = old_tr.m9; - new_tr.dy_ = old_tr.m2; - - new_tr.zx_ = old_tr.m10; - new_tr.zy_ = old_tr.m11; - new_tr.zz_ = old_tr.m12; - new_tr.dz_ = old_tr.m3; + Transform3DInit& new_init = static_cast<Transform3DInit&> (new_tr); + new_init.setTransform + (old_tr.m4, old_tr.m5, old_tr.m6, old_tr.m1, // xx, xy, xz, dx + old_tr.m7, old_tr.m8, old_tr.m9, old_tr.m2, // yx, yy, yz, dy + old_tr.m10, old_tr.m11, old_tr.m12, old_tr.m3); // zx, zy, zz, dz #if( TRANSF_DBGL > 1 ) std::cout << " TRFM new= " << new_tr.xx() <<"," << new_tr.xy() <<"," << new_tr.xz() <<"," << new_tr.dx() << std::endl; std::cout << " TRFM new= " << new_tr.yx() <<"," << new_tr.yy() <<"," << new_tr.yz() <<"," << new_tr.dy() << std::endl; diff --git a/Database/AtlasSealCLHEP/test/OldCLHEPStreamers_test.cxx b/Database/AtlasSealCLHEP/test/OldCLHEPStreamers_test.cxx new file mode 100644 index 00000000000..f22701f763d --- /dev/null +++ b/Database/AtlasSealCLHEP/test/OldCLHEPStreamers_test.cxx @@ -0,0 +1,173 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file AtlasSealCLHEP/test/OldCLHEPStreamers_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2016 + * @brief Regression tests for OldCLHEPStreamers + */ + + +#undef NDEBUG +#include "CLHEP/Matrix/Matrix.h" +#include "CLHEP/Geometry/Transform3D.h" +#include "AtlasSealCLHEP/OldCLHEPStreamers.h" +#include <cassert> +#include <iostream> + + +void testVec3d() +{ + std::cout << "testVec3d\n"; + OldHepVector3D v1; + v1.vec = CLHEP::Hep3Vector (3, 4, 5); + HepGeom::Vector3D<double> v2; + CLHEPVec3dStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.x() == 3); + assert (v2.y() == 4); + assert (v2.z() == 5); +} + + +void testPoint3d() +{ + std::cout << "testPoint3d\n"; + OldHepPoint3D v1; + v1.setX (10); + v1.setY (11); + v1.setZ (12); + HepGeom::Point3D<double> v2; + CLHEPPoint3dStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.x() == 10); + assert (v2.y() == 11); + assert (v2.z() == 12); +} + + +class MyMatrix + : public CLHEP::HepMatrix +{ +public: + using CLHEP::HepMatrix::num_size; +}; + +void testMatrix() +{ + std::cout << "testMatrix\n"; + OldHepMatrix v1; + v1.nrow = 3; + v1.ncol = 2; + v1.size = 6; + v1.m.assign ({1,2,3,4,5,6}); + MyMatrix v2; + CLHEPMatrixStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.num_size() == 6); + assert (v2.num_row() == 2); + assert (v2.num_col() == 3); + assert (v2[0][0] == 1); + assert (v2[0][1] == 2); + assert (v2[0][2] == 3); + assert (v2[1][0] == 4); + assert (v2[1][1] == 5); + assert (v2[1][2] == 6); +} + + +void testLorVec() +{ + std::cout << "testLorVec\n"; + OldHepLorentzVector v1; + v1.ee = 21; + v1.pp = CLHEP::Hep3Vector (22, 23, 24); + CLHEP::HepLorentzVector v2; + CLHEPLorVecStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.e() == 21); + assert (v2.x() == 22); + assert (v2.y() == 23); + assert (v2.z() == 24); +} + + +void test3Vector() +{ + std::cout << "test3Vector\n"; + OldHep3Vector v1; + v1.dx = 31; + v1.dy = 32; + v1.dz = 33; + CLHEP::Hep3Vector v2; + CLHEP3VectorStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.x() == 31); + assert (v2.y() == 32); + assert (v2.z() == 33); +} + + +void testBasicVector() +{ + std::cout << "testBasicVector\n"; + OldBasicVector3D v1; + v1.vec = CLHEP::Hep3Vector (41, 42, 43); + HepGeom::BasicVector3D<double> v2 (1, 2, 3); + CLHEPBasicVectorStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.x() == 41); + assert (v2.y() == 42); + assert (v2.z() == 43); +} + + +void testTransform3DVector() +{ + std::cout << "testTransform3DVector\n"; + OldHepTransform3D v1; + v1.m1 = 51; + v1.m2 = 52; + v1.m3 = 53; + v1.m4 = 54; + v1.m5 = 55; + v1.m6 = 56; + v1.m7 = 57; + v1.m8 = 58; + v1.m9 = 59; + v1.m10 = 60; + v1.m11 = 61; + v1.m12 = 62; + HepGeom::Transform3D v2; + CLHEPTransform3DStreamer cnv; + cnv.CopyOldToNew (v1, v2); + assert (v2.dx() == 51); + assert (v2.dy() == 52); + assert (v2.dz() == 53); + assert (v2.xx() == 54); + assert (v2.xy() == 55); + assert (v2.xz() == 56); + assert (v2.yx() == 57); + assert (v2.yy() == 58); + assert (v2.yz() == 59); + assert (v2.zx() == 60); + assert (v2.zy() == 61); + assert (v2.zz() == 62); +} + + +int main() +{ + testVec3d(); + testPoint3d(); + testMatrix(); + testLorVec(); + test3Vector(); + testBasicVector(); + testTransform3DVector(); + return 0; +} + -- GitLab