[arch-commits] Commit in root/trunk (9271.patch PKGBUILD)

Konstantin Gizdov kgizdov at gemini.archlinux.org
Wed Nov 24 13:17:28 UTC 2021


    Date: Wednesday, November 24, 2021 @ 13:17:27
  Author: kgizdov
Revision: 1054678

upgpkg: root 6.24.06-7: remove unstable patches

Modified:
  root/trunk/PKGBUILD
Deleted:
  root/trunk/9271.patch

------------+
 9271.patch |  753 -----------------------------------------------------------
 PKGBUILD   |    4 
 2 files changed, 1 insertion(+), 756 deletions(-)

Deleted: 9271.patch
===================================================================
--- 9271.patch	2021-11-24 13:16:02 UTC (rev 1054677)
+++ 9271.patch	2021-11-24 13:17:27 UTC (rev 1054678)
@@ -1,753 +0,0 @@
-From ef095d953b7632654dcd93aa3151508dfefa22d3 Mon Sep 17 00:00:00 2001
-From: Konstantin Gizdov <kgizdov at gmail.com>
-Date: Thu, 11 Nov 2021 01:57:36 +0200
-Subject: [PATCH] backport 'address some -Wnonnull issue and follow-up
- improvements' to v6-24-00-patches
-
-RooFit::HistFactory::ConfigParser: fix null dereferences, improve logic, modernise, fix some edge cases, optimise performance
-RooAddModel: fix null dereferences
-TMVA::DataLoader: calling .front() in an empty container is undefined, fix also null ptr dereference
-RooDataHist and RooRealSumFunc fixes for null dereferences
-RooAbsCollection: safer Int_t getSize() and RooAbsArg* front(), offer alternatives
-RooDataHist::_adjustBinning throw std::logic_error when pass type is not derived from real
-clang-format applied
----
- roofit/histfactory/src/ConfigParser.cxx       | 469 ++++++++----------
- roofit/roofitcore/inc/RooAbsCollection.h      |  17 +-
- roofit/roofitcore/src/RooAddModel.cxx         | 114 +++--
- roofit/roofitcore/src/RooDataHist.cxx         |  15 +-
- roofit/roofitcore/src/RooRealSumFunc.cxx      |   5 +-
- .../Architectures/Reference/DataLoader.cxx    |  12 +
- 6 files changed, 299 insertions(+), 333 deletions(-)
-
-diff --git a/roofit/histfactory/src/ConfigParser.cxx b/roofit/histfactory/src/ConfigParser.cxx
-index 227a16b6a0a9..3ec032579037 100644
---- a/roofit/histfactory/src/ConfigParser.cxx
-+++ b/roofit/histfactory/src/ConfigParser.cxx
-@@ -260,280 +260,215 @@ std::vector< RooStats::HistFactory::Measurement > ConfigParser::GetMeasurementsF
-   return measurement_list;
- 
- }
--									     
- 
--HistFactory::Measurement ConfigParser::CreateMeasurementFromDriverNode( TXMLNode* node ) {
--
--
--  HistFactory::Measurement measurement;
--
--  // Set the default values:
--  measurement.SetLumi( 1.0 );
--  measurement.SetLumiRelErr( .10 );
--  measurement.SetBinLow( 0 );
--  measurement.SetBinHigh( 1 );
--  measurement.SetExportOnly( false );
--
--  cxcoutIHF << "Creating new measurement: " << std::endl;
--
--  // First, get the attributes of the node
--  TListIter attribIt = node->GetAttributes();
--  TXMLAttr* curAttr = 0;
--  while( ( curAttr = dynamic_cast< TXMLAttr* >( attribIt() ) ) != 0 ) {
--
--    if( curAttr->GetName() == TString( "" ) ) {
--      cxcoutEHF << "Found XML attribute in Measurement with no name"  << std::endl;
--      // ADD Output Here
--      throw hf_exc();
--    }
--    else if( curAttr->GetName() == TString( "Name" ) ) {
--      //rowTitle=curAttr->GetValue();
--      measurement.SetName(  curAttr->GetValue() );
--      //measurement.OutputFileName = outputFileNamePrefix+"_"+rowTitle+".root";
--    }
--    else if( curAttr->GetName() == TString( "Lumi" ) ) {
--      measurement.SetLumi( atof(curAttr->GetValue()) );
--    }
--    else if( curAttr->GetName() == TString( "LumiRelErr" ) ) {
--      measurement.SetLumiRelErr( atof(curAttr->GetValue()) );
--    }
--    else if( curAttr->GetName() == TString( "BinLow" ) ) {
--      measurement.SetBinLow( atoi(curAttr->GetValue()) );
--    }
--    else if( curAttr->GetName() == TString( "BinHigh" ) ) {
--      measurement.SetBinHigh( atoi(curAttr->GetValue()) );
--    }
--    else if( curAttr->GetName() == TString( "Mode" ) ) {
--      cout <<"\n INFO: Mode attribute is deprecated, will ignore\n"<<endl;
--    }
--    else if( curAttr->GetName() == TString( "ExportOnly" ) ) {
--      measurement.SetExportOnly( CheckTrueFalse(curAttr->GetValue(),"Measurement") );
--    }
--
--    else {
--      cxcoutEHF << "Found unknown XML attribute in Measurement: " << curAttr->GetName()
--		<< std::endl;
--      throw hf_exc();
--    }
--
--  } // End Loop over attributes
--
--
--  // Then, get the properties of the children nodes
--  TXMLNode* child = node->GetChildren();
--  while( child != 0 ) {
--  
--    if( child->GetNodeName() == TString( "" ) ) {
--      cxcoutEHF << "Found XML child node of Measurement with no name"  << std::endl;
--      throw hf_exc();
--    }
--
--    else if( child->GetNodeName() == TString( "POI" ) ) {
--      if( child->GetText() == NULL ) {
--	cxcoutEHF << "Error: node: " << child->GetName()
--		  << " has no text." << std::endl;
--	throw hf_exc();
-+HistFactory::Measurement ConfigParser::CreateMeasurementFromDriverNode(TXMLNode *node)
-+{
-+   // construct and return at bottom
-+   HistFactory::Measurement measurement;
-+
-+   // safety for public functions
-+   if (node == nullptr) {
-+      cxcoutWHF << "Input driver node is undefined, ignoring\n";
-+      return measurement;
-+   }
-+
-+   // Set the default values:
-+   measurement.SetLumi(1.0);
-+   measurement.SetLumiRelErr(.10);
-+   measurement.SetBinLow(0);
-+   measurement.SetBinHigh(1);
-+   measurement.SetExportOnly(false);
-+
-+   cxcoutIHF << "Creating new measurement:\n";
-+
-+   // First, get the attributes of the node
-+   TListIter attribIt = node->GetAttributes();
-+   TXMLAttr *curAttr = nullptr;
-+   while ((/**/ curAttr = dynamic_cast<TXMLAttr *>(attribIt()) /**/) != nullptr) {
-+      // curAttr is guaranteed non-null above
-+      const std::string curAttrName(curAttr->GetName() ? curAttr->GetName() : ""),
-+         curAttrValue(curAttr->GetValue() ? curAttr->GetValue() : "");
-+      if (curAttrName == "") {
-+         cxcoutEHF << "Found XML attribute in Measurement with no name.\n";
-+         // ADD Output Here
-+         throw hf_exc();
-+      } else if (curAttrName == "Name") {
-+         measurement.SetName(curAttrValue.c_str());
-+      } else if (curAttrName == "Lumi") {
-+         measurement.SetLumi(std::stof(curAttrValue));
-+      } else if (curAttrName == "LumiRelErr") {
-+         measurement.SetLumiRelErr(std::stof(curAttrValue));
-+      } else if (curAttrName == "BinLow") {
-+         measurement.SetBinLow(std::stoi(curAttrValue));
-+      } else if (curAttrName == "BinHigh") {
-+         measurement.SetBinHigh(std::stoi(curAttrValue));
-+      } else if (curAttrName == "Mode") {
-+         cout << "\n INFO: Mode attribute is deprecated and no longer supported, will ignore\n";
-+      } else if (curAttrName == "ExportOnly") {
-+         measurement.SetExportOnly(CheckTrueFalse(curAttrValue, "Measurement"));
-+      } else {
-+         cxcoutEHF << "Found unknown XML attribute in Measurement: " << curAttrName << "\n";
-+         throw hf_exc();
-       }
--      //poi// measurement.SetPOI( child->GetText() );
--     AddSubStrings( measurement.GetPOIList(), child->GetText() );
--    }
--
--    else if( child->GetNodeName() == TString( "ParamSetting" ) ) {
--      TListIter paramIt = child->GetAttributes();
--      TXMLAttr* curParam = 0;
--      while( ( curParam = dynamic_cast< TXMLAttr* >( paramIt() ) ) != 0 ) {
--
--	if( curParam->GetName() == TString( "" ) ) {
--	  cxcoutEHF << "Error: Found tag attribute with no name in ParamSetting" << std::endl;
--	  throw hf_exc();
--	}
--	else if( curParam->GetName() == TString( "Const" ) ) {
--	  if(curParam->GetValue()==TString("True")){
--	    // Fix here...?
--	    if( child->GetText() == NULL ) {
--	      cxcoutEHF << "Error: node: " << child->GetName()
--			<< " has no text." << std::endl;
--	      throw hf_exc();
--	    }
--	    AddSubStrings( measurement.GetConstantParams(), child->GetText() );
--	  }
--	}
--	else if( curParam->GetName() == TString( "Val" ) ) {
--	  double val = atof(curParam->GetValue());
--	  if( child->GetText() == NULL ) {
--	    cxcoutEHF << "Error: node: " << child->GetName()
--		      << " has no text." << std::endl;
--	    throw hf_exc();
--	  }
--	  std::vector<std::string> child_nodes = GetChildrenFromString(child->GetText());
--	  for(unsigned int i = 0; i < child_nodes.size(); ++i) {
--	    measurement.SetParamValue( child_nodes.at(i), val);
--	  }
--	  // AddStringValPairToMap( measurement.GetParamValues(), val, child->GetText() );
--	}
--	else {
--	  cxcoutEHF << "Found tag attribute with unknown name in ParamSetting: "
--		    << curAttr->GetName() << std::endl;
--	  throw hf_exc();
--	}
-+   } // End Loop over attributes
-+
-+   // Then, get the properties of the children nodes
-+   TXMLNode *child = node->GetChildren();
-+   while (child != nullptr) {
-+      const std::string childName(child->GetName() ? child->GetName() : ""),
-+         childNodeName(child->GetNodeName() ? child->GetNodeName() : ""),
-+         childText(child->GetText() ? child->GetText() : "");
-+      if (childNodeName.empty()) {
-+         cxcoutEHF << "Found XML child node of Measurement with no name\n";
-+         throw hf_exc();
-+      } else if (childNodeName == "POI") {
-+         if (childText == "") {
-+            cxcoutEHF << "Error: node: " << childName << " has no text.\n";
-+            throw hf_exc();
-+         }
-+         // poi // measurement.SetPOI(childText);
-+         AddSubStrings(measurement.GetPOIList(), childText);
-+      } else if (childNodeName == "ParamSetting") {
-+         TListIter paramIt = child->GetAttributes();
-+         TXMLAttr *curParam = nullptr;
-+         while ((/**/ curParam = dynamic_cast<TXMLAttr *>(paramIt()) /**/) != nullptr) {
-+            // curParam is guaranteed non-null above
-+            const std::string curParamName(curParam->GetName() ? curParam->GetName() : "");
-+            if (curParamName.empty()) {
-+               cxcoutEHF << "Error: Found tag attribute with no name in ParamSetting\n";
-+               throw hf_exc();
-+            } else if (curParamName == "Const") {
-+               if (curParam->GetValue() == TString("True")) {
-+                  // Fix here...?
-+                  if (childText.empty()) {
-+                     cxcoutEHF << "Error: node: " << childName << " has no text.\n";
-+                     throw hf_exc();
-+                  }
-+                  AddSubStrings(measurement.GetConstantParams(), childText);
-+               }
-+            } else if (curParamName == "Val") {
-+               double val = atof(curParam->GetValue());
-+               if (childText.empty()) {
-+                  cxcoutEHF << "Error: node: " << childName << " has no text.\n";
-+                  throw hf_exc();
-+               }
-+               std::vector<std::string> child_nodes = GetChildrenFromString(childText);
-+               for (size_t i = 0; i < child_nodes.size(); ++i) {
-+                  measurement.SetParamValue(child_nodes.at(i), val);
-+               }
-+            } else {
-+               cxcoutEHF << "Found tag attribute with unknown name in ParamSetting: " << curParamName << "\n";
-+               throw hf_exc();
-+            }
-+         }
-+      } else if (childNodeName == "Asimov") {
-+         // Now, create and configure an asimov object
-+         // and add it to the measurement
-+         RooStats::HistFactory::Asimov asimov;
-+         std::string ParamFixString;
-+
-+         // Loop over attributes
-+         attribIt = child->GetAttributes();
-+         curAttr = nullptr;
-+         while ((/**/ curAttr = dynamic_cast<TXMLAttr *>(attribIt()) /**/) != nullptr) {
-+            const std::string curAttrName(curAttr->GetName() ? curAttr->GetName() : ""),
-+               curAttrValue(curAttr->GetValue() ? curAttr->GetValue() : "");
-+            if (curAttrName.empty()) {
-+               cxcoutEHF << "Error: Found tag attribute with no name in ConstraintTerm\n";
-+               throw hf_exc();
-+            } else if (curAttrName == "Name") {
-+               asimov.SetName(curAttrValue);
-+            } else if (curAttrName == "FixParams") {
-+               ParamFixString = curAttrValue;
-+            } else {
-+               cxcoutEHF << "Found tag attribute with unknown name in ConstraintTerm: " << curAttrName << "\n";
-+               throw hf_exc();
-+            }
-+         }
-+
-+         // Add any parameters to the asimov dataset
-+         // to be fixed during the fitting and dataset generation
-+         if (ParamFixString.empty()) {
-+            cxcoutWHF << "Warning: Asimov Dataset with name: " << asimov.GetName()
-+                      << " added, but no parameters are set to be fixed\n";
-+         } else {
-+            AddParamsToAsimov(asimov, ParamFixString);
-+         }
-+         measurement.AddAsimovDataset(asimov);
-+      } else if (childNodeName == "ConstraintTerm") {
-+         std::vector<string> syst;
-+         std::string type = "";
-+         double rel = 0;
-+
-+         // Get the list of parameters in this tag:
-+         if (childText.empty()) {
-+            cxcoutEHF << "Error: node: " << childName << " has no text\n";
-+            throw hf_exc();
-+         }
-+         AddSubStrings(syst, childText);
-+
-+         // Now, loop over this tag's attributes
-+         attribIt = child->GetAttributes();
-+         curAttr = nullptr;
-+         while ((/**/ curAttr = dynamic_cast<TXMLAttr *>(attribIt()) /**/) != nullptr) {
-+            const std::string curAttrName(curAttr->GetName() ? curAttr->GetName() : ""),
-+               curAttrValue(curAttr->GetValue() ? curAttr->GetValue() : "");
-+            if (curAttrName.empty()) {
-+               cxcoutEHF << "Error: Found tag attribute with no name in ConstraintTerm\n";
-+               throw hf_exc();
-+            } else if (curAttrName == "Type") {
-+               type = curAttrValue;
-+            } else if (curAttrName == "RelativeUncertainty") {
-+               rel = std::stof(curAttrValue);
-+            } else {
-+               cxcoutEHF << "Found tag attribute with unknown name in ConstraintTerm: " << curAttrName << "\n";
-+               throw hf_exc();
-+            }
-+         } // End Loop over tag attributes
-+
-+         // Now, fill the maps, depending on the type:
-+         if (rel != 0) {
-+            if (type == "Gamma") {
-+               for (const auto &isyst : syst) {
-+                  // Fix Here...?
-+                  measurement.GetGammaSyst()[isyst] = rel;
-+               }
-+            } else if (type == "Uniform") {
-+               for (const auto &isyst : syst) {
-+                  // Fix Here...?
-+                  measurement.GetUniformSyst()[isyst] = rel;
-+               }
-+            } else if (type == "LogNormal") {
-+               for (const auto &isyst : syst) {
-+                  // Fix Here...?
-+                  measurement.GetLogNormSyst()[isyst] = rel;
-+               }
-+            }
-+         } else if (type == "NoConstraint") {
-+            for (const auto &isyst : syst) {
-+               // Fix Here...?
-+               measurement.GetNoSyst()[isyst] = 1.0; // MB : dummy value
-+            }
-+         } else {
-+            // only Gamma, Uniform, LogNormal and NoConstraint are valid types
-+            cxcoutEHF << "Error: Encountered unknown type for ConstraintTerm: " << type << "\n";
-+            throw hf_exc();
-+         }
-+         // End adding of Constraint terms
-+      } else if (IsAcceptableNode(child)) {
-+         /* do nothing */
-+      } else {
-+         cxcoutEHF << "Found XML child of Measurement with unknown name: " << childNodeName << "\n";
-+         throw hf_exc();
-       }
--    }
--
--    else if( child->GetNodeName() == TString( "Asimov" ) ) {
--
--      //std::string name;
--      //std::map<string, double> fixedParams;
-+      child = child->GetNextNode();
-+   }
- 
--      // Now, create and configure an asimov object
--      // and add it to the measurement
--      RooStats::HistFactory::Asimov asimov;
--      std::string ParamFixString;
--
--      // Loop over attributes
--      attribIt = child->GetAttributes();
--      curAttr = 0;
--      while( ( curAttr = dynamic_cast< TXMLAttr* >( attribIt() ) ) != 0 ) {
--	
--	if( curAttr->GetName() == TString( "" ) ) {
--	  cxcoutEHF << "Error: Found tag attribute with no name in ConstraintTerm" << std::endl;
--	  throw hf_exc();
--	}
--
--	else if( curAttr->GetName() == TString( "Name" ) ) {
--	  std::string name = curAttr->GetValue();
--	  asimov.SetName( name );
--	}
--
--	else if( curAttr->GetName() == TString( "FixParams" ) ) {
--	  ParamFixString = curAttr->GetValue();
--	  //std::map<std::string, double> fixedParams = ExtractParamMapFromString(FixParamList);
--	  //asimov.GetFixedParams() = fixedParams;
--	}
--
--	else {
--	  cxcoutEHF << "Found tag attribute with unknown name in ConstraintTerm: "
--		    << curAttr->GetName() << std::endl;
--	  throw hf_exc();
--	}
--
--      }
--
--      // Add any parameters to the asimov dataset
--      // to be fixed during the fitting and dataset generation
--      if( ParamFixString=="" ) {
--	cxcoutWHF << "Warning: Asimov Dataset with name: " << asimov.GetName()
--		  << " added, but no parameters are set to be fixed" << std::endl;
--      }
--      else {
--	AddParamsToAsimov( asimov, ParamFixString );
--      }
--      
--      measurement.AddAsimovDataset( asimov );
--
--    }
--
--    else if( child->GetNodeName() == TString( "ConstraintTerm" ) ) {
--      vector<string> syst; 
--      string type = ""; 
--      double rel = 0;
--
--      map<string,double> gammaSyst;
--      map<string,double> uniformSyst;
--      map<string,double> logNormSyst;
--
--      // Get the list of parameters in this tag:
--      if( child->GetText() == NULL ) {
--	cxcoutEHF << "Error: node: " << child->GetName()
--		  << " has no text." << std::endl;
--	throw hf_exc();
--      }
--      AddSubStrings(syst, child->GetText());
--
--      // Now, loop over this tag's attributes
--      attribIt = child->GetAttributes();
--      curAttr = 0;
--      while( ( curAttr = dynamic_cast< TXMLAttr* >( attribIt() ) ) != 0 ) {
--
--	if( curAttr->GetName() == TString( "" ) ) {
--	  cxcoutEHF << "Error: Found tag attribute with no name in ConstraintTerm" << std::endl;
--	  throw hf_exc();
--	}
--
--	else if( curAttr->GetName() == TString( "Type" ) ) {
--	  type = curAttr->GetValue();
--	}
--
--	else if( curAttr->GetName() == TString( "RelativeUncertainty" ) ) {
--	  rel = atof(curAttr->GetValue());
--	}
--
--	else {
--	  cxcoutEHF << "Found tag attribute with unknown name in ConstraintTerm: "
--		    << curAttr->GetName() << std::endl;
--	  throw hf_exc();
--	}
--
--      } // End Loop over tag attributes
--
--
--      // Now, fill the maps, depending on the type:
--
--      // Check that the type is in the correct form:
--      if( ! (type=="Gamma"     || type=="Uniform" || 
--	     type=="LogNormal" || type=="NoConstraint") ) {
--	cxcoutEHF << "Error: Encountered unknown type for ConstraintTerm: " << type << std::endl;
--	throw hf_exc();
--      }
--
--      if (type=="Gamma" && rel!=0) {
--	for (vector<string>::const_iterator it=syst.begin(); it!=syst.end(); ++it) {
--	  // Fix Here...?
--	  measurement.GetGammaSyst()[(*it).c_str()] = rel;
--	}
--      }
--	
--      if (type=="Uniform" && rel!=0) {
--	for (vector<string>::const_iterator it=syst.begin(); it!=syst.end(); ++it) {
--	  // Fix Here...?
--	  measurement.GetUniformSyst()[(*it).c_str()] = rel;
--	}
--      }
--	
--      if (type=="LogNormal" && rel!=0) {
--	for (vector<string>::const_iterator it=syst.begin(); it!=syst.end(); ++it) {
--	  // Fix Here...?
--	  measurement.GetLogNormSyst()[(*it).c_str()] = rel;
--	}
--      }
--	
--      if (type=="NoConstraint") {
--	for (vector<string>::const_iterator it=syst.begin(); it!=syst.end(); ++it) {
--	  // Fix Here...?
--	  measurement.GetNoSyst()[(*it).c_str()] = 1.0; // MB : dummy value
--	}
--      }
--    } // End adding of Constraint terms
--
--
--    else if( IsAcceptableNode( child ) ) { ; }
--
--    else {
--    cxcoutEHF << "Found XML child of Measurement with unknown name: " << child->GetNodeName()
--		<< std::endl;
--      throw hf_exc();
--    }
--
--    child = child->GetNextNode();
--  }
--
--  measurement.PrintTree(oocoutI(static_cast<TObject*>(nullptr), HistFactory));
--
--  return measurement;
-+   measurement.PrintTree(oocoutI(static_cast<TObject *>(nullptr), HistFactory));
- 
-+   return measurement;
- }
- 
--
--
- HistFactory::Channel ConfigParser::ParseChannelXMLFile( string filen ) {
- 
-   /*
-diff --git a/roofit/roofitcore/inc/RooAbsCollection.h b/roofit/roofitcore/inc/RooAbsCollection.h
-index 5c2d733a0674..0ea54abd33b4 100644
---- a/roofit/roofitcore/inc/RooAbsCollection.h
-+++ b/roofit/roofitcore/inc/RooAbsCollection.h
-@@ -179,14 +179,17 @@ class RooAbsCollection : public TObject, public RooPrintable {
-     removeAll();
-   }
- 
--  inline Int_t getSize() const { 
--    // Return the number of elements in the collection
--    return _list.size();
-+  inline Int_t getSize() const R__SUGGEST_ALTERNATIVE("size() returns true size.")
-+  {
-+     // Return the number of elements in the collection
-+     return _list.size();
-   }
--  
--  inline RooAbsArg *first() const { 
--    // Return the first element in this collection
--    return _list.front();
-+
-+  inline RooAbsArg *first() const
-+  {
-+     // Return the first element in this collection
-+     // calling front on an empty container is undefined
-+     return _list.empty() ? nullptr : _list.front();
-   }
- 
-   RooAbsArg * operator[](Storage_t::size_type i) const {
-diff --git a/roofit/roofitcore/src/RooAddModel.cxx b/roofit/roofitcore/src/RooAddModel.cxx
-index cc72e8e55aa2..ce072f9eb745 100644
---- a/roofit/roofitcore/src/RooAddModel.cxx
-+++ b/roofit/roofitcore/src/RooAddModel.cxx
-@@ -97,63 +97,71 @@ RooAddModel::RooAddModel(const char *name, const char *title, const RooArgList&
-   _coefList("!coefficients","List of coefficients",this),
-   _haveLastCoef(kFALSE),
-   _allExtendable(kFALSE)
--{ 
--  if (inPdfList.getSize()>inCoefList.getSize()+1) {
--    coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() 
--			  << ") number of pdfs and coefficients inconsistent, must have Npdf=Ncoef or Npdf=Ncoef+1" << endl ;
--    assert(0) ;
--  }
-- 
--  // Constructor with N PDFs and N or N-1 coefs
--  TIterator* pdfIter = inPdfList.createIterator() ;
--  TIterator* coefIter = inCoefList.createIterator() ;
--  RooAbsPdf* pdf ;
--  RooAbsReal* coef ;
--
--  while((coef = (RooAbsPdf*)coefIter->Next())) {
--    pdf = (RooAbsPdf*) pdfIter->Next() ;
--    if (!pdf) {
--      coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() 
--			    << ") number of pdfs and coefficients inconsistent, must have Npdf=Ncoef or Npdf=Ncoef+1" << endl ;
--      assert(0) ;
--    }
--    if (!dynamic_cast<RooAbsReal*>(coef)) {
--      coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() << ") coefficient " << coef->GetName() << " is not of type RooAbsReal, ignored" << endl ;
--      continue ;
--    }
--    if (!dynamic_cast<RooAbsReal*>(pdf)) {
--      coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() << ") pdf " << pdf->GetName() << " is not of type RooAbsPdf, ignored" << endl ;
--      continue ;
--    }
--    _pdfList.add(*pdf) ;
--    _coefList.add(*coef) ;    
--  }
--
--  pdf = (RooAbsPdf*) pdfIter->Next() ;
--  if (pdf) {
--    if (!dynamic_cast<RooAbsReal*>(pdf)) {
--      coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() << ") last pdf " << coef->GetName() << " is not of type RooAbsPdf, fatal error" << endl ;
--      assert(0) ;
--    }
--    _pdfList.add(*pdf) ;  
--  } else {
--    _haveLastCoef=kTRUE ;
--  }
--
--  delete pdfIter ;
--  delete coefIter  ;
--
--  _coefCache = new Double_t[_pdfList.getSize()] ;
--  _coefErrCount = _errorCount ;
-+{
-+   if (inPdfList.size() > inCoefList.size() + 1 || inPdfList.size() < inCoefList.size()) {
-+      std::stringstream msgSs;
-+      msgSs << "RooAddModel::RooAddModel(" << GetName()
-+            << ") number of pdfs and coefficients inconsistent, must have Npdf=Ncoef or Npdf=Ncoef+1";
-+      const std::string msgStr = msgSs.str();
-+      coutE(InputArguments) << msgStr << "\n";
-+      throw std::runtime_error(msgStr);
-+   }
-+
-+   // Constructor with N PDFs and N or N-1 coefs
-+   auto pdfIter = inPdfList.fwdIterator();
-+
-+   for (auto const &coef : inCoefList) {
-+      auto pdf = pdfIter.next();
-+      if (!pdf) {
-+         std::stringstream msgSs;
-+         msgSs << "RooAddModel::RooAddModel(" << GetName()
-+               << ") number of pdfs and coefficients inconsistent, must have Npdf=Ncoef or Npdf=Ncoef+1";
-+         const std::string msgStr = msgSs.str();
-+         coutE(InputArguments) << msgStr << "\n";
-+         throw std::runtime_error(msgStr);
-+      }
-+      if (!coef) {
-+         coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName()
-+                               << ") encountered and undefined coefficient, ignored\n";
-+         continue;
-+      }
-+      if (!dynamic_cast<RooAbsReal *>(coef)) {
-+         auto coefName = coef->GetName();
-+         coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() << ") coefficient "
-+                               << (coefName != nullptr ? coefName : "") << " is not of type RooAbsReal, ignored\n";
-+         continue;
-+      }
-+      if (!dynamic_cast<RooAbsPdf *>(pdf)) {
-+         coutE(InputArguments) << "RooAddModel::RooAddModel(" << GetName() << ") pdf " << pdf->GetName()
-+                               << " is not of type RooAbsPdf, ignored\n";
-+         continue;
-+      }
-+      _pdfList.add(*pdf);
-+      _coefList.add(*coef);
-+   }
-+
-+   if (auto pdf = pdfIter.next()) {
-+      if (!dynamic_cast<RooAbsPdf *>(pdf)) {
-+         std::stringstream msgSs;
-+         msgSs << "RooAddModel::RooAddModel(" << GetName() << ") last pdf " << pdf->GetName()
-+               << " is not of type RooAbsPdf, fatal error";
-+         const std::string msgStr = msgSs.str();
-+         coutE(InputArguments) << msgStr << "\n";
-+         throw std::runtime_error(msgStr);
-+      }
-+      _pdfList.add(*pdf);
-+   } else {
-+      _haveLastCoef = kTRUE;
-+   }
- 
--  if (ownPdfList) {
--    _ownedComps.addOwned(_pdfList) ;
--  }
-+   _coefCache = new Double_t[_pdfList.getSize()];
-+   _coefErrCount = _errorCount;
- 
-+   if (ownPdfList) {
-+      _ownedComps.addOwned(_pdfList);
-+   }
- }
- 
--
--
- ////////////////////////////////////////////////////////////////////////////////
- /// Copy constructor
- 
-diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx
-index 5bd49acdbeab..3b132c776695 100644
---- a/roofit/roofitcore/src/RooDataHist.cxx
-+++ b/roofit/roofitcore/src/RooDataHist.cxx
-@@ -573,10 +573,17 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC
- void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis,
-     RooRealVar *ourVar, Int_t *offset)
- {
--  if (!dynamic_cast<RooRealVar*>(ourVar)) {
--    coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
--    assert(0) ;
--  }
-+   // RooRealVar is derived from RooAbsRealLValue which is itself
-+   // derived from RooAbsReal and a virtual class RooAbsLValue
-+   // supplying setter fuctions, check if ourVar is indeed derived
-+   // as real
-+   if (!dynamic_cast<RooAbsReal *>(ourVar)) {
-+      std::string ourVarName(ourVar->GetName());
-+      coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVarName
-+                            << " must be real\n";
-+      throw std::logic_error("Incorrect type object (" + ourVarName +
-+                             ") passed as argument to RooDataHist::_adjustBinning. Please report this issue.");
-+   }
- 
-   const double xlo = theirVar.getMin();
-   const double xhi = theirVar.getMax();
-diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx
-index cbff7435b648..6e9fa40f5da5 100644
---- a/roofit/roofitcore/src/RooRealSumFunc.cxx
-+++ b/roofit/roofitcore/src/RooRealSumFunc.cxx
-@@ -152,8 +152,9 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg
-    func = (RooAbsReal *)funcIter->Next();
-    if (func) {
-       if (!dynamic_cast<RooAbsReal *>(func)) {
--         coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName()
--                               << " is not of type RooAbsReal, fatal error" << endl;
-+         auto funcName = func->GetName();
-+         coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func "
-+                               << (funcName != nullptr ? funcName : "") << " is not of type RooAbsReal, fatal error\n";
-          assert(0);
-       }
-       _funcList.add(*func);
-diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-index 2465abf3085f..1724805382ac 100644
---- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-+++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
-@@ -145,6 +145,9 @@ void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyInput(TMatrixT<Real_t> &m
- template <>
- void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyOutput(TMatrixT<Real_t> &matrix, IndexIterator_t sampleIterator)
- {
-+   // calling front on an empty container is undfined
-+   if (std::get<0>(fData).empty())
-+      return;
-    Event *event = std::get<0>(fData).front();
-    const DataSetInfo &info = std::get<1>(fData);
-    Int_t m = matrix.GetNrows();
-@@ -177,6 +180,9 @@ void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyOutput(TMatrixT<Real_t> &
- template <>
- void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyWeights(TMatrixT<Real_t> &matrix, IndexIterator_t sampleIterator)
- {
-+   // calling front on an empty container is undfined
-+   if (std::get<0>(fData).empty())
-+      return;
-    Event *event = std::get<0>(fData).front();
-    for (Int_t i = 0; i < matrix.GetNrows(); i++) {
-       Int_t sampleIndex = *sampleIterator++;
-@@ -190,6 +196,9 @@ template <>
- void TDataLoader<TMVAInput_t, TReference<Double_t>>::CopyInput(TMatrixT<Double_t> &matrix,
-                                                                IndexIterator_t sampleIterator)
- {
-+   // calling front on an empty container is undfined
-+   if (std::get<0>(fData).empty())
-+      return;
-    Event *event = std::get<0>(fData).front();
-    Int_t m = matrix.GetNrows();
-    Int_t n = event->GetNVariables();
-@@ -210,6 +219,9 @@ template <>
- void TDataLoader<TMVAInput_t, TReference<Double_t>>::CopyOutput(TMatrixT<Double_t> &matrix,
-                                                                 IndexIterator_t sampleIterator)
- {
-+   // calling front on an empty container is undfined
-+   if (std::get<0>(fData).empty())
-+      return;
-    Event *event = std::get<0>(fData).front();
-    const DataSetInfo &info = std::get<1>(fData);
-    Int_t m = matrix.GetNrows();

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2021-11-24 13:16:02 UTC (rev 1054677)
+++ PKGBUILD	2021-11-24 13:17:27 UTC (rev 1054678)
@@ -7,7 +7,7 @@
 pkgbase=root
 pkgname=('root' 'root-cuda')
 pkgver=6.24.06
-pkgrel=6
+pkgrel=7
 pkgdesc='C++ data analysis framework and interpreter from CERN'
 arch=('x86_64')
 url='https://root.cern'
@@ -96,7 +96,6 @@
     'jupyter_notebook_config.py'
     'nbman-for-arch.patch'
     '8351.patch'
-    '9271.patch'
     'thisroot.fail'
 )
 sha512sums=('356d6287df2900de9e831347d9513f444bf7cbd29c39fbb5841051ae877dac1e22dc255c64166cd3925b82aac860ae67ef6ce171732c16fd23d7919a47e7cb5a'
@@ -108,7 +107,6 @@
             '1c905ee7a3f8f5f3f567d957f9be6b503a8631565d4d9b9bfea5e496ef86865c5a8be1a1f8c7842754029879cf0afd2465249f532a116cc43660aa2e460ae682'
             '12814f50b7016bd86d3f91e0e31c052783a0c0fa72b7d6a072d3ae6f86c2437323d585e531235377ebbfdd9cb76abd7da84d9631de821151547f1d4b13417e69'
             '870740fbbd678056dd71b275c5d96f9b0db503ca8e0e9e84f784c3115aae66bb28a1eb531f665c1c8306a52686e5ce484ef65b3194bef6cb0d631664ccb1e3f9'
-            '6ba0994fa62d9a59a6382b9beafd044d0fb7bd45048c531d0437844a98f7ef40dcd45565670cb5a7adc7dc040885d3b7dbea73448ba1cd30fb9764d4f0890cd5'
             '3b9e382480b28f60af0b096ac9a42e6ba611b899717988bdebffd5aeabab054e37a28a7421f4a0f39198638c31f56a657a8a9ccc3db54a87daf50d43d35b1ca9')
 
 get_pyver () {



More information about the arch-commits mailing list