4.2.3 : - tools/sg/text_freetype : g++-8.1.0 : use the functions introduced below in glutess. - tools/tess_contour : g++-8.1.0 : use the functions introduced below in glutess. - tools/glutess/glutess : g++-8.1.0 : introduce five gluTessCallback_() functions to be able to avoid warnings : warning :cast between incompatible function types - test/cpp/test/lego_offscreen_zb.cpp : message about freetype in case of failure. 4.2.2 : g++-8.1.0 : fix warnings. - forit : (a__it) => a__it. - xml/tree : two const std::string& atb => const std::string& _atb to avoid shadow warnings. 4.2.1 : fix Coverity notifications. - wroot/MT_SET_MAX.icc : protect usage of null object in "return false" messages. - wroot/ntuple : tree : create_branch : add a null pointer check. - wroot/tree : create_column_vector : displace col null pointer up one line. - wroot/base_leaf : (protected) cp cstor : add some missing fields initialisation. - rroot/base_leaf : (protected) cp cstor : add some missing fields initialisation. 4.2.0 : correction to pass integration in Geant4 (for the 10.4) : - aida_ntuple : id_class() method. - ntuple_binding : add_column_cid() method. - wroot/branch : fill(), add_basket() : have a check "m_write_basket>=m_max_baskets". - wroot/mt_ntuple_column_wise : in add_row() and end_fill() : check m_cols.size() versus m_main_branches.size(). 4.1.0 : wroot : have material/corrections in order to do ntuple booking without the "ref" logic for all column types. - test/cpp/mt_ntuple.cpp : now an example with the "variable on column" logic for all column types. - test/cpp/mt_ntuple_ref.cpp : example with the "user variable ref" logic for all column types. 4.0.0 : changes in wroot, rroot in order to handle row wise ntuple in case of multi-thread or MPI. - wroot : branch::end_pfill : do not add empty basket. - wroot : ObjArray => obj_array, List => obj_list. - wroot : Windows : get_me() to avoid usage of *this in constructor. - wroot : icol : get_branch() return ref and not a pointer. - wroot : leaf_ref, leaf_string_ref, leaf_std_vector_ref : _ref logic to have same logic than for other drivers. - wroot : leaf : rm m_title field : mimick ROOT logic. - wroot : base_leaf : handle m_leaf_count object. - wroot : columns.icc : to put column code in common between ntuple and base_pntuple. - wroot : new file to support row wise ntuple for MT and MPI : SET_MAX.icc, base_pntuple_column_wise, base_pntuple_row_wise basket_add, impi_ntuple, imt_ntuple, mpi_basket_add, mpi_create_basket, mpi_ntuple_column_wise, mpi_ntuple_row_wise, mpi_protocol. - wroot : pntuple => mt_ntuple_column_wise, mpi_pntuple => mpi_ntuple_column_wise. - rroot : ntuple : handle row_wise. - rroot : base_leaf : handle m_is_range field, handle m_own_leaf_count. - rroot : leaf : handle leaf_count logic : it permits to store std::vector of basic type on a leaf. - rroot : named splitted in iros, object, list, obj_array, named. - rroot : buffer : read_object() : handle a trailing bool& a_created argument. It helps to know if the created object is managed or not. - rroot : Windows : get_me() to avoid usage of *this in constructor. - rroot : ObjArray => obj_array, List => obj_list. - ntuple_binding : handle class id in column_binding. - ntuple_booking : has_similar_layout() : to compare with another ntuple_booking object. Used in MT to be sure MT booking object as the same "layout" than the one coming from the main. - wcsv_ntuple : in _ref columns, pass user variable as const. - hdf5 : header : to write/read a "header" with general infos as the name of the writing library and the "data schema version.". - test/cpp : pwroot.cpp => mt_ntuple.cpp, wroot_pntuple.cpp => mt_ntuple_seq.cpp. - test/cpp : read_root.icc : used in mt_ntuple.cpp, mpi_ntuple.cpp to check consistency. - test/cpp : cern_root_read_rg_rbw.cpp : to check that the ntuple in .root files produced by mt_ntuple.cpp and mpi_ntuple.cpp are readable by CERN-ROOT. 3.7.0 : quiet some Coverity notifications. In default code, remove some "a_inc" logic in some classes. It comes from a revisit to the way we can decount static object deletion (by using an atexit logic in apps). - tools/mem : have most methods protected. In the static list(), have the s_list on the heap. It permits to have an atexit logic in apps that permits to count the deletion of static objects. - tools/cstr, putenv : #ifdef TOOLS_MEM the "a_inc" argument in str_dup. In put_env(), do not use this argument in default code. - tools/colorf, colors : #ifdef TOOLS_MEM the a_inc argument in constructor. In colors, have a coworking cpp TOOLS_MEM_ATEXIT logic so that this argument is not used in default code. - tools/lina/mat, mat4, vec3, vec4, vec4f : #ifdef TOOLS_MEM the a_inc argument in constructor. In sg/base_camera, have a coworking cpp TOOLS_MEM_ATEXIT logic so that this argument is not used in default code of id_orientation(). - test/cpp/viewplot.cpp : #ifdef TOOLS_MEM : example of an atexit final object counting. - tools/glutess/normal : static_ComputeNormal : remove Coverity warnings about not initialized minVert, maxVert variables. 3.6.0 : - mesh : Coverity 96394 : in __gl_meshDelete : return to the original code which is in fact ok! Coverity had been adused by (too much) clever C code. - sweep : Coverity 96379 : have "#ifndef NDEBUG" around fixedEdges++. - test/cpp/build : have : cppflags -DNDEBUG. - test/cpp/build : rm test/hdf5_threads.cpp for utest. - test/cpp/build : have use_dl for utest if using hdf5. 3.5.0 : Coverity fixes and test/cpp/hdf5_threads.cpp program. - hatcher.icc : 96393. Rm dead code. - bsf : 96392 : bsf() : initialize m_value. - hatcher.icc : 96393 : have a : delete [] listPoints; - plotter : 96389 : comment out some not used variables. - legend : 96388 : comment out some "rep_line" dead code. - plots : 96387, 96386 : fix an unneeded "if". - data_axis : 96385 : avoid a not needed test. - valop : 96380 : correct func_1() return logic. - sweep : 96379 : have assert(++fixedEdges==1) in two steps. - mesh : 96394 : in __gl_meshDelete : fix a eDel->Lface bad access. - test/cpp/hdf5_threads.cpp : to test HDF5 and threads. It needs a HDF5 lib built with "configure --enable-threadsafe". 3.3.0 : hdf5 : arrange to compile without -DH5_USE_16_API (then use 1.18 API if using hdf5/1.18.x). - tools/hdf5 : hdf5_h : tools_H5 : in order to compile hdf5 related code with 1.18 API. - tools/hdf5 : * : use tools_H5. - tools/h2file : use not_a_profile() in write/read_histo(). It permits to enforce that profiles must be used with write/read_profile() functions. - tools/ntuple : constructor for writing : supress the "bool write" argument. "bool compress, uint basket_size" args permit to sign a constructor for writing. - tools/ntuple : constructor for reading : suppress the "bool a_write,bool compress, uint basket_size" arguments that are not needed when reading. - tools/ntuple : constructor for reading : have a constructor with a tools::ntuple_binding argument. - tools/ntuple : have column_ref, std_vector_column_ref, column_ref classes. It permits to handle properly the binding of a user variable at write, but also at read. - test/cpp/use_hdf5 : comment out usage of -DH5_USE_16_API. - test/cpp/hdf5_ntuple.cpp : revisit ntuple constructors for writing and reading as described upper. - test/cpp/hdf5_ntuple.cpp : have an example of reading by using tools::ntuple_binding. - tools/wcsv_histo : tools::wcsv::hto : use not_a_profile(). Now this template will not compile if passing a profile. (For a profile someone has to use the tools::wcsv::pto template). - tools/histo/h1,h2,h3 : dummy not_a_profile() method to write templated function dedicated to histo but not intended for profile. - tools/utest : handle -no_ argument. - tools/lina/geom3 : some unsigned int => size_t. - tools/system : rmenv() => rm_env(). 3.2.0 : test/cpp/utest.cpp to do unitary tests. - test/cpp/utest : have test/viewplot_ttf.cpp test. It permits to test plotting with freetype. - test/cpp/utest : have test/lego_offscreen.cpp test. It permits to test 3D plotting with freetype. - WARNING : freetype related tests may not pass according the version of freetype. They do not pass with a : * 2.7.0 on my Mac * 2.5.5 on another Mac (macpro4). whilst it is ok with a : * 2.8.0 on my Mac * 2.5.2 on ubuntu * the 2.1.9 of softinex/ourex/freetype on Windows-10/64, ubuntu, macOS. - to build and execute freetype related tests : UNIX> ./build -expat -freetype utest.cpp UNIX> ./tools_test_utest (UNIX> ./tools_test_utest -verbose) To build and execute hdf5 related tests : UNIX> ./build -hdf5 utest.cpp UNIX> ./tools_test_utest To have the list of compiled tests : UNIX> ./tools_test_utest -list 3.1.0 : - test/cpp/cern_root_hdf5_ntuple.cpp : program to read the ntuple.hdf5 file produced with hdf5_ntuple.cpp and to plot a column projection by using CERN-ROOT/TH and TCanvas. - test/cpp/use_cern_root, setup_cern_root.sh, setup_cern_root.csh : to access CERN-ROOT to compile, link and run the cern_root_hdf5_ntuple.cpp program. - test/cpp/use_zip, use_thread : to put in common acces to zlib, thread for the various programs that use them. - test/sys/process, dir : for unitary test program. - test/cpp/utest.cpp, test/*.cpp : unitary test program. 3.0.0 : hdf5 write/read. contour plotting. w/r-root : handle branch_objet. Various modifs coming from inlib/exlib dev done for other applications : - tools/hdf : material to write/read histos and ntuple at the HDF5 file format. - test/cpp/hdf5_histos.cpp : example to write/read histos with HDF5. - test/cpp/hdf5_ntuple.cpp : example to write/read an ntuple with HDF5. - tools/ccontour, clist_contour, hatcher, hatcher.icc, tess_contour, valop : for plotting contours. - tools/sg/plotter : code to have contour plotting. - tools/spline : to have nice function plotting. - tools/rroot/branch_object, iobject, cids, fac, leaf : handle branch_object. - tools/rroot/tree_manip : find_leaf, find_branch_element, read_leaf, read_leaf_object, read_std_vec. - tools/rroot/branch, branch_element, file, tree : number of entries : uint32 => uint64. - tools/rroot/ntuple : column_string::fetch_entry : test if m_leaf.value() is null. - tools/rroot/streamers/TH3D_stream : m_axes.resize(3), instead of 2. - tools/wroot/branch_object, cids : handle branch_object. - tools/wroot/basket : in stream(), handle "displacement". - tools/wroot/branch : reset() method. - tools/wroot/branch, buffer : in fill() : buf.reset_objs_map(). - tools/wroot/ntuple : column_ref : to handle user variable binding at write. - tools/wroot/tree : cstor : managed argument. - tools/wroot/tree : have a reset method. - tools/rcsv_ntuple : handle int64, uint64, bool columns. - tools/wcsv_ntuple : column_ref to be able to bind a user variable on simple type columns. - test/cpp/rcsv.cpp => rcsv_ntuple.cpp - test/cpp/wcsv.cpp => wcsv_ntuple.cpp - test/cpp/wcsv_booking.cpp => wcsv_ntuple_booking.cpp - test/cpp/wcsv_booking_bind.cpp : to show user variable binding on simple type columns. - tools/ntuple_booking, ntuple_binding : can pass now a user variable for simple types. - tools/histo/axis, histo_data, base_histo, p1, p2, : equals method to be able to compare easily histos. - tools/histo/c1d,c2d,c3d : inline code in the classes. - tools/histo/h1,h2,h3 : get_bin_content method. - tools/histo/h1d,h2d,h3d,p1d,p2d,h2df,h3df : have a default constructor building a valid histo : needed when reading from file. - tools/vmanip, sg/group, rroot/directory, named, waxml/ntuple : clear => safe_clear. - tools/sg/vertices, text_hershey, style_parser, style_colormap, primitive_visitor, render_action, manager_zb, normal, matrix, nodekit, line_set, head_light, pick_action, gl_manager, cube, h2plot, draw_style, node : rm some not needed "tools::". - tools/sg/set_plotter_camera : have a func to pass float x,y,z camera position. - tools/sg/text_style : options field. - tools/sg/strings : font_ROOT_<>() golabl strings. - tools/sg/plottable, plottables : bins1D, bins2D, func1D, func2D, points2D, points3D now in plottables. - tools/sg/viewer : fields m_produce_out_jpg, m_produce_out_png, m_produce_out_file. - tools/sg/legend, markers mnmx text_valop valop2sg : handle markers and text with upper/lower script in legend box. - tools/sg/atb_vertices : draw_edges field. Have code to draw edges for triangles. - tools/sg/bmf, mf : setup a multiple value field from one value or a std::vector of values. - tools/sg/plots : handle new fields left_margin, right_margin, top_margin, bottom_margin, horizontal_spacing, vertical_spacing. - tools/sg/axis : handle case of label at center of bin. - tools/system : [is,get,put]env => [is,get,put]_env : to avoid clash with system functions. 2.4.0 : - test/cpp/mpi_ntuple.cpp : modifs to use an ntuple id. - tools/mpi/pntuple : handle a ntuple id. 2.3.0 : - test/cpp/mpi_ntuple.cpp : use a maximum tools::impi interface which does not bring mpi.h. - tools/mpi/pntuple : have the code using only the tools::impi interface. - tools/mpi/wrmpi : pack_reset(), send_buffer() virtual methods implementations. - tools/impi : pack_reset(), send_buffer() virtual methods. 2.2.0 : - sg/vertices : supress m_xyzs_pos field to correct a Coverity issue. - sg/atb_vertices : m_[xyzs,rgbas,nms]_pos protected. To correct Coverity issues. - rroot/ntuple : initialize() : if(!_branch) => if(!_be) : seen by coverity. - wroot/to : add code to write annotations. - rroot/rall : - add touplow. 2.1.0 : for parallel ntuple : handle properly the user std::vector for column of vector. - ntuple_booking : add the set_user_obj() method and non-const columns() getter. - rroot/branch_element : implement a show() method to show the m_obj address. - rroot/branch : make virtual the show() method. - test/cpp : pwroot.cpp, wroot_pntuple.cpp, mpi_ntuple.cpp : example of a vector column. 2.0.0 : wroot : parallel ntuple : on a same booked nutple, pass baskets from threads or mpi ranks to a "main ntuple" tied to a file. rroot : modifs to be in sync with the logic of wroot. remove hbook, fortran and cernlib related things. - tools/wroot,rroot : base_leaf, branch, key, basket, fac : remove ifile& relationship in constructors. - tools/wroot,rroot : base_leaf, branch, basket : remove relationship to "manager" (exa remove m_branch in base_leaf). - realloc, wps, tos, smatch, xml/tree, args, array, rcsv_histo, rcsv_ntuple, b2s, cmemT, glprims, hplot, xml/loader : use size_t instead of unsigned int. - viewplot, wps : a_anonymous arg to write ps file without date. It permits to compare files. - snpf : _MSC_VER < 1900 : handle "_TWO_DIGIT_EXPONENT". - rtausmeui : mem count. - randT, randd, randf : pass templated math_func in arg to shoot (a_sqrt, a_log). - path : suffix, nosuffix : avoid return of a std::string. - mathd, mathf : rad2deg, deg2rad : use a static to do the computation once. - cmathT : rm _conj functions. - forit : vfor : reverse. - impi, mpi/wrmpi : pack, unpack(int64). - histo/base_histo, c1d, c2d, c3d, dps : unsigned int -> size_t. - xml/loader : handle a_take_ctrl. - io/iwbuf, sg/bmf, mf, line_set, group, axis, style_parser, cube, colormap, plots, atb_vertices, text_freetype, text_hershey, pick_action, plotter : unsigned int -> size_t. - sg/gl_manager, manage_zb, render_zb, primitive_visitor, render_action : unsigned int -> size_t. - sg/primitive_visitor : *pos++ -> *pos;pos++. - colorf : remove static color functions. They are put in colorfs. - sg/vertices : is_visible(). - sg/field, field_desc : editable field. - sg/legend, text, rgba, torche, infos_box, colormap, axis, text_style, back_area, style, style_colormap, line_style. - test/cpp/viewplot.cpp : colorf::() -> colorf_(). - test/cpp/wroot.cpp : -megas option. - test/cpp/mpi.cpp -> mpi_histos.cpp. - test/cpp/rroot.cpp, rxrayfluo.cpp : tools::rroot::key_to_(rfile,*key); : add the rfile at first argument. char* buf = key->get_object_buffer(rfile,sz); : add the rfile at first argument. tools::rroot::fac fac(std::cout); : replace rfile arg by std::cout. - histo : cosmetic aEdges => a_edges. - rroot : cosmetic rm not needed tools::rroot:: prefix. - lina/qrot (rotf) : pass a_sqrt, a_fabs, a_sin, a_cos,... in arg. - args : use mem::inc,dec. - file, file_format, fileis, fsize : handle py, lua, jive. Isolate size() in a standalone file. - raxml, xml/aidas : separate the xml parsing logic (in a xml/aidas file) from the expat reader. (Have something similar than the xml style reading). - sg : gl_manager, manager_zb : begin_render() : have two more args to pass the area size to render. - sg : axis : pick() : use nodekit_pick(). It permits to pick and move an axis (in interactive apps). 1.27.4 : - tools/value : Windows-64 : rm warnings when writing a void* in a string.. 1.27.3 : - tools/typedefs, pointer, value.icc : Windows-64 : rm warnings when writing a void* in a string. - tools/wroot/ntuple : delete columns in destructor. 1.27.2 : - tools/glutess/render : static_RenderTriangle : (void)size; at end to fix a warning. 1.27.1 : - hls, sg/style_colormap : correct some g++-6 (pedantic) warnings. 1.27.0 : WARNING : change in the ROOT format for TTrees : - tools/wroot/basket constructor : enforce m_version += 1000. This has to be considered as a change in the ROOT/IO format (related to trees) compared to the one of CERN-ROOT/4.x that we followed up so fare. This change follows what is in CERN-ROOT/5.x/TBasket. It permits to produce files compatible with what CERN-ROOT/hadd program expects, and which does not work properly for CERN-ROOT/4.x/TBasket versioning logic. Here we must point out that this CERN-ROOT/hadd tool breaks some "golden rule" claiming that CERN-ROOT will "forever" handle old file format properly. 1.26.2 : - test/cpp/viewplot.cpp : more tests to check the sg::plotter nodes reset when producing more pages and files with the same viewer. - test/cpp/viewplot.cpp : regions_style() : have a a_plotter_scale argument to have space between plotters. - test/cpp/viewplot.cpp : HD_style() : set also line_width on title, axis texts to handle properly hershey font if using on large (batch) window. - test/cpp/viewplot.cpp : use tools/xml/wrap_viewplot_style include-embeded style file. - test/cpp/viewplot.cpp : use set_current_plotter_style() instead of style_from_res(). - tools/xml/viewplot.style, wrap_viewplot_style : a style file (and include-embeded version) for viewplot.cpp. - tools/viewplot : deprecate style_from_res() and replace it with the more explicit set_current_plotter_style(). - tools/sg/plots : init_sg() "public" and doing more initializations. - tools/sg/plots : plotter_scale field, to let space between sg::plotter nodes in a grid of plots. - tools/sg/back_area, plotter : border_line_width field, to customize border line width of plotter::infos_box. - tools/sg/style_color : use "parent" typedef. 1.26.1 : - test/cpp/viewplot.cpp : regions_style() function to adjust per plotter parameters (as margins) in case of multiple regions. - tools/viewplot : set_from_res() : add a verbose arg. 1.26.0 : prepare freetype2 + modifs and fixes coming from dev in inlib/exlib. - zfunc,wroot/file, ifile, rroot/file, ifile, key : zfunc -> press_func, zip_func -> compress_func, unzip_func -> decompress_func. - vdata : handle (__GNUC__ == 4 && __GNUC_MINOR__ <= 0). - zlib : return Z_DATA_ERROR -> return false. - aida_ntuple, sg/action, xml/loader, styles : std::ostream& out() now const. - lina/box3, box3f : for Windows : avoid the max() in std::numeric_limits::max(). - rtausmed, rtausmef : use typedef parent. graphics : - test/cpp/use_freetype : supress TOOLS_USE_NATIVE_FREETYPE usage. - test/cpp/viewplot.cpp : have view.style "embedded" (encapsulated in the style_viewplot #include). - sg/text_freetype : #ifndef TOOLS_USE_OUREX_FREETYPE -> #ifndef TOOLS_USE_OUREX_FREETYPE. - sg/bmf : optimize setValues(). - sg/* : TOOLS_FIELD_DESC_NODE_CLASS logic. - img : check_gl_limit(). 1.25.0 : material for using freetype rendering in plotting. - test/cpp/viewplot.style, arialbd.ttf, helvetica.ttf : material to render "a la CERN-ROOT". - tools/sg/text_freetype : the sg/node handling freetype. - tools/fmanip, nostream, sep, system : used by sg/text_freetype. - tools/glutess : a pure header version of the tessel code found in mesa/glu. Used by sg/text_freetype. 1.24.2 : - tools/wcsv_ntuple, tools/wroot/ntuple : have class icol public. - test/cpp/build, use_expat : put expat things common to raxml,viewplot.cpp in use_expat. - tools/mpi/wrmpi : #ifdef TOOLS_USE_MPI_PACK_NOT_CONST char* buffer() {return m_buffer;} #else const char* buffer() const {return m_buffer;} #endif - doc/g4tools_user_api.xml : file ready to go in g4 docbook documentation. - test/cpp/histo.cpp : example code to get all infos of a bin. - tools/sg/render_zb, tools/zb/buffer : handle line width to have thick lines in case of rendering in a high resolution viewport (needed if rendering text with freetype). - test/cpp/viewplot.cpp, use_freetype : prepare the ground for freetype (but not yet ready). 1.24.1 : - test/cpp/build_f77 : src_dir/close.f -> ./close.f (Ivana request). - src/close.f -> tests/cpp/close.f. - test/cpp/histo.cpp : have profile_[x,y] example code. - tools/histo/slice, sliced : add profile_[x,y] functions. - tools/histo/slice : improve readability, have : template instead of : template 1.24.0 : - wrmpi : have : #ifdef TOOLS_USE_MPI_PACK_NOT_CONST to be able to handle old MPI_[Pack,UnPack] signature without const in the first argument. Not tested since we have not an old MPI at hand! - tools/axis : modification to quiet Coverity. - rroot/key : ifdef TOOLS_USE_CSZ : csz decompression code (coming from old CERN-ROOT) is used in inlib to read very old root file, but this functionality is not needed within g4tools. Then we "ifdef" the related code with TOOLS_USE_CSZ to avoid the csz dependancy by default. Modifications to be in sync with inlib developments but not (yet) fully used in g4tools : - tools/sg/visible_action,base_camera,group,matrix,node,noderef,render_action,separator : handle visible action. - lina/box3, box3f : have the template base box3 class. - fileis, file_format : handle wrl extension. - img : various optimizations in image concatenation. 1.23.1 : - tools/mpi directory with an implementation of the toos/impi_world and tools/histo/hmpi interfaces. - test/cpp/dummy_mpi.h, hmpi, mpi_world, wrmpi moved under tools/mpi. - tools/histo/hmpi : comm_rank(), comm_size() methods to quiet Ivana :-). - tools/hplot, sg/cube, sg/primitive_visitor, sg/text_hershey : minor corrections to quiet Coverity. 1.23.0 : - tools/impi_world : interface to the mpi toolkit and global functions (MPI_Init, MPI_Comm_rank, etc...). - test/cpp/mpi_world : implementation of the upper. - test/cpp/mpi.cpp : example of usage of mpi_world and the interface. - tools/histp/hmpi : rank() getter. - tools/smatch, vpair, xml/styles, xml_style, test/cpp/viewplot.cpp : prepare the ground for plot style files. - tools/lina/geom3, line, plane, mat, MATCOM, vec3, vec2f : modifs coming from inlib/exlib developments that should have, in principle, no impact on the rest of g4tools. 1.22.1 : - viewplot : open_file(), write_pate(), close_file() methods. To write multiple pages in a file. See test/cpp/viewplot.cpp for an example. - viewplot : plot(p1d). See test/cpp/viewplot.cpp for an example. 1.22.0 : revisit structure for plotting related code. - Have tools/[sg,lina,io,zb] directories to contain this code (instead of tools/plot/...). Extra lite files related to plotting and put under tools : HEADER, axis, cmemT, colorf, cstr, glprims, hershey, hls, hplot, img mathf, out_error, viewplot, wps. - tools/gzip_buffer renamed tools/zlib. Method gzip_buffer renamed compress_buffer and gunzip_buffer renamed decompress_buffer. In fact we had nothing of gzip in the previous gzip_buffer file ! (I had learn since that in fact gzip is zlib deflate/inflate plus a special header added when writing/reading in for a .gz file. As this header is not used for the root format compression, then it is better to rename things). 1.21.0 : tools/plot. Revisit #include paths to avoid too much -I when compiling. 1.20.0 : tools/plot, test/cpp/viewplot.cpp. Add "batch plotting" facility. 1.19.2 : - wcs_ntuple : constructor with ntuple_booking, rm typedef uint and use uint32. - rcs_ntuple : rm typedef uint which is error-prone and use uint32. 1.19.1 : - wcs_ntuple : handle vector column if using the ntuple_booking way. csv handle vector columns. Windows #ifdef WIN32 -> #ifdef _MSC_VER (more clean). 1.19.0 : csv handle vector columns. Windows #ifdef WIN32 -> #ifdef _MSC_VER (more clean). - wcsv_ntuple, rcsv_ntuple, test/cpp/wcsv,rcsv : handle vector columns. - test/cpp/waxml.cpp, wroot.cpp : use num2s. - waxml/histos : handle a global ostringstream to convert numbers; huge optimization. - waxml/ntuple : s_value(string&), instead of returning a string; faster code. - typedefs, vdata, snpf, wroot/date, file, rroot/file : WIN32 -> _MSC_VER. - histo/base_histo : restore the extra_entries() method. - histo/base_cloud, base_histo, dps, xml/element, tree : remove std::string title() method which is inefficient and error prone. Stay only with the "const" one. - histo/h1,h2,h3 : get_histo_data() : use *this instead of parent::base_get_data(). - words : have an extra bool a_clear arguments to have the possibility to append words to the output vector. - args : add() : revisit strip logic. Remove some functions (that was only used in OpenScientist). - wroot/file : synchronize() : __MINGW32__ case. - wroot/ifile, rroot/ifile : add const to the out() method. - wroot/wbuf : char_p2s -> charp_out. - wroot/buffer : remove sout() - wroot/directory : long2s -> long_out. Remove sout(). - wroot/element, rroot/info : fullName(string&) instead returning a string. - sout : use an object. - raxml : const for cls,path,name() string getters. - pointer : handle the case of machines on which a pointer does not match a long. - cids : ids for vector of basic types. - file : revisit the is_hippo() logic. - hbook/ntuple : to<> -> numas. - b2s, num2s, snum : revisit string to number conversion to have faster code. 1.18.2 : revisit mpi code related code : - test/cpp/wrmpi, hmpi : concrete implementation of abstract tools/impi, histo/hmpi. - test/cpp/dummy_mpi.h : in case of not having an mpi implementation. - tools/histo/hmpi to abstract the send/receive of a bunch of histos. - tools/histo/hd2mpi : to pack/unpack histo_data, profile_data by using impi.. - tools/impi abstract class to abstrac MPI pack/unpacking. - remote tools/mpi directory. 1.18.1 : - test/cpp/use_mpi : have -DTOOLS_USE_NATIVE_MPI in case we have a MPI around. - tools/mpi/hd2mpi : have : #ifdef TOOLS_USE_NATIVE_MPI #include #else #include "dummy/mpi.h" #endif to use dummy/mpi.h in case there is MPI implementation around. - tools/mpi/dummy/mpi.h : a dummy mpi.h to compile (and link test/cpp/mpi.cpp) in case there is no MPI around. - tools/mpi/hs2mpi : std::cout -> a_out. - test/cpp/mpi.cc : test the return of MPI_Init(). - test/cpp/rroot.cpp : delete dir when finished with it. 1.18.0 : have code to send/recv histos through MPI. Have histo_data inheritance protected in base_histo. Fix some root streamers. - wcsv_histo, rcsv_histo : handle #plane_Sxyw for h2,h3. - wcsv_histo : revisit due to the fact that hist_data is no more publicly inherited by histos. - test/cpp/rcsv.C renamed read_wcsv_csv.C. - test/cpp/wcsv.cpp : produce now a wcsv.csv file (instead of out.csv). - test/cpp/rroot.C renamed read_wroot_root.C. - test/cpp/wroot.cpp : out.root -> wroot.root : to help knowing from which program a .root comes from. - rroot/streamers : h2, h3 : read fTsumxy,xz,yz and put on m_in_range_plane_Sxyw. - wroot/streamers : p1, p2 : revisit to save m_bin_Svw at the right place. - wroot/streamers : h2, h3 : save fTsumxy,xz,yz. - wroot/streamers : revisit due to the fact that hist_data is no more publicly inherited by histos. - wroot/to : write_histos() : to write a vector of histos at once in a directory. - wroot/element, infos : classes streamer_[short,uint,int,float,double,stat_t,bool] : for a better handling of the offsets. - histo/base_histo : public -> protected for hist_data inheritance. - histo/slice : set m_in_range_plane_Sxyw to zero. - histo/h1,h2,h3,p1,p2 : in fill() handle m_in_range_plane_Sxyw. - histo/histo_data, base_histo, b1, b2, b3 : handle m_in_range_plane_Sxyw to save "fTsumxy,xz,xy" for H2, H3 at the root format. - tools/histo/histos : to clear a std::vector of histos. - test/cpp/mpi.cpp, build, use_mpi : to test histo send/recv through mpi. - tools/mpi directory. - other modifs due to cosmetic or to modifs in inlib/exlib but not used in tools. 1.17.1 : revisit the usage of std::vector::resize(), have assign() if needed (for exa in histo::reset()) : - tools/array, tools/histo/[base_histo,histo_data,p1,p2,profile_data], tools/rroot/streamers : revisit reset(). 1.17.0 : - tools/wroot/infos : fixes in the streamer infos in order to read .root files with CERN-ROOT/6.02.03 : In TTree fScaleFactor -> fScalefactor. Replace the streamer_basic_type(OBJECT_ANY) to streamer_object_any(...). - rm CVS directories (no more needed since g4tools handled in git). 1.16.3 : - tools/rroot/ntuple : add also "id casting" in tools::rroot::ntuple::column and column_element. - tools/rcsv_ntuple : Windows : rcsv.cpp crashed. It came from a lack of "id casting" in the tools::rcsv::ntuple::column class. (This induced bad pointers in _read_line()). - wroot/leaf : add iro(a_from) in the copy constructors. - tools/rcsv_ntuple/s_cid() : be compleete (compare to types handled in _read_line()). 1.16.2 : - test/cpp/rcsv.cpp : modifs for example code to init and read by using ntuple_binding. - tools/rcsv_ntuple, cids : modifs to init and read by using ntuple_binding. - test/cpp/wcsv.cpp : produce a commented header. - tools/wcsv_ntuple : write a "commented header" with columns descriptor. 1.16.1 : - tools/rroot/ntuple/column_string : implement the find_entry() method. It permits to read std::string column by using the ntuple_binding way. - test/cpp/rroot.cpp : example of ntuple_binding(std::string) usage. - tools/histo/h[1,2,3] : set_bin_content() method. - tools/wcsv_ntuple : set the title if creating from a booking. 1.16.0 : write/read ntuple with std::string columns. Some important modifs in wroot/streamers to stream properly TH[1,2,3]F histos. - tools/cpp/raxml.cpp, rcsv.cpp, rroot.C, rroot.cpp : examples to read an ntuple std::column. - tools/cpp/waxml.cpp, wcsv.cpp, wroot.cpp : examples to write an ntuple std::string column. - rcsv_ntuple : is_hippo() method : to detect if a file is at the hippodraw format. - rroot/clss, rall, streamers : modifs to read TH3D histos. - wroot/ntuple : class column_string + modifs to write an ntuple string column. - wroot/branch : create_leaf_string() : to create an std::string column. - wroot/leaf : leaf_string : to write an ntuple string column. - wroot/streamers : modifs to stream properly TH[1,2,3]F histos. - wcsv_ntuple : modifs to write std::string columns. - waxml/ntuple : modifs to write std::string columns. 1.15.2 : - test/cpp/[w,r]csv_histo.cpp : -verbose : change output to easily compare writing and reading mean,rms axes. - tools/rcsv_histo : correct m_bin_Sxw,Sx2w reading for [2,3] dimensions. 1.15.1 : - test/cpp/wcsv_histo.cpp : write an histo with variable edge bins. - test/cpp/wcsv_histo.cpp : h1d : add a title with two words (to test the csv reading). - test/cpp/wcsv_histo.cpp : h1d : add an annotation with an empty value (to test the csv reading). - tools/rcsv_histo : if verbose, dump annotations. - tools/rcsv_histo : #title : read the "rest of line". - tools/rcsv_histo : add reading of axis with variable edge bins. 1.15.0 : - tools/rcsv_histo, test/cpp/rcsv_histo.cpp : to read histo at csv format. - tools/wcsv_histo : for non-profile, correct the labels to remove Svw,Sv2w. - tools/rcsv_ntuple : cosmetic. - tools/xml/loader : if(!XML_Parse()) -> if(XML_Parse()==XML_STATUS_ERROR) : seen by Coverity. - tools/xml/element : correction for Coverity. - tools/aida_ntuple, columns, raxml : correction for Coverity. - tools/histo/histo_data, dps, profile_data : correction for Coverity. - src/csz_inflate.c : correction for Coverity. 1.14.1 : - rroot/streamers : static_cast fEntries to data.m_all_entries. 1.14.0 : Changes to extend the "fast getters" logic to 1D histo and profile in order that .root streaming of them be strictly compatible wiht the TProfile ones : - test/cpp/wroot.cpp : have a 2D profile example. Add more verbose comments. - test/cpp/rroot.cpp : have hard coded reading example (in particular of profiles) in case the file is the pawdemo.root one or the out.root one produced by wroot. - rroot/streamers : revisit to use at the end the m_in_range_xxx fields in mean,rms(). - rroot/cids, clss, streamers, rall : read TProfile2D. - rroot/named : in ObjArray, List : add a lacking "delete obj" in case the read object is of bad type. - wroot/infos, streamers : TProfile : pass from version 3 to version 4. TProfile2D from version 4 to 5. - raxml : update_fast_getters() done on the hdata. - store/osc_streamers : update_fast_getters() done on the hdata. - histo/slice : update_fast_getters() done on the hdata. - histo/h1, h2, h3, p1,p2 : fille() : update the m_in_range_xxx fields. - histo/b1,b2,b3 : rm update_fast_getters() methods. mean,rms() use now the m_in_range fields. - histo/base_histo : all_entries() uses now the m_all_entries fast getter. - histo/histo_data : reset_fast_getters(), update_fast_getters(). - histo/histo_data : new fields : m_all_entries, m_in_range_entries, m_in_range_Sw, m_in_range_Sw2. Changes in rroot to read streamers infos : - rroot/file : read_streamer_infos(). - rroot/info : new file. Others : - cmathT : have "const type&" in args. - forit : tools_typename_vforcit() cpp macro, but it is not yet used in this release. 1.13.0 : - test/cpp/wcsv_histo.cpp : example of changing the comment and separator characters. - test/cpp/raxml.cpp : example of ntuple reading by using a ntuple_binding. - tools/aida_ntuple : set_binding() logic. - tools/wcsv_histo : be able to change the comment character for the header. - tools/wcsv_histo : cpp tools_wcsv_ntuple -> tools_wcsv_histo. - tools/rroot/rall : key_to_h1d() : to ease histogram reading knowing the name of the key. - tools/rroot/rall : find_TDirectory() : to ease searching of a directory in a directory. - tools/rroot/directory : file() method. - tools/rroot/member_reader : cpp tools_rroot_member_writer -> tools_rroot_member_reader. - tools/wroot/date : WIN32 : rm include windows.h and then stay with the not thread safe localtime() on Windows. - mgr/build : do not bring wroot/date from inlib. 1.12.0 : - tools/histo/h[1,2,3],p[1,2] : s_cls() method to write class name in a csv histo file. - tools/wcsv_histo, test/cpp/wcsv_histo.cpp. - tools/wroot/streamers : do not use get_histo_data() since now h[1,2,3] inherits histo_data. - src/setpawc.f, setntuc.f in test/cpp. 1.11.0 : - modifs to build rcsv.cpp example : mgr/2g4tools.upgrade mgr/build - new file to build rcsv.cpp example : test/cpp/out.aida test/cpp/rcsv.cpp test/cpp/tools_test_rcsv tools/chars tools/rcsv_ntuple tools/s2time - modifs to build raxml.cpp example : test/cpp/build - new files to read aida xml file (it needs expat) : test/cpp/raxml.cpp tools/aida_ntuple tools/array tools/columns tools/file tools/file_format tools/file_reader tools/handle tools/histo/dps tools/raxml tools/value tools/value.icc tools/xml/element,loader,tree - g4tools/hbook/CHBOOK : remove not used code. - g4tools/src/hdummy.c : moved in test/cpp. - g4tools/src/hids.f,hisid.f, hntvar2.f : remove. - test/cpp/rroot.cpp, rxrayfluo.cpp, wroot.cpp, wroot_ntu_1000_cols.cpp, chbook.cpp, whbook.cpp : include cstdlib. - test/cpp/use_f77, use_cernlib, build_f77 : Mavericks with gfortron-48 from MacPorts : rm -m32, use f77libs to say where libgfortran.dylib is. - tools/wroot/infos : streamer infos for TH3[F,D], TProfile2D. - tools/wroot/named : Att3D_stream(). - tools/wroot/streamers, to : TH3[F,D], TProfile2D streamers; - tools/wroot/date : use localtime_r() (instead of localtime()) which is thread safe. - tools/rroot/streamers, tools/store/osc_streamers : have new axis offset template argument. - toools/histo/[h,p]1,2,3d : remove __CINT__ code. - tools/histo/p1, p2 : configure methods. - tools/hsito/b1,b2,b3,h1,h2,h3,p1,p2 : _find_offset() logic to avoid duplicating code to find the offset from coords. - tools/histo/* : handle a new template argument for the bin offset type. Needed for sparce histos that will have a uint64 offset type. New base_histo inherits histo_data. - tools/histo/base_histo : inherits histo_data. - tools/histo/axes : to commonalize some code with sparse histos. - tools/histo/axis, tools/waxml/histos, test/cpp/histo.cpp : have enum axis_UNDERFLOW_BIN,axis_OVERFLOW_BIN under namspace tools::histo to avoid to use template for that. - tools/histo/h1df, h2df, h3df : histos with float bins. - src/csz_inflate.cc : comment out register keyword. - src/csz_inflate.cc : in csz__Inflate_dynamic() have some "free structure at return time" detected by Coverity. - rroot/basket : in stream() comment out an if dead code block to quiet Coverity. - wroot/to,bufobj,directory : cosmetic edition. 1.10.0 : - tests/cpp/*.cpp : use new random API. - tools/cmathT,randT,rtausme[ui,f,d],randd,randf,random,rroot/streamers : to quit Coverity, revisit random generators to avoid usage of stdlib.h/rand() indirectly used in rroot/streamers. - tools/rroot/base_leaf,basket,branch,leaf,streamers : modifications to quiet Coverity. - tools/mathd : rename math to mathd to follow naming convention [f,d] used in other places. - test/cpp/build : inflate.c -> csz_inflate.cc. - src/inflate.c -> src/csz_inflate.cc. 1.9.4 : - test/cpp/rxrayfluo.cpp : add a ntuple_binding usage. - tools/ntuple_binding, rroot/ntuple : logic to attach user variables to ntuple columns when reading. Available today only for the root format. - tools/rroot/named, tree : use of the tools_vforcit cpp macro to simplify edition of loops with iterators. - histo/c1d : correct a mistyping in "#define tools_histo_c1d" that was _cld ! 1.9.3 : - test/cpp/waxml.cpp : have an histo title with <,>,&,",' to test XML escaping when writing at the AIDA XML format. - tools/waxml/begend, histos, ntuple : use to_xml() to escape the XML special characters in strings. - tools/waxml/begend : change output dtd version from 3.0 to 3.2.1. - tools/ntuple_booking : to quiet coverity, in operator=() add : if(&a_from==this) return *this; 1.9.1 : - test/cpp/rxrayfluo.cpp : to test the reading of a xrayfluo.root file. 1.9.0 : - tools/rroot, test/cpp/rroot.cpp : code to read a file at CERN-ROOT format. 1.8.0 : - tools/[wroot,waxml]/ntuple : handle the creation of std::vector columns through the new ntuple_booking class. - tools/[wroot,waxml,hbook]/ntuple, wcsv_ntuple : handle the new ntuple_booking. - tools/ntuple_boooking : revisit the logic. Have a column_booking class. Handle a opaque pointer for the std::vector column case. Have fields protected and have getter, setter methods. - tools/wroot/ntuple : rm the unused m_def field in the std_vector_column class. 1.7.2 : - test/cpp/wroot.cpp, rroot.C : have an example of std_vector columns. - tools/wroot/branch_element, leaf_element, ntuple::std_vector_column : handle column of std::vectors. - mgr/build_app : have : cppflags="${cppflags} -I../g4tools/include" 1.7.1 : - tools/wroot/buffer : expand2() method to have same logic as CERN-ROOT/TBuffer. It boosts the writing of ntuple with large number of columns. - tools/forit : use tools_[v,s,l,m]for[c]it cpp macros to shorten iterator/loop code. 1.7.0 : - test/cpp/list_free_segs.C : to list free segments in a out.root file. - wroot/file : set_END() : update first back free segment m_first field when writing something. This permits to have good free segs infos in file. - wroot/file/make_free_seg : use free_seg/add_free() function. - wroot/free_seg : add_free function. - histo/c[1,2,3] : operator= : protect against same object. - wroot/named/ObjArray : operator= : protect against same object. - wroot/ntuple/column : operator= : protect against same object. - sto/to() : have a default value. - pointer/p2s : void* -> const void*. - args/find() : have a default value. 1.6.0 : - test/cpp/wroot.cpp : add an empty tree to check the below modification. - wroot/basket/stream : remove the if(!m_data.length()) test that refrains to write an empty tree. - wroot/store : put in this directory the code that permits to stream histos with all their internal infos. - args, path, hbook/hdummy.c : changes coming from the inlib/exlib context but not used within g4tools. 1.5.0 : - build_f77 : modifications to build from CYGWIN with DF98 fortran. - wroot : osc_streamers, iobj_const_visitor, to, buffer, member_writer : modifications in order to be able to stream histos as in OpenScientist/BatchLab and then with all the internal infos. We remember that the ROOT/TH streaming does not handle the number of entries per bin (but only the weight per bin) and not the annotations. - tools/gzip_buffer, test/cpp/wroot.cpp : show how to use compression with zlib. - histo/base_histo : in a for, change an unsigned to "unsigned int". - histo/c[1,2,3]d : tools::mn,mx<> changed to mn,mx<>. - wroot/wbuf : have a public : set_byte_swap() method (then the wbuf byte swapping can be changed out of the constructor). - safe_cast, hbook/wntuple : rename the global cast() functions to safe_cast(). It permits to trace them more easily. - strip : have a "return bool" returning true if some stripping had been done. - test/cpp/use_cc, use_cpp, build : [cc,cpp]_linker : variables to explicitely link with cc or cpp. - test/cpp/use_cernlib : Windows : try to handle a build from cygwin. - vmanip, mem, platform, mem : slight changes coming from the inlib/exlib context but not used within g4tools. - license file : correct some typos (` to '). 1.4.3 : - histo/b3,h3d : have a print() method. (Few things in it for the moment...) - histo/sliced : for h3 : projection_[xy,yz,xz] methods. - test/cpp/histo.cpp : example of a h3d with some projections. 1.4.2 : - histo/h3::fill : bug correction : line 69 [3] -> [2]. - test/cpp/use_cpp : g++ : have the -shadow option. - histo/c[1,2,3]d : set_histogram(), s_class() : methods needed when creating back objects when reading an AIDA xml file. (In fact not used today since reading files is not used in G4). - modifs in typedefs, cids, tos, vmanip : the same, coming from modifs in inlib related to the reading of files. 1.4.1 : 21 Aug 2012 : G.Barrand : - wroot/file, free_seg : handle (and save) "free segments". It permits to open the file correctly when opening back from CERN-ROOT with "UPDATE" mode. 1.4.0 : 20 Aug 2012 : G.Barrand : - Handle "axis title for plotting" through annotations. See examples/cpp/[wroot,waxml].cpp for examples. - Arrange so that "axis title for plotting" be saved in .root file so that ROOT plotting handle these titles. - Save annotations for the AIDA file format. - NOTE : it does not seem to have an HBOOK API to save per histogram "axis title for plotting" in a HBOOK file. 1.3.2 : 17 Aug 2012 : G.Barrand : - base_histo : have annotations. 1.3.1 : 24 Jul 2012 : G.Barrand : - hbook/h1,h2,p1 : have a configure() method to rebook. - hbook/h1,h2,p1,base_histo : have title(),reset(),all_entries() on base_histo. 1.3.0 : 20 Jul 2012 : G.Barrand : - add file/class ntuple_booking to capture a ntuple booking parameters. - hbook/wntuple, waxml/ntuple, wcsv_ntuple : add a constructor receiving a ntuple_booking object. - tests/cpp/[waxml,whbook,wroot,wcsv_booking].cpp : have an example of usage of the creation of an ntuple by using a ntuple_booking object. 1.2.1 : 19 Jul 2012 : G.Barrand : - histo/b1,b2,b3 : have public configure methods to rebook an existing histogram. - histo/b3 constructor : variable ns changed to nbins to remove a "-shadow pinaillage" warning. - change "private" to "protected" in various classes to let things opened via inheritance. - test/cpp/build : g++ : -shadow. - test/cpp/build : CYGWIN : changes to build also with VisualStudio 2009. 1.2.0 : 28 May 2012 : G.Barrand : - waxml/ntuple : do not write the default option in the column element. It permits to have XML files with ntuple readable by jas3. The 1.4 release of ioda can also read these files. - sto : remove the "tellg() logic". There is a difference of comportement of tellg() in the g++ 4.6.x versions. We use now fail() to detect if a stream conversion toward numbers is ok or not. - tools/hbook/base_histo : have an hbook_id() method to get the... HBOOK ID! - tools/hbook/h1,h2,base_histo : displace scale() on base_histo. - tools/hbook/h1,h2,base_histo : add(),subtract(),multiply(),divide() methods. (To please Michel). - Slight corrections to remove messages from the -Wshadow "pinaillage" option. (Hell, if a compiler misunderstands the name of a local variable with the name of a method...) - Slight corrections to compile with clang++. - modify test/cpp/build to build the C++ programs from CYGWIN by using the Visual Studio compiler. 1.1.0 : 8 Feb 2012 : G.Barrand : - split the fill_infos() function in wroot/infos. It was too long and induces warning with icc and g++. 1.0.6 : 8 Feb 2012 : G.Barrand : - build from code of inexlib-1.3. - histo : some "this->" changed to "parent::". "this->" is needed only when invoking virtual methods. - have snpf to avoid too much #ifdef WIN32 for [v]snprintf. - have "typedef cid" in a standalone cid file. - remove some remaining inline keyword within class. - test/cpp/use_clang : to build with clang. Tested with clang-3.0 on MacOSX. To use clang : cd test/cpp ./build -clang - add this history file.