Import Geant4 11.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2024-12-06 11:11:40 +01:00
parent e58e650b32
commit 32390e802b
1984 changed files with 98713 additions and 83996 deletions
+28
View File
@@ -6,6 +6,34 @@ It must **not** be used as a substitute for writing good git commit messages!
-------------------------------------------------------------------------------
## 2024-10-24 Guy Barrand (g4tools-V11-02-05)
- 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.
## 2024-09-26 Ben Morgan (g4tools-V11-02-04)
- Fix typo in member name that is picked up by clang19 compilation on Linux
- Discovered/fixed by ATLAS (Johannes Elmsheuser) in Geant4 10.6.3(!) (ATLASSIM-7265),
but remains in current version.
## 2024-09-04 Guy Barrand (g4tools-V11-02-03)
- 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.
## 2024-07-11 Guy Barrand (g4tools-V11-02-02)
- 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.
- tools/version: pass to 6.3.1.
## 2024-03-13 Gabriele Cosmo (g4tools-V11-02-01)
- Fixed string assignments in 'window' and 'pixwin', to support either UNICODE
or UTF-16 encoding on Windows. Addressing problem report #2599.
+26
View File
@@ -1,3 +1,29 @@
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
+2 -1
View File
@@ -5,6 +5,7 @@
#define tools_path
#include <string>
#include <utility>
namespace tools {
@@ -28,7 +29,7 @@ inline void nosuffix(const std::string& a_string,std::string& a_value,bool a_bac
std::string _s = a_string.substr(pos,a_string.size()-pos);
std::string::size_type dot_pos = a_back?_s.rfind('.'):_s.find('.');
if(dot_pos==std::string::npos) {
a_value = _s;
a_value = std::move(_s);
} else {
a_value = _s.substr(0,dot_pos);
}
+9 -8
View File
@@ -22,6 +22,7 @@
#endif
#include <istream>
#include <utility>
namespace tools {
namespace rcsv {
@@ -196,7 +197,7 @@ public:
}
planes.push_back(value);
}
hdata.m_in_range_plane_Sxyw = planes;
hdata.m_in_range_plane_Sxyw = std::move(planes);
} else if(_words[0]=="#bin_number") {
if(_words.size()!=2) {
@@ -335,8 +336,8 @@ public:
tools::histo::profile_data<double,unsigned int,unsigned int,double,double> pdata(hdata); //to be filled correctly.
if(is_profile) {
pdata.m_is_profile = true;
pdata.m_bin_Svw = _bin_Svw;
pdata.m_bin_Sv2w = _bin_Sv2w;
pdata.m_bin_Svw = std::move(_bin_Svw);
pdata.m_bin_Sv2w = std::move(_bin_Sv2w);
pdata.m_cut_v = _cut_v;
pdata.m_min_v = _min_v;
pdata.m_max_v = _max_v;
@@ -359,7 +360,7 @@ public:
<< ", mean " << h->mean() << ", rms " << h->rms()
<< std::endl;
}
a_class = _class;
a_class = std::move(_class);
a_obj = h;
} else if(_class==tools::histo::h2d::s_class()) {
@@ -380,7 +381,7 @@ public:
<< ", mean_y " << h->mean_y() << ", rms_y " << h->rms_y()
<< std::endl;
}
a_class = _class;
a_class = std::move(_class);
a_obj = h;
} else if(_class==tools::histo::h3d::s_class()) {
@@ -402,7 +403,7 @@ public:
<< ", mean_z " << h->mean_z() << ", rms_z " << h->rms_z()
<< std::endl;
}
a_class = _class;
a_class = std::move(_class);
a_obj = h;
} else if(_class==tools::histo::p1d::s_class()) {
@@ -422,7 +423,7 @@ public:
<< ", mean " << h->mean() << ", rms " << h->rms()
<< std::endl;
}
a_class = _class;
a_class = std::move(_class);
a_obj = h;
} else if(_class==tools::histo::p2d::s_class()) {
@@ -443,7 +444,7 @@ public:
<< ", mean_y " << h->mean_y() << ", rms_y " << h->rms_y()
<< std::endl;
}
a_class = _class;
a_class = std::move(_class);
a_obj = h;
/*
+3 -1
View File
@@ -36,6 +36,8 @@
#include "mem"
#endif
#include <utility>
namespace tools {
namespace rcsv {
@@ -599,7 +601,7 @@ public:
if(!read_commented_header(a_out,m_reader,_title,_sep,_vec_sep,_cols)) return false;
m_sep = _sep;
m_title = _title;
m_title = std::move(_title);
tools_vforcit(col_desc,_cols,it) {
const std::string& type = (*it).first;
+2 -1
View File
@@ -16,6 +16,7 @@
#include <string>
#include <vector>
#include <ostream>
#include <utility>
// in TOOLS_STL, we don't have (yet) a performant map.
@@ -242,7 +243,7 @@ protected:
return false;
}
a_class = scls;
a_class = std::move(scls);
a_bcnt = (first_int & ~kByteCountMask());
if(m_verbose) {
+5 -5
View File
@@ -28,7 +28,7 @@
#include <list>
#include <cmath> //::log10, ::fabs.
//#include "../rtausmed"
#include <utility>
namespace tools {
namespace rroot {
@@ -155,7 +155,7 @@ inline bool TH_read_1D(buffer& a_buffer,hd_data& a_data,
std::string title;
if(!Named_stream(a_buffer,name,title)) return false;
a_data.m_title = title;
a_data.m_title = std::move(title);
{short color,style,width;
if(!AttLine_stream(a_buffer,color,style,width)) return false;}
@@ -436,7 +436,7 @@ inline histo::h1d* TH1D_stream(buffer& a_buffer){
if(!a_buffer.check_byte_count(_s,_c,"TH1D")) return 0;
unsigned int binn = data.m_bin_number;
data.m_bin_Sw = bins;
data.m_bin_Sw = std::move(bins);
data.m_bin_entries.resize(binn,0);
{std::vector<double> empty;
@@ -555,7 +555,7 @@ inline histo::h2d* TH2D_stream(buffer& a_buffer){
if(!a_buffer.check_byte_count(_s,_c,"TH2D")) return 0;
unsigned int binn = data.m_bin_number;
data.m_bin_Sw = bins;
data.m_bin_Sw = std::move(bins);
data.m_bin_entries.resize(binn,0);
{std::vector<double> empty;
@@ -614,7 +614,7 @@ inline histo::h3d* TH3D_stream(buffer& a_buffer){
if(!a_buffer.check_byte_count(_s,_c,"TH3D")) return 0;
unsigned int binn = data.m_bin_number;
data.m_bin_Sw = bins;
data.m_bin_Sw = std::move(bins);
data.m_bin_entries.resize(binn,0);
{std::vector<double> empty;
+1 -1
View File
@@ -845,7 +845,7 @@ protected:
float b = first_overlap-a*first_scale;
//float wanted_scale = -b/a; //zero overlap.
float wanted_gap = width.value()*labels_gap.value();
float wanted_scale = (-wanted_gap-b)/a;
float wanted_scale = (a==0.0f) ? 1 : (-wanted_gap-b)/a; //a==0.0f should not happen.
if(wanted_scale<=0) wanted_scale = 1; // this if() should not happen.
wanted_scale /= second_scale;
{tools_vforcit(matrix*,m_labels_mtxs,it) {
+4 -2
View File
@@ -39,6 +39,8 @@
#include "../sys/atime"
#endif
#include <utility>
namespace tools {
namespace sg {
@@ -5348,7 +5350,7 @@ protected: //vis bins
_ws.push_back(value);
}
}
ws = _ws;
ws = std::move(_ws);
linen = ws.size()/2;
}
@@ -7181,7 +7183,7 @@ protected: //rep
yy = verify_log(yy,ymin,dy,ylog);
v.push_back(vec3f(xx,yy,a_zz+zz));
}
contourVector.push_back(v);
contourVector.push_back(std::move(v));
}
}
+3 -1
View File
@@ -19,6 +19,8 @@
#include "../colorf"
#include "../S_STRING"
#include <utility>
namespace tools {
namespace sg {
@@ -558,7 +560,7 @@ public:
tools_vforcit(std::string,strings.values(),it) {
std::string scut;
m_base_text->truncate(*it,th,fw,scut);
labcut.push_back(scut);
labcut.push_back(std::move(scut));
}
m_base_text->strings = labcut;}
}
+2 -1
View File
@@ -6,6 +6,7 @@
#include <string>
#include <vector>
#include <utility>
#include "forit"
@@ -37,7 +38,7 @@ inline bool replace(std::string& a_string,const std::string& a_old,const std::st
status = true;
}
}
a_string = snew;
a_string = std::move(snew);
return status;
}
+1 -1
View File
@@ -27,7 +27,7 @@ protected:
tess_contour(const tess_contour& a_from):m_out(a_from.m_out),m_triangles(a_from.m_triangles){}
tess_contour& operator=(const tess_contour&){return *this;}
public:
void getFilledArea(const std::vector<std::vector<vec3f> > aContour) {
void getFilledArea(const std::vector<std::vector<vec3f> >& aContour) {
m_triangles.clear();
m_combine_tmps.clear();
m_error = false;
+4 -4
View File
@@ -6,12 +6,12 @@
#define TOOLS_MAJOR_VERSION 6
#define TOOLS_MINOR_VERSION 3
#define TOOLS_PATCH_VERSION 0
#define TOOLS_VERSION "6.3.0"
#define TOOLS_VERSION_VRP "v6r3p0"
#define TOOLS_PATCH_VERSION 3
#define TOOLS_VERSION "6.3.3"
#define TOOLS_VERSION_VRP "v6r3p3"
namespace tools {
inline unsigned int version() {return 60300;}
inline unsigned int version() {return 60303;}
}
#endif
+1 -10
View File
@@ -183,6 +183,7 @@ public:
uint32 last() const {return m_last;}
void set_nev(uint32 a_last,uint32 a_nev_buf_size,uint32 a_nev,const int* a_entry_offset,const int* a_displacement) {
//used in mpi_create_basket.
m_last = a_last;
m_nev_buf_size = a_nev_buf_size;
m_nev = a_nev;
@@ -306,16 +307,6 @@ public:
bool kdelete = false;
a_file.compress_buffer(m_data,kbuf,klen,kdelete);
if(klen>m_object_size) {
m_out << "tools::wroot::basket::write_on_file :"
<< " compression anomaly "
<< " m_object_size " << m_object_size
<< " klen " << klen
<< std::endl;
if(kdelete) delete [] kbuf;
return false;
}
if(!initialize(a_file,klen)) { //it will do a m_seek_key = a_file.END() and then a_file.set_END(...)
m_out << "tools::wroot::basket::write_on_file :"
<< " initialize() failed."
+2 -2
View File
@@ -151,13 +151,13 @@ public:
}
template <class T>
bool write_array(const std::vector<T> a_v) {
bool write_array(const std::vector<T>& a_v) {
if(!write((uint32)a_v.size())) return false;
return write_fast_array(a_v);
}
template <class T>
bool write_array2(const std::vector< std::vector<T> > a_v) {
bool write_array2(const std::vector< std::vector<T> >& a_v) {
if(!write((uint32)a_v.size())) return false;
for(unsigned int index=0;index<a_v.size();index++) {
if(!write_array(a_v[index])) return false;
+1 -1
View File
@@ -399,7 +399,7 @@
protected:
std_vector_column_ref(const std_vector_column_ref& a_from)
:icol(a_from)
,m_branch(a_from.m_barnch)
,m_branch(a_from.m_branch)
,m_ref(a_from.m_ref)
,m_leaf(0)
,m_leaf_count(0)
+23 -10
View File
@@ -167,7 +167,7 @@ public: //ifile
}
virtual uint32 compression() const {return m_compress;}
virtual void compress_buffer(const buffer& a_buffer,char*& a_kbuf,uint32& a_klen,bool& a_kdel) {
//NOTE : if(kdelete) delete [] kbuf;
//NOTE: if(kdelete) delete [] kbuf;
a_kbuf = 0;
a_klen = 0;
@@ -178,7 +178,7 @@ public: //ifile
if(cxlevel && (nbytes>256)) {
compress_func func;
if(!ziper('Z',func)) {
//m_out << "tools::wroot::directory::write_object :"
//m_out << "tools::wroot::file::compress_buffer :"
// << " zlib ziper not found."
// << std::endl;
a_kbuf = (char*)a_buffer.buf();
@@ -188,7 +188,8 @@ public: //ifile
const uint32 kMAXBUF = 0xffffff;
const uint32 HDRSIZE = 9;
uint32 nbuffers = nbytes/kMAXBUF;
uint32 buflen = nbytes+HDRSIZE*(nbuffers+1);
uint32 buf_out_size = kMAXBUF+HDRSIZE+kMAXBUF/2;
uint32 buflen = (nbuffers+1)*buf_out_size;
a_kbuf = new char[buflen];
a_kdel = true;
char* src = (char*)a_buffer.buf();
@@ -197,19 +198,30 @@ public: //ifile
for(uint32 i=0;i<=nbuffers;i++) {
uint32 bufmax = ((i == nbuffers) ? nbytes - nzip : kMAXBUF);
uint32 nout;
if(!zip(m_out,func,cxlevel,bufmax,src,bufmax,tgt,nout)) {
if(!zip(m_out,func,cxlevel,bufmax,src,buf_out_size,tgt,nout)) {
delete [] a_kbuf;
a_kbuf = (char*)a_buffer.buf();
a_klen = a_buffer.length();
a_kdel = false;
break;
return;
}
tgt += nout; //nout includes HDRSIZE
a_klen += nout;
src += kMAXBUF;
nzip += kMAXBUF;
}
//::printf("debug : compress : end : %u %u\n",nbytes,klen);
if(a_klen>=a_buffer.length()) {
//NOTE: It is in the ROOT/IO specification (see ROOT/TKey.cxx/TKey::ReadObj() code) that some data compressions
// are detected at read time by checking that "fObjlen > fNbytes-fKeylen", that is to say that
// the overall output size (fNbytes-fKeylen) is stricly lower than the input size (fObjlen).
// By using the zlib-ng compression library, we saw that we may fall on cases where the overall
// output size (a_klen here at this point) may be equal to the input size (a_buffer.lengt()) which
// induces problem when reading back the data with ROOT. Then the upper test checks and protects against that.
delete [] a_kbuf;
a_kbuf = (char*)a_buffer.buf();
a_klen = a_buffer.length();
a_kdel = false;
}
}
} else {
a_kbuf = (char*)a_buffer.buf();
@@ -714,14 +726,14 @@ protected:
const uint32 HDRSIZE = 9;
if(a_tgtsize<HDRSIZE) {
a_out << "tools::wroot::directory::zip :"
a_out << "tools::wroot::file::zip :"
<< " target buffer too small."
<< std::endl;
a_irep = 0;
return false;
}
if(a_srcsize>0xffffff) {
a_out << "tools::wroot::directory::zip :"
a_out << "tools::wroot::file::zip :"
<< " source buffer too big."
<< std::endl;
a_irep = 0;
@@ -733,14 +745,15 @@ protected:
a_srcsize,a_src,
a_tgtsize,a_tgt+HDRSIZE,
out_size)) {
a_out << "tools::wroot::directory::zip :"
a_out << "tools::wroot::file::zip :"
<< " zipper failed."
<< std::endl;
a_irep = 0;
return false;
}
if((HDRSIZE+out_size)>a_tgtsize) {
a_out << "tools::wroot::directory::zip :"
a_out << "tools::wroot::file::zip :"
<< " target buffer overflow."
<< std::endl;
a_irep = 0;
+2 -1
View File
@@ -24,6 +24,7 @@
#include <vector>
#include <map>
#include <utility>
namespace tools {
namespace xml {
@@ -301,7 +302,7 @@ public: //used in BatchLab::XML_DataReader.
bins[iaxis] = num;
mns[iaxis] = mn;
mxs[iaxis] = mx;
edges[iaxis] = borders;
edges[iaxis] = std::move(borders);
if(variableBins) isVariableBins = true;
found++;
}