Handle OpenGL-3.2:
- toolx/sg/GL_manager, GL_action, GL_viewer: template the access to the OpenGL functions.
  By default, the code still use a OpenGL-1.1 logic.
  If the cpp macrp TOOLS_USE_GL_VERSION_3_2 is defined, then the logic passes on OpenGL-3.2.
  In particular then, in GL_manager_T::create_shader_program(), we activate the "shader" logic.
- toolx/GL/gl_functions: "OpenGL functions accessor" to be used with the upper templates.
  By default it defines accessors for OpenGL-1.1 and for OpenGL-3.2 if the cpp macrp
  TOOLS_USE_GL_VERSION_3_2 is defined.
- toolx/Qt/gl_function: OpenGL-1.1 and 3.2 accessors by using the Qt QOpenGLFunctions_1_1
  or QOpenGLFunctions_3_2_Core classes. We are then complient to what Qt recommand to access OpenGL.
  This way of doing permits to build (in particular access) OpenGL-3.2 on Windows.
- toolx/Qt/glarea: instanciate GL_manager, GL_action, GL_viewer with the adequate OpenGL accessor
  by using toolx/Qt/gl_functions.
- toolx/Qt/sg_viewer: have a get_infos() method to be able to get which version of OpenGL we use.
- toolx/X11/sg_viewer: instanciate GL_manager, GL_action, GL_viewer with the adequate OpenGL accessor
  by using toolx/GL/gl_functions. Have also a dispatch() method to handle Buttons as what is done in zb_viewer.
- toolx/Xt/sg_viewer: instanciate GL_manager, GL_action, GL_viewer with the adequate OpenGL accessor
  by using toolx/GL/gl_functions. Have a get_infos() method to be able to get which version of OpenGL we use.
- toolx/Xt/OpenGLArea: before including gl.h and glext.h, have the GL_GLEXT_LEGACY, GL_GLEXT_PROTOTYPES
  logic to master when OpenGL extensions are included.
- toolx/Windows/gl_function: OpenGL-1.1 and 3.2 accessors. For 3.2 functions not in 1.1, we use
  the "wglGetProcAddress" technic to dynamic-load them. (The functions ">1.1" are seen as "extensions"
  by Microsoft and not made public for linking in the opengl32.lib).
- toolx/Windows/sg_viewer: instanciate GL_manager, GL_action, GL_viewer with the adequate OpenGL accessor
  by using toolx/Windows/gl_functions. Have also a dispatch() method to handle Buttons as done in zb_viewer.
- toolx/OpenGL: this file is removed since all the include of the OpenGL API is now too specific and be done in
  the various toolx/[Qt,X11,Xt,Windows]/sg_viewer.
- toolx/glbuf, sg/gl: suppressed. The utility functions over OpenGL found here are now within sg/GL_manager,
  sg/GL_action in order to be "under" the OpenGL accessor mechanism.
- toolx/sg/text_freetype, text_freetype_marker: remove #ifdef ANDROID cases.
- tools/HEADER: have TOOLS_T_HEADER, TOOLS_T2_HEADER used in the GL_manager_T, GL_action_T, GL_viewer_T templates.
- tools/sg/viewer: set_use_gsto()/use_gsto() : to change the "graphical store mode" (used by OpenGL-3.2).
- tools/version: pass to 8.0.0.

7.1.0:
- tools/sg/vertices, atb_vertices: remove the "#ifdef __APPLE__" logic related to blending. It permits
  to have same rendering as OGLI/OGLS for G4Polymarker::dots if "dots smoothing" is actived on the
  advanced/ICRP110_HumanPhantoms example.
- tools/sg/draw_style: have the point_smooth smart field.
- toolx/[Qt,X11,Xt,Windows]/[sg_viewer,zb_viewer]:
  have win_render() enforcing an immediate rendering, and introduce an emit_win_render() to
  "ask to render at the next windowing/GUI event loop processing".
- add tools/sg/shade_model node to handle Gouraud shading.
- tools/version: pass to 7.1.0.

7.0.0:
- tools/zb/buffer, edge_table, line, point, polygon: modifications to avoid
  the "ToolsSG-ZB too much zoom in" crash. It came from the "#define LARGE_COORDINAT 100000" limit
  in the original scan-line algorithm that were exceeded in the case of "too much zoom in" for some triangles.
  (In this case the "edge_table" linked list were badly initialized and the original alogorithm was led to
  crash at some point in the treatment of a large triangle). The modifications avoid the usage of this limit
  and also arrange to avoid treating triangles outside the zbuffer viewport.
- toolx/X11/sg_viewer: correct the head comment.
- tools/version: pass to 7.0.0 after all the modifications done in the various files of Geant4
  g4tools-V11-03-06 and g4tools-V11-03-05 tags.

6.5.1:
- toolx/Qt/glarea: bug: Qt5: in mouseMoveEvent() for Qt5, correct a bad cut/paste when creating the
  mouse_move_event (instead of "x,shift,control,y" have "x,y,shift,control").
