Errors compiling mergeHistograms.cc

Hi,

I am currently compiling g4see using the following instructions: 2. How To Compile

I am running on an M1 MacBookPro using Ventura 13.4.1, using ROOT Version: 6.28/04, cmake version 3.26.4, Python 3.11.4, and geant4-v11.1.0.

When running the make -j10 command I receive the following warnings/errors:

/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:40:13: warning: default member initializer for non-static data member is a C++11 extension [-Wc++11-extensions]
double bin = 0.;
^
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:41:15: warning: default member initializer for non-static data member is a C++11 extension [-Wc++11-extensions]
double count = 0.;
^
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:42:18: warning: default member initializer for non-static data member is a C++11 extension [-Wc++11-extensions]
double count_sq = 0.;
^
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:103:36: error: a space is required between consecutive right angle brackets (use ‘> >’)
std::vector<std::vectorstd::string> find_hist_files(const std::string& name, std::string histName)
^~
> >
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:113:37: error: a space is required between consecutive right angle brackets (use ‘> >’)
std::vector<std::vectorstd::string> vv;
^~
> >
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:138:37: error: a space is required between consecutive right angle brackets (use ‘> >’)
std::vector<std::vectorstd::string> folders_files = find_hist_files(inFolder, “hist”);
^~
> >
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:139:41: error: a space is required between consecutive right angle brackets (use ‘> >’)
for(std::vector<std::vectorstd::string>::iterator it = folders_files.begin();
^~
> >
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:160:9: warning: generalized initializer lists are a C++11 extension [-Wc++11-extensions]
return {sample_std_dev_uncorr, sample_std_dev_corr};
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:160:9: error: non-aggregate type ‘std::pair<double, double>’ cannot be initialized with an initializer list
return {sample_std_dev_uncorr, sample_std_dev_corr};
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:179:37: error: a space is required between consecutive right angle brackets (use ‘> >’)
std::vector<std::vectorstd::string> folders = find_hist_files(inFolder, Parameter + “hist”);
^~
> >
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:187:41: error: a space is required between consecutive right angle brackets (use ‘> >’)
for(std::vector<std::vectorstd::string>::iterator it = folders.begin(); it != folders.end();
^~
> >
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:258:9: error: no member named ‘tie’ in namespace ‘std’
std::tie(uf_std_dev_uncorr, uf_std_dev_corr) =
~~~~~^
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:260:9: error: no member named ‘tie’ in namespace ‘std’
std::tie(of_std_dev_uncorr, of_std_dev_corr) =
~~~~~^
/Users/dalejulson/Desktop/GEANT4/g4see/mergeHistograms.cc:290:10: error: no member named ‘tie’ in namespace ‘std’
std::tie(std_dev_uncorr, std_dev_corr) =
~~~~~^
4 warnings and 10 errors generated.
make[2]: *** [CMakeFiles/mergeHistograms.dir/mergeHistograms.cc.o] Error 1
make[1]: *** [CMakeFiles/mergeHistograms.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…

I am able to resolve the errors requiring a space between consecutive right angle brackets by editing the mergeHistograms.cc file and adding in the spaces it suggested. I am also able to resolve the nonaggregate type ‘std::pair<double, double> error by changing the line to instead read return std::make_pair(sample_std_dev_uncorr, sample_std_dev_corr);. I am unable however to resolve the no member named ‘tie’ in namespace ‘std’ error. I attempted to add #include <tuple> at the beginning of the file (which Google returned as a possible solution), however this did not fix the error.

Has anyone else encountered a similar problem and could perhaps suggest a fix?

Thank you,

Dale J

I believe I was able to fix this problem (meaning I was able to successfully compile without any errors, however I have not performed any further testing) by doing the following:

Edit CMakeFiles/mergeHistograms.dir/build.make and add as an argument ‘-std=c++11’ each time that c++ is called. For instance:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES)

became:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -std=c++11 $(CXX_DEFINES) $(CXX_INCLUDES)

I changed 3 different instance in total. This seemed to fix the problem and mergeHistograms successfully compiled into an executable.