diff options
author | Dmitry Kalinkin <dmitry.kalinkin@gmail.com> | 2022-04-14 21:21:59 -0400 |
---|---|---|
committer | Dmitry Kalinkin <dmitry.kalinkin@gmail.com> | 2022-04-15 22:24:52 -0400 |
commit | cdc17db88264d66527c95cffaf78e60ed433faaf (patch) | |
tree | d4ad42dc8a631c7a541dd30e3e90a0b3d686daf3 /pkgs/applications/science/physics | |
parent | 82d10b5b61322cc51a527d956e69d66cc4d4777a (diff) |
xfitter: 2.0.1 -> 2.2.0
Diffstat (limited to 'pkgs/applications/science/physics')
-rw-r--r-- | pkgs/applications/science/physics/xfitter/default.nix | 64 | ||||
-rw-r--r-- | pkgs/applications/science/physics/xfitter/undefined_behavior.patch | 454 |
2 files changed, 34 insertions, 484 deletions
diff --git a/pkgs/applications/science/physics/xfitter/default.nix b/pkgs/applications/science/physics/xfitter/default.nix index 51d6c9d68fe4b..2be6153878893 100644 --- a/pkgs/applications/science/physics/xfitter/default.nix +++ b/pkgs/applications/science/physics/xfitter/default.nix @@ -1,53 +1,57 @@ -{ lib, stdenv, fetchurl, apfel, apfelgrid, applgrid, blas, gfortran, lhapdf, lapack, libyaml, lynx -, mela, root5, qcdnum, which, libtirpc +{ lib +, stdenv +, fetchurl +, apfel +, apfelgrid +, applgrid +, blas +, ceres-solver +, cmake +, gfortran +, gsl +, lapack +, lhapdf +, libtirpc +, libyaml +, libyamlcpp +, pkg-config +, qcdnum +, root +, zlib , memorymappingHook, memstreamHook }: stdenv.mkDerivation rec { pname = "xfitter"; - version = "2.0.1"; + version = "2.2.0"; src = fetchurl { name = "${pname}-${version}.tgz"; url = "https://www.xfitter.org/xFitter/xFitter/DownloadPage?action=AttachFile&do=get&target=${pname}-${version}.tgz"; - sha256 = "0kmgc67nw5flp92yw5x6l2vsnhwsfi5z2a20404anisdgdjs8zc6"; + sha256 = "sha256-ZHIQ5hOY+k0/wmpE0o4Po+RZ4MkVMk+bK1Rc6eqwwH0="; }; - patches = [ - ./undefined_behavior.patch - ]; + preConfigure = '' + substituteInPlace CMakeLists.txt \ + --replace "-fallow-argument-mismatch" "" + ''; - preConfigure = - # Fix F77LD to workaround for a following build error: - # - # gfortran: error: unrecognized command line option '-stdlib=libc++' - # - lib.optionalString stdenv.isDarwin '' - substituteInPlace src/Makefile.in \ - --replace "F77LD = \$(F77)" "F77LD = \$(CXXLD)" \ - ''; - - configureFlags = [ - "--enable-apfel" - "--enable-apfelgrid" - "--enable-applgrid" - "--enable-mela" - "--enable-lhapdf" - ]; - - nativeBuildInputs = [ gfortran which ]; + nativeBuildInputs = [ cmake gfortran pkg-config ]; buildInputs = - [ apfel apfelgrid applgrid blas lhapdf libyaml lapack mela root5 qcdnum ] + [ apfel blas ceres-solver lhapdf lapack libyaml root qcdnum gsl libyamlcpp zlib ] + ++ lib.optionals ("5" == lib.versions.major root.version) [ apfelgrid applgrid ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [ memorymappingHook memstreamHook ] ++ lib.optional (stdenv.hostPlatform.libc == "glibc") libtirpc ; - propagatedBuildInputs = [ lynx ]; - - enableParallelBuilding = true; NIX_CFLAGS_COMPILE = lib.optional (stdenv.hostPlatform.libc == "glibc") "-I${libtirpc.dev}/include/tirpc"; NIX_LDFLAGS = lib.optional (stdenv.hostPlatform.libc == "glibc") "-ltirpc"; + # workaround wrong library IDs + postInstall = lib.optionalString stdenv.isDarwin '' + ln -sv "$out/lib/xfitter/"* "$out/lib/" + ''; + meta = with lib; { description = "The xFitter project is an open source QCD fit framework ready to extract PDFs and assess the impact of new data"; license = licenses.gpl3; diff --git a/pkgs/applications/science/physics/xfitter/undefined_behavior.patch b/pkgs/applications/science/physics/xfitter/undefined_behavior.patch deleted file mode 100644 index 53278527a807a..0000000000000 --- a/pkgs/applications/science/physics/xfitter/undefined_behavior.patch +++ /dev/null @@ -1,454 +0,0 @@ -diff --git a/DY/src/finterface.cc b/DY/src/finterface.cc ---- a/DY/src/finterface.cc -+++ b/DY/src/finterface.cc -@@ -14,17 +14,17 @@ - using namespace std; - - extern "C" { -- int dy_create_calc_(const int *ds_id, const int *chg_prod, -+ void dy_create_calc_(const int *ds_id, const int *chg_prod, - const double *beam_en, const char *boz, - const double *ranges, const char *var_name, - const int *n_bins, const double *bin_edges); - -- int dy_do_calc_(); -+ void dy_do_calc_(); - -- int dy_get_res_(const int *ds_id, double *calc_res); -+ void dy_get_res_(const int *ds_id, double *calc_res); - -- int dy_release_(); -- int dy_set_ewpars_(); -+ void dy_release_(); -+ void dy_set_ewpars_(); - } - - typedef map <int, DYcalc* > DCmap; -@@ -34,7 +34,7 @@ vector<BinMatrix*> gBinMatrices; - - // initializes Drell-Yan LO calculations with info on - // beam, process, kinematic cuts, and bins. --int dy_create_calc_(const int *ds_id, const int *chg_prod, -+void dy_create_calc_(const int *ds_id, const int *chg_prod, - const double *beam_en, const char *boz, - const double *ranges, const char *var_name, - const int *n_bins, const double *bin_edges) -@@ -99,13 +99,11 @@ int dy_create_calc_(const int *ds_id, const int *chg_prod, - // create calculator and put to map - DYcalc * dc = new DYcalc(bm, pc, int_steps); - gCalcs.insert( pair<int,DYcalc*>( *ds_id,dc ) ); -- -- return 1; - } - - - // calculate Drell-Yan LO cross sections for all data sets --int dy_do_calc_() -+void dy_do_calc_() - { - // evolve convolutions - vector<PDFconv*>::iterator ipc = gPDFconvs.begin(); -@@ -118,28 +116,24 @@ int dy_do_calc_() - if ( true != idc->second->Integrate() ) { - cout << "Something is wrong with DY integration for " - << idc->first << " data set." << endl; -- return 0; -+ return; - } - } -- -- return 1; - } - - - // return DY calculations for data set ds_name --int dy_get_res_(const int *ds_id, double *calc_res) -+void dy_get_res_(const int *ds_id, double *calc_res) - { - DYcalc * dc = gCalcs.find(*ds_id)->second; - dc->getCalcRes(calc_res); -- -- return 1; - } - --int dy_set_ewpars_(){ -+void dy_set_ewpars_(){ - PhysPar::setPhysPar(); - } - --int dy_release_() -+void dy_release_() - { - vector<PDFconv*>::iterator ipc = gPDFconvs.begin(); - for (; ipc!=gPDFconvs.end(); ipc++){ -@@ -155,6 +149,4 @@ int dy_release_() - for (; idc != gCalcs.end() ; idc++){ - delete (idc->second); - } -- -- return 1; - } -diff --git a/DiffDIS/include/DataTable.h b/DiffDIS/include/DataTable.h ---- a/DiffDIS/include/DataTable.h -+++ b/DiffDIS/include/DataTable.h -@@ -307,6 +307,7 @@ class DataTable_t { - for(ic=0; ic < GetNcols(); ic++) { - for(ir=0; ir < npt; ir++) Data[ic][ir] = A.Data[ic][ir]; - } -+ return *this; - } - - //@} -diff --git a/FastNLO/src/FastNLOInterface.cc b/FastNLO/src/FastNLOInterface.cc ---- a/FastNLO/src/FastNLOInterface.cc -+++ b/FastNLO/src/FastNLOInterface.cc -@@ -39,14 +39,14 @@ void gauleg(double x1,double x2,double *x,double *w, int n); - - - extern "C" { -- int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale); -- int fastnlocalc_(const int *idataset, double *xsec); -- int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt); -- int fastnlopointskip_(const int *idataset, int *point, int *npoints); -- int hf_errlog_(const int* ID, const char* TEXT, long length); -- int hf_stop_(); -+ void fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale); -+ void fastnlocalc_(const int *idataset, double *xsec); -+ void fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt); -+ void fastnlopointskip_(const int *idataset, int *point, int *npoints); -+ void hf_errlog_(const int* ID, const char* TEXT, long length); -+ void hf_stop_(); - double interp_(double *A, double *xx1, double *x, int *NGrid1, double *res); -- int setfastnlotoppar_(const int *idataset); -+ void setfastnlotoppar_(const int *idataset); - } - - -@@ -58,7 +58,7 @@ map<int, FastNLOxFitter*> gFastNLO_array; - map<int, BoolArray*> gUsedPoints_array; - int CreateUsedPointsArray(int idataset, int npoints); - --int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale) { -+void fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_FIT_ORDER, bool *PublicationUnits , double* murdef, double* murscale, double *mufdef, double* mufscale) { - - - map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset); -@@ -67,7 +67,7 @@ int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_ - const char* text = "I: Double initialization of the same fastnlo data set!"; - hf_errlog_(&id, text, (long)strlen(text)); - //hf_stop_(); -- return 1; -+ return; - } - - FastNLOxFitter* fnloreader = new FastNLOxFitter( thfile ); -@@ -112,10 +112,9 @@ int fastnloinit_(const char *s, const int *idataset, const char *thfile, int *I_ - } - - gFastNLO_array.insert(pair<int, FastNLOxFitter*>(*idataset, fnloreader) ); -- return 0; - } - --int setfastnlotoppar_(const int *idataset) { -+void setfastnlotoppar_(const int *idataset) { - //!< Dedicated settings for difftop - map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset); - map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset); -@@ -130,11 +129,9 @@ int setfastnlotoppar_(const int *idataset) { - fnloreader->SetExternalFuncForMuF( &Function_Mu ); - fnloreader->SetExternalFuncForMuR( &Function_Mu); - //fnloreader->SetScaleFactorsMuRMuF(1.0,1.0); //Be reminded that muR and muF scales are hard coded (that's not true!) -- -- return 0; - } - --int fastnlocalc_(const int *idataset, double *xsec) { -+void fastnlocalc_(const int *idataset, double *xsec) { - - map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset); - map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset); -@@ -176,13 +173,10 @@ int fastnlocalc_(const int *idataset, double *xsec) { - outputidx++; - } - } -- -- -- return 0; - } - - //MK14 New function for Difftop calculation: it is called in trunk/src/difftop_fastnlo.f --int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt){ -+void fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *tot, int *Npt){ - - map<int, FastNLOxFitter*>::const_iterator FastNLOIterator = gFastNLO_array.find(*idataset); - map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset); -@@ -262,10 +256,6 @@ int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *to - Total += interpC(xsec,xg[k],thbin,Nthpoints)*wg[k]; - - *tot = Total; -- -- -- -- return 0; - } - - -@@ -277,7 +267,7 @@ int fastnlocalctop_(const int *idataset, double *xsec, double *thbin, double *to - - - --int fastnlopointskip_(const int *idataset, int *point, int *npoints) { -+void fastnlopointskip_(const int *idataset, int *point, int *npoints) { - map<int, BoolArray*>::const_iterator UsedPointsIterator = gUsedPoints_array.find(*idataset); - if(UsedPointsIterator == gUsedPoints_array.end( )) - CreateUsedPointsArray(*idataset, *npoints); -@@ -292,8 +282,6 @@ int fastnlopointskip_(const int *idataset, int *point, int *npoints) { - - BoolArray* usedpoints = UsedPointsIterator->second; - usedpoints->at(*point-1) = false; -- -- return 0; - } - - int CreateUsedPointsArray(int idataset, int npoints) { -diff --git a/Hathor/src/HathorInterface.cc b/Hathor/src/HathorInterface.cc ---- a/Hathor/src/HathorInterface.cc -+++ b/Hathor/src/HathorInterface.cc -@@ -6,9 +6,9 @@ - #include "../interface/xFitterPdf.h" - - extern "C" { -- int hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt, -+ void hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt, - const unsigned int& pertubOrder, const unsigned int& precisionLevel); -- int hathorcalc_(const int *idataset, double *xsec); -+ void hathorcalc_(const int *idataset, double *xsec); - } - - extern "C" { -@@ -19,7 +19,7 @@ extern "C" { - } - - extern "C" { -- int hf_errlog_(const int* ID, const char* TEXT, long length); -+ void hf_errlog_(const int* ID, const char* TEXT, long length); - } - - // FIXME: delete pointers at the end! (in some hathordestroy_ or so) -@@ -28,7 +28,7 @@ xFitterPdf* pdf; - int* rndStore; - double mtop; - --int hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt, -+void hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, const double& mt, - const unsigned int& pertubOrder, const unsigned int& precisionLevel) { - - if(hathor_array.size()==0) { -@@ -69,7 +69,7 @@ int hathorinit_(const int* idataset, const double& sqrtS, const bool& ppbar, con - return 0; - } - --int hathorcalc_(const int *idataset, double *xsec) { -+void hathorcalc_(const int *idataset, double *xsec) { - rlxd_reset(rndStore); - - std::map<int, Hathor*>::const_iterator hathorIter = hathor_array.find(*idataset); -diff --git a/src/TheorEval.cc b/src/TheorEval.cc ---- a/src/TheorEval.cc -+++ b/src/TheorEval.cc -@@ -62,6 +62,7 @@ TheorEval::initTheory() - list<tToken> sl; - this->assignTokens(sl); - this->convertToRPN(sl); -+ return 0; - } - - int -@@ -167,6 +168,7 @@ TheorEval::assignTokens(list<tToken> &sl) - sl.push_back(t); - } - } -+ return 0; - } - - int -@@ -217,6 +219,7 @@ TheorEval::convertToRPN(list<tToken> &sl) - cout << endl; - */ - -+ return 0; - } - - int -@@ -236,6 +239,7 @@ TheorEval::initTerm(int iterm, valarray<double> *val) - hf_errlog_(id, text, textlen); - return -1; - } -+ return 0; - } - - int -@@ -348,6 +352,7 @@ TheorEval::initGridTerm(int iterm, valarray<double> *val) - - // associate grid and valarray pointers in token - _mapGridToken[g] = val; -+ return 0; - } - - int -@@ -430,6 +435,7 @@ TheorEval::initKfTerm(int iterm, valarray<double> *val) - - // write k-factor array to the token valarray - *val = valarray<double>(vkf.data(), vkf.size()); -+ return 0; - } - - int -@@ -465,6 +471,7 @@ TheorEval::setCKM(const vector<double> &v_ckm) - int textlen = strlen(text); - hf_errlog_(id, text, textlen); - #endif -+ return 0; - } - - int -@@ -531,6 +538,7 @@ TheorEval::Evaluate(valarray<double> &vte ) - } - //vte /= _units; - } -+ return 0; - } - - int -@@ -555,6 +563,7 @@ TheorEval::getGridValues() - - - } -+ return 0; - } - - int -diff --git a/src/ftheor_eval.cc b/src/ftheor_eval.cc ---- a/src/ftheor_eval.cc -+++ b/src/ftheor_eval.cc -@@ -19,15 +19,15 @@ - using namespace std; - - extern "C" { -- int set_theor_eval_(int *dsId);//, int *nTerms, char **TermName, char **TermType, -+ void set_theor_eval_(int *dsId);//, int *nTerms, char **TermName, char **TermType, - // char **TermSource, char *TermExpr); -- int set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, -+ void set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, - double *allBins); - // int set_theor_units_(int *dsId, double *units); -- int init_theor_eval_(int *dsId); -- int update_theor_ckm_(); -- int get_theor_eval_(int *dsId, int* np, int* idx); -- int close_theor_eval_(); -+ void init_theor_eval_(int *dsId); -+ void update_theor_ckm_(); -+ void get_theor_eval_(int *dsId, int* np, int* idx); -+ void close_theor_eval_(); - } - - /// global dataset to theory evaluation pointer map -@@ -59,7 +59,7 @@ extern struct ord_scales { - dataset ID. - write details on argumets - */ --int set_theor_eval_(int *dsId)//, int *nTerms, char **TermName, char **TermType, -+void set_theor_eval_(int *dsId)//, int *nTerms, char **TermName, char **TermType, - // char **TermSource, char *TermExpr) - { - // convert fortran strings to c++ -@@ -90,15 +90,13 @@ int set_theor_eval_(int *dsId)//, int *nTerms, char **TermName, char **TermType, - << " already exists." << endl; - exit(1); // make proper exit later - } -- -- return 1; - } - - /*! - Sets datasets bins in theory evaluations. - write details on argumets - */ --int set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, -+void set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, - double *allBins) - { - tTEmap::iterator it = gTEmap.find(*dsId); -@@ -110,7 +108,6 @@ int set_theor_bins_(int *dsId, int *nBinDimension, int *nPoints, int *binFlags, - - TheorEval *te = gTEmap.at(*dsId); - te->setBins(*nBinDimension, *nPoints, binFlags, allBins); -- return 1; - } - - /* -@@ -132,7 +129,7 @@ int set_theor_units_(int *dsId, double *units) - /*! - Initializes theory for requested dataset. - */ --int init_theor_eval_(int *dsId) -+void init_theor_eval_(int *dsId) - { - tTEmap::iterator it = gTEmap.find(*dsId); - if (it == gTEmap.end() ) { -@@ -148,7 +145,7 @@ int init_theor_eval_(int *dsId) - /*! - Updates the CKM matrix to all the initialized appl grids - */ --int update_theor_ckm_() -+void update_theor_ckm_() - { - double a_ckm[] = { ckm_matrix_.Vud, ckm_matrix_.Vus, ckm_matrix_.Vub, - ckm_matrix_.Vcd, ckm_matrix_.Vcs, ckm_matrix_.Vcb, -@@ -164,7 +161,7 @@ int update_theor_ckm_() - /*! - Evaluates theory for requested dataset and writes it to the global THEO array. - */ --int get_theor_eval_(int *dsId, int *np, int*idx) -+void get_theor_eval_(int *dsId, int *np, int*idx) - { - - tTEmap::iterator it = gTEmap.find(*dsId); -@@ -194,11 +191,11 @@ int get_theor_eval_(int *dsId, int *np, int*idx) - // write the predictions to THEO array - if( ip != *np ){ - cout << "ERROR in get_theor_eval_: number of points mismatch" << endl; -- return -1; -+ return; - } - } - --int close_theor_eval_() -+void close_theor_eval_() - { - tTEmap::iterator it = gTEmap.begin(); - for (; it!= gTEmap.end(); it++){ -diff --git a/src/lhapdf6_output.c b/src/lhapdf6_output.c ---- a/src/lhapdf6_output.c -+++ b/src/lhapdf6_output.c -@@ -64,7 +64,7 @@ extern double bvalij_(int *,int *,int *,int *,int *); - extern double bvalxq_(int *,int *,double *,double *,int *); - extern double hf_get_alphas_(double *); - extern int getord_(int *); --extern int grpars_(int *, double *, double *, int *, double *, double *, int *); -+extern void grpars_(int *, double *, double *, int *, double *, double *, int *); - extern int getcbt_(int *, double *, double *, double *); - extern void getpdfunctype_heraf_(int *mc, int *asymh, int *symh, char *name, size_t size); - extern void hf_errlog_(int *, char *, size_t); -diff --git a/tools/draw/include/FileOpener.h b/tools/draw/include/FileOpener.h ---- a/tools/draw/include/FileOpener.h -+++ b/tools/draw/include/FileOpener.h -@@ -61,7 +61,7 @@ class InFileOpener_t { - string GetPath() const {return ind < 0 ? "" : Flist[ind];} - - // ================================== -- int Add(const string& fname) { -+ void Add(const string& fname) { - Flist.push_back(fname); - } - |