- tools/version: pass to 6.5.1

6.5.0:
- tools/sg/event: have a new position_modifiers class to handle the shift, control key modifiers and mouse position.
  It is inherited by mouse_[down,up,move]_event and the wheel_rotate_event class.
- toolx/Qt,Windows/glarea,pixwin, toolx/Xt/[sg,zb]_viewer, toolx/X11/zb_viewer: handle the shift and control
  modifiers in the mouse_[down,up,move]_event and wheel_rotation_event.
- tools/version: pass to 6.5.0

6.4.1:
- tools/rroot/ntuple: fix Geant4 bugzilla 2657: in initialize(), line 708, pass the message from
  "warning" to "error" and "return false" if the name of a booking column is not found in the file.
- tools/rcsv_ntuple: initialize(read with binding): check if given binding variables names are in the read from file column names.
  If not, return an error; then have the same behaviour than for root ntuple reading with binding.
- tools/hdf5/ntuple: initialize(read with binding): check if given binding variables names are in the read from file column names.
  If not, return an error; then have the same behaviour than for root ntuple reading with binding.
- tools/version: pass to 6.4.1.

6.4.0:
- toolx/Qt,Windows,Xt,X11/sg_viewer and zb_viewer: implement window_size, and render_area_size methods.
  (These may return different sizes, for example with Qt/OpenGL on Mac and Windows).
- tools/offscreen/sg_viewer: implement window_size, and render_area_size methods.
- tools/sg/event: handle the mouse position in the wheel_rotate_event class.
- toolx/Qt/glarea,pixwin: set the mouse position in the wheel_rotation_event.
- toolx/Windows/glarea,pixwin: set the mouse position in the wheel_rotation_event.
- toolx/Xt/sg_viewer: set the mouse position in the wheel_rotation_event.
- toolx/X11/zb_viewer: set the mouse position in the wheel_rotation_event.
- tools/version: pass to 6.4.0

6.3.3:
- wroot/file: in compress_buffer(): to fix bugzilla-2625: arrange to have a greater
  output buffer size when using deflate(), and check at end, that in case of some
  compressions being done, "a_klen<a_buffer.length()" to comply to the ROOT/IO specification
  that the overall output size should be stricly lower than the input size.
  (A "specification" encoded in ROOT/TKey.cxx/TKey::ReadObj() method in the form
  of a "if (fObjlen > fNbytes-fKeylen) {}"). In case "a_klen>=a_buffer.length()", the
  input buffer is returned.
- wroot/basket: in write_on_file(): suppress the test "if(klen>m_object_size)" now done
  in file::compress_buffer().
- tools/version: pass to 6.3.3.

6.3.2:
- streamers: in TH_read_1D(), fix a "std::move" minor Coverity issue.
- axis: in avoid_labels_overlap(), fix a "divide by zero" medium Coverity issue.
- tools/version: pass to 6.3.2.

6.3.1:
- fix twenty "std::move" Coverity issues.
- wroot/buffer: have argument of write_array[2](std::vector) passed as a const reference.
- tess_contour: have argument of getFilledArea(std::vector) passed as a const reference.
- Fixed string assignments in 'window' and 'pixwin', to support either UNICODE
  or UTF-16 encoding on Windows. Addressing problem report #2599.
- Fixed compilation warnings in ccontour and gl2ps on gcc when LTO settings are enabled.
- tools/version: pass to 6.3.1.

6.3.0:
- tools/wroot/file: in the constructor, for the streaming of the root directory, take into account the streaming of what would be
  the fUUID (a TUUID in ROOT) field of the TDirectory version 4. This permits to fix the "G4AnalysisManager creates ROOT files
  that are not updateable" issue described in bugzilla problem 2570.
- tools/version: pass to 6.3.0.

6.2.1:
- toolx/Xt/session: quiet Coverity CID=104821: in copy constructor, initialise m_app_owner(false).
- toolx/Xt/zb_viewer: Fixed compilation warning for implicit type conversions on macOS/XCode 14.1.
- tools/version: pass to 6.2.1.

6.2.0:
- toolx/Qt: zb_viewer, pixwin, session, s2q: have a Qt viewer for the tools/zbuffer rendering.
- toolx/Xt: zb_viewer, ImageArea, session: have a Xt viewer for the tools/zbuffer rendering.
- toolx/X11: zb_viewer, pixwin, colors, base_session: have a X11 viewer for the tools/zbuffer rendering.
- toolx/Windows: zb_viewer, pixwin, ession: have a Windows viewer for the tools/zbuffer rendering.
- tools/sg/zb_viewer: generic code used by the upper zb_viewer doing the connection with a windowing system.
- tools: sg/zb_action, sg/write_paper, mat4f, buffer, mat4: modifications used by the upper files.
- tools: zb/buffer: optimizations. In particular by avoiding the usage of the point_writer class (now removed).

- toolx/Xt/session: quiet coverity: remove unused field m_app_owner.
- toolx/sg/GL_manager: quiet coverity: remove unused field m_gsto_on_cardsy.
- toolx/sg/gl: quiet coverity: in gl_dump_if_errors(), avoid to set the std::hex format on arg a_out. Have a local std::ostringstream.
- tools/version: pass to 6.2.0.

6.1.1:
- toolx/Qt/glarea: handle Qt6.
- toolx/Qt/glarea: for Qt5, Qt6: in paintGL(), use devicePixelRatio() to set the size of the toolx::sg::GL_viewer.
- tools/ccontour: intel-icx: fix compilation warnings about argument of type 'double[]' with mismatched bound.
- tools/rcsv_histo: coverity: quiet coverity about some "Unchecked return value (CHECKED_RETURN)".
- tools/version: pass to 6.1.1.

6.1.0:
- tools/fpng, fpng.icc: a pure header, thread safe, png writer.
- tools/toojpeg, toojpeg.icc: a pure header, thread safe, jpeg writer.
- tools/offscreen/session, sg_viewer: to handle offscreen graphics.
- tools/sg/gl2ps_action: revisit lightening logic to be closer than the OpenGL one.
- tools/sg/zb_action: revisit lightening logic to be closer than the OpenGL one.
- tools/sg/zb_action: handle blending (transparency).
- tools/sg/plots_viewer: handle blending (transparency).
- tools/zb/buffer: handle blending (transparency).
- tools/sg/torche, head_light, gl2ps_action, render_action: handle ambient color lightening.
- toolx/sg/GL_action: handle ambient color lightening.
- tools/sg/write_paper: gl2ps, zb formats: handle transparency.
- tools/gl2ps: handle the TOOLS_GL2PS_PORTABLE_SORT to be able to produce same output
  file on all platforms. (Related to the fact that qsort, for "same objects", may not
  produce the same "equal" sub lists on all platforms).

- tools/typedefs, rroot/file, wroot/file and toolx/Windows/glarea, Qt/session, mpi/wrmpi:
  some #ifdef for MinGW. The ones in wroot/file are important to produce good .root files.
- tools/gl2ps: replace the usage of sprintf, by strcpy or std::ostringstream.

- Fixed compilation warnings on Intel-icx compiler for variables
  set but not used in plotter::rep_bins2D_xy_random_one() and
  plots::update_sg().
- Apply patch for MinGW from [GitHub PR 51](https://github.com/Geant4/geant4/pull/51)
- toolx/X11/base_session: show_window(): check that the window is not already mapped. (Else it hangs in the XIfEvent).

- tools/version: pass to 6.1.0.

6.0.1:
- intel-icx: fix compilation warnings for the variable "size"
  set but not used glutess/render/static_RenderFan, static_RenderStrip.
- intel-icx: fix compilation warnings #3179: deprecated conversion of string literal to char*.
- tools/typedefs, rroot/file, wroot/file and toolx/Windows/glarea, Qt/session, mpi/wrmpi:
  some #ifdef for MinGW. The ones in wroot/file are importants to produce good .root files.
- tools/gl2ps: replace the usage of sprintf, by strcpy or std::ostringstream.
- Fixed compilation warnings on Intel-icx compiler for variables
  set but not used in plotter::rep_bins2D_xy_random_one() and
  plots::update_sg().
- Apply patch for MinGW from [GitHub PR 51](https://github.com/Geant4/geant4/pull/51)
- toolx/X11/base_session: show_window(): check that the window is not already mapped. (Else it hangs in the XIfEvent).
- tools/version: pass to 6.0.1.

6.0.0: toolx directory and namespace.
- have code related to "externals" under toolx directory and namespaced with toolx. It concerns code related to Qt, Windows, X11, Xt, OpenGL, hdf5, expat, mpi, zlib.
- tools/version: have 6.0.0.

5.7.1: patches for Coverity.
- gl2ps: gl2psPrintPostScriptPixmap(): pass greyscale, nbit in arguments to avoid a "Logically dead code" issue.
- gl2ps: gl2psPDFgroupListInit(): have a gl2psPDFgroupObjectInit(&gro) to avoid an "Uninitialized pointer read" issue.
- gl2ps: remove commented out code about a "class gl2ps" at end.
- sg/text: corrections in update_sg() about "Copy-paste error". 

5.7.0: have a thread safe gl2ps.
- gl2ps, gl2ps_def.h, sg/gl2ps_action: have a thread safe version of gl2ps-1.4.2.
- gl2ps_begin.icc, gl2ps_end.icc: remove.
- tools/version: have 5.7.0.

5.6.3: intel: rename some local variables to avoid the 'hidden variable' warnings.
- charp_out,long_out,out_error,pointer,sprintf,typedefs,
  raxml_out,stype,colorf,histo/base_histo,histo/dps,rtausmeui,smatch,tess_contour,
  columns,get_env,hdf5/T_tools,path,rcsv_ntuple,srep,strip,value,value.icc,
  args,s2time,tos,waxml/histos,waxml/ntuple,buf2lines,spline,tosu,xml/aidas,
  lina/MATCOM,lina/vec2,lina/vec3,lina/vec4,lina/geom3,
  xml/aidas,xml/styles,xml/loader,xml/tree,xml/wrap_viewplot_fonts_google_style
  mpi/world,mpi/wrmpi,
  sg/path,sg/style_parser,sg/base_tex,sg/group,sg/node,sg/plotter,sg/f2plot,sg/h2plot,
  sg/infos_box,sg/style_colormap,
  rroot/base_leaf,rroot/branch,rroot/buffer,rroot/dummy,
  rroot/info,rroot/named,rroot/rbuf,
  rroot/branch_element,rroot/branch_object,rroot/buffer,
  rroot/graph,rroot/info,
  rroot/leaf,rroot/matrix,rroot/obj_array,rroot/obj_list,rroot/stl_vector,
  rroot/streamers rroot/tree rroot/tree_index rroot/vector3,
  wroot/date,wroot/element,sg/senum,
  wroot/mpi_ntuple_column_wise,wroot/mpi_ntuple_row_wise,
  Windows/glarea: rename some local variables (mainly "s" that clashes with CLHEP::s).
- tools/version: pass to 5.6.3.

5.6.2:
- tools/version: pass to 5.6.2.
- tools/gl2ps: in tools_gl2psFindRoot(), have a '*root = 0" initialisation before the first in "if()" return.
- tools/gl2ps: in tools_gl2psBuildBspTree(), initialize *prim to NULL.

5.6.1:
- tools/version: pass to 5.6.1
- tools/typedefs: static const char s[] => static const char s_v[] to quiet "hides variable" warnings with intel compiler.
- tools/sg/text_hershey: in decode_PAW(), font_type font => font_type hershey_font to quiet "hides variable" warnings with intel compiler.
- tools/rroot/rall: in find_dir(), have a "delete tdir;" in the "if(!tdir->stream(b)) {}". Seen by Coverity.

5.6.0:
- tools/tokenize: to help parsing some Geant4 commands "new value".
- tools/sg/event_dispatcher,bcbk,ecbk,cbks: classes to have a mechanism in G4/G4ToolsSGSceneHandler
  so that tools::sg::plots be properly resized when doing a mouse G4Viewer resize.
- tools/sg/plotter_some_styles: have the plotting setup of ROOT_default, hippodraw, style done in C++
  to avoid the usage of expat for these defaults styles.
- tools/sg/light_off: a node to switch off light in a sub scene graph.
- tools/Qt/sg_viewer: in dstor, reset the "interactor" to null in the glarea.
- tools/waxml/ntuple: add code to write a column of vectors of strings.
- tools/hdf5/ntuple: add code to write/read a column of vectors of strings.
- add back: tools/rroot/rall, THistogram.
- sg//base_freetype, text_freetype: modifs to be able to handle embedded fonts.
- font/lato_regular_ttf: embedded lato_regular.ttf font.
- font/roboto_bold_ttf: embedded roboto_bold.ttf font.
- sg/text_hershey_marker, text_freetype_marker: modifs to avoid 'squashing' of text.
- sg/render_action, GL_viewer, atb_vertices: handle transparency by using a two pass rendering method.
- sg/gl2ps_actions/2format: avoid a warning if returning false.
- have 5.6.0 in tools/version.

5.5.0:
 - in geant4 repository remove the files not used by other Geant4 categories.
 - in geant4 repository remove the test directory.
 - in geant4 repository remove the not used src/csz_inflate.cc file but have a dummy.cc for Geant4/cmake.
 - tools/zb/polygon: in scan() : initialize ET,AET,SLLBlock, before calling
   CreateETandAET, to quiet g++-11 -Wmaybe-uninitialized warnings.

5.4.0 : more windowing material for the G4/vis/ToolsSG drivers.
 - tools/[Qt,Xt,Windows] : interactor interface logic.
 - tools/sg/device_interactor, keys : to handle key/mouse/wheel events.
 - tools/sg/event : key_up_event, key_down_event, wheel_rotate_event.
 - tools/lina/eqT : remove since duplicated with tools/eqT.
 - tools/sg/text_freetype_marker : handle font_pixmap modeling.
 - tools/OpenGL : BUSH_USE_AGL => TOOLS_USE_AGL. To be able to enforce the usage of Apple/OpenGL on macOS.
 - tools/Cocoa/session.hm, sg_viewer.hm. For Geant4/G4ToolsSGCocoaGLES driver.
 - tools/Qt/session, sg_viewer. For Geant4/G4ToolsSGQtGLES driver.
 - tools/Xt/session, sg_viewer. For Geant4/G4ToolsSGXtGLES driver.
 - tools/Xt/OpenGLArea : have a C++ version of the C OpenGLArea widget.
 - tools/Xt/OpenGLArea.h, OpenGLAreaP.h, OpenGLArea.c : remove.
 - tools/Windows/sg_viewer : have a win_render() method.
 - tools/app, sys/dir : to be able to build macOS .app for examples doing UI and vis with Cocoa
   and AGL or Metal.
 - tools/get_env : have "get env" things in a dedicated file.
 - tools/log_file, sys/process : to help debuggin macOS .app applications.
 - test/build : have 'cppflags="${cppflags} -I../include"' for g4tools within G4 source/externals.
 - test/cpp/rxrayfluo.cpp, build : rm this program (since it needs a xrayfluo.root file not delivered with g4tools).
 - test/cpp/test/fonts_microsoft : rm directory.

5.3.1 :
 - tools/png : use png_get_image_[width,height] methods. Then it works with recent png libs.
 - toos/sg/GL_plots_viewer : pass the ttf factory in constructor.

5.3.0 : have test/cpp/polyhedron_X11.cpp, test/cpp/polyhedron_Windows.cpp, test/cpp/polyhedron_metal.mm.
 - tools/sg : text_hershey_marker, text_freetype_marker : to handle G4/vis/tools_sg/G4Text.

 - tools/sg/gl_manager => tools/sg/GL_manager in the github repository.
 - tools/lina : mat3, mat3d, mat3f, mat4d, rotd, vec4d.
 - tools/hep : pbp.icc, polyhedron, polyhedron.icc, sf_polyhedron.
 - tools/sg : color, polyhedron, tessellate.
 - tools/carray.

 - tools/X11 : sg_viewer.
 - test/cpp : build : modifs to build polyhedron_X11 program.
 - test/cpp : use_X11, use_GLX, use_jpeg, use_png, find_inc, find_lib.
 - test/cpp : polyhedron_X11.cpp, polyhedron_common.icc

 - tools/Cocoa, tools/metal.
 - test/cpp : build : modifs to build polyhedron_metal program.
 - test/cpp : use_metal
 - test/cpp : polyhedron_metal.mm

 - tools/Windows : sg_viewer, session, window, glarea.
 - test/cpp : build : modifs to build polyhedron_Windows program.
 - test/cpp : use_WGL, use_Windows
 - test/cpp : polyhedron_Windows.cpp

5.2.3 :
 - tools/wroot/infos, branch, rroot/branch : Lenght => Length in comments.
 - tools/hatcher.icc : pow, sqrt, tan => std::pow, std::sqrt, std::tan.
 - tools/wps : retreive => retrieve.
 - tools/wcsv_ntuple, value.icc, test/cpp/wcsv_ntuple.cpp : unknow => unkown.

5.2.2 :
 - tools/histo/h2,h3 : get_bin_content : bugfix : have '&' in "get" arguments.
   Thanks to Dmitri Konstantinov and Grigory Latyshev for the report.

5.2.1 :
 - fonts : have lato_regular.ttf file and license_font_lato.txt, readme_font_lato.txt texts taken from :
     https://www.latofonts.com/lato-free-fonts


5.2.0 :
 //////////////////////////////////////////////////
 /// use google fonts : ///////////////////////////
 //////////////////////////////////////////////////
 - tools/test/cpp : viewplot.cpp and test/virewplot_ttf.cpp : use wrap_viewplot_fonts_google_style.
 - tools/xml : viewplot.style replaced with viewplot_fonts_google.style,
   wrap_viewplot_style replaced by wrap_viewplot_fonts_google_style in order to use
   roboto_bold.ttf instead of arialbd.ttf and lato_regular.ttf instead of helvetica.ttf.
 - tools/sg/strings : font_roboto_bold() and lato_regular() functions.
 - tools/test/cpp : add license_font_[roboto,lato].txt files.
 - tools/test/cpp : add roboto_bold.ttf, lato_regular.ttf.
 - tools/test/cpp : rm arialbd.ttf, helvetica.ttf.

 //////////////////////////////////////////////////
 /// hdf5 : ///////////////////////////////////////
 //////////////////////////////////////////////////
 - tools/hdf5/tools : replace the usage of free() by tools_H5free_memory(). (And then avoid a crash if using recent hdf5 lib).
 - tools/hdf5/hdf5_h : #define tools_H5free_memory according hdf5 version.

 //////////////////////////////////////////////////
 /// ROOT file format : ///////////////////////////
 //////////////////////////////////////////////////
 - tools/rroot/iros, obj_list : inherit std::vector only protected to avoid using std::vector::clear()
   (instead of [iros,obj_list].cleanup()).

 //////////////////////////////////////////////////
 /// around graphics : ////////////////////////////
 //////////////////////////////////////////////////
 - tools/sg/plotter : handle "min/max log logic" for the functions.
 - tools/sg/text, infos_box : add font_lato_regular_ttf, font_roboto_bold_ttf in font fields options.
 - tools/sg/state, GL_action, normal : handle m_normal field.
 - tools/sg/head_light : in render(), mtx.mul_3f(dx,dy,dz) => mtx.mul_dir_3f(dx,dy,dz)
 - tools/sg/holder : handle m_own.
 - tools/sg/primitive_visitor, render_action, bbox_action, pick_action, gl2ps_action, zb_action, gstos_add, glprims :
   handle normal for point, line, triangle.
 - tools/sg/action, visible_action win_action write_action, read_action search_action, gl2ps_action,
   matrix_action, render_action, get_matrix_action, event_action, bbox_action, pick_action : have a safe cast logic.

 //////////////////////////////////////////////////
 /// various : ////////////////////////////////////
 //////////////////////////////////////////////////
 - src/csz_inflate.cc : init some variable to quiet Coverity.
 - * : cosmetic : rm trailing spaces.

5.1.0:
 - tools/sg/plotter, data_axis, plottables, h2plot : corrections to handle automatic min/max in case of log scale.
 - tools/histo/base_histo : [min,max]_bin_height_with_entries(). Used by the plotter.
 - tools/wcsv_histo : h_header(), p_header() functions.
 - tools/gl2ps : cast ~1UL to double.
 - tools/test/cpp/waxml.cpp, wcsv_histo.cpp,wcsv_ntuple.cpp,wcsv_ntuple_booking.cpp :
   have output file name of the form : out_<app>_<etc>.[aida,csv]
 - tools/test/*.ps : new version to take into account modifs done in the plotter.
 - various modifications coming from other usage of inlib/exlib.

5.0.5:
 - tools/gl2ps : gl2psPDFgroupListWriteXObjectResources : add a break at end of case GL2PS_PIXMAP.

5.0.4:
 - tools/sg/vertices : fix a shadow warning in the add(vector<float>&) method.

5.0.3:
 - tools/gl2ps : tools_gl2psPrintPostScriptPixmap : quiet coverity.
 - tools/rroot/vector3 : quiet coverity about uninited variables.
 - tools/zb/buffer : get_pixel() : quiet coverity : set a_pixel=0 in case args out of range.
 - tools/sg/text : quiet coverity : a bxw => bxh.
 - tools/sg/axis, sg/plotter : set_encoding(), set_encoding_none().
 - tools/sg/render_gsots : init fields in cp cstor and operator=.
 - tools/sg/plotter : add fields : title_box_[width,height,x_margin,y_margin].

5.0.2:
 - tools/sg/tools : add_string_opt : handle axis label of format "10^%d?" in case of freetype font.

5.0.1 :
 - gl2ps_def.h, gl2ps_begin.icc, Xt/OpenGLArea.c : /*/////*/ => /*-----*/.
 - lina/vec3, vec3f : cos_angle.

5.0.0 : ROOT format : restore a "per event/row view" for the ntuple column-wise in MT and MPI.
        batch plotting : fixes to avoid labels overlap when having a grid of plotters.
        MPI : fix a memory leak.
        scene graph : have material for interactive plotting.
        include modifications coming from other usage of inlib/exlib, for example, in rroot, to be able to read TClonesArray.

 //////////////////////////////////////////////////
 /// ROOT file format : ///////////////////////////
 /// restore event view in MT/MPI column_wise : ///
 //////////////////////////////////////////////////
 - wroot/base_pntuple, base_pntuple_column_wise, branch, ntuple,
   mpi_basket_add, mpi_ntuple_column_wise, mpi_ntuple_row_wise, mpi_send_basket, mpi_protocol,
   mt_ntuple_column_wise, mt_ntuple_row_wise, mt_basket_add,  :
     modification to handle the staging of baskets in MT and MPI
     (stored in in branch::std::vector<basket*> m_parallel_baskets;)

 //////////////////////////////////////////////////
 /// ROOT file format : ///////////////////////////
 //////////////////////////////////////////////////
 - wroot/ntuple : mpi_add_basket : have "delete basket" in case some "branch.add_basket" failed.
 - wroot/directory : keys() getter.
 - wroot/file, infos : StreamerInfo => streamer_info.
 - wroot/info : StreamerInfo => streamer_info. Then have consistent casing relative to the rest for this class.
 - wroot/element : streamer_info => streamer__info : in order to reuse the name for our reimplementation
   of "TStreamerInfo" (then streamer_info for us) class.

 - rroot/buffer : m_map_objs(true) : have obj in map the default when reading.
 - rroot/info, cids, streamers : as for wroot, StreamerInfo => streamer_info to have consistent casing.
 - rroot/info : in stream() : handle "obj_created" after pointer_stream().
 - rroot/THistogram, rall : to handle old OpenScientist/AIDA files.
 - rroot/tree_manip : find_tree : handle a_map_objs argument, to be able to control if read objects are handled in the buffer map or not.
 - rroot/ifac, fac, iros, obj_list, hash_list, obj_array, streamers, branch, tree : a factory does not handle the ownership of object. (Having
   that introduced a lot of confusion about the ownership of read objects when implementing the "clone array" logic). Now iros, list, obj_array
   handle (or not) the ownership of what they read (according to what buffer.read_object returns).
 - rroot/buffer : pointer_stream() : return (in "a_created" argument) if object had been created (by a factory) or not (existing in buffer map)).
 - rroot/buffer : dummy_TXxx_pointer_stream : if object created, delete it.
 - rroot/ntuple : read::intuple => read::icol(a_from) in copy constructors of columns.
 - rroot/ntuple : title(), number_of_entries() : implementation of the virtual intuple methods.
 - rrrot/branch : begin of reading clone arrays.
 - rroot/tree : be able to read "version>=20" trees.
 - rroot/vector3, cids, fac : to read TVector3.
 - rroot/list => obj_list.
 - rroot/file : dump_streamer_infos(), find_streamer_info(), read_streamer_infos_data() : to read TClonesArray of TVector3 in a generic way.
 - rroot/branch_element : to read TClonesArray of TVector3 in a generic way.

 //////////////////////////////////////////////////
 /// around graphics : ////////////////////////////
 //////////////////////////////////////////////////
 - new files :
   o tools/sg/GL_action, GL_viewer, base_tex, blend, cloud2plot, cloud2plot_cp, cursor_shape, ellipse, f2plot
     fit2plot, gl, gstos_add, h2plot_cp, GL_plots_viewer, plotter_style, render_gstos, render_manager, tex_quadrilateral
     tex_rect, xy2plot, zb_action, zb_manager.
   o tools/curve, glbuf, OpenGL, plotter_common.icc.
   o tools/hdf5/group_exits.
   o tools/Qt/plots_glarea.
   o tools/Xt/OpenGLarea[.h,P.h,c], tools.
   o tools/X11/base_session,session,dispatcher.
   o for plotter printing : image, image_reader, paper_format, xpm, jpeg, png.
 - sg/axis : two new fields to avoid label overlapping :
     labels_no_overlap_automated (true by default)
     labels_gap : amount of gap to set betwen labels when removing overlaps.
 - sg/viewer : use cursor_shape include (instead of local enum).
 - sg/viewer : get_clear_color().
 - sg/vertices, atb_vertices : have the gstos mode (to store primitives in GPU) on vertices.
 - sg/field, field_desc, snode, vertices, torche, text_hershey, text_freetype, text, ortho, normal, style, plots, matrix, plotter, rgba, markers,
   line_set, line_style, legend, infos_box, holder, atb_vertices, axis, back_area, _switch, base_camera, base_text, draw_style :
   use a thread safe way to declare fields in node_desc_fields().
 - sg/text, text_freetype, style, text_valop, text_style, style_parser, infos_box : handle modeling font_pixmap.
 - sg/state, render_action, GL_manager : handle GL_BLEND.
 - sg/* : gl_manager => render_manager. manager_zb => zb_manager. render_zb => zb_action.
 - sg/sf_mat4f : set_rotate.
 - sg/strings : more global strings for sg_serv mode.
 - sg/plots : handle layout logic in set_plotter_layout() method.
 - sg/plotter, plottables : handle primitive_ellipse plottable.
 - sg/group : clear() : use safe_reverse_clear().
 - sg/primitive_visitor : add_texture().
 - sg/event : be able to cast by id (more faster than string).
 - sg/cube : inherit render_gsto to handle gsto.
 - sg/draw_style : enum e_style => draw_type.
 - sg/glprims : add utilities line_strip_to_lines(), line_loop_to_lines(), triangle_fan_to_triangles[_2to3]() methods.
 - columns : following a Coverity report (99671), handle "tree*" instead of "tree" in the std::vector m_sub field of class tree.
 - sg/line_style : from/to string : width, pattern on sp.width, pattern.
 - sg/style_parser : handle width, pattern.
 - sg/axis, plotter : touched, reset_touched by taking into account styles.
 - sg/node : touched, reset_touched virtual. For axis and plotter.
 - sg/gl2ps_action : a gl2ps render action using the below pure header gl2ps.
 - gl2ps, gl2ps_def.h, gl2ps_begin.icc, gl2ps_end.icc : pure header gl2ps.

 //////////////////////////////////////////////////
 /// around histos, nutples : /////////////////////
 //////////////////////////////////////////////////
 - tools/aida_ntuple, xml/aidas : cols() => columns(). columns() => number_of_columns().
 - tools/aida_ntuple : column_min(), column_max().
 - tools/ntuple_binding : add_column_vec().
 - tools/ntuple_booking : add_column_vec(), add_column(T& user variable).
 - tools/rcsv_ntuple : add title(). number_of_entries() methods.
 - tools/rntuple : intuple : virtual tile(), number_of_entries() methods.
 - tools/rntuple : add methods number_of_columns, column_names, find_icol_case_insensitive, find_column, column_is_of_type, column_min,max.
 - tools/histo/base_histo : add get_Sw_Sw2, get_all_Sw_Sw2 methods.
 - tools/histo/p1 : add set_bin_content, get_bin_content methods. (It permits a "full access" to all infos of a bin).

 //////////////////////////////////////////////////
 /// hdf5 : ///////////////////////////////////////
 //////////////////////////////////////////////////
 - tools/hdf5 :
   T_tools, ntuple, pages : handle "vlen" variable length array.
   store : in write mode, add "type" "object" attribute. Increment write version number (1 =>2).

 //////////////////////////////////////////////////
 /// various : ////////////////////////////////////
 //////////////////////////////////////////////////
 - tools/zlib : have the TOOLS_USE_OUREX_ZLIB logic.
 - tools/xml/styles : handle "copy" keyword.
 - tools/args : insert_begin() to insert an arg at head of list.
 - tools/args : file() to get the last argument as a file name.
 - tools/test : have const ref (instead of const only).
 - tools/vmanip : use size_t.
 - tools/strip : handle "all chars are the same" case.
 - tools/value : m_id => m_itag.
 - tools/mathd : dcos, dsin, dpow, ldfabs (not on ANDROID).
 - tools/mapmanip : add_unique().
 - tools/glutess/* : GLU_[FALSE,TRUE] => TOOLS_GLU_[FALSE,TRUE] to avdoid clash with glu.h.
 - tools/cmathT : remove.
 - tools/colorf : handle cpp TOOLS_MEM_ATEXIT if wanting to have a correct counting of statics with TOOLS_MEM at exit.
 - tools/colorfs : in cpp TOOLS_COLORFS_STAT remove not used r,g,b arguments.
 - tools/colors : add (some of) CERN-ROOT colors.
 - tools/cstr : add str_lcpy().
 - tools/eqT : add vector_are_equal().
 - tools/file : add is_kumac().
 - tools/file_format : handle .kumac extension.
 - tools/system : iOS : do not compile ::system().
 - tools/system : execute() => std_system(). repenv() => rep_env().

 //////////////////////////////////////////////////
 /// test programs (test/cpp) : ///////////////////
 //////////////////////////////////////////////////
 - utest*.ps, wrap*_ps : new versions to take into account modifications to avoid automatically overlap of labels
   in each plotter when having a grid of plotters.
 - read_root.iccc, mpi_ntuple.cpp, mt_ntuple.cpp, mt_ntuple_ref.cpp, mt_ntuple_seq.cpp :
   arguments -row_mode, -basket_entries and flag row_wise => read_check_row_wise : to be able to handle various writting
   mode of ntuple (column-wise, column-wise-row-mode, row-wise).
 - wcsv_histo.cpp : -no_header argument.
 - build, vc++, find_link_exe, use_* : use the vc++ shell script to build with VisualC++.
   It permits to build on CYGWIN but also on WSL (Microsoft/ubuntu) by using VisualC++.
 - rroot.cpp, wroot.cpp, utest.cpp, rxrayfluo.cpp : handle TOOLS_MEM to be able, if built with "-mem", to have a decount, at end,
   of created/deleted objects. (If all is ok, the decount should be "0", and nothing be printed).
 - raxml.cpp : cols() => columns().
 - hdf5_histos.cpp : test handling of a directory.
 - threads : have exit_set() to handle with mutex.lock the query of "a_args.m_exit".

////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
 4.2.3 :
 - test/cpp/use_freetype : -DDTOOLS_USE_OUREX_FREETYPE => -DTOOLS_USE_OUREX_FREETYPE.
 - test/cpp/test/build : be able to have -our_freetype to not use system freetype.
   Used at LAL for utest unitary tests using freetype in order to compare with
   reference .ps files produced on macOS with ourex/freetype.
 - test/cpp/test/use_freetype : handle build_use_our_freetype variable.

 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_<enum>() 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<T>.
 - 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<xxx> : in order to compile hdf5 related code with 1.18 API.
 - tools/hdf5 : * : use tools_H5<xxx>.
 - 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_<name> 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::<color>() -> colorf_<color>().
 - test/cpp/wroot.cpp : -megas option.
 - test/cpp/mpi.cpp -> mpi_histos.cpp.
 - test/cpp/rroot.cpp, rxrayfluo.cpp :
     tools::rroot::key_to_<obj>(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<T_t>::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 <class H2,class H1>
   instead of :
     template <class TC,class TO,class TN,class TW,class TH>

 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 <mpi.h>
     #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<T> and column_element<T>.
 - tools/rcsv_ntuple : Windows : rcsv.cpp crashed. It came from a lack of "id casting" in the
   tools::rcsv::ntuple::column<T> 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<unsigned int> 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.


