From 208a4a32607492d78c629c5878a9d8112b014c11 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 27 May 2019 20:33:29 -0500 Subject: [PATCH 001/186] Adding first outlines of weight products --- .../interface/LHEWeightInfoProduct.h | 47 +++++++++++++++ .../interface/LHEWeightProduct.h | 36 ++++++++++++ .../interface/WeightGroupInfo.h | 58 +++++++++++++++++++ .../GeneratorProducts/src/classes.h | 1 + .../GeneratorProducts/src/classes_def.xml | 3 + 5 files changed, 145 insertions(+) create mode 100644 SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h create mode 100644 SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h create mode 100644 SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h new file mode 100644 index 0000000000000..cacc814d43b9c --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -0,0 +1,47 @@ +#ifndef SimDataFormats_GeneratorProducts_LHEWeightInfoProduct_h +#define SimDataFormats_GeneratorProducts_LHEWeightInfoProduct_h + +#include +#include +#include +#include + +//#include + +#include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +class LHEWeightInfoProduct { + public: + LHEWeightInfoProduct() { + gen::WeightGroupInfo scaleInfo( + "" + ); + //scaleInfo.isPDF = false; + //scaleInfo.pdfLabel = ""; + //scaleInfo.pdfLHAID = ""; + + gen::WeightGroupInfo cenPdfInfo( + "" + ); + + //cenPdfInfo.isPDF = true; + //cenPdfInfo.pdfLabel = "NNPDF31_nnlo_hessian_pdfas"; + //cenPdfInfo.pdfLHAID = "3061000"; + + weightGroupsInfo_.push_back(scaleInfo); + weightGroupsInfo_.push_back(cenPdfInfo); + }; + std::vector getWeightGroupsInfo() { return weightGroupsInfo_; } + void addWeightGroupInfo(gen::WeightGroupInfo info) { + weightGroupsInfo_.push_back(info); + } + + private: + std::vector weightGroupsInfo_; + + +}; + +#endif // GeneratorWeightInfo_LHEInterface_LHEWeightInfoProduct_h + diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h new file mode 100644 index 0000000000000..784aafea49b56 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h @@ -0,0 +1,36 @@ +#ifndef SimDataFormats_GeneratorProducts_LHEWeightProduct_h +#define SimDataFormats_GeneratorProducts_LHEWeightProduct_h + +#include +#include +#include + +#include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" + +class LHEWeightProduct { + public: + typedef weightsContainer std::vector>; + + LHEWeightProduct() {} + LHEWeightProduct& operator=(LHEWeightProduct&& other) { + weights_ = std::move(other.weights_); + originalXWGTUP_ = std::move(other.originalXWGTUP_); + return *this; + } + ~LHEWeightProduct() {} + + void addWeight(double weight, size_t setEntry, size_t weightNum) { + weights_.at(setEntry).insert(weight, weightNum); + } + double originalXWGTUP() const { return originalXWGTUP_; } + const std::vector& weights() const { return weights_; } + + private: + weightsContainer weights_; + std::map weightsMap_; + double originalXWGTUP_; +}; + +#endif // GeneratorEvent_LHEInterface_LHEWeightProduct_h + diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h new file mode 100644 index 0000000000000..262f85a39d6b2 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -0,0 +1,58 @@ +#ifndef SimDataFormats_GeneratorProducts_WeightGroupInfo_h +#define SimDataFormats_GeneratorProducts_WeightGroupInfo_h + +/** \class PdfInfo + * + */ +#include + +namespace gen { + typedef std::pair weightId; + + enum WeightType { + pdfWeights, + scaleWeights, + matrixElementWeights, + unknownWeights, + }; + + class WeightGroupInfo { + public: + WeightGroupInfo(std::string header): + headerEntry_(header), name_(header), firstId_(0), lastId_(0) {} + int getWeightVectorEntry(const std::string& wgtId, size_t weightEntry) { + int orderedEntry = weightEntry - firstId_; + int entry = -1; + if (orderedEntry >= 0 && static_cast(orderedEntry) < idsContained_.size()) + if (idsContained_.at(orderedEntry).second == wgtId) + return orderedEntry; + //auto it = std::find( + return entry; + } + void addContainedID(std::string id, size_t weightEntry) { + if (!indexInRange(weightEntry)) + throw std::domain_error("This entry is out of the expected range"); + size_t orderedEntry = weightEntry - firstId_; + idsContained_.insert(idsContained_.begin()+weightEntry, std::make_pair(orderedEntry, id)); + } + void setWeightType(WeightType type) { weightType_ = type; } + + void setFirstEntry(size_t entryNum) { firstId_ = entryNum;} + void setLastEntry(size_t entryNum) { lastId_ = entryNum;} + + bool indexInRange(size_t index) { + return (index <= lastId_ && index >= firstId_); + } + + private: + std::string headerEntry_; + std::string name_; + WeightType weightType_; + std::vector idsContained_; + size_t firstId_; + size_t lastId_; + }; +} + +#endif // SimDataFormats_GeneratorProducts_WeightGroupInfo_h + diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index b3dad1f96a313..460a735e2e403 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -8,6 +8,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index c3a00478db98d..bcf54ea90c7e3 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -221,6 +221,9 @@ + + + From 0a8810ee2870d5109feecef3c19dbd2e4a97c77f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 29 May 2019 00:21:20 -0500 Subject: [PATCH 002/186] Close to an outline, not working for LHESource --- .../plugins/ExternalLHEProducer.cc | 24 ++++++++++++--- .../plugins/LHEProvenanceHelper.cc | 17 ++++++++++- .../plugins/LHEProvenanceHelper.h | 2 ++ .../LHEInterface/plugins/LHESource.cc | 24 ++++++++++++++- .../LHEInterface/plugins/LHESource.h | 1 + .../interface/LHEWeightInfoProduct.h | 29 +++++++------------ .../interface/WeightGroupInfo.h | 1 + .../GeneratorProducts/src/classes.h | 1 + .../GeneratorProducts/src/classes_def.xml | 5 ++++ 9 files changed, 79 insertions(+), 25 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index f9f76cbcfbd41..614ac5e45627e 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -49,6 +49,7 @@ Description: [one line class summary] #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" @@ -158,6 +159,7 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) : produces(); produces(); produces(); + produces(); } @@ -326,6 +328,22 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) unsigned int skip = 0; reader_ = std::make_unique(infiles, skip); + std::cout << "Adding the Weight product!"; + std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); + gen::WeightGroupInfo scaleInfo( + "" + ); + scaleInfo.setWeightType(gen::scaleWeights); + + gen::WeightGroupInfo cenPdfInfo( + "" + ); + cenPdfInfo.setWeightType(gen::pdfWeights); + + weightInfoProduct->addWeightGroupInfo(scaleInfo); + weightInfoProduct->addWeightGroupInfo(cenPdfInfo); + run.put(std::move(weightInfoProduct)); + nextEvent(); if (runInfoLast) { runInfo = runInfoLast; @@ -343,12 +361,11 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) // keep a copy around in case of merging runInfoProducts.push_back(new LHERunInfoProduct(*product)); wasMerged = false; - + run.put(std::move(product)); runInfo.reset(); } - } // ------------ method called when ending the processing of a run ------------ @@ -360,7 +377,7 @@ ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) std::unique_ptr product(runInfoProducts.pop_front().release()); run.put(std::move(product)); } - + nextEvent(); if (partonLevel) { throw edm::Exception(edm::errors::EventGenerationFailure) << "Error in ExternalLHEProducer::endRunProduce(). " @@ -373,7 +390,6 @@ ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) if (unlink(outputFile_.c_str())) { throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; } - } // ------------ Close all the open file descriptors ------------ diff --git a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc index 3947edb9af738..e5a3a461b8d84 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc @@ -2,6 +2,7 @@ #include #include "GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" +#include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "DataFormats/Provenance/interface/ProcessHistory.h" #include "DataFormats/Provenance/interface/ProcessHistoryRegistry.h" @@ -15,7 +16,8 @@ #include "FWCore/Version/interface/GetReleaseVersion.h" namespace edm { - LHEProvenanceHelper::LHEProvenanceHelper(TypeID const& eventProductType, TypeID const& runProductType, ProductRegistry& productRegistry) + LHEProvenanceHelper::LHEProvenanceHelper(TypeID const& eventProductType, TypeID const& runProductType, + TypeID const& weightProductType, ProductRegistry& productRegistry) : eventProductBranchDescription_(BranchDescription( InEvent , "source" @@ -40,12 +42,25 @@ namespace edm { , ParameterSetID() , TypeWithDict(runProductType.typeInfo()) , false)) + , weightProductBranchDescription_(BranchDescription( + InRun + , "source" + , "LHEFile" + // , "LHE" + , "LHEWeightInfoProduct" + , "LHEWeightInfoProduct" + , "" + , "LHESource" + , ParameterSetID() + , TypeWithDict(weightProductType.typeInfo()) + , false)) , eventProductProvenance_(eventProductBranchDescription_.branchID()) , commonProcessParameterSet_(fillCommonProcessParameterSet()) , processParameterSet_() { // Add the products to the product registry productRegistry.copyProduct(eventProductBranchDescription_); + productRegistry.copyProduct(weightProductBranchDescription_); productRegistry.copyProduct(runProductBranchDescription_); } diff --git a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h index 39fec2179fbb3..1f89820d3473c 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h +++ b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h @@ -17,12 +17,14 @@ namespace edm { struct LHEProvenanceHelper { explicit LHEProvenanceHelper(TypeID const& eventProductType, TypeID const& runProductType, + TypeID const& weightProductType, ProductRegistry& productRegistry); ParameterSet fillCommonProcessParameterSet(); void lheAugment(lhef::LHERunInfo const* runInfo); ProcessHistoryID lheInit(ProcessHistoryRegistry& processHistoryRegistry); BranchDescription const eventProductBranchDescription_; BranchDescription const runProductBranchDescription_; + BranchDescription const weightProductBranchDescription_; ProductProvenance eventProductProvenance_; ParameterSet const commonProcessParameterSet_; ParameterSet processParameterSet_; diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index a072d5ad54af7..c0598348fd5bf 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -23,6 +23,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" @@ -36,7 +37,7 @@ LHESource::LHESource(const edm::ParameterSet ¶ms, const edm::InputSourceDescription &desc) : ProducerSourceFromFiles(params, desc, false), reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), + lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), edm::TypeID(typeid(LHEWeightInfoProduct)), productRegistryUpdate()), phid_() { nextEvent(); @@ -116,6 +117,7 @@ LHESource::readRun_(edm::RunPrincipal& runPrincipal) { runPrincipal.fillRunPrincipal(processHistoryRegistryForUpdate()); putRunInfoProduct(runPrincipal); + putWeightInfoProduct(runPrincipal); } void @@ -132,6 +134,26 @@ void LHESource::putRunInfoProduct(edm::RunPrincipal& iRunPrincipal) { } } +void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { + if (runInfoProductLast_) { + auto product = std::make_unique(); + gen::WeightGroupInfo scaleInfo( + "" + ); + scaleInfo.setWeightType(gen::scaleWeights); + + gen::WeightGroupInfo cenPdfInfo( + "" + ); + cenPdfInfo.setWeightType(gen::pdfWeights); + + product->addWeightGroupInfo(scaleInfo); + product->addWeightGroupInfo(cenPdfInfo); + std::unique_ptr rdp(new edm::Wrapper(std::move(product))); + iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); + } +} + bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventAuxiliary::ExperimentType&) { nextEvent(); diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.h b/GeneratorInterface/LHEInterface/plugins/LHESource.h index c6e1457e8b2db..65cbac8f6e856 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.h +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.h @@ -53,6 +53,7 @@ class LHESource : public edm::ProducerSourceFromFiles { void nextEvent(); void putRunInfoProduct(edm::RunPrincipal&); + void putWeightInfoProduct(edm::RunPrincipal&); void fillRunInfoProduct(lhef::LHERunInfo const&, LHERunInfoProduct& ); std::unique_ptr reader_; diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index cacc814d43b9c..ac16db65ae9fa 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -13,25 +13,16 @@ class LHEWeightInfoProduct { public: - LHEWeightInfoProduct() { - gen::WeightGroupInfo scaleInfo( - "" - ); - //scaleInfo.isPDF = false; - //scaleInfo.pdfLabel = ""; - //scaleInfo.pdfLHAID = ""; - - gen::WeightGroupInfo cenPdfInfo( - "" - ); - - //cenPdfInfo.isPDF = true; - //cenPdfInfo.pdfLabel = "NNPDF31_nnlo_hessian_pdfas"; - //cenPdfInfo.pdfLHAID = "3061000"; - - weightGroupsInfo_.push_back(scaleInfo); - weightGroupsInfo_.push_back(cenPdfInfo); - }; + LHEWeightInfoProduct() {} + LHEWeightInfoProduct(const LHEWeightInfoProduct& other) {weightGroupsInfo_ = other.weightGroupsInfo_;} + LHEWeightInfoProduct(LHEWeightInfoProduct&& other) {weightGroupsInfo_ = std::move(other.weightGroupsInfo_);} + ~LHEWeightInfoProduct() {} + LHEWeightInfoProduct(std::vector& weightGroups) { + weightGroupsInfo_ = weightGroups; + } + LHEWeightInfoProduct &operator = (const LHEWeightInfoProduct &other) {weightGroupsInfo_ = other.weightGroupsInfo_; return * this; } + LHEWeightInfoProduct &operator = (LHEWeightInfoProduct &&other) {weightGroupsInfo_ = std::move(other.weightGroupsInfo_); return *this;} + std::vector getWeightGroupsInfo() { return weightGroupsInfo_; } void addWeightGroupInfo(gen::WeightGroupInfo info) { weightGroupsInfo_.push_back(info); diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 262f85a39d6b2..3f79786e6c7b3 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -18,6 +18,7 @@ namespace gen { class WeightGroupInfo { public: + WeightGroupInfo() {} WeightGroupInfo(std::string header): headerEntry_(header), name_(header), firstId_(0), lastId_(0) {} int getWeightVectorEntry(const std::string& wgtId, size_t weightEntry) { diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index 460a735e2e403..6ba5d46db727d 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -8,6 +8,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index bcf54ea90c7e3..b7b4126b900a3 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -197,6 +197,9 @@ + + + @@ -225,7 +228,9 @@ + + From 7cfc2feb0447c7f9c6f87ce2a3f402aa1c3ee7e7 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 29 May 2019 15:08:47 -0500 Subject: [PATCH 003/186] Working skeleton of LHEWeightInfoProduct --- .../plugins/ExternalLHEProducer.cc | 3 +-- .../interface/LHEWeightInfoProduct.h | 20 ++++++-------- .../src/LHEWeightInfoProduct.cc | 26 +++++++++++++++++++ 3 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 614ac5e45627e..3697b4ae4ff36 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -159,7 +159,7 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) : produces(); produces(); produces(); - produces(); + produces(); } @@ -328,7 +328,6 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) unsigned int skip = 0; reader_ = std::make_unique(infiles, skip); - std::cout << "Adding the Weight product!"; std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); gen::WeightGroupInfo scaleInfo( "" diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index ac16db65ae9fa..6ab385ae70cdf 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -14,19 +14,15 @@ class LHEWeightInfoProduct { public: LHEWeightInfoProduct() {} - LHEWeightInfoProduct(const LHEWeightInfoProduct& other) {weightGroupsInfo_ = other.weightGroupsInfo_;} - LHEWeightInfoProduct(LHEWeightInfoProduct&& other) {weightGroupsInfo_ = std::move(other.weightGroupsInfo_);} + LHEWeightInfoProduct(std::vector& weightGroups); + LHEWeightInfoProduct(const LHEWeightInfoProduct& other); + LHEWeightInfoProduct(LHEWeightInfoProduct&& other); ~LHEWeightInfoProduct() {} - LHEWeightInfoProduct(std::vector& weightGroups) { - weightGroupsInfo_ = weightGroups; - } - LHEWeightInfoProduct &operator = (const LHEWeightInfoProduct &other) {weightGroupsInfo_ = other.weightGroupsInfo_; return * this; } - LHEWeightInfoProduct &operator = (LHEWeightInfoProduct &&other) {weightGroupsInfo_ = std::move(other.weightGroupsInfo_); return *this;} - - std::vector getWeightGroupsInfo() { return weightGroupsInfo_; } - void addWeightGroupInfo(gen::WeightGroupInfo info) { - weightGroupsInfo_.push_back(info); - } + LHEWeightInfoProduct& operator=(const LHEWeightInfoProduct &other); + LHEWeightInfoProduct& operator=(LHEWeightInfoProduct &&other); + + std::vector getWeightGroupsInfo(); + void addWeightGroupInfo(gen::WeightGroupInfo info); private: std::vector weightGroupsInfo_; diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc new file mode 100644 index 0000000000000..7aee2dbff205a --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -0,0 +1,26 @@ +#include +#include + +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" + +LHEWeightInfoProduct::LHEWeightInfoProduct(std::vector& weightGroups) { + weightGroupsInfo_ = weightGroups; +} + +LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(const LHEWeightInfoProduct &other) { + weightGroupsInfo_ = other.weightGroupsInfo_; + return * this; +} + +LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(LHEWeightInfoProduct &&other) { + weightGroupsInfo_ = std::move(other.weightGroupsInfo_); + return *this; +} + +std::vector LHEWeightInfoProduct::getWeightGroupsInfo() { + return weightGroupsInfo_; +} + +void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo info) { + weightGroupsInfo_.push_back(info); +} From 444dbc3d3924c325ca58144515c988d9874862c8 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 30 May 2019 00:19:08 -0500 Subject: [PATCH 004/186] About a working outline with weights in the event --- .../LHEInterface/interface/TestWeightInfo.h | 26 ++++++++ .../plugins/ExternalLHEProducer.cc | 37 +++++++++-- .../LHEInterface/plugins/LHESource.cc | 4 +- .../interface/LHEWeightProduct.h | 48 +++++++++------ .../interface/WeightGroupInfo.h | 61 +++++++++++++------ .../GeneratorProducts/src/classes.h | 1 + .../GeneratorProducts/src/classes_def.xml | 9 ++- 7 files changed, 139 insertions(+), 47 deletions(-) create mode 100644 GeneratorInterface/LHEInterface/interface/TestWeightInfo.h diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h new file mode 100644 index 0000000000000..451c60c03eed9 --- /dev/null +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -0,0 +1,26 @@ +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +gen::WeightGroupInfo getExampleScaleWeights() { + gen::WeightGroupInfo scaleInfo( + "", + "centralScaleVariations" + ); + std::vector entries = { + R"( mur=1 muf=1 )", + R"( mur=1 muf=2 )", + R"( mur=1 muf=0.5 )", + R"( mur=2 muf=1 )", + R"( mur=2 muf=2 )", + R"( mur=2 muf=0.5 )", + R"( mur=0.5 muf=1 )", + R"( mur=0.5 muf=2 )", + R"( mur=0.5 muf=0.5 )", + }; + scaleInfo.setWeightType(gen::kScaleWeights); + + for (size_t i = 0; i < entries.size(); i++) { + scaleInfo.addContainedId(i, std::to_string(i+1), entries[i]); + } + return scaleInfo; +} + diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 3697b4ae4ff36..ee3a7ea3e6d8d 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -51,11 +51,13 @@ Description: [one line class summary] #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" +#include "GeneratorInterface/LHEInterface/interface/TestWeightInfo.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/RandomNumberGenerator.h" @@ -83,6 +85,7 @@ class ExternalLHEProducer : public edm::one::EDProducer readOutput(); void nextEvent(); @@ -106,6 +109,7 @@ class ExternalLHEProducer : public edm::one::EDProducer partonLevel; boost::ptr_deque runInfoProducts; bool wasMerged; + std::vector weightGroups_; class FileCloseSentry : private boost::noncopyable { public: @@ -157,6 +161,7 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) : produces("LHEScriptOutput"); produces(); + produces(); produces(); produces(); produces(); @@ -201,6 +206,23 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) partonLevel->weights().end(), boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); + + std::unique_ptr weightProduct(new LHEWeightProduct); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + int weightNum = 0; + for (const auto& weight : partonLevel->weights()) { + if (weightNum > 8) + continue; + weightGroupIndex = findWeightGroup(weight.id, weightGroupIndex); + std::cout << "Size is " << weightGroups_.size() << std::endl; + int entry = weightGroups_.at(weightGroupIndex).weightVectorEntry(weight.id, weightNum); + std::cout << "Still going. Entry is " << entry << std::endl; + weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); + weightNum++; + } + iEvent.put(std::move(weightProduct)); + product->setScales(partonLevel->scales()); if (nPartonMapping_.empty()) { product->setNpLO(partonLevel->npLO()); @@ -329,18 +351,16 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) reader_ = std::make_unique(infiles, skip); std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - gen::WeightGroupInfo scaleInfo( - "" - ); - scaleInfo.setWeightType(gen::scaleWeights); - + gen::WeightGroupInfo scaleInfo = getExampleScaleWeights(); + gen::WeightGroupInfo cenPdfInfo( "" ); - cenPdfInfo.setWeightType(gen::pdfWeights); + cenPdfInfo.setWeightType(gen::kPdfWeights); weightInfoProduct->addWeightGroupInfo(scaleInfo); weightInfoProduct->addWeightGroupInfo(cenPdfInfo); + weightGroups_ = weightInfoProduct->getWeightGroupsInfo(); run.put(std::move(weightInfoProduct)); nextEvent(); @@ -515,6 +535,11 @@ ExternalLHEProducer::executeScript() } + +int ExternalLHEProducer::findWeightGroup(std::string wgtId, int previousIndex) { + return 0; +} + // ------------ Read the output script ------------ #define BUFSIZE 4096 std::unique_ptr ExternalLHEProducer::readOutput() diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index c0598348fd5bf..a238a0fc613ca 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -140,12 +140,12 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { gen::WeightGroupInfo scaleInfo( "" ); - scaleInfo.setWeightType(gen::scaleWeights); + scaleInfo.setWeightType(gen::kScaleWeights); gen::WeightGroupInfo cenPdfInfo( "" ); - cenPdfInfo.setWeightType(gen::pdfWeights); + cenPdfInfo.setWeightType(gen::kPdfWeights); product->addWeightGroupInfo(scaleInfo); product->addWeightGroupInfo(cenPdfInfo); diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h index 784aafea49b56..e58927987bdd3 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h @@ -4,32 +4,44 @@ #include #include #include +#include #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" +typedef std::vector> WeightsContainer; + class LHEWeightProduct { public: - typedef weightsContainer std::vector>; - - LHEWeightProduct() {} - LHEWeightProduct& operator=(LHEWeightProduct&& other) { - weights_ = std::move(other.weights_); - originalXWGTUP_ = std::move(other.originalXWGTUP_); - return *this; - } - ~LHEWeightProduct() {} - - void addWeight(double weight, size_t setEntry, size_t weightNum) { - weights_.at(setEntry).insert(weight, weightNum); - } - double originalXWGTUP() const { return originalXWGTUP_; } - const std::vector& weights() const { return weights_; } + LHEWeightProduct() { weightsVector_ = {}; } + LHEWeightProduct& operator=(LHEWeightProduct&& other) { + weightsVector_ = std::move(other.weightsVector_); + return *this; + } + ~LHEWeightProduct() {} + + void setNumWeightSets(int num) { weightsVector_.resize(num); } + void addWeightSet() { weightsVector_.push_back({}); } + void addWeight(double weight, int setEntry, int weightNum) { + if (weightsVector_.size() == 0 && setEntry == 0) + addWeightSet(); + if (static_cast(weightsVector_.size()) <= setEntry) + throw std::domain_error("Out of range weight"); + auto& weights = weightsVector_.at(setEntry); + std::cout << "Weights size is " << weights.size() << std::endl; + if (static_cast(weights.size()) == weightNum) + weights.push_back(weight); + else if (static_cast(weights.size()) < weightNum) { + weights.resize(weightNum); + weights.insert(weights.begin()+weightNum, weight); + } + else + weights.insert(weights.begin()+weightNum, weight); + } + const WeightsContainer& weights() const { return weightsVector_; } private: - weightsContainer weights_; - std::map weightsMap_; - double originalXWGTUP_; + WeightsContainer weightsVector_; }; #endif // GeneratorEvent_LHEInterface_LHEWeightProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 3f79786e6c7b3..43e189df5c50b 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -7,41 +7,64 @@ #include namespace gen { - typedef std::pair weightId; + struct WeightMetaInfo { + int globalIndex; + int localIndex; + std::string id; + std::string label; + }; enum WeightType { - pdfWeights, - scaleWeights, - matrixElementWeights, - unknownWeights, + kPdfWeights, + kScaleWeights, + kMatrixElementWeights, + kUnknownWeights, + kShowerWeights, }; class WeightGroupInfo { public: WeightGroupInfo() {} + WeightGroupInfo(std::string header, std::string name): + headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header): headerEntry_(header), name_(header), firstId_(0), lastId_(0) {} - int getWeightVectorEntry(const std::string& wgtId, size_t weightEntry) { + + int weightVectorEntry(const std::string& wgtId) { + return weightVectorEntry(wgtId, 0); + } + + int weightVectorEntry(const std::string& wgtId, int weightEntry) { int orderedEntry = weightEntry - firstId_; int entry = -1; if (orderedEntry >= 0 && static_cast(orderedEntry) < idsContained_.size()) - if (idsContained_.at(orderedEntry).second == wgtId) + if (idsContained_.at(orderedEntry).id == wgtId) return orderedEntry; //auto it = std::find( return entry; } - void addContainedID(std::string id, size_t weightEntry) { - if (!indexInRange(weightEntry)) - throw std::domain_error("This entry is out of the expected range"); - size_t orderedEntry = weightEntry - firstId_; - idsContained_.insert(idsContained_.begin()+weightEntry, std::make_pair(orderedEntry, id)); + + void addContainedId(int weightEntry, std::string id, std::string label="") { + if (firstId_ == -1 || weightEntry < firstId_) + firstId_ = weightEntry; + if (firstId_ == -1 || weightEntry > lastId_) + lastId_ = weightEntry; + + int orderedEntry = weightEntry - firstId_; + WeightMetaInfo info; + info.globalIndex = weightEntry; + info.localIndex = orderedEntry; + info.id = id; + info.label = label; + + idsContained_.insert(idsContained_.begin()+orderedEntry, info); } - void setWeightType(WeightType type) { weightType_ = type; } - void setFirstEntry(size_t entryNum) { firstId_ = entryNum;} - void setLastEntry(size_t entryNum) { lastId_ = entryNum;} + std::vector containedIds() { return idsContained_; } + + void setWeightType(WeightType type) { weightType_ = type; } - bool indexInRange(size_t index) { + bool indexInRange(int index) { return (index <= lastId_ && index >= firstId_); } @@ -49,9 +72,9 @@ namespace gen { std::string headerEntry_; std::string name_; WeightType weightType_; - std::vector idsContained_; - size_t firstId_; - size_t lastId_; + std::vector idsContained_; + int firstId_; + int lastId_; }; } diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index 6ba5d46db727d..266b790487bbe 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -10,6 +10,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index b7b4126b900a3..26a7a43ed572d 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -200,6 +200,7 @@ + @@ -224,13 +225,17 @@ - - + + + + + + From 49c25ba7a201cac7dc3c516f0dd8be95e4901509 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 30 May 2019 16:14:26 -0500 Subject: [PATCH 005/186] Working rough implementation of Weight/WeightInfo prods --- .../LHEInterface/interface/TestWeightInfo.h | 34 ++++++++++++++++++- .../plugins/ExternalLHEProducer.cc | 3 +- .../interface/LHEWeightInfoProduct.h | 3 +- .../interface/LHEWeightProduct.h | 3 +- .../interface/WeightGroupInfo.h | 21 ++++++++++-- .../src/LHEWeightInfoProduct.cc | 10 +++++- 6 files changed, 65 insertions(+), 9 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index 451c60c03eed9..9ae3212728f77 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -1,4 +1,12 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include + +std::string parseId(std::string label) { + auto re = std::regex("id=\"([0-9]*)\""); + std::smatch matches; + std::regex_search(label, matches, re); + return std::string(matches.str(1)); +} gen::WeightGroupInfo getExampleScaleWeights() { gen::WeightGroupInfo scaleInfo( @@ -19,7 +27,31 @@ gen::WeightGroupInfo getExampleScaleWeights() { scaleInfo.setWeightType(gen::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { - scaleInfo.addContainedId(i, std::to_string(i+1), entries[i]); + scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); + } + return scaleInfo; +} + +gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { + gen::WeightGroupInfo scaleInfo( + "", + "centralScaleVariations" + ); + std::vector entries = { + R"( mur=1 muf=1 )", + R"( mur=1 muf=2 )", + R"( mur=1 muf=0.5 )", + R"( mur=2 muf=2 )", + R"( mur=2 muf=1 )", + R"( mur=2 muf=0.5 )", + R"( mur=0.5 muf=2 )", + R"( mur=0.5 muf=1 )", + R"( mur=0.5 muf=0.5 )", + }; + scaleInfo.setWeightType(gen::kScaleWeights); + + for (size_t i = 0; i < entries.size(); i++) { + scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); } return scaleInfo; } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index ee3a7ea3e6d8d..763437e587a98 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -352,6 +352,7 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); gen::WeightGroupInfo scaleInfo = getExampleScaleWeights(); + //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); gen::WeightGroupInfo cenPdfInfo( "" @@ -360,7 +361,7 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) weightInfoProduct->addWeightGroupInfo(scaleInfo); weightInfoProduct->addWeightGroupInfo(cenPdfInfo); - weightGroups_ = weightInfoProduct->getWeightGroupsInfo(); + weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); run.put(std::move(weightInfoProduct)); nextEvent(); diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index 6ab385ae70cdf..a68418dabecdb 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -21,7 +21,8 @@ class LHEWeightInfoProduct { LHEWeightInfoProduct& operator=(const LHEWeightInfoProduct &other); LHEWeightInfoProduct& operator=(LHEWeightInfoProduct &&other); - std::vector getWeightGroupsInfo(); + const std::vector& allWeightGroupsInfo() const; + const gen::WeightGroupInfo& containingWeightGroupInfo(int index) const; void addWeightGroupInfo(gen::WeightGroupInfo info); private: diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h index e58927987bdd3..0e8ecc1ed2408 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h @@ -28,7 +28,6 @@ class LHEWeightProduct { if (static_cast(weightsVector_.size()) <= setEntry) throw std::domain_error("Out of range weight"); auto& weights = weightsVector_.at(setEntry); - std::cout << "Weights size is " << weights.size() << std::endl; if (static_cast(weights.size()) == weightNum) weights.push_back(weight); else if (static_cast(weights.size()) < weightNum) { @@ -36,7 +35,7 @@ class LHEWeightProduct { weights.insert(weights.begin()+weightNum, weight); } else - weights.insert(weights.begin()+weightNum, weight); + weights[weightNum] = weight; } const WeightsContainer& weights() const { return weightsVector_; } diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 43e189df5c50b..75a2dccbf7f8e 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -5,6 +5,7 @@ * */ #include +#include namespace gen { struct WeightMetaInfo { @@ -30,6 +31,15 @@ namespace gen { WeightGroupInfo(std::string header): headerEntry_(header), name_(header), firstId_(0), lastId_(0) {} + WeightMetaInfo weightMetaInfo(int weightEntry) { + return idsContained_.at(weightEntry); + } + + WeightMetaInfo weightMetaInfo(std::string wgtId) { + int weightEntry = weightVectorEntry(wgtId); + return idsContained_.at(weightEntry); + } + int weightVectorEntry(const std::string& wgtId) { return weightVectorEntry(wgtId, 0); } @@ -40,7 +50,10 @@ namespace gen { if (orderedEntry >= 0 && static_cast(orderedEntry) < idsContained_.size()) if (idsContained_.at(orderedEntry).id == wgtId) return orderedEntry; - //auto it = std::find( + auto it = std::find_if(idsContained_.begin(), idsContained_.end(), + [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); + if (it != idsContained_.end()) + return std::distance(idsContained_.begin(), it); return entry; } @@ -57,14 +70,16 @@ namespace gen { info.id = id; info.label = label; + if (static_cast(idsContained_.size()) < orderedEntry) + idsContained_.resize(orderedEntry); idsContained_.insert(idsContained_.begin()+orderedEntry, info); } - std::vector containedIds() { return idsContained_; } + std::vector containedIds() const { return idsContained_; } void setWeightType(WeightType type) { weightType_ = type; } - bool indexInRange(int index) { + bool indexInRange(int index) const { return (index <= lastId_ && index >= firstId_); } diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc index 7aee2dbff205a..d20b76b934189 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -17,10 +17,18 @@ LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(LHEWeightInfoProduct &&oth return *this; } -std::vector LHEWeightInfoProduct::getWeightGroupsInfo() { +const std::vector& LHEWeightInfoProduct::allWeightGroupsInfo() const { return weightGroupsInfo_; } +const gen::WeightGroupInfo& LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { + for (const auto& weightGroup : weightGroupsInfo_) { + if (weightGroup.indexInRange(index)) + return weightGroup; + } + throw std::domain_error("Failed to find containing weight group"); +} + void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo info) { weightGroupsInfo_.push_back(info); } From bb431b79b74099c817e8848de2c6c2edb27ca62c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 31 May 2019 02:23:21 -0500 Subject: [PATCH 006/186] Fix bug in insert to containedIds for WeightGroup --- .../LHEInterface/interface/TestWeightInfo.h | 952 ++++++++++++++++++ .../plugins/ExternalLHEProducer.cc | 48 +- .../interface/LHEWeightInfoProduct.h | 1 + .../interface/LHEWeightProduct.h | 10 +- .../interface/WeightGroupInfo.h | 46 +- .../src/LHEWeightInfoProduct.cc | 4 + .../GeneratorProducts/src/classes_def.xml | 4 +- 7 files changed, 1028 insertions(+), 37 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index 9ae3212728f77..d42179471cfc5 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -56,3 +56,955 @@ gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { return scaleInfo; } +std::vector getExamplePdfWeights() { + gen::WeightGroupInfo scaleInfo( + "", + "centralScaleVariations" + ); + std::vector entries = { + R"()", + R"( Member 0 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 1 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 2 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 3 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 4 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 5 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 6 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 7 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 8 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 9 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 10 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 11 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 12 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 13 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 14 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 15 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 16 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 17 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 18 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 19 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 20 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 21 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 22 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 23 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 24 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 25 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 26 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 27 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 28 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 29 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 30 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 31 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 32 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 33 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 34 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 35 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 36 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 37 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 38 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 39 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 40 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 41 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 42 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 43 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 44 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 45 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 46 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 47 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 48 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 49 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 50 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 51 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 52 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 53 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 54 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 55 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 56 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 57 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 58 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 59 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 60 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 61 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 62 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 63 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 64 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 65 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 66 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 67 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 68 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 69 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 70 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 71 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 72 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 73 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 74 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 75 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 76 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 77 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 78 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 79 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 80 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 81 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 82 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 83 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 84 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 85 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 86 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 87 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 88 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 89 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 90 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 91 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 92 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 93 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 94 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 95 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 96 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 97 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 98 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 99 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 100 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 101 of sets NNPDF31_nnlo_hessian_pdfas)", + R"( Member 102 of sets NNPDF31_nnlo_hessian_pdfas)", + R"()", + R"()", + R"( Member 0 of sets CT10nlo_nf4)", + R"()", + R"()", + R"( Member 0 of sets CT14nnlo_NF4)", + R"()", + R"()", + R"( Member 0 of sets CT14nlo_NF4)", + R"()", + R"()", + R"( Member 0 of sets CT14lo_NF4)", + R"()", + R"()", + R"( Member 0 of sets MSTW2008lo68cl_nf4)", + R"( Member 1 of sets MSTW2008lo68cl_nf4)", + R"( Member 2 of sets MSTW2008lo68cl_nf4)", + R"( Member 3 of sets MSTW2008lo68cl_nf4)", + R"( Member 4 of sets MSTW2008lo68cl_nf4)", + R"( Member 5 of sets MSTW2008lo68cl_nf4)", + R"( Member 6 of sets MSTW2008lo68cl_nf4)", + R"( Member 7 of sets MSTW2008lo68cl_nf4)", + R"( Member 8 of sets MSTW2008lo68cl_nf4)", + R"( Member 9 of sets MSTW2008lo68cl_nf4)", + R"( Member 10 of sets MSTW2008lo68cl_nf4)", + R"( Member 11 of sets MSTW2008lo68cl_nf4)", + R"( Member 12 of sets MSTW2008lo68cl_nf4)", + R"( Member 13 of sets MSTW2008lo68cl_nf4)", + R"( Member 14 of sets MSTW2008lo68cl_nf4)", + R"( Member 15 of sets MSTW2008lo68cl_nf4)", + R"( Member 16 of sets MSTW2008lo68cl_nf4)", + R"( Member 17 of sets MSTW2008lo68cl_nf4)", + R"( Member 18 of sets MSTW2008lo68cl_nf4)", + R"( Member 19 of sets MSTW2008lo68cl_nf4)", + R"( Member 20 of sets MSTW2008lo68cl_nf4)", + R"( Member 21 of sets MSTW2008lo68cl_nf4)", + R"( Member 22 of sets MSTW2008lo68cl_nf4)", + R"( Member 23 of sets MSTW2008lo68cl_nf4)", + R"( Member 24 of sets MSTW2008lo68cl_nf4)", + R"( Member 25 of sets MSTW2008lo68cl_nf4)", + R"( Member 26 of sets MSTW2008lo68cl_nf4)", + R"( Member 27 of sets MSTW2008lo68cl_nf4)", + R"( Member 28 of sets MSTW2008lo68cl_nf4)", + R"( Member 29 of sets MSTW2008lo68cl_nf4)", + R"( Member 30 of sets MSTW2008lo68cl_nf4)", + R"( Member 31 of sets MSTW2008lo68cl_nf4)", + R"( Member 32 of sets MSTW2008lo68cl_nf4)", + R"( Member 33 of sets MSTW2008lo68cl_nf4)", + R"( Member 34 of sets MSTW2008lo68cl_nf4)", + R"( Member 35 of sets MSTW2008lo68cl_nf4)", + R"( Member 36 of sets MSTW2008lo68cl_nf4)", + R"( Member 37 of sets MSTW2008lo68cl_nf4)", + R"( Member 38 of sets MSTW2008lo68cl_nf4)", + R"( Member 39 of sets MSTW2008lo68cl_nf4)", + R"( Member 40 of sets MSTW2008lo68cl_nf4)", + R"()", + R"()", + R"( Member 0 of sets MSTW2008nlo68cl_nf4)", + R"( Member 1 of sets MSTW2008nlo68cl_nf4)", + R"( Member 2 of sets MSTW2008nlo68cl_nf4)", + R"( Member 3 of sets MSTW2008nlo68cl_nf4)", + R"( Member 4 of sets MSTW2008nlo68cl_nf4)", + R"( Member 5 of sets MSTW2008nlo68cl_nf4)", + R"( Member 6 of sets MSTW2008nlo68cl_nf4)", + R"( Member 7 of sets MSTW2008nlo68cl_nf4)", + R"( Member 8 of sets MSTW2008nlo68cl_nf4)", + R"( Member 9 of sets MSTW2008nlo68cl_nf4)", + R"( Member 10 of sets MSTW2008nlo68cl_nf4)", + R"( Member 11 of sets MSTW2008nlo68cl_nf4)", + R"( Member 12 of sets MSTW2008nlo68cl_nf4)", + R"( Member 13 of sets MSTW2008nlo68cl_nf4)", + R"( Member 14 of sets MSTW2008nlo68cl_nf4)", + R"( Member 15 of sets MSTW2008nlo68cl_nf4)", + R"( Member 16 of sets MSTW2008nlo68cl_nf4)", + R"( Member 17 of sets MSTW2008nlo68cl_nf4)", + R"( Member 18 of sets MSTW2008nlo68cl_nf4)", + R"( Member 19 of sets MSTW2008nlo68cl_nf4)", + R"( Member 20 of sets MSTW2008nlo68cl_nf4)", + R"( Member 21 of sets MSTW2008nlo68cl_nf4)", + R"( Member 22 of sets MSTW2008nlo68cl_nf4)", + R"( Member 23 of sets MSTW2008nlo68cl_nf4)", + R"( Member 24 of sets MSTW2008nlo68cl_nf4)", + R"( Member 25 of sets MSTW2008nlo68cl_nf4)", + R"( Member 26 of sets MSTW2008nlo68cl_nf4)", + R"( Member 27 of sets MSTW2008nlo68cl_nf4)", + R"( Member 28 of sets MSTW2008nlo68cl_nf4)", + R"( Member 29 of sets MSTW2008nlo68cl_nf4)", + R"( Member 30 of sets MSTW2008nlo68cl_nf4)", + R"( Member 31 of sets MSTW2008nlo68cl_nf4)", + R"( Member 32 of sets MSTW2008nlo68cl_nf4)", + R"( Member 33 of sets MSTW2008nlo68cl_nf4)", + R"( Member 34 of sets MSTW2008nlo68cl_nf4)", + R"( Member 35 of sets MSTW2008nlo68cl_nf4)", + R"( Member 36 of sets MSTW2008nlo68cl_nf4)", + R"( Member 37 of sets MSTW2008nlo68cl_nf4)", + R"( Member 38 of sets MSTW2008nlo68cl_nf4)", + R"( Member 39 of sets MSTW2008nlo68cl_nf4)", + R"( Member 40 of sets MSTW2008nlo68cl_nf4)", + R"()", + R"()", + R"( Member 0 of sets MSTW2008nlo_mbrange_nf4)", + R"( Member 1 of sets MSTW2008nlo_mbrange_nf4)", + R"( Member 2 of sets MSTW2008nlo_mbrange_nf4)", + R"( Member 3 of sets MSTW2008nlo_mbrange_nf4)", + R"( Member 4 of sets MSTW2008nlo_mbrange_nf4)", + R"( Member 5 of sets MSTW2008nlo_mbrange_nf4)", + R"( Member 6 of sets MSTW2008nlo_mbrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 1 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 2 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 3 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 4 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 5 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 6 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 7 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 8 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 9 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 10 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 11 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 12 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 13 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 14 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 15 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 16 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 17 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 18 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 19 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 20 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 21 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 22 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 23 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 24 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 25 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 26 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 27 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 28 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 29 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 30 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 31 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 32 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 33 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 34 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 35 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 36 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 37 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 38 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 39 of sets MSTW2008nnlo68cl_nf4)", + R"( Member 40 of sets MSTW2008nnlo68cl_nf4)", + R"()", + R"()", + R"( Member 0 of sets MSTW2008nnlo_mbrange_nf4)", + R"( Member 1 of sets MSTW2008nnlo_mbrange_nf4)", + R"( Member 2 of sets MSTW2008nnlo_mbrange_nf4)", + R"( Member 3 of sets MSTW2008nnlo_mbrange_nf4)", + R"( Member 4 of sets MSTW2008nnlo_mbrange_nf4)", + R"( Member 5 of sets MSTW2008nnlo_mbrange_nf4)", + R"( Member 6 of sets MSTW2008nnlo_mbrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nlo68cl_nf4)", + R"( Member 1 of sets MMHT2014nlo68cl_nf4)", + R"( Member 2 of sets MMHT2014nlo68cl_nf4)", + R"( Member 3 of sets MMHT2014nlo68cl_nf4)", + R"( Member 4 of sets MMHT2014nlo68cl_nf4)", + R"( Member 5 of sets MMHT2014nlo68cl_nf4)", + R"( Member 6 of sets MMHT2014nlo68cl_nf4)", + R"( Member 7 of sets MMHT2014nlo68cl_nf4)", + R"( Member 8 of sets MMHT2014nlo68cl_nf4)", + R"( Member 9 of sets MMHT2014nlo68cl_nf4)", + R"( Member 10 of sets MMHT2014nlo68cl_nf4)", + R"( Member 11 of sets MMHT2014nlo68cl_nf4)", + R"( Member 12 of sets MMHT2014nlo68cl_nf4)", + R"( Member 13 of sets MMHT2014nlo68cl_nf4)", + R"( Member 14 of sets MMHT2014nlo68cl_nf4)", + R"( Member 15 of sets MMHT2014nlo68cl_nf4)", + R"( Member 16 of sets MMHT2014nlo68cl_nf4)", + R"( Member 17 of sets MMHT2014nlo68cl_nf4)", + R"( Member 18 of sets MMHT2014nlo68cl_nf4)", + R"( Member 19 of sets MMHT2014nlo68cl_nf4)", + R"( Member 20 of sets MMHT2014nlo68cl_nf4)", + R"( Member 21 of sets MMHT2014nlo68cl_nf4)", + R"( Member 22 of sets MMHT2014nlo68cl_nf4)", + R"( Member 23 of sets MMHT2014nlo68cl_nf4)", + R"( Member 24 of sets MMHT2014nlo68cl_nf4)", + R"( Member 25 of sets MMHT2014nlo68cl_nf4)", + R"( Member 26 of sets MMHT2014nlo68cl_nf4)", + R"( Member 27 of sets MMHT2014nlo68cl_nf4)", + R"( Member 28 of sets MMHT2014nlo68cl_nf4)", + R"( Member 29 of sets MMHT2014nlo68cl_nf4)", + R"( Member 30 of sets MMHT2014nlo68cl_nf4)", + R"( Member 31 of sets MMHT2014nlo68cl_nf4)", + R"( Member 32 of sets MMHT2014nlo68cl_nf4)", + R"( Member 33 of sets MMHT2014nlo68cl_nf4)", + R"( Member 34 of sets MMHT2014nlo68cl_nf4)", + R"( Member 35 of sets MMHT2014nlo68cl_nf4)", + R"( Member 36 of sets MMHT2014nlo68cl_nf4)", + R"( Member 37 of sets MMHT2014nlo68cl_nf4)", + R"( Member 38 of sets MMHT2014nlo68cl_nf4)", + R"( Member 39 of sets MMHT2014nlo68cl_nf4)", + R"( Member 40 of sets MMHT2014nlo68cl_nf4)", + R"( Member 41 of sets MMHT2014nlo68cl_nf4)", + R"( Member 42 of sets MMHT2014nlo68cl_nf4)", + R"( Member 43 of sets MMHT2014nlo68cl_nf4)", + R"( Member 44 of sets MMHT2014nlo68cl_nf4)", + R"( Member 45 of sets MMHT2014nlo68cl_nf4)", + R"( Member 46 of sets MMHT2014nlo68cl_nf4)", + R"( Member 47 of sets MMHT2014nlo68cl_nf4)", + R"( Member 48 of sets MMHT2014nlo68cl_nf4)", + R"( Member 49 of sets MMHT2014nlo68cl_nf4)", + R"( Member 50 of sets MMHT2014nlo68cl_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 1 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 2 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 3 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 4 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 5 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 6 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 7 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 8 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 9 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 10 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 11 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 12 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 13 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 14 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 15 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 16 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 17 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 18 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 19 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 20 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 21 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 22 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 23 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 24 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 25 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 26 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 27 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 28 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 29 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 30 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 31 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 32 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 33 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 34 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 35 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 36 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 37 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 38 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 39 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 40 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 41 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 42 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 43 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 44 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 45 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 46 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 47 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 48 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 49 of sets MMHT2014nlo68clas118_nf4)", + R"( Member 50 of sets MMHT2014nlo68clas118_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nlo_asmzsmallrange_nf4)", + R"( Member 1 of sets MMHT2014nlo_asmzsmallrange_nf4)", + R"( Member 2 of sets MMHT2014nlo_asmzsmallrange_nf4)", + R"( Member 3 of sets MMHT2014nlo_asmzsmallrange_nf4)", + R"( Member 4 of sets MMHT2014nlo_asmzsmallrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 1 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 2 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 3 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 4 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 5 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 6 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 7 of sets MMHT2014nlo_mcrange_nf4)", + R"( Member 8 of sets MMHT2014nlo_mcrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nlo_mbrange_nf4)", + R"( Member 1 of sets MMHT2014nlo_mbrange_nf4)", + R"( Member 2 of sets MMHT2014nlo_mbrange_nf4)", + R"( Member 3 of sets MMHT2014nlo_mbrange_nf4)", + R"( Member 4 of sets MMHT2014nlo_mbrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 1 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 2 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 3 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 4 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 5 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 6 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 7 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 8 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 9 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 10 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 11 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 12 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 13 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 14 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 15 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 16 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 17 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 18 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 19 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 20 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 21 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 22 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 23 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 24 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 25 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 26 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 27 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 28 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 29 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 30 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 31 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 32 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 33 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 34 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 35 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 36 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 37 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 38 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 39 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 40 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 41 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 42 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 43 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 44 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 45 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 46 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 47 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 48 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 49 of sets MMHT2014nnlo68cl_nf4)", + R"( Member 50 of sets MMHT2014nnlo68cl_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nnlo_asmzsmallrange_nf4)", + R"( Member 1 of sets MMHT2014nnlo_asmzsmallrange_nf4)", + R"( Member 2 of sets MMHT2014nnlo_asmzsmallrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 1 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 2 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 3 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 4 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 5 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 6 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 7 of sets MMHT2014nnlo_mcrange_nf4)", + R"( Member 8 of sets MMHT2014nnlo_mcrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets MMHT2014nnlo_mbrange_nf4)", + R"( Member 1 of sets MMHT2014nnlo_mbrange_nf4)", + R"( Member 2 of sets MMHT2014nnlo_mbrange_nf4)", + R"( Member 3 of sets MMHT2014nnlo_mbrange_nf4)", + R"( Member 4 of sets MMHT2014nnlo_mbrange_nf4)", + R"()", + R"()", + R"( Member 0 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 1 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 2 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 3 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 4 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 5 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 6 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 7 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 8 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 9 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 10 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 11 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 12 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 13 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 14 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 15 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 16 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 17 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 18 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 19 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 20 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 21 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 22 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 23 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 24 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 25 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 26 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 27 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 28 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 29 of sets PDF4LHC15_nlo_nf4_30)", + R"( Member 30 of sets PDF4LHC15_nlo_nf4_30)", + R"()", + R"()", + R"( Member 0 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 1 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 2 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 3 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 4 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 5 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 6 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 7 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 8 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 9 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 10 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 11 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 12 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 13 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 14 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 15 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 16 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 17 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 18 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 19 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 20 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 21 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 22 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 23 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 24 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 25 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 26 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 27 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 28 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 29 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 30 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 31 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 32 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 33 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 34 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 35 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 36 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 37 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 38 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 39 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 40 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 41 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 42 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 43 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 44 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 45 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 46 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 47 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 48 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 49 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 50 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 51 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 52 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 53 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 54 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 55 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 56 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 57 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 58 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 59 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 60 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 61 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 62 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 63 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 64 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 65 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 66 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 67 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 68 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 69 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 70 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 71 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 72 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 73 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 74 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 75 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 76 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 77 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 78 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 79 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 80 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 81 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 82 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 83 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 84 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 85 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 86 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 87 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 88 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 89 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 90 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 91 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 92 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 93 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 94 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 95 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 96 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 97 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 98 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 99 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"( Member 100 of sets NNPDF31_nnlo_as_0118_nf_4)", + R"()", + R"()", + R"( Member 0 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 1 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 2 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 3 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 4 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 5 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 6 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 7 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 8 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 9 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 10 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 11 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 12 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 13 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 14 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 15 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 16 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 17 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 18 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 19 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 20 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 21 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 22 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 23 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 24 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 25 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 26 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 27 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 28 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 29 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 30 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 31 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 32 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 33 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 34 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 35 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 36 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 37 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 38 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 39 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 40 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 41 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 42 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 43 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 44 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 45 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 46 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 47 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 48 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 49 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 50 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 51 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 52 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 53 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 54 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 55 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 56 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 57 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 58 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 59 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 60 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 61 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 62 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 63 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 64 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 65 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 66 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 67 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 68 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 69 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 70 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 71 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 72 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 73 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 74 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 75 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 76 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 77 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 78 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 79 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 80 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 81 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 82 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 83 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 84 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 85 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 86 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 87 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 88 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 89 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 90 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 91 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 92 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 93 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 94 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 95 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 96 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 97 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 98 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 99 of sets NNPDF31_nlo_as_0118_nf_4)", + R"( Member 100 of sets NNPDF31_nlo_as_0118_nf_4)", + R"()", + R"()", + R"( Member 0 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 1 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 2 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 3 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 4 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 5 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 6 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 7 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 8 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 9 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 10 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 11 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 12 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 13 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 14 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 15 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 16 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 17 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 18 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 19 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 20 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 21 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 22 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 23 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 24 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 25 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 26 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 27 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 28 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 29 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 30 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 31 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 32 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 33 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 34 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 35 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 36 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 37 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 38 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 39 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 40 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 41 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 42 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 43 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 44 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 45 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 46 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 47 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 48 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 49 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 50 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 51 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 52 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 53 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 54 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 55 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 56 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 57 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 58 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 59 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 60 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 61 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 62 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 63 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 64 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 65 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 66 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 67 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 68 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 69 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 70 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 71 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 72 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 73 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 74 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 75 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 76 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 77 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 78 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 79 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 80 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 81 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 82 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 83 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 84 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 85 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 86 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 87 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 88 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 89 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 90 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 91 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 92 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 93 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 94 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 95 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 96 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 97 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 98 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 99 of sets NNPDF30_nlo_as_0118_nf_4)", + R"( Member 100 of sets NNPDF30_nlo_as_0118_nf_4)", + R"()", + R"()", + R"( Member 0 of sets NNPDF30_lo_as_0118_nf_4)", + R"()", + R"()", + R"( Member 0 of sets NNPDF30_lo_as_0130_nf_4)", + R"()", + R"()", + R"( Member 0 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 1 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 2 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 3 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 4 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 5 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 6 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 7 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 8 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 9 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 10 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 11 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 12 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 13 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 14 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 15 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 16 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 17 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 18 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 19 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 20 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 21 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 22 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 23 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 24 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 25 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 26 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 27 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 28 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 29 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 30 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 31 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 32 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 33 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 34 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 35 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 36 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 37 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 38 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 39 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 40 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 41 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 42 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 43 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 44 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 45 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 46 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 47 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 48 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 49 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 50 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 51 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 52 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 53 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 54 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 55 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 56 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 57 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 58 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 59 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 60 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 61 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 62 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 63 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 64 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 65 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 66 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 67 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 68 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 69 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 70 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 71 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 72 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 73 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 74 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 75 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 76 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 77 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 78 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 79 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 80 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 81 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 82 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 83 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 84 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 85 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 86 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 87 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 88 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 89 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 90 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 91 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 92 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 93 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 94 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 95 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 96 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 97 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 98 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 99 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 100 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 101 of sets NNPDF30_nlo_nf_4_pdfas)", + R"( Member 102 of sets NNPDF30_nlo_nf_4_pdfas)", + R"()", + R"()", + R"( Member 0 of sets NNPDF30_nnlo_nf_4_pdfas)", + R"()", + }; + + std::vector pdfWeights; + + //Don't forget about the scale weights + int counter = 8; + for (const auto& entry : entries) { + if (entry.find(" readOutput(); void nextEvent(); @@ -212,11 +212,17 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) int weightGroupIndex = 0; int weightNum = 0; for (const auto& weight : partonLevel->weights()) { - if (weightNum > 8) - continue; - weightGroupIndex = findWeightGroup(weight.id, weightGroupIndex); - std::cout << "Size is " << weightGroups_.size() << std::endl; + weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); + std::cout << "Weight group index" << weightGroupIndex << std::endl; + std::cout << weightGroups_.at(1).name() << std::endl; + if (weightGroupIndex < 0) { + std::cout << "Yep that's the case."; + std::cout << " num Contained IDs " << weightGroups_.at(1).containedIds().size() << std::endl; + for (auto& id : weightGroups_.at(1).containedIds()) + std::cout << id.id; + } int entry = weightGroups_.at(weightGroupIndex).weightVectorEntry(weight.id, weightNum); + std::cout << "Matching entry is " << entry; std::cout << "Still going. Entry is " << entry << std::endl; weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); weightNum++; @@ -353,15 +359,13 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); gen::WeightGroupInfo scaleInfo = getExampleScaleWeights(); //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); + std::vector pdfSets = getExamplePdfWeights(); - gen::WeightGroupInfo cenPdfInfo( - "" - ); - cenPdfInfo.setWeightType(gen::kPdfWeights); - weightInfoProduct->addWeightGroupInfo(scaleInfo); - weightInfoProduct->addWeightGroupInfo(cenPdfInfo); + for (auto& pdfSet : pdfSets) + weightInfoProduct->addWeightGroupInfo(pdfSet); weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); + std::cout << "Number of groups is " << weightGroups_.size() << std::endl; run.put(std::move(weightInfoProduct)); nextEvent(); @@ -537,8 +541,26 @@ ExternalLHEProducer::executeScript() } -int ExternalLHEProducer::findWeightGroup(std::string wgtId, int previousIndex) { - return 0; +int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { + // Start search at previous index, under expectation of ordered weights + std::cout << "Here we are"; + for (int index = previousGroupIndex; + index < std::min(index+1, static_cast(weightGroups_.size())); index++) { + auto& weightGroup = weightGroups_.at(previousGroupIndex); + // Fast search assuming order is not perturbed outside of weight group + if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) + return static_cast(index); + } + std::cout << "Done"; + + // Fall back to unordered search + int counter = 0; + for (auto& weightGroup : weightGroups_) { + if (weightGroup.containsWeight(wgtId, weightIndex)) + return counter; + counter++; + } + return -1; } // ------------ Read the output script ------------ diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index a68418dabecdb..54849d32a8935 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -23,6 +23,7 @@ class LHEWeightInfoProduct { const std::vector& allWeightGroupsInfo() const; const gen::WeightGroupInfo& containingWeightGroupInfo(int index) const; + const gen::WeightGroupInfo& orderedWeightGroupInfo(int index) const; void addWeightGroupInfo(gen::WeightGroupInfo info); private: diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h index 0e8ecc1ed2408..5c5fa132b4ee7 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h @@ -28,14 +28,10 @@ class LHEWeightProduct { if (static_cast(weightsVector_.size()) <= setEntry) throw std::domain_error("Out of range weight"); auto& weights = weightsVector_.at(setEntry); - if (static_cast(weights.size()) == weightNum) - weights.push_back(weight); - else if (static_cast(weights.size()) < weightNum) { - weights.resize(weightNum); - weights.insert(weights.begin()+weightNum, weight); + if (static_cast(weights.size()) <= weightNum) { + weights.resize(weightNum+1); } - else - weights[weightNum] = weight; + weights[weightNum] = weight; } const WeightsContainer& weights() const { return weightsVector_; } diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 75a2dccbf7f8e..c666e39ed2cca 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -9,8 +9,8 @@ namespace gen { struct WeightMetaInfo { - int globalIndex; - int localIndex; + size_t globalIndex; + size_t localIndex; std::string id; std::string label; }; @@ -29,7 +29,7 @@ namespace gen { WeightGroupInfo(std::string header, std::string name): headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header): - headerEntry_(header), name_(header), firstId_(0), lastId_(0) {} + headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} WeightMetaInfo weightMetaInfo(int weightEntry) { return idsContained_.at(weightEntry); @@ -44,12 +44,18 @@ namespace gen { return weightVectorEntry(wgtId, 0); } + int containsWeight(const std::string& wgtId, int weightEntry) { + return weightVectorEntry(wgtId, weightEntry) != -1; + } + int weightVectorEntry(const std::string& wgtId, int weightEntry) { - int orderedEntry = weightEntry - firstId_; int entry = -1; - if (orderedEntry >= 0 && static_cast(orderedEntry) < idsContained_.size()) - if (idsContained_.at(orderedEntry).id == wgtId) - return orderedEntry; + if (!indexInRange(weightEntry)) { + size_t orderedEntry = weightEntry - firstId_; + if (orderedEntry < idsContained_.size()) + if (idsContained_.at(orderedEntry).id == wgtId) + return orderedEntry; + } auto it = std::find_if(idsContained_.begin(), idsContained_.end(), [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); if (it != idsContained_.end()) @@ -58,26 +64,38 @@ namespace gen { } void addContainedId(int weightEntry, std::string id, std::string label="") { - if (firstId_ == -1 || weightEntry < firstId_) + if (firstId_ == -1 || weightEntry < firstId_) { firstId_ = weightEntry; - if (firstId_ == -1 || weightEntry > lastId_) + // Reset to reflect that indices will be shifted + for (auto& id : idsContained_) + id.localIndex = id.globalIndex - firstId_; + } + if (weightEntry > lastId_) lastId_ = weightEntry; - int orderedEntry = weightEntry - firstId_; WeightMetaInfo info; info.globalIndex = weightEntry; - info.localIndex = orderedEntry; + info.localIndex = weightEntry - firstId_; info.id = id; info.label = label; - if (static_cast(idsContained_.size()) < orderedEntry) - idsContained_.resize(orderedEntry); - idsContained_.insert(idsContained_.begin()+orderedEntry, info); + if (idsContained_.size() < info.localIndex) { + idsContained_.resize(info.localIndex); + idsContained_.insert(idsContained_.begin()+info.localIndex, info); + } + else if (idsContained_.size() == info.localIndex) { + idsContained_.push_back(info); + } + else { + idsContained_.resize(info.localIndex+1); + idsContained_[info.localIndex] = info; + } } std::vector containedIds() const { return idsContained_; } void setWeightType(WeightType type) { weightType_ = type; } + std::string name() { return name_; } bool indexInRange(int index) const { return (index <= lastId_ && index >= firstId_); diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc index d20b76b934189..78aed95c08fe1 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -29,6 +29,10 @@ const gen::WeightGroupInfo& LHEWeightInfoProduct::containingWeightGroupInfo(int throw std::domain_error("Failed to find containing weight group"); } +const gen::WeightGroupInfo& LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { + return weightGroupsInfo_.at(weightGroupIndex); +} + void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 26a7a43ed572d..e3ef861932c3d 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -228,9 +228,7 @@ - - - + From df8416421345ba3a7e3d920edc30c914ad7d7cf2 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 31 May 2019 02:46:15 -0500 Subject: [PATCH 007/186] Add test scripts --- .../plugins/ExternalLHEProducer.cc | 13 --- .../LHEInterface/test/testWeights.py | 31 +++++++ .../LHEInterface/test/test_Weights_cfg.py | 86 +++++++++++++++++++ 3 files changed, 117 insertions(+), 13 deletions(-) create mode 100644 GeneratorInterface/LHEInterface/test/testWeights.py create mode 100644 GeneratorInterface/LHEInterface/test/test_Weights_cfg.py diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 345fec6bd5917..354a34e75e9f9 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -213,17 +213,7 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) int weightNum = 0; for (const auto& weight : partonLevel->weights()) { weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); - std::cout << "Weight group index" << weightGroupIndex << std::endl; - std::cout << weightGroups_.at(1).name() << std::endl; - if (weightGroupIndex < 0) { - std::cout << "Yep that's the case."; - std::cout << " num Contained IDs " << weightGroups_.at(1).containedIds().size() << std::endl; - for (auto& id : weightGroups_.at(1).containedIds()) - std::cout << id.id; - } int entry = weightGroups_.at(weightGroupIndex).weightVectorEntry(weight.id, weightNum); - std::cout << "Matching entry is " << entry; - std::cout << "Still going. Entry is " << entry << std::endl; weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); weightNum++; } @@ -365,7 +355,6 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) for (auto& pdfSet : pdfSets) weightInfoProduct->addWeightGroupInfo(pdfSet); weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); - std::cout << "Number of groups is " << weightGroups_.size() << std::endl; run.put(std::move(weightInfoProduct)); nextEvent(); @@ -543,7 +532,6 @@ ExternalLHEProducer::executeScript() int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { // Start search at previous index, under expectation of ordered weights - std::cout << "Here we are"; for (int index = previousGroupIndex; index < std::min(index+1, static_cast(weightGroups_.size())); index++) { auto& weightGroup = weightGroups_.at(previousGroupIndex); @@ -551,7 +539,6 @@ int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) return static_cast(index); } - std::cout << "Done"; // Fall back to unordered search int counter = 0; diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py new file mode 100644 index 0000000000000..12e2961868af9 --- /dev/null +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -0,0 +1,31 @@ +from DataFormats.FWLite import Events,Handle,Runs +source = "externalLHEProducer" + +#for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: +for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: + runs = Runs(filename) + run = runs.__iter__().next() + weightInfoHandle = Handle("LHEWeightInfoProduct") + run.getByLabel(source, weightInfoHandle) + weightInfoProd = weightInfoHandle.product() + + events = Events(filename) + event = events.__iter__().next() + weightHandle = Handle("LHEWeightProduct") + event.getByLabel("externalLHEProducer", weightHandle) + event.getByLabel(source, weightHandle) + weightInfo = weightHandle.product() + print "Content of the weights" + for j, weights in enumerate(weightInfo.weights()): + print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 + matching = weightInfoProd.orderedWeightGroupInfo(j) + print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) + print "-"*80 + for i,weight in enumerate(weights): + print i, weight + info = matching.weightMetaInfo(i) + print " ID, localIndex, globalIndex, label, set:", info.id, info.localIndex, info.globalIndex, info.label, matching.name() + print "-"*80 + + + diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py new file mode 100644 index 0000000000000..aeb7882932c6e --- /dev/null +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -0,0 +1,86 @@ +# Auto generated configuration file +# using: +# Revision: 1.19 +# Source: /local/reps/CMSSW/CMSSW/Configuration/Applications/python/ConfigBuilder.py,v +# with command line options: Configuration/GenProduction/python/HIG-RunIIFall18wmLHEGS-00509-fragment.py --fileout file:HIG-RunIIFall18wmLHEGS-00509.root --mc --eventcontent LHE --datatier LHE --conditions 102X_upgrade2018_realistic_v11 --step LHE --python_filename HIG-RunIIFall18wmLHEGS-00509_1_cfg.py --no_exec +import FWCore.ParameterSet.Config as cms + + + +process = cms.Process('LHE') + +# import of standard configurations +process.load('Configuration.StandardSequences.Services_cff') +process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load('Configuration.EventContent.EventContent_cff') +process.load('SimGeneral.MixingModule.mixNoPU_cfi') +process.load('Configuration.StandardSequences.GeometryRecoDB_cff') +process.load('Configuration.StandardSequences.MagneticField_cff') +process.load('Configuration.StandardSequences.EndOfProcess_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(10) +) + +# Input source +process.source = cms.Source("EmptySource") + +process.options = cms.untracked.PSet( + +) + +# Production Info +process.configurationMetadata = cms.untracked.PSet( + annotation = cms.untracked.string('Configuration/GenProduction/python/HIG-RunIIFall18wmLHEGS-00509-fragment.py nevts:10'), + name = cms.untracked.string('Applications'), + version = cms.untracked.string('$Revision: 1.19 $') +) + +# Output definition + +process.LHEoutput = cms.OutputModule("PoolOutputModule", + dataset = cms.untracked.PSet( + dataTier = cms.untracked.string('LHE'), + filterName = cms.untracked.string('') + ), + fileName = cms.untracked.string('file:HIG-RunIIFall18wmLHEGS-00509.root'), + #outputCommands = process.LHEEventContent.outputCommands, + outputCommands = cms.untracked.vstring('keep *', + 'drop ME*_MEtoEDM*_*_*'), + splitLevel = cms.untracked.int32(0) +) + +# Additional output definition + +# Other statements +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, '102X_upgrade2018_realistic_v11', '') + +process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", + args = cms.vstring('/afs/hep.wisc.edu/home/kdlong/public/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), + nEvents = cms.untracked.uint32(10), + numberOfParameters = cms.uint32(1), + outputFile = cms.string('cmsgrid_final.lhe'), + scriptName = cms.FileInPath('GeneratorInterface/LHEInterface/data/run_generic_tarball_cvmfs.sh') +) + + +# Path and EndPath definitions +process.lhe_step = cms.Path(process.externalLHEProducer) +process.endjob_step = cms.EndPath(process.endOfProcess) +process.LHEoutput_step = cms.EndPath(process.LHEoutput) + +# Schedule definition +process.schedule = cms.Schedule(process.lhe_step,process.endjob_step,process.LHEoutput_step) +from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask +associatePatAlgosToolsTask(process) + + +# Customisation from command line + +# Add early deletion of temporary data products to reduce peak memory need +from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete +process = customiseEarlyDelete(process) +# End adding early deletion From 23bee6651a368d039c37fa89cfa9a231f03b02dd Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 5 Aug 2019 16:10:06 -0400 Subject: [PATCH 008/186] Store pointers to WeightGroupInfo First step to moving towards edm::OwnVector and polymorphic storage --- .../LHEInterface/interface/TestWeightInfo.h | 30 ++++++++----------- .../plugins/ExternalLHEProducer.cc | 21 +++++++------ .../LHEInterface/plugins/LHESource.cc | 4 +-- .../interface/LHEWeightInfoProduct.h | 12 ++++---- .../src/LHEWeightInfoProduct.cc | 14 ++++----- .../GeneratorProducts/src/classes_def.xml | 6 ++-- 6 files changed, 43 insertions(+), 44 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index d42179471cfc5..b3b63d40c71ff 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -8,8 +8,8 @@ std::string parseId(std::string label) { return std::string(matches.str(1)); } -gen::WeightGroupInfo getExampleScaleWeights() { - gen::WeightGroupInfo scaleInfo( +gen::WeightGroupInfo* getExampleScaleWeights() { + gen::WeightGroupInfo* scaleInfo = new gen::WeightGroupInfo( "", "centralScaleVariations" ); @@ -24,16 +24,16 @@ gen::WeightGroupInfo getExampleScaleWeights() { R"( mur=0.5 muf=2 )", R"( mur=0.5 muf=0.5 )", }; - scaleInfo.setWeightType(gen::kScaleWeights); + scaleInfo->setWeightType(gen::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { - scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); + scaleInfo->addContainedId(i, parseId(entries[i]), entries[i]); } return scaleInfo; } -gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { - gen::WeightGroupInfo scaleInfo( +gen::WeightGroupInfo* getExampleScaleWeightsOutOfOrder() { + gen::WeightGroupInfo* scaleInfo = new gen::WeightGroupInfo( "", "centralScaleVariations" ); @@ -48,19 +48,15 @@ gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { R"( mur=0.5 muf=1 )", R"( mur=0.5 muf=0.5 )", }; - scaleInfo.setWeightType(gen::kScaleWeights); + scaleInfo->setWeightType(gen::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { - scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); + scaleInfo->addContainedId(i, parseId(entries[i]), entries[i]); } return scaleInfo; } -std::vector getExamplePdfWeights() { - gen::WeightGroupInfo scaleInfo( - "", - "centralScaleVariations" - ); +std::vector getExamplePdfWeights() { std::vector entries = { R"()", R"( Member 0 of sets NNPDF31_nnlo_hessian_pdfas)", @@ -991,18 +987,18 @@ std::vector getExamplePdfWeights() { R"()", }; - std::vector pdfWeights; + std::vector pdfWeights; //Don't forget about the scale weights int counter = 8; for (const auto& entry : entries) { if (entry.find("addContainedId(counter, parseId(entry), entry); } counter++; } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 354a34e75e9f9..78074f894fd23 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -109,7 +109,7 @@ class ExternalLHEProducer : public edm::one::EDProducer partonLevel; boost::ptr_deque runInfoProducts; bool wasMerged; - std::vector weightGroups_; + std::vector weightGroups_; class FileCloseSentry : private boost::noncopyable { public: @@ -213,7 +213,10 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) int weightNum = 0; for (const auto& weight : partonLevel->weights()) { weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); - int entry = weightGroups_.at(weightGroupIndex).weightVectorEntry(weight.id, weightNum); + auto group = weightGroups_.at(weightGroupIndex); + if (!group) + throw std::out_of_range("Invalid index " + weightGroupIndex); + int entry = group->weightVectorEntry(weight.id, weightNum); weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); weightNum++; } @@ -347,12 +350,12 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) reader_ = std::make_unique(infiles, skip); std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - gen::WeightGroupInfo scaleInfo = getExampleScaleWeights(); + gen::WeightGroupInfo* scaleInfo = getExampleScaleWeights(); //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); - std::vector pdfSets = getExamplePdfWeights(); + std::vector pdfSets = getExamplePdfWeights(); weightInfoProduct->addWeightGroupInfo(scaleInfo); - for (auto& pdfSet : pdfSets) + for (auto pdfSet : pdfSets) weightInfoProduct->addWeightGroupInfo(pdfSet); weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); run.put(std::move(weightInfoProduct)); @@ -534,16 +537,16 @@ int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int // Start search at previous index, under expectation of ordered weights for (int index = previousGroupIndex; index < std::min(index+1, static_cast(weightGroups_.size())); index++) { - auto& weightGroup = weightGroups_.at(previousGroupIndex); + gen::WeightGroupInfo* weightGroup = weightGroups_.at(previousGroupIndex); // Fast search assuming order is not perturbed outside of weight group - if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) + if (weightGroup->indexInRange(weightIndex) && weightGroup->containsWeight(wgtId, weightIndex)) return static_cast(index); } // Fall back to unordered search int counter = 0; - for (auto& weightGroup : weightGroups_) { - if (weightGroup.containsWeight(wgtId, weightIndex)) + for (auto weightGroup : weightGroups_) { + if (weightGroup->containsWeight(wgtId, weightIndex)) return counter; counter++; } diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index a238a0fc613ca..03402f473651f 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -147,8 +147,8 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { ); cenPdfInfo.setWeightType(gen::kPdfWeights); - product->addWeightGroupInfo(scaleInfo); - product->addWeightGroupInfo(cenPdfInfo); + product->addWeightGroupInfo(&scaleInfo); + product->addWeightGroupInfo(&cenPdfInfo); std::unique_ptr rdp(new edm::Wrapper(std::move(product))); iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); } diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index 54849d32a8935..6d6af2cf99ca6 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -14,20 +14,20 @@ class LHEWeightInfoProduct { public: LHEWeightInfoProduct() {} - LHEWeightInfoProduct(std::vector& weightGroups); + LHEWeightInfoProduct(std::vector& weightGroups); LHEWeightInfoProduct(const LHEWeightInfoProduct& other); LHEWeightInfoProduct(LHEWeightInfoProduct&& other); ~LHEWeightInfoProduct() {} LHEWeightInfoProduct& operator=(const LHEWeightInfoProduct &other); LHEWeightInfoProduct& operator=(LHEWeightInfoProduct &&other); - const std::vector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo& containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo& orderedWeightGroupInfo(int index) const; - void addWeightGroupInfo(gen::WeightGroupInfo info); + const std::vector& allWeightGroupsInfo() const; + const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; + const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; + void addWeightGroupInfo(gen::WeightGroupInfo* info); private: - std::vector weightGroupsInfo_; + std::vector weightGroupsInfo_; }; diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc index 78aed95c08fe1..2e6c653ddbfd1 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -3,7 +3,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" -LHEWeightInfoProduct::LHEWeightInfoProduct(std::vector& weightGroups) { +LHEWeightInfoProduct::LHEWeightInfoProduct(std::vector& weightGroups) { weightGroupsInfo_ = weightGroups; } @@ -17,22 +17,22 @@ LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(LHEWeightInfoProduct &&oth return *this; } -const std::vector& LHEWeightInfoProduct::allWeightGroupsInfo() const { +const std::vector& LHEWeightInfoProduct::allWeightGroupsInfo() const { return weightGroupsInfo_; } -const gen::WeightGroupInfo& LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { - for (const auto& weightGroup : weightGroupsInfo_) { - if (weightGroup.indexInRange(index)) +const gen::WeightGroupInfo* LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { + for (const auto weightGroup : weightGroupsInfo_) { + if (weightGroup->indexInRange(index)) return weightGroup; } throw std::domain_error("Failed to find containing weight group"); } -const gen::WeightGroupInfo& LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { +const gen::WeightGroupInfo* LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { return weightGroupsInfo_.at(weightGroupIndex); } -void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo info) { +void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index e3ef861932c3d..2b548abbc5cad 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -197,9 +197,7 @@ - - - + @@ -231,6 +229,8 @@ + + From 0ba28e0e82f8b6ae52dde4a2cc9bdea0f48e033d Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 6 Aug 2019 04:16:08 -0400 Subject: [PATCH 009/186] Compiles with OwnVector, but need a proper copy constructor --- .../LHEInterface/interface/TestWeightInfo.h | 22 ++++++++--------- .../plugins/ExternalLHEProducer.cc | 18 +++++++------- .../LHEInterface/plugins/LHESource.cc | 4 ++-- .../interface/LHEWeightInfoProduct.h | 13 +++++----- .../interface/WeightGroupInfo.h | 24 +++++++++++++++++++ .../src/LHEWeightInfoProduct.cc | 18 +++++++------- .../GeneratorProducts/src/classes_def.xml | 1 + 7 files changed, 63 insertions(+), 37 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index b3b63d40c71ff..65b934d8667d0 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -8,8 +8,8 @@ std::string parseId(std::string label) { return std::string(matches.str(1)); } -gen::WeightGroupInfo* getExampleScaleWeights() { - gen::WeightGroupInfo* scaleInfo = new gen::WeightGroupInfo( +gen::WeightGroupInfo getExampleScaleWeights() { + gen::WeightGroupInfo scaleInfo = gen::WeightGroupInfo( "", "centralScaleVariations" ); @@ -24,16 +24,16 @@ gen::WeightGroupInfo* getExampleScaleWeights() { R"( mur=0.5 muf=2 )", R"( mur=0.5 muf=0.5 )", }; - scaleInfo->setWeightType(gen::kScaleWeights); + scaleInfo.setWeightType(gen::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { - scaleInfo->addContainedId(i, parseId(entries[i]), entries[i]); + scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); } return scaleInfo; } -gen::WeightGroupInfo* getExampleScaleWeightsOutOfOrder() { - gen::WeightGroupInfo* scaleInfo = new gen::WeightGroupInfo( +gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { + gen::WeightGroupInfo scaleInfo = gen::WeightGroupInfo( "", "centralScaleVariations" ); @@ -48,15 +48,15 @@ gen::WeightGroupInfo* getExampleScaleWeightsOutOfOrder() { R"( mur=0.5 muf=1 )", R"( mur=0.5 muf=0.5 )", }; - scaleInfo->setWeightType(gen::kScaleWeights); + scaleInfo.setWeightType(gen::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { - scaleInfo->addContainedId(i, parseId(entries[i]), entries[i]); + scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); } return scaleInfo; } -std::vector getExamplePdfWeights() { +edm::OwnVector getExamplePdfWeights() { std::vector entries = { R"()", R"( Member 0 of sets NNPDF31_nnlo_hessian_pdfas)", @@ -987,7 +987,7 @@ std::vector getExamplePdfWeights() { R"()", }; - std::vector pdfWeights; + edm::OwnVector pdfWeights; //Don't forget about the scale weights int counter = 8; @@ -998,7 +998,7 @@ std::vector getExamplePdfWeights() { else if (entry.find("addContainedId(counter, parseId(entry), entry); + currentSet.addContainedId(counter, parseId(entry), entry); } counter++; } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 78074f894fd23..ee96964797482 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -109,7 +109,7 @@ class ExternalLHEProducer : public edm::one::EDProducer partonLevel; boost::ptr_deque runInfoProducts; bool wasMerged; - std::vector weightGroups_; + edm::OwnVector weightGroups_; class FileCloseSentry : private boost::noncopyable { public: @@ -213,10 +213,8 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) int weightNum = 0; for (const auto& weight : partonLevel->weights()) { weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); - auto group = weightGroups_.at(weightGroupIndex); - if (!group) - throw std::out_of_range("Invalid index " + weightGroupIndex); - int entry = group->weightVectorEntry(weight.id, weightNum); + auto group = weightGroups_[weightGroupIndex]; + int entry = group.weightVectorEntry(weight.id, weightNum); weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); weightNum++; } @@ -350,9 +348,9 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) reader_ = std::make_unique(infiles, skip); std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - gen::WeightGroupInfo* scaleInfo = getExampleScaleWeights(); + gen::WeightGroupInfo scaleInfo = getExampleScaleWeights(); //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); - std::vector pdfSets = getExamplePdfWeights(); + edm::OwnVector pdfSets = getExamplePdfWeights(); weightInfoProduct->addWeightGroupInfo(scaleInfo); for (auto pdfSet : pdfSets) @@ -537,16 +535,16 @@ int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int // Start search at previous index, under expectation of ordered weights for (int index = previousGroupIndex; index < std::min(index+1, static_cast(weightGroups_.size())); index++) { - gen::WeightGroupInfo* weightGroup = weightGroups_.at(previousGroupIndex); + gen::WeightGroupInfo& weightGroup = weightGroups_[previousGroupIndex]; // Fast search assuming order is not perturbed outside of weight group - if (weightGroup->indexInRange(weightIndex) && weightGroup->containsWeight(wgtId, weightIndex)) + if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) return static_cast(index); } // Fall back to unordered search int counter = 0; for (auto weightGroup : weightGroups_) { - if (weightGroup->containsWeight(wgtId, weightIndex)) + if (weightGroup.containsWeight(wgtId, weightIndex)) return counter; counter++; } diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index 03402f473651f..a238a0fc613ca 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -147,8 +147,8 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { ); cenPdfInfo.setWeightType(gen::kPdfWeights); - product->addWeightGroupInfo(&scaleInfo); - product->addWeightGroupInfo(&cenPdfInfo); + product->addWeightGroupInfo(scaleInfo); + product->addWeightGroupInfo(cenPdfInfo); std::unique_ptr rdp(new edm::Wrapper(std::move(product))); iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); } diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index 6d6af2cf99ca6..f0fa291ab3423 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -8,26 +8,27 @@ //#include +#include "DataFormats/Common/interface/OwnVector.h" #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" class LHEWeightInfoProduct { public: LHEWeightInfoProduct() {} - LHEWeightInfoProduct(std::vector& weightGroups); + LHEWeightInfoProduct(edm::OwnVector& weightGroups); LHEWeightInfoProduct(const LHEWeightInfoProduct& other); LHEWeightInfoProduct(LHEWeightInfoProduct&& other); ~LHEWeightInfoProduct() {} LHEWeightInfoProduct& operator=(const LHEWeightInfoProduct &other); LHEWeightInfoProduct& operator=(LHEWeightInfoProduct &&other); - const std::vector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; - void addWeightGroupInfo(gen::WeightGroupInfo* info); + const edm::OwnVector& allWeightGroupsInfo() const; + const gen::WeightGroupInfo& containingWeightGroupInfo(int index) const; + const gen::WeightGroupInfo& orderedWeightGroupInfo(int index) const; + void addWeightGroupInfo(gen::WeightGroupInfo& info); private: - std::vector weightGroupsInfo_; + edm::OwnVector weightGroupsInfo_; }; diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index c666e39ed2cca..064a8c1001628 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -31,6 +31,30 @@ namespace gen { WeightGroupInfo(std::string header): headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} + //WeightGroupInfo& operator=(const WeightGroupInfo &other) { + // headerEntry_ = other.headerEntry_; + // name_ = other.name_; + // weightType_ = other.weightType_; + // idsContained_ = other.idsContained_; + // firstId_ = other.firstId_; + // lastId_ = other.lastId_; + // return * this; + //} + + //WeightGroupInfo& operator=(WeightGroupInfo &&other) { + // headerEntry_ = std::move(other.headerEntry_); + // name_ = std::move(other.name_); + // weightType_ = std::move(other.weightType_); + // idsContained_ = std::move(other.idsContained_); + // firstId_ = std::move(other.firstId_); + // lastId_ = std::move(other.lastId_); + // return *this; + //} + + WeightGroupInfo* clone() const { + return new WeightGroupInfo(*this); + } + WeightMetaInfo weightMetaInfo(int weightEntry) { return idsContained_.at(weightEntry); } diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc index 2e6c653ddbfd1..78c7d858f65f6 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -3,7 +3,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" -LHEWeightInfoProduct::LHEWeightInfoProduct(std::vector& weightGroups) { +LHEWeightInfoProduct::LHEWeightInfoProduct(edm::OwnVector& weightGroups) { weightGroupsInfo_ = weightGroups; } @@ -17,22 +17,24 @@ LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(LHEWeightInfoProduct &&oth return *this; } -const std::vector& LHEWeightInfoProduct::allWeightGroupsInfo() const { +const edm::OwnVector& LHEWeightInfoProduct::allWeightGroupsInfo() const { return weightGroupsInfo_; } -const gen::WeightGroupInfo* LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { - for (const auto weightGroup : weightGroupsInfo_) { - if (weightGroup->indexInRange(index)) +const gen::WeightGroupInfo& LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { + for (const auto& weightGroup : weightGroupsInfo_) { + if (weightGroup.indexInRange(index)) return weightGroup; } throw std::domain_error("Failed to find containing weight group"); } -const gen::WeightGroupInfo* LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { - return weightGroupsInfo_.at(weightGroupIndex); +const gen::WeightGroupInfo& LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { + if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) + throw std::range_error("Weight index out of range!"); + return weightGroupsInfo_[weightGroupIndex]; } -void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { +void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo& info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 2b548abbc5cad..7e6ae7131b9c8 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -231,6 +231,7 @@ + From 9ba9510ed189b63a00d1e489cb8fa6e147605e18 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 6 Aug 2019 15:22:07 -0400 Subject: [PATCH 010/186] Working with edm::OwnVector --- .../LHEInterface/interface/TestWeightInfo.h | 6 +-- .../plugins/ExternalLHEProducer.cc | 7 ++- .../interface/WeightGroupInfo.h | 44 +++++++++++-------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index 65b934d8667d0..efb0162bb8063 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -996,11 +996,9 @@ edm::OwnVector getExamplePdfWeights() { pdfWeights.push_back(new gen::WeightGroupInfo(entry)); } else if (entry.find("weights()) { weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); + if (weightGroupIndex < 0 || weightGroupIndex >= static_cast(weightGroups_.size())) { + continue; + } auto group = weightGroups_[weightGroupIndex]; int entry = group.weightVectorEntry(weight.id, weightNum); weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); @@ -533,12 +536,14 @@ ExternalLHEProducer::executeScript() int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { // Start search at previous index, under expectation of ordered weights + previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; for (int index = previousGroupIndex; index < std::min(index+1, static_cast(weightGroups_.size())); index++) { gen::WeightGroupInfo& weightGroup = weightGroups_[previousGroupIndex]; // Fast search assuming order is not perturbed outside of weight group - if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) + if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { return static_cast(index); + } } // Fall back to unordered search diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 064a8c1001628..526e34765167e 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -6,6 +6,7 @@ */ #include #include +#include namespace gen { struct WeightMetaInfo { @@ -31,25 +32,23 @@ namespace gen { WeightGroupInfo(std::string header): headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} - //WeightGroupInfo& operator=(const WeightGroupInfo &other) { - // headerEntry_ = other.headerEntry_; - // name_ = other.name_; - // weightType_ = other.weightType_; - // idsContained_ = other.idsContained_; - // firstId_ = other.firstId_; - // lastId_ = other.lastId_; - // return * this; - //} - - //WeightGroupInfo& operator=(WeightGroupInfo &&other) { - // headerEntry_ = std::move(other.headerEntry_); - // name_ = std::move(other.name_); - // weightType_ = std::move(other.weightType_); - // idsContained_ = std::move(other.idsContained_); - // firstId_ = std::move(other.firstId_); - // lastId_ = std::move(other.lastId_); - // return *this; - //} + void copy(const WeightGroupInfo &other) { + headerEntry_ = other.headerEntry(); + name_ = other.name(); + weightType_ = other.weightType(); + idsContained_ = other.idsContained(); + firstId_ = other.firstId(); + lastId_ = other.lastId(); + } + + WeightGroupInfo(const WeightGroupInfo &other) { + copy(other); + } + + WeightGroupInfo& operator=(const WeightGroupInfo &other) { + copy(other); + return *this; + } WeightGroupInfo* clone() const { return new WeightGroupInfo(*this); @@ -125,6 +124,13 @@ namespace gen { return (index <= lastId_ && index >= firstId_); } + std::string headerEntry() const { return headerEntry_; } + std::string name() const { return name_; } + WeightType weightType() const { return weightType_; } + std::vector idsContained() const { return idsContained_; } + int firstId() const { return firstId_; } + int lastId() const { return lastId_; } + private: std::string headerEntry_; std::string name_; From 338a979e682f57fabe42084f055502ab4130c08a Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 7 Aug 2019 04:35:51 -0400 Subject: [PATCH 011/186] Separate WeightGroupInfo into .h and .cc files --- .../interface/WeightGroupInfo.h | 106 ++++-------------- .../GeneratorProducts/src/WeightGroupInfo.cc | 86 ++++++++++++++ 2 files changed, 105 insertions(+), 87 deletions(-) create mode 100644 SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 526e34765167e..364a43937f2fa 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -6,7 +6,7 @@ */ #include #include -#include +#include namespace gen { struct WeightMetaInfo { @@ -26,106 +26,38 @@ namespace gen { class WeightGroupInfo { public: - WeightGroupInfo() {} + WeightGroupInfo() : headerEntry_(""), name_(""), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header, std::string name): headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header): headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} - - void copy(const WeightGroupInfo &other) { - headerEntry_ = other.headerEntry(); - name_ = other.name(); - weightType_ = other.weightType(); - idsContained_ = other.idsContained(); - firstId_ = other.firstId(); - lastId_ = other.lastId(); - } - WeightGroupInfo(const WeightGroupInfo &other) { copy(other); } - WeightGroupInfo& operator=(const WeightGroupInfo &other) { copy(other); return *this; } - - WeightGroupInfo* clone() const { - return new WeightGroupInfo(*this); - } - - WeightMetaInfo weightMetaInfo(int weightEntry) { - return idsContained_.at(weightEntry); - } - - WeightMetaInfo weightMetaInfo(std::string wgtId) { - int weightEntry = weightVectorEntry(wgtId); - return idsContained_.at(weightEntry); - } - - int weightVectorEntry(const std::string& wgtId) { - return weightVectorEntry(wgtId, 0); - } - - int containsWeight(const std::string& wgtId, int weightEntry) { - return weightVectorEntry(wgtId, weightEntry) != -1; - } - - int weightVectorEntry(const std::string& wgtId, int weightEntry) { - int entry = -1; - if (!indexInRange(weightEntry)) { - size_t orderedEntry = weightEntry - firstId_; - if (orderedEntry < idsContained_.size()) - if (idsContained_.at(orderedEntry).id == wgtId) - return orderedEntry; - } - auto it = std::find_if(idsContained_.begin(), idsContained_.end(), - [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); - if (it != idsContained_.end()) - return std::distance(idsContained_.begin(), it); - return entry; - } - - void addContainedId(int weightEntry, std::string id, std::string label="") { - if (firstId_ == -1 || weightEntry < firstId_) { - firstId_ = weightEntry; - // Reset to reflect that indices will be shifted - for (auto& id : idsContained_) - id.localIndex = id.globalIndex - firstId_; - } - if (weightEntry > lastId_) - lastId_ = weightEntry; - - WeightMetaInfo info; - info.globalIndex = weightEntry; - info.localIndex = weightEntry - firstId_; - info.id = id; - info.label = label; - - if (idsContained_.size() < info.localIndex) { - idsContained_.resize(info.localIndex); - idsContained_.insert(idsContained_.begin()+info.localIndex, info); - } - else if (idsContained_.size() == info.localIndex) { - idsContained_.push_back(info); - } - else { - idsContained_.resize(info.localIndex+1); - idsContained_[info.localIndex] = info; - } - } - - std::vector containedIds() const { return idsContained_; } - + void copy(const WeightGroupInfo &other); + + WeightGroupInfo* clone() const; + WeightMetaInfo weightMetaInfo(int weightEntry); + WeightMetaInfo weightMetaInfo(std::string wgtId); + int weightVectorEntry(const std::string& wgtId); + int containsWeight(const std::string& wgtId, int weightEntry); + int weightVectorEntry(const std::string& wgtId, int weightEntry); + void addContainedId(int weightEntry, std::string id, std::string label); + std::vector containedIds() const; + bool indexInRange(int index) const; + + void setName(std::string name) { name_ = name; } + void setHeaderEntry(std::string header) { headerEntry_ = header; } void setWeightType(WeightType type) { weightType_ = type; } - std::string name() { return name_; } - - bool indexInRange(int index) const { - return (index <= lastId_ && index >= firstId_); - } + void setFirstId(int firstId) { firstId_ = firstId; } + void setLastId(int lastId) { lastId_ = lastId; } - std::string headerEntry() const { return headerEntry_; } std::string name() const { return name_; } + std::string headerEntry() const { return headerEntry_; } WeightType weightType() const { return weightType_; } std::vector idsContained() const { return idsContained_; } int firstId() const { return firstId_; } diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc new file mode 100644 index 0000000000000..a9cbccfdea6f9 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -0,0 +1,86 @@ +#include +#include +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +namespace gen { + void WeightGroupInfo::copy(const WeightGroupInfo &other) { + headerEntry_ = other.headerEntry(); + name_ = other.name(); + weightType_ = other.weightType(); + idsContained_ = other.idsContained(); + firstId_ = other.firstId(); + lastId_ = other.lastId(); + } + + WeightGroupInfo* WeightGroupInfo::clone() const { + return new WeightGroupInfo(*this); + } + + WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) { + return idsContained_.at(weightEntry); + } + + WeightMetaInfo WeightGroupInfo::weightMetaInfo(std::string wgtId) { + int weightEntry = weightVectorEntry(wgtId); + return idsContained_.at(weightEntry); + } + + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) { + return weightVectorEntry(wgtId, 0); + } + + int WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) { + return weightVectorEntry(wgtId, weightEntry) != -1; + } + + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) { + int entry = -1; + if (!indexInRange(weightEntry)) { + size_t orderedEntry = weightEntry - firstId_; + if (orderedEntry < idsContained_.size()) + if (idsContained_.at(orderedEntry).id == wgtId) + return orderedEntry; + } + auto it = std::find_if(idsContained_.begin(), idsContained_.end(), + [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); + if (it != idsContained_.end()) + return std::distance(idsContained_.begin(), it); + return entry; + } + + void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label="") { + if (firstId_ == -1 || weightEntry < firstId_) { + firstId_ = weightEntry; + // Reset to reflect that indices will be shifted + for (auto& id : idsContained_) + id.localIndex = id.globalIndex - firstId_; + } + if (weightEntry > lastId_) + lastId_ = weightEntry; + + WeightMetaInfo info; + info.globalIndex = weightEntry; + info.localIndex = weightEntry - firstId_; + info.id = id; + info.label = label; + + if (idsContained_.size() < info.localIndex) { + idsContained_.resize(info.localIndex); + idsContained_.insert(idsContained_.begin()+info.localIndex, info); + } + else if (idsContained_.size() == info.localIndex) { + idsContained_.push_back(info); + } + else { + idsContained_.resize(info.localIndex+1); + idsContained_[info.localIndex] = info; + } + } + + std::vector WeightGroupInfo::containedIds() const { return idsContained_; } + + + bool WeightGroupInfo::indexInRange(int index) const { + return (index <= lastId_ && index >= firstId_); + } +} From 8397fca6352d6d36297683c2d6dcc9400a035a60 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 7 Aug 2019 10:36:19 -0400 Subject: [PATCH 012/186] Separate out PDF weights --- .../LHEInterface/interface/TestWeightInfo.h | 3 +- .../interface/PdfWeightGroupInfo.h | 44 +++++++++++++++++++ .../interface/WeightGroupInfo.h | 4 +- .../src/PdfWeightGroupInfo.cc | 16 +++++++ .../GeneratorProducts/src/classes_def.xml | 5 +-- 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h create mode 100644 SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index efb0162bb8063..7e386bf1cd4ce 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -1,4 +1,5 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include std::string parseId(std::string label) { @@ -993,7 +994,7 @@ edm::OwnVector getExamplePdfWeights() { int counter = 8; for (const auto& entry : entries) { if (entry.find(" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" + +namespace gen { + void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { + uncertaintyType_ = other.uncertaintyType(); + hasAlphasVars_ = other.hasAlphasVariations(); + alphasUpIndex_ = other.alphasDownIndex(); + alphasDownIndex_ = other.alphasDownIndex(); + WeightGroupInfo::copy(other); + } + + PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { + return new PdfWeightGroupInfo(*this); + } +} diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 7e6ae7131b9c8..6e36f2de18394 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -223,9 +223,8 @@ - - - + + From 9e062713d369cd61c3b0514c98f51515570eb4a1 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 15 Aug 2019 04:32:53 -0400 Subject: [PATCH 013/186] Add scale-specific weightgroupinfo class --- .../interface/PdfWeightGroupInfo.h | 2 +- .../interface/ScaleWeightGroupInfo.h | 64 +++++++++++++++++++ .../interface/WeightGroupInfo.h | 2 +- .../src/PdfWeightGroupInfo.cc | 1 - .../src/ScaleWeightGroupInfo.cc | 52 +++++++++++++++ .../src/ScaleWeightGroupInfo.h | 16 +++++ 6 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h create mode 100644 SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc create mode 100644 SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 3071bf7aa0f4e..5f1e5559f46e2 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -25,7 +25,7 @@ namespace gen { PdfWeightGroupInfo(const PdfWeightGroupInfo &other) { copy(other); } - virtual ~PdfWeightGroupInfo() override {}; + virtual ~PdfWeightGroupInfo() override {} void copy(const PdfWeightGroupInfo &other); PdfWeightGroupInfo* clone() const; diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h new file mode 100644 index 0000000000000..4a4c7971f0ab8 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -0,0 +1,64 @@ +#ifndef SimDataFormats_GeneratorProducts_ScaleWeightGroupInfo_h +#define SimDataFormats_GeneratorProducts_ScaleWeightGroupInfo_h + +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +namespace gen { + class ScaleWeightGroupInfo : public WeightGroupInfo { + private: + bool isFuncationFormVar_; + size_t icentral; + size_t imuR1muF2; + size_t imuR1muF05; + size_t imuR2muF05; + size_t imuR2muF1; + size_t imuR2muF2; + size_t imuR05muF05; + size_t imuR05muF1; + size_t imuR05muF2; + public: + ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} + ScaleWeightGroupInfo(std::string header, std::string name) : + WeightGroupInfo(header, name) { + weightType_ = kScaleWeights; + isFuncationFormVar_ = false; + icentral = 0; + imuR1muF2 = 0; + imuR1muF05 = 0; + imuR2muF05 = 0; + imuR2muF1 = 0; + imuR2muF2 = 0; + imuR2muF05 = 0; + imuR05muF05 = 0; + imuR05muF1 = 0; + imuR05muF2 = 0; + } + ScaleWeightGroupInfo(std::string header) : + ScaleWeightGroupInfo(header, header) { } + ScaleWeightGroupInfo(const ScaleWeightGroupInfo &other) { + copy(other); + } + virtual ~ScaleWeightGroupInfo() override {} + void copy(const ScaleWeightGroupInfo &other); + ScaleWeightGroupInfo* clone() const; + + void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); + void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); + + // Is a variation of the functional form of the dynamic scale + bool isFunctionalFormVariation(); + void setIsFunctionalFormVariation(bool functionalVar) {isFuncationFormVar_ = functionalVar; } + size_t centralIndex() {return icentral; } + size_t muR1muF2Index() { return imuR1muF2; } + size_t muR1muF05Index() { return imuR1muF05; } + size_t muR2muF05Index() { return imuR2muF05; } + size_t muR2muF1Index() { return imuR2muF1; } + size_t muR2muF2Index() { return imuR2muF2; } + size_t muR05muF05Index() { return imuR05muF05; } + size_t muR05muF1Index() { return imuR05muF1; } + size_t muR05muF2Index() { return imuR05muF2; } + }; +} + +#endif + diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index a8d8bd0585248..a815ec762f7f8 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -26,7 +26,7 @@ namespace gen { class WeightGroupInfo { public: - WeightGroupInfo() : headerEntry_(""), name_(""), firstId_(-1), lastId_(-1) {} + WeightGroupInfo() : WeightGroupInfo("") {} WeightGroupInfo(std::string header, std::string name): headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header): diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index f78cb5a1850d2..4e0175bf9629c 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -1,4 +1,3 @@ -#include #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" namespace gen { diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc new file mode 100644 index 0000000000000..cb237225cb76f --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -0,0 +1,52 @@ +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include + +namespace gen { + void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { + icentral = centralIndex(); + imuR1muF2 = muR1muF2Index(); + imuR1muF05 = muR1muF05Index(); + imuR2muF05 = muR2muF05Index(); + imuR2muF1 = muR2muF1Index(); + imuR2muF2 = muR2muF2Index(); + imuR2muF05 = muR2muF05Index(); + imuR05muF1 = muR05muF1Index(); + imuR05muF2 = muR05muF2Index(); + WeightGroupInfo::copy(other); + } + + ScaleWeightGroupInfo* ScaleWeightGroupInfo::clone() const { + return new ScaleWeightGroupInfo(*this); + } + + void ScaleWeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF) { + WeightGroupInfo::addContainedId(weightEntry, id, label); + auto metaInfo = weightMetaInfo(weightEntry); + setMuRMuFIndex(metaInfo, muR, muF); + } + + void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo info, float muR, float muF) { + if (muR == 0.5 && muF == 0.5) + imuR05muF05 = info.localIndex; + else if (muR == 0.5 && muF == 1.0) + imuR05muF1 = info.localIndex; + else if (muR == 0.5 && muF == 2.0) + imuR05muF2 = info.localIndex; + else if (muR == 1.0 && muF == 0.5) + imuR1muF05 = info.localIndex; + else if (muR == 1.0 && muF == 1.0) + icentral = info.localIndex; + else if (muR == 1.0 && muF == 2.0) + imuR1muF2 = info.localIndex; + else if (muR == 2.0 && muF == 0.5) + imuR2muF05 = info.localIndex; + else if (muR == 2.0 && muF == 1.0) + imuR2muF1 = info.localIndex; + else if (muR == 2.0 && muF == 2.0) + imuR2muF2 = info.localIndex; + else + throw std::invalid_argument("Invalid muF and muR variation is not a factor of two from central value"); + } +} + + diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h new file mode 100644 index 0000000000000..d84b109a9b18b --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h @@ -0,0 +1,16 @@ +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" + +namespace gen { + void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { + uncertaintyType_ = other.uncertaintyType(); + hasAlphasVars_ = other.hasAlphasVariations(); + alphasUpIndex_ = other.alphasDownIndex(); + alphasDownIndex_ = other.alphasDownIndex(); + WeightGroupInfo::copy(other); + } + + PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { + return new PdfWeightGroupInfo(*this); + } +} + From 071c069ce03bd33257f30f205694fdd8b39c881a Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 15 Aug 2019 07:21:30 -0400 Subject: [PATCH 014/186] First tests with parsing of lhe file. Need to incorp EDM lhe reader --- .../interface/LHEWeightGroupReaderHelper.h | 128 ++++++++++++++++++ .../plugins/ExternalLHEProducer.cc | 49 ++++--- 2 files changed, 159 insertions(+), 18 deletions(-) create mode 100644 GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h new file mode 100644 index 0000000000000..25cebc478fab3 --- /dev/null +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -0,0 +1,128 @@ +#ifndef GeneratorInterface_LHEInterface_LHEWeightGroupReaderHelper_h +#define GeneratorInterface_LHEInterface_LHEWeightGroupReaderHelper_h + +#include +#include +#include +#include + +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" + + +class LHEWeightGroupReaderHelper { +public: + LHEWeightGroupReaderHelper() : curGroup(gen::kUnknownWeights) {} + + //// possibly add more versions of this functions for different inputs + void parseLHEFile(std::string filename); + + + gen::WeightGroupInfo* getScaleInfo() {return scaleInfo;} + edm::OwnVector getPdfVector() {return pdfVector;} + +private: + // Functions + std::regex createRegexSearch(std::vector); + std::map getTagsMap(std::string, std::regex); + + // Variables + gen::WeightType curWeight; + gen::WeightGroupInfo* scaleInfo; + edm::OwnVector pdfVector; + std::regex weightStart(".*.*"); + std::regex weightEnd(".*.*"); + std::regex weightContent("\\s*(.+)"); + +}; + +void +LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { + ifstream file; + file.open(filename); + + + //// may put in constructor, can have flag to specify these values + //// To make this class a little more flexible + std::vector weightGroup = {"name|type", "combine"}; + std::vector weightInfo = {"MUF", "id", "MUR", "PDF"}; + + std::regex groupTags = createRegexSearch(weightGroup); + std::regex infoTags = createRegexSearch(weightInfo); + /// end that comment + + + std::string line; + std::smatch m; + int index = 0; + while(getline(file, line)) { + if(std::regex_match(line, weightStart)) { + std::string groupLine = line; + std::string name = getTagsMap(line, groupTags)["name"]; + + if(name == "Central scale variation") + curWeight = gen::kScaleWeights; + else + curWeight = gen::kPdfWeights; + + /// file weights + + while(getline(file, line) && !std::regex_match(line, weightEnd)) { + auto tmp = getTagsMap(line, infoTags); + std::regex_search(line, m, weightContent); + std::string content = m[1].str(); + + gen::WeightGroupInfo* tmpWeight = nullptr; + if(curWeight == gen::kScaleWeights) + tmpWeight = new gen::ScaleWeightGroupInfo(groupLine); + else if(curWeight == gen::kPdfWeights) + tmpWeight = new gen::PdfWeightGroupInfo(groupLine); + + tmpWeight->setWeightType(curWeight); + tmpWeight->addContainedId(index, tmp["id"], line); + index++; + } + curWeight = gen::kUnknownWeights; + } + } + +} + + +std::map +LHEWeightGroupReaderHelper::getTagsMap(std::string s, std::regex r) { + std::smatch m; + + std::map retMap; + while(std::regex_search(s, m, r)) { + for(int i = 1; i < m.length() - 1; i += 2) { + if(m[i] != "") { + retMap[m[i]] = m[i + 1]; + } + } + s = m.suffix().str(); + } + + return retMap; +} + + + +std::regex +LHEWeightGroupReaderHelper::createRegexSearch(std::vector names) { + std::string s = "(?:"; + size_t numNames = names.size(); + for(int i=0; i < numNames; ++i) { + s += "\\s*(" + names[i] + ")=\"([^\"]+)\""; + if(i != numNames - 1) { + s += "|"; + } + } + s += ")"; + + return std::regex(s); +} + + +#endif diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 0775cdacf6836..6a68f526fb3e9 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -58,6 +58,7 @@ Description: [one line class summary] #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" #include "GeneratorInterface/LHEInterface/interface/TestWeightInfo.h" +#include "GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/RandomNumberGenerator.h" @@ -350,38 +351,50 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) unsigned int skip = 0; reader_ = std::make_unique(infiles, skip); + + + std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - gen::WeightGroupInfo scaleInfo = getExampleScaleWeights(); + gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); + edm::OwnVector pdfSets;// = getExamplePdfWeights(); //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); - edm::OwnVector pdfSets = getExamplePdfWeights(); + + // setup file reader + string LHEfilename ="cmsgrid_final.lhe"; + LHEWeightGroupReaderHelper reader; + reader.parseLHEFile(LHEfilename); + scaleInfo = *reader.getScaleInfo(); + pdfSet = reader.getPdfVector(); + + weightInfoProduct->addWeightGroupInfo(scaleInfo); for (auto pdfSet : pdfSets) - weightInfoProduct->addWeightGroupInfo(pdfSet); + weightInfoProduct->addWeightGroupInfo(pdfSet); weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); run.put(std::move(weightInfoProduct)); nextEvent(); if (runInfoLast) { - runInfo = runInfoLast; + runInfo = runInfoLast; - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, - product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, - product.get(), _1)); + std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); + std::for_each(runInfo->getHeaders().begin(), + runInfo->getHeaders().end(), + boost::bind(&LHERunInfoProduct::addHeader, + product.get(), _1)); + std::for_each(runInfo->getComments().begin(), + runInfo->getComments().end(), + boost::bind(&LHERunInfoProduct::addComment, + product.get(), _1)); - // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); - wasMerged = false; + // keep a copy around in case of merging + runInfoProducts.push_back(new LHERunInfoProduct(*product)); + wasMerged = false; - run.put(std::move(product)); + run.put(std::move(product)); - runInfo.reset(); + runInfo.reset(); } } From 6bfea57af6dd3765ccb06147daa8491e40568964 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 15 Aug 2019 23:13:59 +0200 Subject: [PATCH 015/186] fixing readerhelper problems --- .../interface/LHEWeightGroupReaderHelper.h | 41 +++++++++++-------- .../plugins/ExternalLHEProducer.cc | 6 +-- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index 25cebc478fab3..6a2855ddf44f8 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" @@ -13,7 +14,7 @@ class LHEWeightGroupReaderHelper { public: - LHEWeightGroupReaderHelper() : curGroup(gen::kUnknownWeights) {} + LHEWeightGroupReaderHelper() : curWeight(gen::kUnknownWeights) {} //// possibly add more versions of this functions for different inputs void parseLHEFile(std::string filename); @@ -31,18 +32,17 @@ class LHEWeightGroupReaderHelper { gen::WeightType curWeight; gen::WeightGroupInfo* scaleInfo; edm::OwnVector pdfVector; - std::regex weightStart(".*.*"); - std::regex weightEnd(".*.*"); - std::regex weightContent("\\s*(.+)"); + std::regex weightStart = std::regex(".*.*"); + std::regex weightEnd = std::regex(".*.*"); + std::regex weightContent = std::regex("\\s*(.+)"); }; void LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { - ifstream file; + std::ifstream file; file.open(filename); - //// may put in constructor, can have flag to specify these values //// To make this class a little more flexible std::vector weightGroup = {"name|type", "combine"}; @@ -52,7 +52,7 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { std::regex infoTags = createRegexSearch(weightInfo); /// end that comment - + std::string line; std::smatch m; int index = 0; @@ -60,28 +60,33 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { if(std::regex_match(line, weightStart)) { std::string groupLine = line; std::string name = getTagsMap(line, groupTags)["name"]; - + if(name == "Central scale variation") - curWeight = gen::kScaleWeights; - else - curWeight = gen::kPdfWeights; + curWeight = gen::kScaleWeights; + else + curWeight = gen::kPdfWeights; /// file weights - while(getline(file, line) && !std::regex_match(line, weightEnd)) { auto tmp = getTagsMap(line, infoTags); std::regex_search(line, m, weightContent); std::string content = m[1].str(); gen::WeightGroupInfo* tmpWeight = nullptr; - if(curWeight == gen::kScaleWeights) + if(curWeight == gen::kScaleWeights) { tmpWeight = new gen::ScaleWeightGroupInfo(groupLine); - else if(curWeight == gen::kPdfWeights) + scaleInfo = tmpWeight; + } + else if(curWeight == gen::kPdfWeights) { tmpWeight = new gen::PdfWeightGroupInfo(groupLine); - - tmpWeight->setWeightType(curWeight); + // pdfVector.push_back(tmpWeight); + } tmpWeight->addContainedId(index, tmp["id"], line); - index++; + + if(curWeight == gen::kPdfWeights) //hate hate hate + pdfVector.push_back(tmpWeight); + index++; + } curWeight = gen::kUnknownWeights; } @@ -113,7 +118,7 @@ std::regex LHEWeightGroupReaderHelper::createRegexSearch(std::vector names) { std::string s = "(?:"; size_t numNames = names.size(); - for(int i=0; i < numNames; ++i) { + for(size_t i=0; i < numNames; ++i) { s += "\\s*(" + names[i] + ")=\"([^\"]+)\""; if(i != numNames - 1) { s += "|"; diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 6a68f526fb3e9..444bf0993a87e 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -360,13 +360,11 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); // setup file reader - string LHEfilename ="cmsgrid_final.lhe"; + std::string LHEfilename ="cmsgrid_final.lhe"; LHEWeightGroupReaderHelper reader; reader.parseLHEFile(LHEfilename); scaleInfo = *reader.getScaleInfo(); - pdfSet = reader.getPdfVector(); - - + pdfSets = reader.getPdfVector(); weightInfoProduct->addWeightGroupInfo(scaleInfo); for (auto pdfSet : pdfSets) From f62468c7e64b1d83c0d30df79754e27332d847f5 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 15 Aug 2019 19:28:49 -0400 Subject: [PATCH 016/186] Working on parsing integration with scale/pdf weights --- .../interface/LHEWeightGroupReaderHelper.h | 79 ++++++++++--------- .../plugins/ExternalLHEProducer.cc | 9 +-- .../interface/ScaleWeightGroupInfo.h | 58 +++++++------- .../src/ScaleWeightGroupInfo.cc | 36 ++++----- .../src/ScaleWeightGroupInfo.h | 16 ---- .../GeneratorProducts/src/classes_def.xml | 7 ++ 6 files changed, 98 insertions(+), 107 deletions(-) delete mode 100644 SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index 6a2855ddf44f8..f669a3c6a6094 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -14,14 +14,17 @@ class LHEWeightGroupReaderHelper { public: - LHEWeightGroupReaderHelper() : curWeight(gen::kUnknownWeights) {} + LHEWeightGroupReaderHelper() : curWeight_(gen::kUnknownWeights) { + weightGroupStart_ = std::regex(".*.*"); + weightGroupEnd_ = std::regex(".*.*"); + weightContent_ = std::regex("\\s*(.+)"); + } //// possibly add more versions of this functions for different inputs void parseLHEFile(std::string filename); - gen::WeightGroupInfo* getScaleInfo() {return scaleInfo;} - edm::OwnVector getPdfVector() {return pdfVector;} + edm::OwnVector getWeightGroups() {return weightGroups_;} private: // Functions @@ -29,12 +32,11 @@ class LHEWeightGroupReaderHelper { std::map getTagsMap(std::string, std::regex); // Variables - gen::WeightType curWeight; - gen::WeightGroupInfo* scaleInfo; - edm::OwnVector pdfVector; - std::regex weightStart = std::regex(".*.*"); - std::regex weightEnd = std::regex(".*.*"); - std::regex weightContent = std::regex("\\s*(.+)"); + gen::WeightType curWeight_; + edm::OwnVector weightGroups_; + std::regex weightGroupStart_; + std::regex weightGroupEnd_; + std::regex weightContent_; }; @@ -54,44 +56,45 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { std::string line; - std::smatch m; + std::smatch matches; + // TODO: Not sure the weight indexing is right here, this seems to more or less + // count the lines which isn't quite the goal. TOCHECK! int index = 0; while(getline(file, line)) { - if(std::regex_match(line, weightStart)) { + if(std::regex_match(line, weightGroupStart_)) { std::string groupLine = line; std::string name = getTagsMap(line, groupTags)["name"]; + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight if(name == "Central scale variation") - curWeight = gen::kScaleWeights; - else - curWeight = gen::kPdfWeights; + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(groupLine)); + else + weightGroups_.push_back(new gen::PdfWeightGroupInfo(groupLine)); /// file weights - while(getline(file, line) && !std::regex_match(line, weightEnd)) { - auto tmp = getTagsMap(line, infoTags); - std::regex_search(line, m, weightContent); - std::string content = m[1].str(); - - gen::WeightGroupInfo* tmpWeight = nullptr; - if(curWeight == gen::kScaleWeights) { - tmpWeight = new gen::ScaleWeightGroupInfo(groupLine); - scaleInfo = tmpWeight; - } - else if(curWeight == gen::kPdfWeights) { - tmpWeight = new gen::PdfWeightGroupInfo(groupLine); - // pdfVector.push_back(tmpWeight); - } - tmpWeight->addContainedId(index, tmp["id"], line); - - if(curWeight == gen::kPdfWeights) //hate hate hate - pdfVector.push_back(tmpWeight); - index++; - - } - curWeight = gen::kUnknownWeights; - } + while(getline(file, line) && !std::regex_match(line, weightGroupEnd_)) { + auto tagsMap = getTagsMap(line, infoTags); + std::regex_search(line, matches, weightContent_); + // TODO: Add proper check that it worked + std::string content = matches[1].str(); + + auto& group = weightGroups_.back(); + if (group.weightType() == gen::kScaleWeights) { + float muR = std::stof(tagsMap["MUR"]); + float muF = std::stof(tagsMap["MUF"]); + auto& scaleGroup = static_cast(group); + scaleGroup.addContainedId(index, tagsMap["id"], line, muR, muF); + } + else + group.addContainedId(index, tagsMap["id"], line); + + index++; + + curWeight_ = gen::kUnknownWeights; + } + } } - } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 444bf0993a87e..924d8f34ca40d 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -355,19 +355,16 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); - edm::OwnVector pdfSets;// = getExamplePdfWeights(); + //gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); + //edm::OwnVector pdfSets;// = getExamplePdfWeights(); //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); // setup file reader std::string LHEfilename ="cmsgrid_final.lhe"; LHEWeightGroupReaderHelper reader; reader.parseLHEFile(LHEfilename); - scaleInfo = *reader.getScaleInfo(); - pdfSets = reader.getPdfVector(); - weightInfoProduct->addWeightGroupInfo(scaleInfo); - for (auto pdfSet : pdfSets) + for (auto pdfSet : reader.getWeightGroups()) weightInfoProduct->addWeightGroupInfo(pdfSet); weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); run.put(std::move(weightInfoProduct)); diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 4a4c7971f0ab8..179b183c07fd9 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -7,31 +7,31 @@ namespace gen { class ScaleWeightGroupInfo : public WeightGroupInfo { private: bool isFuncationFormVar_; - size_t icentral; - size_t imuR1muF2; - size_t imuR1muF05; - size_t imuR2muF05; - size_t imuR2muF1; - size_t imuR2muF2; - size_t imuR05muF05; - size_t imuR05muF1; - size_t imuR05muF2; + size_t icentral_; + size_t imuR1muF2_; + size_t imuR1muF05_; + size_t imuR2muF05_; + size_t imuR2muF1_; + size_t imuR2muF2_; + size_t imuR05muF05_; + size_t imuR05muF1_; + size_t imuR05muF2_; public: ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { weightType_ = kScaleWeights; isFuncationFormVar_ = false; - icentral = 0; - imuR1muF2 = 0; - imuR1muF05 = 0; - imuR2muF05 = 0; - imuR2muF1 = 0; - imuR2muF2 = 0; - imuR2muF05 = 0; - imuR05muF05 = 0; - imuR05muF1 = 0; - imuR05muF2 = 0; + icentral_ = 0; + imuR1muF2_ = 0; + imuR1muF05_ = 0; + imuR2muF05_ = 0; + imuR2muF1_ = 0; + imuR2muF2_ = 0; + imuR2muF05_ = 0; + imuR05muF05_ = 0; + imuR05muF1_ = 0; + imuR05muF2_ = 0; } ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) { } @@ -48,16 +48,16 @@ namespace gen { // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) {isFuncationFormVar_ = functionalVar; } - size_t centralIndex() {return icentral; } - size_t muR1muF2Index() { return imuR1muF2; } - size_t muR1muF05Index() { return imuR1muF05; } - size_t muR2muF05Index() { return imuR2muF05; } - size_t muR2muF1Index() { return imuR2muF1; } - size_t muR2muF2Index() { return imuR2muF2; } - size_t muR05muF05Index() { return imuR05muF05; } - size_t muR05muF1Index() { return imuR05muF1; } - size_t muR05muF2Index() { return imuR05muF2; } - }; + size_t centralIndex() {return icentral_; } + size_t muR1muF2Index() { return imuR1muF2_; } + size_t muR1muF05Index() { return imuR1muF05_; } + size_t muR2muF05Index() { return imuR2muF05_; } + size_t muR2muF1Index() { return imuR2muF1_; } + size_t muR2muF2Index() { return imuR2muF2_; } + size_t muR05muF05Index() { return imuR05muF05_; } + size_t muR05muF1Index() { return imuR05muF1_; } + size_t muR05muF2Index() { return imuR05muF2_; } + }_; } #endif diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index cb237225cb76f..5d2e392d89164 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -3,15 +3,15 @@ namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { - icentral = centralIndex(); - imuR1muF2 = muR1muF2Index(); - imuR1muF05 = muR1muF05Index(); - imuR2muF05 = muR2muF05Index(); - imuR2muF1 = muR2muF1Index(); - imuR2muF2 = muR2muF2Index(); - imuR2muF05 = muR2muF05Index(); - imuR05muF1 = muR05muF1Index(); - imuR05muF2 = muR05muF2Index(); + icentral_ = centralIndex(); + imuR1muF2_ = muR1muF2Index(); + imuR1muF05_ = muR1muF05Index(); + imuR2muF05_ = muR2muF05Index(); + imuR2muF1_ = muR2muF1Index(); + imuR2muF2_ = muR2muF2Index(); + imuR2muF05_ = muR2muF05Index(); + imuR05muF1_ = muR05muF1Index(); + imuR05muF2_ = muR05muF2Index(); WeightGroupInfo::copy(other); } @@ -27,23 +27,23 @@ namespace gen { void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo info, float muR, float muF) { if (muR == 0.5 && muF == 0.5) - imuR05muF05 = info.localIndex; + imuR05muF05_ = info.localIndex; else if (muR == 0.5 && muF == 1.0) - imuR05muF1 = info.localIndex; + imuR05muF1_ = info.localIndex; else if (muR == 0.5 && muF == 2.0) - imuR05muF2 = info.localIndex; + imuR05muF2_ = info.localIndex; else if (muR == 1.0 && muF == 0.5) - imuR1muF05 = info.localIndex; + imuR1muF05_ = info.localIndex; else if (muR == 1.0 && muF == 1.0) - icentral = info.localIndex; + icentral_ = info.localIndex; else if (muR == 1.0 && muF == 2.0) - imuR1muF2 = info.localIndex; + imuR1muF2_ = info.localIndex; else if (muR == 2.0 && muF == 0.5) - imuR2muF05 = info.localIndex; + imuR2muF05_ = info.localIndex; else if (muR == 2.0 && muF == 1.0) - imuR2muF1 = info.localIndex; + imuR2muF1_ = info.localIndex; else if (muR == 2.0 && muF == 2.0) - imuR2muF2 = info.localIndex; + imuR2muF2_ = info.localIndex; else throw std::invalid_argument("Invalid muF and muR variation is not a factor of two from central value"); } diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h deleted file mode 100644 index d84b109a9b18b..0000000000000 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" - -namespace gen { - void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { - uncertaintyType_ = other.uncertaintyType(); - hasAlphasVars_ = other.hasAlphasVariations(); - alphasUpIndex_ = other.alphasDownIndex(); - alphasDownIndex_ = other.alphasDownIndex(); - WeightGroupInfo::copy(other); - } - - PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { - return new PdfWeightGroupInfo(*this); - } -} - diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 6e36f2de18394..0429c3c799790 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -225,12 +225,19 @@ + + + + + + + From 28f0ba2f3ff4d69e3fa10b1d6c3a78925965e666 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 16 Aug 2019 05:15:51 -0400 Subject: [PATCH 017/186] Fixing little bit of readerhelper to change things to non-ptrs --- .../interface/LHEWeightGroupReaderHelper.h | 18 +++++++----------- .../plugins/ExternalLHEProducer.cc | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index 6a2855ddf44f8..a9b0b56034f79 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -20,7 +20,7 @@ class LHEWeightGroupReaderHelper { void parseLHEFile(std::string filename); - gen::WeightGroupInfo* getScaleInfo() {return scaleInfo;} + gen::WeightGroupInfo getScaleInfo() {return scaleInfo;} edm::OwnVector getPdfVector() {return pdfVector;} private: @@ -30,7 +30,7 @@ class LHEWeightGroupReaderHelper { // Variables gen::WeightType curWeight; - gen::WeightGroupInfo* scaleInfo; + gen::WeightGroupInfo scaleInfo; edm::OwnVector pdfVector; std::regex weightStart = std::regex(".*.*"); std::regex weightEnd = std::regex(".*.*"); @@ -72,21 +72,17 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { std::regex_search(line, m, weightContent); std::string content = m[1].str(); - gen::WeightGroupInfo* tmpWeight = nullptr; + gen::WeightGroupInfo tmpWeight; if(curWeight == gen::kScaleWeights) { - tmpWeight = new gen::ScaleWeightGroupInfo(groupLine); + tmpWeight = gen::ScaleWeightGroupInfo(groupLine); scaleInfo = tmpWeight; } else if(curWeight == gen::kPdfWeights) { - tmpWeight = new gen::PdfWeightGroupInfo(groupLine); - // pdfVector.push_back(tmpWeight); + pdfVector.push_back(new gen::PdfWeightGroupInfo(groupLine)); + tmpWeight = pdfVector.back(); } - tmpWeight->addContainedId(index, tmp["id"], line); - - if(curWeight == gen::kPdfWeights) //hate hate hate - pdfVector.push_back(tmpWeight); + tmpWeight.addContainedId(index, tmp["id"], line); index++; - } curWeight = gen::kUnknownWeights; } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 444bf0993a87e..c363979e6f946 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -363,7 +363,7 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) std::string LHEfilename ="cmsgrid_final.lhe"; LHEWeightGroupReaderHelper reader; reader.parseLHEFile(LHEfilename); - scaleInfo = *reader.getScaleInfo(); + scaleInfo = reader.getScaleInfo(); pdfSets = reader.getPdfVector(); weightInfoProduct->addWeightGroupInfo(scaleInfo); From db06b18a56c1caacd53157cd5f912e23777624bb Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 16 Aug 2019 05:18:53 -0400 Subject: [PATCH 018/186] Random commit before merge: only spacing diffs -_- --- .../interface/ScaleWeightGroupInfo.h | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 4a4c7971f0ab8..74c007c9582e6 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -5,58 +5,58 @@ namespace gen { class ScaleWeightGroupInfo : public WeightGroupInfo { - private: - bool isFuncationFormVar_; - size_t icentral; - size_t imuR1muF2; - size_t imuR1muF05; - size_t imuR2muF05; - size_t imuR2muF1; - size_t imuR2muF2; - size_t imuR05muF05; - size_t imuR05muF1; - size_t imuR05muF2; - public: - ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} - ScaleWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { - weightType_ = kScaleWeights; - isFuncationFormVar_ = false; - icentral = 0; - imuR1muF2 = 0; - imuR1muF05 = 0; - imuR2muF05 = 0; - imuR2muF1 = 0; - imuR2muF2 = 0; - imuR2muF05 = 0; - imuR05muF05 = 0; - imuR05muF1 = 0; - imuR05muF2 = 0; - } - ScaleWeightGroupInfo(std::string header) : - ScaleWeightGroupInfo(header, header) { } - ScaleWeightGroupInfo(const ScaleWeightGroupInfo &other) { - copy(other); - } - virtual ~ScaleWeightGroupInfo() override {} - void copy(const ScaleWeightGroupInfo &other); - ScaleWeightGroupInfo* clone() const; + private: + bool isFuncationFormVar_; + size_t icentral; + size_t imuR1muF2; + size_t imuR1muF05; + size_t imuR2muF05; + size_t imuR2muF1; + size_t imuR2muF2; + size_t imuR05muF05; + size_t imuR05muF1; + size_t imuR05muF2; + public: + ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} + ScaleWeightGroupInfo(std::string header, std::string name) : + WeightGroupInfo(header, name) { + weightType_ = kScaleWeights; + isFuncationFormVar_ = false; + icentral = 0; + imuR1muF2 = 0; + imuR1muF05 = 0; + imuR2muF05 = 0; + imuR2muF1 = 0; + imuR2muF2 = 0; + imuR2muF05 = 0; + imuR05muF05 = 0; + imuR05muF1 = 0; + imuR05muF2 = 0; + } + ScaleWeightGroupInfo(std::string header) : + ScaleWeightGroupInfo(header, header) { } + ScaleWeightGroupInfo(const ScaleWeightGroupInfo &other) { + copy(other); + } + virtual ~ScaleWeightGroupInfo() override {} + void copy(const ScaleWeightGroupInfo &other); + ScaleWeightGroupInfo* clone() const; - void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); - void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); + void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); + void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); - // Is a variation of the functional form of the dynamic scale - bool isFunctionalFormVariation(); - void setIsFunctionalFormVariation(bool functionalVar) {isFuncationFormVar_ = functionalVar; } - size_t centralIndex() {return icentral; } - size_t muR1muF2Index() { return imuR1muF2; } - size_t muR1muF05Index() { return imuR1muF05; } - size_t muR2muF05Index() { return imuR2muF05; } - size_t muR2muF1Index() { return imuR2muF1; } - size_t muR2muF2Index() { return imuR2muF2; } - size_t muR05muF05Index() { return imuR05muF05; } - size_t muR05muF1Index() { return imuR05muF1; } - size_t muR05muF2Index() { return imuR05muF2; } + // Is a variation of the functional form of the dynamic scale + bool isFunctionalFormVariation(); + void setIsFunctionalFormVariation(bool functionalVar) {isFuncationFormVar_ = functionalVar; } + size_t centralIndex() {return icentral; } + size_t muR1muF2Index() { return imuR1muF2; } + size_t muR1muF05Index() { return imuR1muF05; } + size_t muR2muF05Index() { return imuR2muF05; } + size_t muR2muF1Index() { return imuR2muF1; } + size_t muR2muF2Index() { return imuR2muF2; } + size_t muR05muF05Index() { return imuR05muF05; } + size_t muR05muF1Index() { return imuR05muF1; } + size_t muR05muF2Index() { return imuR05muF2; } }; } From 71629cd0b87c58911e047368aa45d2bd3393df06 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 28 Aug 2019 04:14:52 -0400 Subject: [PATCH 019/186] Read header info from headers in externalLHEProducer --- .../interface/LHEWeightGroupReaderHelper.h | 71 +++++++++++++++++-- .../plugins/ExternalLHEProducer.cc | 35 +++++---- 2 files changed, 85 insertions(+), 21 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index f669a3c6a6094..e6c8cf6a35bbe 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -10,18 +10,20 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" class LHEWeightGroupReaderHelper { public: LHEWeightGroupReaderHelper() : curWeight_(gen::kUnknownWeights) { - weightGroupStart_ = std::regex(".*.*"); - weightGroupEnd_ = std::regex(".*.*"); - weightContent_ = std::regex("\\s*(.+)"); + weightGroupStart_ = std::regex(".*.*\n*"); + weightGroupEnd_ = std::regex(".*.*\n*"); + weightContent_ = std::regex("\\s*(.+)\n*"); } //// possibly add more versions of this functions for different inputs void parseLHEFile(std::string filename); + void parseWeightGroupsFromHeader(std::vector lheHeader); edm::OwnVector getWeightGroups() {return weightGroups_;} @@ -62,15 +64,14 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { int index = 0; while(getline(file, line)) { if(std::regex_match(line, weightGroupStart_)) { - std::string groupLine = line; std::string name = getTagsMap(line, groupTags)["name"]; //TODO: Fine for now, but in general there should also be a check on the PDF weights, // e.g., it could be an unknown weight if(name == "Central scale variation") - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(groupLine)); + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(groupLine)); + weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); /// file weights while(getline(file, line) && !std::regex_match(line, weightGroupEnd_)) { @@ -97,6 +98,64 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { } } +void +LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { + //// may put in constructor, can have flag to specify these values + //// To make this class a little more flexible + std::vector weightGroup = {"name|type", "combine"}; + std::vector weightInfo = {"MUF", "id", "MUR", "PDF"}; + + std::regex groupTags = createRegexSearch(weightGroup); + std::regex infoTags = createRegexSearch(weightInfo); + /// end that comment + + + std::smatch matches; + // TODO: Not sure the weight indexing is right here, this seems to more or less + // count the lines which isn't quite the goal. TOCHECK! + int index = 0; + bool foundGroup = false; + for (std::string headerLine : lheHeader) { + std::cout << "Header line is:" << headerLine << std::endl; + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight + std::cout << "weightGroupStart_ .*.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; + if (std::regex_match(headerLine, weightGroupStart_)) { + std::cout << "Adding new group for headerLine" << std::endl; + foundGroup = true; + std::string name = getTagsMap(headerLine, groupTags)["name"]; + + if(name == "Central scale variation") + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); + else + weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + } + /// file weights + else if (foundGroup && !std::regex_match(headerLine, weightGroupEnd_)) { + std::cout << "Adding new weight for headerLine" << std::endl; + auto tagsMap = getTagsMap(headerLine, infoTags); + std::regex_search(headerLine, matches, weightContent_); + // TODO: Add proper check that it worked + std::string content = matches[1].str(); + + auto& group = weightGroups_.back(); + if (group.weightType() == gen::kScaleWeights) { + float muR = std::stof(tagsMap["MUR"]); + float muF = std::stof(tagsMap["MUF"]); + auto& scaleGroup = static_cast(group); + scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); + } + else + group.addContainedId(index, tagsMap["id"], headerLine); + + index++; + } + else { + std::cout << " No match..." << std::endl; + foundGroup = false; + } + } +} std::map LHEWeightGroupReaderHelper::getTagsMap(std::string s, std::regex r) { diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 924d8f34ca40d..57ebfe6489c8e 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -354,21 +354,6 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) - std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - //gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); - //edm::OwnVector pdfSets;// = getExamplePdfWeights(); - //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); - - // setup file reader - std::string LHEfilename ="cmsgrid_final.lhe"; - LHEWeightGroupReaderHelper reader; - reader.parseLHEFile(LHEfilename); - - for (auto pdfSet : reader.getWeightGroups()) - weightInfoProduct->addWeightGroupInfo(pdfSet); - weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); - run.put(std::move(weightInfoProduct)); - nextEvent(); if (runInfoLast) { runInfo = runInfoLast; @@ -389,6 +374,26 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) run.put(std::move(product)); + std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); + //gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); + //edm::OwnVector pdfSets;// = getExamplePdfWeights(); + //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); + + // setup file reader + std::string LHEfilename ="cmsgrid_final.lhe"; + LHEWeightGroupReaderHelper reader; + //reader.parseLHEFile(LHEfilename); + std::cout << "Trying to find header initrwgt. Size is "; + std::cout << runInfo->findHeader("initrwgt").size() << std::endl; + for (auto line : runInfo->findHeader("initrwgt")) + std::cout << "Line in header is " << line << std::endl; + reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); + + for (auto weightGroup : reader.getWeightGroups()) + weightInfoProduct->addWeightGroupInfo(weightGroup); + weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); + run.put(std::move(weightInfoProduct)); + runInfo.reset(); } } From c98a07826f18351a74c30e47c31e1f078e129487 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Mon, 2 Sep 2019 08:11:03 -0400 Subject: [PATCH 020/186] added Regex helper class and put under (kinda silly) namespace --- .../interface/LHEWeightGroupReaderHelper.h | 393 ++++++++++++------ .../plugins/ExternalLHEProducer.cc | 175 ++++---- 2 files changed, 365 insertions(+), 203 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index 0a582a288a838..818e6d06f67b8 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -13,49 +13,232 @@ #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" -class LHEWeightGroupReaderHelper { -public: - LHEWeightGroupReaderHelper() { - weightGroupStart_ = std::regex(".*.*"); - weightGroupEnd_ = std::regex(".*.*"); - weightContent_ = std::regex("\\s*(.+)"); +namespace dylanTest { + class RegexCreater + { + public: + void addValue(std::string baseName, std::vector altNames={}, bool isInContent=false ); + bool processString(std::string); + std::map getTagMap() {return valueMap;} + + + private: + std::string tagRegString = "(?:)"; + std::string contentRegString = "(?:)"; + + std::vector tagNames; + std::vector contentNames; + + std::regex tagRegex; + std::regex contentRegex; + + std::map valueMap; + + std::string orStrings(std::string baseName, std::vector altNames); + void updateRegexSearchTag(std::string matchName); + void updateRegexSearchContent(std::string matchName); + + }; + + + + + class LHEWeightGroupReaderHelper { + public: + LHEWeightGroupReaderHelper(); + + //// possibly add more versions of this functions for different inputs + void parseLHEFile(std::string filename); + void parseWeightGroupsFromHeader(std::vector lheHeader); + + + edm::OwnVector getWeightGroups() {return weightGroups_;} + + private: + // functions + std::map getMap_testAll(std::string, std::vector); + + // Variables + edm::OwnVector weightGroups_; + std::regex weightGroupStart_; + std::regex weightGroupEnd_; + std::regex weightContent_; + std::regex scaleWeightMatch_; + + std::vector regexOptions; + RegexCreater weightGroupInfo; + }; +} + + + +void +dylanTest::RegexCreater::addValue(std::string baseName, std::vector altNames, bool isInContent) { + std::string nameListString = orStrings(baseName, altNames); + + if (isInContent) { + contentNames.push_back(baseName); + updateRegexSearchContent(nameListString); } + else { + tagNames.push_back(baseName); + updateRegexSearchTag(nameListString); + } +} - //// possibly add more versions of this functions for different inputs - void parseLHEFile(std::string filename); - void parseWeightGroupsFromHeader(std::vector lheHeader); +std::string +dylanTest::RegexCreater::orStrings(std::string baseName, std::vector altNames) { + for(auto name: altNames) { + baseName += "|" + name; + } + return baseName; +} +void +dylanTest::RegexCreater::updateRegexSearchTag(std::string matchName) { + tagRegString.pop_back(); // remove last ) + if(tagRegString.size() > 5) tagRegString += "|";//for fence post issue + + tagRegString += "\\s*(" + matchName + ")=\"([^\"]+)\")"; + // Last bit is to ignore case + tagRegex = std::regex(tagRegString, std::regex_constants::ECMAScript | std::regex_constants::icase ); +} - edm::OwnVector getWeightGroups() {return weightGroups_;} +void +dylanTest::RegexCreater::updateRegexSearchContent(std::string matchName) { + contentRegString.pop_back(); // remove last ) + if(contentRegString.size() > 5) contentRegString += "|"; //for fence post issue + contentRegString += "(" + matchName + ")\\s*=\\s*(\\S+))"; + // Last bit is to ignore case + contentRegex = std::regex(contentRegString, std::regex_constants::ECMAScript | std::regex_constants::icase ); +} -private: - // Functions - std::regex createRegexSearch(std::vector); - std::map getTagsMap(std::string, std::regex); +bool +dylanTest::RegexCreater::processString(std::string fullString) { + valueMap.clear(); + std::smatch m; + + std::string processStr = fullString; + while(std::regex_search(processStr, m, tagRegex)) { + for(int i = 1; i < m.length() - 1; i += 2) { + if(m[i] != "") { + valueMap[tagNames.at(i/2)] = m[i + 1]; + } + + } + processStr = m.suffix().str(); + } + + std::regex weightContent_ = std::regex("\\s*(.+)\\s*"); + std::regex_search(fullString, m, weightContent_); + processStr = m[1]; + while(std::regex_search(processStr, m, contentRegex)) { + for(int i = 1; i < m.length() - 1; i += 2) { + if(m[i] != "") { + valueMap[contentNames.at(i/2)] = m[i + 1]; + } + } + processStr = m.suffix().str(); + } + + return valueMap.size() == (contentNames.size() + tagNames.size()); +} + + - // Variables - edm::OwnVector weightGroups_; - std::regex weightGroupStart_; - std::regex weightGroupEnd_; - std::regex weightContent_; -}; + + + + +dylanTest::LHEWeightGroupReaderHelper::LHEWeightGroupReaderHelper() { + weightGroupStart_ = std::regex(".*.*\n*"); + weightGroupEnd_ = std::regex(".*.*\n*"); + weightContent_ = std::regex("\\s*(.+)\\s*\n*"); + scaleWeightMatch_ = std::regex(".*(Central scale variation|scale_variation).*\n?"); + + std::cout << "Init" << "\n"; + + /// Might change later, order matters and code doesn't pick choices + + // WZVBS_2017_weightInfo.txt : scale-sometimes + // WZVBS_private_weightInfo.txt : scale-sometimes + RegexCreater rc_scale_dyn_pdf; + rc_scale_dyn_pdf.addValue("muf"); + rc_scale_dyn_pdf.addValue("mur"); + rc_scale_dyn_pdf.addValue("id"); + rc_scale_dyn_pdf.addValue("dyn_scale"); + rc_scale_dyn_pdf.addValue("pdf"); + regexOptions.push_back(rc_scale_dyn_pdf); + + // WZVBS_private_weightInfo.txt : scale-sometimes / other + // WZVBS_2017_weightInfo.txt : scale-sometimes / other + // DrellYan_LO_MGMLMv242_2017_weightInfo.txt : all + RegexCreater rc_scale_pdf; + rc_scale_pdf.addValue("muf"); + rc_scale_pdf.addValue("mur"); + rc_scale_pdf.addValue("id"); + rc_scale_pdf.addValue("pdf"); + regexOptions.push_back(rc_scale_pdf); + + + RegexCreater rc_scale; + rc_scale.addValue("muf"); + rc_scale.addValue("mur"); + rc_scale.addValue("id"); + regexOptions.push_back(rc_scale); + + + // ZZTo4L_powheg_2016_weightInfo.txt : scale / missing pdf option though... + // DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt : scale + // DrellYan_LO_MGMLMv233_2016_weightInfo.txt : scale + RegexCreater rc_scaleAlt; + rc_scaleAlt.addValue("muf", {"facscfact"}, true); + rc_scaleAlt.addValue("mur", {"renscfact"}, true); + rc_scaleAlt.addValue("id"); + regexOptions.push_back(rc_scaleAlt); + + + // ZZTo4L_powheg_2016_weightInfo.txt : other + // ZZTo4L_powheg_2017_weightInfo.txt : other + // DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt : other + // DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt : other + RegexCreater rc_pdfAlt; + rc_scaleAlt.addValue("pdf", {"pdf set", "lhapdf", "pdfset"}, true); + rc_scaleAlt.addValue("id"); + regexOptions.push_back(rc_pdfAlt); + + // DrellYan_LO_MGMLMv233_2016_weightInfo.txt : other + RegexCreater rc_idOnly; + rc_idOnly.addValue("id"); + regexOptions.push_back(rc_idOnly); + + weightGroupInfo.addValue("name", {"type"}); + weightGroupInfo.addValue("combine"); + + +} + +std::map +dylanTest::LHEWeightGroupReaderHelper::getMap_testAll(std::string line, std::vector options) { + for (size_t i = 0; i < options.size(); ++i) { + if(options[i].processString(line)) { + return options[i].getTagMap(); + } + } + ////// problem!!!! + std::cout << "problem!!" << "\n"; + return std::map(); +} + + + void -LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { +dylanTest::LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { std::ifstream file; file.open(filename); - //// may put in constructor, can have flag to specify these values - //// To make this class a little more flexible - std::vector weightGroup = {"name|type", "combine"}; - std::vector weightInfo = {"MUF", "id", "MUR", "PDF"}; - - std::regex groupTags = createRegexSearch(weightGroup); - std::regex infoTags = createRegexSearch(weightInfo); - /// end that comment - - std::string line; std::smatch matches; // TODO: Not sure the weight indexing is right here, this seems to more or less @@ -63,26 +246,32 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { int index = 0; while(getline(file, line)) { if(std::regex_match(line, weightGroupStart_)) { - std::string name = getTagsMap(line, groupTags)["name"]; + std::string name = getMap_testAll(line, {weightGroupInfo})["name"]; + + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight + + if(std::regex_match(name, scaleWeightMatch_)) { + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); + std::cout << "scale weight" << "\n"; + } + - //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight - if(name == "Central scale variation") - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); + weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); /// file weights while(getline(file, line) && !std::regex_match(line, weightGroupEnd_)) { - auto tagsMap = getTagsMap(line, infoTags); + auto tagsMap = getMap_testAll(line, regexOptions); + std::regex_search(line, matches, weightContent_); // TODO: Add proper check that it worked std::string content = matches[1].str(); auto& group = weightGroups_.back(); if (group.weightType() == gen::kScaleWeights) { - float muR = std::stof(tagsMap["MUR"]); - float muF = std::stof(tagsMap["MUF"]); + float muR = std::stof(tagsMap["mur"]); + float muF = std::stof(tagsMap["muf"]); auto& scaleGroup = static_cast(group); scaleGroup.addContainedId(index, tagsMap["id"], line, muR, muF); } @@ -96,97 +285,63 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { } void -LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { - //// may put in constructor, can have flag to specify these values - //// To make this class a little more flexible - std::vector weightGroup = {"name|type", "combine"}; - std::vector weightInfo = {"MUF", "id", "MUR", "PDF"}; - - std::regex groupTags = createRegexSearch(weightGroup); - std::regex infoTags = createRegexSearch(weightInfo); - /// end that comment - - +dylanTest::LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { std::smatch matches; // TODO: Not sure the weight indexing is right here, this seems to more or less // count the lines which isn't quite the goal. TOCHECK! int index = 0; bool foundGroup = false; for (std::string headerLine : lheHeader) { - std::cout << "Header line is:" << headerLine << std::endl; - //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight - std::cout << "weightGroupStart_ .*.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; - if (std::regex_match(headerLine, weightGroupStart_)) { - std::cout << "Adding new group for headerLine" << std::endl; - foundGroup = true; - std::string name = getTagsMap(headerLine, groupTags)["name"]; - - if(name == "Central scale variation") - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); - else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); - } - /// file weights - else if (foundGroup && !std::regex_match(headerLine, weightGroupEnd_)) { - std::cout << "Adding new weight for headerLine" << std::endl; - auto tagsMap = getTagsMap(headerLine, infoTags); - std::regex_search(headerLine, matches, weightContent_); - // TODO: Add proper check that it worked - std::string content = matches[1].str(); - - auto& group = weightGroups_.back(); - if (group.weightType() == gen::kScaleWeights) { - float muR = std::stof(tagsMap["MUR"]); - float muF = std::stof(tagsMap["MUF"]); - auto& scaleGroup = static_cast(group); - scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); - } - else - group.addContainedId(index, tagsMap["id"], headerLine); - - index++; - } - else { - std::cout << " No match..." << std::endl; - foundGroup = false; - } - } -} - -std::map -LHEWeightGroupReaderHelper::getTagsMap(std::string s, std::regex r) { - std::smatch m; - - std::map retMap; - while(std::regex_search(s, m, r)) { - for(int i = 1; i < m.length() - 1; i += 2) { - if(m[i] != "") { - retMap[m[i]] = m[i + 1]; + std::cout << "Header line is:" << headerLine; + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight + std::cout << "weightGroupStart_ .*.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; + if (std::regex_match(headerLine, weightGroupStart_)) { + //std::cout << "Adding new group for headerLine" << std::endl; + foundGroup = true; + std::string name = getMap_testAll(headerLine, {weightGroupInfo})["name"]; + + if(std::regex_match(name, scaleWeightMatch_)) { + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); + std::cout << "scale weight" << "\n"; + } + + else + weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + } + /// file weights + else if (foundGroup && !std::regex_match(headerLine, weightGroupEnd_)) { + //std::cout << "Adding new weight for headerLine" << std::endl; + auto tagsMap = getMap_testAll(headerLine, regexOptions); + for(auto pair: tagsMap) { + std::cout << pair.first << ": " << pair.second << " | "; + } + std::cout << "\n"; + std::regex_search(headerLine, matches, weightContent_); + // TODO: Add proper check that it worked + std::string content = matches[1].str(); + // std::cout << content << "\n"; + + auto& group = weightGroups_.back(); + if (group.weightType() == gen::kScaleWeights) { + float muR = std::stof(tagsMap["mur"]); + float muF = std::stof(tagsMap["muf"]); + std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; + auto& scaleGroup = static_cast(group); + scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); } + else + group.addContainedId(index, tagsMap["id"], headerLine); + index++; + } + else { + foundGroup = false; } - s = m.suffix().str(); } - - return retMap; } -std::regex -LHEWeightGroupReaderHelper::createRegexSearch(std::vector names) { - std::string s = "(?:"; - size_t numNames = names.size(); - for(size_t i=0; i < numNames; ++i) { - s += "\\s*(" + names[i] + ")=\"([^\"]+)\""; - if(i != numNames - 1) { - s += "|"; - } - } - s += ")"; - - return std::regex(s); -} +#endif -#endif diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 57ebfe6489c8e..4eed2e0575ba7 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -296,108 +296,115 @@ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { - // pass the number of events as previous to last argument - - std::ostringstream eventStream; - eventStream << nEvents_; - // args_.push_back(eventStream.str()); - args_.insert(args_.begin() + 1, eventStream.str()); + // pass the number of events as previous to last argument + std::ostringstream eventStream; + eventStream << nEvents_; + // args_.push_back(eventStream.str()); + args_.insert(args_.begin() + 1, eventStream.str()); - // pass the random number generator seed as last argument + // pass the random number generator seed as last argument - edm::Service rng; + edm::Service rng; - if ( ! rng.isAvailable()) { - throw cms::Exception("Configuration") - << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" - "which is not present in the configuration file. You must add the service\n" - "in the configuration file if you want to run ExternalLHEProducer"; - } - std::ostringstream randomStream; - randomStream << rng->mySeed(); - // args_.push_back(randomStream.str()); - args_.insert(args_.begin() + 2, randomStream.str()); + if ( ! rng.isAvailable()) { + throw cms::Exception("Configuration") + << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" + "which is not present in the configuration file. You must add the service\n" + "in the configuration file if you want to run ExternalLHEProducer"; + } + std::ostringstream randomStream; + randomStream << rng->mySeed(); + // args_.push_back(randomStream.str()); + args_.insert(args_.begin() + 2, randomStream.str()); - // args_.emplace_back(std::to_string(nThreads_)); - args_.insert(args_.begin() + 3, std::to_string(nThreads_)); + // args_.emplace_back(std::to_string(nThreads_)); + args_.insert(args_.begin() + 3, std::to_string(nThreads_)); - for ( unsigned int iArg = 0; iArg < args_.size() ; iArg++ ) { - LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; - } + for ( unsigned int iArg = 0; iArg < args_.size() ; iArg++ ) { + LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; + } - executeScript(); + executeScript(); - //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory) - std::unique_ptr p(new LHEXMLStringProduct); - - //store the XML file only if explictly requested - if (storeXML_) { - std::ifstream instream(outputFile_); - if (!instream) { - throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << "."; - } - instream.seekg (0, instream.end); - int insize = instream.tellg(); - instream.seekg (0, instream.beg); - p->fillCompressedContent(instream, 0.25*insize); - instream.close(); - } - run.put(std::move(p), "LHEScriptOutput"); + //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory) + std::unique_ptr p(new LHEXMLStringProduct); + + //store the XML file only if explictly requested + if (storeXML_) { + std::ifstream instream(outputFile_); + if (!instream) { + throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << "."; + } + instream.seekg (0, instream.end); + int insize = instream.tellg(); + instream.seekg (0, instream.beg); + p->fillCompressedContent(instream, 0.25*insize); + instream.close(); + } + run.put(std::move(p), "LHEScriptOutput"); - // LHE C++ classes translation - // (read back uncompressed file from disk in streaming mode again to save memory) + // LHE C++ classes translation + // (read back uncompressed file from disk in streaming mode again to save memory) - std::vector infiles(1, outputFile_); - unsigned int skip = 0; - reader_ = std::make_unique(infiles, skip); + std::vector infiles(1, outputFile_); + unsigned int skip = 0; + reader_ = std::make_unique(infiles, skip); + + nextEvent(); + if (runInfoLast) { + runInfo = runInfoLast; - - - nextEvent(); - if (runInfoLast) { - runInfo = runInfoLast; - - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, - product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, - product.get(), _1)); + std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); + std::for_each(runInfo->getHeaders().begin(), + runInfo->getHeaders().end(), + boost::bind(&LHERunInfoProduct::addHeader, + product.get(), _1)); + std::for_each(runInfo->getComments().begin(), + runInfo->getComments().end(), + boost::bind(&LHERunInfoProduct::addComment, + product.get(), _1)); - // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); - wasMerged = false; + // keep a copy around in case of merging + runInfoProducts.push_back(new LHERunInfoProduct(*product)); + wasMerged = false; - run.put(std::move(product)); + run.put(std::move(product)); - std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - //gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); - //edm::OwnVector pdfSets;// = getExamplePdfWeights(); - //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); - - // setup file reader - std::string LHEfilename ="cmsgrid_final.lhe"; - LHEWeightGroupReaderHelper reader; - //reader.parseLHEFile(LHEfilename); - std::cout << "Trying to find header initrwgt. Size is "; - std::cout << runInfo->findHeader("initrwgt").size() << std::endl; - for (auto line : runInfo->findHeader("initrwgt")) - std::cout << "Line in header is " << line << std::endl; - reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); + std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); + //gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); + //edm::OwnVector pdfSets;// = getExamplePdfWeights(); + //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); + + // setup file reader + //std::string LHEfilename ="cmsgrid_final.lhe"; + // std::string LHEfilename = "DrellYan_LO_MGMLMv233_2016_weightInfo.txt"; + //std::string LHEfilename = "DrellYan_LO_MGMLMv242_2017_weightInfo.txt"; + // std::string LHEfilename = "DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt"; + // std::string LHEfilename = "DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt"; + // std::string LHEfilename = "WZVBS_2017_weightInfo.txt"; // **** + std::string LHEfilename = "WZVBS_private_weightInfo.txt"; + // std::string LHEfilename = "ZZTo4L_powheg_2016_weightInfo.txt"; + // std::string LHEfilename = "ZZTo4L_powheg_2017_weightInfo.txt"; + + dylanTest::LHEWeightGroupReaderHelper reader; + //reader.parseLHEFile(LHEfilename); + std::cout << "Trying to find header initrwgt. Size is "; + std::cout << runInfo->findHeader("initrwgt").size() << std::endl; + // for (auto line : runInfo->findHeader("initrwgt")) + // std::cout << "Line in header is " << line; + reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); - for (auto weightGroup : reader.getWeightGroups()) - weightInfoProduct->addWeightGroupInfo(weightGroup); - weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); - run.put(std::move(weightInfoProduct)); + for (auto weightGroup : reader.getWeightGroups()) + weightInfoProduct->addWeightGroupInfo(weightGroup); + weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); + run.put(std::move(weightInfoProduct)); - runInfo.reset(); - } + runInfo.reset(); + } } + // ------------ method called when ending the processing of a run ------------ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) From de0ad7a1663419e0512413ba85b040a22ee193a2 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 2 Sep 2019 09:07:18 -0400 Subject: [PATCH 021/186] Fix problem with instantiating Scale/PdfWeightInfo to file --- .../GeneratorProducts/interface/ScaleWeightGroupInfo.h | 2 +- SimDataFormats/GeneratorProducts/src/classes.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 179b183c07fd9..30a92cede74ec 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -57,7 +57,7 @@ namespace gen { size_t muR05muF05Index() { return imuR05muF05_; } size_t muR05muF1Index() { return imuR05muF1_; } size_t muR05muF2Index() { return imuR05muF2_; } - }_; + }; } #endif diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index 266b790487bbe..9e5f0b86ac2af 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -9,6 +9,8 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" From 59691bc6a647eef22e57ed248fa4d9a0d9520a8a Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 3 Sep 2019 09:23:07 -0400 Subject: [PATCH 022/186] Add an alternative sample for testing --- .../LHEInterface/plugins/ExternalLHEProducer.cc | 6 +----- GeneratorInterface/LHEInterface/test/test_Weights_cfg.py | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 57ebfe6489c8e..17ab2045a7822 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -380,13 +380,9 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); // setup file reader - std::string LHEfilename ="cmsgrid_final.lhe"; LHEWeightGroupReaderHelper reader; + //std::string LHEfilename ="cmsgrid_final.lhe"; //reader.parseLHEFile(LHEfilename); - std::cout << "Trying to find header initrwgt. Size is "; - std::cout << runInfo->findHeader("initrwgt").size() << std::endl; - for (auto line : runInfo->findHeader("initrwgt")) - std::cout << "Line in header is " << line << std::endl; reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); for (auto weightGroup : reader.getWeightGroups()) diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index aeb7882932c6e..fe898901ed4aa 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -59,7 +59,8 @@ process.GlobalTag = GlobalTag(process.GlobalTag, '102X_upgrade2018_realistic_v11', '') process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", - args = cms.vstring('/afs/hep.wisc.edu/home/kdlong/public/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), + #args = cms.vstring('/afs/hep.wisc.edu/home/kdlong/public/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), + args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_slc6_amd64_gcc630_CMSSW_9_3_0_ZZTo4L2017_pdf306000.tgz'), nEvents = cms.untracked.uint32(10), numberOfParameters = cms.uint32(1), outputFile = cms.string('cmsgrid_final.lhe'), From 1c1da7637d6c910ab5b99eca20a2a59e42a030c8 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 3 Sep 2019 16:14:28 -0400 Subject: [PATCH 023/186] Slight cleanup to naming and weightgroup type --- .../interface/LHEWeightGroupReaderHelper.h | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index e6c8cf6a35bbe..77881fe323c29 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -65,11 +65,14 @@ LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { while(getline(file, line)) { if(std::regex_match(line, weightGroupStart_)) { std::string name = getTagsMap(line, groupTags)["name"]; + std::cout << "Name is " << name << std::endl; //TODO: Fine for now, but in general there should also be a check on the PDF weights, // e.g., it could be an unknown weight - if(name == "Central scale variation") + if(name.find("scale") != std::string::npos) { + std::cout << "Yes, it's a scale variation!" << std::endl; weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); + } else weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); @@ -125,10 +128,16 @@ LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector foundGroup = true; std::string name = getTagsMap(headerLine, groupTags)["name"]; - if(name == "Central scale variation") - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); + std::cout << "Name is " << name << std::endl; + + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight + if(name.find("scale") != std::string::npos) { + std::cout << "Yes, it's a scale variation!" << std::endl; + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(name)); + } else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + weightGroups_.push_back(new gen::PdfWeightGroupInfo(name)); } /// file weights else if (foundGroup && !std::regex_match(headerLine, weightGroupEnd_)) { @@ -140,8 +149,8 @@ LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector auto& group = weightGroups_.back(); if (group.weightType() == gen::kScaleWeights) { - float muR = std::stof(tagsMap["MUR"]); - float muF = std::stof(tagsMap["MUF"]); + float muR = (!tagsMap["MUR"].empty() && std::isdigit(tagsMap["MUR"][0])) ? std::stof(tagsMap["MUR"]) : 1; + float muF = (!tagsMap["MUF"].empty() && std::isdigit(tagsMap["MUF"][0])) ? std::stof(tagsMap["MUF"]) : 1; auto& scaleGroup = static_cast(group); scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); } From 80cde77e1e419d54a1ec19c5f7bdc91b070a010f Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Wed, 4 Sep 2019 04:25:41 -0400 Subject: [PATCH 024/186] Fixed small error in names of RegexCreater, should run on new gridp Need to look into more flexible implimentation/more error detection --- .../LHEInterface/interface/LHEWeightGroupReaderHelper.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index 818e6d06f67b8..f88dcba93d273 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -204,8 +204,8 @@ dylanTest::LHEWeightGroupReaderHelper::LHEWeightGroupReaderHelper() { // DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt : other // DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt : other RegexCreater rc_pdfAlt; - rc_scaleAlt.addValue("pdf", {"pdf set", "lhapdf", "pdfset"}, true); - rc_scaleAlt.addValue("id"); + rc_pdfAlt.addValue("pdf", {"pdf set", "lhapdf", "pdfset"}, true); + rc_pdfAlt.addValue("id"); regexOptions.push_back(rc_pdfAlt); // DrellYan_LO_MGMLMv233_2016_weightInfo.txt : other @@ -232,8 +232,6 @@ dylanTest::LHEWeightGroupReaderHelper::getMap_testAll(std::string line, std::vec } - - void dylanTest::LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { std::ifstream file; @@ -295,7 +293,7 @@ dylanTest::LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; + //std::cout << "weightGroupStart_ .*.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; if (std::regex_match(headerLine, weightGroupStart_)) { //std::cout << "Adding new group for headerLine" << std::endl; foundGroup = true; From 33e246685138ddac48d2c72588aa2c82662a941f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 4 Sep 2019 09:00:10 -0400 Subject: [PATCH 025/186] Remove bloated comments --- .../interface/LHEWeightGroupReaderHelper.h | 14 -------------- .../LHEInterface/plugins/ExternalLHEProducer.cc | 6 +----- .../LHEInterface/test/test_Weights_cfg.py | 3 ++- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index f88dcba93d273..026cbb4a5dd53 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -157,8 +157,6 @@ dylanTest::LHEWeightGroupReaderHelper::LHEWeightGroupReaderHelper() { weightContent_ = std::regex("\\s*(.+)\\s*\n*"); scaleWeightMatch_ = std::regex(".*(Central scale variation|scale_variation).*\n?"); - std::cout << "Init" << "\n"; - /// Might change later, order matters and code doesn't pick choices // WZVBS_2017_weightInfo.txt : scale-sometimes @@ -251,7 +249,6 @@ dylanTest::LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { if(std::regex_match(name, scaleWeightMatch_)) { weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); - std::cout << "scale weight" << "\n"; } @@ -290,18 +287,14 @@ dylanTest::LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; if (std::regex_match(headerLine, weightGroupStart_)) { - //std::cout << "Adding new group for headerLine" << std::endl; foundGroup = true; std::string name = getMap_testAll(headerLine, {weightGroupInfo})["name"]; if(std::regex_match(name, scaleWeightMatch_)) { weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); - std::cout << "scale weight" << "\n"; } else @@ -309,22 +302,15 @@ dylanTest::LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector(group); scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 4eed2e0575ba7..4e3de6b64806a 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -386,13 +386,9 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) std::string LHEfilename = "WZVBS_private_weightInfo.txt"; // std::string LHEfilename = "ZZTo4L_powheg_2016_weightInfo.txt"; // std::string LHEfilename = "ZZTo4L_powheg_2017_weightInfo.txt"; - dylanTest::LHEWeightGroupReaderHelper reader; + //reader.parseLHEFile(LHEfilename); - std::cout << "Trying to find header initrwgt. Size is "; - std::cout << runInfo->findHeader("initrwgt").size() << std::endl; - // for (auto line : runInfo->findHeader("initrwgt")) - // std::cout << "Line in header is " << line; reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); for (auto weightGroup : reader.getWeightGroups()) diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index fe898901ed4aa..a4b15881e73c6 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -60,7 +60,8 @@ process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", #args = cms.vstring('/afs/hep.wisc.edu/home/kdlong/public/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), - args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_slc6_amd64_gcc630_CMSSW_9_3_0_ZZTo4L2017_pdf306000.tgz'), + #args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_slc6_amd64_gcc630_CMSSW_9_3_0_ZZTo4L2017_pdf306000Dummy.tgz'), + args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_4L_NNPDF30_13TeV_tarballDummy.tar.gz'), nEvents = cms.untracked.uint32(10), numberOfParameters = cms.uint32(1), outputFile = cms.string('cmsgrid_final.lhe'), From 9baeee20d3686431d22a290965c55a95fcfbda87 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 6 Sep 2019 09:26:24 -0400 Subject: [PATCH 026/186] overhaul of code: now works with tinyxml2 instead of regex --- GeneratorInterface/LHEInterface/BuildFile.xml | 1 + .../interface/LHEWeightGroupReaderHelper.h | 480 ++++++++---------- .../plugins/ExternalLHEProducer.cc | 18 +- 3 files changed, 221 insertions(+), 278 deletions(-) diff --git a/GeneratorInterface/LHEInterface/BuildFile.xml b/GeneratorInterface/LHEInterface/BuildFile.xml index 7ee840b3ea784..3c5338daa6d97 100644 --- a/GeneratorInterface/LHEInterface/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/BuildFile.xml @@ -13,6 +13,7 @@ + diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index f88dcba93d273..38315664782aa 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -12,328 +12,284 @@ #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include +using namespace tinyxml2; -namespace dylanTest { - class RegexCreater - { - public: - void addValue(std::string baseName, std::vector altNames={}, bool isInContent=false ); - bool processString(std::string); - std::map getTagMap() {return valueMap;} - - private: - std::string tagRegString = "(?:)"; - std::string contentRegString = "(?:)"; - - std::vector tagNames; - std::vector contentNames; - - std::regex tagRegex; - std::regex contentRegex; +class LHEWeightGroupReaderHelper { +public: + LHEWeightGroupReaderHelper(); - std::map valueMap; - - std::string orStrings(std::string baseName, std::vector altNames); - void updateRegexSearchTag(std::string matchName); - void updateRegexSearchContent(std::string matchName); - - }; + //// possibly add more versions of this functions for different inputs + void parseLHEFile(std::string filename); + void parseWeightGroupsFromHeader(std::vector lheHeader); + edm::OwnVector getWeightGroups() {return weightGroups_;} +private: + void loadAttributeNames(std::string baseName, std::vector altNames ={}); + std::string toLowerCase(const char*); + std::string toLowerCase(const std::string); + std::map getAttributeMap(std::string); + std::string sanitizeText(std::string); + bool isAWeight(std::string); - - class LHEWeightGroupReaderHelper { - public: - LHEWeightGroupReaderHelper(); - - //// possibly add more versions of this functions for different inputs - void parseLHEFile(std::string filename); - void parseWeightGroupsFromHeader(std::vector lheHeader); - - - edm::OwnVector getWeightGroups() {return weightGroups_;} + // Variables + edm::OwnVector weightGroups_; + std::regex weightGroupStart_; + std::regex weightGroupEnd_; + std::regex weightContent_; - private: - // functions - std::map getMap_testAll(std::string, std::vector); - - // Variables - edm::OwnVector weightGroups_; - std::regex weightGroupStart_; - std::regex weightGroupEnd_; - std::regex weightContent_; - std::regex scaleWeightMatch_; - - std::vector regexOptions; - RegexCreater weightGroupInfo; - }; -} - + std::map nameConvMap; +}; -void -dylanTest::RegexCreater::addValue(std::string baseName, std::vector altNames, bool isInContent) { - std::string nameListString = orStrings(baseName, altNames); - - if (isInContent) { - contentNames.push_back(baseName); - updateRegexSearchContent(nameListString); - } - else { - tagNames.push_back(baseName); - updateRegexSearchTag(nameListString); - } -} - std::string -dylanTest::RegexCreater::orStrings(std::string baseName, std::vector altNames) { - for(auto name: altNames) { - baseName += "|" + name; - } - return baseName; +LHEWeightGroupReaderHelper::toLowerCase(const char* name) { + std::string returnStr; + for (size_t i = 0; i < strlen(name); ++i) + returnStr.push_back(tolower(name[i])); + return returnStr; } -void -dylanTest::RegexCreater::updateRegexSearchTag(std::string matchName) { - tagRegString.pop_back(); // remove last ) - if(tagRegString.size() > 5) tagRegString += "|";//for fence post issue - - tagRegString += "\\s*(" + matchName + ")=\"([^\"]+)\")"; - // Last bit is to ignore case - tagRegex = std::regex(tagRegString, std::regex_constants::ECMAScript | std::regex_constants::icase ); -} +std::string +LHEWeightGroupReaderHelper::toLowerCase(const std::string name) { + std::string returnStr = name; + transform(name.begin(), name.end(), returnStr.begin(), ::tolower); + return returnStr; -void -dylanTest::RegexCreater::updateRegexSearchContent(std::string matchName) { - contentRegString.pop_back(); // remove last ) - if(contentRegString.size() > 5) contentRegString += "|"; //for fence post issue - contentRegString += "(" + matchName + ")\\s*=\\s*(\\S+))"; - // Last bit is to ignore case - contentRegex = std::regex(contentRegString, std::regex_constants::ECMAScript | std::regex_constants::icase ); -} -bool -dylanTest::RegexCreater::processString(std::string fullString) { - valueMap.clear(); - std::smatch m; - - std::string processStr = fullString; - while(std::regex_search(processStr, m, tagRegex)) { - for(int i = 1; i < m.length() - 1; i += 2) { - if(m[i] != "") { - valueMap[tagNames.at(i/2)] = m[i + 1]; - } +} - } - processStr = m.suffix().str(); +void LHEWeightGroupReaderHelper::loadAttributeNames(std::string baseName, std::vector altNames) { + for(auto altname : altNames) { + nameConvMap[altname] = baseName; } + nameConvMap[baseName] = baseName; +} - std::regex weightContent_ = std::regex("\\s*(.+)\\s*"); - std::regex_search(fullString, m, weightContent_); - processStr = m[1]; - while(std::regex_search(processStr, m, contentRegex)) { - for(int i = 1; i < m.length() - 1; i += 2) { - if(m[i] != "") { - valueMap[contentNames.at(i/2)] = m[i + 1]; - } +std::string +LHEWeightGroupReaderHelper::sanitizeText(std::string line) { + std::map replaceMap = {{"<", "<"}, {">", ">"}}; + + for(auto pair: replaceMap) { + std::string badText = pair.first; + std::string goodText = pair.second; + while(line.find(badText) != std::string::npos) { + size_t spot = line.find(badText); + line.replace(spot, badText.size(), goodText); } - processStr = m.suffix().str(); } - - return valueMap.size() == (contentNames.size() + tagNames.size()); + return line; } - - - - - - -dylanTest::LHEWeightGroupReaderHelper::LHEWeightGroupReaderHelper() { +LHEWeightGroupReaderHelper::LHEWeightGroupReaderHelper() { weightGroupStart_ = std::regex(".*.*\n*"); weightGroupEnd_ = std::regex(".*.*\n*"); - weightContent_ = std::regex("\\s*(.+)\\s*\n*"); - scaleWeightMatch_ = std::regex(".*(Central scale variation|scale_variation).*\n?"); - + std::cout << "Init" << "\n"; /// Might change later, order matters and code doesn't pick choices - // WZVBS_2017_weightInfo.txt : scale-sometimes - // WZVBS_private_weightInfo.txt : scale-sometimes - RegexCreater rc_scale_dyn_pdf; - rc_scale_dyn_pdf.addValue("muf"); - rc_scale_dyn_pdf.addValue("mur"); - rc_scale_dyn_pdf.addValue("id"); - rc_scale_dyn_pdf.addValue("dyn_scale"); - rc_scale_dyn_pdf.addValue("pdf"); - regexOptions.push_back(rc_scale_dyn_pdf); - - // WZVBS_private_weightInfo.txt : scale-sometimes / other - // WZVBS_2017_weightInfo.txt : scale-sometimes / other - // DrellYan_LO_MGMLMv242_2017_weightInfo.txt : all - RegexCreater rc_scale_pdf; - rc_scale_pdf.addValue("muf"); - rc_scale_pdf.addValue("mur"); - rc_scale_pdf.addValue("id"); - rc_scale_pdf.addValue("pdf"); - regexOptions.push_back(rc_scale_pdf); - - - RegexCreater rc_scale; - rc_scale.addValue("muf"); - rc_scale.addValue("mur"); - rc_scale.addValue("id"); - regexOptions.push_back(rc_scale); - - - // ZZTo4L_powheg_2016_weightInfo.txt : scale / missing pdf option though... - // DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt : scale - // DrellYan_LO_MGMLMv233_2016_weightInfo.txt : scale - RegexCreater rc_scaleAlt; - rc_scaleAlt.addValue("muf", {"facscfact"}, true); - rc_scaleAlt.addValue("mur", {"renscfact"}, true); - rc_scaleAlt.addValue("id"); - regexOptions.push_back(rc_scaleAlt); - - - // ZZTo4L_powheg_2016_weightInfo.txt : other - // ZZTo4L_powheg_2017_weightInfo.txt : other - // DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt : other - // DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt : other - RegexCreater rc_pdfAlt; - rc_pdfAlt.addValue("pdf", {"pdf set", "lhapdf", "pdfset"}, true); - rc_pdfAlt.addValue("id"); - regexOptions.push_back(rc_pdfAlt); - - // DrellYan_LO_MGMLMv233_2016_weightInfo.txt : other - RegexCreater rc_idOnly; - rc_idOnly.addValue("id"); - regexOptions.push_back(rc_idOnly); - - weightGroupInfo.addValue("name", {"type"}); - weightGroupInfo.addValue("combine"); + // Used for translating different naming convention to a common one + loadAttributeNames("muf", {"facscfact"}); + loadAttributeNames("mur", {"renscfact"}); + loadAttributeNames("id"); + loadAttributeNames("pdf", {"pdf set", "lhapdf", "pdfset"}); + loadAttributeNames("dyn_scale"); + loadAttributeNames("combine"); + loadAttributeNames("name", {"type"}); } -std::map -dylanTest::LHEWeightGroupReaderHelper::getMap_testAll(std::string line, std::vector options) { - for (size_t i = 0; i < options.size(); ++i) { - if(options[i].processString(line)) { - return options[i].getTagMap(); +std::map +LHEWeightGroupReaderHelper::getAttributeMap(std::string line) { + XMLDocument xmlParser; + int error = xmlParser.Parse(line.c_str()); + if (error) { + std::cout << "we have a problem!" << "\n"; + return std::map(); + //do something.... + } + + std::map attMap; + XMLElement* element = xmlParser.FirstChildElement(); + + for( const XMLAttribute* a = element->FirstAttribute(); a; a=a->Next()) { + attMap[nameConvMap[toLowerCase(a->Name())]] = a->Value(); + } + // get stuff from content of tag if it has anything. + // always assume format is AAAAA=( )BBBB ( ) => optional space + if (element->GetText() == nullptr) { + return attMap; + } + // This adds "content: " to the beginning of the content. not sure if its a big deal or? + std::string content = element->GetText(); + attMap["content"] = content; + + std::regex reg("(?:(\\S+)=\\s*(\\S+))"); + std::smatch m; + while(std::regex_search(content, m, reg)) { + std::string key = nameConvMap[toLowerCase(m.str(1))]; + if (attMap[key] != std::string()) { + if (m[2] != attMap[key]) { + std::cout << m.str(2) << " vs " << attMap[key]; + // might do something if content and attribute don't match? + // but need to be careful since some are purposefully different + // eg dyn_scale is described in content but just given a number + } + } + else { + attMap[key] = m.str(2); } + content = m.suffix().str(); } - ////// problem!!!! - std::cout << "problem!!" << "\n"; - return std::map(); + return attMap; + } +bool +LHEWeightGroupReaderHelper::isAWeight(std::string line) { + XMLDocument xmlParser; + int error = xmlParser.Parse(line.c_str()); + if (error) { + return false; + //do something.... + } + XMLElement* element = xmlParser.FirstChildElement(); + return element; +} -void -dylanTest::LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { - std::ifstream file; - file.open(filename); - - std::string line; - std::smatch matches; - // TODO: Not sure the weight indexing is right here, this seems to more or less - // count the lines which isn't quite the goal. TOCHECK! - int index = 0; - while(getline(file, line)) { - if(std::regex_match(line, weightGroupStart_)) { - std::string name = getMap_testAll(line, {weightGroupInfo})["name"]; +// void +// LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { +// std::ifstream file; +// file.open(filename); + +// std::string line; +// std::smatch matches; +// // TODO: Not sure the weight indexing is right here, this seems to more or less +// // count the lines which isn't quite the goal. TOCHECK! +// int index = 0; +// while(getline(file, line)) { +// if(std::regex_match(line, weightGroupStart_)) { +// std::string name = getMap_testAll(line, {weightGroupInfo})["name"]; - //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight - - if(std::regex_match(name, scaleWeightMatch_)) { - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); - std::cout << "scale weight" << "\n"; - } +// //TODO: Fine for now, but in general there should also be a check on the PDF weights, +// // e.g., it could be an unknown weight + +// if(std::regex_match(name, scaleWeightMatch_)) { +// weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); +// std::cout << "scale weight" << "\n"; +// } - else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); +// else +// weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); - /// file weights - while(getline(file, line) && !std::regex_match(line, weightGroupEnd_)) { - auto tagsMap = getMap_testAll(line, regexOptions); +// /// file weights +// while(getline(file, line) && !std::regex_match(line, weightGroupEnd_)) { +// auto tagsMap = getMap_testAll(line, regexOptions); - std::regex_search(line, matches, weightContent_); - // TODO: Add proper check that it worked - std::string content = matches[1].str(); - - auto& group = weightGroups_.back(); - if (group.weightType() == gen::kScaleWeights) { - float muR = std::stof(tagsMap["mur"]); - float muF = std::stof(tagsMap["muf"]); - auto& scaleGroup = static_cast(group); - scaleGroup.addContainedId(index, tagsMap["id"], line, muR, muF); - } - else - group.addContainedId(index, tagsMap["id"], line); - - index++; - } - } - } -} +// std::regex_search(line, matches, weightContent_); +// // TODO: Add proper check that it worked +// std::string content = matches[1].str(); + +// auto& group = weightGroups_.back(); +// if (group.weightType() == gen::kScaleWeights) { +// float muR = std::stof(tagsMap["mur"]); +// float muF = std::stof(tagsMap["muf"]); +// auto& scaleGroup = static_cast(group); +// scaleGroup.addContainedId(index, tagsMap["id"], line, muR, muF); +// } +// else +// group.addContainedId(index, tagsMap["id"], line); + +// index++; +// } +// } +// } +// } void -dylanTest::LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { - std::smatch matches; +LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { // TODO: Not sure the weight indexing is right here, this seems to more or less // count the lines which isn't quite the goal. TOCHECK! int index = 0; bool foundGroup = false; + for (std::string headerLine : lheHeader) { std::cout << "Header line is:" << headerLine; + headerLine = sanitizeText(headerLine); + std::cout << "Header line is:" << weightGroups_.size() << " "<< headerLine; //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight - //std::cout << "weightGroupStart_ .*.* ... match? " << static_cast(std::regex_match(headerLine, weightGroupStart_)) << std::endl; - if (std::regex_match(headerLine, weightGroupStart_)) { - //std::cout << "Adding new group for headerLine" << std::endl; - foundGroup = true; - std::string name = getMap_testAll(headerLine, {weightGroupInfo})["name"]; + // e.g., it could be an unknown weight + + if (std::regex_match(headerLine, weightGroupStart_)) { + //std::cout << "Adding new group for headerLine" << std::endl; + foundGroup = true; + std::string fullTag = headerLine + ""; + auto groupMap = getAttributeMap(fullTag); + std::string name = groupMap["name"]; - if(std::regex_match(name, scaleWeightMatch_)) { - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); - std::cout << "scale weight" << "\n"; - } - + if(name.find("Central scale variation") != std::string::npos || + name.find("scale_variation") != std::string::npos) { + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); + std::cout << "scale weight" << "\n"; + } else weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); - } - /// file weights - else if (foundGroup && !std::regex_match(headerLine, weightGroupEnd_)) { - //std::cout << "Adding new weight for headerLine" << std::endl; - auto tagsMap = getMap_testAll(headerLine, regexOptions); + } + /// file weights + else if (foundGroup && isAWeight(headerLine)) { + //std::cout << "Adding new weight for headerLine" << std::endl; + auto tagsMap = getAttributeMap(headerLine); for(auto pair: tagsMap) { std::cout << pair.first << ": " << pair.second << " | "; } - std::cout << "\n"; - std::regex_search(headerLine, matches, weightContent_); - // TODO: Add proper check that it worked - std::string content = matches[1].str(); - // std::cout << content << "\n"; - - auto& group = weightGroups_.back(); - if (group.weightType() == gen::kScaleWeights) { - float muR = std::stof(tagsMap["mur"]); - float muF = std::stof(tagsMap["muf"]); - std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; - auto& scaleGroup = static_cast(group); + std::cout << "\n"; + + std::string content = tagsMap["content"]; + if (tagsMap["id"] == std::string()) { + std::cout << "error" << "\n"; + // should do something + } + + auto& group = weightGroups_.back(); + if (group.weightType() == gen::kScaleWeights) { + if (tagsMap["mur"] == std::string() || tagsMap["muf"] == std::string()) { + std::cout << "error" << "\n"; + // something should happen here + continue; + } + float muR = std::stof(tagsMap["mur"]); + float muF = std::stof(tagsMap["muf"]); + std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; + auto& scaleGroup = static_cast(group); scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); - } - else - group.addContainedId(index, tagsMap["id"], headerLine); - index++; + } + else + group.addContainedId(index, tagsMap["id"], headerLine); + index++; } - else { + // commented out since code doesn't work with this in.... + // else if(isAWeight(headerLine)) { + // // found header. Don't know what to do with it so just shove it into a new weightgroup for now + // // do minimum work for it + // weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + // auto& group = weightGroups_.back(); + // auto tagsMap = getAttributeMap(headerLine); + // group.addContainedId(index, tagsMap["id"], headerLine); + // foundGroup = true; + // index++; + // } + + else if(std::regex_match(headerLine, weightGroupEnd_)) { foundGroup = false; + } + else { + std::cout << "problem!!!" << "\n"; } } } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 4eed2e0575ba7..9d8621fc3c216 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -372,22 +372,8 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) run.put(std::move(product)); std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); - //gen::WeightGroupInfo scaleInfo;// = getExampleScaleWeights(); - //edm::OwnVector pdfSets;// = getExamplePdfWeights(); - //gen::WeightGroupInfo scaleInfo = getExampleScaleWeightsOutOfOrder(); - - // setup file reader - //std::string LHEfilename ="cmsgrid_final.lhe"; - // std::string LHEfilename = "DrellYan_LO_MGMLMv233_2016_weightInfo.txt"; - //std::string LHEfilename = "DrellYan_LO_MGMLMv242_2017_weightInfo.txt"; - // std::string LHEfilename = "DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt"; - // std::string LHEfilename = "DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt"; - // std::string LHEfilename = "WZVBS_2017_weightInfo.txt"; // **** - std::string LHEfilename = "WZVBS_private_weightInfo.txt"; - // std::string LHEfilename = "ZZTo4L_powheg_2016_weightInfo.txt"; - // std::string LHEfilename = "ZZTo4L_powheg_2017_weightInfo.txt"; - - dylanTest::LHEWeightGroupReaderHelper reader; + + LHEWeightGroupReaderHelper reader; //reader.parseLHEFile(LHEfilename); std::cout << "Trying to find header initrwgt. Size is "; std::cout << runInfo->findHeader("initrwgt").size() << std::endl; From 1038e0df4d60d1679b531d77e3c243e0e4253987 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 6 Sep 2019 09:29:02 -0400 Subject: [PATCH 027/186] testing helper stuff as comments --- .../LHEInterface/test/test_Weights_cfg.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index aeb7882932c6e..bef001d3972f3 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -59,13 +59,19 @@ process.GlobalTag = GlobalTag(process.GlobalTag, '102X_upgrade2018_realistic_v11', '') process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", - args = cms.vstring('/afs/hep.wisc.edu/home/kdlong/public/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), - nEvents = cms.untracked.uint32(10), + args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), + nEvents = cms.untracked.uint32(10), numberOfParameters = cms.uint32(1), outputFile = cms.string('cmsgrid_final.lhe'), scriptName = cms.FileInPath('GeneratorInterface/LHEInterface/data/run_generic_tarball_cvmfs.sh') ) +# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), +# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), +# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_4L_NNPDF30_13TeV_tarballDummy.tar.gz'), +# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_slc6_amd64_gcc630_CMSSW_9_3_0_ZZTo4L2017_pdf306000Dummy.tgz'), + + # Path and EndPath definitions process.lhe_step = cms.Path(process.externalLHEProducer) @@ -78,6 +84,8 @@ associatePatAlgosToolsTask(process) + + # Customisation from command line # Add early deletion of temporary data products to reduce peak memory need From f1a3ae406e49d6c904e27d83efa3050452aeb96b Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 11 Sep 2019 08:53:53 -0400 Subject: [PATCH 028/186] A bit of cleanup --- .../interface/LHEWeightGroupReaderHelper.h | 122 ++++++------------ .../LHEInterface/test/test_Weights_cfg.py | 3 +- 2 files changed, 38 insertions(+), 87 deletions(-) diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h index 38315664782aa..893c528e20379 100644 --- a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h +++ b/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h @@ -155,63 +155,13 @@ LHEWeightGroupReaderHelper::isAWeight(std::string line) { XMLDocument xmlParser; int error = xmlParser.Parse(line.c_str()); if (error) { - return false; - //do something.... + return false; + //do something.... } XMLElement* element = xmlParser.FirstChildElement(); return element; } -// void -// LHEWeightGroupReaderHelper::parseLHEFile(std::string filename) { -// std::ifstream file; -// file.open(filename); - -// std::string line; -// std::smatch matches; -// // TODO: Not sure the weight indexing is right here, this seems to more or less -// // count the lines which isn't quite the goal. TOCHECK! -// int index = 0; -// while(getline(file, line)) { -// if(std::regex_match(line, weightGroupStart_)) { -// std::string name = getMap_testAll(line, {weightGroupInfo})["name"]; - -// //TODO: Fine for now, but in general there should also be a check on the PDF weights, -// // e.g., it could be an unknown weight - -// if(std::regex_match(name, scaleWeightMatch_)) { -// weightGroups_.push_back(new gen::ScaleWeightGroupInfo(line)); -// std::cout << "scale weight" << "\n"; -// } - - -// else -// weightGroups_.push_back(new gen::PdfWeightGroupInfo(line)); - -// /// file weights -// while(getline(file, line) && !std::regex_match(line, weightGroupEnd_)) { -// auto tagsMap = getMap_testAll(line, regexOptions); - -// std::regex_search(line, matches, weightContent_); -// // TODO: Add proper check that it worked -// std::string content = matches[1].str(); - -// auto& group = weightGroups_.back(); -// if (group.weightType() == gen::kScaleWeights) { -// float muR = std::stof(tagsMap["mur"]); -// float muF = std::stof(tagsMap["muf"]); -// auto& scaleGroup = static_cast(group); -// scaleGroup.addContainedId(index, tagsMap["id"], line, muR, muF); -// } -// else -// group.addContainedId(index, tagsMap["id"], line); - -// index++; -// } -// } -// } -// } - void LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { // TODO: Not sure the weight indexing is right here, this seems to more or less @@ -220,11 +170,11 @@ LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector bool foundGroup = false; for (std::string headerLine : lheHeader) { - std::cout << "Header line is:" << headerLine; - headerLine = sanitizeText(headerLine); - std::cout << "Header line is:" << weightGroups_.size() << " "<< headerLine; - //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight + std::cout << "Header line is:" << headerLine; + headerLine = sanitizeText(headerLine); + std::cout << "Header line is:" << weightGroups_.size() << " "<< headerLine; + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight if (std::regex_match(headerLine, weightGroupStart_)) { //std::cout << "Adding new group for headerLine" << std::endl; @@ -235,62 +185,62 @@ LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector if(name.find("Central scale variation") != std::string::npos || name.find("scale_variation") != std::string::npos) { - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(headerLine)); - std::cout << "scale weight" << "\n"; + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(name)); } - else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + else + weightGroups_.push_back(new gen::PdfWeightGroupInfo(name)); } /// file weights else if (foundGroup && isAWeight(headerLine)) { //std::cout << "Adding new weight for headerLine" << std::endl; auto tagsMap = getAttributeMap(headerLine); - for(auto pair: tagsMap) { - std::cout << pair.first << ": " << pair.second << " | "; - } + for(auto pair: tagsMap) { + std::cout << pair.first << ": " << pair.second << " | "; + } std::cout << "\n"; std::string content = tagsMap["content"]; - if (tagsMap["id"] == std::string()) { + if (tagsMap["id"].empty()) { std::cout << "error" << "\n"; // should do something } auto& group = weightGroups_.back(); if (group.weightType() == gen::kScaleWeights) { - if (tagsMap["mur"] == std::string() || tagsMap["muf"] == std::string()) { + if (tagsMap["mur"].empty() || tagsMap["muf"].empty()) { std::cout << "error" << "\n"; // something should happen here - continue; + continue; } float muR = std::stof(tagsMap["mur"]); float muF = std::stof(tagsMap["muf"]); std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; auto& scaleGroup = static_cast(group); - scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); + scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); } else group.addContainedId(index, tagsMap["id"], headerLine); + index++; - } - // commented out since code doesn't work with this in.... - // else if(isAWeight(headerLine)) { - // // found header. Don't know what to do with it so just shove it into a new weightgroup for now - // // do minimum work for it - // weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); - // auto& group = weightGroups_.back(); - // auto tagsMap = getAttributeMap(headerLine); - // group.addContainedId(index, tagsMap["id"], headerLine); - // foundGroup = true; - // index++; - // } + } + // commented out since code doesn't work with this in.... + // else if(isAWeight(headerLine)) { + // // found header. Don't know what to do with it so just shove it into a new weightgroup for now + // // do minimum work for it + // weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + // auto& group = weightGroups_.back(); + // auto tagsMap = getAttributeMap(headerLine); + // group.addContainedId(index, tagsMap["id"], headerLine); + // foundGroup = true; + // index++; + // } - else if(std::regex_match(headerLine, weightGroupEnd_)) { - foundGroup = false; - } - else { - std::cout << "problem!!!" << "\n"; - } + else if(std::regex_match(headerLine, weightGroupEnd_)) { + foundGroup = false; + } + else { + std::cout << "problem!!!" << "\n"; + } } } diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index bef001d3972f3..fb6a1f58c66b4 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -59,7 +59,8 @@ process.GlobalTag = GlobalTag(process.GlobalTag, '102X_upgrade2018_realistic_v11', '') process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", - args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), + #args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), + args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_4L_NNPDF30_13TeV_tarballDummy.tar.gz'), nEvents = cms.untracked.uint32(10), numberOfParameters = cms.uint32(1), outputFile = cms.string('cmsgrid_final.lhe'), From 79efbe6f198d3826f4446afc57e154f37b4146b9 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 18 Sep 2019 17:48:51 -0400 Subject: [PATCH 029/186] Adding a dummy analyzer for weights, need to clean up organization --- .../interface/ScaleWeightGroupInfo.h | 6 +- .../TestAnalyzer/plugins/BuildFile.xml | 6 + .../TestAnalyzer/plugins/TestAnalyzer.cc | 162 ++++++++++++++++++ .../TestAnalyzer/test/BuildFile.xml | 4 + .../test/test_catch2_TestAnalyzer.cc | 51 ++++++ .../TestAnalyzer/test/test_catch2_main.cc | 2 + TestWeightInfo/TestAnalyzer/test/test_cfg.py | 17 ++ 7 files changed, 245 insertions(+), 3 deletions(-) create mode 100644 TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml create mode 100644 TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc create mode 100644 TestWeightInfo/TestAnalyzer/test/BuildFile.xml create mode 100644 TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc create mode 100644 TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc create mode 100644 TestWeightInfo/TestAnalyzer/test/test_cfg.py diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 8f5a76f12cdcb..ec9b9723343a2 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -6,7 +6,7 @@ namespace gen { class ScaleWeightGroupInfo : public WeightGroupInfo { private: - bool isFuncationFormVar_; + bool isFunctionalFormVar_; size_t icentral_; size_t imuR1muF2_; size_t imuR1muF05_; @@ -21,7 +21,7 @@ namespace gen { ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { weightType_ = kScaleWeights; - isFuncationFormVar_ = false; + isFunctionalFormVar_ = false; icentral_ = 0; imuR1muF2_ = 0; imuR1muF05_ = 0; @@ -47,7 +47,7 @@ namespace gen { // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); - void setIsFunctionalFormVariation(bool functionalVar) {isFuncationFormVar_ = functionalVar; } + void setIsFunctionalFormVariation(bool functionalVar) {isFunctionalFormVar_ = functionalVar; } size_t centralIndex() {return icentral_; } size_t muR1muF2Index() { return imuR1muF2_; } size_t muR1muF05Index() { return imuR1muF05_; } diff --git a/TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml b/TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml new file mode 100644 index 0000000000000..29ffa306d8174 --- /dev/null +++ b/TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc new file mode 100644 index 0000000000000..fea4414ac270b --- /dev/null +++ b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc @@ -0,0 +1,162 @@ +// -*- C++ -*- +// +// Package: TestWeightInfo/TestAnalyzer +// Class: TestAnalyzer +// +/**\class TestAnalyzer TestAnalyzer.cc TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc + + Description: [one line class summary] + + Implementation: + [Notes on implementation] +*/ +// +// Original Author: Kenneth David Long +// Created: Wed, 18 Sep 2019 13:44:58 GMT +// +// + + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Run.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/ParameterSet.h" + #include "FWCore/Utilities/interface/InputTag.h" + #include "DataFormats/TrackReco/interface/Track.h" + #include "DataFormats/TrackReco/interface/TrackFwd.h" + #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" + #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +// +// class declaration +// + +// If the analyzer does not use TFileService, please remove +// the template argument to the base class so the class inherits +// from edm::one::EDAnalyzer<> +// This will improve performance in multithreaded jobs. + + +using reco::TrackCollection; + +class TestAnalyzer : public edm::one::EDAnalyzer { + public: + explicit TestAnalyzer(const edm::ParameterSet&); + ~TestAnalyzer(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + + private: + edm::EDGetTokenT lheWeightInfoToken_; + virtual void beginJob() override; + void beginRun(edm::Run const& iRun, edm::EventSetup const&) override; + void endRun(edm::Run const& iRun, edm::EventSetup const&) override; + virtual void analyze(const edm::Event&, const edm::EventSetup&) override; + virtual void endJob() override; + + // ----------member data --------------------------- +}; + +// +// constants, enums and typedefs +// + +// +// static data member definitions +// + +// +// constructors and destructor +// +TestAnalyzer::TestAnalyzer(const edm::ParameterSet& iConfig) : + lheWeightInfoToken_(consumes(edm::InputTag("externalLHEProducer"))) +{ + //now do what ever initialization is needed + +} + + +TestAnalyzer::~TestAnalyzer() +{ + + // do anything here that needs to be done at desctruction time + // (e.g. close files, deallocate resources etc.) + +} + + +// +// member functions +// + +// ------------ method called for each event ------------ +void +TestAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) +{ + std::cerr << "Event" << std::endl; +} + +#ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE + ESHandle pSetup; + iSetup.get().get(pSetup); +#endif + + +// ------------ method called once each job just before starting event loop ------------ +void +TestAnalyzer::beginJob() +{ +} + +// ------------ method called once each job just after ending the event loop ------------ +void +TestAnalyzer::endJob() +{ +} + +void TestAnalyzer::endRun(edm::Run const& iRun, edm::EventSetup const&) {} + +void TestAnalyzer::beginRun(edm::Run const& iRun, edm::EventSetup const&) +{ + edm::Handle lheWeightInfoHandle; + iRun.getByToken( lheWeightInfoToken_, lheWeightInfoHandle ); + + const LHEWeightInfoProduct* lheProd = lheWeightInfoHandle.product(); + edm::OwnVector groups = lheProd->allWeightGroupsInfo(); + for (const auto& group : groups) { + std::cout << "Type of the weight is " << group.weightType() << " name is " << group.name() << std::endl; + if (group.weightType() == 0) { + //gen::ScaleWeightGroupInfo* scaleInfo = group.clone();//static_cast(group); + gen::ScaleWeightGroupInfo* scaleInfo = static_cast(&group); + std::cout << "muR05muF1 " << scaleInfo->muR05muF1Index() << std::endl; + std::cout << "muR05muF05 " << scaleInfo->muR05muF05Index() << std::endl; + } + } +} +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void +TestAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + //The following says we do not know what parameters are allowed so do no validation + // Please change this to state exactly what you do use, even if it is no parameters + edm::ParameterSetDescription desc; + desc.setUnknown(); + descriptions.addDefault(desc); + + //Specify that only 'tracks' is allowed + //To use, remove the default given above and uncomment below + //ParameterSetDescription desc; + //desc.addUntracked("tracks","ctfWithMaterialTracks"); + //descriptions.addDefault(desc); +} + +//define this as a plug-in +DEFINE_FWK_MODULE(TestAnalyzer); diff --git a/TestWeightInfo/TestAnalyzer/test/BuildFile.xml b/TestWeightInfo/TestAnalyzer/test/BuildFile.xml new file mode 100644 index 0000000000000..853ca18422452 --- /dev/null +++ b/TestWeightInfo/TestAnalyzer/test/BuildFile.xml @@ -0,0 +1,4 @@ + + + + diff --git a/TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc b/TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc new file mode 100644 index 0000000000000..fa1c318a56534 --- /dev/null +++ b/TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc @@ -0,0 +1,51 @@ +#include "catch.hpp" +#include "FWCore/TestProcessor/interface/TestProcessor.h" +#include "FWCore/Utilities/interface/Exception.h" + +static constexpr auto s_tag = "[TestAnalyzer]"; + +TEST_CASE("Standard checks of TestAnalyzer", s_tag) { + const std::string baseConfig{ +R"_(from FWCore.TestProcessor.TestProcess import * +process = TestProcess() +process.toTest = cms.EDProducer("TestAnalyzer" +#necessary configuration parameters + ) +process.moduleToTest(process.toTest) +)_" + }; + + edm::test::TestProcessor::Config config{ baseConfig }; + SECTION("base configuration is OK") { + REQUIRE_NOTHROW(edm::test::TestProcessor(config)); + } + + SECTION("No event data") { + edm::test::TestProcessor tester(config); + + REQUIRE_THROWS_AS(tester.test(), cms::Exception); + //If the module does not throw when given no data, substitute + //REQUIRE_NOTHROW for REQUIRE_THROWS_AS + } + + SECTION("beginJob and endJob only") { + edm::test::TestProcessor tester(config); + + REQUIRE_NOTHROW(tester.testBeginAndEndJobOnly()); + } + + SECTION("Run with no LuminosityBlocks") { + edm::test::TestProcessor tester(config); + + REQUIRE_NOTHROW(tester.testRunWithNoLuminosityBlocks()); + } + + SECTION("LuminosityBlock with no Events") { + edm::test::TestProcessor tester(config); + + REQUIRE_NOTHROW(tester.testLuminosityBlockWithNoEvents()); + } + +} + +//Add additional TEST_CASEs to exercise the modules capabilities diff --git a/TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc b/TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc new file mode 100644 index 0000000000000..0c7c351f437f5 --- /dev/null +++ b/TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc @@ -0,0 +1,2 @@ +#define CATCH_CONFIG_MAIN +#include "catch.hpp" diff --git a/TestWeightInfo/TestAnalyzer/test/test_cfg.py b/TestWeightInfo/TestAnalyzer/test/test_cfg.py new file mode 100644 index 0000000000000..cdb44a5404eb5 --- /dev/null +++ b/TestWeightInfo/TestAnalyzer/test/test_cfg.py @@ -0,0 +1,17 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("test") + +process.source = cms.Source("PoolSource", + # replace 'myfile.root' with the source file you want to use + fileNames = cms.untracked.vstring("file:HIG-RunIIFall18wmLHEGS-00509.root") + ) + +process.TFileService = cms.Service("TFileService", + fileName = cms.string("test.root") +) + +process.testWeights = cms.EDAnalyzer("TestAnalyzer") + +process.p = cms.Path(process.testWeights) + From 07eb97abc8336ed0006db49d6a46c6b229ac2d8f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 18 Sep 2019 17:58:34 -0400 Subject: [PATCH 030/186] Use dynamic cast, but then it segfaults --- .../interface/ScaleWeightGroupInfo.h | 18 +++++++++--------- .../TestAnalyzer/plugins/TestAnalyzer.cc | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index ec9b9723343a2..543b2b6d976e3 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -48,15 +48,15 @@ namespace gen { // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) {isFunctionalFormVar_ = functionalVar; } - size_t centralIndex() {return icentral_; } - size_t muR1muF2Index() { return imuR1muF2_; } - size_t muR1muF05Index() { return imuR1muF05_; } - size_t muR2muF05Index() { return imuR2muF05_; } - size_t muR2muF1Index() { return imuR2muF1_; } - size_t muR2muF2Index() { return imuR2muF2_; } - size_t muR05muF05Index() { return imuR05muF05_; } - size_t muR05muF1Index() { return imuR05muF1_; } - size_t muR05muF2Index() { return imuR05muF2_; } + size_t centralIndex() const {return icentral_; } + size_t muR1muF2Index() const { return imuR1muF2_; } + size_t muR1muF05Index() const { return imuR1muF05_; } + size_t muR2muF05Index() const { return imuR2muF05_; } + size_t muR2muF1Index() const { return imuR2muF1_; } + size_t muR2muF2Index() const { return imuR2muF2_; } + size_t muR05muF05Index() const { return imuR05muF05_; } + size_t muR05muF1Index() const { return imuR05muF1_; } + size_t muR05muF2Index() const { return imuR05muF2_; } }; } diff --git a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc index fea4414ac270b..3c8d7065faf6c 100644 --- a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc +++ b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc @@ -134,9 +134,9 @@ void TestAnalyzer::beginRun(edm::Run const& iRun, edm::EventSetup const&) edm::OwnVector groups = lheProd->allWeightGroupsInfo(); for (const auto& group : groups) { std::cout << "Type of the weight is " << group.weightType() << " name is " << group.name() << std::endl; - if (group.weightType() == 0) { + if (group.weightType() == 1) { //gen::ScaleWeightGroupInfo* scaleInfo = group.clone();//static_cast(group); - gen::ScaleWeightGroupInfo* scaleInfo = static_cast(&group); + const gen::ScaleWeightGroupInfo* scaleInfo = dynamic_cast(&group); std::cout << "muR05muF1 " << scaleInfo->muR05muF1Index() << std::endl; std::cout << "muR05muF05 " << scaleInfo->muR05muF05Index() << std::endl; } From 5668f0da242c77aa8e6a38aa25d59e9263d500cd Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 20 Sep 2019 17:14:32 -0400 Subject: [PATCH 031/186] Incorporate changes to make OwnVector work --- .../plugins/ExternalLHEProducer.cc | 37 ++++++++++--------- .../LHEInterface/plugins/LHESource.cc | 4 +- .../LHEInterface/test/testWeights.py | 9 +++++ .../LHEInterface/test/test_Weights_cfg.py | 9 ----- .../interface/LHEWeightInfoProduct.h | 7 ++-- .../interface/PdfWeightGroupInfo.h | 2 +- .../interface/ScaleWeightGroupInfo.h | 2 +- .../interface/WeightGroupInfo.h | 12 +++--- .../src/LHEWeightInfoProduct.cc | 10 ++--- .../src/PdfWeightGroupInfo.cc | 1 + .../src/ScaleWeightGroupInfo.cc | 1 + .../GeneratorProducts/src/WeightGroupInfo.cc | 11 +++--- .../GeneratorProducts/src/classes_def.xml | 9 ++++- 13 files changed, 64 insertions(+), 50 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 0bea679e0cb11..9eaf6bc5c6029 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -107,10 +107,10 @@ class ExternalLHEProducer : public edm::one::EDProducer reader_; std::shared_ptr runInfoLast; std::shared_ptr runInfo; + std::unique_ptr weightInfoProduct_; std::shared_ptr partonLevel; boost::ptr_deque runInfoProducts; bool wasMerged; - edm::OwnVector weightGroups_; class FileCloseSentry : private boost::noncopyable { public: @@ -165,7 +165,7 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) : produces(); produces(); produces(); - produces(); + produces(); } @@ -208,17 +208,18 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); - std::unique_ptr weightProduct(new LHEWeightProduct); - weightProduct->setNumWeightSets(weightGroups_.size()); + auto weightProduct = std::make_unique(); + weightProduct->setNumWeightSets(weightInfoProduct_->numberOfGroups()); int weightGroupIndex = 0; int weightNum = 0; for (const auto& weight : partonLevel->weights()) { weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); - if (weightGroupIndex < 0 || weightGroupIndex >= static_cast(weightGroups_.size())) { - continue; + if (weightGroupIndex < 0 || weightGroupIndex >= weightInfoProduct_->numberOfGroups()) { + // Needs to be properly handled + throw std::range_error("Unmatched weight"); } - auto group = weightGroups_[weightGroupIndex]; - int entry = group.weightVectorEntry(weight.id, weightNum); + auto* group = weightInfoProduct_->orderedWeightGroupInfo(weightGroupIndex); + int entry = group->weightVectorEntry(weight.id, weightNum); weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); weightNum++; } @@ -371,16 +372,15 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) run.put(std::move(product)); - std::unique_ptr weightInfoProduct(new LHEWeightInfoProduct); + weightInfoProduct_ = std::make_unique(); LHEWeightGroupReaderHelper reader; //reader.parseLHEFile(LHEfilename); reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); - for (auto weightGroup : reader.getWeightGroups()) - weightInfoProduct->addWeightGroupInfo(weightGroup); - weightGroups_ = weightInfoProduct->allWeightGroupsInfo(); - run.put(std::move(weightInfoProduct)); + for (auto& weightGroup : reader.getWeightGroups()) { + weightInfoProduct_->addWeightGroupInfo(weightGroup.clone()); + } runInfo.reset(); } @@ -405,6 +405,7 @@ ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) } reader_.reset(); + run.put(std::move(weightInfoProduct_)); if (unlink(outputFile_.c_str())) { throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; @@ -540,17 +541,19 @@ int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int // Start search at previous index, under expectation of ordered weights previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; for (int index = previousGroupIndex; - index < std::min(index+1, static_cast(weightGroups_.size())); index++) { - gen::WeightGroupInfo& weightGroup = weightGroups_[previousGroupIndex]; + index < std::min(index+1, static_cast(weightInfoProduct_->numberOfGroups())); index++) { + const gen::WeightGroupInfo* weightGroup = weightInfoProduct_->orderedWeightGroupInfo(index); + // index < std::min(index+1, static_cast(weightGroups_.size())); index++) { + //gen::WeightGroupInfo& weightGroup = weightGroups_[previousGroupIndex]; // Fast search assuming order is not perturbed outside of weight group - if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { + if (weightGroup->indexInRange(weightIndex) && weightGroup->containsWeight(wgtId, weightIndex)) { return static_cast(index); } } // Fall back to unordered search int counter = 0; - for (auto weightGroup : weightGroups_) { + for (auto weightGroup : weightInfoProduct_->allWeightGroupsInfo()) { if (weightGroup.containsWeight(wgtId, weightIndex)) return counter; counter++; diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index a238a0fc613ca..03402f473651f 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -147,8 +147,8 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { ); cenPdfInfo.setWeightType(gen::kPdfWeights); - product->addWeightGroupInfo(scaleInfo); - product->addWeightGroupInfo(cenPdfInfo); + product->addWeightGroupInfo(&scaleInfo); + product->addWeightGroupInfo(&cenPdfInfo); std::unique_ptr rdp(new edm::Wrapper(std::move(product))); iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); } diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py index 12e2961868af9..630821f3947ce 100644 --- a/GeneratorInterface/LHEInterface/test/testWeights.py +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -1,4 +1,5 @@ from DataFormats.FWLite import Events,Handle,Runs +import ROOT source = "externalLHEProducer" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: @@ -19,6 +20,14 @@ for j, weights in enumerate(weightInfo.weights()): print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 matching = weightInfoProd.orderedWeightGroupInfo(j) + print matching + if matching.weightType() == 1: + print " muR1muF05Index", matching.muR1muF05Index() + print " muR1muF1Index", matching.centralIndex() + print " muR2muF2Index", matching.muR2muF2Index() + print " muR05muF05Index", matching.muR05muF05Index() + else: + print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) print "-"*80 for i,weight in enumerate(weights): diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index fb6a1f58c66b4..f4cbf5ce94694 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -11,14 +11,9 @@ # import of standard configurations process.load('Configuration.StandardSequences.Services_cff') -process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') process.load('FWCore.MessageService.MessageLogger_cfi') process.load('Configuration.EventContent.EventContent_cff') -process.load('SimGeneral.MixingModule.mixNoPU_cfi') -process.load('Configuration.StandardSequences.GeometryRecoDB_cff') -process.load('Configuration.StandardSequences.MagneticField_cff') process.load('Configuration.StandardSequences.EndOfProcess_cff') -process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10) @@ -54,10 +49,6 @@ # Additional output definition -# Other statements -from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, '102X_upgrade2018_realistic_v11', '') - process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", #args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_4L_NNPDF30_13TeV_tarballDummy.tar.gz'), diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index f0fa291ab3423..9ed6c8b1927e9 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -23,9 +23,10 @@ class LHEWeightInfoProduct { LHEWeightInfoProduct& operator=(LHEWeightInfoProduct &&other); const edm::OwnVector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo& containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo& orderedWeightGroupInfo(int index) const; - void addWeightGroupInfo(gen::WeightGroupInfo& info); + const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; + const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; + void addWeightGroupInfo(gen::WeightGroupInfo* info); + const int numberOfGroups() const { return weightGroupsInfo_.size(); } private: edm::OwnVector weightGroupsInfo_; diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 5f1e5559f46e2..6a3ea022609de 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -27,7 +27,7 @@ namespace gen { } virtual ~PdfWeightGroupInfo() override {} void copy(const PdfWeightGroupInfo &other); - PdfWeightGroupInfo* clone() const; + virtual PdfWeightGroupInfo* clone() const override; void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 543b2b6d976e3..d3a93b59744d6 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -40,7 +40,7 @@ namespace gen { } virtual ~ScaleWeightGroupInfo() override {} void copy(const ScaleWeightGroupInfo &other); - ScaleWeightGroupInfo* clone() const; + virtual ScaleWeightGroupInfo* clone() const override; void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index a815ec762f7f8..a2a645740cc9b 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -40,12 +40,12 @@ namespace gen { } virtual ~WeightGroupInfo() {}; void copy(const WeightGroupInfo &other); - WeightGroupInfo* clone() const; - WeightMetaInfo weightMetaInfo(int weightEntry); - WeightMetaInfo weightMetaInfo(std::string wgtId); - int weightVectorEntry(const std::string& wgtId); - int containsWeight(const std::string& wgtId, int weightEntry); - int weightVectorEntry(const std::string& wgtId, int weightEntry); + virtual WeightGroupInfo* clone() const; + WeightMetaInfo weightMetaInfo(int weightEntry) const; + WeightMetaInfo weightMetaInfo(std::string wgtId) const; + int weightVectorEntry(const std::string& wgtId) const; + int containsWeight(const std::string& wgtId, int weightEntry) const; + int weightVectorEntry(const std::string& wgtId, int weightEntry) const; void addContainedId(int weightEntry, std::string id, std::string label); std::vector containedIds() const; bool indexInRange(int index) const; diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc index 78c7d858f65f6..9e1f666325a75 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -21,20 +21,20 @@ const edm::OwnVector& LHEWeightInfoProduct::allWeightGroup return weightGroupsInfo_; } -const gen::WeightGroupInfo& LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { +const gen::WeightGroupInfo* LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { for (const auto& weightGroup : weightGroupsInfo_) { if (weightGroup.indexInRange(index)) - return weightGroup; + return &weightGroup; } throw std::domain_error("Failed to find containing weight group"); } -const gen::WeightGroupInfo& LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { +const gen::WeightGroupInfo* LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) throw std::range_error("Weight index out of range!"); - return weightGroupsInfo_[weightGroupIndex]; + return &weightGroupsInfo_[weightGroupIndex]; } -void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo& info) { +void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 4e0175bf9629c..0f479619c05d9 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -1,4 +1,5 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include namespace gen { void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 5d2e392d89164..c65c35ad03afd 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -1,5 +1,6 @@ #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include +#include namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index a9cbccfdea6f9..34812078bef6b 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -1,6 +1,7 @@ #include #include #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include namespace gen { void WeightGroupInfo::copy(const WeightGroupInfo &other) { @@ -16,24 +17,24 @@ namespace gen { return new WeightGroupInfo(*this); } - WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) { + WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } - WeightMetaInfo WeightGroupInfo::weightMetaInfo(std::string wgtId) { + WeightMetaInfo WeightGroupInfo::weightMetaInfo(std::string wgtId) const { int weightEntry = weightVectorEntry(wgtId); return idsContained_.at(weightEntry); } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) { + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } - int WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) { + int WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { return weightVectorEntry(wgtId, weightEntry) != -1; } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) { + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { int entry = -1; if (!indexInRange(weightEntry)) { size_t orderedEntry = weightEntry - firstId_; diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 0429c3c799790..8b2d802446db0 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -234,14 +234,21 @@ - + + + + + + + + From 8c0c98e491fced903b41919d38e4336fbd963f74 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 20 Sep 2019 17:46:49 -0400 Subject: [PATCH 032/186] Fix setting of ScaleWeight indices --- .../plugins/ExternalLHEProducer.cc | 5 ++ .../LHEInterface/test/testWeights.py | 9 ++- .../interface/ScaleWeightGroupInfo.h | 56 +++++++++---------- .../src/ScaleWeightGroupInfo.cc | 36 ++++++------ 4 files changed, 55 insertions(+), 51 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 9eaf6bc5c6029..67ec31046f1ee 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -379,6 +379,11 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); for (auto& weightGroup : reader.getWeightGroups()) { + if (weightGroup.weightType() == 1) { + gen::ScaleWeightGroupInfo* group = static_cast(weightGroup.clone()); + std::cout << "MuR1MuF2Index is " << group->muR1muF2Index(); + } + weightInfoProduct_->addWeightGroupInfo(weightGroup.clone()); } diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py index 630821f3947ce..c145a34497c11 100644 --- a/GeneratorInterface/LHEInterface/test/testWeights.py +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -20,12 +20,11 @@ for j, weights in enumerate(weightInfo.weights()): print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 matching = weightInfoProd.orderedWeightGroupInfo(j) - print matching + print "Group is", matching if matching.weightType() == 1: - print " muR1muF05Index", matching.muR1muF05Index() - print " muR1muF1Index", matching.centralIndex() - print " muR2muF2Index", matching.muR2muF2Index() - print " muR05muF05Index", matching.muR05muF05Index() + for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: + name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" + print name, getattr(matching, name)() else: print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index d3a93b59744d6..00891a219db23 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -7,31 +7,31 @@ namespace gen { class ScaleWeightGroupInfo : public WeightGroupInfo { private: bool isFunctionalFormVar_; - size_t icentral_; - size_t imuR1muF2_; - size_t imuR1muF05_; - size_t imuR2muF05_; - size_t imuR2muF1_; - size_t imuR2muF2_; - size_t imuR05muF05_; - size_t imuR05muF1_; - size_t imuR05muF2_; + size_t centralIndex_; + size_t muR1muF2Index_; + size_t muR1muF05Index_; + size_t muR2muF05Index_; + size_t muR2muF1Index_; + size_t muR2muF2Index_; + size_t muR05muF05Index_; + size_t muR05muF1Index_; + size_t muR05muF2Index_; public: ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { weightType_ = kScaleWeights; isFunctionalFormVar_ = false; - icentral_ = 0; - imuR1muF2_ = 0; - imuR1muF05_ = 0; - imuR2muF05_ = 0; - imuR2muF1_ = 0; - imuR2muF2_ = 0; - imuR2muF05_ = 0; - imuR05muF05_ = 0; - imuR05muF1_ = 0; - imuR05muF2_ = 0; + centralIndex_ = 0; + muR1muF2Index_ = 0; + muR1muF05Index_ = 0; + muR2muF05Index_ = 0; + muR2muF1Index_ = 0; + muR2muF2Index_ = 0; + muR2muF05Index_ = 0; + muR05muF05Index_ = 0; + muR05muF1Index_ = 0; + muR05muF2Index_ = 0; } ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) { } @@ -48,15 +48,15 @@ namespace gen { // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) {isFunctionalFormVar_ = functionalVar; } - size_t centralIndex() const {return icentral_; } - size_t muR1muF2Index() const { return imuR1muF2_; } - size_t muR1muF05Index() const { return imuR1muF05_; } - size_t muR2muF05Index() const { return imuR2muF05_; } - size_t muR2muF1Index() const { return imuR2muF1_; } - size_t muR2muF2Index() const { return imuR2muF2_; } - size_t muR05muF05Index() const { return imuR05muF05_; } - size_t muR05muF1Index() const { return imuR05muF1_; } - size_t muR05muF2Index() const { return imuR05muF2_; } + size_t centralIndex() const {return centralIndex_; } + size_t muR1muF2Index() const { return muR1muF2Index_; } + size_t muR1muF05Index() const { return muR1muF05Index_; } + size_t muR2muF05Index() const { return muR2muF05Index_; } + size_t muR2muF1Index() const { return muR2muF1Index_; } + size_t muR2muF2Index() const { return muR2muF2Index_; } + size_t muR05muF05Index() const { return muR05muF05Index_; } + size_t muR05muF1Index() const { return muR05muF1Index_; } + size_t muR05muF2Index() const { return muR05muF2Index_; } }; } diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index c65c35ad03afd..e14ace5fb750b 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -4,15 +4,15 @@ namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { - icentral_ = centralIndex(); - imuR1muF2_ = muR1muF2Index(); - imuR1muF05_ = muR1muF05Index(); - imuR2muF05_ = muR2muF05Index(); - imuR2muF1_ = muR2muF1Index(); - imuR2muF2_ = muR2muF2Index(); - imuR2muF05_ = muR2muF05Index(); - imuR05muF1_ = muR05muF1Index(); - imuR05muF2_ = muR05muF2Index(); + centralIndex_ = other.centralIndex_; + muR1muF2Index_ = other.muR1muF2Index_; + muR1muF05Index_ = other.muR1muF05Index_; + muR2muF05Index_ = other.muR2muF05Index_; + muR2muF1Index_ = other.muR2muF1Index_; + muR2muF2Index_ = other.muR2muF2Index_; + muR2muF05Index_ = other.muR2muF05Index_; + muR05muF1Index_ = other.muR05muF1Index_; + muR05muF2Index_ = other.muR05muF2Index_; WeightGroupInfo::copy(other); } @@ -28,23 +28,23 @@ namespace gen { void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo info, float muR, float muF) { if (muR == 0.5 && muF == 0.5) - imuR05muF05_ = info.localIndex; + muR05muF05Index_ = info.localIndex; else if (muR == 0.5 && muF == 1.0) - imuR05muF1_ = info.localIndex; + muR05muF1Index_ = info.localIndex; else if (muR == 0.5 && muF == 2.0) - imuR05muF2_ = info.localIndex; + muR05muF2Index_ = info.localIndex; else if (muR == 1.0 && muF == 0.5) - imuR1muF05_ = info.localIndex; + muR1muF05Index_ = info.localIndex; else if (muR == 1.0 && muF == 1.0) - icentral_ = info.localIndex; + centralIndex_ = info.localIndex; else if (muR == 1.0 && muF == 2.0) - imuR1muF2_ = info.localIndex; + muR1muF2Index_ = info.localIndex; else if (muR == 2.0 && muF == 0.5) - imuR2muF05_ = info.localIndex; + muR2muF05Index_ = info.localIndex; else if (muR == 2.0 && muF == 1.0) - imuR2muF1_ = info.localIndex; + muR2muF1Index_ = info.localIndex; else if (muR == 2.0 && muF == 2.0) - imuR2muF2_ = info.localIndex; + muR2muF2Index_ = info.localIndex; else throw std::invalid_argument("Invalid muF and muR variation is not a factor of two from central value"); } From 8744839eeeb32b42c8cd880765daa725f208eaf8 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 20 Sep 2019 19:23:17 -0400 Subject: [PATCH 033/186] Add unknown weightgroup --- .../interface/PdfWeightGroupInfo.h | 4 ++++ .../interface/UnknownWeightGroupInfo.h | 22 +++++++++++++++++++ .../interface/WeightGroupInfo.h | 4 ++++ .../src/PdfWeightGroupInfo.cc | 1 - .../src/ScaleWeightGroupInfo.cc | 3 +-- .../src/UnknownWeightGroupInfo.cc | 8 +++++++ .../GeneratorProducts/src/WeightGroupInfo.cc | 5 +++-- .../GeneratorProducts/src/classes.h | 1 + .../GeneratorProducts/src/classes_def.xml | 7 ++---- 9 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h create mode 100644 SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 6a3ea022609de..4f853103d4241 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -16,6 +16,7 @@ namespace gen { bool hasAlphasVars_; int alphasUpIndex_; int alphasDownIndex_; + std::vector lhapdfIdsContained_; public: PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = kPdfWeights; } PdfWeightGroupInfo(std::string header, std::string name) : @@ -35,8 +36,11 @@ namespace gen { void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } + bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } int alphasUpIndex() const { return alphasUpIndex_; } int alphasDownIndex() const { return alphasDownIndex_; } + void addLhapdfId(int lhaid) { lhapdfIdsContained_.push_back(lhaid); } + std::vector getLhapdfIdsContained() const { return lhapdfIdsContained_; } }; } diff --git a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h new file mode 100644 index 0000000000000..37f68289633d7 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h @@ -0,0 +1,22 @@ +#ifndef SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h +#define SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h + +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +namespace gen { + class UnknownWeightGroupInfo : public WeightGroupInfo { + public: + UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = kUnknownWeights; } + UnknownWeightGroupInfo(std::string header, std::string name) : + WeightGroupInfo(header, name) { weightType_ = kUnknownWeights; isWellFormed_ = false;} + UnknownWeightGroupInfo(std::string header) : + WeightGroupInfo(header) { weightType_ = kUnknownWeights; isWellFormed_ = false;} + virtual ~UnknownWeightGroupInfo() override {} + void copy(const UnknownWeightGroupInfo &other); + virtual UnknownWeightGroupInfo* clone() const override; + }; +} + +#endif // SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h + + diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index a2a645740cc9b..cc56681a7bfbf 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -62,8 +62,12 @@ namespace gen { std::vector idsContained() const { return idsContained_; } int firstId() const { return firstId_; } int lastId() const { return lastId_; } + // Store whether the group was fully parsed succesfully + void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } + bool isWellFormed() const { return isWellFormed_; } protected: + bool isWellFormed_; std::string headerEntry_; std::string name_; WeightType weightType_; diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 0f479619c05d9..4e0175bf9629c 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -1,5 +1,4 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" -#include namespace gen { void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index e14ace5fb750b..5fd94f70aca3f 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -1,6 +1,5 @@ #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include -#include namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { @@ -46,7 +45,7 @@ namespace gen { else if (muR == 2.0 && muF == 2.0) muR2muF2Index_ = info.localIndex; else - throw std::invalid_argument("Invalid muF and muR variation is not a factor of two from central value"); + isWellFormed_ = false; } } diff --git a/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc new file mode 100644 index 0000000000000..2d56e8e177b31 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc @@ -0,0 +1,8 @@ +#include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" + +namespace gen { + UnknownWeightGroupInfo* UnknownWeightGroupInfo::clone() const { + return new UnknownWeightGroupInfo(*this); + } +} + diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 34812078bef6b..718447db14b96 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -1,10 +1,11 @@ #include #include #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" -#include +#include "FWCore/Utilities/interface/Exception.h" namespace gen { void WeightGroupInfo::copy(const WeightGroupInfo &other) { + isWellFormed_ = true; headerEntry_ = other.headerEntry(); name_ = other.name(); weightType_ = other.weightType(); @@ -14,7 +15,7 @@ namespace gen { } WeightGroupInfo* WeightGroupInfo::clone() const { - return new WeightGroupInfo(*this); + throw cms::Exception("LogicError", "WeightGroupInfo is abstract, so it's clone() method can't be implemented.\n"); } WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index 9e5f0b86ac2af..5629d5765059d 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -10,6 +10,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 8b2d802446db0..b52e0f7851b2a 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -224,22 +224,19 @@ + - - - - + - From 682ac14c6bc1d726141403970a70a4ed97d9fc82 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 20 Sep 2019 19:35:26 -0400 Subject: [PATCH 034/186] Start to move parsing tools to GeneratorInterface/Core --- GeneratorInterface/Core/BuildFile.xml | 1 + .../interface/LHEWeightGroupReaderHelper.h | 0 GeneratorInterface/LHEInterface/BuildFile.xml | 1 - GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename GeneratorInterface/{LHEInterface => Core}/interface/LHEWeightGroupReaderHelper.h (100%) diff --git a/GeneratorInterface/Core/BuildFile.xml b/GeneratorInterface/Core/BuildFile.xml index 4257af0e29ebe..07d1b0adc6194 100644 --- a/GeneratorInterface/Core/BuildFile.xml +++ b/GeneratorInterface/Core/BuildFile.xml @@ -10,6 +10,7 @@ + diff --git a/GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h similarity index 100% rename from GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h rename to GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h diff --git a/GeneratorInterface/LHEInterface/BuildFile.xml b/GeneratorInterface/LHEInterface/BuildFile.xml index 3c5338daa6d97..7ee840b3ea784 100644 --- a/GeneratorInterface/LHEInterface/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/BuildFile.xml @@ -13,7 +13,6 @@ - diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 67ec31046f1ee..43ba899a0e394 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -58,7 +58,7 @@ Description: [one line class summary] #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" #include "GeneratorInterface/LHEInterface/interface/TestWeightInfo.h" -#include "GeneratorInterface/LHEInterface/interface/LHEWeightGroupReaderHelper.h" +#include "GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/RandomNumberGenerator.h" From 037f6f9cd0508d68aa8e262e93ebe496da00137e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 21 Sep 2019 11:09:59 -0400 Subject: [PATCH 035/186] Move LHE reader to .h and .cc files, rename --- .../interface/LHEWeightGroupReaderHelper.h | 251 ------------------ .../Core/interface/LHEWeightHelper.h | 49 ++++ .../Core/src/LHEWeightHelper.cc | 207 +++++++++++++++ .../plugins/ExternalLHEProducer.cc | 9 +- 4 files changed, 261 insertions(+), 255 deletions(-) delete mode 100644 GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h create mode 100644 GeneratorInterface/Core/interface/LHEWeightHelper.h create mode 100644 GeneratorInterface/Core/src/LHEWeightHelper.cc diff --git a/GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h b/GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h deleted file mode 100644 index 893c528e20379..0000000000000 --- a/GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h +++ /dev/null @@ -1,251 +0,0 @@ -#ifndef GeneratorInterface_LHEInterface_LHEWeightGroupReaderHelper_h -#define GeneratorInterface_LHEInterface_LHEWeightGroupReaderHelper_h - -#include -#include -#include -#include -#include - -#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" - -#include -using namespace tinyxml2; - - -class LHEWeightGroupReaderHelper { -public: - LHEWeightGroupReaderHelper(); - - //// possibly add more versions of this functions for different inputs - void parseLHEFile(std::string filename); - void parseWeightGroupsFromHeader(std::vector lheHeader); - - - edm::OwnVector getWeightGroups() {return weightGroups_;} -private: - void loadAttributeNames(std::string baseName, std::vector altNames ={}); - std::string toLowerCase(const char*); - std::string toLowerCase(const std::string); - std::map getAttributeMap(std::string); - std::string sanitizeText(std::string); - bool isAWeight(std::string); - - // Variables - edm::OwnVector weightGroups_; - std::regex weightGroupStart_; - std::regex weightGroupEnd_; - std::regex weightContent_; - - std::map nameConvMap; -}; - - -std::string -LHEWeightGroupReaderHelper::toLowerCase(const char* name) { - std::string returnStr; - for (size_t i = 0; i < strlen(name); ++i) - returnStr.push_back(tolower(name[i])); - return returnStr; -} - -std::string -LHEWeightGroupReaderHelper::toLowerCase(const std::string name) { - std::string returnStr = name; - transform(name.begin(), name.end(), returnStr.begin(), ::tolower); - return returnStr; - - -} - -void LHEWeightGroupReaderHelper::loadAttributeNames(std::string baseName, std::vector altNames) { - for(auto altname : altNames) { - nameConvMap[altname] = baseName; - } - nameConvMap[baseName] = baseName; -} - -std::string -LHEWeightGroupReaderHelper::sanitizeText(std::string line) { - std::map replaceMap = {{"<", "<"}, {">", ">"}}; - - for(auto pair: replaceMap) { - std::string badText = pair.first; - std::string goodText = pair.second; - while(line.find(badText) != std::string::npos) { - size_t spot = line.find(badText); - line.replace(spot, badText.size(), goodText); - } - } - return line; -} - - -LHEWeightGroupReaderHelper::LHEWeightGroupReaderHelper() { - weightGroupStart_ = std::regex(".*.*\n*"); - weightGroupEnd_ = std::regex(".*.*\n*"); - - std::cout << "Init" << "\n"; - - /// Might change later, order matters and code doesn't pick choices - - // Used for translating different naming convention to a common one - loadAttributeNames("muf", {"facscfact"}); - loadAttributeNames("mur", {"renscfact"}); - loadAttributeNames("id"); - loadAttributeNames("pdf", {"pdf set", "lhapdf", "pdfset"}); - loadAttributeNames("dyn_scale"); - - loadAttributeNames("combine"); - loadAttributeNames("name", {"type"}); - -} - -std::map -LHEWeightGroupReaderHelper::getAttributeMap(std::string line) { - XMLDocument xmlParser; - int error = xmlParser.Parse(line.c_str()); - if (error) { - std::cout << "we have a problem!" << "\n"; - return std::map(); - //do something.... - } - - std::map attMap; - XMLElement* element = xmlParser.FirstChildElement(); - - for( const XMLAttribute* a = element->FirstAttribute(); a; a=a->Next()) { - attMap[nameConvMap[toLowerCase(a->Name())]] = a->Value(); - } - // get stuff from content of tag if it has anything. - // always assume format is AAAAA=( )BBBB ( ) => optional space - if (element->GetText() == nullptr) { - return attMap; - } - // This adds "content: " to the beginning of the content. not sure if its a big deal or? - std::string content = element->GetText(); - attMap["content"] = content; - - std::regex reg("(?:(\\S+)=\\s*(\\S+))"); - std::smatch m; - while(std::regex_search(content, m, reg)) { - std::string key = nameConvMap[toLowerCase(m.str(1))]; - if (attMap[key] != std::string()) { - if (m[2] != attMap[key]) { - std::cout << m.str(2) << " vs " << attMap[key]; - // might do something if content and attribute don't match? - // but need to be careful since some are purposefully different - // eg dyn_scale is described in content but just given a number - } - } - else { - attMap[key] = m.str(2); - } - content = m.suffix().str(); - } - return attMap; - -} - -bool -LHEWeightGroupReaderHelper::isAWeight(std::string line) { - XMLDocument xmlParser; - int error = xmlParser.Parse(line.c_str()); - if (error) { - return false; - //do something.... - } - XMLElement* element = xmlParser.FirstChildElement(); - return element; -} - -void -LHEWeightGroupReaderHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { - // TODO: Not sure the weight indexing is right here, this seems to more or less - // count the lines which isn't quite the goal. TOCHECK! - int index = 0; - bool foundGroup = false; - - for (std::string headerLine : lheHeader) { - std::cout << "Header line is:" << headerLine; - headerLine = sanitizeText(headerLine); - std::cout << "Header line is:" << weightGroups_.size() << " "<< headerLine; - //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight - - if (std::regex_match(headerLine, weightGroupStart_)) { - //std::cout << "Adding new group for headerLine" << std::endl; - foundGroup = true; - std::string fullTag = headerLine + ""; - auto groupMap = getAttributeMap(fullTag); - std::string name = groupMap["name"]; - - if(name.find("Central scale variation") != std::string::npos || - name.find("scale_variation") != std::string::npos) { - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(name)); - } - else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(name)); - } - /// file weights - else if (foundGroup && isAWeight(headerLine)) { - //std::cout << "Adding new weight for headerLine" << std::endl; - auto tagsMap = getAttributeMap(headerLine); - for(auto pair: tagsMap) { - std::cout << pair.first << ": " << pair.second << " | "; - } - std::cout << "\n"; - - std::string content = tagsMap["content"]; - if (tagsMap["id"].empty()) { - std::cout << "error" << "\n"; - // should do something - } - - auto& group = weightGroups_.back(); - if (group.weightType() == gen::kScaleWeights) { - if (tagsMap["mur"].empty() || tagsMap["muf"].empty()) { - std::cout << "error" << "\n"; - // something should happen here - continue; - } - float muR = std::stof(tagsMap["mur"]); - float muF = std::stof(tagsMap["muf"]); - std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; - auto& scaleGroup = static_cast(group); - scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); - } - else - group.addContainedId(index, tagsMap["id"], headerLine); - - index++; - } - // commented out since code doesn't work with this in.... - // else if(isAWeight(headerLine)) { - // // found header. Don't know what to do with it so just shove it into a new weightgroup for now - // // do minimum work for it - // weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); - // auto& group = weightGroups_.back(); - // auto tagsMap = getAttributeMap(headerLine); - // group.addContainedId(index, tagsMap["id"], headerLine); - // foundGroup = true; - // index++; - // } - - else if(std::regex_match(headerLine, weightGroupEnd_)) { - foundGroup = false; - } - else { - std::cout << "problem!!!" << "\n"; - } - } -} - - - -#endif - - diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h new file mode 100644 index 0000000000000..5612851f20b21 --- /dev/null +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -0,0 +1,49 @@ +#ifndef GeneratorInterface_Core_LHEWeightHelper_h +#define GeneratorInterface_Core_LHEWeightHelper_h + +#include +#include +#include +#include +#include + +#include "DataFormats/Common/interface/OwnVector.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" + +#include + +namespace gen { + //class LHEWeightHelper : public GenWeightHelper { + class LHEWeightHelper { + public: + LHEWeightHelper(); + + //// possibly add more versions of this functions for different inputs + void parseLHEFile(std::string filename); + void parseWeightGroupsFromHeader(std::vector lheHeader); + + + edm::OwnVector getWeightGroups() {return weightGroups_;} + private: + void loadAttributeNames(std::string baseName, std::vector altNames ={}); + std::string toLowerCase(const char*); + std::string toLowerCase(const std::string); + std::map getAttributeMap(std::string); + std::string sanitizeText(std::string); + bool isAWeight(std::string); + + // Variables + edm::OwnVector weightGroups_; + std::regex weightGroupStart_; + std::regex weightGroupEnd_; + std::regex weightContent_; + + std::map nameConvMap; + }; +} + +#endif + diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc new file mode 100644 index 0000000000000..63966dc5ccb79 --- /dev/null +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -0,0 +1,207 @@ +#include "GeneratorInterface/Core/interface/LHEWeightHelper.h" +#include + +using namespace tinyxml2; + +namespace gen { + std::string + LHEWeightHelper::toLowerCase(const char* name) { + std::string returnStr; + for (size_t i = 0; i < strlen(name); ++i) + returnStr.push_back(tolower(name[i])); + return returnStr; + } + + std::string + LHEWeightHelper::toLowerCase(const std::string name) { + std::string returnStr = name; + transform(name.begin(), name.end(), returnStr.begin(), ::tolower); + return returnStr; + + + } + + void LHEWeightHelper::loadAttributeNames(std::string baseName, std::vector altNames) { + for(auto altname : altNames) { + nameConvMap[altname] = baseName; + } + nameConvMap[baseName] = baseName; + } + + std::string + LHEWeightHelper::sanitizeText(std::string line) { + std::map replaceMap = {{"<", "<"}, {">", ">"}}; + + for(auto pair: replaceMap) { + std::string badText = pair.first; + std::string goodText = pair.second; + while(line.find(badText) != std::string::npos) { + size_t spot = line.find(badText); + line.replace(spot, badText.size(), goodText); + } + } + return line; + } + + + LHEWeightHelper::LHEWeightHelper() { + weightGroupStart_ = std::regex(".*.*\n*"); + weightGroupEnd_ = std::regex(".*.*\n*"); + + std::cout << "Init" << "\n"; + + /// Might change later, order matters and code doesn't pick choices + + // Used for translating different naming convention to a common one + loadAttributeNames("muf", {"facscfact"}); + loadAttributeNames("mur", {"renscfact"}); + loadAttributeNames("id"); + loadAttributeNames("pdf", {"pdf set", "lhapdf", "pdfset"}); + loadAttributeNames("dyn_scale"); + + loadAttributeNames("combine"); + loadAttributeNames("name", {"type"}); + + } + + std::map + LHEWeightHelper::getAttributeMap(std::string line) { + XMLDocument xmlParser; + int error = xmlParser.Parse(line.c_str()); + if (error) { + std::cout << "we have a problem!" << "\n"; + return std::map(); + //do something.... + } + + std::map attMap; + XMLElement* element = xmlParser.FirstChildElement(); + + for( const XMLAttribute* a = element->FirstAttribute(); a; a=a->Next()) { + attMap[nameConvMap[toLowerCase(a->Name())]] = a->Value(); + } + // get stuff from content of tag if it has anything. + // always assume format is AAAAA=( )BBBB ( ) => optional space + if (element->GetText() == nullptr) { + return attMap; + } + // This adds "content: " to the beginning of the content. not sure if its a big deal or? + std::string content = element->GetText(); + attMap["content"] = content; + + std::regex reg("(?:(\\S+)=\\s*(\\S+))"); + std::smatch m; + while(std::regex_search(content, m, reg)) { + std::string key = nameConvMap[toLowerCase(m.str(1))]; + if (attMap[key] != std::string()) { + if (m[2] != attMap[key]) { + std::cout << m.str(2) << " vs " << attMap[key]; + // might do something if content and attribute don't match? + // but need to be careful since some are purposefully different + // eg dyn_scale is described in content but just given a number + } + } + else { + attMap[key] = m.str(2); + } + content = m.suffix().str(); + } + return attMap; + + } + + bool + LHEWeightHelper::isAWeight(std::string line) { + XMLDocument xmlParser; + int error = xmlParser.Parse(line.c_str()); + if (error) { + return false; + //do something.... + } + XMLElement* element = xmlParser.FirstChildElement(); + return element; + } + + void + LHEWeightHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { + // TODO: Not sure the weight indexing is right here, this seems to more or less + // count the lines which isn't quite the goal. TOCHECK! + int index = 0; + bool foundGroup = false; + + for (std::string headerLine : lheHeader) { + std::cout << "Header line is:" << headerLine; + headerLine = sanitizeText(headerLine); + std::cout << "Header line is:" << weightGroups_.size() << " "<< headerLine; + //TODO: Fine for now, but in general there should also be a check on the PDF weights, + // e.g., it could be an unknown weight + + if (std::regex_match(headerLine, weightGroupStart_)) { + //std::cout << "Adding new group for headerLine" << std::endl; + foundGroup = true; + std::string fullTag = headerLine + ""; + auto groupMap = getAttributeMap(fullTag); + std::string name = groupMap["name"]; + + if(name.find("Central scale variation") != std::string::npos || + name.find("scale_variation") != std::string::npos) { + weightGroups_.push_back(new gen::ScaleWeightGroupInfo(name)); + } + else + weightGroups_.push_back(new gen::PdfWeightGroupInfo(name)); + } + /// file weights + else if (foundGroup && isAWeight(headerLine)) { + //std::cout << "Adding new weight for headerLine" << std::endl; + auto tagsMap = getAttributeMap(headerLine); + for(auto pair: tagsMap) { + std::cout << pair.first << ": " << pair.second << " | "; + } + std::cout << "\n"; + + std::string content = tagsMap["content"]; + if (tagsMap["id"].empty()) { + std::cout << "error" << "\n"; + // should do something + } + + auto& group = weightGroups_.back(); + if (group.weightType() == gen::kScaleWeights) { + if (tagsMap["mur"].empty() || tagsMap["muf"].empty()) { + std::cout << "error" << "\n"; + // something should happen here + continue; + } + float muR = std::stof(tagsMap["mur"]); + float muF = std::stof(tagsMap["muf"]); + std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; + auto& scaleGroup = static_cast(group); + scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); + } + else + group.addContainedId(index, tagsMap["id"], headerLine); + + index++; + } + // commented out since code doesn't work with this in.... + // else if(isAWeight(headerLine)) { + // // found header. Don't know what to do with it so just shove it into a new weightgroup for now + // // do minimum work for it + // weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); + // auto& group = weightGroups_.back(); + // auto tagsMap = getAttributeMap(headerLine); + // group.addContainedId(index, tagsMap["id"], headerLine); + // foundGroup = true; + // index++; + // } + + else if(std::regex_match(headerLine, weightGroupEnd_)) { + foundGroup = false; + } + else { + std::cout << "problem!!!" << "\n"; + } + } + } +} + diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 43ba899a0e394..42460852d5a3e 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -58,7 +58,8 @@ Description: [one line class summary] #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" #include "GeneratorInterface/LHEInterface/interface/TestWeightInfo.h" -#include "GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h" +//#include "GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h" +#include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "FWCore/Utilities/interface/RandomNumberGenerator.h" @@ -374,11 +375,11 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) weightInfoProduct_ = std::make_unique(); - LHEWeightGroupReaderHelper reader; + gen::LHEWeightHelper weightHelper; //reader.parseLHEFile(LHEfilename); - reader.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); + weightHelper.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); - for (auto& weightGroup : reader.getWeightGroups()) { + for (auto& weightGroup : weightHelper.getWeightGroups()) { if (weightGroup.weightType() == 1) { gen::ScaleWeightGroupInfo* group = static_cast(weightGroup.clone()); std::cout << "MuR1MuF2Index is " << group->muR1muF2Index(); From a78163bbeb32b5b41fcee8628ff1c1a3e1995d1c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 21 Sep 2019 12:35:22 -0400 Subject: [PATCH 036/186] Separate WeightHelper into base and daughter classes --- .../Core/interface/LHEWeightHelper.h | 11 +--- .../Core/interface/WeightHelper.h | 22 +++++++ GeneratorInterface/Core/src/WeightHelper.cc | 44 +++++++++++++ .../plugins/ExternalLHEProducer.cc | 65 +++---------------- 4 files changed, 78 insertions(+), 64 deletions(-) create mode 100644 GeneratorInterface/Core/interface/WeightHelper.h create mode 100644 GeneratorInterface/Core/src/WeightHelper.cc diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 5612851f20b21..8beb9dbbca21e 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -7,26 +7,21 @@ #include #include -#include "DataFormats/Common/interface/OwnVector.h" -#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "GeneratorInterface/Core/interface/WeightHelper.h" #include namespace gen { - //class LHEWeightHelper : public GenWeightHelper { - class LHEWeightHelper { + class LHEWeightHelper : public WeightHelper { public: LHEWeightHelper(); //// possibly add more versions of this functions for different inputs void parseLHEFile(std::string filename); void parseWeightGroupsFromHeader(std::vector lheHeader); - - - edm::OwnVector getWeightGroups() {return weightGroups_;} private: void loadAttributeNames(std::string baseName, std::vector altNames ={}); std::string toLowerCase(const char*); @@ -35,8 +30,6 @@ namespace gen { std::string sanitizeText(std::string); bool isAWeight(std::string); - // Variables - edm::OwnVector weightGroups_; std::regex weightGroupStart_; std::regex weightGroupEnd_; std::regex weightContent_; diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h new file mode 100644 index 0000000000000..64e1fb196d5d7 --- /dev/null +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -0,0 +1,22 @@ +#ifndef GeneratorInterface_LHEInterface_WeightHelper_h +#define GeneratorInterface_LHEInterface_WeightHelper_h + +#include "DataFormats/Common/interface/OwnVector.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" + +namespace gen { + class WeightHelper { + public: + WeightHelper() {} + edm::OwnVector weightGroups() {return weightGroups_;} + std::unique_ptr weightProduct(std::vector); + int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); + protected: + edm::OwnVector weightGroups_; + }; +} + +#endif + diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc new file mode 100644 index 0000000000000..98a38a34e9c5d --- /dev/null +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -0,0 +1,44 @@ +#include "GeneratorInterface/Core/interface/WeightHelper.h" + +namespace gen { + std::unique_ptr WeightHelper::weightProduct(std::vector weights) { + auto weightProduct = std::make_unique(); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + int weightNum = 0; + for (const auto& weight : weights) { + weightGroupIndex = findContainingWeightGroup(weight.id, weightNum, weightGroupIndex); + if (weightGroupIndex < 0 || weightGroupIndex >= static_cast(weightGroups_.size())) { + // Needs to be properly handled + throw std::range_error("Unmatched weight"); + } + auto group = weightGroups_[weightGroupIndex]; + int entry = group.weightVectorEntry(weight.id, weightNum); + weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); + weightNum++; + } + return std::move(weightProduct); + } + + int WeightHelper::findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { + // Start search at previous index, under expectation of ordered weights + previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; + for (int index = previousGroupIndex; + index < std::min(index+1, static_cast(weightGroups_.size())); index++) { + const gen::WeightGroupInfo& weightGroup = weightGroups_[index]; + if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { + return static_cast(index); + } + } + + // Fall back to unordered search + int counter = 0; + for (auto weightGroup : weightGroups_) { + if (weightGroup.containsWeight(wgtId, weightIndex)) + return counter; + counter++; + } + return -1; + } +} + diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 42460852d5a3e..d9d8c710ff16c 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -106,9 +106,9 @@ class ExternalLHEProducer : public edm::one::EDProducer> nPartonMapping_{}; std::unique_ptr reader_; + gen::LHEWeightHelper weightHelper_; std::shared_ptr runInfoLast; std::shared_ptr runInfo; - std::unique_ptr weightInfoProduct_; std::shared_ptr partonLevel; boost::ptr_deque runInfoProducts; bool wasMerged; @@ -209,21 +209,8 @@ ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); - auto weightProduct = std::make_unique(); - weightProduct->setNumWeightSets(weightInfoProduct_->numberOfGroups()); - int weightGroupIndex = 0; - int weightNum = 0; - for (const auto& weight : partonLevel->weights()) { - weightGroupIndex = findWeightGroup(weight.id, weightNum, weightGroupIndex); - if (weightGroupIndex < 0 || weightGroupIndex >= weightInfoProduct_->numberOfGroups()) { - // Needs to be properly handled - throw std::range_error("Unmatched weight"); - } - auto* group = weightInfoProduct_->orderedWeightGroupInfo(weightGroupIndex); - int entry = group->weightVectorEntry(weight.id, weightNum); - weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); - weightNum++; - } + // Should also zero out the weights in the GenInfoProduct + auto weightProduct = weightHelper_.weightProduct(partonLevel->weights()); iEvent.put(std::move(weightProduct)); product->setScales(partonLevel->scales()); @@ -373,21 +360,8 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) run.put(std::move(product)); - weightInfoProduct_ = std::make_unique(); - - gen::LHEWeightHelper weightHelper; - //reader.parseLHEFile(LHEfilename); - weightHelper.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); + weightHelper_.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); - for (auto& weightGroup : weightHelper.getWeightGroups()) { - if (weightGroup.weightType() == 1) { - gen::ScaleWeightGroupInfo* group = static_cast(weightGroup.clone()); - std::cout << "MuR1MuF2Index is " << group->muR1muF2Index(); - } - - weightInfoProduct_->addWeightGroupInfo(weightGroup.clone()); - } - runInfo.reset(); } } @@ -411,7 +385,12 @@ ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) } reader_.reset(); - run.put(std::move(weightInfoProduct_)); + + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + run.put(std::move(weightInfoProduct)); if (unlink(outputFile_.c_str())) { throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; @@ -543,30 +522,6 @@ ExternalLHEProducer::executeScript() } -int ExternalLHEProducer::findWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { - // Start search at previous index, under expectation of ordered weights - previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; - for (int index = previousGroupIndex; - index < std::min(index+1, static_cast(weightInfoProduct_->numberOfGroups())); index++) { - const gen::WeightGroupInfo* weightGroup = weightInfoProduct_->orderedWeightGroupInfo(index); - // index < std::min(index+1, static_cast(weightGroups_.size())); index++) { - //gen::WeightGroupInfo& weightGroup = weightGroups_[previousGroupIndex]; - // Fast search assuming order is not perturbed outside of weight group - if (weightGroup->indexInRange(weightIndex) && weightGroup->containsWeight(wgtId, weightIndex)) { - return static_cast(index); - } - } - - // Fall back to unordered search - int counter = 0; - for (auto weightGroup : weightInfoProduct_->allWeightGroupsInfo()) { - if (weightGroup.containsWeight(wgtId, weightIndex)) - return counter; - counter++; - } - return -1; -} - // ------------ Read the output script ------------ #define BUFSIZE 4096 std::unique_ptr ExternalLHEProducer::readOutput() From b6e3285ab650f7c00ea64adcada148c9121de778 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 23 Sep 2019 18:58:12 -0400 Subject: [PATCH 037/186] Producer or MiniAOD is finally working --- .../Core/plugins/LHEWeightProductProducer.cc | 106 ++++++++++++++++++ .../Core/test/testLHEWeightProducer_cfg.py | 24 ++++ .../LHEInterface/test/testWeights.py | 7 +- .../LHEInterface/test/test_Weights_cfg.py | 1 - TestWeightInfo/TestAnalyzer/test/test_cfg.py | 4 +- 5 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc create mode 100644 GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc new file mode 100644 index 0000000000000..3faed748e6a05 --- /dev/null +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -0,0 +1,106 @@ +#include +#include +#include +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDProducer.h" +#include "FWCore/Framework/interface/LuminosityBlock.h" + +#include "FWCore/Framework/interface/Run.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" + +#include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" +#include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" +#include "GeneratorInterface/Core/interface/LHEWeightHelper.h" + +#include "FWCore/ServiceRegistry/interface/Service.h" + +class LHEWeightProductProducer : public edm::one::EDProducer { +public: + explicit LHEWeightProductProducer(const edm::ParameterSet& iConfig); + ~LHEWeightProductProducer() override; + +private: + gen::LHEWeightHelper weightHelper_; + edm::EDGetTokenT lheRunInfoToken_; + edm::EDGetTokenT lheEventToken_; + + void produce(edm::Event&, const edm::EventSetup&) override; + void beginRunProduce(edm::Run& run, edm::EventSetup const& es) override; + void endRunProduce(edm::Run&, edm::EventSetup const&) override; + +}; + +// +// constructors and destructor +// +LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iConfig) : + lheRunInfoToken_(consumes(edm::InputTag("externalLHEProducer"))), + //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))), + lheEventToken_(consumes(edm::InputTag("externalLHEProducer"))) + //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) +{ + produces(); + produces(); +} + + +LHEWeightProductProducer::~LHEWeightProductProducer() +{ +} + + +// ------------ method called to produce the data ------------ +void +LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + edm::Handle lheEventInfo; + iEvent.getByToken(lheEventToken_, lheEventInfo); + // Read weights from LHEEventProduct + auto weightProduct = weightHelper_.weightProduct(lheEventInfo->weights()); + iEvent.put(std::move(weightProduct)); +} + +// ------------ method called when starting to processes a run ------------ +void +LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { + edm::Handle lheRunInfoHandle; + //run.getByToken(lheRunInfoToken_, lheRunInfoHandle); + // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) + run.getByLabel("externalLHEProducer", lheRunInfoHandle); + + std::cout << "In the run" << std::endl; + typedef std::vector::const_iterator header_cit; + LHERunInfoProduct::Header headerWeightInfo; + for (header_cit iter=lheRunInfoHandle->headers_begin(); iter!=lheRunInfoHandle->headers_end(); iter++) { + //for (header_cit iter=lheRunInfoProduct.headers_begin(); iter!=lheRunInfoProduct.headers_end(); iter++) { + if (iter->tag() == "initrwgt") + headerWeightInfo = *iter; + } + + weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); +} + + +// ------------ method called when ending the processing of a run ------------ +void +LHEWeightProductProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + run.put(std::move(weightInfoProduct)); +} + +DEFINE_FWK_MODULE(LHEWeightProductProducer); + diff --git a/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py b/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py new file mode 100644 index 0000000000000..72b9ed16248f3 --- /dev/null +++ b/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("test") + +process.source = cms.Source("PoolSource", + # replace 'myfile.root' with the source file you want to use + #fileNames = cms.untracked.vstring("/store/mc/RunIISummer16MiniAODv3/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v2/20000/CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root") + fileNames = cms.untracked.vstring("file:CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root"), +) + +process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(100)) + +process.out = cms.OutputModule("PoolOutputModule", + fileName = cms.untracked.string('test.root'), + outputCommands = cms.untracked.vstring(['keep *']) +) + +process.testWeights = cms.EDProducer("LHEWeightProductProducer") + +process.p = cms.Path(process.testWeights) + +process.output = cms.EndPath(process.out) +process.schedule = cms.Schedule(process.p,process.output) + diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py index c145a34497c11..2140372c5c5f0 100644 --- a/GeneratorInterface/LHEInterface/test/testWeights.py +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -1,9 +1,11 @@ from DataFormats.FWLite import Events,Handle,Runs import ROOT -source = "externalLHEProducer" +#source = "externalLHEProducer" +source = "testWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: -for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: +#for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: +for filename in ["test.root"]: runs = Runs(filename) run = runs.__iter__().next() weightInfoHandle = Handle("LHEWeightInfoProduct") @@ -13,7 +15,6 @@ events = Events(filename) event = events.__iter__().next() weightHandle = Handle("LHEWeightProduct") - event.getByLabel("externalLHEProducer", weightHandle) event.getByLabel(source, weightHandle) weightInfo = weightHandle.product() print "Content of the weights" diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index f4cbf5ce94694..24846755a78be 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -34,7 +34,6 @@ ) # Output definition - process.LHEoutput = cms.OutputModule("PoolOutputModule", dataset = cms.untracked.PSet( dataTier = cms.untracked.string('LHE'), diff --git a/TestWeightInfo/TestAnalyzer/test/test_cfg.py b/TestWeightInfo/TestAnalyzer/test/test_cfg.py index cdb44a5404eb5..f856a8ce87a42 100644 --- a/TestWeightInfo/TestAnalyzer/test/test_cfg.py +++ b/TestWeightInfo/TestAnalyzer/test/test_cfg.py @@ -4,14 +4,14 @@ process.source = cms.Source("PoolSource", # replace 'myfile.root' with the source file you want to use - fileNames = cms.untracked.vstring("file:HIG-RunIIFall18wmLHEGS-00509.root") + fileNames = cms.untracked.vstring("/store/mc/RunIISummer16MiniAODv3/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v2/20000/CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root") ) process.TFileService = cms.Service("TFileService", fileName = cms.string("test.root") ) -process.testWeights = cms.EDAnalyzer("TestAnalyzer") +process.testWeights = cms.EDAnalyzer("LHEWeightProductProducer") process.p = cms.Path(process.testWeights) From c82792f33130092fba6fa07871218dadcdbcb830 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 24 Sep 2019 07:59:23 -0400 Subject: [PATCH 038/186] Add outline of Zplotter (from Andreas) with weights implemented --- .../Core/plugins/LHEWeightProductProducer.cc | 1 - .../LHEInterface/plugins/LHEWeightsTest.cc | 451 ++++++++++++++++++ 2 files changed, 451 insertions(+), 1 deletion(-) create mode 100644 GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 3faed748e6a05..3e17e7f181879 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -79,7 +79,6 @@ LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) run.getByLabel("externalLHEProducer", lheRunInfoHandle); - std::cout << "In the run" << std::endl; typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; for (header_cit iter=lheRunInfoHandle->headers_begin(); iter!=lheRunInfoHandle->headers_end(); iter++) { diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc new file mode 100644 index 0000000000000..799a56d7426d4 --- /dev/null +++ b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc @@ -0,0 +1,451 @@ +// -*- C++ -*- +// +// Package: GenAnalysis/MergingAnalyzer +// Class: MergingAnalyzer +// +/**\class MergingAnalyzer MergingAnalyzer.cc GenAnalysis/MergingAnalyzer/plugins/MergingAnalyzer.cc + + Description: [one line class summary] + + Implementation: + [Notes on implementation] +*/ +// +// Original Author: Andreas Artur Eugen Albert +// Created: Fri, 21 Jul 2017 11:42:52 GMT +// +// + + +// system include files +#include +#include // std::pair +// user include files +#include +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "DataFormats/HepMCCandidate/interface/GenParticle.h" +#include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h" +#include "DataFormats/METReco/interface/GenMET.h" +#include "DataFormats/METReco/interface/GenMETCollection.h" +#include "DataFormats/JetReco/interface/GenJetCollection.h" + +#include "FWCore/ServiceRegistry/interface/Service.h" +#include "CommonTools/UtilAlgos/interface/TFileService.h" + +#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" + +#include "Math/VectorUtil.h" + +#include +#include +#include +#include +// +// class declaration +// + +// If the analyzer does not use TFileService, please remove +// the template argument to the base class so the class inherits +// from edm::one::EDAnalyzer<> and also remove the line from +// constructor "usesResource("TFileService");" +// This will improve performance in multithreaded jobs. + +class MergingAnalyzer : public edm::one::EDAnalyzer { + public: + explicit MergingAnalyzer(const edm::ParameterSet&); + ~MergingAnalyzer(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + + private: + virtual void beginJob() override; + virtual void analyze(const edm::Event&, const edm::EventSetup&) override; + virtual void endJob() override; + + void setup_variables(const edm::Event& iEvent); + + // ----------member data --------------------------- + std::string tag_; + bool isMiniaod_; + std::vector scaleWeightOrder_; + + edm::EDGetTokenT genParticleToken_; + edm::EDGetTokenT genJetToken_; + edm::EDGetTokenT LHEToken_; + edm::EDGetTokenT GenToken_; + edm::Service fileservice; + + std::map histograms2d; + std::map histograms1d; + + TTree * tree; + std::map variables; + + TNamed * filelist; + + TH1D * h_count_event; + TH1D * h_count_sumw; +}; + +// +// constants, enums and typedefs +// + +// +// static data member definitions +// + +// +// constructors and destructor +// +MergingAnalyzer::MergingAnalyzer(const edm::ParameterSet& iConfig) : + tag_(iConfig.getParameter("tag")), + isMiniaod_(iConfig.getParameter("miniaod")), + genParticleToken_(consumes(iConfig.getParameter("genParticleSrc"))), + genJetToken_(consumes(iConfig.getParameter("genJetSrc"))), + LHEToken_(consumes(iConfig.getParameter("LHESrc"))), + GenToken_(consumes(iConfig.getParameter("GenSrc"))) + + +{ + //now do what ever initialization is needed + usesResource("TFileService"); + TFileDirectory subdirectory = fileservice->mkdir( tag_ ); + + h_count_event = subdirectory.make("h_count_event", "h_count_event;Dummy;Events", 1,0,1); + h_count_sumw = subdirectory.make("h_count_sumw", "h_count_sumw;Weight index;Events", 1,0,1); + + int nweights = 1200; + histograms2d["pt_jet1"] = subdirectory.make("pt_jet1", "Leading jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); + histograms2d["pt_jet2"] = subdirectory.make("pt_jet2", "Trailing jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); + histograms2d["pt_jet3"] = subdirectory.make("pt_jet3", "3rd jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); + histograms2d["pt_jet4"] = subdirectory.make("pt_jet4", "4th jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); + histograms2d["ht"] = subdirectory.make("ht", "HT;HT (GeV);weight;Events",200,0,2000, nweights, -0.5, nweights-0.5); + histograms2d["dilepton_pt"] = subdirectory.make("dilepton_pt", "Dilepton p_{T}; p_{T} (GeV);weight;Events",200,0,2000, nweights, -0.5, nweights-0.5); + histograms2d["n_leptons"] = subdirectory.make("n_leptons", "number of leptons;n_lep;weight;Events",10,-0.5,9.5, nweights, -0.5, nweights-0.5); + + // histograms2d["njet"] = subdirectory.make("njet_over_pt", "pt threshold;njet;Events",10,-5,95,10,-0.5,9.5); + + tree = subdirectory.make("events","events"); + for(auto const entry : histograms1d){ + tree->Branch(entry.first, &variables[entry.first],(entry.first+"/D").Data()); + } + filelist = subdirectory.make(tag_,tag_); +} + + +MergingAnalyzer::~MergingAnalyzer() +{ + + // do anything here that needs to be done at desctruction time + // (e.g. close files, deallocate resources etc.) + +} + + +// +// member functions +// +bool compare_pt(reco::GenParticle p1, reco::GenParticle p2){ + return p2.pt() < p1.pt(); +} +std::vector select_leptons(const std::vector genParticles) { + std::vector leptons; + for (auto const p : genParticles){ + unsigned const int id = abs(p.pdgId()); + if(p.numberOfDaughters() > 0) continue; + else if(p.pt()<20) continue; + else if(not ((id==11)||(id==13)) ) continue; + else leptons.push_back(p); + } + std::sort(leptons.begin(), leptons.end(), compare_pt ); + return leptons; +} +std::vector select_neutrinos(const std::vector genParticles) { + std::vector neutrinos; + for (auto const p : genParticles){ + unsigned const int id = abs(p.pdgId()); + if(p.pt() < 25) continue; + else if(p.numberOfDaughters() > 0) continue; + else if(not ((id==12)||(id==14)||(id==16)) ) continue; + else neutrinos.push_back(p); + } + std::sort(neutrinos.begin(), neutrinos.end(), compare_pt ); + return neutrinos; +} + +std::vector select_jets(const std::vector genJets) { + std::vector jets; + for (auto const p : genJets){ + if(fabs(p.pt()) < 10) continue; + else jets.push_back(p); + } + std::sort(jets.begin(), jets.end(), compare_pt ); + return jets; +} + +std::pair find_z_candidate(std::vector & genParticles) { + double delta_mass_min = 9999; + double m_z = 91; + reco::GenParticle p1,p2; + for( unsigned int i = 0; i < genParticles.size(); i++ ) { + for( unsigned int j = i+1; j < genParticles.size(); j++ ) { + auto candidate_p4 = genParticles.at(i).p4() + genParticles.at(j).p4(); + double dm = fabs(candidate_p4.mass()-m_z); + if(dm < delta_mass_min ) { + delta_mass_min = dm; + p1 = genParticles.at(i); + p2 = genParticles.at(j); + } + } + } + return std::make_pair(p1,p2); +} +reco::Candidate const * find_first_mother_with_different_id( reco::Candidate const * daughter ){ + reco::Candidate const * mother = daughter->mother(0); + if(abs(mother->pdgId()) != abs(daughter->pdgId())) { + return mother; + }else{ + return find_first_mother_with_different_id(mother); + } +} + +std::vector clean_jets(const std::vector genJets, const std::vector leptons){ + std::vector cleaned_jets; + cleaned_jets.reserve(genJets.size()); + for( auto const jet : genJets ) { + double delta_r_min = 999; + double eta = jet.eta(); + double phi = jet.phi(); + for( auto const lep : leptons ) { + double delta_r = pow((pow(lep.eta() - eta,2) + pow(lep.phi() - phi,2)),0.5); + if (delta_r < delta_r_min){ + delta_r_min = delta_r; + } + } + if(delta_r_min < 0.4) { + continue; + } else { + cleaned_jets.push_back(jet); + } + } + return cleaned_jets; +} +void print_variables(std::map variables) { + +} +double delta_phi(reco::Candidate::LorentzVector const & p1,reco::Candidate::LorentzVector const & p2) { + double dphi_raw = fabs(p1.phi() - p2.phi()); + if(dphi_raw > M_PI){ + return 2*M_PI - dphi_raw; + } else { + return dphi_raw; + } +} +//// Parse generator history of particle and look for +bool has_v_in_history(reco::GenParticle const & part){ + size_t nmothers = part.numberOfMothers(); + if(nmothers == 0) { + return false; + } else { + for( size_t im = 0; im < nmothers; im++ ){ + auto const & mother = *(part.motherRef(im)); + + if(mother.pdgId() == 23 or mother.pdgId() == 24) { + return true; + } else if( has_v_in_history(*(part.motherRef(im))) ) { + return true; + } + } + return false; + } +} +std::vector clean_v_jets(const std::vector & genJets){ + std::vector cleaned; + for( auto const & j : genJets ) { + bool found = false; + for( auto const & c: j.getGenConstituents() ) { + found |= has_v_in_history(*c); + if(found) break; + } + if(not found){ + cleaned.push_back(j); + } + } + + return cleaned; +} + + +void MergingAnalyzer::setup_variables(const edm::Event& iEvent) { + using namespace edm; + + + //// Initialize with dummy values + for ( auto pair : variables ) { + variables[pair.first] = -9999; + } + + Handle> genParticleHandle; + iEvent.getByToken(genParticleToken_, genParticleHandle); + const std::vector * genParticles = genParticleHandle.product(); + + Handle> genJetHandle; + iEvent.getByToken(genJetToken_, genJetHandle); + const std::vector * genJets = genJetHandle.product(); + + edm::Handle lheHandle; + iEvent.getByLabel("externalLHEProducer", lheHandle); + const LHEEventProduct * lhe = lheHandle.product(); + + + + + variables["weight"] = lhe->originalXWGTUP(); + + //~ //// Leptons + std::vector leptons = select_leptons(*genParticles); + variables["n_leptons"] = leptons.size(); + + if(leptons.size() >= 2) { + auto z_cand = find_z_candidate(leptons); + variables["dilepton_pt"] = (z_cand.first.p4() + z_cand.second.p4()).pt(); + } + //// Jets + std::vector jets = clean_v_jets(clean_jets(select_jets(*genJets),leptons)); + int njets = jets.size(); + variables["n_jets"] = njets; + if(njets>0){ + variables["pt_jet1"] = jets.at(0).pt() ; + } + if(njets>1){ + variables["pt_jet2"] = jets.at(1).pt() ; + } + if(njets>2){ + variables["pt_jet3"] = jets.at(2).pt() ; + } + if(njets>3){ + variables["pt_jet4"] = jets.at(3).pt() ; + } + + + // for (unsigned int i = 0; i<=10; i++){ + + // float threshold = i*10; + // int njet = 0; + // for ( auto const & j : jets ) { + // if(j.pt() > threshold){ + // njet++; + // } + // } + // histograms2d["njet"]->Fill(threshold,njet,variables["weight"]); + // } + + double ht = 0; + for(auto const & j : jets){ + ht += j.pt(); + } + variables["ht"] = ht; + +} +std::vector setup_weights(const edm::Event& iEvent) { + edm::Handle lheHandle; + iEvent.getByLabel("testWeights", lheHandle); + const LHEWeightProduct * lheWeights = lheHandle.product(); + std::vector weights = lheWeights.weights(); + + for(auto i : scaleWeightOrder_){ + weights.push_back(weights[i]); + } + return weights; +} + + +// ------------ method called for each event ------------ +void +MergingAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) +{ + using namespace edm; + + setup_variables(iEvent); + tree->Fill(); + auto weights = setup_weights(iEvent); + h_count_event->Fill(0.5); + h_count_sumw->Fill(0.5,weights.at(0)); + + for( auto pair : histograms2d ) { + for(uint i=0; i -9998){ + pair.second->Fill(value,i,weights.at(i)); + } + } + } +} + + +// ------------ method called once each job just before starting event loop ------------ +void +MergingAnalyzer::beginJob() +{ +} + +// ------------ method called once each job just after ending the event loop ------------ +void +MergingAnalyzer::endJob() +{ +} + +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void +MergingAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + //The following says we do not know what parameters are allowed so do no validation + // Please change this to state exactly what you do use, even if it is no parameters + edm::ParameterSetDescription desc; + desc.setUnknown(); + descriptions.addDefault(desc); +} + +void +LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { + edm::Handle lheWeightInfoHandle; + // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) + run.getByLabel("testWeights", lheWeightInfoHandle); + + // Should add a search by name function + gen::ScaleWeightGroup scaleWeightInfo; + for (const auto& group : lheWeightInfoHandle->allWeightGroupsInfo()) { + if (std::find("scale", group.name()) != std::string::npos) { + scaleWeightInfo = group; + break; + } + } + + // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; + // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * + scaleWeightOrder_ = { group.muR05muF05Index(), + group.muR05muF1Index(), + group.muR05muF2Index(), + group.muR1muF05Index(), + group.centralIndex(), + group.muR1muF2Index(), + group.muR2muF05Index(), + group.muR2muF1Index(), + group.muR2muF2Index(), + } + +} + +//define this as a plug-in +DEFINE_FWK_MODULE(MergingAnalyzer); + From ffd0503039329ada0dc9713ba88ef6b83dfcf8ed Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 24 Sep 2019 19:36:57 -0400 Subject: [PATCH 039/186] Working example of plotting code reading weight products --- .../Core/plugins/LHEWeightProductProducer.cc | 12 +- .../Core/test/testLHEWeightProducer_cfg.py | 4 +- .../LHEInterface/plugins/BuildFile.xml | 11 ++ .../LHEInterface/plugins/LHEWeightsTest.cc | 154 +++++++++--------- .../test/test_ZPlotting_LHEweights_cfg.py | 77 +++++++++ .../interface/LHEWeightInfoProduct.h | 2 + .../src/LHEWeightInfoProduct.cc | 18 ++ .../src/ScaleWeightGroupInfo.cc | 3 +- 8 files changed, 192 insertions(+), 89 deletions(-) create mode 100644 GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 3e17e7f181879..a3bc3b5faf1c4 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -52,7 +52,7 @@ LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iCon //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) { produces(); - produces(); + produces(); } @@ -88,17 +88,17 @@ LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& } weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + run.put(std::move(weightInfoProduct)); } // ------------ method called when ending the processing of a run ------------ void LHEWeightProductProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { - auto weightInfoProduct = std::make_unique(); - for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); - } - run.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(LHEWeightProductProducer); diff --git a/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py b/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py index 72b9ed16248f3..2330e55313fb1 100644 --- a/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py @@ -4,8 +4,8 @@ process.source = cms.Source("PoolSource", # replace 'myfile.root' with the source file you want to use - #fileNames = cms.untracked.vstring("/store/mc/RunIISummer16MiniAODv3/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v2/20000/CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root") - fileNames = cms.untracked.vstring("file:CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root"), + fileNames = cms.untracked.vstring("/store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3_ext1-v2/120000/CC675D46-5EDF-E811-B537-3CFDFE63DF40.root") + #fileNames = cms.untracked.vstring("file:CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root"), ) process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(100)) diff --git a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml index e585d6c7a8f48..c9f6865d98d5a 100644 --- a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml @@ -23,3 +23,14 @@ + + + + + + + + + + + diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc index 799a56d7426d4..d3201a85f97ee 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc @@ -1,9 +1,9 @@ // -*- C++ -*- // -// Package: GenAnalysis/MergingAnalyzer -// Class: MergingAnalyzer +// Package: GenAnalysis/LHEWeightsTest +// Class: LHEWeightsTest // -/**\class MergingAnalyzer MergingAnalyzer.cc GenAnalysis/MergingAnalyzer/plugins/MergingAnalyzer.cc +/**\class LHEWeightsTest LHEWeightsTest.cc GenAnalysis/LHEWeightsTest/plugins/LHEWeightsTest.cc Description: [one line class summary] @@ -26,6 +26,7 @@ #include "FWCore/Framework/interface/one/EDAnalyzer.h" #include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Run.h" #include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" @@ -42,6 +43,13 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" + +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" + #include "Math/VectorUtil.h" #include @@ -58,30 +66,36 @@ // constructor "usesResource("TFileService");" // This will improve performance in multithreaded jobs. -class MergingAnalyzer : public edm::one::EDAnalyzer { +class LHEWeightsTest : public edm::one::EDAnalyzer { public: - explicit MergingAnalyzer(const edm::ParameterSet&); - ~MergingAnalyzer(); + explicit LHEWeightsTest(const edm::ParameterSet&); + ~LHEWeightsTest(); static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: virtual void beginJob() override; + virtual void endRun(edm::Run const& iRun, edm::EventSetup const&) {} + virtual void beginRun(edm::Run const& iRun, edm::EventSetup const&) override; virtual void analyze(const edm::Event&, const edm::EventSetup&) override; virtual void endJob() override; void setup_variables(const edm::Event& iEvent); + std::vector setup_weights(const edm::Event& iEvent); // ----------member data --------------------------- std::string tag_; bool isMiniaod_; - std::vector scaleWeightOrder_; + std::vector scaleWeightsOrder_; + unsigned int scaleWeightsIndex_; edm::EDGetTokenT genParticleToken_; edm::EDGetTokenT genJetToken_; edm::EDGetTokenT LHEToken_; edm::EDGetTokenT GenToken_; + edm::EDGetTokenT lheWeightToken_; + edm::EDGetTokenT lheWeightInfoToken_; edm::Service fileservice; std::map histograms2d; @@ -107,18 +121,19 @@ class MergingAnalyzer : public edm::one::EDAnalyzer // // constructors and destructor // -MergingAnalyzer::MergingAnalyzer(const edm::ParameterSet& iConfig) : +LHEWeightsTest::LHEWeightsTest(const edm::ParameterSet& iConfig) : tag_(iConfig.getParameter("tag")), isMiniaod_(iConfig.getParameter("miniaod")), genParticleToken_(consumes(iConfig.getParameter("genParticleSrc"))), genJetToken_(consumes(iConfig.getParameter("genJetSrc"))), LHEToken_(consumes(iConfig.getParameter("LHESrc"))), - GenToken_(consumes(iConfig.getParameter("GenSrc"))) - + GenToken_(consumes(iConfig.getParameter("GenSrc"))), + lheWeightToken_(consumes(edm::InputTag("testWeights"))), + lheWeightInfoToken_(consumes(edm::InputTag("testWeights"))) { //now do what ever initialization is needed - usesResource("TFileService"); + //usesResource("TFileService"); TFileDirectory subdirectory = fileservice->mkdir( tag_ ); h_count_event = subdirectory.make("h_count_event", "h_count_event;Dummy;Events", 1,0,1); @@ -133,8 +148,6 @@ MergingAnalyzer::MergingAnalyzer(const edm::ParameterSet& iConfig) : histograms2d["dilepton_pt"] = subdirectory.make("dilepton_pt", "Dilepton p_{T}; p_{T} (GeV);weight;Events",200,0,2000, nweights, -0.5, nweights-0.5); histograms2d["n_leptons"] = subdirectory.make("n_leptons", "number of leptons;n_lep;weight;Events",10,-0.5,9.5, nweights, -0.5, nweights-0.5); - // histograms2d["njet"] = subdirectory.make("njet_over_pt", "pt threshold;njet;Events",10,-5,95,10,-0.5,9.5); - tree = subdirectory.make("events","events"); for(auto const entry : histograms1d){ tree->Branch(entry.first, &variables[entry.first],(entry.first+"/D").Data()); @@ -143,7 +156,7 @@ MergingAnalyzer::MergingAnalyzer(const edm::ParameterSet& iConfig) : } -MergingAnalyzer::~MergingAnalyzer() +LHEWeightsTest::~LHEWeightsTest() { // do anything here that needs to be done at desctruction time @@ -286,10 +299,9 @@ std::vector clean_v_jets(const std::vector & genJets } -void MergingAnalyzer::setup_variables(const edm::Event& iEvent) { +void LHEWeightsTest::setup_variables(const edm::Event& iEvent) { using namespace edm; - //// Initialize with dummy values for ( auto pair : variables ) { variables[pair.first] = -9999; @@ -320,35 +332,18 @@ void MergingAnalyzer::setup_variables(const edm::Event& iEvent) { auto z_cand = find_z_candidate(leptons); variables["dilepton_pt"] = (z_cand.first.p4() + z_cand.second.p4()).pt(); } + else + variables["dilepton_pt"] = 0; + //// Jets - std::vector jets = clean_v_jets(clean_jets(select_jets(*genJets),leptons)); + std::vector jets = clean_jets(select_jets(*genJets),leptons); + //std::vector jets = clean_v_jets(clean_jets(select_jets(*genJets),leptons)); int njets = jets.size(); variables["n_jets"] = njets; - if(njets>0){ - variables["pt_jet1"] = jets.at(0).pt() ; - } - if(njets>1){ - variables["pt_jet2"] = jets.at(1).pt() ; - } - if(njets>2){ - variables["pt_jet3"] = jets.at(2).pt() ; - } - if(njets>3){ - variables["pt_jet4"] = jets.at(3).pt() ; - } - - - // for (unsigned int i = 0; i<=10; i++){ - - // float threshold = i*10; - // int njet = 0; - // for ( auto const & j : jets ) { - // if(j.pt() > threshold){ - // njet++; - // } - // } - // histograms2d["njet"]->Fill(threshold,njet,variables["weight"]); - // } + variables["pt_jet1"] = njets > 0 ? jets.at(0).pt() : -999; + variables["pt_jet2"] = njets > 1 ? jets.at(1).pt() : -999; + variables["pt_jet3"] = njets > 2 ? jets.at(2).pt() : -999; + variables["pt_jet4"] = njets > 3 ? jets.at(3).pt() : -999; double ht = 0; for(auto const & j : jets){ @@ -357,22 +352,24 @@ void MergingAnalyzer::setup_variables(const edm::Event& iEvent) { variables["ht"] = ht; } -std::vector setup_weights(const edm::Event& iEvent) { - edm::Handle lheHandle; - iEvent.getByLabel("testWeights", lheHandle); - const LHEWeightProduct * lheWeights = lheHandle.product(); - std::vector weights = lheWeights.weights(); - - for(auto i : scaleWeightOrder_){ - weights.push_back(weights[i]); +std::vector LHEWeightsTest::setup_weights(const edm::Event& iEvent) { + edm::Handle lheWeightHandle; + iEvent.getByToken(lheWeightToken_, lheWeightHandle); + const LHEWeightProduct * lheWeights = lheWeightHandle.product(); + WeightsContainer weights = lheWeights->weights(); + auto scaleWeights = weights.at(scaleWeightsIndex_); + std::vector keepWeights; + + for(auto i : scaleWeightsOrder_){ + keepWeights.push_back(scaleWeights[i]); } - return weights; + return keepWeights; } // ------------ method called for each event ------------ void -MergingAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) +LHEWeightsTest::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { using namespace edm; @@ -380,11 +377,10 @@ MergingAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup tree->Fill(); auto weights = setup_weights(iEvent); h_count_event->Fill(0.5); - h_count_sumw->Fill(0.5,weights.at(0)); + h_count_sumw->Fill(0.5,weights.at(4)); for( auto pair : histograms2d ) { for(uint i=0; i -9998){ pair.second->Fill(value,i,weights.at(i)); @@ -396,19 +392,19 @@ MergingAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup // ------------ method called once each job just before starting event loop ------------ void -MergingAnalyzer::beginJob() +LHEWeightsTest::beginJob() { } // ------------ method called once each job just after ending the event loop ------------ void -MergingAnalyzer::endJob() +LHEWeightsTest::endJob() { } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void -MergingAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +LHEWeightsTest::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { //The following says we do not know what parameters are allowed so do no validation // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; @@ -417,35 +413,33 @@ MergingAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) } void -LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { - edm::Handle lheWeightInfoHandle; +LHEWeightsTest::beginRun(edm::Run const& run, edm::EventSetup const& es) { + //edm::Handle lheWeightsInfoHandle; // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) - run.getByLabel("testWeights", lheWeightInfoHandle); + //run.getByLabel("testWeights", lheWeightsInfoHandle); + //edm::Handle lheWeightsInfoHandle; + //run.getByLabel("generator", lheWeightsInfoHandle); + edm::Handle lheWeightInfoHandle; + run.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Should add a search by name function - gen::ScaleWeightGroup scaleWeightInfo; - for (const auto& group : lheWeightInfoHandle->allWeightGroupsInfo()) { - if (std::find("scale", group.name()) != std::string::npos) { - scaleWeightInfo = group; - break; - } - } - + scaleWeightsIndex_ = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights).front(); + auto scaleWeights = static_cast( + lheWeightInfoHandle->orderedWeightGroupInfo(scaleWeightsIndex_)); // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * - scaleWeightOrder_ = { group.muR05muF05Index(), - group.muR05muF1Index(), - group.muR05muF2Index(), - group.muR1muF05Index(), - group.centralIndex(), - group.muR1muF2Index(), - group.muR2muF05Index(), - group.muR2muF1Index(), - group.muR2muF2Index(), - } - + scaleWeightsOrder_.clear(); + scaleWeightsOrder_.push_back(scaleWeights->muR05muF05Index()); + scaleWeightsOrder_.push_back(scaleWeights->muR05muF1Index()); + scaleWeightsOrder_.push_back(scaleWeights->muR05muF2Index()); + scaleWeightsOrder_.push_back(scaleWeights->muR1muF05Index()); + scaleWeightsOrder_.push_back(scaleWeights->centralIndex()); + scaleWeightsOrder_.push_back(scaleWeights->muR1muF2Index()); + scaleWeightsOrder_.push_back(scaleWeights->muR2muF05Index()); + scaleWeightsOrder_.push_back(scaleWeights->muR2muF1Index()); + scaleWeightsOrder_.push_back(scaleWeights->muR2muF2Index()); } //define this as a plug-in -DEFINE_FWK_MODULE(MergingAnalyzer); +DEFINE_FWK_MODULE(LHEWeightsTest); diff --git a/GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py b/GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py new file mode 100644 index 0000000000000..a0acb131f23c4 --- /dev/null +++ b/GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py @@ -0,0 +1,77 @@ +import FWCore.ParameterSet.Config as cms +import sys +import os +import re +from FWCore.ParameterSet.VarParsing import VarParsing + +def commandline(): + options = VarParsing('analysis') + + options.register( + "fileList", + "", + VarParsing.multiplicity.singleton, + VarParsing.varType.string, + "List of files to run on." + ) + options.register( + "isMiniAOD", + False, + VarParsing.multiplicity.singleton, + VarParsing.varType.bool, + "Sample is miniAOD" + ) + options.register( + "path", + None, + VarParsing.multiplicity.singleton, + VarParsing.varType.string, + "Path for input files" + ) + + options.parseArguments() + + + print "OPTIONS: MiniAOD ---> " + ("Yes" if options.isMiniAOD else "No") + print "OPTIONS: Tag ---> {TAG}".format(TAG=options.tag) + + + if(len(options.inputFiles) and options.fileList != ""): + print "ERROR: Please provide either fileList or inputFiles but not both." + sys.exit(1) + elif(options.fileList != ""): + options.inputFiles.extend(read_list_from_file(options.fileList)) + elif(options.path): + options.inputFiles.extend(find_files(options.path,'.*\.root')) + print "Found {N} files.".format(N=len(options.inputFiles)) + + return options +# Define the CMSSW process +process = cms.Process("demo") +options = commandline() + +process.load("FWCore.MessageService.MessageLogger_cfi") +process.MessageLogger.cerr.FwkReport.reportEvery = 1000 + +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) ) + +process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring( options.inputFiles ) +) + +process.testWeights = cms.EDProducer("LHEWeightProductProducer") + +process.demo = cms.EDAnalyzer('LHEWeightsTest', + tag = cms.string(options.tag), + miniaod = cms.bool(options.isMiniAOD), + genParticleSrc = cms.InputTag("prunedGenParticles" if options.isMiniAOD else "genParticles"), + genJetSrc = cms.InputTag( "slimmedGenJets" if options.isMiniAOD else "ak4GenJetsNoNu"), + genMETSrc = cms.InputTag( "slimmedMETs" if options.isMiniAOD else "genMetTrue"), + LHESrc = cms.InputTag("externalLHEProducer"), + GenSrc = cms.InputTag("generator") +) + +process.TFileService = cms.Service("TFileService", fileName = cms.string("analysis_{TAG}.root".format(TAG=options.tag)) ) + +process.p = cms.Path(process.testWeights*process.demo) + diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h index 9ed6c8b1927e9..c18b0eb4c3426 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h @@ -25,6 +25,8 @@ class LHEWeightInfoProduct { const edm::OwnVector& allWeightGroupsInfo() const; const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; + std::vector weightGroupsByType(gen::WeightType type) const; + std::vector weightGroupIndicesByType(gen::WeightType type) const; void addWeightGroupInfo(gen::WeightGroupInfo* info); const int numberOfGroups() const { return weightGroupsInfo_.size(); } diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc index 9e1f666325a75..77fb718f8df65 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc @@ -35,6 +35,24 @@ const gen::WeightGroupInfo* LHEWeightInfoProduct::orderedWeightGroupInfo(int wei return &weightGroupsInfo_[weightGroupIndex]; } +std::vector LHEWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { + std::vector matchingGroups; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroups.push_back(weightGroupsInfo_[i].clone()); + } + return matchingGroups; +} + +std::vector LHEWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { + std::vector matchingGroupIndices; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroupIndices.push_back(i); + } + return matchingGroupIndices; +} + void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 5fd94f70aca3f..64215f7ad6f2d 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -1,5 +1,6 @@ #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include +#include namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { @@ -9,7 +10,7 @@ namespace gen { muR2muF05Index_ = other.muR2muF05Index_; muR2muF1Index_ = other.muR2muF1Index_; muR2muF2Index_ = other.muR2muF2Index_; - muR2muF05Index_ = other.muR2muF05Index_; + muR05muF05Index_ = other.muR2muF05Index_; muR05muF1Index_ = other.muR05muF1Index_; muR05muF2Index_ = other.muR05muF2Index_; WeightGroupInfo::copy(other); From c535b5555a10d4e577de6348a79fe364f4d4a572 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 3 Oct 2019 08:59:34 -0400 Subject: [PATCH 040/186] Rename LHEWeight-->GenWeight to have same product for LHE and GEN --- .../Core/interface/WeightHelper.h | 4 ++-- .../Core/plugins/LHEWeightProductProducer.cc | 8 +++---- GeneratorInterface/Core/src/WeightHelper.cc | 4 ++-- .../plugins/ExternalLHEProducer.cc | 12 +++++----- .../LHEInterface/plugins/LHESource.cc | 8 +++---- .../LHEInterface/plugins/LHEWeightsTest.cc | 20 ++++++++--------- .../LHEInterface/test/testWeights.py | 12 +++++----- ...htInfoProduct.h => GenWeightInfoProduct.h} | 22 +++++++++---------- ...{LHEWeightProduct.h => GenWeightProduct.h} | 14 ++++++------ ...InfoProduct.cc => GenWeightInfoProduct.cc} | 20 ++++++++--------- .../GeneratorProducts/src/classes.h | 4 ++-- .../GeneratorProducts/src/classes_def.xml | 8 +++---- .../TestAnalyzer/plugins/TestAnalyzer.cc | 10 ++++----- 13 files changed, 73 insertions(+), 73 deletions(-) rename SimDataFormats/GeneratorProducts/interface/{LHEWeightInfoProduct.h => GenWeightInfoProduct.h} (61%) rename SimDataFormats/GeneratorProducts/interface/{LHEWeightProduct.h => GenWeightProduct.h} (77%) rename SimDataFormats/GeneratorProducts/src/{LHEWeightInfoProduct.cc => GenWeightInfoProduct.cc} (70%) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 64e1fb196d5d7..f1d8d2c38f283 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -2,7 +2,7 @@ #define GeneratorInterface_LHEInterface_WeightHelper_h #include "DataFormats/Common/interface/OwnVector.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" @@ -11,7 +11,7 @@ namespace gen { public: WeightHelper() {} edm::OwnVector weightGroups() {return weightGroups_;} - std::unique_ptr weightProduct(std::vector); + std::unique_ptr weightProduct(std::vector); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); protected: edm::OwnVector weightGroups_; diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index a3bc3b5faf1c4..6b73575c98c4c 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -16,7 +16,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" @@ -51,8 +51,8 @@ LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iCon lheEventToken_(consumes(edm::InputTag("externalLHEProducer"))) //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) { - produces(); - produces(); + produces(); + produces(); } @@ -88,7 +88,7 @@ LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& } weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); - auto weightInfoProduct = std::make_unique(); + auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 98a38a34e9c5d..acd1557f332e6 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -1,8 +1,8 @@ #include "GeneratorInterface/Core/interface/WeightHelper.h" namespace gen { - std::unique_ptr WeightHelper::weightProduct(std::vector weights) { - auto weightProduct = std::make_unique(); + std::unique_ptr WeightHelper::weightProduct(std::vector weights) { + auto weightProduct = std::make_unique(); weightProduct->setNumWeightSets(weightGroups_.size()); int weightGroupIndex = 0; int weightNum = 0; diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index d9d8c710ff16c..a07e650b4c7f0 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -49,16 +49,16 @@ Description: [one line class summary] #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" #include "GeneratorInterface/LHEInterface/interface/TestWeightInfo.h" -//#include "GeneratorInterface/Core/interface/LHEWeightGroupReaderHelper.h" +//#include "GeneratorInterface/Core/interface/GenWeightGroupReaderHelper.h" #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" @@ -163,10 +163,10 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) : produces("LHEScriptOutput"); produces(); - produces(); + produces(); produces(); produces(); - produces(); + produces(); } @@ -386,7 +386,7 @@ ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) reader_.reset(); - auto weightInfoProduct = std::make_unique(); + auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index 03402f473651f..aeb78dee92193 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -23,7 +23,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" @@ -37,7 +37,7 @@ LHESource::LHESource(const edm::ParameterSet ¶ms, const edm::InputSourceDescription &desc) : ProducerSourceFromFiles(params, desc, false), reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), edm::TypeID(typeid(LHEWeightInfoProduct)), productRegistryUpdate()), + lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), edm::TypeID(typeid(GenWeightInfoProduct)), productRegistryUpdate()), phid_() { nextEvent(); @@ -136,7 +136,7 @@ void LHESource::putRunInfoProduct(edm::RunPrincipal& iRunPrincipal) { void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { if (runInfoProductLast_) { - auto product = std::make_unique(); + auto product = std::make_unique(); gen::WeightGroupInfo scaleInfo( "" ); @@ -149,7 +149,7 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { product->addWeightGroupInfo(&scaleInfo); product->addWeightGroupInfo(&cenPdfInfo); - std::unique_ptr rdp(new edm::Wrapper(std::move(product))); + std::unique_ptr rdp(new edm::Wrapper(std::move(product))); iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); } } diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc index d3201a85f97ee..8af5fc7c017e4 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc @@ -43,8 +43,8 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" @@ -94,8 +94,8 @@ class LHEWeightsTest : public edm::one::EDAnalyzer { edm::EDGetTokenT genJetToken_; edm::EDGetTokenT LHEToken_; edm::EDGetTokenT GenToken_; - edm::EDGetTokenT lheWeightToken_; - edm::EDGetTokenT lheWeightInfoToken_; + edm::EDGetTokenT lheWeightToken_; + edm::EDGetTokenT lheWeightInfoToken_; edm::Service fileservice; std::map histograms2d; @@ -128,8 +128,8 @@ LHEWeightsTest::LHEWeightsTest(const edm::ParameterSet& iConfig) : genJetToken_(consumes(iConfig.getParameter("genJetSrc"))), LHEToken_(consumes(iConfig.getParameter("LHESrc"))), GenToken_(consumes(iConfig.getParameter("GenSrc"))), - lheWeightToken_(consumes(edm::InputTag("testWeights"))), - lheWeightInfoToken_(consumes(edm::InputTag("testWeights"))) + lheWeightToken_(consumes(edm::InputTag("testWeights"))), + lheWeightInfoToken_(consumes(edm::InputTag("testWeights"))) { //now do what ever initialization is needed @@ -353,9 +353,9 @@ void LHEWeightsTest::setup_variables(const edm::Event& iEvent) { } std::vector LHEWeightsTest::setup_weights(const edm::Event& iEvent) { - edm::Handle lheWeightHandle; + edm::Handle lheWeightHandle; iEvent.getByToken(lheWeightToken_, lheWeightHandle); - const LHEWeightProduct * lheWeights = lheWeightHandle.product(); + const GenWeightProduct * lheWeights = lheWeightHandle.product(); WeightsContainer weights = lheWeights->weights(); auto scaleWeights = weights.at(scaleWeightsIndex_); std::vector keepWeights; @@ -414,12 +414,12 @@ LHEWeightsTest::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { void LHEWeightsTest::beginRun(edm::Run const& run, edm::EventSetup const& es) { - //edm::Handle lheWeightsInfoHandle; + //edm::Handle lheWeightsInfoHandle; // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) //run.getByLabel("testWeights", lheWeightsInfoHandle); //edm::Handle lheWeightsInfoHandle; //run.getByLabel("generator", lheWeightsInfoHandle); - edm::Handle lheWeightInfoHandle; + edm::Handle lheWeightInfoHandle; run.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Should add a search by name function diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py index 2140372c5c5f0..131dc483b24ab 100644 --- a/GeneratorInterface/LHEInterface/test/testWeights.py +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -1,20 +1,20 @@ from DataFormats.FWLite import Events,Handle,Runs import ROOT -#source = "externalLHEProducer" -source = "testWeights" +source = "externalLHEProducer" +#source = "testWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: -#for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: -for filename in ["test.root"]: +for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: +#for filename in ["test.root"]: runs = Runs(filename) run = runs.__iter__().next() - weightInfoHandle = Handle("LHEWeightInfoProduct") + weightInfoHandle = Handle("GenWeightInfoProduct") run.getByLabel(source, weightInfoHandle) weightInfoProd = weightInfoHandle.product() events = Events(filename) event = events.__iter__().next() - weightHandle = Handle("LHEWeightProduct") + weightHandle = Handle("GenWeightProduct") event.getByLabel(source, weightHandle) weightInfo = weightHandle.product() print "Content of the weights" diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h similarity index 61% rename from SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h rename to SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index c18b0eb4c3426..0152710f8fd56 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -1,5 +1,5 @@ -#ifndef SimDataFormats_GeneratorProducts_LHEWeightInfoProduct_h -#define SimDataFormats_GeneratorProducts_LHEWeightInfoProduct_h +#ifndef SimDataFormats_GeneratorProducts_GenWeightInfoProduct_h +#define SimDataFormats_GeneratorProducts_GenWeightInfoProduct_h #include #include @@ -12,15 +12,15 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" -class LHEWeightInfoProduct { +class GenWeightInfoProduct { public: - LHEWeightInfoProduct() {} - LHEWeightInfoProduct(edm::OwnVector& weightGroups); - LHEWeightInfoProduct(const LHEWeightInfoProduct& other); - LHEWeightInfoProduct(LHEWeightInfoProduct&& other); - ~LHEWeightInfoProduct() {} - LHEWeightInfoProduct& operator=(const LHEWeightInfoProduct &other); - LHEWeightInfoProduct& operator=(LHEWeightInfoProduct &&other); + GenWeightInfoProduct() {} + GenWeightInfoProduct(edm::OwnVector& weightGroups); + GenWeightInfoProduct(const GenWeightInfoProduct& other); + GenWeightInfoProduct(GenWeightInfoProduct&& other); + ~GenWeightInfoProduct() {} + GenWeightInfoProduct& operator=(const GenWeightInfoProduct &other); + GenWeightInfoProduct& operator=(GenWeightInfoProduct &&other); const edm::OwnVector& allWeightGroupsInfo() const; const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; @@ -36,5 +36,5 @@ class LHEWeightInfoProduct { }; -#endif // GeneratorWeightInfo_LHEInterface_LHEWeightInfoProduct_h +#endif // GeneratorWeightInfo_LHEInterface_GenWeightInfoProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h similarity index 77% rename from SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h rename to SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index 5c5fa132b4ee7..e09f2541f8601 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -1,5 +1,5 @@ -#ifndef SimDataFormats_GeneratorProducts_LHEWeightProduct_h -#define SimDataFormats_GeneratorProducts_LHEWeightProduct_h +#ifndef SimDataFormats_GeneratorProducts_GenWeightProduct_h +#define SimDataFormats_GeneratorProducts_GenWeightProduct_h #include #include @@ -11,14 +11,14 @@ typedef std::vector> WeightsContainer; -class LHEWeightProduct { +class GenWeightProduct { public: - LHEWeightProduct() { weightsVector_ = {}; } - LHEWeightProduct& operator=(LHEWeightProduct&& other) { + GenWeightProduct() { weightsVector_ = {}; } + GenWeightProduct& operator=(GenWeightProduct&& other) { weightsVector_ = std::move(other.weightsVector_); return *this; } - ~LHEWeightProduct() {} + ~GenWeightProduct() {} void setNumWeightSets(int num) { weightsVector_.resize(num); } void addWeightSet() { weightsVector_.push_back({}); } @@ -39,5 +39,5 @@ class LHEWeightProduct { WeightsContainer weightsVector_; }; -#endif // GeneratorEvent_LHEInterface_LHEWeightProduct_h +#endif // GeneratorEvent_LHEInterface_GenWeightProduct_h diff --git a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc similarity index 70% rename from SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc rename to SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 77fb718f8df65..8a76e4d173b85 100644 --- a/SimDataFormats/GeneratorProducts/src/LHEWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -1,27 +1,27 @@ #include #include -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" -LHEWeightInfoProduct::LHEWeightInfoProduct(edm::OwnVector& weightGroups) { +GenWeightInfoProduct::GenWeightInfoProduct(edm::OwnVector& weightGroups) { weightGroupsInfo_ = weightGroups; } -LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(const LHEWeightInfoProduct &other) { +GenWeightInfoProduct& GenWeightInfoProduct::operator=(const GenWeightInfoProduct &other) { weightGroupsInfo_ = other.weightGroupsInfo_; return * this; } -LHEWeightInfoProduct& LHEWeightInfoProduct::operator=(LHEWeightInfoProduct &&other) { +GenWeightInfoProduct& GenWeightInfoProduct::operator=(GenWeightInfoProduct &&other) { weightGroupsInfo_ = std::move(other.weightGroupsInfo_); return *this; } -const edm::OwnVector& LHEWeightInfoProduct::allWeightGroupsInfo() const { +const edm::OwnVector& GenWeightInfoProduct::allWeightGroupsInfo() const { return weightGroupsInfo_; } -const gen::WeightGroupInfo* LHEWeightInfoProduct::containingWeightGroupInfo(int index) const { +const gen::WeightGroupInfo* GenWeightInfoProduct::containingWeightGroupInfo(int index) const { for (const auto& weightGroup : weightGroupsInfo_) { if (weightGroup.indexInRange(index)) return &weightGroup; @@ -29,13 +29,13 @@ const gen::WeightGroupInfo* LHEWeightInfoProduct::containingWeightGroupInfo(int throw std::domain_error("Failed to find containing weight group"); } -const gen::WeightGroupInfo* LHEWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { +const gen::WeightGroupInfo* GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) throw std::range_error("Weight index out of range!"); return &weightGroupsInfo_[weightGroupIndex]; } -std::vector LHEWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { +std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { std::vector matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { if (weightGroupsInfo_[i].weightType() == type) @@ -44,7 +44,7 @@ std::vector LHEWeightInfoProduct::weightGroupsByType(gen: return matchingGroups; } -std::vector LHEWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { +std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { std::vector matchingGroupIndices; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { if (weightGroupsInfo_[i].weightType() == type) @@ -53,6 +53,6 @@ std::vector LHEWeightInfoProduct::weightGroupIndicesByType(gen::WeightType return matchingGroupIndices; } -void LHEWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { +void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index 5629d5765059d..f3b559410999f 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -12,8 +12,8 @@ #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index b52e0f7851b2a..ce45759b98a1b 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -197,8 +197,8 @@ - - + + @@ -238,8 +238,8 @@ - - + + diff --git a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc index 3c8d7065faf6c..1cb1c7ca73e9a 100644 --- a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc +++ b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc @@ -32,7 +32,7 @@ #include "FWCore/Utilities/interface/InputTag.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" - #include "SimDataFormats/GeneratorProducts/interface/LHEWeightInfoProduct.h" + #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" // @@ -56,7 +56,7 @@ class TestAnalyzer : public edm::one::EDAnalyzer { private: - edm::EDGetTokenT lheWeightInfoToken_; + edm::EDGetTokenT lheWeightInfoToken_; virtual void beginJob() override; void beginRun(edm::Run const& iRun, edm::EventSetup const&) override; void endRun(edm::Run const& iRun, edm::EventSetup const&) override; @@ -78,7 +78,7 @@ class TestAnalyzer : public edm::one::EDAnalyzer { // constructors and destructor // TestAnalyzer::TestAnalyzer(const edm::ParameterSet& iConfig) : - lheWeightInfoToken_(consumes(edm::InputTag("externalLHEProducer"))) + lheWeightInfoToken_(consumes(edm::InputTag("externalLHEProducer"))) { //now do what ever initialization is needed @@ -127,10 +127,10 @@ void TestAnalyzer::endRun(edm::Run const& iRun, edm::EventSetup const&) {} void TestAnalyzer::beginRun(edm::Run const& iRun, edm::EventSetup const&) { - edm::Handle lheWeightInfoHandle; + edm::Handle lheWeightInfoHandle; iRun.getByToken( lheWeightInfoToken_, lheWeightInfoHandle ); - const LHEWeightInfoProduct* lheProd = lheWeightInfoHandle.product(); + const GenWeightInfoProduct* lheProd = lheWeightInfoHandle.product(); edm::OwnVector groups = lheProd->allWeightGroupsInfo(); for (const auto& group : groups) { std::cout << "Type of the weight is " << group.weightType() << " name is " << group.name() << std::endl; From 3e4861786d64c142e076e4d6c8b9d20bfd143f9d Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 3 Oct 2019 09:56:35 -0400 Subject: [PATCH 041/186] Add parton shower weights class --- .../interface/PartonShowerWeightGroupInfo.h | 29 +++++++++++++++++++ .../interface/ScaleWeightGroupInfo.h | 4 +-- .../interface/WeightGroupInfo.h | 2 +- .../src/PartonShowerWeights.cc | 12 ++++++++ .../GeneratorProducts/src/classes.h | 1 + .../GeneratorProducts/src/classes_def.xml | 2 ++ 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h create mode 100644 SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h new file mode 100644 index 0000000000000..e9bb539bcb185 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -0,0 +1,29 @@ +#ifndef SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h +#define SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h + +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +namespace gen { + class PartonShowerWeightGroupInfo : public WeightGroupInfo { + public: + PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} + PartonShowerWeightGroupInfo(std::string header, std::string name) : + WeightGroupInfo(header, name) { + weightType_ = kPartonShowerWeights; + } + PartonShowerWeightGroupInfo(std::string header) : + PartonShowerWeightGroupInfo(header, header) { } + PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { + copy(other); + } + virtual ~PartonShowerWeightGroupInfo() override {} + void copy(const PartonShowerWeightGroupInfo &other); + virtual PartonShowerWeightGroupInfo* clone() const override; + + // Is a variation of the functional form of the dynamic scale + }; +} + +#endif + + diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 00891a219db23..994c1235963dd 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -42,8 +42,8 @@ namespace gen { void copy(const ScaleWeightGroupInfo &other); virtual ScaleWeightGroupInfo* clone() const override; - void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); - void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); + void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); + void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index cc56681a7bfbf..973e88f10e73d 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -21,7 +21,7 @@ namespace gen { kScaleWeights, kMatrixElementWeights, kUnknownWeights, - kShowerWeights, + kPartonShowerWeights, }; class WeightGroupInfo { diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc new file mode 100644 index 0000000000000..893db2f20433e --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc @@ -0,0 +1,12 @@ +#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" + +namespace gen { + void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo &other) { + WeightGroupInfo::copy(other); + } + + PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { + return new PartonShowerWeightGroupInfo(*this); + } +} + diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index f3b559410999f..8bc509d9738ec 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -12,6 +12,7 @@ #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index ce45759b98a1b..3f4ef536a9e68 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -226,6 +226,7 @@ + @@ -234,6 +235,7 @@ + From 176adbfe905a4c7c7503856b77cb7ba617aabe67 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 3 Oct 2019 18:13:32 -0400 Subject: [PATCH 042/186] Simple version of GEN producer working --- .../Core/interface/GenWeightHelper.h | 30 +++++ .../Core/interface/WeightHelper.h | 2 + .../Core/plugins/GenWeightProductProducer.cc | 107 ++++++++++++++++++ .../Core/src/GenWeightHelper.cc | 32 ++++++ GeneratorInterface/Core/src/WeightHelper.cc | 35 ++++-- ...er_cfg.py => testGenWeightProducer_cfg.py} | 7 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 2 +- 7 files changed, 200 insertions(+), 15 deletions(-) create mode 100644 GeneratorInterface/Core/interface/GenWeightHelper.h create mode 100644 GeneratorInterface/Core/plugins/GenWeightProductProducer.cc create mode 100644 GeneratorInterface/Core/src/GenWeightHelper.cc rename GeneratorInterface/Core/test/{testLHEWeightProducer_cfg.py => testGenWeightProducer_cfg.py} (59%) diff --git a/GeneratorInterface/Core/interface/GenWeightHelper.h b/GeneratorInterface/Core/interface/GenWeightHelper.h new file mode 100644 index 0000000000000..4836ac90b5332 --- /dev/null +++ b/GeneratorInterface/Core/interface/GenWeightHelper.h @@ -0,0 +1,30 @@ +#ifndef GeneratorInterface_Core_GenWeightHelper_h +#define GeneratorInterface_Core_GenWeightHelper_h + +#include +#include +#include +#include +#include + +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoProduct.h" +#include "GeneratorInterface/Core/interface/WeightHelper.h" + +#include + +namespace gen { + class GenWeightHelper : public WeightHelper { + public: + GenWeightHelper(); + + void parseWeightGroupsFromNames(std::vector weightNames); + private: + }; +} + +#endif + + diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index f1d8d2c38f283..1540f9404c42f 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -12,6 +12,8 @@ namespace gen { WeightHelper() {} edm::OwnVector weightGroups() {return weightGroups_;} std::unique_ptr weightProduct(std::vector); + std::unique_ptr weightProduct(std::vector); + int addWeightToProduct(std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); protected: edm::OwnVector weightGroups_; diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc new file mode 100644 index 0000000000000..c08f3258579b8 --- /dev/null +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -0,0 +1,107 @@ +#include +#include +#include +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDProducer.h" +#include "FWCore/Framework/interface/LuminosityBlock.h" + +#include "FWCore/Framework/interface/Run.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoHeader.h" + +#include "GeneratorInterface/Core/interface/GenWeightHelper.h" + +#include "FWCore/ServiceRegistry/interface/Service.h" + +class GenWeightProductProducer : public edm::one::EDProducer { +public: + explicit GenWeightProductProducer(const edm::ParameterSet& iConfig); + ~GenWeightProductProducer() override; + +private: + std::vector weightNames_; + gen::GenWeightHelper weightHelper_; + edm::EDGetTokenT genLumiInfoToken_; + edm::EDGetTokenT genEventToken_; + + void produce(edm::Event&, const edm::EventSetup&) override; + void beginRunProduce(edm::Run& run, edm::EventSetup const& es) override; + void endRunProduce(edm::Run&, edm::EventSetup const&) override; + void beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override; + void endLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override; + +}; + +// +// constructors and destructor +// +GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iConfig) : + genLumiInfoToken_(consumes(edm::InputTag("generator"))), + //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))), + genEventToken_(consumes(edm::InputTag("generator"))) + //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) +{ + produces(); + produces(); +} + + +GenWeightProductProducer::~GenWeightProductProducer() +{ +} + + +// ------------ method called to produce the data ------------ +void +GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + edm::Handle genEventInfo; + iEvent.getByToken(genEventToken_, genEventInfo); + // Read weights from LHEEventProduct + auto weightProduct = weightHelper_.weightProduct(genEventInfo->weights()); + iEvent.put(std::move(weightProduct)); +} + +void +GenWeightProductProducer::endLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) {} + +void +GenWeightProductProducer::beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) { + edm::Handle genLumiInfoHandle; + iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); + + weightNames_ = genLumiInfoHandle->weightNames(); +} + +// ------------ method called when starting to processes a run ------------ +void +GenWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { + weightHelper_.parseWeightGroupsFromNames(weightNames_); + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + run.put(std::move(weightInfoProduct)); +} + + +// ------------ method called when ending the processing of a run ------------ +void +GenWeightProductProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { +} + +DEFINE_FWK_MODULE(GenWeightProductProducer); + + diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc new file mode 100644 index 0000000000000..197f804012b92 --- /dev/null +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -0,0 +1,32 @@ +#include "GeneratorInterface/Core/interface/GenWeightHelper.h" +#include + +using namespace tinyxml2; + +namespace gen { + GenWeightHelper::GenWeightHelper() { + } + + void + GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { + int index = 0; + + if (weightNames.size() <= 1) + return; + + for (std::string weightName : weightNames) { + if(weightName.find("LHE") != std::string::npos) { + // Parse as usual, this is the SUSY workflow + } + // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights + else if (weightGroups_.size() == 0) { + weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo(weightName)); + auto& group = weightGroups_.back(); + // No IDs for Gen weights + group.addContainedId(index, "", weightName); + } + } + } +} + + diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index acd1557f332e6..35617c1c007bc 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -1,25 +1,37 @@ #include "GeneratorInterface/Core/interface/WeightHelper.h" namespace gen { + // TODO: Could probably recycle this code better + std::unique_ptr WeightHelper::weightProduct(std::vector weights) { + auto weightProduct = std::make_unique(); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + for (unsigned int i = 0; i < weightGroups_.size(); i++) { + addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); + } + return std::move(weightProduct); + } + std::unique_ptr WeightHelper::weightProduct(std::vector weights) { auto weightProduct = std::make_unique(); weightProduct->setNumWeightSets(weightGroups_.size()); int weightGroupIndex = 0; - int weightNum = 0; + int i = 0; for (const auto& weight : weights) { - weightGroupIndex = findContainingWeightGroup(weight.id, weightNum, weightGroupIndex); - if (weightGroupIndex < 0 || weightGroupIndex >= static_cast(weightGroups_.size())) { - // Needs to be properly handled - throw std::range_error("Unmatched weight"); - } - auto group = weightGroups_[weightGroupIndex]; - int entry = group.weightVectorEntry(weight.id, weightNum); - weightProduct->addWeight(weight.wgt, weightGroupIndex, entry); - weightNum++; + weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i++, weightGroupIndex); } return std::move(weightProduct); } + int WeightHelper::addWeightToProduct(std::unique_ptr& product, + double weight, std::string name, int weightNum, int groupIndex) { + groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); + auto group = weightGroups_[groupIndex]; + int entry = group.weightVectorEntry(name, weightNum); + product->addWeight(weight, groupIndex, entry); + return groupIndex; + } + int WeightHelper::findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { // Start search at previous index, under expectation of ordered weights previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; @@ -38,7 +50,8 @@ namespace gen { return counter; counter++; } - return -1; + // Needs to be properly handled + throw std::range_error("Unmatched weight"); } } diff --git a/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py similarity index 59% rename from GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py rename to GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index 2330e55313fb1..7eba1fb2543dd 100644 --- a/GeneratorInterface/Core/test/testLHEWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -4,7 +4,7 @@ process.source = cms.Source("PoolSource", # replace 'myfile.root' with the source file you want to use - fileNames = cms.untracked.vstring("/store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3_ext1-v2/120000/CC675D46-5EDF-E811-B537-3CFDFE63DF40.root") + fileNames = cms.untracked.vstring("/store/mc/RunIIAutumn18MiniAOD/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15-v1/80000/E53E0D52-39FF-6F42-A8B2-EEF28EEB4C43.root") #fileNames = cms.untracked.vstring("file:CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root"), ) @@ -15,9 +15,10 @@ outputCommands = cms.untracked.vstring(['keep *']) ) -process.testWeights = cms.EDProducer("LHEWeightProductProducer") +process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer") +process.testGenWeights = cms.EDProducer("GenWeightProductProducer") -process.p = cms.Path(process.testWeights) +process.p = cms.Path(process.testLHEWeights*process.testGenWeights) process.output = cms.EndPath(process.out) process.schedule = cms.Schedule(process.p,process.output) diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 718447db14b96..a5284f5fd3c15 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -40,7 +40,7 @@ namespace gen { if (!indexInRange(weightEntry)) { size_t orderedEntry = weightEntry - firstId_; if (orderedEntry < idsContained_.size()) - if (idsContained_.at(orderedEntry).id == wgtId) + if (!wgtId.empty() && idsContained_.at(orderedEntry).id == wgtId) return orderedEntry; } auto it = std::find_if(idsContained_.begin(), idsContained_.end(), From acc3817b6f810b8f2fdd40e0c0c66ed86d989a13 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 3 Oct 2019 19:34:38 -0400 Subject: [PATCH 043/186] Fix nasty bug searching for weights by index TODO: Still need to find out how to get the weightgroupinfo into the beginrun --- .../Core/plugins/GenWeightProductProducer.cc | 15 +++++------ .../Core/src/GenWeightHelper.cc | 9 ++++--- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- .../Core/test/testGenWeightProducer_cfg.py | 3 ++- .../LHEInterface/test/testWeights.py | 15 +++++++---- .../GeneratorProducts/src/WeightGroupInfo.cc | 26 ++++++++++++------- 6 files changed, 41 insertions(+), 29 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index c08f3258579b8..03d57297dc703 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -55,7 +55,7 @@ GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iCon //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) { produces(); - produces(); + produces(); } @@ -83,23 +83,22 @@ GenWeightProductProducer::beginLuminosityBlock(const edm::LuminosityBlock& iLumi iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); weightNames_ = genLumiInfoHandle->weightNames(); + weightHelper_.parseWeightGroupsFromNames(weightNames_); } // ------------ method called when starting to processes a run ------------ void GenWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { - weightHelper_.parseWeightGroupsFromNames(weightNames_); - auto weightInfoProduct = std::make_unique(); - for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); - } - run.put(std::move(weightInfoProduct)); } - // ------------ method called when ending the processing of a run ------------ void GenWeightProductProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + run.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(GenWeightProductProducer); diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 197f804012b92..182040728a752 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -17,14 +17,15 @@ namespace gen { for (std::string weightName : weightNames) { if(weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow + continue; } // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights else if (weightGroups_.size() == 0) { - weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo(weightName)); - auto& group = weightGroups_.back(); - // No IDs for Gen weights - group.addContainedId(index, "", weightName); + weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); } + auto& group = weightGroups_.back(); + // No IDs for Gen weights + group.addContainedId(index++, "", weightName); } } } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 35617c1c007bc..990c471e675a4 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -6,7 +6,7 @@ namespace gen { auto weightProduct = std::make_unique(); weightProduct->setNumWeightSets(weightGroups_.size()); int weightGroupIndex = 0; - for (unsigned int i = 0; i < weightGroups_.size(); i++) { + for (unsigned int i = 0; i < weights.size(); i++) { addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); } return std::move(weightProduct); diff --git a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index 7eba1fb2543dd..79648fa6fce33 100644 --- a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -18,7 +18,8 @@ process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer") process.testGenWeights = cms.EDProducer("GenWeightProductProducer") -process.p = cms.Path(process.testLHEWeights*process.testGenWeights) +#process.p = cms.Path(process.testLHEWeights*process.testGenWeights) +process.p = cms.Path(process.testGenWeights) process.output = cms.EndPath(process.out) process.schedule = cms.Schedule(process.p,process.output) diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py index 131dc483b24ab..26f858ec1431c 100644 --- a/GeneratorInterface/LHEInterface/test/testWeights.py +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -1,11 +1,12 @@ from DataFormats.FWLite import Events,Handle,Runs import ROOT -source = "externalLHEProducer" -#source = "testWeights" +#source = "externalLHEProducer" +#source = "testLHEWeights" +source = "testGenWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: -for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: -#for filename in ["test.root"]: +#for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: +for filename in ["test.root"]: runs = Runs(filename) run = runs.__iter__().next() weightInfoHandle = Handle("GenWeightInfoProduct") @@ -17,6 +18,10 @@ weightHandle = Handle("GenWeightProduct") event.getByLabel(source, weightHandle) weightInfo = weightHandle.product() + print weightInfo + print len(weightInfo.weights()) + print weightInfoProd.allWeightGroupsInfo() + print len(weightInfoProd.allWeightGroupsInfo()) print "Content of the weights" for j, weights in enumerate(weightInfo.weights()): print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 @@ -26,7 +31,7 @@ for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" print name, getattr(matching, name)() - else: + elif matching.weightType() == 0: print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) print "-"*80 diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index a5284f5fd3c15..86940ae70a9f0 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -3,6 +3,8 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "FWCore/Utilities/interface/Exception.h" +#include + namespace gen { void WeightGroupInfo::copy(const WeightGroupInfo &other) { isWellFormed_ = true; @@ -36,26 +38,30 @@ namespace gen { } int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { - int entry = -1; - if (!indexInRange(weightEntry)) { + // First try ordered search + if (indexInRange(weightEntry)) { size_t orderedEntry = weightEntry - firstId_; if (orderedEntry < idsContained_.size()) - if (!wgtId.empty() && idsContained_.at(orderedEntry).id == wgtId) + if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { return orderedEntry; + } + } + // Fall back to search on ID + else if (!wgtId.empty()) { + auto it = std::find_if(idsContained_.begin(), idsContained_.end(), + [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); + if (it != idsContained_.end()) + return std::distance(idsContained_.begin(), it); } - auto it = std::find_if(idsContained_.begin(), idsContained_.end(), - [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); - if (it != idsContained_.end()) - return std::distance(idsContained_.begin(), it); - return entry; + return -1; } void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label="") { if (firstId_ == -1 || weightEntry < firstId_) { firstId_ = weightEntry; // Reset to reflect that indices will be shifted - for (auto& id : idsContained_) - id.localIndex = id.globalIndex - firstId_; + for (auto& entry : idsContained_) + entry.localIndex = entry.globalIndex - firstId_; } if (weightEntry > lastId_) lastId_ = weightEntry; From 27a923953edc24c3909ee96ffcc59c48150d3625 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 4 Oct 2019 07:36:32 -0400 Subject: [PATCH 044/186] Clean up test script for LHE weights a bit --- .../Core/test/testGenWeightProducer_cfg.py | 4 +-- .../LHEInterface/plugins/LHEWeightsTest.cc | 25 ------------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index 79648fa6fce33..0634cd548d0f7 100644 --- a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -18,8 +18,8 @@ process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer") process.testGenWeights = cms.EDProducer("GenWeightProductProducer") -#process.p = cms.Path(process.testLHEWeights*process.testGenWeights) -process.p = cms.Path(process.testGenWeights) +process.p = cms.Path(process.testLHEWeights*process.testGenWeights) +#process.p = cms.Path(process.testGenWeights) process.output = cms.EndPath(process.out) process.schedule = cms.Schedule(process.p,process.output) diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc index 8af5fc7c017e4..db453a9009945 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc @@ -223,14 +223,6 @@ std::pair find_z_candidate(std::vectormother(0); - if(abs(mother->pdgId()) != abs(daughter->pdgId())) { - return mother; - }else{ - return find_first_mother_with_different_id(mother); - } -} std::vector clean_jets(const std::vector genJets, const std::vector leptons){ std::vector cleaned_jets; @@ -282,22 +274,6 @@ bool has_v_in_history(reco::GenParticle const & part){ return false; } } -std::vector clean_v_jets(const std::vector & genJets){ - std::vector cleaned; - for( auto const & j : genJets ) { - bool found = false; - for( auto const & c: j.getGenConstituents() ) { - found |= has_v_in_history(*c); - if(found) break; - } - if(not found){ - cleaned.push_back(j); - } - } - - return cleaned; -} - void LHEWeightsTest::setup_variables(const edm::Event& iEvent) { using namespace edm; @@ -337,7 +313,6 @@ void LHEWeightsTest::setup_variables(const edm::Event& iEvent) { //// Jets std::vector jets = clean_jets(select_jets(*genJets),leptons); - //std::vector jets = clean_v_jets(clean_jets(select_jets(*genJets),leptons)); int njets = jets.size(); variables["n_jets"] = njets; variables["pt_jet1"] = njets > 0 ? jets.at(0).pt() : -999; From 7402487d89a5c1d1dd40bda529e4d0089bc5b4e6 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 4 Oct 2019 09:28:44 -0400 Subject: [PATCH 045/186] Start to implement useful functions for PdfGroupInfo --- .../LHEInterface/plugins/LHEWeightsTest.cc | 10 +++++++++ .../interface/PdfWeightGroupInfo.h | 21 ++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc index db453a9009945..2109529e9abc0 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc @@ -108,6 +108,10 @@ class LHEWeightsTest : public edm::one::EDAnalyzer { TH1D * h_count_event; TH1D * h_count_sumw; + + const unsigned int KEEP_LHAPDFID_ = 23000; + int keepPdfSetIndex_ = 0; + int keepPdfIndexInSet_ = -1; }; // @@ -413,6 +417,12 @@ LHEWeightsTest::beginRun(edm::Run const& run, edm::EventSetup const& es) { scaleWeightsOrder_.push_back(scaleWeights->muR2muF05Index()); scaleWeightsOrder_.push_back(scaleWeights->muR2muF1Index()); scaleWeightsOrder_.push_back(scaleWeights->muR2muF2Index()); + + //auto pdfSets = lheWeightInfoHandle->weightGroupIndicesByType(gen::kPdfWeights); + + //for (const auto& pdfSet : pdfSets) { + // keepPdfIndex_ = pdfSet.indexOfLhapdfId(KEEP_LHAPDFID_); + // if (keepPdfIdex = -1) } //define this as a plug-in diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 4f853103d4241..fd81e15687daf 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -16,7 +16,7 @@ namespace gen { bool hasAlphasVars_; int alphasUpIndex_; int alphasDownIndex_; - std::vector lhapdfIdsContained_; + std::vector> lhapdfIdsContained_; public: PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = kPdfWeights; } PdfWeightGroupInfo(std::string header, std::string name) : @@ -37,10 +37,25 @@ namespace gen { PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } + bool containsLhapdfId(size_t lhaid) const { return indexOfLhapdfId(lhaid) != -1; } + int indexOfLhapdfId(size_t lhaid) const { + for (const auto& id : lhapdfIdsContained_) { + if (id.first == lhaid) + return id.second; + } + return -1; + } int alphasUpIndex() const { return alphasUpIndex_; } int alphasDownIndex() const { return alphasDownIndex_; } - void addLhapdfId(int lhaid) { lhapdfIdsContained_.push_back(lhaid); } - std::vector getLhapdfIdsContained() const { return lhapdfIdsContained_; } + void addLhapdfId(size_t lhaid, size_t index) { + lhapdfIdsContained_.push_back(std::make_pair(lhaid, index)); + } + std::vector getLhapdfIdsContained() const { + std::vector lhaids; + for (const auto& id : lhapdfIdsContained_) + lhaids.push_back(id.first); + return lhaids; + } }; } From b744a77cacdc520c1d7da23ead44966c5ddc6e99 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 4 Oct 2019 10:46:16 -0400 Subject: [PATCH 046/186] Put product in lumi instead of run Still need to fix for LHESource (which has been neglected in any case) --- .../Core/plugins/GenWeightProductProducer.cc | 40 ++++++------------- .../Core/plugins/LHEWeightProductProducer.cc | 29 +++++++------- .../plugins/ExternalLHEProducer.cc | 19 +++++---- .../LHEInterface/plugins/LHEWeightsTest.cc | 14 +++---- 4 files changed, 46 insertions(+), 56 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 03d57297dc703..7c7f90cdba0df 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -24,9 +24,7 @@ #include "FWCore/ServiceRegistry/interface/Service.h" -class GenWeightProductProducer : public edm::one::EDProducer { +class GenWeightProductProducer : public edm::one::EDProducer { public: explicit GenWeightProductProducer(const edm::ParameterSet& iConfig); ~GenWeightProductProducer() override; @@ -38,11 +36,7 @@ class GenWeightProductProducer : public edm::one::EDProducer genEventToken_; void produce(edm::Event&, const edm::EventSetup&) override; - void beginRunProduce(edm::Run& run, edm::EventSetup const& es) override; - void endRunProduce(edm::Run&, edm::EventSetup const&) override; - void beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override; - void endLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override; - + void beginLuminosityBlockProduce(edm::LuminosityBlock& lb, edm::EventSetup const& c) override; }; // @@ -55,7 +49,7 @@ GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iCon //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) { produces(); - produces(); + produces(); } @@ -74,31 +68,23 @@ GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe iEvent.put(std::move(weightProduct)); } -void -GenWeightProductProducer::endLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) {} +//void +//GenWeightProductProducer::endLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) {} void -GenWeightProductProducer::beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) { - edm::Handle genLumiInfoHandle; - iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); - - weightNames_ = genLumiInfoHandle->weightNames(); - weightHelper_.parseWeightGroupsFromNames(weightNames_); -} +GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { + if (weightNames_.size() == 0) { + edm::Handle genLumiInfoHandle; + iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); -// ------------ method called when starting to processes a run ------------ -void -GenWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { -} - -// ------------ method called when ending the processing of a run ------------ -void -GenWeightProductProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { + weightNames_ = genLumiInfoHandle->weightNames(); + weightHelper_.parseWeightGroupsFromNames(weightNames_); + } auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } - run.put(std::move(weightInfoProduct)); + iLumi.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(GenWeightProductProducer); diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 6b73575c98c4c..3310410615b59 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -25,8 +25,8 @@ #include "FWCore/ServiceRegistry/interface/Service.h" -class LHEWeightProductProducer : public edm::one::EDProducer { +class LHEWeightProductProducer : public edm::one::EDProducer { public: explicit LHEWeightProductProducer(const edm::ParameterSet& iConfig); ~LHEWeightProductProducer() override; @@ -37,8 +37,9 @@ class LHEWeightProductProducer : public edm::one::EDProducer lheEventToken_; void produce(edm::Event&, const edm::EventSetup&) override; - void beginRunProduce(edm::Run& run, edm::EventSetup const& es) override; - void endRunProduce(edm::Run&, edm::EventSetup const&) override; + void beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) override; + void beginRun(edm::Run const& run, edm::EventSetup const& es) override; + void endRun(edm::Run const& run, edm::EventSetup const& es) override; }; @@ -52,7 +53,7 @@ LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iCon //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) { produces(); - produces(); + produces(); } @@ -73,7 +74,7 @@ LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe // ------------ method called when starting to processes a run ------------ void -LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { +LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { edm::Handle lheRunInfoHandle; //run.getByToken(lheRunInfoToken_, lheRunInfoHandle); // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) @@ -82,23 +83,23 @@ LHEWeightProductProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; for (header_cit iter=lheRunInfoHandle->headers_begin(); iter!=lheRunInfoHandle->headers_end(); iter++) { - //for (header_cit iter=lheRunInfoProduct.headers_begin(); iter!=lheRunInfoProduct.headers_end(); iter++) { if (iter->tag() == "initrwgt") headerWeightInfo = *iter; } weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); +} + +void +LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const& es) { } + +void +LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } - run.put(std::move(weightInfoProduct)); -} - - -// ------------ method called when ending the processing of a run ------------ -void -LHEWeightProductProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { + lumi.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(LHEWeightProductProducer); diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index a07e650b4c7f0..9acc5ff473b28 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -71,7 +71,8 @@ Description: [one line class summary] // class ExternalLHEProducer : public edm::one::EDProducer { + edm::EndRunProducer, + edm::EndLuminosityBlockProducer> { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); ~ExternalLHEProducer() override; @@ -83,6 +84,7 @@ class ExternalLHEProducer : public edm::one::EDProducer(); produces(); produces(); - produces(); + produces(); } @@ -386,15 +388,18 @@ ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) reader_.reset(); + if (unlink(outputFile_.c_str())) { + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; + } +} + +void +ExternalLHEProducer::endLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } - run.put(std::move(weightInfoProduct)); - - if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; - } + lumi.put(std::move(weightInfoProduct)); } // ------------ Close all the open file descriptors ------------ diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc index 2109529e9abc0..c0af4f32791fc 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc @@ -66,7 +66,7 @@ // constructor "usesResource("TFileService");" // This will improve performance in multithreaded jobs. -class LHEWeightsTest : public edm::one::EDAnalyzer { +class LHEWeightsTest : public edm::one::EDAnalyzer { public: explicit LHEWeightsTest(const edm::ParameterSet&); ~LHEWeightsTest(); @@ -76,8 +76,8 @@ class LHEWeightsTest : public edm::one::EDAnalyzer { private: virtual void beginJob() override; - virtual void endRun(edm::Run const& iRun, edm::EventSetup const&) {} - virtual void beginRun(edm::Run const& iRun, edm::EventSetup const&) override; + virtual void beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) override; + virtual void endLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) override {} virtual void analyze(const edm::Event&, const edm::EventSetup&) override; virtual void endJob() override; @@ -133,7 +133,7 @@ LHEWeightsTest::LHEWeightsTest(const edm::ParameterSet& iConfig) : LHEToken_(consumes(iConfig.getParameter("LHESrc"))), GenToken_(consumes(iConfig.getParameter("GenSrc"))), lheWeightToken_(consumes(edm::InputTag("testWeights"))), - lheWeightInfoToken_(consumes(edm::InputTag("testWeights"))) + lheWeightInfoToken_(consumes(edm::InputTag("testWeights"))) { //now do what ever initialization is needed @@ -392,14 +392,12 @@ LHEWeightsTest::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { } void -LHEWeightsTest::beginRun(edm::Run const& run, edm::EventSetup const& es) { +LHEWeightsTest::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const& es) { //edm::Handle lheWeightsInfoHandle; - // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) - //run.getByLabel("testWeights", lheWeightsInfoHandle); //edm::Handle lheWeightsInfoHandle; //run.getByLabel("generator", lheWeightsInfoHandle); edm::Handle lheWeightInfoHandle; - run.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Should add a search by name function scaleWeightsIndex_ = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights).front(); From a30dacf9518651c94a251e3ff3c8f4d7a46f4ad3 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 6 Oct 2019 19:40:25 -0400 Subject: [PATCH 047/186] Some cleanup + nasty bug fix in lhapdfIds Make sure to copy everything in the copy functions or horrible things happen --- .../Core/interface/LHEWeightHelper.h | 6 +- .../Core/interface/WeightHelper.h | 20 ++- .../Core/src/LHEWeightHelper.cc | 165 ++++++++---------- GeneratorInterface/Core/src/WeightHelper.cc | 77 ++++++++ .../Core/test/testGenWeightProducer_cfg.py | 2 +- .../LHEInterface/test/testWeights.py | 70 ++++---- .../interface/PdfWeightGroupInfo.h | 16 +- .../src/PdfWeightGroupInfo.cc | 1 + 8 files changed, 214 insertions(+), 143 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 8beb9dbbca21e..8a54f71bb6c6e 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -7,6 +7,7 @@ #include #include +#include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" @@ -23,9 +24,8 @@ namespace gen { void parseLHEFile(std::string filename); void parseWeightGroupsFromHeader(std::vector lheHeader); private: + std::map weightAttributeMapFromHeaderLine(std::string line); void loadAttributeNames(std::string baseName, std::vector altNames ={}); - std::string toLowerCase(const char*); - std::string toLowerCase(const std::string); std::map getAttributeMap(std::string); std::string sanitizeText(std::string); bool isAWeight(std::string); @@ -34,7 +34,7 @@ namespace gen { std::regex weightGroupEnd_; std::regex weightContent_; - std::map nameConvMap; + std::map nameConversionMap_; }; } diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 1540f9404c42f..da6084fcca18c 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -4,18 +4,34 @@ #include "DataFormats/Common/interface/OwnVector.h" #include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" +#include namespace gen { + struct PdfSetInfo { + std::string name; + int lhapdfId; + PdfUncertaintyType uncertaintyType; + }; + class WeightHelper { public: - WeightHelper() {} - edm::OwnVector weightGroups() {return weightGroups_;} + WeightHelper(); + edm::OwnVector weightGroups() { + return weightGroups_; + } std::unique_ptr weightProduct(std::vector); std::unique_ptr weightProduct(std::vector); + void setGroupInfo(); + bool currentGroupIsScale(); + bool currentGroupIsPdf(); int addWeightToProduct(std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); protected: + const std::vector pdfSetsInfo; + std::map currWeightAttributeMap_; + std::map currGroupAttributeMap_; edm::OwnVector weightGroups_; }; } diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 63966dc5ccb79..ddaea95dd75bb 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -4,28 +4,11 @@ using namespace tinyxml2; namespace gen { - std::string - LHEWeightHelper::toLowerCase(const char* name) { - std::string returnStr; - for (size_t i = 0; i < strlen(name); ++i) - returnStr.push_back(tolower(name[i])); - return returnStr; - } - - std::string - LHEWeightHelper::toLowerCase(const std::string name) { - std::string returnStr = name; - transform(name.begin(), name.end(), returnStr.begin(), ::tolower); - return returnStr; - - - } - void LHEWeightHelper::loadAttributeNames(std::string baseName, std::vector altNames) { for(auto altname : altNames) { - nameConvMap[altname] = baseName; + nameConversionMap_[altname] = baseName; } - nameConvMap[baseName] = baseName; + nameConversionMap_[baseName] = baseName; } std::string @@ -48,8 +31,6 @@ namespace gen { weightGroupStart_ = std::regex(".*.*\n*"); weightGroupEnd_ = std::regex(".*.*\n*"); - std::cout << "Init" << "\n"; - /// Might change later, order matters and code doesn't pick choices // Used for translating different naming convention to a common one @@ -69,44 +50,35 @@ namespace gen { XMLDocument xmlParser; int error = xmlParser.Parse(line.c_str()); if (error) { - std::cout << "we have a problem!" << "\n"; - return std::map(); - //do something.... + return std::map(); } - std::map attMap; + std::map attributeMap; XMLElement* element = xmlParser.FirstChildElement(); for( const XMLAttribute* a = element->FirstAttribute(); a; a=a->Next()) { - attMap[nameConvMap[toLowerCase(a->Name())]] = a->Value(); + auto name = boost::algorithm::to_lower_copy(std::string(a->Name())); + attributeMap[nameConversionMap_[name]] = a->Value(); } // get stuff from content of tag if it has anything. // always assume format is AAAAA=( )BBBB ( ) => optional space if (element->GetText() == nullptr) { - return attMap; + return attributeMap; } // This adds "content: " to the beginning of the content. not sure if its a big deal or? std::string content = element->GetText(); - attMap["content"] = content; + attributeMap["content"] = content; - std::regex reg("(?:(\\S+)=\\s*(\\S+))"); - std::smatch m; - while(std::regex_search(content, m, reg)) { - std::string key = nameConvMap[toLowerCase(m.str(1))]; - if (attMap[key] != std::string()) { - if (m[2] != attMap[key]) { - std::cout << m.str(2) << " vs " << attMap[key]; - // might do something if content and attribute don't match? - // but need to be careful since some are purposefully different - // eg dyn_scale is described in content but just given a number - } + for (const auto& entry : weightAttributeMapFromHeaderLine(content)) { + auto rawLabel = boost::algorithm::to_lower_copy(entry.first); + std::string label = nameConversionMap_[rawLabel]; + if (nameConversionMap_.find(label) != nameConversionMap_.end()) + attributeMap.at(nameConversionMap_[label]) = entry.second; + else + attributeMap[label] = entry.second; } - else { - attMap[key] = m.str(2); - } - content = m.suffix().str(); - } - return attMap; + + return attributeMap; } @@ -122,85 +94,86 @@ namespace gen { return element; } + std::map + LHEWeightHelper::weightAttributeMapFromHeaderLine(std::string line) { + std::regex reg("(?:(\\S+)=\\s*(\\S+))"); + std::smatch match; + std::map weightAttributeMap; + while(std::regex_search(line, match, reg)) { + weightAttributeMap[match.str(1)] = match.str(2); + line = match.suffix().str(); + } + return weightAttributeMap; + } + void LHEWeightHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { // TODO: Not sure the weight indexing is right here, this seems to more or less // count the lines which isn't quite the goal. TOCHECK! int index = 0; - bool foundGroup = false; + currGroupAttributeMap_.clear(); + currWeightAttributeMap_.clear(); for (std::string headerLine : lheHeader) { - std::cout << "Header line is:" << headerLine; headerLine = sanitizeText(headerLine); - std::cout << "Header line is:" << weightGroups_.size() << " "<< headerLine; - //TODO: Fine for now, but in general there should also be a check on the PDF weights, - // e.g., it could be an unknown weight if (std::regex_match(headerLine, weightGroupStart_)) { - //std::cout << "Adding new group for headerLine" << std::endl; - foundGroup = true; + if (!currGroupAttributeMap_.empty()) + setGroupInfo(); std::string fullTag = headerLine + ""; - auto groupMap = getAttributeMap(fullTag); - std::string name = groupMap["name"]; + currGroupAttributeMap_ = getAttributeMap(fullTag); + auto name = currGroupAttributeMap_["name"]; - if(name.find("Central scale variation") != std::string::npos || - name.find("scale_variation") != std::string::npos) { - weightGroups_.push_back(new gen::ScaleWeightGroupInfo(name)); + if (currentGroupIsScale()) + weightGroups_.push_back(std::make_unique(name)); + else if (currentGroupIsPdf()) { + weightGroups_.push_back(std::make_unique(name)); } - else - weightGroups_.push_back(new gen::PdfWeightGroupInfo(name)); + else + weightGroups_.push_back(std::make_unique(name)); } - /// file weights - else if (foundGroup && isAWeight(headerLine)) { - //std::cout << "Adding new weight for headerLine" << std::endl; - auto tagsMap = getAttributeMap(headerLine); - for(auto pair: tagsMap) { - std::cout << pair.first << ": " << pair.second << " | "; - } - std::cout << "\n"; + else if (isAWeight(headerLine)) { + currWeightAttributeMap_.clear(); + // This shouldn't really happen, but perhaps we find weights outside of weight groups? + if (currGroupAttributeMap_.empty()) + weightGroups_.push_back(std::make_unique("Unknown")); + currWeightAttributeMap_ = getAttributeMap(headerLine); - std::string content = tagsMap["content"]; - if (tagsMap["id"].empty()) { + std::string content = currWeightAttributeMap_["content"]; + if (currWeightAttributeMap_["id"].empty()) { std::cout << "error" << "\n"; // should do something } auto& group = weightGroups_.back(); if (group.weightType() == gen::kScaleWeights) { - if (tagsMap["mur"].empty() || tagsMap["muf"].empty()) { - std::cout << "error" << "\n"; - // something should happen here - continue; + if (currWeightAttributeMap_["mur"].empty() || currWeightAttributeMap_["muf"].empty()) + group.setIsWellFormed(false); + else { + try { + float muR = std::stof(currWeightAttributeMap_["mur"]); + float muF = std::stof(currWeightAttributeMap_["muf"]); + auto& scaleGroup = dynamic_cast(group); + scaleGroup.addContainedId(index, currWeightAttributeMap_["id"], headerLine, muR, muF); + } + catch(std::invalid_argument& e) { + group.setIsWellFormed(false); + group.addContainedId(index, currWeightAttributeMap_["id"], headerLine); + } } - float muR = std::stof(tagsMap["mur"]); - float muF = std::stof(tagsMap["muf"]); - std::cout << tagsMap["id"] << " " << muR << " " << muF << " " << content << "\n"; - auto& scaleGroup = static_cast(group); - scaleGroup.addContainedId(index, tagsMap["id"], headerLine, muR, muF); } else - group.addContainedId(index, tagsMap["id"], headerLine); + group.addContainedId(index, currWeightAttributeMap_["id"], headerLine); index++; } - // commented out since code doesn't work with this in.... - // else if(isAWeight(headerLine)) { - // // found header. Don't know what to do with it so just shove it into a new weightgroup for now - // // do minimum work for it - // weightGroups_.push_back(new gen::PdfWeightGroupInfo(headerLine)); - // auto& group = weightGroups_.back(); - // auto tagsMap = getAttributeMap(headerLine); - // group.addContainedId(index, tagsMap["id"], headerLine); - // foundGroup = true; - // index++; - // } - - else if(std::regex_match(headerLine, weightGroupEnd_)) { - foundGroup = false; - } - else { - std::cout << "problem!!!" << "\n"; + else if (std::regex_match(headerLine, weightGroupEnd_)) { + if (!currGroupAttributeMap_.empty()) + setGroupInfo(); + currGroupAttributeMap_.clear(); + currWeightAttributeMap_.clear(); } + // Should be fine to ignore all other lines? Tend to be either empty or closing tag } } } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 990c471e675a4..8caacc6c4edae 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -1,6 +1,83 @@ #include "GeneratorInterface/Core/interface/WeightHelper.h" namespace gen { + WeightHelper::WeightHelper() : + pdfSetsInfo({ + // In principle this can be parsed from $LHAPDF_DATA_PATH/pdfsets.index, + // but do we really want to do that? Can also just hardcode a subset... + {"NNPDF31_nnlo_hessian_pdfas", 306000, kHessianUnc}, + {"NNPDF31_nnlo_as_0118", 303600, kMonteCarloUnc}, + {"NNPDF31_nlo_as_0118", 303400, kMonteCarloUnc}, + {"NNPDF31_nlo_hessian_pdfas", 305800, kHessianUnc}, + {"NNPDF31_nnlo_as_0108", 322500, kVariationSet}, + {"NNPDF31_nnlo_as_0110", 322700, kVariationSet}, + {"NNPDF31_nnlo_as_0112", 322900, kVariationSet}, + {"NNPDF31_nnlo_as_0114", 323100, kVariationSet}, + {"NNPDF31_nnlo_as_0117", 323300, kVariationSet}, + {"NNPDF31_nnlo_as_0119", 323500, kVariationSet}, + {"NNPDF31_nnlo_as_0122", 323700, kVariationSet}, + {"NNPDF31_nnlo_as_0124", 323900, kVariationSet}, + {"NNPDF31_nlo_as_0118_nf_4", 320500, kMonteCarloUnc}, + {"NNPDF31_nnlo_as_0118_nf_4", 320900, kMonteCarloUnc}, + {"NNPDF30_nlo_nf_5_pdfas", 292200, kMonteCarloUnc}, + {"NNPDF30_nnlo_nf_5_pdfas", 292600, kMonteCarloUnc}, + {"NNPDF30_nnlo_nf_4_pdfas", 292400, kMonteCarloUnc}, + {"NNPDF30_nlo_nf_4_pdfas", 292000, kMonteCarloUnc}, + {"NNPDF30_lo_as_0130", 263000, kMonteCarloUnc}, + {"NNPDF30_lo_as_0118", 262000, kMonteCarloUnc}, + {"CT14nnlo", 13000, kHessianUnc}, + {"CT14nlo", 13100, kHessianUnc}, + {"CT14nnlo_as_0116", 13065, kVariationSet}, + {"CT14nnlo_as_0120", 13069, kVariationSet}, + {"CT14nlo_as_0116", 13163, kVariationSet}, + {"CT14nlo_as_0120", 13167, kVariationSet}, + {"CT14lo", 13200, kVariationSet}, + {"MMHT2014nlo68clas118", 25200, kHessianUnc}, + {"MMHT2014nnlo68cl", 25300, kHessianUnc}, + {"MMHT2014lo68cl", 25000, kHessianUnc}, + {"PDF4LHC15_nlo_100_pdfas", 90200, kMonteCarloUnc}, + {"PDF4LHC15_nnlo_100_pdfas", 91200, kMonteCarloUnc}, + {"PDF4LHC15_nlo_30_pdfas", 90400, kMonteCarloUnc}, + {"PDF4LHC15_nnlo_30_pdfas", 91400, kMonteCarloUnc}, + {"ABMP16als118_5_nnlo", 42780, kHessianUnc}, + {"HERAPDF20_NLO_EIG", 61130, kHessianUnc}, + {"HERAPDF20_NNLO_EIG", 61200, kHessianUnc}, + {"HERAPDF20_NLO_VAR", 61130, kHessianUnc}, + {"HERAPDF20_NNLO_VAR", 61230, kHessianUnc}, + {"CT14qed_inc_proton", 13400, kHessianUnc}, + {"LUXqed17_plus_PDF4LHC15_nnlo_100", 82200, kMonteCarloUnc}, + }) + {} + + void WeightHelper::setGroupInfo() { + auto& group = weightGroups_.back(); + const std::string& name = group.name(); + if (group.weightType() == kPdfWeights) { + PdfWeightGroupInfo* pdfGroup = dynamic_cast(&group); + auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), + [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }); + if (pdfInfo != pdfSetsInfo.end()) { + pdfGroup->setUncertaintyType(pdfInfo->uncertaintyType); + pdfGroup->addLhapdfId(pdfInfo->lhapdfId, 0); + } + else + pdfGroup->setIsWellFormed(false); + } + } + + bool WeightHelper::currentGroupIsScale() { + std::string name = boost::algorithm::to_lower_copy(currGroupAttributeMap_["name"]); + return (name.find("scale") != std::string::npos); + } + + bool WeightHelper::currentGroupIsPdf() { + std::string name = currGroupAttributeMap_["name"]; + if (boost::algorithm::to_lower_copy(name).find("pdf") != std::string::npos) + return true; + return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), + [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }) != pdfSetsInfo.end(); + } + // TODO: Could probably recycle this code better std::unique_ptr WeightHelper::weightProduct(std::vector weights) { auto weightProduct = std::make_unique(); diff --git a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index 0634cd548d0f7..e856a9a34e876 100644 --- a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -19,7 +19,7 @@ process.testGenWeights = cms.EDProducer("GenWeightProductProducer") process.p = cms.Path(process.testLHEWeights*process.testGenWeights) -#process.p = cms.Path(process.testGenWeights) +#process.p = cms.Path(process.testLHEWeights) process.output = cms.EndPath(process.out) process.schedule = cms.Schedule(process.p,process.output) diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/LHEInterface/test/testWeights.py index 26f858ec1431c..24e7c99e2465b 100644 --- a/GeneratorInterface/LHEInterface/test/testWeights.py +++ b/GeneratorInterface/LHEInterface/test/testWeights.py @@ -1,45 +1,45 @@ -from DataFormats.FWLite import Events,Handle,Runs +from DataFormats.FWLite import Events,Handle,Runs,Lumis import ROOT #source = "externalLHEProducer" -#source = "testLHEWeights" -source = "testGenWeights" +sources = ["testLHEWeights", "testGenWeights"] +#source = "testGenWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: for filename in ["test.root"]: - runs = Runs(filename) - run = runs.__iter__().next() - weightInfoHandle = Handle("GenWeightInfoProduct") - run.getByLabel(source, weightInfoHandle) - weightInfoProd = weightInfoHandle.product() + for source in sources: + lumis = Lumis(filename) + lumi = lumis.__iter__().next() + weightInfoHandle = Handle("GenWeightInfoProduct") + lumi.getByLabel(source, weightInfoHandle) + weightInfoProd = weightInfoHandle.product() - events = Events(filename) - event = events.__iter__().next() - weightHandle = Handle("GenWeightProduct") - event.getByLabel(source, weightHandle) - weightInfo = weightHandle.product() - print weightInfo - print len(weightInfo.weights()) - print weightInfoProd.allWeightGroupsInfo() - print len(weightInfoProd.allWeightGroupsInfo()) - print "Content of the weights" - for j, weights in enumerate(weightInfo.weights()): - print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 - matching = weightInfoProd.orderedWeightGroupInfo(j) - print "Group is", matching - if matching.weightType() == 1: - for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: - name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" - print name, getattr(matching, name)() - elif matching.weightType() == 0: - print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" - print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) - print "-"*80 - for i,weight in enumerate(weights): - print i, weight - info = matching.weightMetaInfo(i) - print " ID, localIndex, globalIndex, label, set:", info.id, info.localIndex, info.globalIndex, info.label, matching.name() - print "-"*80 + events = Events(filename) + event = events.__iter__().next() + weightHandle = Handle("GenWeightProduct") + event.getByLabel(source, weightHandle) + weightInfo = weightHandle.product() + print weightInfoProd.allWeightGroupsInfo(), len(weightInfoProd.allWeightGroupsInfo()) + print "Content of the weights" + for j, weights in enumerate(weightInfo.weights()): + print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 + matching = weightInfoProd.orderedWeightGroupInfo(j) + print "Group is", matching, "name is", matching.name(), "well formed?", matching.isWellFormed() + if matching.weightType() == 1: + for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: + name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" + print name, getattr(matching, name)() + elif matching.weightType() == 0: + print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" + print "contains LHAPDFIds", len(matching.lhapdfIdsContained()), [i for i in matching.lhapdfIdsContained()], + print "Has alphas? ", matching.hasAlphasVariations() + print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) + print "-"*80 + for i,weight in enumerate(weights): + print i, weight + info = matching.weightMetaInfo(i) + print " ID, localIndex, globalIndex, label, set:", info.id, info.localIndex, info.globalIndex, info.label, matching.name() + print "-"*80 diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index fd81e15687daf..54556811ac4d8 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -2,11 +2,13 @@ #define SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include namespace gen { enum PdfUncertaintyType { kHessianUnc, kMonteCarloUnc, + kVariationSet, kUnknownUnc, }; @@ -16,7 +18,7 @@ namespace gen { bool hasAlphasVars_; int alphasUpIndex_; int alphasDownIndex_; - std::vector> lhapdfIdsContained_; + std::vector> lhapdfIdsContained_; public: PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = kPdfWeights; } PdfWeightGroupInfo(std::string header, std::string name) : @@ -37,8 +39,8 @@ namespace gen { PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } - bool containsLhapdfId(size_t lhaid) const { return indexOfLhapdfId(lhaid) != -1; } - int indexOfLhapdfId(size_t lhaid) const { + bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } + int indexOfLhapdfId(int lhaid) const { for (const auto& id : lhapdfIdsContained_) { if (id.first == lhaid) return id.second; @@ -47,17 +49,19 @@ namespace gen { } int alphasUpIndex() const { return alphasUpIndex_; } int alphasDownIndex() const { return alphasDownIndex_; } - void addLhapdfId(size_t lhaid, size_t index) { + void addLhapdfId(int lhaid, int index) { lhapdfIdsContained_.push_back(std::make_pair(lhaid, index)); } - std::vector getLhapdfIdsContained() const { + std::vector lhapdfIdsContained() const { std::vector lhaids; - for (const auto& id : lhapdfIdsContained_) + for (const auto& id : lhapdfIdsContained_) { lhaids.push_back(id.first); + } return lhaids; } }; } + #endif // SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 4e0175bf9629c..5dfbf814f323e 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -6,6 +6,7 @@ namespace gen { hasAlphasVars_ = other.hasAlphasVariations(); alphasUpIndex_ = other.alphasDownIndex(); alphasDownIndex_ = other.alphasDownIndex(); + lhapdfIdsContained_ = other.lhapdfIdsContained_; WeightGroupInfo::copy(other); } From 2b1b520300ec3465bb7cf26a6467d257ac647bf5 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 7 Oct 2019 08:52:49 -0400 Subject: [PATCH 048/186] Remove dummy analyzer --- GeneratorInterface/Core/src/WeightHelper.cc | 1 + .../test/dumpWeightInfo.py} | 0 .../TestAnalyzer/plugins/BuildFile.xml | 6 - .../TestAnalyzer/plugins/TestAnalyzer.cc | 162 ------------------ .../TestAnalyzer/test/BuildFile.xml | 4 - .../test/test_catch2_TestAnalyzer.cc | 51 ------ .../TestAnalyzer/test/test_catch2_main.cc | 2 - TestWeightInfo/TestAnalyzer/test/test_cfg.py | 17 -- 8 files changed, 1 insertion(+), 242 deletions(-) rename GeneratorInterface/{LHEInterface/test/testWeights.py => Core/test/dumpWeightInfo.py} (100%) delete mode 100644 TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml delete mode 100644 TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc delete mode 100644 TestWeightInfo/TestAnalyzer/test/BuildFile.xml delete mode 100644 TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc delete mode 100644 TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc delete mode 100644 TestWeightInfo/TestAnalyzer/test/test_cfg.py diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 8caacc6c4edae..fbf58491198de 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -5,6 +5,7 @@ namespace gen { pdfSetsInfo({ // In principle this can be parsed from $LHAPDF_DATA_PATH/pdfsets.index, // but do we really want to do that? Can also just hardcode a subset... + // TODO: Actually we can just take this from LHAPDF {"NNPDF31_nnlo_hessian_pdfas", 306000, kHessianUnc}, {"NNPDF31_nnlo_as_0118", 303600, kMonteCarloUnc}, {"NNPDF31_nlo_as_0118", 303400, kMonteCarloUnc}, diff --git a/GeneratorInterface/LHEInterface/test/testWeights.py b/GeneratorInterface/Core/test/dumpWeightInfo.py similarity index 100% rename from GeneratorInterface/LHEInterface/test/testWeights.py rename to GeneratorInterface/Core/test/dumpWeightInfo.py diff --git a/TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml b/TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml deleted file mode 100644 index 29ffa306d8174..0000000000000 --- a/TestWeightInfo/TestAnalyzer/plugins/BuildFile.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc b/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc deleted file mode 100644 index 1cb1c7ca73e9a..0000000000000 --- a/TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc +++ /dev/null @@ -1,162 +0,0 @@ -// -*- C++ -*- -// -// Package: TestWeightInfo/TestAnalyzer -// Class: TestAnalyzer -// -/**\class TestAnalyzer TestAnalyzer.cc TestWeightInfo/TestAnalyzer/plugins/TestAnalyzer.cc - - Description: [one line class summary] - - Implementation: - [Notes on implementation] -*/ -// -// Original Author: Kenneth David Long -// Created: Wed, 18 Sep 2019 13:44:58 GMT -// -// - - -// system include files -#include - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/one/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Run.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - #include "FWCore/Utilities/interface/InputTag.h" - #include "DataFormats/TrackReco/interface/Track.h" - #include "DataFormats/TrackReco/interface/TrackFwd.h" - #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" - #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" - #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" -// -// class declaration -// - -// If the analyzer does not use TFileService, please remove -// the template argument to the base class so the class inherits -// from edm::one::EDAnalyzer<> -// This will improve performance in multithreaded jobs. - - -using reco::TrackCollection; - -class TestAnalyzer : public edm::one::EDAnalyzer { - public: - explicit TestAnalyzer(const edm::ParameterSet&); - ~TestAnalyzer(); - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - - private: - edm::EDGetTokenT lheWeightInfoToken_; - virtual void beginJob() override; - void beginRun(edm::Run const& iRun, edm::EventSetup const&) override; - void endRun(edm::Run const& iRun, edm::EventSetup const&) override; - virtual void analyze(const edm::Event&, const edm::EventSetup&) override; - virtual void endJob() override; - - // ----------member data --------------------------- -}; - -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - -// -// constructors and destructor -// -TestAnalyzer::TestAnalyzer(const edm::ParameterSet& iConfig) : - lheWeightInfoToken_(consumes(edm::InputTag("externalLHEProducer"))) -{ - //now do what ever initialization is needed - -} - - -TestAnalyzer::~TestAnalyzer() -{ - - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) - -} - - -// -// member functions -// - -// ------------ method called for each event ------------ -void -TestAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - std::cerr << "Event" << std::endl; -} - -#ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE - ESHandle pSetup; - iSetup.get().get(pSetup); -#endif - - -// ------------ method called once each job just before starting event loop ------------ -void -TestAnalyzer::beginJob() -{ -} - -// ------------ method called once each job just after ending the event loop ------------ -void -TestAnalyzer::endJob() -{ -} - -void TestAnalyzer::endRun(edm::Run const& iRun, edm::EventSetup const&) {} - -void TestAnalyzer::beginRun(edm::Run const& iRun, edm::EventSetup const&) -{ - edm::Handle lheWeightInfoHandle; - iRun.getByToken( lheWeightInfoToken_, lheWeightInfoHandle ); - - const GenWeightInfoProduct* lheProd = lheWeightInfoHandle.product(); - edm::OwnVector groups = lheProd->allWeightGroupsInfo(); - for (const auto& group : groups) { - std::cout << "Type of the weight is " << group.weightType() << " name is " << group.name() << std::endl; - if (group.weightType() == 1) { - //gen::ScaleWeightGroupInfo* scaleInfo = group.clone();//static_cast(group); - const gen::ScaleWeightGroupInfo* scaleInfo = dynamic_cast(&group); - std::cout << "muR05muF1 " << scaleInfo->muR05muF1Index() << std::endl; - std::cout << "muR05muF05 " << scaleInfo->muR05muF05Index() << std::endl; - } - } -} -// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ -void -TestAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - //The following says we do not know what parameters are allowed so do no validation - // Please change this to state exactly what you do use, even if it is no parameters - edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); - - //Specify that only 'tracks' is allowed - //To use, remove the default given above and uncomment below - //ParameterSetDescription desc; - //desc.addUntracked("tracks","ctfWithMaterialTracks"); - //descriptions.addDefault(desc); -} - -//define this as a plug-in -DEFINE_FWK_MODULE(TestAnalyzer); diff --git a/TestWeightInfo/TestAnalyzer/test/BuildFile.xml b/TestWeightInfo/TestAnalyzer/test/BuildFile.xml deleted file mode 100644 index 853ca18422452..0000000000000 --- a/TestWeightInfo/TestAnalyzer/test/BuildFile.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc b/TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc deleted file mode 100644 index fa1c318a56534..0000000000000 --- a/TestWeightInfo/TestAnalyzer/test/test_catch2_TestAnalyzer.cc +++ /dev/null @@ -1,51 +0,0 @@ -#include "catch.hpp" -#include "FWCore/TestProcessor/interface/TestProcessor.h" -#include "FWCore/Utilities/interface/Exception.h" - -static constexpr auto s_tag = "[TestAnalyzer]"; - -TEST_CASE("Standard checks of TestAnalyzer", s_tag) { - const std::string baseConfig{ -R"_(from FWCore.TestProcessor.TestProcess import * -process = TestProcess() -process.toTest = cms.EDProducer("TestAnalyzer" -#necessary configuration parameters - ) -process.moduleToTest(process.toTest) -)_" - }; - - edm::test::TestProcessor::Config config{ baseConfig }; - SECTION("base configuration is OK") { - REQUIRE_NOTHROW(edm::test::TestProcessor(config)); - } - - SECTION("No event data") { - edm::test::TestProcessor tester(config); - - REQUIRE_THROWS_AS(tester.test(), cms::Exception); - //If the module does not throw when given no data, substitute - //REQUIRE_NOTHROW for REQUIRE_THROWS_AS - } - - SECTION("beginJob and endJob only") { - edm::test::TestProcessor tester(config); - - REQUIRE_NOTHROW(tester.testBeginAndEndJobOnly()); - } - - SECTION("Run with no LuminosityBlocks") { - edm::test::TestProcessor tester(config); - - REQUIRE_NOTHROW(tester.testRunWithNoLuminosityBlocks()); - } - - SECTION("LuminosityBlock with no Events") { - edm::test::TestProcessor tester(config); - - REQUIRE_NOTHROW(tester.testLuminosityBlockWithNoEvents()); - } - -} - -//Add additional TEST_CASEs to exercise the modules capabilities diff --git a/TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc b/TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc deleted file mode 100644 index 0c7c351f437f5..0000000000000 --- a/TestWeightInfo/TestAnalyzer/test/test_catch2_main.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define CATCH_CONFIG_MAIN -#include "catch.hpp" diff --git a/TestWeightInfo/TestAnalyzer/test/test_cfg.py b/TestWeightInfo/TestAnalyzer/test/test_cfg.py deleted file mode 100644 index f856a8ce87a42..0000000000000 --- a/TestWeightInfo/TestAnalyzer/test/test_cfg.py +++ /dev/null @@ -1,17 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -process = cms.Process("test") - -process.source = cms.Source("PoolSource", - # replace 'myfile.root' with the source file you want to use - fileNames = cms.untracked.vstring("/store/mc/RunIISummer16MiniAODv3/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v2/20000/CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root") - ) - -process.TFileService = cms.Service("TFileService", - fileName = cms.string("test.root") -) - -process.testWeights = cms.EDAnalyzer("LHEWeightProductProducer") - -process.p = cms.Path(process.testWeights) - From d307670532843a19d40b326ed6676f918c46c92e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 7 Oct 2019 12:42:22 -0400 Subject: [PATCH 049/186] Move example weight test producer --- GeneratorInterface/Core/plugins/BuildFile.xml | 9 ++++-- .../plugins/GenWeightsTestAnalyzer.cc} | 32 +++++++++---------- .../Core/src/LHEWeightHelper.cc | 2 +- .../testGenWeights_simpleZanalyzer_cfg.py} | 2 +- .../LHEInterface/plugins/BuildFile.xml | 17 ---------- 5 files changed, 25 insertions(+), 37 deletions(-) rename GeneratorInterface/{LHEInterface/plugins/LHEWeightsTest.cc => Core/plugins/GenWeightsTestAnalyzer.cc} (93%) rename GeneratorInterface/{LHEInterface/test/test_ZPlotting_LHEweights_cfg.py => Core/test/testGenWeights_simpleZanalyzer_cfg.py} (97%) diff --git a/GeneratorInterface/Core/plugins/BuildFile.xml b/GeneratorInterface/Core/plugins/BuildFile.xml index af12a8119d35c..83ce8d6a7c13d 100644 --- a/GeneratorInterface/Core/plugins/BuildFile.xml +++ b/GeneratorInterface/Core/plugins/BuildFile.xml @@ -6,7 +6,12 @@ + + + + + + + - - diff --git a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc similarity index 93% rename from GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc rename to GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc index c0af4f32791fc..7c87b477e962b 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEWeightsTest.cc +++ b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc @@ -1,9 +1,9 @@ // -*- C++ -*- // -// Package: GenAnalysis/LHEWeightsTest -// Class: LHEWeightsTest +// Package: GenAnalysis/GenWeightsTestAnalyzer +// Class: GenWeightsTestAnalyzer // -/**\class LHEWeightsTest LHEWeightsTest.cc GenAnalysis/LHEWeightsTest/plugins/LHEWeightsTest.cc +/**\class GenWeightsTestAnalyzer GenWeightsTestAnalyzer.cc GenAnalysis/GenWeightsTestAnalyzer/plugins/GenWeightsTestAnalyzer.cc Description: [one line class summary] @@ -66,10 +66,10 @@ // constructor "usesResource("TFileService");" // This will improve performance in multithreaded jobs. -class LHEWeightsTest : public edm::one::EDAnalyzer { +class GenWeightsTestAnalyzer : public edm::one::EDAnalyzer { public: - explicit LHEWeightsTest(const edm::ParameterSet&); - ~LHEWeightsTest(); + explicit GenWeightsTestAnalyzer(const edm::ParameterSet&); + ~GenWeightsTestAnalyzer(); static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); @@ -125,7 +125,7 @@ class LHEWeightsTest : public edm::one::EDAnalyzer("tag")), isMiniaod_(iConfig.getParameter("miniaod")), genParticleToken_(consumes(iConfig.getParameter("genParticleSrc"))), @@ -160,7 +160,7 @@ LHEWeightsTest::LHEWeightsTest(const edm::ParameterSet& iConfig) : } -LHEWeightsTest::~LHEWeightsTest() +GenWeightsTestAnalyzer::~GenWeightsTestAnalyzer() { // do anything here that needs to be done at desctruction time @@ -279,7 +279,7 @@ bool has_v_in_history(reco::GenParticle const & part){ } } -void LHEWeightsTest::setup_variables(const edm::Event& iEvent) { +void GenWeightsTestAnalyzer::setup_variables(const edm::Event& iEvent) { using namespace edm; //// Initialize with dummy values @@ -331,7 +331,7 @@ void LHEWeightsTest::setup_variables(const edm::Event& iEvent) { variables["ht"] = ht; } -std::vector LHEWeightsTest::setup_weights(const edm::Event& iEvent) { +std::vector GenWeightsTestAnalyzer::setup_weights(const edm::Event& iEvent) { edm::Handle lheWeightHandle; iEvent.getByToken(lheWeightToken_, lheWeightHandle); const GenWeightProduct * lheWeights = lheWeightHandle.product(); @@ -348,7 +348,7 @@ std::vector LHEWeightsTest::setup_weights(const edm::Event& iEvent) { // ------------ method called for each event ------------ void -LHEWeightsTest::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) +GenWeightsTestAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { using namespace edm; @@ -371,19 +371,19 @@ LHEWeightsTest::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) // ------------ method called once each job just before starting event loop ------------ void -LHEWeightsTest::beginJob() +GenWeightsTestAnalyzer::beginJob() { } // ------------ method called once each job just after ending the event loop ------------ void -LHEWeightsTest::endJob() +GenWeightsTestAnalyzer::endJob() { } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void -LHEWeightsTest::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +GenWeightsTestAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { //The following says we do not know what parameters are allowed so do no validation // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; @@ -392,7 +392,7 @@ LHEWeightsTest::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { } void -LHEWeightsTest::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const& es) { +GenWeightsTestAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const& es) { //edm::Handle lheWeightsInfoHandle; //edm::Handle lheWeightsInfoHandle; //run.getByLabel("generator", lheWeightsInfoHandle); @@ -424,5 +424,5 @@ LHEWeightsTest::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::Eve } //define this as a plug-in -DEFINE_FWK_MODULE(LHEWeightsTest); +DEFINE_FWK_MODULE(GenWeightsTestAnalyzer); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index ddaea95dd75bb..f63120b427400 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -73,7 +73,7 @@ namespace gen { auto rawLabel = boost::algorithm::to_lower_copy(entry.first); std::string label = nameConversionMap_[rawLabel]; if (nameConversionMap_.find(label) != nameConversionMap_.end()) - attributeMap.at(nameConversionMap_[label]) = entry.second; + attributeMap[nameConversionMap_[label]] = entry.second; else attributeMap[label] = entry.second; } diff --git a/GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py b/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py similarity index 97% rename from GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py rename to GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py index a0acb131f23c4..0a6bfe3336233 100644 --- a/GeneratorInterface/LHEInterface/test/test_ZPlotting_LHEweights_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py @@ -61,7 +61,7 @@ def commandline(): process.testWeights = cms.EDProducer("LHEWeightProductProducer") -process.demo = cms.EDAnalyzer('LHEWeightsTest', +process.demo = cms.EDAnalyzer('GenWeightsTestAnalyzer', tag = cms.string(options.tag), miniaod = cms.bool(options.isMiniAOD), genParticleSrc = cms.InputTag("prunedGenParticles" if options.isMiniAOD else "genParticles"), diff --git a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml index c9f6865d98d5a..96e1834824f70 100644 --- a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml @@ -17,20 +17,3 @@ - - - - - - - - - - - - - - - - - From bbdd4626eed90e045dfdc0a1826da10673187d4a Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 7 Oct 2019 18:09:32 -0400 Subject: [PATCH 050/186] Add PDF and PS weights in example --- .../Core/plugins/GenWeightsTestAnalyzer.cc | 54 ++++++++++++++----- .../Core/src/LHEWeightHelper.cc | 4 +- .../testGenWeights_simpleZanalyzer_cfg.py | 5 +- 3 files changed, 46 insertions(+), 17 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc index 7c87b477e962b..aead5ad2baff4 100644 --- a/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc @@ -88,13 +88,15 @@ class GenWeightsTestAnalyzer : public edm::one::EDAnalyzer scaleWeightsOrder_; - unsigned int scaleWeightsIndex_; + int scaleWeightsIndex_; + int pdfWeightsIndex_; edm::EDGetTokenT genParticleToken_; edm::EDGetTokenT genJetToken_; edm::EDGetTokenT LHEToken_; edm::EDGetTokenT GenToken_; edm::EDGetTokenT lheWeightToken_; + edm::EDGetTokenT genWeightToken_; edm::EDGetTokenT lheWeightInfoToken_; edm::Service fileservice; @@ -128,12 +130,15 @@ class GenWeightsTestAnalyzer : public edm::one::EDAnalyzer("tag")), isMiniaod_(iConfig.getParameter("miniaod")), + scaleWeightsIndex_(-1), + pdfWeightsIndex_(-1), genParticleToken_(consumes(iConfig.getParameter("genParticleSrc"))), genJetToken_(consumes(iConfig.getParameter("genJetSrc"))), LHEToken_(consumes(iConfig.getParameter("LHESrc"))), GenToken_(consumes(iConfig.getParameter("GenSrc"))), - lheWeightToken_(consumes(edm::InputTag("testWeights"))), - lheWeightInfoToken_(consumes(edm::InputTag("testWeights"))) + lheWeightToken_(consumes(edm::InputTag("testLheWeights"))), + genWeightToken_(consumes(edm::InputTag("testGenWeights"))), + lheWeightInfoToken_(consumes(edm::InputTag("testLheWeights"))) { //now do what ever initialization is needed @@ -333,15 +338,32 @@ void GenWeightsTestAnalyzer::setup_variables(const edm::Event& iEvent) { } std::vector GenWeightsTestAnalyzer::setup_weights(const edm::Event& iEvent) { edm::Handle lheWeightHandle; + edm::Handle genWeightHandle; iEvent.getByToken(lheWeightToken_, lheWeightHandle); - const GenWeightProduct * lheWeights = lheWeightHandle.product(); - WeightsContainer weights = lheWeights->weights(); - auto scaleWeights = weights.at(scaleWeightsIndex_); + iEvent.getByToken(genWeightToken_, genWeightHandle); + const GenWeightProduct * lheWeightProduct = lheWeightHandle.product(); + const GenWeightProduct * genWeightProduct = genWeightHandle.product(); + WeightsContainer lheWeights = lheWeightProduct->weights(); + WeightsContainer genWeights = genWeightProduct->weights(); + + auto scaleWeights = scaleWeightsIndex_ >= 0 ? lheWeights.at(scaleWeightsIndex_) : std::vector(); + auto pdfWeights = pdfWeightsIndex_ > 0 ? lheWeights.at(pdfWeightsIndex_) : std::vector(); std::vector keepWeights; for(auto i : scaleWeightsOrder_){ - keepWeights.push_back(scaleWeights[i]); + keepWeights.push_back(scaleWeights.at(i)); } + + for(auto& weight : pdfWeights){ + keepWeights.push_back(weight); + } + + if (genWeights.size() > 0) { + for(auto& weight : genWeights.front()){ + keepWeights.push_back(weight); + } + } + return keepWeights; } @@ -400,7 +422,10 @@ GenWeightsTestAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Should add a search by name function - scaleWeightsIndex_ = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights).front(); + auto allScaleWeights = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights); + if (allScaleWeights.size() > 0) + scaleWeightsIndex_ = allScaleWeights.front(); + auto scaleWeights = static_cast( lheWeightInfoHandle->orderedWeightGroupInfo(scaleWeightsIndex_)); // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; @@ -416,11 +441,14 @@ GenWeightsTestAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, scaleWeightsOrder_.push_back(scaleWeights->muR2muF1Index()); scaleWeightsOrder_.push_back(scaleWeights->muR2muF2Index()); - //auto pdfSets = lheWeightInfoHandle->weightGroupIndicesByType(gen::kPdfWeights); - - //for (const auto& pdfSet : pdfSets) { - // keepPdfIndex_ = pdfSet.indexOfLhapdfId(KEEP_LHAPDFID_); - // if (keepPdfIdex = -1) + auto pdfGroups = lheWeightInfoHandle->weightGroupsByType(gen::kPdfWeights); + auto ct14Set = std::find_if(pdfGroups.begin(), pdfGroups.end(), + [] (gen::WeightGroupInfo* group) { + auto pdfGroup = dynamic_cast(group); + return pdfGroup->containsLhapdfId(1300); + }); + if (ct14Set != pdfGroups.end()) + pdfWeightsIndex_ = std::distance(pdfGroups.begin(), ct14Set); } //define this as a plug-in diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index f63120b427400..73fb67b19b195 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -135,8 +135,8 @@ namespace gen { else if (isAWeight(headerLine)) { currWeightAttributeMap_.clear(); // This shouldn't really happen, but perhaps we find weights outside of weight groups? - if (currGroupAttributeMap_.empty()) - weightGroups_.push_back(std::make_unique("Unknown")); + //if (weightGroups_.empty()) + // weightGroups_.push_back(std::make_unique("Unknown")); currWeightAttributeMap_ = getAttributeMap(headerLine); std::string content = currWeightAttributeMap_["content"]; diff --git a/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py b/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py index 0a6bfe3336233..4e364b0aa2557 100644 --- a/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py @@ -59,7 +59,8 @@ def commandline(): fileNames = cms.untracked.vstring( options.inputFiles ) ) -process.testWeights = cms.EDProducer("LHEWeightProductProducer") +process.testLheWeights = cms.EDProducer("LHEWeightProductProducer") +process.testGenWeights = cms.EDProducer("GenWeightProductProducer") process.demo = cms.EDAnalyzer('GenWeightsTestAnalyzer', tag = cms.string(options.tag), @@ -73,5 +74,5 @@ def commandline(): process.TFileService = cms.Service("TFileService", fileName = cms.string("analysis_{TAG}.root".format(TAG=options.tag)) ) -process.p = cms.Path(process.testWeights*process.demo) +process.p = cms.Path(process.testLheWeights*process.testGenWeights*process.demo) From 916af263127388c664ff9ab32f70448a3bdf3b9e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 8 Oct 2019 11:16:58 -0400 Subject: [PATCH 051/186] Make the test script more general --- .../Core/plugins/LHEWeightProductProducer.cc | 12 ++++++----- .../Core/test/testGenWeightProducer_cfg.py | 21 ++++++++++++++----- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 3310410615b59..0c98c2832d1a4 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -33,6 +33,7 @@ class LHEWeightProductProducer : public edm::one::EDProducer lheRunInfoToken_; edm::EDGetTokenT lheEventToken_; @@ -47,10 +48,11 @@ class LHEWeightProductProducer : public edm::one::EDProducer(edm::InputTag("externalLHEProducer"))), - //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))), - lheEventToken_(consumes(edm::InputTag("externalLHEProducer"))) - //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) + lheLabel_(iConfig.getUntrackedParameter("lheSourceLabel")), + lheRunInfoToken_(consumes( + iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))), + lheEventToken_(consumes( + iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) { produces(); produces(); @@ -78,7 +80,7 @@ LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& e edm::Handle lheRunInfoHandle; //run.getByToken(lheRunInfoToken_, lheRunInfoHandle); // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) - run.getByLabel("externalLHEProducer", lheRunInfoHandle); + run.getByLabel(lheLabel_, lheRunInfoHandle); typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; diff --git a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index e856a9a34e876..cc1e1830d2d68 100644 --- a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -1,21 +1,32 @@ import FWCore.ParameterSet.Config as cms +from FWCore.ParameterSet.VarParsing import VarParsing + +options = VarParsing('analysis') +options.register( + "lheSource", + "externalLHEProducer", + VarParsing.multiplicity.singleton, + VarParsing.varType.string, + "LHE source (default externalLHEProducer)" +) +options.parseArguments() process = cms.Process("test") process.source = cms.Source("PoolSource", - # replace 'myfile.root' with the source file you want to use - fileNames = cms.untracked.vstring("/store/mc/RunIIAutumn18MiniAOD/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15-v1/80000/E53E0D52-39FF-6F42-A8B2-EEF28EEB4C43.root") - #fileNames = cms.untracked.vstring("file:CCC44F9F-64EF-E811-8F69-7845C4FBBD07.root"), + fileNames = cms.untracked.vstring(options.inputFiles) ) -process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(100)) +process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(options.maxEvents)) process.out = cms.OutputModule("PoolOutputModule", fileName = cms.untracked.string('test.root'), outputCommands = cms.untracked.vstring(['keep *']) ) -process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer") +process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer", + lheSource=cms.untracked.InputTag(options.lheSource), + lheSourceLabel=cms.untracked.string(options.lheSource)) process.testGenWeights = cms.EDProducer("GenWeightProductProducer") process.p = cms.Path(process.testLHEWeights*process.testGenWeights) From 70cdb973eb995bd020db9d8830f0ef53bb3fd043 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 19 Dec 2019 17:06:45 +0100 Subject: [PATCH 052/186] New LHEWeightsTableProducer --- PhysicsTools/NanoAOD/BuildFile.xml | 1 + .../plugins/GenWeightsTableProducer.cc | 45 +----- .../plugins/LHEWeightsTableProducer.cc | 138 ++++++++++++++++++ PhysicsTools/NanoAOD/python/nanogen_cff.py | 114 +++++++++++++++ 4 files changed, 254 insertions(+), 44 deletions(-) create mode 100644 PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc create mode 100644 PhysicsTools/NanoAOD/python/nanogen_cff.py diff --git a/PhysicsTools/NanoAOD/BuildFile.xml b/PhysicsTools/NanoAOD/BuildFile.xml index c36ed4184624a..1d6f1f6d5dccb 100644 --- a/PhysicsTools/NanoAOD/BuildFile.xml +++ b/PhysicsTools/NanoAOD/BuildFile.xml @@ -5,6 +5,7 @@ + diff --git a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc index 77c8989defef1..9a86e108bc1b8 100644 --- a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc @@ -233,10 +233,6 @@ class GenWeightsTableProducer : public edm::global::EDProducer(); produces("genModel"); - produces("LHEScale"); - produces("LHEPdf"); - produces("LHEReweighting"); - produces("LHENamed"); produces("PS"); produces(); if (namedWeightIDs_.size() != namedWeightLabels_.size()) { @@ -273,7 +269,6 @@ class GenWeightsTableProducer : public edm::global::EDProducer lheScaleTab, lhePdfTab, lheRwgtTab, lheNamedTab; std::unique_ptr genPSTab; edm::Handle lheInfo; @@ -287,25 +282,16 @@ class GenWeightsTableProducer : public edm::global::EDProducer& outScale, - std::unique_ptr& outPdf, - std::unique_ptr& outRwgt, - std::unique_ptr& outNamed, std::unique_ptr& outPS) const { bool lheDebug = debug_.exchange( false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) @@ -367,31 +349,6 @@ class GenWeightsTableProducer : public edm::global::EDProduceraddColumn( - "", wScale, weightChoice->scaleWeightsDoc, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - outPdf.reset(new nanoaod::FlatTable(wPDF.size(), "LHEPdfWeight", false)); - outPdf->addColumn( - "", wPDF, weightChoice->pdfWeightsDoc, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - outRwgt.reset(new nanoaod::FlatTable(wRwgt.size(), "LHEReweightingWeight", false)); - outRwgt->addColumn( - "", wRwgt, weightChoice->rwgtWeightDoc, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - outNamed.reset(new nanoaod::FlatTable(1, "LHEWeight", true)); - outNamed->addColumnValue("originalXWGTUP", - lheProd.originalXWGTUP(), - "Nominal event weight in the LHE file", - nanoaod::FlatTable::FloatColumn); - for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) { - outNamed->addColumnValue(namedWeightLabels_[i], - wNamed[i], - "LHE weight for id " + namedWeightIDs_[i] + ", relative to nominal", - nanoaod::FlatTable::FloatColumn, - lheWeightPrecision_); - } - counter->incLHE(genWeight, wScale, wPDF, wRwgt, wNamed, wPS); } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc new file mode 100644 index 0000000000000..f3584332186c9 --- /dev/null +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -0,0 +1,138 @@ +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Run.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "DataFormats/NanoAOD/interface/FlatTable.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include +#include + +namespace { + + // join vector of strings to one string + std::string join(const std::vector& vec, const char* delim) { + std::stringstream res; + std::copy(vec.begin(), vec.end(), std::ostream_iterator(res, delim)); + return res.str(); + } + + struct LHEWeightInfo { + std::string id; + std::string text; + std::optional group = std::nullopt; + }; + + + std::vector getLHEWeightInfos(LHERunInfoProduct const& lheInfo) { + std::vector out; + + for (auto iter = lheInfo.headers_begin(), end = lheInfo.headers_end(); iter != end; ++iter) { + if (iter->tag() != "initrwgt") { + continue; + } + + tinyxml2::XMLDocument xmlDoc; + xmlDoc.Parse(("" + join(iter->lines(), "") + "").c_str()); + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + + for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { + if (strcmp(e->Name(), "weight") == 0) { + // we are here if there is a weight that does not belong to any group + std::string text = ""; + if(e->GetText()) text = e->GetText(); + out.push_back({e->Attribute("id"), text}); + } + if (strcmp(e->Name(), "weightgroup") == 0) { + std::string groupName = e->Attribute("name"); + for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; + inner = inner->NextSiblingElement("weight")) { + // we are here if there is a weight in a weightgroup + std::string text = ""; + if(inner->GetText()) text = inner->GetText(); + out.push_back({inner->Attribute("id"), text, groupName}); + } + } + } + } + + return out; + } + +} + +class LHEWeightsTableProducer : public edm::global::EDProducer>> { + public: + LHEWeightsTableProducer( edm::ParameterSet const & params ) : + lheInputTag_(params.getParameter("lheInfo")), + lheToken_(consumes(params.getParameter("lheInfo"))), + lheWeightPrecision_(params.getParameter("lheWeightPrecision")) + { + consumes(lheInputTag_); + produces(); + } + + void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { + // tables for LHE weights, may not be filled + auto const& lheInfo = iEvent.get(lheToken_); + + auto lheWeightsTab = std::make_unique(1, "LHEWeight", true); + + auto const& weightInfos = *runCache(iEvent.getRun().index()); + + double w0 = lheInfo.originalXWGTUP(); + + int i = 0; + if(lheInfo.weights().size() != weightInfos.size()) { + throw cms::Exception("LogicError", "Weight labels don't have the same size as weights!\n"); + } + for(auto const& weight : lheInfo.weights()) { + if(!weightInfos[i].group) { + // for now we ignore the ungrouped weights + continue; + } + auto const& label = (*weightInfos[i].group) + "__" + weightInfos[i].id; + lheWeightsTab->addColumnValue(label, weight.wgt / w0, weightInfos[i].text + " (w_var / w_nominal)", nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + ++i; + } + + iEvent.put(std::move(lheWeightsTab)); + } + + std::shared_ptr> globalBeginRun(edm::Run const& iRun, edm::EventSetup const&) const override { + edm::Handle lheInfo; + + auto weightChoice = std::make_shared>(); + + // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) + iRun.getByLabel(lheInputTag_, lheInfo); + if (lheInfo.isValid()) { + getLHEWeightInfos(*lheInfo).swap(*weightChoice); + } + + return weightChoice; + } + + // nothing to do here + void globalEndRun(edm::Run const&, edm::EventSetup const&) const override {} + + static void fillDescriptions(edm::ConfigurationDescriptions & descriptions) { + edm::ParameterSetDescription desc; + desc.add("lheInfo", {"externalLHEProducer"})->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); + descriptions.addDefault(desc); + } + + + protected: + const edm::InputTag lheInputTag_; + const edm::EDGetTokenT lheToken_; + int lheWeightPrecision_; +}; + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(LHEWeightsTableProducer); diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py new file mode 100644 index 0000000000000..d5efb1ced3282 --- /dev/null +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -0,0 +1,114 @@ +from PhysicsTools.NanoAOD.common_cff import * +from PhysicsTools.NanoAOD.taus_cff import * +from PhysicsTools.NanoAOD.jets_cff import * +from PhysicsTools.NanoAOD.globals_cff import * +from PhysicsTools.NanoAOD.genparticles_cff import * +from PhysicsTools.NanoAOD.particlelevel_cff import * +from PhysicsTools.NanoAOD.lheInfoTable_cfi import * + +# duplicate definition with nano_cff right now +genWeightsTable = cms.EDProducer( + "GenWeightsTableProducer", + genEvent = cms.InputTag("generator"), + genLumiInfoHeader = cms.InputTag("generator"), + lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), + preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html + cms.PSet(name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400)), + cms.PSet(name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000)), + # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... + cms.PSet(name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000)), + # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) + cms.PSet(name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000)), + # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) + cms.PSet(name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000)), + # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) + cms.PSet(name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200)), + ), + namedWeightIDs = cms.vstring(), + namedWeightLabels = cms.vstring(), + lheWeightPrecision = cms.int32(14), + maxPdfWeights = cms.uint32(150), + debug = cms.untracked.bool(False), +) + +lheWeightsTable = cms.EDProducer( + "LHEWeightsTableProducer", + lheInfo = cms.InputTag("externalLHEProducer"), + lheWeightPrecision = cms.int32(14), +) + +nanoMetadata = cms.EDProducer("UniqueStringProducer", + strings = cms.PSet( + tag = cms.string("untagged"), + ) +) + +metGenTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("genMetTrue"), + name = cms.string("GenMET"), + doc = cms.string("Gen MET"), + singleton = cms.bool(True), + extension = cms.bool(False), + variables = cms.PSet( + pt = Var("pt", float, doc="pt", precision=10), + phi = Var("phi", float, doc="phi", precision=10), + ), +) + +nanogenSequence = cms.Sequence( + nanoMetadata+ + particleLevel+ + genJetTable+ + patJetPartons+ + genJetFlavourAssociation+ + genJetFlavourTable+ + genJetAK8Table+ + genJetAK8FlavourAssociation+ + genJetAK8FlavourTable+ + tauGenJets+ + tauGenJetsSelectorAllHadrons+ + genVisTaus+ + genVisTauTable+ + genTable+ + genWeightsTable+ + lheWeightsTable+ + genParticleTables+ + tautagger+ + rivetProducerHTXS+ + particleLevelTables+ + metGenTable+ + lheInfoTable +) + +NANOAODGENoutput = cms.OutputModule("NanoAODOutputModule", + compressionAlgorithm = cms.untracked.string('LZMA'), + compressionLevel = cms.untracked.int32(9), + dataset = cms.untracked.PSet( + dataTier = cms.untracked.string('NANOAODSIM'), + filterName = cms.untracked.string('') + ), + fileName = cms.untracked.string('nanogen.root'), + outputCommands = cms.untracked.vstring( + 'drop *', + "keep nanoaodFlatTable_*Table_*_*", # event data + "keep String_*_genModel_*", # generator model data + "keep nanoaodMergeableCounterTable_*Table_*_*", # accumulated per/run or per/lumi data + "keep nanoaodUniqueString_nanoMetadata_*_*", # basic metadata + ) +) + +def customizeNanoGEN(process): + process.genParticleTable.src = "genParticles" + process.patJetPartons.particles = "genParticles" + process.particleLevel.src = "generatorSmeared" + process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" + + process.genJetTable.src = "ak4GenJetsNoNu" + process.genJetFlavourAssociation.jets = process.genJetTable.src + process.genJetFlavourTable.src = process.genJetTable.src + process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" + process.genJetAK8Table.src = "ak8GenJetsNoNu" + process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src + process.genJetAK8FlavourTable.src = process.genJetAK8Table.src + process.tauGenJets.GenParticles = "genParticles" + process.genVisTaus.srcGenParticles = "genParticles" From 205de35015c23df0523b8c1b52c7c857754b3c31 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 19 Dec 2019 18:59:47 +0100 Subject: [PATCH 053/186] Variable number of produced flat tables --- DataFormats/NanoAOD/src/classes_def.xml | 3 + .../plugins/LHEWeightsTableProducer.cc | 131 +++++++++--------- .../NanoAOD/plugins/NanoAODOutputModule.cc | 39 ++++-- .../NanoAOD/plugins/TableOutputBranches.cc | 5 +- .../NanoAOD/plugins/TableOutputBranches.h | 14 +- PhysicsTools/NanoAOD/python/nanogen_cff.py | 1 + 6 files changed, 108 insertions(+), 85 deletions(-) diff --git a/DataFormats/NanoAOD/src/classes_def.xml b/DataFormats/NanoAOD/src/classes_def.xml index 32c077349ff95..24d6da6064c73 100644 --- a/DataFormats/NanoAOD/src/classes_def.xml +++ b/DataFormats/NanoAOD/src/classes_def.xml @@ -9,6 +9,9 @@ + + + diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index f3584332186c9..66402e40bda4c 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -10,6 +10,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include +#include #include namespace { @@ -22,12 +23,11 @@ namespace { } struct LHEWeightInfo { - std::string id; - std::string text; - std::optional group = std::nullopt; + std::string id; + std::string text; + std::optional group = std::nullopt; }; - std::vector getLHEWeightInfos(LHERunInfoProduct const& lheInfo) { std::vector out; @@ -42,18 +42,20 @@ namespace { for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { if (strcmp(e->Name(), "weight") == 0) { - // we are here if there is a weight that does not belong to any group - std::string text = ""; - if(e->GetText()) text = e->GetText(); + // we are here if there is a weight that does not belong to any group + std::string text = ""; + if (e->GetText()) + text = e->GetText(); out.push_back({e->Attribute("id"), text}); } if (strcmp(e->Name(), "weightgroup") == 0) { - std::string groupName = e->Attribute("name"); + std::string groupName = e->Attribute("name"); for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; inner = inner->NextSiblingElement("weight")) { // we are here if there is a weight in a weightgroup std::string text = ""; - if(inner->GetText()) text = inner->GetText(); + if (inner->GetText()) + text = inner->GetText(); out.push_back({inner->Attribute("id"), text, groupName}); } } @@ -63,75 +65,80 @@ namespace { return out; } -} +} // namespace class LHEWeightsTableProducer : public edm::global::EDProducer>> { - public: - LHEWeightsTableProducer( edm::ParameterSet const & params ) : - lheInputTag_(params.getParameter("lheInfo")), - lheToken_(consumes(params.getParameter("lheInfo"))), - lheWeightPrecision_(params.getParameter("lheWeightPrecision")) - { - consumes(lheInputTag_); - produces(); - } - - void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { - // tables for LHE weights, may not be filled - auto const& lheInfo = iEvent.get(lheToken_); +public: + LHEWeightsTableProducer(edm::ParameterSet const& params) + : lheInputTag_(params.getParameter("lheInfo")), + lheToken_(consumes(params.getParameter("lheInfo"))), + lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { + consumes(lheInputTag_); + produces>(); + } - auto lheWeightsTab = std::make_unique(1, "LHEWeight", true); + void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { + // tables for LHE weights, may not be filled + auto const& lheInfo = iEvent.get(lheToken_); - auto const& weightInfos = *runCache(iEvent.getRun().index()); + auto lheWeightTables = std::make_unique>(); + auto const& weightInfos = *runCache(iEvent.getRun().index()); - double w0 = lheInfo.originalXWGTUP(); + double w0 = lheInfo.originalXWGTUP(); - int i = 0; - if(lheInfo.weights().size() != weightInfos.size()) { - throw cms::Exception("LogicError", "Weight labels don't have the same size as weights!\n"); - } - for(auto const& weight : lheInfo.weights()) { - if(!weightInfos[i].group) { - // for now we ignore the ungrouped weights - continue; - } - auto const& label = (*weightInfos[i].group) + "__" + weightInfos[i].id; - lheWeightsTab->addColumnValue(label, weight.wgt / w0, weightInfos[i].text + " (w_var / w_nominal)", nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - ++i; - } + int i = 0; + if (lheInfo.weights().size() != weightInfos.size()) { + throw cms::Exception("LogicError", "Weight labels don't have the same size as weights!\n"); + } + std::unordered_map> groupsWithWeights; + for (auto const& weight : lheInfo.weights()) { + if (!weightInfos[i].group) { + groupsWithWeights["ungrouped"].push_back(weight.wgt / w0); + } + groupsWithWeights[*weightInfos[i].group].push_back(weight.wgt / w0); + ++i; + } + for (auto const& group : groupsWithWeights) { + std::string name = std::string("LHEWeight_") + group.first; + std::transform(name.begin(), name.end(), name.begin(), [](char ch) { return ch == ' ' ? '_' : ch; }); + lheWeightTables->emplace_back(group.second.size(), name, false); + lheWeightTables->back().addColumn( + "", group.second, group.first + " (w_var / w_nominal)", nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + } - iEvent.put(std::move(lheWeightsTab)); - } + iEvent.put(std::move(lheWeightTables)); + } - std::shared_ptr> globalBeginRun(edm::Run const& iRun, edm::EventSetup const&) const override { - edm::Handle lheInfo; + std::shared_ptr> globalBeginRun(edm::Run const& iRun, + edm::EventSetup const&) const override { + edm::Handle lheInfo; - auto weightChoice = std::make_shared>(); + auto weightChoice = std::make_shared>(); - // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) - iRun.getByLabel(lheInputTag_, lheInfo); - if (lheInfo.isValid()) { - getLHEWeightInfos(*lheInfo).swap(*weightChoice); - } + // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) + iRun.getByLabel(lheInputTag_, lheInfo); + if (lheInfo.isValid()) { + getLHEWeightInfos(*lheInfo).swap(*weightChoice); + } - return weightChoice; - } + return weightChoice; + } // nothing to do here void globalEndRun(edm::Run const&, edm::EventSetup const&) const override {} - static void fillDescriptions(edm::ConfigurationDescriptions & descriptions) { - edm::ParameterSetDescription desc; - desc.add("lheInfo", {"externalLHEProducer"})->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); - desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); - descriptions.addDefault(desc); - } - + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("lheInfo", {"externalLHEProducer"}) + ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); + descriptions.addDefault(desc); + } - protected: - const edm::InputTag lheInputTag_; - const edm::EDGetTokenT lheToken_; - int lheWeightPrecision_; +protected: + const edm::InputTag lheInputTag_; + const edm::EDGetTokenT lheToken_; + int lheWeightPrecision_; }; #include "FWCore/Framework/interface/MakerMacros.h" diff --git a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc index 4499a23ef8cfb..f2a136a17f788 100644 --- a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc +++ b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc @@ -46,7 +46,6 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { public: NanoAODOutputModule(edm::ParameterSet const& pset); - ~NanoAODOutputModule() override; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); @@ -118,6 +117,8 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { } m_commonRunBranches; std::vector m_tables; + std::vector m_tableTokens; + std::vector m_tableVectorTokens; std::vector m_triggers; std::vector m_evstrings; @@ -149,8 +150,6 @@ NanoAODOutputModule::NanoAODOutputModule(edm::ParameterSet const& pset) m_autoFlush(pset.getUntrackedParameter("autoFlush", -10000000)), m_processHistoryRegistry() {} -NanoAODOutputModule::~NanoAODOutputModule() {} - void NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { //Get data from 'e' and write it to the file edm::Service jr; @@ -191,9 +190,29 @@ void NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { m_commonBranches.fill(iEvent.id()); // fill all tables, starting from main tables and then doing extension tables + std::vector tables; + for (auto& tableToken : m_tableTokens) { + edm::Handle handle; + iEvent.getByToken(tableToken, handle); + tables.push_back(&(*handle)); + } + for (auto& tableToken : m_tableVectorTokens) { + edm::Handle> handle; + iEvent.getByToken(tableToken, handle); + for (auto const& table : *handle) { + tables.push_back(&table); + } + } + + if (m_tables.empty()) { + m_tables.resize(tables.size()); + } for (unsigned int extensions = 0; extensions <= 1; ++extensions) { - for (auto& t : m_tables) - t.fill(iEvent, *m_tree, extensions); + size_t iTable = 0; + for (auto& table : tables) { + m_tables[iTable].fill(*table, *m_tree, extensions); + ++iTable; + } } // fill triggers for (auto& t : m_triggers) @@ -270,14 +289,18 @@ void NanoAODOutputModule::openFile(edm::FileBlock const&) { } /* Setup file structure here */ m_tables.clear(); + m_tableTokens.clear(); m_triggers.clear(); m_evstrings.clear(); m_runTables.clear(); const auto& keeps = keptProducts(); for (const auto& keep : keeps[edm::InEvent]) { - if (keep.first->className() == "nanoaod::FlatTable") - m_tables.emplace_back(keep.first, keep.second); - else if (keep.first->className() == "edm::TriggerResults") { + std::cout << keep.first->className() << std::endl; + if (keep.first->className() == "nanoaod::FlatTable") { + m_tableTokens.emplace_back(keep.second); + } else if (keep.first->className() == "std::vector") { + m_tableVectorTokens.emplace_back(keep.second); + } else if (keep.first->className() == "edm::TriggerResults") { m_triggers.emplace_back(keep.first, keep.second); } else if (keep.first->className() == "std::basic_string >" && keep.first->productInstanceName() == "genModel") { // friendlyClassName == "String" diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc index 1c72a63cb4fdb..4f411b12dfe55 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc @@ -57,15 +57,12 @@ void TableOutputBranches::branch(TTree &tree) { } } -void TableOutputBranches::fill(const edm::EventForOutput &iEvent, TTree &tree, bool extensions) { +void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool extensions) { if (m_extension != DontKnowYetIfMainOrExtension) { if (extensions != m_extension) return; // do nothing, wait to be called with the proper flag } - edm::Handle handle; - iEvent.getByToken(m_token, handle); - const nanoaod::FlatTable &tab = *handle; m_counter = tab.size(); m_singleton = tab.singleton(); if (!m_branchesBooked) { diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h index df843bb6f4216..c8e4366e48539 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h @@ -4,31 +4,23 @@ #include #include #include -#include "FWCore/Framework/interface/EventForOutput.h" #include "DataFormats/NanoAOD/interface/FlatTable.h" #include "DataFormats/Provenance/interface/BranchDescription.h" #include "FWCore/Utilities/interface/EDGetToken.h" class TableOutputBranches { public: - TableOutputBranches(const edm::BranchDescription *desc, const edm::EDGetToken &token) - : m_token(token), m_extension(DontKnowYetIfMainOrExtension), m_branchesBooked(false) { - if (desc->className() != "nanoaod::FlatTable") - throw cms::Exception("Configuration", "NanoAODOutputModule can only write out nanoaod::FlatTable objects"); - } - void defineBranchesFromFirstEvent(const nanoaod::FlatTable &tab); void branch(TTree &tree); /// Fill the current table, if extensions == table.extension(). /// This parameter is used so that the fill is called first for non-extensions and then for extensions - void fill(const edm::EventForOutput &iEvent, TTree &tree, bool extensions); + void fill(const nanoaod::FlatTable &tab, TTree &tree, bool extensions); private: - edm::EDGetToken m_token; std::string m_baseName; bool m_singleton; - enum { IsMain = 0, IsExtension = 1, DontKnowYetIfMainOrExtension = 2 } m_extension; + enum { IsMain = 0, IsExtension = 1, DontKnowYetIfMainOrExtension = 2 } m_extension = DontKnowYetIfMainOrExtension; std::string m_doc; UInt_t m_counter; struct NamedBranchPtr { @@ -44,7 +36,7 @@ class TableOutputBranches { std::vector m_floatBranches; std::vector m_intBranches; std::vector m_uint8Branches; - bool m_branchesBooked; + bool m_branchesBooked = false; template void fillColumn(NamedBranchPtr &pair, const nanoaod::FlatTable &tab) { diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index d5efb1ced3282..00deb5a6613ec 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -90,6 +90,7 @@ fileName = cms.untracked.string('nanogen.root'), outputCommands = cms.untracked.vstring( 'drop *', + "keep *_lheWeightsTable_*_*", # event data "keep nanoaodFlatTable_*Table_*_*", # event data "keep String_*_genModel_*", # generator model data "keep nanoaodMergeableCounterTable_*Table_*_*", # accumulated per/run or per/lumi data From d663d2f5cb2d2b9bf1dbcbe66845b4844a7c34de Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 19 Dec 2019 20:10:58 +0100 Subject: [PATCH 054/186] select specific weight groups --- .../plugins/LHEWeightsTableProducer.cc | 21 +++++++++++++------ .../NanoAOD/plugins/NanoAODOutputModule.cc | 1 - PhysicsTools/NanoAOD/python/nanogen_cff.py | 1 + 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 66402e40bda4c..b8f00280ac436 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -72,6 +72,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheInfo")), lheToken_(consumes(params.getParameter("lheInfo"))), + weightgroups_(params.getParameter>("weightgroups")), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { consumes(lheInputTag_); produces>(); @@ -90,20 +91,26 @@ class LHEWeightsTableProducer : public edm::global::EDProducer> groupsWithWeights; + std::unordered_map>> groupsWithWeights; for (auto const& weight : lheInfo.weights()) { - if (!weightInfos[i].group) { - groupsWithWeights["ungrouped"].push_back(weight.wgt / w0); + auto& val = weightInfos[i].group ? groupsWithWeights[*weightInfos[i].group] : groupsWithWeights["ungrouped"]; + if(val.first.empty()) { + val.first += ";id,text"; } - groupsWithWeights[*weightInfos[i].group].push_back(weight.wgt / w0); + val.first += ";" + weightInfos[i].id + "," + weightInfos[i].text; + val.second.push_back(weight.wgt / w0); ++i; } for (auto const& group : groupsWithWeights) { + if(std::find(weightgroups_.begin(), weightgroups_.end(), group.first) == weightgroups_.end()) { + continue; + } std::string name = std::string("LHEWeight_") + group.first; std::transform(name.begin(), name.end(), name.begin(), [](char ch) { return ch == ' ' ? '_' : ch; }); - lheWeightTables->emplace_back(group.second.size(), name, false); + std::string doc = group.first + " (w_var / w_nominal)" + group.second.first; + lheWeightTables->emplace_back(group.second.second.size(), name, false); lheWeightTables->back().addColumn( - "", group.second, group.first + " (w_var / w_nominal)", nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + "", group.second.second, doc, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); } iEvent.put(std::move(lheWeightTables)); @@ -131,6 +138,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheInfo", {"externalLHEProducer"}) ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + desc.add>("weightgroups"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); descriptions.addDefault(desc); } @@ -138,6 +146,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheToken_; + const std::vector weightgroups_; int lheWeightPrecision_; }; diff --git a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc index f2a136a17f788..8f6464c095d6b 100644 --- a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc +++ b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc @@ -295,7 +295,6 @@ void NanoAODOutputModule::openFile(edm::FileBlock const&) { m_runTables.clear(); const auto& keeps = keptProducts(); for (const auto& keep : keeps[edm::InEvent]) { - std::cout << keep.first->className() << std::endl; if (keep.first->className() == "nanoaod::FlatTable") { m_tableTokens.emplace_back(keep.second); } else if (keep.first->className() == "std::vector") { diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 00deb5a6613ec..a02d32c3ee76d 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -34,6 +34,7 @@ lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", lheInfo = cms.InputTag("externalLHEProducer"), + weightgroups = cms.vstring(["mg_reweighting"]), lheWeightPrecision = cms.int32(14), ) From 45be54a91e93c7aefdfdda3c49dc4135b40e34b2 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 20 Dec 2019 16:25:33 +0100 Subject: [PATCH 055/186] give a bit more structure to weight counter class --- .../plugins/GenWeightsTableProducer.cc | 191 +++++++++--------- .../plugins/LHEWeightsTableProducer.cc | 8 +- .../NanoAOD/python/genWeightsTable_cfi.py | 20 ++ PhysicsTools/NanoAOD/python/nano_cff.py | 1 + PhysicsTools/NanoAOD/python/nanogen_cff.py | 26 +-- 5 files changed, 120 insertions(+), 126 deletions(-) create mode 100644 PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py diff --git a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc index 9a86e108bc1b8..6b678099e98b8 100644 --- a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc @@ -20,39 +20,42 @@ #include namespace { - /// ---- Cache object for running sums of weights ---- - struct Counter { - Counter() : num(0), sumw(0), sumw2(0), sumPDF(), sumScale(), sumRwgt(), sumNamed(), sumPS() {} - // the counters - long long num; - long double sumw; - long double sumw2; - std::vector sumPDF, sumScale, sumRwgt, sumNamed, sumPS; + void mergeSumVectors(std::vector& v1, std::vector const& v2) { + if (v1.empty() && !v2.empty()) + v1.resize(v2.size(), 0); + if (!v2.empty()) + for (unsigned int i = 0, n = v1.size(); i < n; ++i) + v1[i] += v2[i]; + } + /// ---- Cache object for running sums of weights ---- + class Counter { + public: void clear() { - num = 0; - sumw = 0; - sumw2 = 0; - sumPDF.clear(); - sumScale.clear(); - sumRwgt.clear(); - sumNamed.clear(), sumPS.clear(); + num_ = 0; + sumw_ = 0; + sumw2_ = 0; + sumPDF_.clear(); + sumScale_.clear(); + sumRwgt_.clear(); + sumNamed_.clear(); + sumPS_.clear(); } // inc the counters void incGenOnly(double w) { - num++; - sumw += w; - sumw2 += (w * w); + num_++; + sumw_ += w; + sumw2_ += (w * w); } void incPSOnly(double w0, const std::vector& wPS) { if (!wPS.empty()) { - if (sumPS.empty()) - sumPS.resize(wPS.size(), 0); + if (sumPS_.empty()) + sumPS_.resize(wPS.size(), 0); for (unsigned int i = 0, n = wPS.size(); i < n; ++i) - sumPS[i] += (w0 * wPS[i]); + sumPS_[i] += (w0 * wPS[i]); } } @@ -66,62 +69,55 @@ namespace { incGenOnly(w0); // then add up variations if (!wScale.empty()) { - if (sumScale.empty()) - sumScale.resize(wScale.size(), 0); + if (sumScale_.empty()) + sumScale_.resize(wScale.size(), 0); for (unsigned int i = 0, n = wScale.size(); i < n; ++i) - sumScale[i] += (w0 * wScale[i]); + sumScale_[i] += (w0 * wScale[i]); } if (!wPDF.empty()) { - if (sumPDF.empty()) - sumPDF.resize(wPDF.size(), 0); + if (sumPDF_.empty()) + sumPDF_.resize(wPDF.size(), 0); for (unsigned int i = 0, n = wPDF.size(); i < n; ++i) - sumPDF[i] += (w0 * wPDF[i]); + sumPDF_[i] += (w0 * wPDF[i]); } if (!wRwgt.empty()) { - if (sumRwgt.empty()) - sumRwgt.resize(wRwgt.size(), 0); + if (sumRwgt_.empty()) + sumRwgt_.resize(wRwgt.size(), 0); for (unsigned int i = 0, n = wRwgt.size(); i < n; ++i) - sumRwgt[i] += (w0 * wRwgt[i]); + sumRwgt_[i] += (w0 * wRwgt[i]); } if (!wNamed.empty()) { - if (sumNamed.empty()) - sumNamed.resize(wNamed.size(), 0); + if (sumNamed_.empty()) + sumNamed_.resize(wNamed.size(), 0); for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) - sumNamed[i] += (w0 * wNamed[i]); + sumNamed_[i] += (w0 * wNamed[i]); } incPSOnly(w0, wPS); } void merge(const Counter& other) { - num += other.num; - sumw += other.sumw; - sumw2 += other.sumw2; - if (sumScale.empty() && !other.sumScale.empty()) - sumScale.resize(other.sumScale.size(), 0); - if (sumPDF.empty() && !other.sumPDF.empty()) - sumPDF.resize(other.sumPDF.size(), 0); - if (sumRwgt.empty() && !other.sumRwgt.empty()) - sumRwgt.resize(other.sumRwgt.size(), 0); - if (sumNamed.empty() && !other.sumNamed.empty()) - sumNamed.resize(other.sumNamed.size(), 0); - if (sumPS.empty() && !other.sumPS.empty()) - sumPS.resize(other.sumPS.size(), 0); - if (!other.sumScale.empty()) - for (unsigned int i = 0, n = sumScale.size(); i < n; ++i) - sumScale[i] += other.sumScale[i]; - if (!other.sumPDF.empty()) - for (unsigned int i = 0, n = sumPDF.size(); i < n; ++i) - sumPDF[i] += other.sumPDF[i]; - if (!other.sumRwgt.empty()) - for (unsigned int i = 0, n = sumRwgt.size(); i < n; ++i) - sumRwgt[i] += other.sumRwgt[i]; - if (!other.sumNamed.empty()) - for (unsigned int i = 0, n = sumNamed.size(); i < n; ++i) - sumNamed[i] += other.sumNamed[i]; - if (!other.sumPS.empty()) - for (unsigned int i = 0, n = sumPS.size(); i < n; ++i) - sumPS[i] += other.sumPS[i]; + num_ += other.num_; + sumw_ += other.sumw_; + sumw2_ += other.sumw2_; + + mergeSumVectors(sumScale_, other.sumScale_); + mergeSumVectors(sumPDF_, other.sumPDF_); + mergeSumVectors(sumRwgt_, other.sumRwgt_); + mergeSumVectors(sumNamed_, other.sumNamed_); + mergeSumVectors(sumPS_, other.sumPS_); } + + //private: + // the counters + long long num_ = 0; + long double sumw_ = 0; + long double sumw2_ = 0; + + std::vector sumPDF_; + std::vector sumScale_; + std::vector sumRwgt_; + std::vector sumNamed_; + std::vector sumPS_; }; struct CounterMap { @@ -251,17 +247,15 @@ class GenWeightsTableProducer : public edm::global::EDProducerget(); + Counter& counter = *streamCache(id)->get(); // generator information (always available) - edm::Handle genInfo; - iEvent.getByToken(genTag_, genInfo); - double weight = genInfo->weight(); + auto const& genInfo = iEvent.get(genTag_); // table for gen info, always available auto out = std::make_unique(1, "genWeight", true); out->setDoc("generator weight"); - out->addColumnValue("", weight, "generator weight", nanoaod::FlatTable::FloatColumn); + out->addColumnValue("", genInfo.weight(), "generator weight", nanoaod::FlatTable::FloatColumn); iEvent.put(std::move(out)); std::string model_label = streamCache(id)->getLabel(); @@ -280,12 +274,12 @@ class GenWeightsTableProducer : public edm::global::EDProducer& outPS) const { - bool lheDebug = debug_.exchange( - false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) + // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) + bool lheDebug = debug_.exchange(false); - const std::vector& scaleWeightIDs = weightChoice->scaleWeightIDs; - const std::vector& pdfWeightIDs = weightChoice->pdfWeightIDs; - const std::vector& rwgtWeightIDs = weightChoice->rwgtIDs; + const std::vector& scaleWeightIDs = weightChoice.scaleWeightIDs; + const std::vector& pdfWeightIDs = weightChoice.pdfWeightIDs; + const std::vector& rwgtWeightIDs = weightChoice.rwgtIDs; double w0 = lheProd.originalXWGTUP(); - std::vector wScale(scaleWeightIDs.size(), 1), wPDF(pdfWeightIDs.size(), 1), wRwgt(rwgtWeightIDs.size(), 1), - wNamed(namedWeightIDs_.size(), 1); + std::vector wScale(scaleWeightIDs.size(), 1); + std::vector wPDF(pdfWeightIDs.size(), 1); + std::vector wRwgt(rwgtWeightIDs.size(), 1); + std::vector wNamed(namedWeightIDs_.size(), 1); + for (auto& weight : lheProd.weights()) { if (lheDebug) printf("Weight %+9.5f rel %+9.5f for id %s\n", weight.wgt, weight.wgt / w0, weight.id.c_str()); @@ -340,7 +337,7 @@ class GenWeightsTableProducer : public edm::global::EDProducer(wPS.size(), "PSWeight", false); outPS->addColumn("", wPS, vectorSize > 1 ? "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " @@ -349,10 +346,10 @@ class GenWeightsTableProducer : public edm::global::EDProducerincLHE(genWeight, wScale, wPDF, wRwgt, wNamed, wPS); + counter.incLHE(genWeight, wScale, wPDF, wRwgt, wNamed, wPS); } - void fillOnlyPSWeightTable(Counter* counter, + void fillOnlyPSWeightTable(Counter& counter, double genWeight, const GenEventInfoProduct& genProd, std::unique_ptr& outPS) const { @@ -365,7 +362,7 @@ class GenWeightsTableProducer : public edm::global::EDProducer(wPS.size(), "PSWeight", false); outPS->addColumn("", wPS, vectorSize > 1 ? "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " @@ -374,16 +371,16 @@ class GenWeightsTableProducer : public edm::global::EDProducerincGenOnly(genWeight); - counter->incPSOnly(genWeight, wPS); + counter.incGenOnly(genWeight); + counter.incPSOnly(genWeight, wPS); } // create an empty counter std::shared_ptr globalBeginRun(edm::Run const& iRun, edm::EventSetup const&) const override { edm::Handle lheInfo; - bool lheDebug = debugRun_.exchange( - false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) + // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) + bool lheDebug = debugRun_.exchange(false); auto weightChoice = std::make_shared(); // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) @@ -754,40 +751,40 @@ class GenWeightsTableProducer : public edm::global::EDProducer(); for (auto x : runCounterMap->countermap) { - auto runCounter = &(x.second); + auto& runCounter = x.second; std::string label = std::string("_") + x.first; std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; - out->addInt("genEventCount" + label, "event count" + doclabel, runCounter->num); - out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter->sumw); - out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter->sumw2); + out->addInt("genEventCount" + label, "event count" + doclabel, runCounter.num_); + out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter.sumw_); + out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); - double norm = runCounter->sumw ? 1.0 / runCounter->sumw : 1; - auto sumScales = runCounter->sumScale; + double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; + auto sumScales = runCounter.sumScale_; for (auto& val : sumScales) val *= norm; out->addVFloat("LHEScaleSumw" + label, "Sum of genEventWeight * LHEScaleWeight[i], divided by genEventSumw" + doclabel, sumScales); - auto sumPDFs = runCounter->sumPDF; + auto sumPDFs = runCounter.sumPDF_; for (auto& val : sumPDFs) val *= norm; out->addVFloat( "LHEPdfSumw" + label, "Sum of genEventWeight * LHEPdfWeight[i], divided by genEventSumw" + doclabel, sumPDFs); - if (!runCounter->sumRwgt.empty()) { - auto sumRwgts = runCounter->sumRwgt; + if (!runCounter.sumRwgt_.empty()) { + auto sumRwgts = runCounter.sumRwgt_; for (auto& val : sumRwgts) val *= norm; out->addVFloat("LHEReweightingSumw" + label, "Sum of genEventWeight * LHEReweightingWeight[i], divided by genEventSumw" + doclabel, sumRwgts); } - if (!runCounter->sumNamed.empty()) { // it could be empty if there's no LHE info in the sample + if (!runCounter.sumNamed_.empty()) { // it could be empty if there's no LHE info in the sample for (unsigned int i = 0, n = namedWeightLabels_.size(); i < n; ++i) { out->addFloat( "LHESumw_" + namedWeightLabels_[i] + label, "Sum of genEventWeight * LHEWeight_" + namedWeightLabels_[i] + ", divided by genEventSumw" + doclabel, - runCounter->sumNamed[i] * norm); + runCounter.sumNamed_[i] * norm); } } } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index b8f00280ac436..5a49f8f47290c 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -94,16 +94,16 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>> groupsWithWeights; for (auto const& weight : lheInfo.weights()) { auto& val = weightInfos[i].group ? groupsWithWeights[*weightInfos[i].group] : groupsWithWeights["ungrouped"]; - if(val.first.empty()) { - val.first += ";id,text"; + if (val.first.empty()) { + val.first += ";id,text"; } val.first += ";" + weightInfos[i].id + "," + weightInfos[i].text; val.second.push_back(weight.wgt / w0); ++i; } for (auto const& group : groupsWithWeights) { - if(std::find(weightgroups_.begin(), weightgroups_.end(), group.first) == weightgroups_.end()) { - continue; + if (std::find(weightgroups_.begin(), weightgroups_.end(), group.first) == weightgroups_.end()) { + continue; } std::string name = std::string("LHEWeight_") + group.first; std::transform(name.begin(), name.end(), name.begin(), [](char ch) { return ch == ' ' ? '_' : ch; }); diff --git a/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py new file mode 100644 index 0000000000000..15c2ea05d814b --- /dev/null +++ b/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py @@ -0,0 +1,20 @@ +import FWCore.ParameterSet.Config as cms + +genWeightsTable = cms.EDProducer("GenWeightsTableProducer", + genEvent = cms.InputTag("generator"), + genLumiInfoHeader = cms.InputTag("generator"), + lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), + preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html + cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), + cms.PSet( name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000) ), + cms.PSet( name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... + cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) + cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) + cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) + ), + namedWeightIDs = cms.vstring(), + namedWeightLabels = cms.vstring(), + lheWeightPrecision = cms.int32(14), + maxPdfWeights = cms.uint32(150), + debug = cms.untracked.bool(False), +) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 466b4c4554040..bfc9951ebb39e 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -16,6 +16,7 @@ from PhysicsTools.NanoAOD.triggerObjects_cff import * from PhysicsTools.NanoAOD.isotracks_cff import * from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * +from PhysicsTools.NanoAOD.genWeightsTable_cfi import * from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff import run2_nanoAOD_94X2016 diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index a02d32c3ee76d..496a525837f00 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -5,31 +5,7 @@ from PhysicsTools.NanoAOD.genparticles_cff import * from PhysicsTools.NanoAOD.particlelevel_cff import * from PhysicsTools.NanoAOD.lheInfoTable_cfi import * - -# duplicate definition with nano_cff right now -genWeightsTable = cms.EDProducer( - "GenWeightsTableProducer", - genEvent = cms.InputTag("generator"), - genLumiInfoHeader = cms.InputTag("generator"), - lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), - preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html - cms.PSet(name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400)), - cms.PSet(name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000)), - # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... - cms.PSet(name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000)), - # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) - cms.PSet(name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000)), - # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) - cms.PSet(name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000)), - # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) - cms.PSet(name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200)), - ), - namedWeightIDs = cms.vstring(), - namedWeightLabels = cms.vstring(), - lheWeightPrecision = cms.int32(14), - maxPdfWeights = cms.uint32(150), - debug = cms.untracked.bool(False), -) +from PhysicsTools.NanoAOD.genWeightsTable_cfi import * lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", From c545dec27ff1ea783f24037d55a27c77f7fecc65 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 25 Dec 2019 02:02:29 +0100 Subject: [PATCH 056/186] Remove some customization to make it compile --- .../plugins/ExternalLHEProducer.cc | 22 ------------------- .../plugins/LHEProvenanceHelper.cc | 2 -- .../plugins/LHEProvenanceHelper.h | 2 -- .../LHEInterface/plugins/LHESource.cc | 15 ++++++------- 4 files changed, 7 insertions(+), 34 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 11b252504c698..330669a6c8c62 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -311,28 +311,6 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) p->fillCompressedContent(instream, 0.25 * insize); instream.close(); } - run.put(std::move(p), "LHEScriptOutput"); - for ( unsigned int iArg = 0; iArg < args_.size() ; iArg++ ) { - LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; - } - - executeScript(); - - //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory) - std::unique_ptr p(new LHEXMLStringProduct); - - //store the XML file only if explictly requested - if (storeXML_) { - std::ifstream instream(outputFile_); - if (!instream) { - throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << "."; - } - instream.seekg (0, instream.end); - int insize = instream.tellg(); - instream.seekg (0, instream.beg); - p->fillCompressedContent(instream, 0.25*insize); - instream.close(); - } run.put(std::move(p), "LHEScriptOutput"); // LHE C++ classes translation diff --git a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc index cdcac41a36447..b9de5e6099f46 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.cc @@ -2,7 +2,6 @@ #include #include "GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" -#include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "DataFormats/Provenance/interface/ProcessHistory.h" #include "DataFormats/Provenance/interface/ProcessHistoryRegistry.h" @@ -48,7 +47,6 @@ namespace edm { processParameterSet_() { // Add the products to the product registry productRegistry.copyProduct(eventProductBranchDescription_); - productRegistry.copyProduct(weightProductBranchDescription_); productRegistry.copyProduct(runProductBranchDescription_); } diff --git a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h index a966dbc9ad9d6..5d3bc4b67ad01 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h +++ b/GeneratorInterface/LHEInterface/plugins/LHEProvenanceHelper.h @@ -17,14 +17,12 @@ namespace edm { struct LHEProvenanceHelper { explicit LHEProvenanceHelper(TypeID const& eventProductType, TypeID const& runProductType, - TypeID const& weightProductType, ProductRegistry& productRegistry); ParameterSet fillCommonProcessParameterSet(); void lheAugment(lhef::LHERunInfo const* runInfo); ProcessHistoryID lheInit(ProcessHistoryRegistry& processHistoryRegistry); BranchDescription const eventProductBranchDescription_; BranchDescription const runProductBranchDescription_; - BranchDescription const weightProductBranchDescription_; ProductProvenance eventProductProvenance_; ParameterSet const commonProcessParameterSet_; ParameterSet processParameterSet_; diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index e3802a7f4ca8e..f045da892bb94 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -33,13 +33,12 @@ using namespace lhef; -LHESource::LHESource(const edm::ParameterSet ¶ms, - const edm::InputSourceDescription &desc) : - ProducerSourceFromFiles(params, desc, false), - reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), edm::TypeID(typeid(GenWeightInfoProduct)), productRegistryUpdate()), - phid_() -{ +LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDescription& desc) + : ProducerSourceFromFiles(params, desc, false), + reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), + lheProvenanceHelper_( + edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), + phid_() { nextEvent(); lheProvenanceHelper_.lheAugment(nullptr); // Initialize metadata, and save the process history ID for use every event. @@ -139,7 +138,7 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { product->addWeightGroupInfo(&scaleInfo); product->addWeightGroupInfo(&cenPdfInfo); std::unique_ptr rdp(new edm::Wrapper(std::move(product))); - iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); + //iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); } } From d6c2452601abe4d59950ad790612f187fe2eeb3e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 26 Dec 2019 02:05:57 +0100 Subject: [PATCH 057/186] Remove duplicate text from merge --- .../LHEInterface/plugins/ExternalLHEProducer.cc | 15 --------------- .../LHEInterface/test/test_Weights_cfg.py | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 330669a6c8c62..3dc92f7aae051 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -375,21 +375,6 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es run.put(std::move(product)); } - nextEvent(); - if (partonLevel) { - throw edm::Exception(edm::errors::EventGenerationFailure) - << "Error in ExternalLHEProducer::endRunProduce(). " - << "Event loop is over, but there are still lhe events to process." - << "This could happen if lhe file contains more events than requested. This is never expected to happen."; - } - - reader_.reset(); - - if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ - << " (errno=" << errno << ", " << strerror(errno) << ")."; - } - nextEvent(); if (partonLevel) { throw edm::Exception(edm::errors::EventGenerationFailure) << "Error in ExternalLHEProducer::endRunProduce(). " diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py index 24846755a78be..b70c90b3ca2d0 100644 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py @@ -50,7 +50,7 @@ process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", #args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), - args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_4L_NNPDF30_13TeV_tarballDummy.tar.gz'), + args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/VVV_aQGCfs_dummy.tgz'), nEvents = cms.untracked.uint32(10), numberOfParameters = cms.uint32(1), outputFile = cms.string('cmsgrid_final.lhe'), From a4e2b7ae76707be16dd1bb41705a3f30ebfdb06a Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 29 Dec 2019 00:43:19 +0100 Subject: [PATCH 058/186] Fix mistake in getting weightMetaInfo by index --- .../Core/src/LHEWeightHelper.cc | 23 ++++++++++++------- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- .../Core/test/dumpWeightInfo.py | 4 ++-- .../interface/WeightGroupInfo.h | 2 +- .../src/ScaleWeightGroupInfo.cc | 2 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 10 +++++--- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 73fb67b19b195..66c6c894e4609 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -88,7 +88,7 @@ namespace gen { int error = xmlParser.Parse(line.c_str()); if (error) { return false; - //do something.... + //throw std::invalid_argument("Failed to parse weight info from header! Line was " + line); } XMLElement* element = xmlParser.FirstChildElement(); return element; @@ -124,20 +124,23 @@ namespace gen { currGroupAttributeMap_ = getAttributeMap(fullTag); auto name = currGroupAttributeMap_["name"]; - if (currentGroupIsScale()) + if (currentGroupIsScale()) { weightGroups_.push_back(std::make_unique(name)); + } else if (currentGroupIsPdf()) { weightGroups_.push_back(std::make_unique(name)); } - else + else { weightGroups_.push_back(std::make_unique(name)); + } } - else if (isAWeight(headerLine)) { + else if (std::regex_match(headerLine, std::regex(".*.*\n*"))) { + std::string fullTag = headerLine; + if (!std::regex_match(headerLine, std::regex(".*.*\n*"))) + fullTag = headerLine + ""; currWeightAttributeMap_.clear(); // This shouldn't really happen, but perhaps we find weights outside of weight groups? - //if (weightGroups_.empty()) - // weightGroups_.push_back(std::make_unique("Unknown")); - currWeightAttributeMap_ = getAttributeMap(headerLine); + currWeightAttributeMap_ = getAttributeMap(fullTag); std::string content = currWeightAttributeMap_["content"]; if (currWeightAttributeMap_["id"].empty()) { @@ -145,10 +148,14 @@ namespace gen { // should do something } + if (weightGroups_.empty()) { + weightGroups_.push_back(std::make_unique("Unknown")); + } auto& group = weightGroups_.back(); if (group.weightType() == gen::kScaleWeights) { - if (currWeightAttributeMap_["mur"].empty() || currWeightAttributeMap_["muf"].empty()) + if (currWeightAttributeMap_["mur"].empty() || currWeightAttributeMap_["muf"].empty()) { group.setIsWellFormed(false); + } else { try { float muR = std::stof(currWeightAttributeMap_["mur"]); diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index fbf58491198de..efc21457c4231 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -129,7 +129,7 @@ namespace gen { counter++; } // Needs to be properly handled - throw std::range_error("Unmatched weight"); + throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex)); } } diff --git a/GeneratorInterface/Core/test/dumpWeightInfo.py b/GeneratorInterface/Core/test/dumpWeightInfo.py index 24e7c99e2465b..1a148dd4ca39c 100644 --- a/GeneratorInterface/Core/test/dumpWeightInfo.py +++ b/GeneratorInterface/Core/test/dumpWeightInfo.py @@ -1,7 +1,7 @@ from DataFormats.FWLite import Events,Handle,Runs,Lumis import ROOT -#source = "externalLHEProducer" -sources = ["testLHEWeights", "testGenWeights"] +sources = ["externalLHEProducer"] +#sources = ["testLHEWeights", "testGenWeights"] #source = "testGenWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 973e88f10e73d..1746e575c2c45 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -42,7 +42,7 @@ namespace gen { void copy(const WeightGroupInfo &other); virtual WeightGroupInfo* clone() const; WeightMetaInfo weightMetaInfo(int weightEntry) const; - WeightMetaInfo weightMetaInfo(std::string wgtId) const; + WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; int weightVectorEntry(const std::string& wgtId) const; int containsWeight(const std::string& wgtId, int weightEntry) const; int weightVectorEntry(const std::string& wgtId, int weightEntry) const; diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 64215f7ad6f2d..155d3981e00a6 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -22,7 +22,7 @@ namespace gen { void ScaleWeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF) { WeightGroupInfo::addContainedId(weightEntry, id, label); - auto metaInfo = weightMetaInfo(weightEntry); + auto metaInfo = weightMetaInfoByGlobalIndex(id, weightEntry); setMuRMuFIndex(metaInfo, muR, muF); } diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 86940ae70a9f0..aeb877bfb7b29 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -24,9 +24,13 @@ namespace gen { return idsContained_.at(weightEntry); } - WeightMetaInfo WeightGroupInfo::weightMetaInfo(std::string wgtId) const { - int weightEntry = weightVectorEntry(wgtId); - return idsContained_.at(weightEntry); + WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { + int entry = weightVectorEntry(wgtId, weightEntry); + if (entry < 0 || entry >= static_cast(idsContained_.size())) + throw std::range_error("Weight entry " + std::to_string(weightEntry) + + " is not a member of group " + name_ + + ". \n firstID = " + std::to_string(firstId_) + " lastId = " + std::to_string(lastId_)); + return idsContained_.at(entry); } int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { From 9f6b791b13bc3317bf1f516648602bc4bac95a75 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 29 Dec 2019 02:19:36 +0100 Subject: [PATCH 059/186] Add outline of ME reweight weightinfo class --- GeneratorInterface/Core/interface/LHEWeightHelper.h | 1 + GeneratorInterface/Core/interface/WeightHelper.h | 1 + GeneratorInterface/Core/src/LHEWeightHelper.cc | 3 +++ GeneratorInterface/Core/src/WeightHelper.cc | 5 +++++ GeneratorInterface/Core/test/dumpWeightInfo.py | 4 ++-- SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h | 2 +- SimDataFormats/GeneratorProducts/src/classes.h | 1 + SimDataFormats/GeneratorProducts/src/classes_def.xml | 2 ++ 8 files changed, 16 insertions(+), 3 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 8a54f71bb6c6e..6b37f56403ce4 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -8,6 +8,7 @@ #include #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index da6084fcca18c..64c284fb4d7b5 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -25,6 +25,7 @@ namespace gen { std::unique_ptr weightProduct(std::vector); void setGroupInfo(); bool currentGroupIsScale(); + bool currentGroupIsMEParam(); bool currentGroupIsPdf(); int addWeightToProduct(std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 66c6c894e4609..e715e38f78fc3 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -130,6 +130,9 @@ namespace gen { else if (currentGroupIsPdf()) { weightGroups_.push_back(std::make_unique(name)); } + else if (currentGroupIsMEParam()) { + weightGroups_.push_back(std::make_unique(name)); + } else { weightGroups_.push_back(std::make_unique(name)); } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index efc21457c4231..0d88d2c55fb80 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -79,6 +79,11 @@ namespace gen { [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }) != pdfSetsInfo.end(); } + bool WeightHelper::currentGroupIsMEParam() { + std::string name = boost::algorithm::to_lower_copy(currGroupAttributeMap_["name"]); + return (name.find("mg_reweighting") != std::string::npos); + } + // TODO: Could probably recycle this code better std::unique_ptr WeightHelper::weightProduct(std::vector weights) { auto weightProduct = std::make_unique(); diff --git a/GeneratorInterface/Core/test/dumpWeightInfo.py b/GeneratorInterface/Core/test/dumpWeightInfo.py index 1a148dd4ca39c..d10a86c6b53bd 100644 --- a/GeneratorInterface/Core/test/dumpWeightInfo.py +++ b/GeneratorInterface/Core/test/dumpWeightInfo.py @@ -5,8 +5,8 @@ #source = "testGenWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: -#for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: -for filename in ["test.root"]: +for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: +#for filename in ["test.root"]: for source in sources: lumis = Lumis(filename) lumi = lumis.__iter__().next() diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 1746e575c2c45..e0fc9b2bdfb87 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -19,7 +19,7 @@ namespace gen { enum WeightType { kPdfWeights, kScaleWeights, - kMatrixElementWeights, + kMEParamWeights, kUnknownWeights, kPartonShowerWeights, }; diff --git a/SimDataFormats/GeneratorProducts/src/classes.h b/SimDataFormats/GeneratorProducts/src/classes.h index c806f021b6cb3..c83887ba46e43 100644 --- a/SimDataFormats/GeneratorProducts/src/classes.h +++ b/SimDataFormats/GeneratorProducts/src/classes.h @@ -11,6 +11,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" diff --git a/SimDataFormats/GeneratorProducts/src/classes_def.xml b/SimDataFormats/GeneratorProducts/src/classes_def.xml index 58ce9fb157e36..2ba9fe119446e 100644 --- a/SimDataFormats/GeneratorProducts/src/classes_def.xml +++ b/SimDataFormats/GeneratorProducts/src/classes_def.xml @@ -231,6 +231,7 @@ + @@ -240,6 +241,7 @@ + From afe662adbe2679072ca219b6a606c4462962301d Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 29 Dec 2019 03:38:46 +0100 Subject: [PATCH 060/186] Add MEParams class, nanogen example config --- PhysicsTools/NanoAOD/python/nanogen_cff.py | 2 +- PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py | 169 ++++++++++++++++++ .../interface/MEParamWeightGroupInfo.h | 23 +++ .../src/MEParamWeightGroupInfo.cc | 12 ++ 4 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py create mode 100644 SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h create mode 100644 SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 496a525837f00..08c97b781f22c 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -1,4 +1,3 @@ -from PhysicsTools.NanoAOD.common_cff import * from PhysicsTools.NanoAOD.taus_cff import * from PhysicsTools.NanoAOD.jets_cff import * from PhysicsTools.NanoAOD.globals_cff import * @@ -90,3 +89,4 @@ def customizeNanoGEN(process): process.genJetAK8FlavourTable.src = process.genJetAK8Table.src process.tauGenJets.GenParticles = "genParticles" process.genVisTaus.srcGenParticles = "genParticles" + return process diff --git a/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py b/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py new file mode 100644 index 0000000000000..a1694745e2051 --- /dev/null +++ b/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py @@ -0,0 +1,169 @@ +import FWCore.ParameterSet.Config as cms + + + +process = cms.Process('GEN') + +# import of standard configurations +process.load('Configuration.StandardSequences.Services_cff') +process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load('Configuration.EventContent.EventContent_cff') +process.load('SimGeneral.MixingModule.mixNoPU_cfi') +process.load('Configuration.StandardSequences.GeometryRecoDB_cff') +process.load('Configuration.StandardSequences.Generator_cff') +process.load('IOMC.EventVertexGenerators.VtxSmearedRealistic50ns13TeVCollision_cfi') +process.load('GeneratorInterface.Core.genFilterSummary_cff') +process.load('PhysicsTools.NanoAOD.nanogen_cff') +process.load('Configuration.StandardSequences.EndOfProcess_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(10), + output = cms.optional.untracked.allowed(cms.int32,cms.PSet) +) + +# Input source +process.source = cms.Source("EmptySource") + +process.options = cms.untracked.PSet( + FailPath = cms.untracked.vstring(), + IgnoreCompletely = cms.untracked.vstring(), + Rethrow = cms.untracked.vstring(), + SkipEvent = cms.untracked.vstring(), + allowUnscheduled = cms.obsolete.untracked.bool, + canDeleteEarly = cms.untracked.vstring(), + emptyRunLumiMode = cms.obsolete.untracked.string, + eventSetup = cms.untracked.PSet( + forceNumberOfConcurrentIOVs = cms.untracked.PSet( + + ), + numberOfConcurrentIOVs = cms.untracked.uint32(1) + ), + fileMode = cms.untracked.string('FULLMERGE'), + forceEventSetupCacheClearOnNewRun = cms.untracked.bool(False), + makeTriggerResults = cms.obsolete.untracked.bool, + numberOfConcurrentLuminosityBlocks = cms.untracked.uint32(1), + numberOfConcurrentRuns = cms.untracked.uint32(1), + numberOfStreams = cms.untracked.uint32(0), + numberOfThreads = cms.untracked.uint32(1), + printDependencies = cms.untracked.bool(False), + sizeOfStackForThreadsInKB = cms.optional.untracked.uint32, + throwIfIllegalParameter = cms.untracked.bool(True), + wantSummary = cms.untracked.bool(False) +) + +# Production Info +process.configurationMetadata = cms.untracked.PSet( + annotation = cms.untracked.string('Configuration/GenProduction/python/SMP-RunIISummer15wmLHEGS-00344-fragment.py nevts:10'), + name = cms.untracked.string('Applications'), + version = cms.untracked.string('$Revision: 1.19 $') +) + +# Other statements +process.genstepfilter.triggerConditions=cms.vstring("generation_step") + +process.generator = cms.EDFilter("Pythia8HadronizerFilter", + PythiaParameters = cms.PSet( + parameterSets = cms.vstring( + 'pythia8CommonSettings', + 'pythia8CUEP8M1Settings', + 'pythia8PowhegEmissionVetoSettings', + 'pythia8PSweightsSettings', + 'processParameters' + ), + processParameters = cms.vstring( + 'POWHEG:nFinal = 2', + 'ParticleDecays:allowPhotonRadiation = on', + 'TimeShower:QEDshowerByL = on' + ), + pythia8CUEP8M1Settings = cms.vstring( + 'Tune:pp 14', + 'Tune:ee 7', + 'MultipartonInteractions:pT0Ref=2.4024', + 'MultipartonInteractions:ecmPow=0.25208', + 'MultipartonInteractions:expPow=1.6' + ), + pythia8CommonSettings = cms.vstring( + 'Tune:preferLHAPDF = 2', + 'Main:timesAllowErrors = 10000', + 'Check:epTolErr = 0.01', + 'Beams:setProductionScalesFromLHEF = off', + 'SLHA:keepSM = on', + 'SLHA:minMassSM = 1000.', + 'ParticleDecays:limitTau0 = on', + 'ParticleDecays:tau0Max = 10', + 'ParticleDecays:allowPhotonRadiation = on' + ), + pythia8PSweightsSettings = cms.vstring( + 'UncertaintyBands:doVariations = on', + 'UncertaintyBands:List = {isrRedHi isr:muRfac=0.707,fsrRedHi fsr:muRfac=0.707,isrRedLo isr:muRfac=1.414,fsrRedLo fsr:muRfac=1.414,isrDefHi isr:muRfac=0.5,fsrDefHi fsr:muRfac=0.5,isrDefLo isr:muRfac=2.0,fsrDefLo fsr:muRfac=2.0,isrConHi isr:muRfac=0.25,fsrConHi fsr:muRfac=0.25,isrConLo isr:muRfac=4.0,fsrConLo fsr:muRfac=4.0,fsr_G2GG_muR_dn fsr:G2GG:muRfac=0.5,fsr_G2GG_muR_up fsr:G2GG:muRfac=2.0,fsr_G2QQ_muR_dn fsr:G2QQ:muRfac=0.5,fsr_G2QQ_muR_up fsr:G2QQ:muRfac=2.0,fsr_Q2QG_muR_dn fsr:Q2QG:muRfac=0.5,fsr_Q2QG_muR_up fsr:Q2QG:muRfac=2.0,fsr_X2XG_muR_dn fsr:X2XG:muRfac=0.5,fsr_X2XG_muR_up fsr:X2XG:muRfac=2.0,fsr_G2GG_cNS_dn fsr:G2GG:cNS=-2.0,fsr_G2GG_cNS_up fsr:G2GG:cNS=2.0,fsr_G2QQ_cNS_dn fsr:G2QQ:cNS=-2.0,fsr_G2QQ_cNS_up fsr:G2QQ:cNS=2.0,fsr_Q2QG_cNS_dn fsr:Q2QG:cNS=-2.0,fsr_Q2QG_cNS_up fsr:Q2QG:cNS=2.0,fsr_X2XG_cNS_dn fsr:X2XG:cNS=-2.0,fsr_X2XG_cNS_up fsr:X2XG:cNS=2.0,isr_G2GG_muR_dn isr:G2GG:muRfac=0.5,isr_G2GG_muR_up isr:G2GG:muRfac=2.0,isr_G2QQ_muR_dn isr:G2QQ:muRfac=0.5,isr_G2QQ_muR_up isr:G2QQ:muRfac=2.0,isr_Q2QG_muR_dn isr:Q2QG:muRfac=0.5,isr_Q2QG_muR_up isr:Q2QG:muRfac=2.0,isr_X2XG_muR_dn isr:X2XG:muRfac=0.5,isr_X2XG_muR_up isr:X2XG:muRfac=2.0,isr_G2GG_cNS_dn isr:G2GG:cNS=-2.0,isr_G2GG_cNS_up isr:G2GG:cNS=2.0,isr_G2QQ_cNS_dn isr:G2QQ:cNS=-2.0,isr_G2QQ_cNS_up isr:G2QQ:cNS=2.0,isr_Q2QG_cNS_dn isr:Q2QG:cNS=-2.0,isr_Q2QG_cNS_up isr:Q2QG:cNS=2.0,isr_X2XG_cNS_dn isr:X2XG:cNS=-2.0,isr_X2XG_cNS_up isr:X2XG:cNS=2.0}', + 'UncertaintyBands:nFlavQ = 4', + 'UncertaintyBands:MPIshowers = on', + 'UncertaintyBands:overSampleFSR = 10.0', + 'UncertaintyBands:overSampleISR = 10.0', + 'UncertaintyBands:FSRpTmin2Fac = 20', + 'UncertaintyBands:ISRpTmin2Fac = 1' + ), + pythia8PowhegEmissionVetoSettings = cms.vstring( + 'POWHEG:veto = 1', + 'POWHEG:pTdef = 1', + 'POWHEG:emitted = 0', + 'POWHEG:pTemt = 0', + 'POWHEG:pThard = 0', + 'POWHEG:vetoCount = 100', + 'SpaceShower:pTmaxMatch = 2', + 'TimeShower:pTmaxMatch = 2' + ) + ), + comEnergy = cms.double(13000.0), + filterEfficiency = cms.untracked.double(1.0), + maxEventsToPrint = cms.untracked.int32(1), + pythiaHepMCVerbosity = cms.untracked.bool(False), + pythiaPylistVerbosity = cms.untracked.int32(1) +) + +process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", + args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/VVV_aQGCfs_dummy.tgz'), + nEvents = cms.untracked.uint32(10), + numberOfParameters = cms.uint32(1), + outputFile = cms.string('cmsgrid_final.lhe'), + scriptName = cms.FileInPath('GeneratorInterface/LHEInterface/data/run_generic_tarball_cvmfs.sh') +) + +# Other statements +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_mc', '') + +process.ProductionFilterSequence = cms.Sequence(process.generator) + +# Path and EndPath definitions +process.lhe_step = cms.Path(process.externalLHEProducer) +process.generation_step = cms.Path(process.pgen) +process.genfiltersummary_step = cms.EndPath(process.genFilterSummary) + +# Path and EndPath definitions +process.nanoGEN_step = cms.Path(process.nanogenSequence) +process.endjob_step = cms.EndPath(process.endOfProcess) +process.NANOAODGENoutput_step = cms.EndPath(process.NANOAODGENoutput) + +# Schedule definition +process.schedule = cms.Schedule(process.lhe_step,process.generation_step,process.genfiltersummary_step,process.nanoGEN_step,process.endjob_step,process.NANOAODGENoutput_step) + +# filter all path with the production filter sequence +for path in process.paths: + if path in ['lhe_step']: continue + getattr(process,path).insert(0, process.ProductionFilterSequence) + + +process.RandomNumberGeneratorService.externalLHEProducer.initialSeed=int(96) +# Customisation from command line +from PhysicsTools.NanoAOD.nanogen_cff import customizeNanoGEN +process = customizeNanoGEN(process) + + +# Add early deletion of temporary data products to reduce peak memory need +from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete +process = customiseEarlyDelete(process) +# End adding early deletion + diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h new file mode 100644 index 0000000000000..9a1def0700e21 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -0,0 +1,23 @@ +#ifndef SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h +#define SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h + +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" + +namespace gen { + class MEParamWeightGroupInfo : public WeightGroupInfo { + public: + MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = kMEParamWeights; } + MEParamWeightGroupInfo(std::string header, std::string name) : + WeightGroupInfo(header, name) { weightType_ = kMEParamWeights; } + MEParamWeightGroupInfo(std::string header) : + MEParamWeightGroupInfo(header, header) {} + virtual ~MEParamWeightGroupInfo() override {} + void copy(const MEParamWeightGroupInfo &other); + virtual MEParamWeightGroupInfo* clone() const override; + }; +} + +#endif // SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h + + + diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc new file mode 100644 index 0000000000000..8d75b537cf890 --- /dev/null +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -0,0 +1,12 @@ +#include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" + +namespace gen { + void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo &other) { + WeightGroupInfo::copy(other); + } + + MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { + return new MEParamWeightGroupInfo(*this); + } +} + From 6c5900c5e79cb695aa803c3d6c80ec5efe627601 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 5 Jan 2020 00:55:15 +0100 Subject: [PATCH 061/186] Roughly working with Run, need to move to lumi --- .../plugins/LHEWeightsTableProducer.cc | 140 ++++++++---------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 1 + 2 files changed, 59 insertions(+), 82 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 5a49f8f47290c..aaf7d71920de0 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -8,70 +8,33 @@ #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" + #include #include #include namespace { - - // join vector of strings to one string - std::string join(const std::vector& vec, const char* delim) { - std::stringstream res; - std::copy(vec.begin(), vec.end(), std::ostream_iterator(res, delim)); - return res.str(); - } - - struct LHEWeightInfo { - std::string id; - std::string text; - std::optional group = std::nullopt; + struct WeightGroupData { + size_t index; + const gen::WeightGroupInfo* group; }; - std::vector getLHEWeightInfos(LHERunInfoProduct const& lheInfo) { - std::vector out; - - for (auto iter = lheInfo.headers_begin(), end = lheInfo.headers_end(); iter != end; ++iter) { - if (iter->tag() != "initrwgt") { - continue; - } - - tinyxml2::XMLDocument xmlDoc; - xmlDoc.Parse(("" + join(iter->lines(), "") + "").c_str()); - tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); - - for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { - if (strcmp(e->Name(), "weight") == 0) { - // we are here if there is a weight that does not belong to any group - std::string text = ""; - if (e->GetText()) - text = e->GetText(); - out.push_back({e->Attribute("id"), text}); - } - if (strcmp(e->Name(), "weightgroup") == 0) { - std::string groupName = e->Attribute("name"); - for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; - inner = inner->NextSiblingElement("weight")) { - // we are here if there is a weight in a weightgroup - std::string text = ""; - if (inner->GetText()) - text = inner->GetText(); - out.push_back({inner->Attribute("id"), text, groupName}); - } - } - } - } - - return out; - } - + typedef std::unordered_map WeightGroupsToStore; } // namespace -class LHEWeightsTableProducer : public edm::global::EDProducer>> { +class LHEWeightsTableProducer : public edm::global::EDProducer> { public: LHEWeightsTableProducer(edm::ParameterSet const& params) : lheInputTag_(params.getParameter("lheInfo")), lheToken_(consumes(params.getParameter("lheInfo"))), + lheWeightToken_(consumes(params.getParameter("lheInfo"))), + //lheWeightInfoToken_(consumes(params.getParameter("lheWeightInfo"))), weightgroups_(params.getParameter>("weightgroups")), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { consumes(lheInputTag_); @@ -82,53 +45,61 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; + iEvent.getByToken(lheWeightToken_, lheWeightHandle); + const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); + WeightsContainer lheWeights = lheWeightProduct->weights(); + auto lheWeightTables = std::make_unique>(); auto const& weightInfos = *runCache(iEvent.getRun().index()); double w0 = lheInfo.originalXWGTUP(); - int i = 0; - if (lheInfo.weights().size() != weightInfos.size()) { - throw cms::Exception("LogicError", "Weight labels don't have the same size as weights!\n"); - } - std::unordered_map>> groupsWithWeights; - for (auto const& weight : lheInfo.weights()) { - auto& val = weightInfos[i].group ? groupsWithWeights[*weightInfos[i].group] : groupsWithWeights["ungrouped"]; - if (val.first.empty()) { - val.first += ";id,text"; - } - val.first += ";" + weightInfos[i].id + "," + weightInfos[i].text; - val.second.push_back(weight.wgt / w0); - ++i; - } - for (auto const& group : groupsWithWeights) { - if (std::find(weightgroups_.begin(), weightgroups_.end(), group.first) == weightgroups_.end()) { - continue; - } - std::string name = std::string("LHEWeight_") + group.first; - std::transform(name.begin(), name.end(), name.begin(), [](char ch) { return ch == ' ' ? '_' : ch; }); - std::string doc = group.first + " (w_var / w_nominal)" + group.second.first; - lheWeightTables->emplace_back(group.second.second.size(), name, false); - lheWeightTables->back().addColumn( - "", group.second.second, doc, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - } + size_t scaleGroupIndex = weightInfos.at("Scale").index; + const gen::ScaleWeightGroupInfo* scaleGroupInfo_ = static_cast(weightInfos.at("Scale").group); + + std::vector normalizedWeights; + std::vector& scaleWeights = lheWeights.at(scaleGroupIndex); + + // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; + // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR05muF05Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR05muF1Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR05muF2Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR1muF05Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->centralIndex())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR1muF2Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR2muF05Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR2muF1Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR2muF2Index())/w0); + + lheWeightTables->emplace_back(normalizedWeights.size(), "LHEScaleWeight", false); + lheWeightTables->back().addColumn( + "", normalizedWeights, scaleGroupInfo_->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); iEvent.put(std::move(lheWeightTables)); } - std::shared_ptr> globalBeginRun(edm::Run const& iRun, + std::shared_ptr globalBeginRun(edm::Run const& iRun, edm::EventSetup const&) const override { edm::Handle lheInfo; - auto weightChoice = std::make_shared>(); // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) iRun.getByLabel(lheInputTag_, lheInfo); - if (lheInfo.isValid()) { - getLHEWeightInfos(*lheInfo).swap(*weightChoice); - } - - return weightChoice; + //if (lheInfo.isValid()) { + //} + //iRun.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + edm::Handle lheWeightInfoHandle; + iRun.getByLabel(lheInputTag_, lheWeightInfoHandle); + + // Should add a search by name function + auto scaleGroupIndices = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights); + size_t scaleGroupIndex = scaleGroupIndices.front(); + const gen::WeightGroupInfo* scaleGroupInfo = lheWeightInfoHandle->orderedWeightGroupInfo(scaleGroupIndex); + WeightGroupsToStore weightsToStore = { {"Scale", {scaleGroupIndex, scaleGroupInfo}} }; + + return std::make_shared(weightsToStore); } // nothing to do here @@ -146,7 +117,12 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheToken_; + const edm::EDGetTokenT lheWeightToken_; + const edm::EDGetTokenT lheWeightInfoToken_; + const std::vector weightgroups_; + + //std::unordered_map weightGroupIndices_; int lheWeightPrecision_; }; diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 08c97b781f22c..951b76216ed7a 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -9,6 +9,7 @@ lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", lheInfo = cms.InputTag("externalLHEProducer"), + #lheWeights = cms.InputTag("externalLHEProducer"), weightgroups = cms.vstring(["mg_reweighting"]), lheWeightPrecision = cms.int32(14), ) From fb19c05ff6a881b79291269911a376709d20c2c3 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 5 Jan 2020 20:36:19 +0100 Subject: [PATCH 062/186] Produce in beginLumi, working with scale and NanoGen --- .../plugins/ExternalLHEProducer.cc | 8 +-- .../plugins/LHEWeightsTableProducer.cc | 68 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 3dc92f7aae051..88d0d3cb9ed08 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -70,7 +70,7 @@ Description: [one line class summary] class ExternalLHEProducer : public edm::one::EDProducer { + edm::BeginLuminosityBlockProducer> { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); ~ExternalLHEProducer() override; @@ -81,7 +81,7 @@ class ExternalLHEProducer : public edm::one::EDProducer(); produces(); produces(); - produces(); + produces(); } ExternalLHEProducer::~ExternalLHEProducer() {} @@ -390,7 +390,7 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es } void -ExternalLHEProducer::endLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { +ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index aaf7d71920de0..44f958517b122 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -28,16 +28,16 @@ namespace { typedef std::unordered_map WeightGroupsToStore; } // namespace -class LHEWeightsTableProducer : public edm::global::EDProducer> { +class LHEWeightsTableProducer : public edm::global::EDProducer> { public: LHEWeightsTableProducer(edm::ParameterSet const& params) : lheInputTag_(params.getParameter("lheInfo")), lheToken_(consumes(params.getParameter("lheInfo"))), lheWeightToken_(consumes(params.getParameter("lheInfo"))), - //lheWeightInfoToken_(consumes(params.getParameter("lheWeightInfo"))), + lheWeightInfoToken_(consumes(params.getParameter("lheInfo"))), weightgroups_(params.getParameter>("weightgroups")), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { - consumes(lheInputTag_); + //consumes(lheInputTag_); produces>(); } @@ -51,47 +51,25 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweights(); auto lheWeightTables = std::make_unique>(); - auto const& weightInfos = *runCache(iEvent.getRun().index()); + auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); double w0 = lheInfo.originalXWGTUP(); - size_t scaleGroupIndex = weightInfos.at("Scale").index; - const gen::ScaleWeightGroupInfo* scaleGroupInfo_ = static_cast(weightInfos.at("Scale").group); - - std::vector normalizedWeights; - std::vector& scaleWeights = lheWeights.at(scaleGroupIndex); - - // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; - // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR05muF05Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR05muF1Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR05muF2Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR1muF05Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->centralIndex())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR1muF2Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR2muF05Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR2muF1Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroupInfo_->muR2muF2Index())/w0); - - lheWeightTables->emplace_back(normalizedWeights.size(), "LHEScaleWeight", false); + auto scaleWeights = orderedScaleWeights(lheWeights, weightInfos.at("Scale"), w0); + lheWeightTables->emplace_back(scaleWeights.size(), "LHEScaleWeight", false); lheWeightTables->back().addColumn( - "", normalizedWeights, scaleGroupInfo_->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + "", scaleWeights, weightInfos.at("Scale").group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); iEvent.put(std::move(lheWeightTables)); } - std::shared_ptr globalBeginRun(edm::Run const& iRun, - edm::EventSetup const&) const override { - edm::Handle lheInfo; + + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, + edm::EventSetup const&) const override { - // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) - iRun.getByLabel(lheInputTag_, lheInfo); - //if (lheInfo.isValid()) { - //} - //iRun.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); edm::Handle lheWeightInfoHandle; - iRun.getByLabel(lheInputTag_, lheWeightInfoHandle); + iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Should add a search by name function auto scaleGroupIndices = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights); @@ -102,8 +80,30 @@ class LHEWeightsTableProducer : public edm::global::EDProducer(weightsToStore); } + std::vector orderedScaleWeights(WeightsContainer& lheWeights, const WeightGroupData& scaleGroupInfo, double w0) const { + const gen::ScaleWeightGroupInfo* scaleGroup = static_cast(scaleGroupInfo.group); + size_t scaleGroupIndex = scaleGroupInfo.index; + + std::vector normalizedWeights; + std::vector& scaleWeights = lheWeights.at(scaleGroupIndex); + + // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; + // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR05muF05Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR05muF1Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR05muF2Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR1muF05Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->centralIndex())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR1muF2Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR2muF05Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR2muF1Index())/w0); + normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR2muF2Index())/w0); + + return normalizedWeights; + } + // nothing to do here - void globalEndRun(edm::Run const&, edm::EventSetup const&) const override {} + virtual void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; From ae40865dd6c1a0d3488eba13abf7c6669110867f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 6 Jan 2020 00:08:40 +0100 Subject: [PATCH 063/186] Example with both scale and ME weights --- .../plugins/LHEWeightsTableProducer.cc | 41 +++++++++++++------ .../interface/GenWeightInfoProduct.h | 8 ++++ .../src/GenWeightInfoProduct.cc | 9 ++++ 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 44f958517b122..b9efcaf62f9c7 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -20,12 +20,7 @@ #include namespace { - struct WeightGroupData { - size_t index; - const gen::WeightGroupInfo* group; - }; - - typedef std::unordered_map WeightGroupsToStore; + typedef std::unordered_map WeightGroupsToStore; } // namespace class LHEWeightsTableProducer : public edm::global::EDProducer> { @@ -60,6 +55,12 @@ class LHEWeightsTableProducer : public edm::global::EDProducerback().addColumn( "", scaleWeights, weightInfos.at("Scale").group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + auto meWeights = meReweightWeights(lheWeights, weightInfos.at("MEReweight"), w0); + lheWeightTables->emplace_back(meWeights.size(), "LHEMEReweightWeight", false); + lheWeightTables->back().addColumn( + "", meWeights, weightInfos.at("MEReweight").group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + + iEvent.put(std::move(lheWeightTables)); } @@ -71,16 +72,32 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightInfoHandle; iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - // Should add a search by name function - auto scaleGroupIndices = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights); - size_t scaleGroupIndex = scaleGroupIndices.front(); - const gen::WeightGroupInfo* scaleGroupInfo = lheWeightInfoHandle->orderedWeightGroupInfo(scaleGroupIndex); - WeightGroupsToStore weightsToStore = { {"Scale", {scaleGroupIndex, scaleGroupInfo}} }; + std::vector scaleGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kScaleWeights); + auto meGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kMEParamWeights); + + WeightGroupsToStore weightsToStore; + weightsToStore.insert({"Scale", scaleGroups.front()}); + weightsToStore.insert({"MEReweight", meGroups.front()}); + // {"MEReweight", meGroups.at(0)}, + //}; + //i = 0; + //for (const auto& meGroup : meGroups) { + // std::string label = "MEReweight"; + // label = scaleGroups.size() > 1 ? label + i : label; + // weightsToStore[label] = meGroup; + //} return std::make_shared(weightsToStore); } - std::vector orderedScaleWeights(WeightsContainer& lheWeights, const WeightGroupData& scaleGroupInfo, double w0) const { + std::vector meReweightWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& meGroupInfo, double w0) const { + std::vector normalizedWeights; + for (const auto& weight : lheWeights.at(meGroupInfo.index)) + normalizedWeights.push_back(weight/w0); + return normalizedWeights; + } + + std::vector orderedScaleWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& scaleGroupInfo, double w0) const { const gen::ScaleWeightGroupInfo* scaleGroup = static_cast(scaleGroupInfo.group); size_t scaleGroupIndex = scaleGroupInfo.index; diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index 0152710f8fd56..b46120b0d786b 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -12,6 +12,13 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +namespace gen { + struct WeightGroupData { + size_t index; + const gen::WeightGroupInfo* group; + }; +} // namespace + class GenWeightInfoProduct { public: GenWeightInfoProduct() {} @@ -27,6 +34,7 @@ class GenWeightInfoProduct { const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; std::vector weightGroupsByType(gen::WeightType type) const; std::vector weightGroupIndicesByType(gen::WeightType type) const; + std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; void addWeightGroupInfo(gen::WeightGroupInfo* info); const int numberOfGroups() const { return weightGroupsInfo_.size(); } diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 8a76e4d173b85..1eb25563b09ec 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -35,6 +35,15 @@ const gen::WeightGroupInfo* GenWeightInfoProduct::orderedWeightGroupInfo(int wei return &weightGroupsInfo_[weightGroupIndex]; } +std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { + std::vector matchingGroups; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); + } + return matchingGroups; +} + std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { std::vector matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { From e542eaa66bc0cdff977f45bfe3d1aa58647bdb2c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 6 Jan 2020 04:27:57 +0100 Subject: [PATCH 064/186] Improve organization of adding different weight types --- .../plugins/LHEWeightsTableProducer.cc | 51 +++++++++++-------- .../interface/GenWeightInfoProduct.h | 2 + .../src/GenWeightInfoProduct.cc | 13 +++++ 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index b9efcaf62f9c7..744f6a68ee4aa 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -50,21 +50,29 @@ class LHEWeightsTableProducer : public edm::global::EDProduceremplace_back(scaleWeights.size(), "LHEScaleWeight", false); - lheWeightTables->back().addColumn( - "", scaleWeights, weightInfos.at("Scale").group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - auto meWeights = meReweightWeights(lheWeights, weightInfos.at("MEReweight"), w0); - lheWeightTables->emplace_back(meWeights.size(), "LHEMEReweightWeight", false); - lheWeightTables->back().addColumn( - "", meWeights, weightInfos.at("MEReweight").group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + addWeightGroupToTable("Scale", lheWeightTables, weightInfos, lheWeights, w0); + addWeightGroupToTable("MEParam", lheWeightTables, weightInfos, lheWeights, w0); + addWeightGroupToTable("Pdf", lheWeightTables, weightInfos, lheWeights, w0); iEvent.put(std::move(lheWeightTables)); } - + void addWeightGroupToTable(std::string name, std::unique_ptr>& lheWeightTables, + const WeightGroupsToStore& weightInfos, WeightsContainer& lheWeights, double w0) const { + if (weightInfos.count(name)) { + const auto& groupInfo = weightInfos.at(name); + auto weights = groupInfo.group->weightType() != gen::kScaleWeights ? normalizedWeights(lheWeights, groupInfo, w0) : + orderedScaleWeights(lheWeights, groupInfo, w0); + std::string entryName = "LHE"; + entryName.append(name); + entryName.append("Weight"); + lheWeightTables->emplace_back(weights.size(), entryName, false); + lheWeightTables->back().addColumn( + "", weights, weightInfos.at(name).group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + } + } + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) const override { @@ -72,25 +80,26 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightInfoHandle; iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - std::vector scaleGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kScaleWeights); + auto scaleGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kScaleWeights); auto meGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kMEParamWeights); WeightGroupsToStore weightsToStore; weightsToStore.insert({"Scale", scaleGroups.front()}); - weightsToStore.insert({"MEReweight", meGroups.front()}); - // {"MEReweight", meGroups.at(0)}, - //}; - //i = 0; - //for (const auto& meGroup : meGroups) { - // std::string label = "MEReweight"; - // label = scaleGroups.size() > 1 ? label + i : label; - // weightsToStore[label] = meGroup; - //} + + for (auto lhaid : {306000, 29000}) { + if (auto pdfGroup = lheWeightInfoHandle->pdfGroupWithIndexByLHAID(lhaid)) { + weightsToStore.insert({"Pdf", pdfGroup.value()}); + break; + } + } + + if (meGroups.size() > 0) + weightsToStore.insert({"MEParam", meGroups.front()}); return std::make_shared(weightsToStore); } - std::vector meReweightWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& meGroupInfo, double w0) const { + std::vector normalizedWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& meGroupInfo, double w0) const { std::vector normalizedWeights; for (const auto& weight : lheWeights.at(meGroupInfo.index)) normalizedWeights.push_back(weight/w0); diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index b46120b0d786b..06a3ff7907287 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -5,6 +5,7 @@ #include #include #include +#include //#include @@ -35,6 +36,7 @@ class GenWeightInfoProduct { std::vector weightGroupsByType(gen::WeightType type) const; std::vector weightGroupIndicesByType(gen::WeightType type) const; std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; + std::optional pdfGroupWithIndexByLHAID(size_t lhaid) const; void addWeightGroupInfo(gen::WeightGroupInfo* info); const int numberOfGroups() const { return weightGroupsInfo_.size(); } diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 1eb25563b09ec..d6b42e3cc1f0e 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -2,6 +2,7 @@ #include #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" GenWeightInfoProduct::GenWeightInfoProduct(edm::OwnVector& weightGroups) { weightGroupsInfo_ = weightGroups; @@ -53,6 +54,18 @@ std::vector GenWeightInfoProduct::weightGroupsByType(gen: return matchingGroups; } +std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(size_t lhaid) const { + auto pdfGroups = weightGroupsAndIndicesByType(gen::kPdfWeights); + + auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), + [lhaid] (gen::WeightGroupData& data) { + auto pdfGroup = dynamic_cast(data.group); + return pdfGroup->containsLhapdfId(lhaid); + }); + return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; +} + + std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { std::vector matchingGroupIndices; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { From ca22fc5b12d786f48a74678a7fee1a1dd5eb3f10 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 10 Jan 2020 19:18:54 +0100 Subject: [PATCH 065/186] Close to working, but segfaulting --- .../Core/test/dumpWeightInfo.py | 1 + .../plugins/LHEWeightsTableProducer.cc | 87 +++++++++++++------ PhysicsTools/NanoAOD/python/nanogen_cff.py | 12 ++- PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py | 2 +- 4 files changed, 73 insertions(+), 29 deletions(-) diff --git a/GeneratorInterface/Core/test/dumpWeightInfo.py b/GeneratorInterface/Core/test/dumpWeightInfo.py index d10a86c6b53bd..cdb47e9b60fde 100644 --- a/GeneratorInterface/Core/test/dumpWeightInfo.py +++ b/GeneratorInterface/Core/test/dumpWeightInfo.py @@ -25,6 +25,7 @@ print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 matching = weightInfoProd.orderedWeightGroupInfo(j) print "Group is", matching, "name is", matching.name(), "well formed?", matching.isWellFormed() + print type(matching.weightType()), matching.weightType() if matching.weightType() == 1: for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 744f6a68ee4aa..9e074c4912c74 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -20,7 +20,13 @@ #include namespace { - typedef std::unordered_map WeightGroupsToStore; + typedef std::pair, std::vector> WeightGroupsToStore; + //struct WeightGroupToStore { + // gen::WeightType type; + // std::string name; + // bool inLHE; + // gen::WeightGroupData groupInfo; + //} } // namespace class LHEWeightsTableProducer : public edm::global::EDProducer> { @@ -28,11 +34,12 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheInfo")), lheToken_(consumes(params.getParameter("lheInfo"))), - lheWeightToken_(consumes(params.getParameter("lheInfo"))), - lheWeightInfoToken_(consumes(params.getParameter("lheInfo"))), - weightgroups_(params.getParameter>("weightgroups")), + lheWeightToken_(consumes(params.getParameter("lheWeights"))), + lheWeightInfoToken_(consumes(params.getParameter("lheWeights"))), + genWeightToken_(consumes(params.getParameter("genWeights"))), + genWeightInfoToken_(consumes(params.getParameter("genWeights"))), + //weightgroups_(params.getParameter>("weightgroups")), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { - //consumes(lheInputTag_); produces>(); } @@ -45,31 +52,44 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweights(); - auto lheWeightTables = std::make_unique>(); - auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); + edm::Handle genWeightHandle; + iEvent.getByToken(genWeightToken_, genWeightHandle); + const GenWeightProduct* genWeightProduct = genWeightHandle.product(); + WeightsContainer genWeights = genWeightProduct->weights(); + auto lheWeightTables = std::make_unique>(); double w0 = lheInfo.originalXWGTUP(); + auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - addWeightGroupToTable("Scale", lheWeightTables, weightInfos, lheWeights, w0); - addWeightGroupToTable("MEParam", lheWeightTables, weightInfos, lheWeights, w0); - addWeightGroupToTable("Pdf", lheWeightTables, weightInfos, lheWeights, w0); - + addWeightGroupToTable(lheWeightTables, "Lhe", weightInfos.first, lheWeights, w0); + addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.second, genWeights, w0); iEvent.put(std::move(lheWeightTables)); } - void addWeightGroupToTable(std::string name, std::unique_ptr>& lheWeightTables, - const WeightGroupsToStore& weightInfos, WeightsContainer& lheWeights, double w0) const { - if (weightInfos.count(name)) { - const auto& groupInfo = weightInfos.at(name); - auto weights = groupInfo.group->weightType() != gen::kScaleWeights ? normalizedWeights(lheWeights, groupInfo, w0) : + void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, std::string entryName, + const std::vector& weightInfos, WeightsContainer& lheWeights, double w0) const { + size_t typeCount = 0; + gen::WeightType currentGroup = gen::kUnknownWeights; + + for (const auto& groupInfo : weightInfos) { + gen::WeightType weightType = groupInfo.group->weightType(); + std::string name = weightTypeNames_.at(weightType); + auto weights = weightType != gen::kScaleWeights ? normalizedWeights(lheWeights, groupInfo, w0) : orderedScaleWeights(lheWeights, groupInfo, w0); - std::string entryName = "LHE"; + if (typeCount > 0) + entryName.append(std::to_string(typeCount)); entryName.append(name); entryName.append("Weight"); + lheWeightTables->emplace_back(weights.size(), entryName, false); lheWeightTables->back().addColumn( - "", weights, weightInfos.at(name).group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + "", weights, groupInfo.group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + + typeCount++; + if (currentGroup != weightType) + typeCount = 0; + currentGroup = weightType; } } @@ -77,24 +97,30 @@ class LHEWeightsTableProducer : public edm::global::EDProducer globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) const override { + // Set equal to the max number of groups + // subtrack 1 for each weight group you find edm::Handle lheWeightInfoHandle; iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + edm::Handle genWeightInfoHandle; + iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); + auto scaleGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kScaleWeights); auto meGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kMEParamWeights); WeightGroupsToStore weightsToStore; - weightsToStore.insert({"Scale", scaleGroups.front()}); + weightsToStore.first.insert(weightsToStore.first.end(), scaleGroups.begin(), scaleGroups.end()); + weightsToStore.first.insert(weightsToStore.first.end(), meGroups.begin(), meGroups.end()); - for (auto lhaid : {306000, 29000}) { + for (auto lhaid : {306000, 91400, 260000}) { if (auto pdfGroup = lheWeightInfoHandle->pdfGroupWithIndexByLHAID(lhaid)) { - weightsToStore.insert({"Pdf", pdfGroup.value()}); + weightsToStore.first.push_back(pdfGroup.value()); break; } } - if (meGroups.size() > 0) - weightsToStore.insert({"MEParam", meGroups.front()}); + auto psGroups = genWeightInfoHandle->weightGroupsAndIndicesByType(gen::kPartonShowerWeights); + weightsToStore.second.insert(weightsToStore.second.end(), psGroups.begin(), psGroups.end()); return std::make_shared(weightsToStore); } @@ -135,7 +161,9 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheInfo", {"externalLHEProducer"}) ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); - desc.add>("weightgroups"); + //desc.add>("weightgroups"); + desc.add("lheWeights"); + desc.add("genWeights"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); descriptions.addDefault(desc); } @@ -145,8 +173,15 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheToken_; const edm::EDGetTokenT lheWeightToken_; const edm::EDGetTokenT lheWeightInfoToken_; - - const std::vector weightgroups_; + const edm::EDGetTokenT genWeightToken_; + const edm::EDGetTokenT genWeightInfoToken_; + //const std::vector weightgroups_; + const std::unordered_map weightTypeNames_ = { + {gen::kScaleWeights, "Scale"}, + {gen::kPdfWeights, "Pdf"}, + {gen::kMEParamWeights, "MEParam"}, + {gen::kUnknownWeights, "Unknown"}, + }; //std::unordered_map weightGroupIndices_; int lheWeightPrecision_; diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 951b76216ed7a..331880c6ba6c9 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -5,12 +5,19 @@ from PhysicsTools.NanoAOD.particlelevel_cff import * from PhysicsTools.NanoAOD.lheInfoTable_cfi import * from PhysicsTools.NanoAOD.genWeightsTable_cfi import * +import ROOT + +genWeights = cms.EDProducer("GenWeightProductProducer") lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", lheInfo = cms.InputTag("externalLHEProducer"), - #lheWeights = cms.InputTag("externalLHEProducer"), - weightgroups = cms.vstring(["mg_reweighting"]), + lheWeights = cms.InputTag("externalLHEProducer"), + genWeights = cms.InputTag("genWeights"), + #weightgroups = cms.vint32([ROOT.gen.kScaleWeights, ROOT.gen.kMEParamWeights, ROOT.gen.kPdfWeights, ROOT.UnknownWeights]), + #weightgroups = cms.vint32([0,1,2,3,4]), + #numWeightgroups = cms.vint([1, -1, 1, 2, 1]), + #pdfs = cms.vint([91400, 306000, 260000]), lheWeightPrecision = cms.int32(14), ) @@ -33,6 +40,7 @@ ) nanogenSequence = cms.Sequence( + genWeights+ nanoMetadata+ particleLevel+ genJetTable+ diff --git a/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py b/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py index a1694745e2051..bf6124b75a66f 100644 --- a/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py +++ b/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py @@ -143,7 +143,7 @@ process.genfiltersummary_step = cms.EndPath(process.genFilterSummary) # Path and EndPath definitions -process.nanoGEN_step = cms.Path(process.nanogenSequence) +process.nanoGEN_step = cms.Path(process.genWeights*process.nanogenSequence) process.endjob_step = cms.EndPath(process.endOfProcess) process.NANOAODGENoutput_step = cms.EndPath(process.NANOAODGENoutput) From 8fcc2305c2f0c46e180f9acb8e641640d0b024bb Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 11 Jan 2020 12:44:51 +0100 Subject: [PATCH 066/186] Update weighttype, read storage info from config --- .../Core/plugins/GenWeightsTestAnalyzer.cc | 4 +- .../Core/src/LHEWeightHelper.cc | 2 +- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- .../LHEInterface/interface/TestWeightInfo.h | 4 +- .../LHEInterface/plugins/LHESource.cc | 4 +- .../plugins/LHEWeightsTableProducer.cc | 105 +++++++++++------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 11 +- .../interface/MEParamWeightGroupInfo.h | 4 +- .../interface/PartonShowerWeightGroupInfo.h | 2 +- .../interface/PdfWeightGroupInfo.h | 6 +- .../interface/ScaleWeightGroupInfo.h | 2 +- .../interface/UnknownWeightGroupInfo.h | 6 +- .../interface/WeightGroupInfo.h | 18 ++- .../src/GenWeightInfoProduct.cc | 2 +- 14 files changed, 104 insertions(+), 68 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc index aead5ad2baff4..492bdcd6a028f 100644 --- a/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc @@ -422,7 +422,7 @@ GenWeightsTestAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Should add a search by name function - auto allScaleWeights = lheWeightInfoHandle->weightGroupIndicesByType(gen::kScaleWeights); + auto allScaleWeights = lheWeightInfoHandle->weightGroupIndicesByType(gen::WeightType::kScaleWeights); if (allScaleWeights.size() > 0) scaleWeightsIndex_ = allScaleWeights.front(); @@ -441,7 +441,7 @@ GenWeightsTestAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, scaleWeightsOrder_.push_back(scaleWeights->muR2muF1Index()); scaleWeightsOrder_.push_back(scaleWeights->muR2muF2Index()); - auto pdfGroups = lheWeightInfoHandle->weightGroupsByType(gen::kPdfWeights); + auto pdfGroups = lheWeightInfoHandle->weightGroupsByType(gen::WeightType::kPdfWeights); auto ct14Set = std::find_if(pdfGroups.begin(), pdfGroups.end(), [] (gen::WeightGroupInfo* group) { auto pdfGroup = dynamic_cast(group); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index e715e38f78fc3..55952e28210ed 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -155,7 +155,7 @@ namespace gen { weightGroups_.push_back(std::make_unique("Unknown")); } auto& group = weightGroups_.back(); - if (group.weightType() == gen::kScaleWeights) { + if (group.weightType() == gen::WeightType::kScaleWeights) { if (currWeightAttributeMap_["mur"].empty() || currWeightAttributeMap_["muf"].empty()) { group.setIsWellFormed(false); } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 0d88d2c55fb80..091feab7d6265 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -53,7 +53,7 @@ namespace gen { void WeightHelper::setGroupInfo() { auto& group = weightGroups_.back(); const std::string& name = group.name(); - if (group.weightType() == kPdfWeights) { + if (group.weightType() == WeightType::kPdfWeights) { PdfWeightGroupInfo* pdfGroup = dynamic_cast(&group); auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }); diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h index 7e386bf1cd4ce..b0c52f6671077 100644 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h @@ -25,7 +25,7 @@ gen::WeightGroupInfo getExampleScaleWeights() { R"( mur=0.5 muf=2 )", R"( mur=0.5 muf=0.5 )", }; - scaleInfo.setWeightType(gen::kScaleWeights); + scaleInfo.setWeightType(gen::WeightType::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); @@ -49,7 +49,7 @@ gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { R"( mur=0.5 muf=1 )", R"( mur=0.5 muf=0.5 )", }; - scaleInfo.setWeightType(gen::kScaleWeights); + scaleInfo.setWeightType(gen::WeightType::kScaleWeights); for (size_t i = 0; i < entries.size(); i++) { scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index f045da892bb94..a29960d0a0a1b 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -128,12 +128,12 @@ void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { gen::WeightGroupInfo scaleInfo( "" ); - scaleInfo.setWeightType(gen::kScaleWeights); + scaleInfo.setWeightType(gen::WeightType::kScaleWeights); gen::WeightGroupInfo cenPdfInfo( "" ); - cenPdfInfo.setWeightType(gen::kPdfWeights); + cenPdfInfo.setWeightType(gen::WeightType::kPdfWeights); product->addWeightGroupInfo(&scaleInfo); product->addWeightGroupInfo(&cenPdfInfo); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 9e074c4912c74..4be52b8da8b62 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -13,6 +13,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "FWCore/Utilities/interface/transform.h" #include @@ -21,25 +22,23 @@ namespace { typedef std::pair, std::vector> WeightGroupsToStore; - //struct WeightGroupToStore { - // gen::WeightType type; - // std::string name; - // bool inLHE; - // gen::WeightGroupData groupInfo; - //} } // namespace class LHEWeightsTableProducer : public edm::global::EDProducer> { public: - LHEWeightsTableProducer(edm::ParameterSet const& params) - : lheInputTag_(params.getParameter("lheInfo")), + LHEWeightsTableProducer(edm::ParameterSet const& params) : lheToken_(consumes(params.getParameter("lheInfo"))), lheWeightToken_(consumes(params.getParameter("lheWeights"))), lheWeightInfoToken_(consumes(params.getParameter("lheWeights"))), genWeightToken_(consumes(params.getParameter("genWeights"))), genWeightInfoToken_(consumes(params.getParameter("genWeights"))), - //weightgroups_(params.getParameter>("weightgroups")), + weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), + [](auto& c) { return gen::WeightType(c.at(0)); } )), + maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), + pdfIds_(params.getParameter>("pdfIds")), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { + if (weightgroups_.size() != maxGroupsPerType_.size()) + throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); produces>(); } @@ -61,35 +60,39 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>& lheWeightTables, std::string entryName, + void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, const char* typeName, const std::vector& weightInfos, WeightsContainer& lheWeights, double w0) const { size_t typeCount = 0; - gen::WeightType currentGroup = gen::kUnknownWeights; + gen::WeightType previousType = gen::WeightType::kUnknownWeights; + size_t index = 0; for (const auto& groupInfo : weightInfos) { + std::string entryName = typeName; gen::WeightType weightType = groupInfo.group->weightType(); + if (previousType != weightType) + typeCount = 0; std::string name = weightTypeNames_.at(weightType); - auto weights = weightType != gen::kScaleWeights ? normalizedWeights(lheWeights, groupInfo, w0) : + auto weights = weightType != gen::WeightType::kScaleWeights ? normalizedWeights(lheWeights, groupInfo, w0) : orderedScaleWeights(lheWeights, groupInfo, w0); - if (typeCount > 0) - entryName.append(std::to_string(typeCount)); entryName.append(name); entryName.append("Weight"); + if (typeCount > 0) { + entryName.append("AltSet"); + entryName.append(std::to_string(typeCount)); + } lheWeightTables->emplace_back(weights.size(), entryName, false); lheWeightTables->back().addColumn( "", weights, groupInfo.group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); typeCount++; - if (currentGroup != weightType) - typeCount = 0; - currentGroup = weightType; + previousType = weightType; } } @@ -105,26 +108,48 @@ class LHEWeightsTableProducer : public edm::global::EDProducer genWeightInfoHandle; iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); - auto scaleGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kScaleWeights); - auto meGroups = lheWeightInfoHandle->weightGroupsAndIndicesByType(gen::kMEParamWeights); + std::unordered_map storePerType; + for (size_t i = 0; i < weightgroups_.size(); i++) + storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); WeightGroupsToStore weightsToStore; - weightsToStore.first.insert(weightsToStore.first.end(), scaleGroups.begin(), scaleGroups.end()); - weightsToStore.first.insert(weightsToStore.first.end(), meGroups.begin(), meGroups.end()); + for (auto weightType : gen::allGenWeightTypes) { + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.first.insert(weightsToStore.first.end(), lheWeights.begin(), lheWeights.end()); - for (auto lhaid : {306000, 91400, 260000}) { - if (auto pdfGroup = lheWeightInfoHandle->pdfGroupWithIndexByLHAID(lhaid)) { - weightsToStore.first.push_back(pdfGroup.value()); - break; - } + auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.second.insert(weightsToStore.second.end(), genWeights.begin(), genWeights.end()); } - auto psGroups = genWeightInfoHandle->weightGroupsAndIndicesByType(gen::kPartonShowerWeights); - weightsToStore.second.insert(weightsToStore.second.end(), psGroups.begin(), psGroups.end()); - return std::make_shared(weightsToStore); } + std::vector weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, int& maxStore) const { + std::vector group; + if (weightType == gen::WeightType::kPdfWeights) { + for (auto lhaid : pdfIds_) { + if (auto pdfGroup = weightsHandle->pdfGroupWithIndexByLHAID(lhaid)) { + group.push_back(pdfGroup.value()); + maxStore--; + if (maxStore == 0) + break; + } + } + return group; + } + + group = weightsHandle->weightGroupsAndIndicesByType(weightType); + + if (maxStore < 0 || static_cast(group.size()) < maxStore) { + // Modify size in case one type of weight is present in multiple products + maxStore -= group.size(); + return group; + } + return std::vector(group.begin(), group.begin()+maxStore); + } + + std::vector normalizedWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& meGroupInfo, double w0) const { std::vector normalizedWeights; for (const auto& weight : lheWeights.at(meGroupInfo.index)) @@ -161,26 +186,30 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheInfo", {"externalLHEProducer"}) ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); - //desc.add>("weightgroups"); desc.add("lheWeights"); desc.add("genWeights"); + desc.add>("weightgroups"); + desc.add>("maxGroupsPerType"); + desc.add>("pdfIds"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); descriptions.addDefault(desc); } protected: - const edm::InputTag lheInputTag_; const edm::EDGetTokenT lheToken_; const edm::EDGetTokenT lheWeightToken_; const edm::EDGetTokenT lheWeightInfoToken_; const edm::EDGetTokenT genWeightToken_; const edm::EDGetTokenT genWeightInfoToken_; - //const std::vector weightgroups_; + const std::vector weightgroups_; + const std::vector maxGroupsPerType_; + const std::vector pdfIds_; const std::unordered_map weightTypeNames_ = { - {gen::kScaleWeights, "Scale"}, - {gen::kPdfWeights, "Pdf"}, - {gen::kMEParamWeights, "MEParam"}, - {gen::kUnknownWeights, "Unknown"}, + {gen::WeightType::kScaleWeights, "Scale"}, + {gen::WeightType::kPdfWeights, "Pdf"}, + {gen::WeightType::kMEParamWeights, "MEParam"}, + {gen::WeightType::kPartonShowerWeights, "PartonShower"}, + {gen::WeightType::kUnknownWeights, "Unknown"}, }; //std::unordered_map weightGroupIndices_; diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 331880c6ba6c9..d2c155a48a5a6 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -5,7 +5,6 @@ from PhysicsTools.NanoAOD.particlelevel_cff import * from PhysicsTools.NanoAOD.lheInfoTable_cfi import * from PhysicsTools.NanoAOD.genWeightsTable_cfi import * -import ROOT genWeights = cms.EDProducer("GenWeightProductProducer") @@ -14,10 +13,12 @@ lheInfo = cms.InputTag("externalLHEProducer"), lheWeights = cms.InputTag("externalLHEProducer"), genWeights = cms.InputTag("genWeights"), - #weightgroups = cms.vint32([ROOT.gen.kScaleWeights, ROOT.gen.kMEParamWeights, ROOT.gen.kPdfWeights, ROOT.UnknownWeights]), - #weightgroups = cms.vint32([0,1,2,3,4]), - #numWeightgroups = cms.vint([1, -1, 1, 2, 1]), - #pdfs = cms.vint([91400, 306000, 260000]), + # Warning: you can use a full string, but only the first character is read. + # Note also that the capitalization is important! For example, 'parton shower' + # must be lower case and 'PDF' must be capital + weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'shower']), + maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), + pdfIds = cms.vint32([91400, 306000, 260000]), lheWeightPrecision = cms.int32(14), ) diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 9a1def0700e21..3b2dd09d37609 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -6,9 +6,9 @@ namespace gen { class MEParamWeightGroupInfo : public WeightGroupInfo { public: - MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = kMEParamWeights; } + MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kMEParamWeights; } MEParamWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = kMEParamWeights; } + WeightGroupInfo(header, name) { weightType_ = WeightType::kMEParamWeights; } MEParamWeightGroupInfo(std::string header) : MEParamWeightGroupInfo(header, header) {} virtual ~MEParamWeightGroupInfo() override {} diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index e9bb539bcb185..ea6c1b1fba683 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -9,7 +9,7 @@ namespace gen { PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} PartonShowerWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { - weightType_ = kPartonShowerWeights; + weightType_ = WeightType::kPartonShowerWeights; } PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) { } diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 54556811ac4d8..aa69dc4bcb7b8 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -20,11 +20,11 @@ namespace gen { int alphasDownIndex_; std::vector> lhapdfIdsContained_; public: - PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = kPdfWeights; } + PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } PdfWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = kPdfWeights; } + WeightGroupInfo(header, name) { weightType_ = WeightType::kPdfWeights; } PdfWeightGroupInfo(std::string header) : - WeightGroupInfo(header) { weightType_ = kPdfWeights; } + WeightGroupInfo(header) { weightType_ = WeightType::kPdfWeights; } PdfWeightGroupInfo(const PdfWeightGroupInfo &other) { copy(other); } diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 994c1235963dd..d3feee93811be 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -20,7 +20,7 @@ namespace gen { ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { - weightType_ = kScaleWeights; + weightType_ = WeightType::kScaleWeights; isFunctionalFormVar_ = false; centralIndex_ = 0; muR1muF2Index_ = 0; diff --git a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h index 37f68289633d7..66152d8840434 100644 --- a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h @@ -6,11 +6,11 @@ namespace gen { class UnknownWeightGroupInfo : public WeightGroupInfo { public: - UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = kUnknownWeights; } + UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kUnknownWeights; } UnknownWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = kUnknownWeights; isWellFormed_ = false;} + WeightGroupInfo(header, name) { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false;} UnknownWeightGroupInfo(std::string header) : - WeightGroupInfo(header) { weightType_ = kUnknownWeights; isWellFormed_ = false;} + WeightGroupInfo(header) { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false;} virtual ~UnknownWeightGroupInfo() override {} void copy(const UnknownWeightGroupInfo &other); virtual UnknownWeightGroupInfo* clone() const override; diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index e0fc9b2bdfb87..fc71436bd5ed6 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -7,6 +7,7 @@ #include #include #include +#include namespace gen { struct WeightMetaInfo { @@ -16,14 +17,19 @@ namespace gen { std::string label; }; - enum WeightType { - kPdfWeights, - kScaleWeights, - kMEParamWeights, - kUnknownWeights, - kPartonShowerWeights, + enum class WeightType : char { + kPdfWeights = 'P', + kScaleWeights = 's', + kMEParamWeights = 'm', + kPartonShowerWeights = 'p', + kUnknownWeights = 'u', }; + const std::array allGenWeightTypes = {{WeightType::kPdfWeights, + WeightType::kScaleWeights, WeightType::kMEParamWeights, + WeightType::kPartonShowerWeights, WeightType::kUnknownWeights, + }}; + class WeightGroupInfo { public: WeightGroupInfo() : WeightGroupInfo("") {} diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index d6b42e3cc1f0e..2b08fce3ef09e 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -55,7 +55,7 @@ std::vector GenWeightInfoProduct::weightGroupsByType(gen: } std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(size_t lhaid) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::kPdfWeights); + auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid] (gen::WeightGroupData& data) { From 3dbdd4c2515791462b43bf4d3f346456a4c366dd Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 11 Jan 2020 16:35:26 +0100 Subject: [PATCH 067/186] Correct name of shower weights so they're stored --- GeneratorInterface/Core/plugins/GenWeightProductProducer.cc | 1 + PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc | 3 +-- PhysicsTools/NanoAOD/python/nanogen_cff.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 7c7f90cdba0df..2cbb6748a08de 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -78,6 +78,7 @@ GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLum iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); weightNames_ = genLumiInfoHandle->weightNames(); + weightHelper_.parseWeightGroupsFromNames(weightNames_); } auto weightInfoProduct = std::make_unique(); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 4be52b8da8b62..f200d31ded731 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -71,7 +71,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightType(); @@ -141,7 +140,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightGroupsAndIndicesByType(weightType); - if (maxStore < 0 || static_cast(group.size()) < maxStore) { + if (maxStore < 0 || static_cast(group.size()) <= maxStore) { // Modify size in case one type of weight is present in multiple products maxStore -= group.size(); return group; diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index d2c155a48a5a6..b86f63905d6c9 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -16,7 +16,7 @@ # Warning: you can use a full string, but only the first character is read. # Note also that the capitalization is important! For example, 'parton shower' # must be lower case and 'PDF' must be capital - weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'shower']), + weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'parton shower']), maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), pdfIds = cms.vint32([91400, 306000, 260000]), lheWeightPrecision = cms.int32(14), From 265e6a0463c2712017d231cafc9db23850c9897c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 16 Jan 2020 23:46:35 +0100 Subject: [PATCH 068/186] Store normalized weights from the start, cleanup --- .../Core/interface/WeightHelper.h | 4 +- .../Core/plugins/GenWeightProductProducer.cc | 14 +-- .../Core/plugins/LHEWeightProductProducer.cc | 2 +- .../Core/src/LHEWeightHelper.cc | 2 + GeneratorInterface/Core/src/WeightHelper.cc | 8 +- .../plugins/ExternalLHEProducer.cc | 3 +- .../plugins/LHEWeightsTableProducer.cc | 101 ++++++++---------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 5 +- .../interface/GenWeightInfoProduct.h | 3 +- .../interface/GenWeightProduct.h | 12 ++- .../interface/WeightGroupInfo.h | 8 +- .../src/GenWeightInfoProduct.cc | 18 +++- .../GeneratorProducts/src/WeightGroupInfo.cc | 3 +- 13 files changed, 99 insertions(+), 84 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 64c284fb4d7b5..5e3102aa60ea4 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -21,8 +21,8 @@ namespace gen { edm::OwnVector weightGroups() { return weightGroups_; } - std::unique_ptr weightProduct(std::vector); - std::unique_ptr weightProduct(std::vector); + std::unique_ptr weightProduct(std::vector, float w0); + std::unique_ptr weightProduct(std::vector, float w0); void setGroupInfo(); bool currentGroupIsScale(); bool currentGroupIsMEParam(); diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 2cbb6748a08de..104083173e6be 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -43,10 +43,8 @@ class GenWeightProductProducer : public edm::one::EDProducer(edm::InputTag("generator"))), - //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))), - genEventToken_(consumes(edm::InputTag("generator"))) - //iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) + genLumiInfoToken_(consumes(iConfig.getParameter("genInfo"))), + genEventToken_(consumes(iConfig.getParameter("genInfo"))) { produces(); produces(); @@ -63,14 +61,12 @@ void GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle genEventInfo; iEvent.getByToken(genEventToken_, genEventInfo); - // Read weights from LHEEventProduct - auto weightProduct = weightHelper_.weightProduct(genEventInfo->weights()); + + float centralWeight = genEventInfo->weights().size() > 0 ? genEventInfo->weights().at(0) : 1.; + auto weightProduct = weightHelper_.weightProduct(genEventInfo->weights(), centralWeight); iEvent.put(std::move(weightProduct)); } -//void -//GenWeightProductProducer::endLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) {} - void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { if (weightNames_.size() == 0) { diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 0c98c2832d1a4..a4f0836314460 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -70,7 +70,7 @@ LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe edm::Handle lheEventInfo; iEvent.getByToken(lheEventToken_, lheEventInfo); // Read weights from LHEEventProduct - auto weightProduct = weightHelper_.weightProduct(lheEventInfo->weights()); + auto weightProduct = weightHelper_.weightProduct(lheEventInfo->weights(), lheEventInfo->originalXWGTUP()); iEvent.put(std::move(weightProduct)); } diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 55952e28210ed..1b3a7f4ee1039 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -136,6 +136,8 @@ namespace gen { else { weightGroups_.push_back(std::make_unique(name)); } + auto& group = weightGroups_.back(); + group.setDescription("Test description"); } else if (std::regex_match(headerLine, std::regex(".*.*\n*"))) { std::string fullTag = headerLine; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 091feab7d6265..fe96bd7298735 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -85,8 +85,8 @@ namespace gen { } // TODO: Could probably recycle this code better - std::unique_ptr WeightHelper::weightProduct(std::vector weights) { - auto weightProduct = std::make_unique(); + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); weightProduct->setNumWeightSets(weightGroups_.size()); int weightGroupIndex = 0; for (unsigned int i = 0; i < weights.size(); i++) { @@ -95,8 +95,8 @@ namespace gen { return std::move(weightProduct); } - std::unique_ptr WeightHelper::weightProduct(std::vector weights) { - auto weightProduct = std::make_unique(); + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); weightProduct->setNumWeightSets(weightGroups_.size()); int weightGroupIndex = 0; int i = 0; diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 88d0d3cb9ed08..49aaa321f9702 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -197,7 +197,8 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe product.get(), _1)); // Should also zero out the weights in the GenInfoProduct - auto weightProduct = weightHelper_.weightProduct(partonLevel->weights()); + auto weightProduct = weightHelper_.weightProduct(partonLevel->weights(), + partonLevel->originalXWGTUP()); iEvent.put(std::move(weightProduct)); product->setScales(partonLevel->scales()); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index f200d31ded731..cc4dc25809135 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -21,13 +21,13 @@ #include namespace { - typedef std::pair, std::vector> WeightGroupsToStore; + typedef std::vector WeightGroupDataContainer; + typedef std::array, 2> WeightGroupsToStore; } // namespace class LHEWeightsTableProducer : public edm::global::EDProducer> { public: LHEWeightsTableProducer(edm::ParameterSet const& params) : - lheToken_(consumes(params.getParameter("lheInfo"))), lheWeightToken_(consumes(params.getParameter("lheWeights"))), lheWeightInfoToken_(consumes(params.getParameter("lheWeights"))), genWeightToken_(consumes(params.getParameter("genWeights"))), @@ -44,8 +44,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; iEvent.getByToken(lheWeightToken_, lheWeightHandle); const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); @@ -57,17 +55,16 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweights(); auto lheWeightTables = std::make_unique>(); - double w0 = lheInfo.originalXWGTUP(); auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.first, lheWeights, w0); - addWeightGroupToTable(lheWeightTables, "GEN", weightInfos.second, genWeights, w0); + addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); + addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); iEvent.put(std::move(lheWeightTables)); } void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, const char* typeName, - const std::vector& weightInfos, WeightsContainer& lheWeights, double w0) const { + const WeightGroupDataContainer& weightInfos, WeightsContainer& allWeights) const { size_t typeCount = 0; gen::WeightType previousType = gen::WeightType::kUnknownWeights; @@ -76,9 +73,23 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightType(); if (previousType != weightType) typeCount = 0; + std::string name = weightTypeNames_.at(weightType); - auto weights = weightType != gen::WeightType::kScaleWeights ? normalizedWeights(lheWeights, groupInfo, w0) : - orderedScaleWeights(lheWeights, groupInfo, w0); + std::string label = groupInfo.group->name(); + + auto& weights = allWeights.at(groupInfo.index); + label.append("; "); + if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() + && groupInfo.group->nIdsContained() < 10) { + weights = orderedScaleWeights(weights, + dynamic_cast(groupInfo.group)); + label.append("[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } + else + label.append(groupInfo.group->description()); + entryName.append(name); entryName.append("Weight"); if (typeCount > 0) { @@ -88,7 +99,7 @@ class LHEWeightsTableProducer : public edm::global::EDProduceremplace_back(weights.size(), entryName, false); lheWeightTables->back().addColumn( - "", weights, groupInfo.group->name(), nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); typeCount++; previousType = weightType; @@ -112,33 +123,25 @@ class LHEWeightsTableProducer : public edm::global::EDProducer(weightsToStore); } - std::vector weightDataPerType(edm::Handle& weightsHandle, + WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, gen::WeightType weightType, int& maxStore) const { - std::vector group; - if (weightType == gen::WeightType::kPdfWeights) { - for (auto lhaid : pdfIds_) { - if (auto pdfGroup = weightsHandle->pdfGroupWithIndexByLHAID(lhaid)) { - group.push_back(pdfGroup.value()); - maxStore--; - if (maxStore == 0) - break; - } - } - return group; + WeightGroupDataContainer group; + if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { + group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); } - - group = weightsHandle->weightGroupsAndIndicesByType(weightType); + else + group = weightsHandle->weightGroupsAndIndicesByType(weightType); if (maxStore < 0 || static_cast(group.size()) <= maxStore) { // Modify size in case one type of weight is present in multiple products @@ -149,33 +152,20 @@ class LHEWeightsTableProducer : public edm::global::EDProducer normalizedWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& meGroupInfo, double w0) const { - std::vector normalizedWeights; - for (const auto& weight : lheWeights.at(meGroupInfo.index)) - normalizedWeights.push_back(weight/w0); - return normalizedWeights; - } + std::vector orderedScaleWeights(const std::vector& scaleWeights, const gen::ScaleWeightGroupInfo* scaleGroup) const { + + std::vector weights; + weights.push_back(scaleWeights.at(scaleGroup->muR05muF05Index())); + weights.push_back(scaleWeights.at(scaleGroup->muR05muF1Index())); + weights.push_back(scaleWeights.at(scaleGroup->muR05muF2Index())); + weights.push_back(scaleWeights.at(scaleGroup->muR1muF05Index())); + weights.push_back(scaleWeights.at(scaleGroup->centralIndex())); + weights.push_back(scaleWeights.at(scaleGroup->muR1muF2Index())); + weights.push_back(scaleWeights.at(scaleGroup->muR2muF05Index())); + weights.push_back(scaleWeights.at(scaleGroup->muR2muF1Index())); + weights.push_back(scaleWeights.at(scaleGroup->muR2muF2Index())); - std::vector orderedScaleWeights(WeightsContainer& lheWeights, const gen::WeightGroupData& scaleGroupInfo, double w0) const { - const gen::ScaleWeightGroupInfo* scaleGroup = static_cast(scaleGroupInfo.group); - size_t scaleGroupIndex = scaleGroupInfo.index; - - std::vector normalizedWeights; - std::vector& scaleWeights = lheWeights.at(scaleGroupIndex); - - // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; - // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR05muF05Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR05muF1Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR05muF2Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR1muF05Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->centralIndex())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR1muF2Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR2muF05Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR2muF1Index())/w0); - normalizedWeights.push_back(scaleWeights.at(scaleGroup->muR2muF2Index())/w0); - - return normalizedWeights; + return weights; } // nothing to do here @@ -183,8 +173,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheInfo", {"externalLHEProducer"}) - ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); desc.add("lheWeights"); desc.add("genWeights"); desc.add>("weightgroups"); @@ -213,6 +201,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer weightGroupIndices_; int lheWeightPrecision_; + enum {inLHE, inGen}; }; #include "FWCore/Framework/interface/MakerMacros.h" diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index b86f63905d6c9..aed174dbf7a2b 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -6,11 +6,11 @@ from PhysicsTools.NanoAOD.lheInfoTable_cfi import * from PhysicsTools.NanoAOD.genWeightsTable_cfi import * -genWeights = cms.EDProducer("GenWeightProductProducer") +genWeights = cms.EDProducer("GenWeightProductProducer", + genInfo = cms.InputTag("generator")) lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", - lheInfo = cms.InputTag("externalLHEProducer"), lheWeights = cms.InputTag("externalLHEProducer"), genWeights = cms.InputTag("genWeights"), # Warning: you can use a full string, but only the first character is read. @@ -18,6 +18,7 @@ # must be lower case and 'PDF' must be capital weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'parton shower']), maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), + # If empty or not specified, all pdf weights are stored pdfIds = cms.vint32([91400, 306000, 260000]), lheWeightPrecision = cms.int32(14), ) diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index 06a3ff7907287..f990ed1931ea5 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -36,7 +36,8 @@ class GenWeightInfoProduct { std::vector weightGroupsByType(gen::WeightType type) const; std::vector weightGroupIndicesByType(gen::WeightType type) const; std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; - std::optional pdfGroupWithIndexByLHAID(size_t lhaid) const; + std::optional pdfGroupWithIndexByLHAID(int lhaid) const; + std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; void addWeightGroupInfo(gen::WeightGroupInfo* info); const int numberOfGroups() const { return weightGroupsInfo_.size(); } diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index e09f2541f8601..4675e17c6c80d 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -13,10 +13,12 @@ typedef std::vector> WeightsContainer; class GenWeightProduct { public: - GenWeightProduct() { weightsVector_ = {}; } + GenWeightProduct() { weightsVector_ = {}; centralWeight_ = 1.; } + GenWeightProduct(double w0) { weightsVector_ = {}; centralWeight_ = w0; } GenWeightProduct& operator=(GenWeightProduct&& other) { - weightsVector_ = std::move(other.weightsVector_); - return *this; + weightsVector_ = std::move(other.weightsVector_); + centralWeight_ = other.centralWeight_; + return *this; } ~GenWeightProduct() {} @@ -31,12 +33,14 @@ class GenWeightProduct { if (static_cast(weights.size()) <= weightNum) { weights.resize(weightNum+1); } - weights[weightNum] = weight; + weights[weightNum] = weight/centralWeight_; } const WeightsContainer& weights() const { return weightsVector_; } + double centralWeight() const { return centralWeight_; } private: WeightsContainer weightsVector_; + double centralWeight_; }; #endif // GeneratorEvent_LHEInterface_GenWeightProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index fc71436bd5ed6..aa097b399cf12 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -25,7 +25,7 @@ namespace gen { kUnknownWeights = 'u', }; - const std::array allGenWeightTypes = {{WeightType::kPdfWeights, + const std::array allWeightTypes = {{WeightType::kPdfWeights, WeightType::kScaleWeights, WeightType::kMEParamWeights, WeightType::kPartonShowerWeights, WeightType::kUnknownWeights, }}; @@ -50,22 +50,25 @@ namespace gen { WeightMetaInfo weightMetaInfo(int weightEntry) const; WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; int weightVectorEntry(const std::string& wgtId) const; - int containsWeight(const std::string& wgtId, int weightEntry) const; + bool containsWeight(const std::string& wgtId, int weightEntry) const; int weightVectorEntry(const std::string& wgtId, int weightEntry) const; void addContainedId(int weightEntry, std::string id, std::string label); std::vector containedIds() const; bool indexInRange(int index) const; void setName(std::string name) { name_ = name; } + void setDescription(std::string description) { description_ = description; } void setHeaderEntry(std::string header) { headerEntry_ = header; } void setWeightType(WeightType type) { weightType_ = type; } void setFirstId(int firstId) { firstId_ = firstId; } void setLastId(int lastId) { lastId_ = lastId; } std::string name() const { return name_; } + std::string description() const { return description_; } std::string headerEntry() const { return headerEntry_; } WeightType weightType() const { return weightType_; } std::vector idsContained() const { return idsContained_; } + size_t nIdsContained() const { return idsContained_.size(); } int firstId() const { return firstId_; } int lastId() const { return lastId_; } // Store whether the group was fully parsed succesfully @@ -76,6 +79,7 @@ namespace gen { bool isWellFormed_; std::string headerEntry_; std::string name_; + std::string description_; WeightType weightType_; std::vector idsContained_; int firstId_; diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 2b08fce3ef09e..e16bbebcc27da 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -54,7 +54,7 @@ std::vector GenWeightInfoProduct::weightGroupsByType(gen: return matchingGroups; } -std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(size_t lhaid) const { +std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(int lhaid) const { auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), @@ -65,6 +65,22 @@ std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHA return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; } +std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const { + auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + std::vector groups; + + for (auto lhaid : lhaids) { + auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), + [lhaid] (gen::WeightGroupData& data) { + auto pdfGroup = dynamic_cast(data.group); + return pdfGroup->containsLhapdfId(lhaid); + }); + if (matchingPdfSet != pdfGroups.end()) + pdfGroups.push_back(*matchingPdfSet); + } + + return pdfGroups; +} std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { std::vector matchingGroupIndices; diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index aeb877bfb7b29..23c22b2342838 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -10,6 +10,7 @@ namespace gen { isWellFormed_ = true; headerEntry_ = other.headerEntry(); name_ = other.name(); + description_ = other.description(); weightType_ = other.weightType(); idsContained_ = other.idsContained(); firstId_ = other.firstId(); @@ -37,7 +38,7 @@ namespace gen { return weightVectorEntry(wgtId, 0); } - int WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { + bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { return weightVectorEntry(wgtId, weightEntry) != -1; } From 6aaef397110c974d83ba52e75c65e5819dd9fc1d Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 17 Jan 2020 11:31:23 +0100 Subject: [PATCH 069/186] Make pdfIds untracked --- PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc | 5 ++--- PhysicsTools/NanoAOD/python/nanogen_cff.py | 5 +++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index cc4dc25809135..ed26af86897bc 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -35,7 +35,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>("weightgroups"), [](auto& c) { return gen::WeightType(c.at(0)); } )), maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), - pdfIds_(params.getParameter>("pdfIds")), + pdfIds_(params.getUntrackedParameter>("pdfIds", {})), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { if (weightgroups_.size() != maxGroupsPerType_.size()) throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); @@ -177,7 +177,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("genWeights"); desc.add>("weightgroups"); desc.add>("maxGroupsPerType"); - desc.add>("pdfIds"); + desc.addOptionalUntracked>("pdfIds"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); descriptions.addDefault(desc); } @@ -203,6 +203,5 @@ class LHEWeightsTableProducer : public edm::global::EDProducer store all found maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), - # If empty or not specified, all pdf weights are stored - pdfIds = cms.vint32([91400, 306000, 260000]), + # If empty or not specified, no critieria is applied to filter on LHAPDF IDs + pdfIds = cms.untracked.vint32([91400, 306000, 260000]), lheWeightPrecision = cms.int32(14), ) From 6ccee5d97cb552ffbad85a773e833fc8e6ef658b Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 17 Jan 2020 20:57:33 +0100 Subject: [PATCH 070/186] Working implementation producing new prod if needed --- .../Core/plugins/LHEWeightProductProducer.cc | 24 ++++++++++----- .../plugins/LHEWeightsTableProducer.cc | 29 ++++++++++++++----- PhysicsTools/NanoAOD/python/nanogen_cff.py | 7 ++++- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index a4f0836314460..db74a3b25730b 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -36,6 +36,8 @@ class LHEWeightProductProducer : public edm::one::EDProducer lheRunInfoToken_; edm::EDGetTokenT lheEventToken_; + const edm::EDGetTokenT lheWeightInfoToken_; + bool foundWeightProduct_; void produce(edm::Event&, const edm::EventSetup&) override; void beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) override; @@ -48,11 +50,10 @@ class LHEWeightProductProducer : public edm::one::EDProducer("lheSourceLabel")), - lheRunInfoToken_(consumes( - iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))), - lheEventToken_(consumes( - iConfig.getUntrackedParameter("lheSource", edm::InputTag("externalLHEProducer")))) + lheLabel_(iConfig.getParameter("lheSourceLabel")), + lheRunInfoToken_(consumes(lheLabel_)), + lheEventToken_(consumes(lheLabel_)), + lheWeightInfoToken_(consumes(lheLabel_)) { produces(); produces(); @@ -67,6 +68,9 @@ LHEWeightProductProducer::~LHEWeightProductProducer() // ------------ method called to produce the data ------------ void LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + if (foundWeightProduct_) + return; + edm::Handle lheEventInfo; iEvent.getByToken(lheEventToken_, lheEventInfo); // Read weights from LHEEventProduct @@ -74,12 +78,9 @@ LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe iEvent.put(std::move(weightProduct)); } -// ------------ method called when starting to processes a run ------------ void LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { edm::Handle lheRunInfoHandle; - //run.getByToken(lheRunInfoToken_, lheRunInfoHandle); - // get by token gives an error (the same one that's been in the ExternalLHEProducer for ages) run.getByLabel(lheLabel_, lheRunInfoHandle); typedef std::vector::const_iterator header_cit; @@ -97,6 +98,13 @@ LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const& es) void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { + edm::Handle lheWeightInfoHandle; + lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundWeightProduct_ = true; + return; + } + auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index ed26af86897bc..5587cbd3d31e6 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -28,8 +28,10 @@ namespace { class LHEWeightsTableProducer : public edm::global::EDProducer> { public: LHEWeightsTableProducer(edm::ParameterSet const& params) : - lheWeightToken_(consumes(params.getParameter("lheWeights"))), - lheWeightInfoToken_(consumes(params.getParameter("lheWeights"))), + lheWeightTokens_(edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), genWeightToken_(consumes(params.getParameter("genWeights"))), genWeightInfoToken_(consumes(params.getParameter("genWeights"))), weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), @@ -43,9 +45,14 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; - iEvent.getByToken(lheWeightToken_, lheWeightHandle); + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + break; + } + } + const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); WeightsContainer lheWeights = lheWeightProduct->weights(); @@ -113,7 +120,12 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightInfoHandle; - iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + for (auto& token : lheWeightInfoTokens_) { + iLumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + break; + } + } edm::Handle genWeightInfoHandle; iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); @@ -173,7 +185,8 @@ class LHEWeightsTableProducer : public edm::global::EDProducer("lheWeights"); + desc.add>("lheWeights"); + //desc.add>("genWeights"); desc.add("genWeights"); desc.add>("weightgroups"); desc.add>("maxGroupsPerType"); @@ -184,8 +197,8 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheToken_; - const edm::EDGetTokenT lheWeightToken_; - const edm::EDGetTokenT lheWeightInfoToken_; + const std::vector> lheWeightTokens_; + const std::vector> lheWeightInfoTokens_; const edm::EDGetTokenT genWeightToken_; const edm::EDGetTokenT genWeightInfoToken_; const std::vector weightgroups_; diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index b79d0d61c0b39..88d8ebe03c18f 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -9,9 +9,13 @@ genWeights = cms.EDProducer("GenWeightProductProducer", genInfo = cms.InputTag("generator")) +lheWeights = cms.EDProducer("LHEWeightProductProducer", + lheSourceLabel = cms.string("externalLHEProducer"), + lheSource = cms.InputTag("externalLHEProducer")) + lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", - lheWeights = cms.InputTag("externalLHEProducer"), + lheWeights = cms.VInputTag(["externalLHEProducer", "lheWeights"]), genWeights = cms.InputTag("genWeights"), # Warning: you can use a full string, but only the first character is read. # Note also that the capitalization is important! For example, 'parton shower' @@ -44,6 +48,7 @@ nanogenSequence = cms.Sequence( genWeights+ + lheWeights+ nanoMetadata+ particleLevel+ genJetTable+ From 884dc84cf36c5578e59c7300e2f63c11403f07b2 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 17 Jan 2020 21:20:32 +0100 Subject: [PATCH 071/186] Remove test analyzers --- .../Core/plugins/GenWeightsTestAnalyzer.cc | 456 ------------------ .../testGenWeights_simpleZanalyzer_cfg.py | 78 --- 2 files changed, 534 deletions(-) delete mode 100644 GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc delete mode 100644 GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py diff --git a/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc b/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc deleted file mode 100644 index 492bdcd6a028f..0000000000000 --- a/GeneratorInterface/Core/plugins/GenWeightsTestAnalyzer.cc +++ /dev/null @@ -1,456 +0,0 @@ -// -*- C++ -*- -// -// Package: GenAnalysis/GenWeightsTestAnalyzer -// Class: GenWeightsTestAnalyzer -// -/**\class GenWeightsTestAnalyzer GenWeightsTestAnalyzer.cc GenAnalysis/GenWeightsTestAnalyzer/plugins/GenWeightsTestAnalyzer.cc - - Description: [one line class summary] - - Implementation: - [Notes on implementation] -*/ -// -// Original Author: Andreas Artur Eugen Albert -// Created: Fri, 21 Jul 2017 11:42:52 GMT -// -// - - -// system include files -#include -#include // std::pair -// user include files -#include -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/one/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Run.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/HepMCCandidate/interface/GenParticle.h" -#include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h" -#include "DataFormats/METReco/interface/GenMET.h" -#include "DataFormats/METReco/interface/GenMETCollection.h" -#include "DataFormats/JetReco/interface/GenJetCollection.h" - -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CommonTools/UtilAlgos/interface/TFileService.h" - -#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" - -#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" - -#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" - -#include "Math/VectorUtil.h" - -#include -#include -#include -#include -// -// class declaration -// - -// If the analyzer does not use TFileService, please remove -// the template argument to the base class so the class inherits -// from edm::one::EDAnalyzer<> and also remove the line from -// constructor "usesResource("TFileService");" -// This will improve performance in multithreaded jobs. - -class GenWeightsTestAnalyzer : public edm::one::EDAnalyzer { - public: - explicit GenWeightsTestAnalyzer(const edm::ParameterSet&); - ~GenWeightsTestAnalyzer(); - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - - private: - virtual void beginJob() override; - virtual void beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) override; - virtual void endLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) override {} - virtual void analyze(const edm::Event&, const edm::EventSetup&) override; - virtual void endJob() override; - - void setup_variables(const edm::Event& iEvent); - std::vector setup_weights(const edm::Event& iEvent); - - // ----------member data --------------------------- - std::string tag_; - bool isMiniaod_; - std::vector scaleWeightsOrder_; - int scaleWeightsIndex_; - int pdfWeightsIndex_; - - edm::EDGetTokenT genParticleToken_; - edm::EDGetTokenT genJetToken_; - edm::EDGetTokenT LHEToken_; - edm::EDGetTokenT GenToken_; - edm::EDGetTokenT lheWeightToken_; - edm::EDGetTokenT genWeightToken_; - edm::EDGetTokenT lheWeightInfoToken_; - edm::Service fileservice; - - std::map histograms2d; - std::map histograms1d; - - TTree * tree; - std::map variables; - - TNamed * filelist; - - TH1D * h_count_event; - TH1D * h_count_sumw; - - const unsigned int KEEP_LHAPDFID_ = 23000; - int keepPdfSetIndex_ = 0; - int keepPdfIndexInSet_ = -1; -}; - -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - -// -// constructors and destructor -// -GenWeightsTestAnalyzer::GenWeightsTestAnalyzer(const edm::ParameterSet& iConfig) : - tag_(iConfig.getParameter("tag")), - isMiniaod_(iConfig.getParameter("miniaod")), - scaleWeightsIndex_(-1), - pdfWeightsIndex_(-1), - genParticleToken_(consumes(iConfig.getParameter("genParticleSrc"))), - genJetToken_(consumes(iConfig.getParameter("genJetSrc"))), - LHEToken_(consumes(iConfig.getParameter("LHESrc"))), - GenToken_(consumes(iConfig.getParameter("GenSrc"))), - lheWeightToken_(consumes(edm::InputTag("testLheWeights"))), - genWeightToken_(consumes(edm::InputTag("testGenWeights"))), - lheWeightInfoToken_(consumes(edm::InputTag("testLheWeights"))) - -{ - //now do what ever initialization is needed - //usesResource("TFileService"); - TFileDirectory subdirectory = fileservice->mkdir( tag_ ); - - h_count_event = subdirectory.make("h_count_event", "h_count_event;Dummy;Events", 1,0,1); - h_count_sumw = subdirectory.make("h_count_sumw", "h_count_sumw;Weight index;Events", 1,0,1); - - int nweights = 1200; - histograms2d["pt_jet1"] = subdirectory.make("pt_jet1", "Leading jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); - histograms2d["pt_jet2"] = subdirectory.make("pt_jet2", "Trailing jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); - histograms2d["pt_jet3"] = subdirectory.make("pt_jet3", "3rd jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); - histograms2d["pt_jet4"] = subdirectory.make("pt_jet4", "4th jet pt;pt_{jet};weight;Events",200,0,1000, nweights, -0.5, nweights-0.5); - histograms2d["ht"] = subdirectory.make("ht", "HT;HT (GeV);weight;Events",200,0,2000, nweights, -0.5, nweights-0.5); - histograms2d["dilepton_pt"] = subdirectory.make("dilepton_pt", "Dilepton p_{T}; p_{T} (GeV);weight;Events",200,0,2000, nweights, -0.5, nweights-0.5); - histograms2d["n_leptons"] = subdirectory.make("n_leptons", "number of leptons;n_lep;weight;Events",10,-0.5,9.5, nweights, -0.5, nweights-0.5); - - tree = subdirectory.make("events","events"); - for(auto const entry : histograms1d){ - tree->Branch(entry.first, &variables[entry.first],(entry.first+"/D").Data()); - } - filelist = subdirectory.make(tag_,tag_); -} - - -GenWeightsTestAnalyzer::~GenWeightsTestAnalyzer() -{ - - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) - -} - - -// -// member functions -// -bool compare_pt(reco::GenParticle p1, reco::GenParticle p2){ - return p2.pt() < p1.pt(); -} -std::vector select_leptons(const std::vector genParticles) { - std::vector leptons; - for (auto const p : genParticles){ - unsigned const int id = abs(p.pdgId()); - if(p.numberOfDaughters() > 0) continue; - else if(p.pt()<20) continue; - else if(not ((id==11)||(id==13)) ) continue; - else leptons.push_back(p); - } - std::sort(leptons.begin(), leptons.end(), compare_pt ); - return leptons; -} -std::vector select_neutrinos(const std::vector genParticles) { - std::vector neutrinos; - for (auto const p : genParticles){ - unsigned const int id = abs(p.pdgId()); - if(p.pt() < 25) continue; - else if(p.numberOfDaughters() > 0) continue; - else if(not ((id==12)||(id==14)||(id==16)) ) continue; - else neutrinos.push_back(p); - } - std::sort(neutrinos.begin(), neutrinos.end(), compare_pt ); - return neutrinos; -} - -std::vector select_jets(const std::vector genJets) { - std::vector jets; - for (auto const p : genJets){ - if(fabs(p.pt()) < 10) continue; - else jets.push_back(p); - } - std::sort(jets.begin(), jets.end(), compare_pt ); - return jets; -} - -std::pair find_z_candidate(std::vector & genParticles) { - double delta_mass_min = 9999; - double m_z = 91; - reco::GenParticle p1,p2; - for( unsigned int i = 0; i < genParticles.size(); i++ ) { - for( unsigned int j = i+1; j < genParticles.size(); j++ ) { - auto candidate_p4 = genParticles.at(i).p4() + genParticles.at(j).p4(); - double dm = fabs(candidate_p4.mass()-m_z); - if(dm < delta_mass_min ) { - delta_mass_min = dm; - p1 = genParticles.at(i); - p2 = genParticles.at(j); - } - } - } - return std::make_pair(p1,p2); -} - -std::vector clean_jets(const std::vector genJets, const std::vector leptons){ - std::vector cleaned_jets; - cleaned_jets.reserve(genJets.size()); - for( auto const jet : genJets ) { - double delta_r_min = 999; - double eta = jet.eta(); - double phi = jet.phi(); - for( auto const lep : leptons ) { - double delta_r = pow((pow(lep.eta() - eta,2) + pow(lep.phi() - phi,2)),0.5); - if (delta_r < delta_r_min){ - delta_r_min = delta_r; - } - } - if(delta_r_min < 0.4) { - continue; - } else { - cleaned_jets.push_back(jet); - } - } - return cleaned_jets; -} -void print_variables(std::map variables) { - -} -double delta_phi(reco::Candidate::LorentzVector const & p1,reco::Candidate::LorentzVector const & p2) { - double dphi_raw = fabs(p1.phi() - p2.phi()); - if(dphi_raw > M_PI){ - return 2*M_PI - dphi_raw; - } else { - return dphi_raw; - } -} -//// Parse generator history of particle and look for -bool has_v_in_history(reco::GenParticle const & part){ - size_t nmothers = part.numberOfMothers(); - if(nmothers == 0) { - return false; - } else { - for( size_t im = 0; im < nmothers; im++ ){ - auto const & mother = *(part.motherRef(im)); - - if(mother.pdgId() == 23 or mother.pdgId() == 24) { - return true; - } else if( has_v_in_history(*(part.motherRef(im))) ) { - return true; - } - } - return false; - } -} - -void GenWeightsTestAnalyzer::setup_variables(const edm::Event& iEvent) { - using namespace edm; - - //// Initialize with dummy values - for ( auto pair : variables ) { - variables[pair.first] = -9999; - } - - Handle> genParticleHandle; - iEvent.getByToken(genParticleToken_, genParticleHandle); - const std::vector * genParticles = genParticleHandle.product(); - - Handle> genJetHandle; - iEvent.getByToken(genJetToken_, genJetHandle); - const std::vector * genJets = genJetHandle.product(); - - edm::Handle lheHandle; - iEvent.getByLabel("externalLHEProducer", lheHandle); - const LHEEventProduct * lhe = lheHandle.product(); - - - - - variables["weight"] = lhe->originalXWGTUP(); - - //~ //// Leptons - std::vector leptons = select_leptons(*genParticles); - variables["n_leptons"] = leptons.size(); - - if(leptons.size() >= 2) { - auto z_cand = find_z_candidate(leptons); - variables["dilepton_pt"] = (z_cand.first.p4() + z_cand.second.p4()).pt(); - } - else - variables["dilepton_pt"] = 0; - - //// Jets - std::vector jets = clean_jets(select_jets(*genJets),leptons); - int njets = jets.size(); - variables["n_jets"] = njets; - variables["pt_jet1"] = njets > 0 ? jets.at(0).pt() : -999; - variables["pt_jet2"] = njets > 1 ? jets.at(1).pt() : -999; - variables["pt_jet3"] = njets > 2 ? jets.at(2).pt() : -999; - variables["pt_jet4"] = njets > 3 ? jets.at(3).pt() : -999; - - double ht = 0; - for(auto const & j : jets){ - ht += j.pt(); - } - variables["ht"] = ht; - -} -std::vector GenWeightsTestAnalyzer::setup_weights(const edm::Event& iEvent) { - edm::Handle lheWeightHandle; - edm::Handle genWeightHandle; - iEvent.getByToken(lheWeightToken_, lheWeightHandle); - iEvent.getByToken(genWeightToken_, genWeightHandle); - const GenWeightProduct * lheWeightProduct = lheWeightHandle.product(); - const GenWeightProduct * genWeightProduct = genWeightHandle.product(); - WeightsContainer lheWeights = lheWeightProduct->weights(); - WeightsContainer genWeights = genWeightProduct->weights(); - - auto scaleWeights = scaleWeightsIndex_ >= 0 ? lheWeights.at(scaleWeightsIndex_) : std::vector(); - auto pdfWeights = pdfWeightsIndex_ > 0 ? lheWeights.at(pdfWeightsIndex_) : std::vector(); - std::vector keepWeights; - - for(auto i : scaleWeightsOrder_){ - keepWeights.push_back(scaleWeights.at(i)); - } - - for(auto& weight : pdfWeights){ - keepWeights.push_back(weight); - } - - if (genWeights.size() > 0) { - for(auto& weight : genWeights.front()){ - keepWeights.push_back(weight); - } - } - - return keepWeights; -} - - -// ------------ method called for each event ------------ -void -GenWeightsTestAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; - - setup_variables(iEvent); - tree->Fill(); - auto weights = setup_weights(iEvent); - h_count_event->Fill(0.5); - h_count_sumw->Fill(0.5,weights.at(4)); - - for( auto pair : histograms2d ) { - for(uint i=0; i -9998){ - pair.second->Fill(value,i,weights.at(i)); - } - } - } -} - - -// ------------ method called once each job just before starting event loop ------------ -void -GenWeightsTestAnalyzer::beginJob() -{ -} - -// ------------ method called once each job just after ending the event loop ------------ -void -GenWeightsTestAnalyzer::endJob() -{ -} - -// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ -void -GenWeightsTestAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - //The following says we do not know what parameters are allowed so do no validation - // Please change this to state exactly what you do use, even if it is no parameters - edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); -} - -void -GenWeightsTestAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const& es) { - //edm::Handle lheWeightsInfoHandle; - //edm::Handle lheWeightsInfoHandle; - //run.getByLabel("generator", lheWeightsInfoHandle); - edm::Handle lheWeightInfoHandle; - iLumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - - // Should add a search by name function - auto allScaleWeights = lheWeightInfoHandle->weightGroupIndicesByType(gen::WeightType::kScaleWeights); - if (allScaleWeights.size() > 0) - scaleWeightsIndex_ = allScaleWeights.front(); - - auto scaleWeights = static_cast( - lheWeightInfoHandle->orderedWeightGroupInfo(scaleWeightsIndex_)); - // nano ordering of mur=0.5 muf=0.5 ; [1] is mur=0.5 muf=1 ; [2] is mur=0.5 muf=2 ; [3] is mur=1 muf=0.5 ; - // [4] is mur=1 muf=1 ; [5] is mur=1 muf=2 ; [6] is mur=2 muf=0.5 ; [7] is mur=2 muf=1 ; [8] is mur=2 muf=2 * - scaleWeightsOrder_.clear(); - scaleWeightsOrder_.push_back(scaleWeights->muR05muF05Index()); - scaleWeightsOrder_.push_back(scaleWeights->muR05muF1Index()); - scaleWeightsOrder_.push_back(scaleWeights->muR05muF2Index()); - scaleWeightsOrder_.push_back(scaleWeights->muR1muF05Index()); - scaleWeightsOrder_.push_back(scaleWeights->centralIndex()); - scaleWeightsOrder_.push_back(scaleWeights->muR1muF2Index()); - scaleWeightsOrder_.push_back(scaleWeights->muR2muF05Index()); - scaleWeightsOrder_.push_back(scaleWeights->muR2muF1Index()); - scaleWeightsOrder_.push_back(scaleWeights->muR2muF2Index()); - - auto pdfGroups = lheWeightInfoHandle->weightGroupsByType(gen::WeightType::kPdfWeights); - auto ct14Set = std::find_if(pdfGroups.begin(), pdfGroups.end(), - [] (gen::WeightGroupInfo* group) { - auto pdfGroup = dynamic_cast(group); - return pdfGroup->containsLhapdfId(1300); - }); - if (ct14Set != pdfGroups.end()) - pdfWeightsIndex_ = std::distance(pdfGroups.begin(), ct14Set); -} - -//define this as a plug-in -DEFINE_FWK_MODULE(GenWeightsTestAnalyzer); - diff --git a/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py b/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py deleted file mode 100644 index 4e364b0aa2557..0000000000000 --- a/GeneratorInterface/Core/test/testGenWeights_simpleZanalyzer_cfg.py +++ /dev/null @@ -1,78 +0,0 @@ -import FWCore.ParameterSet.Config as cms -import sys -import os -import re -from FWCore.ParameterSet.VarParsing import VarParsing - -def commandline(): - options = VarParsing('analysis') - - options.register( - "fileList", - "", - VarParsing.multiplicity.singleton, - VarParsing.varType.string, - "List of files to run on." - ) - options.register( - "isMiniAOD", - False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "Sample is miniAOD" - ) - options.register( - "path", - None, - VarParsing.multiplicity.singleton, - VarParsing.varType.string, - "Path for input files" - ) - - options.parseArguments() - - - print "OPTIONS: MiniAOD ---> " + ("Yes" if options.isMiniAOD else "No") - print "OPTIONS: Tag ---> {TAG}".format(TAG=options.tag) - - - if(len(options.inputFiles) and options.fileList != ""): - print "ERROR: Please provide either fileList or inputFiles but not both." - sys.exit(1) - elif(options.fileList != ""): - options.inputFiles.extend(read_list_from_file(options.fileList)) - elif(options.path): - options.inputFiles.extend(find_files(options.path,'.*\.root')) - print "Found {N} files.".format(N=len(options.inputFiles)) - - return options -# Define the CMSSW process -process = cms.Process("demo") -options = commandline() - -process.load("FWCore.MessageService.MessageLogger_cfi") -process.MessageLogger.cerr.FwkReport.reportEvery = 1000 - -process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) ) - -process.source = cms.Source("PoolSource", - fileNames = cms.untracked.vstring( options.inputFiles ) -) - -process.testLheWeights = cms.EDProducer("LHEWeightProductProducer") -process.testGenWeights = cms.EDProducer("GenWeightProductProducer") - -process.demo = cms.EDAnalyzer('GenWeightsTestAnalyzer', - tag = cms.string(options.tag), - miniaod = cms.bool(options.isMiniAOD), - genParticleSrc = cms.InputTag("prunedGenParticles" if options.isMiniAOD else "genParticles"), - genJetSrc = cms.InputTag( "slimmedGenJets" if options.isMiniAOD else "ak4GenJetsNoNu"), - genMETSrc = cms.InputTag( "slimmedMETs" if options.isMiniAOD else "genMetTrue"), - LHESrc = cms.InputTag("externalLHEProducer"), - GenSrc = cms.InputTag("generator") -) - -process.TFileService = cms.Service("TFileService", fileName = cms.string("analysis_{TAG}.root".format(TAG=options.tag)) ) - -process.p = cms.Path(process.testLheWeights*process.testGenWeights*process.demo) - From 9bd87c7b4ddfb64cb93fc814b580458197132ac9 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 18 Jan 2020 11:07:52 +0100 Subject: [PATCH 072/186] Remove dummy weights function --- .../LHEInterface/interface/TestWeightInfo.h | 1005 ----------------- 1 file changed, 1005 deletions(-) delete mode 100644 GeneratorInterface/LHEInterface/interface/TestWeightInfo.h diff --git a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h b/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h deleted file mode 100644 index b0c52f6671077..0000000000000 --- a/GeneratorInterface/LHEInterface/interface/TestWeightInfo.h +++ /dev/null @@ -1,1005 +0,0 @@ -#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" -#include - -std::string parseId(std::string label) { - auto re = std::regex("id=\"([0-9]*)\""); - std::smatch matches; - std::regex_search(label, matches, re); - return std::string(matches.str(1)); -} - -gen::WeightGroupInfo getExampleScaleWeights() { - gen::WeightGroupInfo scaleInfo = gen::WeightGroupInfo( - "", - "centralScaleVariations" - ); - std::vector entries = { - R"( mur=1 muf=1 )", - R"( mur=1 muf=2 )", - R"( mur=1 muf=0.5 )", - R"( mur=2 muf=1 )", - R"( mur=2 muf=2 )", - R"( mur=2 muf=0.5 )", - R"( mur=0.5 muf=1 )", - R"( mur=0.5 muf=2 )", - R"( mur=0.5 muf=0.5 )", - }; - scaleInfo.setWeightType(gen::WeightType::kScaleWeights); - - for (size_t i = 0; i < entries.size(); i++) { - scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); - } - return scaleInfo; -} - -gen::WeightGroupInfo getExampleScaleWeightsOutOfOrder() { - gen::WeightGroupInfo scaleInfo = gen::WeightGroupInfo( - "", - "centralScaleVariations" - ); - std::vector entries = { - R"( mur=1 muf=1 )", - R"( mur=1 muf=2 )", - R"( mur=1 muf=0.5 )", - R"( mur=2 muf=2 )", - R"( mur=2 muf=1 )", - R"( mur=2 muf=0.5 )", - R"( mur=0.5 muf=2 )", - R"( mur=0.5 muf=1 )", - R"( mur=0.5 muf=0.5 )", - }; - scaleInfo.setWeightType(gen::WeightType::kScaleWeights); - - for (size_t i = 0; i < entries.size(); i++) { - scaleInfo.addContainedId(i, parseId(entries[i]), entries[i]); - } - return scaleInfo; -} - -edm::OwnVector getExamplePdfWeights() { - std::vector entries = { - R"()", - R"( Member 0 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 1 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 2 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 3 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 4 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 5 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 6 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 7 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 8 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 9 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 10 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 11 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 12 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 13 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 14 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 15 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 16 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 17 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 18 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 19 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 20 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 21 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 22 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 23 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 24 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 25 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 26 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 27 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 28 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 29 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 30 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 31 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 32 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 33 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 34 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 35 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 36 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 37 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 38 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 39 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 40 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 41 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 42 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 43 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 44 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 45 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 46 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 47 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 48 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 49 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 50 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 51 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 52 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 53 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 54 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 55 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 56 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 57 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 58 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 59 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 60 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 61 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 62 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 63 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 64 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 65 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 66 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 67 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 68 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 69 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 70 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 71 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 72 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 73 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 74 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 75 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 76 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 77 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 78 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 79 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 80 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 81 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 82 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 83 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 84 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 85 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 86 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 87 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 88 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 89 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 90 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 91 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 92 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 93 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 94 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 95 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 96 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 97 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 98 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 99 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 100 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 101 of sets NNPDF31_nnlo_hessian_pdfas)", - R"( Member 102 of sets NNPDF31_nnlo_hessian_pdfas)", - R"()", - R"()", - R"( Member 0 of sets CT10nlo_nf4)", - R"()", - R"()", - R"( Member 0 of sets CT14nnlo_NF4)", - R"()", - R"()", - R"( Member 0 of sets CT14nlo_NF4)", - R"()", - R"()", - R"( Member 0 of sets CT14lo_NF4)", - R"()", - R"()", - R"( Member 0 of sets MSTW2008lo68cl_nf4)", - R"( Member 1 of sets MSTW2008lo68cl_nf4)", - R"( Member 2 of sets MSTW2008lo68cl_nf4)", - R"( Member 3 of sets MSTW2008lo68cl_nf4)", - R"( Member 4 of sets MSTW2008lo68cl_nf4)", - R"( Member 5 of sets MSTW2008lo68cl_nf4)", - R"( Member 6 of sets MSTW2008lo68cl_nf4)", - R"( Member 7 of sets MSTW2008lo68cl_nf4)", - R"( Member 8 of sets MSTW2008lo68cl_nf4)", - R"( Member 9 of sets MSTW2008lo68cl_nf4)", - R"( Member 10 of sets MSTW2008lo68cl_nf4)", - R"( Member 11 of sets MSTW2008lo68cl_nf4)", - R"( Member 12 of sets MSTW2008lo68cl_nf4)", - R"( Member 13 of sets MSTW2008lo68cl_nf4)", - R"( Member 14 of sets MSTW2008lo68cl_nf4)", - R"( Member 15 of sets MSTW2008lo68cl_nf4)", - R"( Member 16 of sets MSTW2008lo68cl_nf4)", - R"( Member 17 of sets MSTW2008lo68cl_nf4)", - R"( Member 18 of sets MSTW2008lo68cl_nf4)", - R"( Member 19 of sets MSTW2008lo68cl_nf4)", - R"( Member 20 of sets MSTW2008lo68cl_nf4)", - R"( Member 21 of sets MSTW2008lo68cl_nf4)", - R"( Member 22 of sets MSTW2008lo68cl_nf4)", - R"( Member 23 of sets MSTW2008lo68cl_nf4)", - R"( Member 24 of sets MSTW2008lo68cl_nf4)", - R"( Member 25 of sets MSTW2008lo68cl_nf4)", - R"( Member 26 of sets MSTW2008lo68cl_nf4)", - R"( Member 27 of sets MSTW2008lo68cl_nf4)", - R"( Member 28 of sets MSTW2008lo68cl_nf4)", - R"( Member 29 of sets MSTW2008lo68cl_nf4)", - R"( Member 30 of sets MSTW2008lo68cl_nf4)", - R"( Member 31 of sets MSTW2008lo68cl_nf4)", - R"( Member 32 of sets MSTW2008lo68cl_nf4)", - R"( Member 33 of sets MSTW2008lo68cl_nf4)", - R"( Member 34 of sets MSTW2008lo68cl_nf4)", - R"( Member 35 of sets MSTW2008lo68cl_nf4)", - R"( Member 36 of sets MSTW2008lo68cl_nf4)", - R"( Member 37 of sets MSTW2008lo68cl_nf4)", - R"( Member 38 of sets MSTW2008lo68cl_nf4)", - R"( Member 39 of sets MSTW2008lo68cl_nf4)", - R"( Member 40 of sets MSTW2008lo68cl_nf4)", - R"()", - R"()", - R"( Member 0 of sets MSTW2008nlo68cl_nf4)", - R"( Member 1 of sets MSTW2008nlo68cl_nf4)", - R"( Member 2 of sets MSTW2008nlo68cl_nf4)", - R"( Member 3 of sets MSTW2008nlo68cl_nf4)", - R"( Member 4 of sets MSTW2008nlo68cl_nf4)", - R"( Member 5 of sets MSTW2008nlo68cl_nf4)", - R"( Member 6 of sets MSTW2008nlo68cl_nf4)", - R"( Member 7 of sets MSTW2008nlo68cl_nf4)", - R"( Member 8 of sets MSTW2008nlo68cl_nf4)", - R"( Member 9 of sets MSTW2008nlo68cl_nf4)", - R"( Member 10 of sets MSTW2008nlo68cl_nf4)", - R"( Member 11 of sets MSTW2008nlo68cl_nf4)", - R"( Member 12 of sets MSTW2008nlo68cl_nf4)", - R"( Member 13 of sets MSTW2008nlo68cl_nf4)", - R"( Member 14 of sets MSTW2008nlo68cl_nf4)", - R"( Member 15 of sets MSTW2008nlo68cl_nf4)", - R"( Member 16 of sets MSTW2008nlo68cl_nf4)", - R"( Member 17 of sets MSTW2008nlo68cl_nf4)", - R"( Member 18 of sets MSTW2008nlo68cl_nf4)", - R"( Member 19 of sets MSTW2008nlo68cl_nf4)", - R"( Member 20 of sets MSTW2008nlo68cl_nf4)", - R"( Member 21 of sets MSTW2008nlo68cl_nf4)", - R"( Member 22 of sets MSTW2008nlo68cl_nf4)", - R"( Member 23 of sets MSTW2008nlo68cl_nf4)", - R"( Member 24 of sets MSTW2008nlo68cl_nf4)", - R"( Member 25 of sets MSTW2008nlo68cl_nf4)", - R"( Member 26 of sets MSTW2008nlo68cl_nf4)", - R"( Member 27 of sets MSTW2008nlo68cl_nf4)", - R"( Member 28 of sets MSTW2008nlo68cl_nf4)", - R"( Member 29 of sets MSTW2008nlo68cl_nf4)", - R"( Member 30 of sets MSTW2008nlo68cl_nf4)", - R"( Member 31 of sets MSTW2008nlo68cl_nf4)", - R"( Member 32 of sets MSTW2008nlo68cl_nf4)", - R"( Member 33 of sets MSTW2008nlo68cl_nf4)", - R"( Member 34 of sets MSTW2008nlo68cl_nf4)", - R"( Member 35 of sets MSTW2008nlo68cl_nf4)", - R"( Member 36 of sets MSTW2008nlo68cl_nf4)", - R"( Member 37 of sets MSTW2008nlo68cl_nf4)", - R"( Member 38 of sets MSTW2008nlo68cl_nf4)", - R"( Member 39 of sets MSTW2008nlo68cl_nf4)", - R"( Member 40 of sets MSTW2008nlo68cl_nf4)", - R"()", - R"()", - R"( Member 0 of sets MSTW2008nlo_mbrange_nf4)", - R"( Member 1 of sets MSTW2008nlo_mbrange_nf4)", - R"( Member 2 of sets MSTW2008nlo_mbrange_nf4)", - R"( Member 3 of sets MSTW2008nlo_mbrange_nf4)", - R"( Member 4 of sets MSTW2008nlo_mbrange_nf4)", - R"( Member 5 of sets MSTW2008nlo_mbrange_nf4)", - R"( Member 6 of sets MSTW2008nlo_mbrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 1 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 2 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 3 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 4 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 5 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 6 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 7 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 8 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 9 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 10 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 11 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 12 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 13 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 14 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 15 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 16 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 17 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 18 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 19 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 20 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 21 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 22 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 23 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 24 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 25 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 26 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 27 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 28 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 29 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 30 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 31 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 32 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 33 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 34 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 35 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 36 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 37 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 38 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 39 of sets MSTW2008nnlo68cl_nf4)", - R"( Member 40 of sets MSTW2008nnlo68cl_nf4)", - R"()", - R"()", - R"( Member 0 of sets MSTW2008nnlo_mbrange_nf4)", - R"( Member 1 of sets MSTW2008nnlo_mbrange_nf4)", - R"( Member 2 of sets MSTW2008nnlo_mbrange_nf4)", - R"( Member 3 of sets MSTW2008nnlo_mbrange_nf4)", - R"( Member 4 of sets MSTW2008nnlo_mbrange_nf4)", - R"( Member 5 of sets MSTW2008nnlo_mbrange_nf4)", - R"( Member 6 of sets MSTW2008nnlo_mbrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nlo68cl_nf4)", - R"( Member 1 of sets MMHT2014nlo68cl_nf4)", - R"( Member 2 of sets MMHT2014nlo68cl_nf4)", - R"( Member 3 of sets MMHT2014nlo68cl_nf4)", - R"( Member 4 of sets MMHT2014nlo68cl_nf4)", - R"( Member 5 of sets MMHT2014nlo68cl_nf4)", - R"( Member 6 of sets MMHT2014nlo68cl_nf4)", - R"( Member 7 of sets MMHT2014nlo68cl_nf4)", - R"( Member 8 of sets MMHT2014nlo68cl_nf4)", - R"( Member 9 of sets MMHT2014nlo68cl_nf4)", - R"( Member 10 of sets MMHT2014nlo68cl_nf4)", - R"( Member 11 of sets MMHT2014nlo68cl_nf4)", - R"( Member 12 of sets MMHT2014nlo68cl_nf4)", - R"( Member 13 of sets MMHT2014nlo68cl_nf4)", - R"( Member 14 of sets MMHT2014nlo68cl_nf4)", - R"( Member 15 of sets MMHT2014nlo68cl_nf4)", - R"( Member 16 of sets MMHT2014nlo68cl_nf4)", - R"( Member 17 of sets MMHT2014nlo68cl_nf4)", - R"( Member 18 of sets MMHT2014nlo68cl_nf4)", - R"( Member 19 of sets MMHT2014nlo68cl_nf4)", - R"( Member 20 of sets MMHT2014nlo68cl_nf4)", - R"( Member 21 of sets MMHT2014nlo68cl_nf4)", - R"( Member 22 of sets MMHT2014nlo68cl_nf4)", - R"( Member 23 of sets MMHT2014nlo68cl_nf4)", - R"( Member 24 of sets MMHT2014nlo68cl_nf4)", - R"( Member 25 of sets MMHT2014nlo68cl_nf4)", - R"( Member 26 of sets MMHT2014nlo68cl_nf4)", - R"( Member 27 of sets MMHT2014nlo68cl_nf4)", - R"( Member 28 of sets MMHT2014nlo68cl_nf4)", - R"( Member 29 of sets MMHT2014nlo68cl_nf4)", - R"( Member 30 of sets MMHT2014nlo68cl_nf4)", - R"( Member 31 of sets MMHT2014nlo68cl_nf4)", - R"( Member 32 of sets MMHT2014nlo68cl_nf4)", - R"( Member 33 of sets MMHT2014nlo68cl_nf4)", - R"( Member 34 of sets MMHT2014nlo68cl_nf4)", - R"( Member 35 of sets MMHT2014nlo68cl_nf4)", - R"( Member 36 of sets MMHT2014nlo68cl_nf4)", - R"( Member 37 of sets MMHT2014nlo68cl_nf4)", - R"( Member 38 of sets MMHT2014nlo68cl_nf4)", - R"( Member 39 of sets MMHT2014nlo68cl_nf4)", - R"( Member 40 of sets MMHT2014nlo68cl_nf4)", - R"( Member 41 of sets MMHT2014nlo68cl_nf4)", - R"( Member 42 of sets MMHT2014nlo68cl_nf4)", - R"( Member 43 of sets MMHT2014nlo68cl_nf4)", - R"( Member 44 of sets MMHT2014nlo68cl_nf4)", - R"( Member 45 of sets MMHT2014nlo68cl_nf4)", - R"( Member 46 of sets MMHT2014nlo68cl_nf4)", - R"( Member 47 of sets MMHT2014nlo68cl_nf4)", - R"( Member 48 of sets MMHT2014nlo68cl_nf4)", - R"( Member 49 of sets MMHT2014nlo68cl_nf4)", - R"( Member 50 of sets MMHT2014nlo68cl_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 1 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 2 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 3 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 4 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 5 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 6 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 7 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 8 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 9 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 10 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 11 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 12 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 13 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 14 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 15 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 16 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 17 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 18 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 19 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 20 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 21 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 22 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 23 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 24 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 25 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 26 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 27 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 28 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 29 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 30 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 31 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 32 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 33 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 34 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 35 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 36 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 37 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 38 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 39 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 40 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 41 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 42 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 43 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 44 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 45 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 46 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 47 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 48 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 49 of sets MMHT2014nlo68clas118_nf4)", - R"( Member 50 of sets MMHT2014nlo68clas118_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nlo_asmzsmallrange_nf4)", - R"( Member 1 of sets MMHT2014nlo_asmzsmallrange_nf4)", - R"( Member 2 of sets MMHT2014nlo_asmzsmallrange_nf4)", - R"( Member 3 of sets MMHT2014nlo_asmzsmallrange_nf4)", - R"( Member 4 of sets MMHT2014nlo_asmzsmallrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 1 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 2 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 3 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 4 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 5 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 6 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 7 of sets MMHT2014nlo_mcrange_nf4)", - R"( Member 8 of sets MMHT2014nlo_mcrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nlo_mbrange_nf4)", - R"( Member 1 of sets MMHT2014nlo_mbrange_nf4)", - R"( Member 2 of sets MMHT2014nlo_mbrange_nf4)", - R"( Member 3 of sets MMHT2014nlo_mbrange_nf4)", - R"( Member 4 of sets MMHT2014nlo_mbrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 1 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 2 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 3 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 4 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 5 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 6 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 7 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 8 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 9 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 10 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 11 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 12 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 13 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 14 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 15 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 16 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 17 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 18 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 19 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 20 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 21 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 22 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 23 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 24 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 25 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 26 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 27 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 28 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 29 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 30 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 31 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 32 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 33 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 34 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 35 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 36 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 37 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 38 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 39 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 40 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 41 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 42 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 43 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 44 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 45 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 46 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 47 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 48 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 49 of sets MMHT2014nnlo68cl_nf4)", - R"( Member 50 of sets MMHT2014nnlo68cl_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nnlo_asmzsmallrange_nf4)", - R"( Member 1 of sets MMHT2014nnlo_asmzsmallrange_nf4)", - R"( Member 2 of sets MMHT2014nnlo_asmzsmallrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 1 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 2 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 3 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 4 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 5 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 6 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 7 of sets MMHT2014nnlo_mcrange_nf4)", - R"( Member 8 of sets MMHT2014nnlo_mcrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets MMHT2014nnlo_mbrange_nf4)", - R"( Member 1 of sets MMHT2014nnlo_mbrange_nf4)", - R"( Member 2 of sets MMHT2014nnlo_mbrange_nf4)", - R"( Member 3 of sets MMHT2014nnlo_mbrange_nf4)", - R"( Member 4 of sets MMHT2014nnlo_mbrange_nf4)", - R"()", - R"()", - R"( Member 0 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 1 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 2 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 3 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 4 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 5 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 6 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 7 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 8 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 9 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 10 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 11 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 12 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 13 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 14 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 15 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 16 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 17 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 18 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 19 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 20 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 21 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 22 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 23 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 24 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 25 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 26 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 27 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 28 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 29 of sets PDF4LHC15_nlo_nf4_30)", - R"( Member 30 of sets PDF4LHC15_nlo_nf4_30)", - R"()", - R"()", - R"( Member 0 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 1 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 2 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 3 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 4 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 5 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 6 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 7 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 8 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 9 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 10 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 11 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 12 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 13 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 14 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 15 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 16 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 17 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 18 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 19 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 20 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 21 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 22 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 23 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 24 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 25 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 26 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 27 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 28 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 29 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 30 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 31 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 32 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 33 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 34 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 35 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 36 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 37 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 38 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 39 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 40 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 41 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 42 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 43 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 44 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 45 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 46 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 47 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 48 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 49 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 50 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 51 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 52 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 53 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 54 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 55 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 56 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 57 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 58 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 59 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 60 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 61 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 62 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 63 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 64 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 65 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 66 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 67 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 68 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 69 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 70 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 71 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 72 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 73 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 74 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 75 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 76 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 77 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 78 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 79 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 80 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 81 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 82 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 83 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 84 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 85 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 86 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 87 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 88 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 89 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 90 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 91 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 92 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 93 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 94 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 95 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 96 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 97 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 98 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 99 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"( Member 100 of sets NNPDF31_nnlo_as_0118_nf_4)", - R"()", - R"()", - R"( Member 0 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 1 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 2 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 3 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 4 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 5 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 6 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 7 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 8 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 9 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 10 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 11 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 12 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 13 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 14 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 15 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 16 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 17 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 18 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 19 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 20 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 21 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 22 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 23 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 24 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 25 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 26 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 27 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 28 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 29 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 30 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 31 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 32 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 33 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 34 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 35 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 36 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 37 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 38 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 39 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 40 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 41 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 42 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 43 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 44 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 45 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 46 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 47 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 48 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 49 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 50 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 51 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 52 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 53 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 54 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 55 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 56 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 57 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 58 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 59 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 60 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 61 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 62 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 63 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 64 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 65 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 66 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 67 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 68 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 69 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 70 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 71 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 72 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 73 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 74 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 75 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 76 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 77 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 78 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 79 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 80 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 81 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 82 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 83 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 84 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 85 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 86 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 87 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 88 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 89 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 90 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 91 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 92 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 93 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 94 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 95 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 96 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 97 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 98 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 99 of sets NNPDF31_nlo_as_0118_nf_4)", - R"( Member 100 of sets NNPDF31_nlo_as_0118_nf_4)", - R"()", - R"()", - R"( Member 0 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 1 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 2 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 3 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 4 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 5 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 6 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 7 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 8 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 9 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 10 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 11 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 12 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 13 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 14 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 15 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 16 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 17 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 18 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 19 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 20 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 21 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 22 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 23 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 24 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 25 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 26 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 27 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 28 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 29 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 30 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 31 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 32 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 33 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 34 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 35 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 36 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 37 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 38 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 39 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 40 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 41 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 42 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 43 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 44 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 45 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 46 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 47 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 48 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 49 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 50 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 51 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 52 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 53 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 54 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 55 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 56 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 57 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 58 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 59 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 60 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 61 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 62 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 63 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 64 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 65 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 66 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 67 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 68 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 69 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 70 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 71 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 72 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 73 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 74 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 75 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 76 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 77 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 78 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 79 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 80 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 81 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 82 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 83 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 84 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 85 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 86 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 87 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 88 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 89 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 90 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 91 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 92 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 93 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 94 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 95 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 96 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 97 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 98 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 99 of sets NNPDF30_nlo_as_0118_nf_4)", - R"( Member 100 of sets NNPDF30_nlo_as_0118_nf_4)", - R"()", - R"()", - R"( Member 0 of sets NNPDF30_lo_as_0118_nf_4)", - R"()", - R"()", - R"( Member 0 of sets NNPDF30_lo_as_0130_nf_4)", - R"()", - R"()", - R"( Member 0 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 1 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 2 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 3 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 4 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 5 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 6 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 7 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 8 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 9 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 10 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 11 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 12 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 13 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 14 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 15 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 16 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 17 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 18 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 19 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 20 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 21 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 22 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 23 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 24 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 25 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 26 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 27 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 28 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 29 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 30 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 31 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 32 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 33 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 34 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 35 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 36 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 37 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 38 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 39 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 40 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 41 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 42 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 43 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 44 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 45 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 46 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 47 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 48 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 49 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 50 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 51 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 52 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 53 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 54 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 55 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 56 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 57 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 58 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 59 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 60 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 61 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 62 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 63 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 64 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 65 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 66 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 67 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 68 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 69 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 70 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 71 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 72 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 73 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 74 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 75 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 76 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 77 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 78 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 79 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 80 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 81 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 82 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 83 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 84 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 85 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 86 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 87 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 88 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 89 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 90 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 91 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 92 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 93 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 94 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 95 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 96 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 97 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 98 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 99 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 100 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 101 of sets NNPDF30_nlo_nf_4_pdfas)", - R"( Member 102 of sets NNPDF30_nlo_nf_4_pdfas)", - R"()", - R"()", - R"( Member 0 of sets NNPDF30_nnlo_nf_4_pdfas)", - R"()", - }; - - edm::OwnVector pdfWeights; - - //Don't forget about the scale weights - int counter = 8; - for (const auto& entry : entries) { - if (entry.find(" Date: Sun, 19 Jan 2020 04:50:16 +0100 Subject: [PATCH 073/186] Significant restructure of parsing --- .../Core/interface/LHEWeightHelper.h | 22 +- .../Core/interface/WeightHelper.h | 32 ++- .../Core/plugins/GenWeightProductProducer.cc | 13 +- .../Core/plugins/LHEWeightProductProducer.cc | 6 +- .../Core/src/GenWeightHelper.cc | 4 +- .../Core/src/LHEWeightHelper.cc | 228 +++++------------- GeneratorInterface/Core/src/WeightHelper.cc | 105 +++++--- .../Core/test/dumpWeightInfo.py | 7 +- .../Core/test/testGenWeightProducer_cfg.py | 18 +- .../plugins/ExternalLHEProducer.cc | 6 +- PhysicsTools/NanoAOD/python/nanogen_cff.py | 3 +- .../interface/PdfWeightGroupInfo.h | 11 +- .../interface/ScaleWeightGroupInfo.h | 3 +- .../src/ScaleWeightGroupInfo.cc | 12 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 16 +- 15 files changed, 231 insertions(+), 255 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 6b37f56403ce4..12f973ca45fcc 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -19,23 +19,13 @@ namespace gen { class LHEWeightHelper : public WeightHelper { public: - LHEWeightHelper(); - - //// possibly add more versions of this functions for different inputs - void parseLHEFile(std::string filename); - void parseWeightGroupsFromHeader(std::vector lheHeader); + LHEWeightHelper() : WeightHelper() {}; + void setHeaderLines(std::vector headerLines); + void parseWeights(); + void buildGroups(); + std::unique_ptr buildGroup(const ParsedWeight& weight); private: - std::map weightAttributeMapFromHeaderLine(std::string line); - void loadAttributeNames(std::string baseName, std::vector altNames ={}); - std::map getAttributeMap(std::string); - std::string sanitizeText(std::string); - bool isAWeight(std::string); - - std::regex weightGroupStart_; - std::regex weightGroupEnd_; - std::regex weightContent_; - - std::map nameConversionMap_; + std::vector headerLines_; }; } diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 5e3102aa60ea4..66cfbfd547155 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -6,6 +6,10 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" #include namespace gen { @@ -15,6 +19,14 @@ namespace gen { PdfUncertaintyType uncertaintyType; }; + struct ParsedWeight { + std::string id; + size_t index; + std::string groupname; + std::string content; + std::unordered_map attributes; + }; + class WeightHelper { public: WeightHelper(); @@ -23,17 +35,29 @@ namespace gen { } std::unique_ptr weightProduct(std::vector, float w0); std::unique_ptr weightProduct(std::vector, float w0); - void setGroupInfo(); - bool currentGroupIsScale(); - bool currentGroupIsMEParam(); - bool currentGroupIsPdf(); + void setModel(std::string model) { model_ = model; } int addWeightToProduct(std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); protected: + std::string model_; + std::vector parsedWeights_; const std::vector pdfSetsInfo; std::map currWeightAttributeMap_; std::map currGroupAttributeMap_; edm::OwnVector weightGroups_; + bool isScaleWeightGroup(const ParsedWeight& weight); + bool isMEParamWeightGroup(const ParsedWeight& weight); + bool isPdfWeightGroup(const ParsedWeight& weight); + void updateScaleInfo(const ParsedWeight& weight); + void updatePdfInfo(const ParsedWeight& weight); + std::string searchAttributes(const std::string& label, const ParsedWeight& weight); + + // Possible names for the same thing + const std::unordered_map> attributeNames_ = { + {"muf", {"muR", "MUR", "muf","facscfact"}}, + {"mur", {"muF", "MUF", "mur","renscfact"}}, + {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}} + }; }; } diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 104083173e6be..e8d18a93e5878 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -23,6 +23,7 @@ #include "GeneratorInterface/Core/interface/GenWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" +#include class GenWeightProductProducer : public edm::one::EDProducer { public: @@ -34,6 +35,7 @@ class GenWeightProductProducer : public edm::one::EDProducer genLumiInfoToken_; edm::EDGetTokenT genEventToken_; + const edm::EDGetTokenT genLumiInfoHeadTag_; void produce(edm::Event&, const edm::EventSetup&) override; void beginLuminosityBlockProduce(edm::LuminosityBlock& lb, edm::EventSetup const& c) override; @@ -44,7 +46,8 @@ class GenWeightProductProducer : public edm::one::EDProducer(iConfig.getParameter("genInfo"))), - genEventToken_(consumes(iConfig.getParameter("genInfo"))) + genEventToken_(consumes(iConfig.getParameter("genInfo"))), + genLumiInfoHeadTag_(mayConsume(iConfig.getParameter("genLumiInfoHeader"))) { produces(); produces(); @@ -69,6 +72,14 @@ GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { + edm::Handle genLumiInfoHead; + iLumi.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); + if (genLumiInfoHead.isValid()) { + std::string label = genLumiInfoHead->configDescription(); + boost::replace_all(label,"-","_"); + weightHelper_.setModel(label); + } + if (weightNames_.size() == 0) { edm::Handle genLumiInfoHandle; iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index db74a3b25730b..f259540d79b59 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -46,9 +46,7 @@ class LHEWeightProductProducer : public edm::one::EDProducer("lheSourceLabel")), lheRunInfoToken_(consumes(lheLabel_)), @@ -90,7 +88,7 @@ LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& e headerWeightInfo = *iter; } - weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); + //weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); } void diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 182040728a752..74bad0d66781a 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -17,7 +17,9 @@ namespace gen { for (std::string weightName : weightNames) { if(weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow - continue; + // std::vector info; + // boost::split(info, weightName, boost::is_any_of(",")); + weightGroups_.push_back(new gen::UnknownWeightGroupInfo("inGen")); } // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights else if (weightGroups_.size() == 0) { diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 1b3a7f4ee1039..7a882e07ea84e 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -1,192 +1,78 @@ #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" +#include #include using namespace tinyxml2; namespace gen { - void LHEWeightHelper::loadAttributeNames(std::string baseName, std::vector altNames) { - for(auto altname : altNames) { - nameConversionMap_[altname] = baseName; - } - nameConversionMap_[baseName] = baseName; + void LHEWeightHelper::setHeaderLines(std::vector headerLines) { + headerLines_ = headerLines; } - std::string - LHEWeightHelper::sanitizeText(std::string line) { - std::map replaceMap = {{"<", "<"}, {">", ">"}}; + void LHEWeightHelper::parseWeights() { + tinyxml2::XMLDocument xmlDoc; + xmlDoc.Parse(("" + boost::algorithm::join(headerLines_, "") + "").c_str()); + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); - for(auto pair: replaceMap) { - std::string badText = pair.first; - std::string goodText = pair.second; - while(line.find(badText) != std::string::npos) { - size_t spot = line.find(badText); - line.replace(spot, badText.size(), goodText); + size_t weightIndex = 0; + for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { + std::string groupName = ""; + if (strcmp(e->Name(), "weight") == 0) { + // we are here if there is a weight that does not belong to any group + std::string text = ""; + if (e->GetText()) + text = e->GetText(); + parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text}); } + if (strcmp(e->Name(), "weightgroup") == 0) { + groupName = e->Attribute("name"); + for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; + inner = inner->NextSiblingElement("weight")) { + // we are here if there is a weight in a weightgroup + std::string text = ""; + if (inner->GetText()) + text = inner->GetText(); + std::unordered_map attributes; + for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes}); + } } - return line; - } - - - LHEWeightHelper::LHEWeightHelper() { - weightGroupStart_ = std::regex(".*.*\n*"); - weightGroupEnd_ = std::regex(".*.*\n*"); - - /// Might change later, order matters and code doesn't pick choices - - // Used for translating different naming convention to a common one - loadAttributeNames("muf", {"facscfact"}); - loadAttributeNames("mur", {"renscfact"}); - loadAttributeNames("id"); - loadAttributeNames("pdf", {"pdf set", "lhapdf", "pdfset"}); - loadAttributeNames("dyn_scale"); - - loadAttributeNames("combine"); - loadAttributeNames("name", {"type"}); - + } + buildGroups(); } - std::map - LHEWeightHelper::getAttributeMap(std::string line) { - XMLDocument xmlParser; - int error = xmlParser.Parse(line.c_str()); - if (error) { - return std::map(); - } + //void LHEWeightHelper::setGroupPriority() { + // groupCheckOrder_ = {gen::WeightType::kScaleWeights, gen::WeightType::kPdfWeights, + // gen::WeightType::kMEParamWeights + // }; + //} - std::map attributeMap; - XMLElement* element = xmlParser.FirstChildElement(); - - for( const XMLAttribute* a = element->FirstAttribute(); a; a=a->Next()) { - auto name = boost::algorithm::to_lower_copy(std::string(a->Name())); - attributeMap[nameConversionMap_[name]] = a->Value(); - } - // get stuff from content of tag if it has anything. - // always assume format is AAAAA=( )BBBB ( ) => optional space - if (element->GetText() == nullptr) { - return attributeMap; - } - // This adds "content: " to the beginning of the content. not sure if its a big deal or? - std::string content = element->GetText(); - attributeMap["content"] = content; - - for (const auto& entry : weightAttributeMapFromHeaderLine(content)) { - auto rawLabel = boost::algorithm::to_lower_copy(entry.first); - std::string label = nameConversionMap_[rawLabel]; - if (nameConversionMap_.find(label) != nameConversionMap_.end()) - attributeMap[nameConversionMap_[label]] = entry.second; - else - attributeMap[label] = entry.second; - } - - return attributeMap; - - } + void LHEWeightHelper::buildGroups() { + std::string currentGroupName; + for (const auto& weight : parsedWeights_) { + if (weight.groupname != currentGroupName) { + weightGroups_.push_back(*buildGroup(weight)); + } + currentGroupName = weight.groupname; + WeightGroupInfo& group = weightGroups_.back(); + group.addContainedId(weight.index, weight.id, weight.content); - bool - LHEWeightHelper::isAWeight(std::string line) { - XMLDocument xmlParser; - int error = xmlParser.Parse(line.c_str()); - if (error) { - return false; - //throw std::invalid_argument("Failed to parse weight info from header! Line was " + line); + if (group.weightType() == gen::WeightType::kScaleWeights) + updateScaleInfo(weight); + else if (group.weightType() == gen::WeightType::kPdfWeights) + updatePdfInfo(weight); } - XMLElement* element = xmlParser.FirstChildElement(); - return element; } - std::map - LHEWeightHelper::weightAttributeMapFromHeaderLine(std::string line) { - std::regex reg("(?:(\\S+)=\\s*(\\S+))"); - std::smatch match; - std::map weightAttributeMap; - while(std::regex_search(line, match, reg)) { - weightAttributeMap[match.str(1)] = match.str(2); - line = match.suffix().str(); - } - return weightAttributeMap; - } + std::unique_ptr LHEWeightHelper::buildGroup(const ParsedWeight& weight) { + if (isScaleWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isMEParamWeightGroup(weight)) + return std::make_unique(weight.groupname); - void - LHEWeightHelper::parseWeightGroupsFromHeader(std::vector lheHeader) { - // TODO: Not sure the weight indexing is right here, this seems to more or less - // count the lines which isn't quite the goal. TOCHECK! - int index = 0; - currGroupAttributeMap_.clear(); - currWeightAttributeMap_.clear(); - - for (std::string headerLine : lheHeader) { - headerLine = sanitizeText(headerLine); - - if (std::regex_match(headerLine, weightGroupStart_)) { - if (!currGroupAttributeMap_.empty()) - setGroupInfo(); - std::string fullTag = headerLine + ""; - currGroupAttributeMap_ = getAttributeMap(fullTag); - auto name = currGroupAttributeMap_["name"]; - - if (currentGroupIsScale()) { - weightGroups_.push_back(std::make_unique(name)); - } - else if (currentGroupIsPdf()) { - weightGroups_.push_back(std::make_unique(name)); - } - else if (currentGroupIsMEParam()) { - weightGroups_.push_back(std::make_unique(name)); - } - else { - weightGroups_.push_back(std::make_unique(name)); - } - auto& group = weightGroups_.back(); - group.setDescription("Test description"); - } - else if (std::regex_match(headerLine, std::regex(".*.*\n*"))) { - std::string fullTag = headerLine; - if (!std::regex_match(headerLine, std::regex(".*.*\n*"))) - fullTag = headerLine + ""; - currWeightAttributeMap_.clear(); - // This shouldn't really happen, but perhaps we find weights outside of weight groups? - currWeightAttributeMap_ = getAttributeMap(fullTag); - - std::string content = currWeightAttributeMap_["content"]; - if (currWeightAttributeMap_["id"].empty()) { - std::cout << "error" << "\n"; - // should do something - } - - if (weightGroups_.empty()) { - weightGroups_.push_back(std::make_unique("Unknown")); - } - auto& group = weightGroups_.back(); - if (group.weightType() == gen::WeightType::kScaleWeights) { - if (currWeightAttributeMap_["mur"].empty() || currWeightAttributeMap_["muf"].empty()) { - group.setIsWellFormed(false); - } - else { - try { - float muR = std::stof(currWeightAttributeMap_["mur"]); - float muF = std::stof(currWeightAttributeMap_["muf"]); - auto& scaleGroup = dynamic_cast(group); - scaleGroup.addContainedId(index, currWeightAttributeMap_["id"], headerLine, muR, muF); - } - catch(std::invalid_argument& e) { - group.setIsWellFormed(false); - group.addContainedId(index, currWeightAttributeMap_["id"], headerLine); - } - } - } - else - group.addContainedId(index, currWeightAttributeMap_["id"], headerLine); - - index++; - } - else if (std::regex_match(headerLine, weightGroupEnd_)) { - if (!currGroupAttributeMap_.empty()) - setGroupInfo(); - currGroupAttributeMap_.clear(); - currWeightAttributeMap_.clear(); - } - // Should be fine to ignore all other lines? Tend to be either empty or closing tag - } + return std::make_unique(weight.groupname); } } - diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index fe96bd7298735..b178134a7b156 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -18,6 +18,7 @@ namespace gen { {"NNPDF31_nnlo_as_0119", 323500, kVariationSet}, {"NNPDF31_nnlo_as_0122", 323700, kVariationSet}, {"NNPDF31_nnlo_as_0124", 323900, kVariationSet}, + {"NNPDF31_nnlo_as_0118_nf_4_mc_hessian", 325500, kHessianUnc}, {"NNPDF31_nlo_as_0118_nf_4", 320500, kMonteCarloUnc}, {"NNPDF31_nnlo_as_0118_nf_4", 320900, kMonteCarloUnc}, {"NNPDF30_nlo_nf_5_pdfas", 292200, kMonteCarloUnc}, @@ -48,40 +49,89 @@ namespace gen { {"CT14qed_inc_proton", 13400, kHessianUnc}, {"LUXqed17_plus_PDF4LHC15_nnlo_100", 82200, kMonteCarloUnc}, }) - {} + { model_ = ""; } - void WeightHelper::setGroupInfo() { - auto& group = weightGroups_.back(); - const std::string& name = group.name(); - if (group.weightType() == WeightType::kPdfWeights) { - PdfWeightGroupInfo* pdfGroup = dynamic_cast(&group); - auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), - [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }); - if (pdfInfo != pdfSetsInfo.end()) { - pdfGroup->setUncertaintyType(pdfInfo->uncertaintyType); - pdfGroup->addLhapdfId(pdfInfo->lhapdfId, 0); - } - else - pdfGroup->setIsWellFormed(false); - } + bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { + return (weight.groupname.find("scale_variation") != std::string::npos + || weight.groupname.find("Central scale variation") != std::string::npos); } - bool WeightHelper::currentGroupIsScale() { - std::string name = boost::algorithm::to_lower_copy(currGroupAttributeMap_["name"]); - return (name.find("scale") != std::string::npos); - } - - bool WeightHelper::currentGroupIsPdf() { - std::string name = currGroupAttributeMap_["name"]; - if (boost::algorithm::to_lower_copy(name).find("pdf") != std::string::npos) + bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { + const std::string& name = weight.groupname; + if (name.find("PDF_variation") != std::string::npos) return true; + return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }) != pdfSetsInfo.end(); } - bool WeightHelper::currentGroupIsMEParam() { - std::string name = boost::algorithm::to_lower_copy(currGroupAttributeMap_["name"]); - return (name.find("mg_reweighting") != std::string::npos); + bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { + return (weight.groupname.find("mg_reweighting") != std::string::npos); + } + + std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) { + for (const auto& lab : attributeNames_.at(label)) { + auto& attributes = weight.attributes; + if (attributes.find(lab) != attributes.end()) { + return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); + } + } + // Next regexes + return ""; + } + + void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { + auto& group = weightGroups_.back(); + auto& scaleGroup = dynamic_cast(group); + std::string muRText = searchAttributes("mur", weight); + std::string muFText = searchAttributes("mur", weight); + if (muRText.empty() || muFText.empty()) { + scaleGroup.setIsWellFormed(false); + return; + } + + try { + float muR = std::stof(muRText); + float muF = std::stof(muFText); + scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); + } + catch(std::invalid_argument& e) { + scaleGroup.setIsWellFormed(false); + } + } + + void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); + std::string lhaidText = searchAttributes("pdf", weight); + int lhaid = 0; + if (!lhaidText.empty()) { + try { + lhaid = std::stoi(lhaidText); + } + catch(std::invalid_argument& e) { + pdfGroup.setIsWellFormed(false); + } + + if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { + std::string description; + auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), + [lhaid] (const PdfSetInfo& setInfo) { return setInfo.lhapdfId == lhaid; }); + if (pdfInfo != pdfSetsInfo.end()) { + pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); + if (pdfInfo->uncertaintyType == gen::kHessianUnc) + description = "Hessian "; + else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) + description = "Monte Carlo "; + description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; + description += " with LHAID = " + std::to_string(lhaid); + } + description = "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); + pdfGroup.addLhapdfId(lhaid, weight.index); + pdfGroup.setDescription(description); + } + } + else + pdfGroup.setIsWellFormed(false); } // TODO: Could probably recycle this code better @@ -134,7 +184,8 @@ namespace gen { counter++; } // Needs to be properly handled - throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex)); + throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); } } diff --git a/GeneratorInterface/Core/test/dumpWeightInfo.py b/GeneratorInterface/Core/test/dumpWeightInfo.py index cdb47e9b60fde..2ee498c9fb383 100644 --- a/GeneratorInterface/Core/test/dumpWeightInfo.py +++ b/GeneratorInterface/Core/test/dumpWeightInfo.py @@ -2,7 +2,6 @@ import ROOT sources = ["externalLHEProducer"] #sources = ["testLHEWeights", "testGenWeights"] -#source = "testGenWeights" #for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: @@ -20,17 +19,17 @@ event.getByLabel(source, weightHandle) weightInfo = weightHandle.product() print weightInfoProd.allWeightGroupsInfo(), len(weightInfoProd.allWeightGroupsInfo()) - print "Content of the weights" for j, weights in enumerate(weightInfo.weights()): print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 matching = weightInfoProd.orderedWeightGroupInfo(j) print "Group is", matching, "name is", matching.name(), "well formed?", matching.isWellFormed() + print "Group description", matching.description() print type(matching.weightType()), matching.weightType() - if matching.weightType() == 1: + if matching.weightType() == 's': for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" print name, getattr(matching, name)() - elif matching.weightType() == 0: + elif matching.weightType() == 'P': print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" print "contains LHAPDFIds", len(matching.lhapdfIdsContained()), [i for i in matching.lhapdfIdsContained()], print "Has alphas? ", matching.hasAlphasVariations() diff --git a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index cc1e1830d2d68..0c0925dc2e46e 100644 --- a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -21,16 +21,20 @@ process.out = cms.OutputModule("PoolOutputModule", fileName = cms.untracked.string('test.root'), - outputCommands = cms.untracked.vstring(['keep *']) + outputCommands = cms.untracked.vstring(['drop *', + 'keep GenWeightProduct_test*Weights*_*_*', + 'keep GenWeightInfoProduct_test*Weights*_*_*',]) ) -process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer", - lheSource=cms.untracked.InputTag(options.lheSource), - lheSourceLabel=cms.untracked.string(options.lheSource)) -process.testGenWeights = cms.EDProducer("GenWeightProductProducer") +#process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer", +# lheSourceLabel = cms.string("externalLHEProducer")) -process.p = cms.Path(process.testLHEWeights*process.testGenWeights) -#process.p = cms.Path(process.testLHEWeights) +process.testGenWeights = cms.EDProducer("GenWeightProductProducer", + genInfo = cms.InputTag("generator"), + genLumiInfoHeader = cms.InputTag("generator")) + +#process.p = cms.Path(process.testLHEWeights*process.testGenWeights) +process.p = cms.Path(process.testGenWeights) process.output = cms.EndPath(process.out) process.schedule = cms.Schedule(process.p,process.output) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 49aaa321f9702..eb2ffa677c3fa 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -55,8 +55,6 @@ Description: [one line class summary] #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" -#include "GeneratorInterface/LHEInterface/interface/TestWeightInfo.h" -//#include "GeneratorInterface/Core/interface/GenWeightGroupReaderHelper.h" #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" @@ -362,7 +360,9 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) run.put(std::move(product)); - weightHelper_.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); + //weightHelper_.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); + weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); + weightHelper_.parseWeights(); runInfo.reset(); } diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 88d8ebe03c18f..8fba40c06dfb1 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -10,8 +10,7 @@ genInfo = cms.InputTag("generator")) lheWeights = cms.EDProducer("LHEWeightProductProducer", - lheSourceLabel = cms.string("externalLHEProducer"), - lheSource = cms.InputTag("externalLHEProducer")) + lheSourceLabel = cms.string("externalLHEProducer")) lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index aa69dc4bcb7b8..18dc88fdbd067 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -3,6 +3,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include +#include namespace gen { enum PdfUncertaintyType { @@ -39,6 +40,12 @@ namespace gen { PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } + bool containsParentLhapdfId(int lhaid, int globalIndex) const { + if (indexOfLhapdfId(lhaid) != -1) + return true; + int parentid = lhaid - (globalIndex - firstId_); + return indexOfLhapdfId(parentid) != -1; + } bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } int indexOfLhapdfId(int lhaid) const { for (const auto& id : lhapdfIdsContained_) { @@ -49,8 +56,8 @@ namespace gen { } int alphasUpIndex() const { return alphasUpIndex_; } int alphasDownIndex() const { return alphasDownIndex_; } - void addLhapdfId(int lhaid, int index) { - lhapdfIdsContained_.push_back(std::make_pair(lhaid, index)); + void addLhapdfId(int lhaid, int globalIndex) { + lhapdfIdsContained_.push_back(std::make_pair(lhaid, globalIndex-firstId_)); } std::vector lhapdfIdsContained() const { std::vector lhaids; diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index d3feee93811be..71b6a6b0a987a 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -42,7 +42,8 @@ namespace gen { void copy(const ScaleWeightGroupInfo &other); virtual ScaleWeightGroupInfo* clone() const override; - void setMuRMuFIndex(WeightMetaInfo info, float muR, float muF); + void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); + void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); // Is a variation of the functional form of the dynamic scale diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 155d3981e00a6..575871de6f101 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -20,13 +20,17 @@ namespace gen { return new ScaleWeightGroupInfo(*this); } - void ScaleWeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF) { - WeightGroupInfo::addContainedId(weightEntry, id, label); - auto metaInfo = weightMetaInfoByGlobalIndex(id, weightEntry); + void ScaleWeightGroupInfo::addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF) { + WeightGroupInfo::addContainedId(globalIndex, id, label); + setMuRMuFIndex(globalIndex, id, muR, muF); + } + + void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { + auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); setMuRMuFIndex(metaInfo, muR, muF); } - void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo info, float muR, float muF) { + void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { if (muR == 0.5 && muF == 0.5) muR05muF05Index_ = info.localIndex; else if (muR == 0.5 && muF == 1.0) diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 23c22b2342838..2b8c5079a443f 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -7,14 +7,14 @@ namespace gen { void WeightGroupInfo::copy(const WeightGroupInfo &other) { - isWellFormed_ = true; - headerEntry_ = other.headerEntry(); - name_ = other.name(); - description_ = other.description(); - weightType_ = other.weightType(); - idsContained_ = other.idsContained(); - firstId_ = other.firstId(); - lastId_ = other.lastId(); + isWellFormed_ = other.isWellFormed_; + headerEntry_ = other.headerEntry_; + name_ = other.name_; + description_ = other.description_; + weightType_ = other.weightType_; + idsContained_ = other.idsContained_; + firstId_ = other.firstId_; + lastId_ = other.lastId_; } WeightGroupInfo* WeightGroupInfo::clone() const { From 419a1cde6629d3a1666b4abe9a02328a38926d61 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 20 Jan 2020 09:26:54 +0100 Subject: [PATCH 074/186] Update lheWeights config --- .../Core/plugins/GenWeightProductProducer.cc | 3 +-- PhysicsTools/NanoAOD/python/nanogen_cff.py | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index e8d18a93e5878..98075bedd6a3b 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -85,8 +85,7 @@ GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLum iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); weightNames_ = genLumiInfoHandle->weightNames(); - - weightHelper_.parseWeightGroupsFromNames(weightNames_); + weightHelper_.parseWeightGroupsFromNames(weightNames_); } auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 8fba40c06dfb1..96ebd22e0b5f7 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -7,7 +7,8 @@ from PhysicsTools.NanoAOD.genWeightsTable_cfi import * genWeights = cms.EDProducer("GenWeightProductProducer", - genInfo = cms.InputTag("generator")) + genInfo = cms.InputTag("generator"), + genLumiInfoHeader = cms.InputTag("generator")) lheWeights = cms.EDProducer("LHEWeightProductProducer", lheSourceLabel = cms.string("externalLHEProducer")) @@ -15,6 +16,7 @@ lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", lheWeights = cms.VInputTag(["externalLHEProducer", "lheWeights"]), + lheWeightPrecision = cms.int32(14), genWeights = cms.InputTag("genWeights"), # Warning: you can use a full string, but only the first character is read. # Note also that the capitalization is important! For example, 'parton shower' @@ -24,7 +26,8 @@ maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), # If empty or not specified, no critieria is applied to filter on LHAPDF IDs pdfIds = cms.untracked.vint32([91400, 306000, 260000]), - lheWeightPrecision = cms.int32(14), + unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), + unknownOnlyIfAllEmpty = cms.untracked.bool(False), ) nanoMetadata = cms.EDProducer("UniqueStringProducer", From a2912ec22d2685d674007d9cbfa88077dffb7dd4 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 23 Jan 2020 20:44:40 +0100 Subject: [PATCH 075/186] First stab at cmsDriver NanoGEN Fix customize call, remove unimplimented args --- Configuration/Applications/python/ConfigBuilder.py | 11 +++++++++++ PhysicsTools/NanoAOD/python/nanogen_cff.py | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index 608651f121385..375ac04f59e7d 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -938,6 +938,7 @@ def define_Configs(self): self.RECOSIMDefaultCFF="Configuration/StandardSequences/RecoSim_cff" self.PATDefaultCFF="Configuration/StandardSequences/PAT_cff" self.NANODefaultCFF="PhysicsTools/NanoAOD/nano_cff" + self.NANOGENDefaultCFF="PhysicsTools/NanoAOD/nanogen_cff" self.EIDefaultCFF=None self.SKIMDefaultCFF="Configuration/StandardSequences/Skims_cff" self.POSTRECODefaultCFF="Configuration/StandardSequences/PostRecoGenerator_cff" @@ -987,6 +988,7 @@ def define_Configs(self): self.REPACKDefaultSeq='DigiToRawRepack' self.PATDefaultSeq='miniAOD' self.PATGENDefaultSeq='miniGEN' + self.NANOGENDefaultSeq='nanogenSequence' self.NANODefaultSeq='nanoSequence' self.EVTCONTDefaultCFF="Configuration/EventContent/EventContent_cff" @@ -1690,6 +1692,15 @@ def prepare_NANO(self, sequence = "nanoAOD"): self._options.customise_commands = self._options.customise_commands + " \n" self._options.customise_commands = self._options.customise_commands + "process.unpackedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n" + def prepare_NANOGEN(self, sequence = "nanoAOD"): + ''' Enrich the schedule with NANO ''' + self.loadDefaultOrSpecifiedCFF(sequence,self.NANOGENDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'nanoAOD_step') + custom = "customizeNanoGEN" + if self._options.runUnscheduled: + self._options.customisation_file_unsch.insert(0, '.'.join([self.NANOGENDefaultCFF, custom])) + else: + self._options.customisation_file.insert(0, '.'.join([self.NANOGENDefaultCFF, custom])) def prepare_EI(self, sequence = None): ''' Enrich the schedule with event interpretation ''' diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 96ebd22e0b5f7..66c938ac408ae 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -26,8 +26,8 @@ maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), # If empty or not specified, no critieria is applied to filter on LHAPDF IDs pdfIds = cms.untracked.vint32([91400, 306000, 260000]), - unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), - unknownOnlyIfAllEmpty = cms.untracked.bool(False), + #unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), + #unknownOnlyIfAllEmpty = cms.untracked.bool(False), ) nanoMetadata = cms.EDProducer("UniqueStringProducer", From 9dbe118f40ab3d89be0b5f84c4f411b93dc68e6b Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 25 Jan 2020 21:40:08 +0100 Subject: [PATCH 076/186] Save lheWeightsTable in Nano --- PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py | 1 + PhysicsTools/NanoAOD/python/nanogen_cff.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py b/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py index d9722f0e5be98..ad6398aa98c6a 100644 --- a/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py +++ b/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py @@ -3,6 +3,7 @@ NanoAODEDMEventContent = cms.PSet( outputCommands = cms.untracked.vstring( 'drop *', + "keep *_lheWeightsTable_*_*", # event data "keep nanoaodFlatTable_*Table_*_*", # event data "keep edmTriggerResults_*_*_*", # event data "keep String_*_genModel_*", # generator model data diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 66c938ac408ae..e63bcb6222244 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -23,9 +23,9 @@ # must be lower case and 'PDF' must be capital weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'parton shower']), # Max number of groups to store for each type above, -1 ==> store all found - maxGroupsPerType = cms.vint32([1, -1, 1, 2, 1]), + maxGroupsPerType = cms.vint32([-1, -1, -1, -1, 1]), # If empty or not specified, no critieria is applied to filter on LHAPDF IDs - pdfIds = cms.untracked.vint32([91400, 306000, 260000]), + #pdfIds = cms.untracked.vint32([91400, 306000, 260000]), #unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), #unknownOnlyIfAllEmpty = cms.untracked.bool(False), ) @@ -108,4 +108,5 @@ def customizeNanoGEN(process): process.genJetAK8FlavourTable.src = process.genJetAK8Table.src process.tauGenJets.GenParticles = "genParticles" process.genVisTaus.srcGenParticles = "genParticles" + return process From 3c6dd9473f99c4d321b989073b9035a9504e1e9c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 26 Jan 2020 22:50:40 +0100 Subject: [PATCH 077/186] Towards separating PDFs into new groups --- .../Core/interface/WeightHelper.h | 5 +- .../Core/src/LHEWeightHelper.cc | 7 +-- GeneratorInterface/Core/src/WeightHelper.cc | 46 +++++++++++++++--- .../interface/PdfWeightGroupInfo.h | 47 +++++++++++++++++-- .../interface/WeightGroupInfo.h | 8 ++++ 5 files changed, 94 insertions(+), 19 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 66cfbfd547155..b0417ae14680a 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -50,7 +50,10 @@ namespace gen { bool isPdfWeightGroup(const ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight); void updatePdfInfo(const ParsedWeight& weight); - std::string searchAttributes(const std::string& label, const ParsedWeight& weight); + void splitPdfGroups(); + std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; + std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; + std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; // Possible names for the same thing const std::unordered_map> attributeNames_ = { diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 7a882e07ea84e..be2784e6ae4f2 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -42,12 +42,6 @@ namespace gen { buildGroups(); } - //void LHEWeightHelper::setGroupPriority() { - // groupCheckOrder_ = {gen::WeightType::kScaleWeights, gen::WeightType::kPdfWeights, - // gen::WeightType::kMEParamWeights - // }; - //} - void LHEWeightHelper::buildGroups() { std::string currentGroupName; for (const auto& weight : parsedWeights_) { @@ -63,6 +57,7 @@ namespace gen { else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(weight); } + //splitPdfGroups(); } std::unique_ptr LHEWeightHelper::buildGroup(const ParsedWeight& weight) { diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index b178134a7b156..92edbbf4d1e59 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -1,4 +1,5 @@ #include "GeneratorInterface/Core/interface/WeightHelper.h" +#include namespace gen { WeightHelper::WeightHelper() : @@ -69,14 +70,32 @@ namespace gen { return (weight.groupname.find("mg_reweighting") != std::string::npos); } - std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) { + std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { + std::string attribute = searchAttributesByTag(label, weight); + return attribute.empty() ? searchAttributesByRegex(label, weight) : attribute; + attribute = searchAttributesByRegex(label, weight); + } + + std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { for (const auto& lab : attributeNames_.at(label)) { auto& attributes = weight.attributes; if (attributes.find(lab) != attributes.end()) { return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); } } - // Next regexes + return ""; + } + + std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { + for (const auto& lab : attributeNames_.at(label)) { + auto& content = weight.content; + + std::regex expr(lab+"=([0-9]+)"); + std::smatch match; + if (std::regex_search(content, match, expr)) { + return boost::algorithm::trim_copy(match.str(1)); + } + } return ""; } @@ -113,21 +132,23 @@ namespace gen { } if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { - std::string description; + std::string description = ""; auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [lhaid] (const PdfSetInfo& setInfo) { return setInfo.lhapdfId == lhaid; }); if (pdfInfo != pdfSetsInfo.end()) { pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); if (pdfInfo->uncertaintyType == gen::kHessianUnc) - description = "Hessian "; + description += "Hessian "; else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) - description = "Monte Carlo "; + description += "Monte Carlo "; description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; description += " with LHAID = " + std::to_string(lhaid); + description += "; "; } - description = "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); + //else + // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); pdfGroup.addLhapdfId(lhaid, weight.index); - pdfGroup.setDescription(description); + pdfGroup.appendDescription(description); } } else @@ -145,6 +166,17 @@ namespace gen { return std::move(weightProduct); } + void WeightHelper::splitPdfGroups() { + // std::vector groupsToSplit; + // for (auto& group: weightGroups_) { + // if (group.weightType() == gen::WeightType::kPdfWeights) { + // gen::PdfWeightGroupInfo& = dynamic_cast(group); + // if (group.containsMultipleSets()) + // groupsToSplit.push_back(group); + // } + // } + } + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); weightProduct->setNumWeightSets(weightGroups_.size()); diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 18dc88fdbd067..8c4cbc6514c4e 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -4,6 +4,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include #include +#include namespace gen { enum PdfUncertaintyType { @@ -19,7 +20,8 @@ namespace gen { bool hasAlphasVars_; int alphasUpIndex_; int alphasDownIndex_; - std::vector> lhapdfIdsContained_; + // Map local index to lhaid + std::unordered_map lhapdfIdsContained_; public: PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } PdfWeightGroupInfo(std::string header, std::string name) : @@ -39,25 +41,37 @@ namespace gen { void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } + std::vector idsContainedInPdfSet(int refLhaid) { + std::vector setIds; + int lhaid = refLhaid; + int index = indexOfLhapdfId(lhaid); + while (index <= lastId_ && parentLhapdfId(lhaid, index) == refLhaid) { + setIds.push_back(idsContained_.at(index)); + index++; + lhaid = lhapdfIdsContained_[index]; + } + return setIds; + } bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } + int parentLhapdfId(int lhaid, int globalIndex) const { return lhaid - (globalIndex - firstId_); } bool containsParentLhapdfId(int lhaid, int globalIndex) const { if (indexOfLhapdfId(lhaid) != -1) return true; - int parentid = lhaid - (globalIndex - firstId_); + int parentid = parentLhapdfId(lhaid, globalIndex); return indexOfLhapdfId(parentid) != -1; } bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } int indexOfLhapdfId(int lhaid) const { for (const auto& id : lhapdfIdsContained_) { - if (id.first == lhaid) - return id.second; + if (id.second == lhaid) + return id.first; } return -1; } int alphasUpIndex() const { return alphasUpIndex_; } int alphasDownIndex() const { return alphasDownIndex_; } void addLhapdfId(int lhaid, int globalIndex) { - lhapdfIdsContained_.push_back(std::make_pair(lhaid, globalIndex-firstId_)); + lhapdfIdsContained_[globalIndex-firstId_] = lhaid; } std::vector lhapdfIdsContained() const { std::vector lhaids; @@ -66,6 +80,29 @@ namespace gen { } return lhaids; } + void removeIdsContained(std::vector metaInfos) { + for (auto& weight : metaInfos) { + auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); + if (info == weight) { + idsContained_.erase(idsContained_.begin()+weight.localIndex, idsContained_.begin()+weight.localIndex+1); + lhapdfIdsContained_.erase(weight.localIndex); + } + } + } + void removeIdsContainedExcept(std::vector metaInfos) { + std::vector newContainedIds; + std::unordered_map newLhapdfIds; + for (auto& weight : metaInfos) { + auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); + if (info == weight) { + newContainedIds.push_back(weight); + if (lhapdfIdsContained_.find(weight.localIndex) != lhapdfIdsContained_.end()) + newLhapdfIds[weight.localIndex] = lhapdfIdsContained_[weight.localIndex]; + } + } + idsContained_ = newContainedIds; + lhapdfIdsContained_ = newLhapdfIds; + } }; } diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index aa097b399cf12..7a611c6fb1df3 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -15,6 +15,13 @@ namespace gen { size_t localIndex; std::string id; std::string label; + + bool operator==(const WeightMetaInfo& other) { + return (other.globalIndex == globalIndex && + other.localIndex == localIndex && + other.id == id && + other.label == label); + } }; enum class WeightType : char { @@ -58,6 +65,7 @@ namespace gen { void setName(std::string name) { name_ = name; } void setDescription(std::string description) { description_ = description; } + void appendDescription(std::string description) { description_ += description; } void setHeaderEntry(std::string header) { headerEntry_ = header; } void setWeightType(WeightType type) { weightType_ = type; } void setFirstId(int firstId) { firstId_ = firstId; } From 1e31de3434fa7b73ae7de28e08c63ed868f3fc2a Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 1 Feb 2020 22:48:47 +0100 Subject: [PATCH 078/186] cmsDriver from Mini input --- .../Applications/python/ConfigBuilder.py | 7 ++- .../Core/plugins/LHEWeightProductProducer.cc | 7 ++- .../plugins/ExternalLHEProducer.cc | 1 - PhysicsTools/NanoAOD/python/nanogen_cff.py | 52 ++++++++++++++++++- 4 files changed, 60 insertions(+), 7 deletions(-) diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index 375ac04f59e7d..8563a51318ca8 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -988,7 +988,8 @@ def define_Configs(self): self.REPACKDefaultSeq='DigiToRawRepack' self.PATDefaultSeq='miniAOD' self.PATGENDefaultSeq='miniGEN' - self.NANOGENDefaultSeq='nanogenSequence' + #TODO: Check based of file input + self.NANOGENDefaultSeq='nanogenSequence' if any([x in self.stepMap for x in ['LHE', 'GEN', 'AOD']]) else 'nanogenMiniSequence' self.NANODefaultSeq='nanoSequence' self.EVTCONTDefaultCFF="Configuration/EventContent/EventContent_cff" @@ -1694,9 +1695,11 @@ def prepare_NANO(self, sequence = "nanoAOD"): def prepare_NANOGEN(self, sequence = "nanoAOD"): ''' Enrich the schedule with NANO ''' + # TODO: Need to modify this based on the input file type + fromGen = any([x in self.stepMap for x in ['LHE', 'GEN', 'AOD']]) self.loadDefaultOrSpecifiedCFF(sequence,self.NANOGENDefaultCFF) self.scheduleSequence(sequence.split('.')[-1],'nanoAOD_step') - custom = "customizeNanoGEN" + custom = "customizeNanoGEN" if fromGen else "customizeNanoGENFromMini" if self._options.runUnscheduled: self._options.customisation_file_unsch.insert(0, '.'.join([self.NANOGENDefaultCFF, custom])) else: diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index f259540d79b59..30ee91b0e2615 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -84,11 +84,13 @@ LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& e typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; for (header_cit iter=lheRunInfoHandle->headers_begin(); iter!=lheRunInfoHandle->headers_end(); iter++) { - if (iter->tag() == "initrwgt") + if (iter->tag() == "initrwgt") { headerWeightInfo = *iter; + break; + } } - //weightHelper_.parseWeightGroupsFromHeader(headerWeightInfo.lines()); + weightHelper_.setHeaderLines(headerWeightInfo.lines()); } void @@ -102,6 +104,7 @@ LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi foundWeightProduct_ = true; return; } + weightHelper_.parseWeights(); auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index eb2ffa677c3fa..4d9239f9d1728 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -360,7 +360,6 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) run.put(std::move(product)); - //weightHelper_.parseWeightGroupsFromHeader(runInfo->findHeader("initrwgt")); weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); weightHelper_.parseWeights(); diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index e63bcb6222244..8bd7c2c14ca57 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -75,6 +75,36 @@ lheInfoTable ) +nanogenMiniSequence = cms.Sequence( + genWeights+ + lheWeights+ + nanoMetadata+ + mergedGenParticles+ + genParticles2HepMC+ + particleLevel+ + genJetTable+ + patJetPartons+ + genJetFlavourAssociation+ + genJetFlavourTable+ + genJetAK8Table+ + genJetAK8FlavourAssociation+ + genJetAK8FlavourTable+ + tauGenJets+ + tauGenJetsSelectorAllHadrons+ + genVisTaus+ + genVisTauTable+ + genTable+ + genWeightsTable+ + lheWeightsTable+ + genParticleTables+ + tautagger+ + genParticles2HepMCHiggsVtx+ + rivetProducerHTXS+ + particleLevelTables+ + metGenTable+ + lheInfoTable +) + NANOAODGENoutput = cms.OutputModule("NanoAODOutputModule", compressionAlgorithm = cms.untracked.string('LZMA'), compressionLevel = cms.untracked.int32(9), @@ -93,17 +123,35 @@ ) ) +def customizeNanoGENFromMini(process): + process.genParticleTable.src = "prunedGenParticles" + process.patJetPartons.particles = "prunedGenParticles" + process.particleLevel.src = "genParticles2HepMC:unsmeared" + process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared" + + process.genJetTable.src = "slimmedGenJets" + process.genJetFlavourAssociation.jets = process.genJetTable.src + process.genJetFlavourTable.src = process.genJetTable.src + process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" + process.genJetAK8Table.src = "slimmedGenJetsAK8" + process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src + process.genJetAK8FlavourTable.src = process.genJetAK8Table.src + process.tauGenJets.GenParticles = "prunedGenParticles" + process.genVisTaus.srcGenParticles = "prunedGenParticles" + + return process + def customizeNanoGEN(process): process.genParticleTable.src = "genParticles" process.patJetPartons.particles = "genParticles" process.particleLevel.src = "generatorSmeared" process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" - process.genJetTable.src = "ak4GenJetsNoNu" + process.genJetTable.src = "ak4GenJets" process.genJetFlavourAssociation.jets = process.genJetTable.src process.genJetFlavourTable.src = process.genJetTable.src process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" - process.genJetAK8Table.src = "ak8GenJetsNoNu" + process.genJetAK8Table.src = "ak8GenJets" process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src process.genJetAK8FlavourTable.src = process.genJetAK8Table.src process.tauGenJets.GenParticles = "genParticles" From f4164f888239feb8b28951ea21f1a7332f1cf9e8 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 2 Feb 2020 00:32:43 +0100 Subject: [PATCH 079/186] Don't save HLT stuff for NanoGen --- Configuration/Applications/python/ConfigBuilder.py | 2 +- GeneratorInterface/Core/src/LHEWeightHelper.cc | 2 ++ .../NanoAOD/python/NanoAODEDMEventContent_cff.py | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index 8563a51318ca8..5b6419b64c19e 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -1694,7 +1694,7 @@ def prepare_NANO(self, sequence = "nanoAOD"): self._options.customise_commands = self._options.customise_commands + "process.unpackedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n" def prepare_NANOGEN(self, sequence = "nanoAOD"): - ''' Enrich the schedule with NANO ''' + ''' Enrich the schedule with NANOGEN ''' # TODO: Need to modify this based on the input file type fromGen = any([x in self.stepMap for x in ['LHE', 'GEN', 'AOD']]) self.loadDefaultOrSpecifiedCFF(sequence,self.NANOGENDefaultCFF) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index be2784e6ae4f2..2ef6e5b628ecc 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -10,6 +10,7 @@ namespace gen { } void LHEWeightHelper::parseWeights() { + parsedWeights_.clear(); tinyxml2::XMLDocument xmlDoc; xmlDoc.Parse(("" + boost::algorithm::join(headerLines_, "") + "").c_str()); tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); @@ -43,6 +44,7 @@ namespace gen { } void LHEWeightHelper::buildGroups() { + weightGroups_.clear(); std::string currentGroupName; for (const auto& weight : parsedWeights_) { if (weight.groupname != currentGroupName) { diff --git a/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py b/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py index ad6398aa98c6a..6a23c316eb624 100644 --- a/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py +++ b/PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py @@ -20,3 +20,15 @@ compressionLevel = cms.untracked.int32(9), compressionAlgorithm = cms.untracked.string("LZMA"), ) +NANOAODGENEventContent = cms.PSet( + outputCommands = cms.untracked.vstring( + 'drop *', + "keep *_lheWeightsTable_*_*", # event data + "keep nanoaodFlatTable_*Table_*_*", # event data + "keep String_*_genModel_*", # generator model data + "keep nanoaodMergeableCounterTable_*Table_*_*", # accumulated per/run or per/lumi data + "keep nanoaodUniqueString_nanoMetadata_*_*", # basic metadata + ), + compressionLevel = cms.untracked.int32(9), + compressionAlgorithm = cms.untracked.string("LZMA"), +) From ba650b1a8544ad2ba7675df44e29412a53cbbb48 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 7 Feb 2020 19:51:23 +0100 Subject: [PATCH 080/186] Store LHE particles in NanoGen, false by default for some reason --- PhysicsTools/NanoAOD/python/nanogen_cff.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 8bd7c2c14ca57..9f689a6527d73 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -124,6 +124,8 @@ ) def customizeNanoGENFromMini(process): + # Why is this false by default?! + process.lheInfoTable.storeLHEParticles = True process.genParticleTable.src = "prunedGenParticles" process.patJetPartons.particles = "prunedGenParticles" process.particleLevel.src = "genParticles2HepMC:unsmeared" @@ -142,6 +144,7 @@ def customizeNanoGENFromMini(process): return process def customizeNanoGEN(process): + process.lheInfoTable.storeLHEParticles = True process.genParticleTable.src = "genParticles" process.patJetPartons.particles = "genParticles" process.particleLevel.src = "generatorSmeared" From 8c2927e4630a4953f2c726750c15f9994e9a10e4 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 20 May 2020 14:19:45 +0200 Subject: [PATCH 081/186] Clang format on all weight refactor files --- .../Core/interface/GenWeightHelper.h | 17 +- .../Core/interface/LHEWeightHelper.h | 24 +- .../Core/interface/WeightHelper.h | 96 +++--- .../Core/plugins/GenWeightProductProducer.cc | 66 ++-- .../Core/plugins/LHEWeightProductProducer.cc | 90 +++-- .../Core/src/GenWeightHelper.cc | 48 ++- .../Core/src/LHEWeightHelper.cc | 112 +++---- GeneratorInterface/Core/src/WeightHelper.cc | 314 +++++++++--------- .../plugins/ExternalLHEProducer.cc | 155 ++++----- .../plugins/LHEWeightsTableProducer.cc | 160 ++++----- .../interface/GenWeightInfoProduct.h | 51 ++- .../interface/GenWeightProduct.h | 67 ++-- .../interface/MEParamWeightGroupInfo.h | 29 +- .../interface/PartonShowerWeightGroupInfo.h | 34 +- .../interface/PdfWeightGroupInfo.h | 191 ++++++----- .../interface/ScaleWeightGroupInfo.h | 106 +++--- .../interface/UnknownWeightGroupInfo.h | 32 +- .../interface/WeightGroupInfo.h | 155 +++++---- .../src/GenWeightInfoProduct.cc | 119 ++++--- .../src/MEParamWeightGroupInfo.cc | 11 +- .../src/PartonShowerWeights.cc | 13 +- .../src/PdfWeightGroupInfo.cc | 22 +- .../src/ScaleWeightGroupInfo.cc | 92 +++-- .../src/UnknownWeightGroupInfo.cc | 7 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 146 ++++---- 25 files changed, 1035 insertions(+), 1122 deletions(-) diff --git a/GeneratorInterface/Core/interface/GenWeightHelper.h b/GeneratorInterface/Core/interface/GenWeightHelper.h index 4836ac90b5332..8797b4654d204 100644 --- a/GeneratorInterface/Core/interface/GenWeightHelper.h +++ b/GeneratorInterface/Core/interface/GenWeightHelper.h @@ -16,15 +16,14 @@ #include namespace gen { - class GenWeightHelper : public WeightHelper { - public: - GenWeightHelper(); + class GenWeightHelper : public WeightHelper { + public: + GenWeightHelper(); - void parseWeightGroupsFromNames(std::vector weightNames); - private: - }; -} - -#endif + void parseWeightGroupsFromNames(std::vector weightNames); + private: + }; +} // namespace gen +#endif diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 12f973ca45fcc..0e8b47ffa6e04 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -17,17 +17,17 @@ #include namespace gen { - class LHEWeightHelper : public WeightHelper { - public: - LHEWeightHelper() : WeightHelper() {}; - void setHeaderLines(std::vector headerLines); - void parseWeights(); - void buildGroups(); - std::unique_ptr buildGroup(const ParsedWeight& weight); - private: - std::vector headerLines_; - }; -} + class LHEWeightHelper : public WeightHelper { + public: + LHEWeightHelper() : WeightHelper(){}; + void setHeaderLines(std::vector headerLines); + void parseWeights(); + void buildGroups(); + std::unique_ptr buildGroup(const ParsedWeight& weight); -#endif + private: + std::vector headerLines_; + }; +} // namespace gen +#endif diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index b0417ae14680a..b44648a595a48 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -13,56 +13,54 @@ #include namespace gen { - struct PdfSetInfo { - std::string name; - int lhapdfId; - PdfUncertaintyType uncertaintyType; - }; + struct PdfSetInfo { + std::string name; + int lhapdfId; + PdfUncertaintyType uncertaintyType; + }; - struct ParsedWeight { - std::string id; - size_t index; - std::string groupname; - std::string content; - std::unordered_map attributes; - }; - - class WeightHelper { - public: - WeightHelper(); - edm::OwnVector weightGroups() { - return weightGroups_; - } - std::unique_ptr weightProduct(std::vector, float w0); - std::unique_ptr weightProduct(std::vector, float w0); - void setModel(std::string model) { model_ = model; } - int addWeightToProduct(std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); - int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); - protected: - std::string model_; - std::vector parsedWeights_; - const std::vector pdfSetsInfo; - std::map currWeightAttributeMap_; - std::map currGroupAttributeMap_; - edm::OwnVector weightGroups_; - bool isScaleWeightGroup(const ParsedWeight& weight); - bool isMEParamWeightGroup(const ParsedWeight& weight); - bool isPdfWeightGroup(const ParsedWeight& weight); - void updateScaleInfo(const ParsedWeight& weight); - void updatePdfInfo(const ParsedWeight& weight); - void splitPdfGroups(); - std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; - std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; - std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; + struct ParsedWeight { + std::string id; + size_t index; + std::string groupname; + std::string content; + std::unordered_map attributes; + }; - // Possible names for the same thing - const std::unordered_map> attributeNames_ = { - {"muf", {"muR", "MUR", "muf","facscfact"}}, - {"mur", {"muF", "MUF", "mur","renscfact"}}, - {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}} - }; - }; -} + class WeightHelper { + public: + WeightHelper(); + edm::OwnVector weightGroups() { return weightGroups_; } + std::unique_ptr weightProduct(std::vector, float w0); + std::unique_ptr weightProduct(std::vector, float w0); + void setModel(std::string model) { model_ = model; } + int addWeightToProduct( + std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); + int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); -#endif + protected: + std::string model_; + std::vector parsedWeights_; + const std::vector pdfSetsInfo; + std::map currWeightAttributeMap_; + std::map currGroupAttributeMap_; + edm::OwnVector weightGroups_; + bool isScaleWeightGroup(const ParsedWeight& weight); + bool isMEParamWeightGroup(const ParsedWeight& weight); + bool isPdfWeightGroup(const ParsedWeight& weight); + void updateScaleInfo(const ParsedWeight& weight); + void updatePdfInfo(const ParsedWeight& weight); + void splitPdfGroups(); + std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; + std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; + std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; + + // Possible names for the same thing + const std::unordered_map> attributeNames_ = { + {"muf", {"muR", "MUR", "muf", "facscfact"}}, + {"mur", {"muF", "MUF", "mur", "renscfact"}}, + {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}}; + }; +} // namespace gen +#endif diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 98075bedd6a3b..c4256bdfc3b5d 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -29,7 +29,7 @@ class GenWeightProductProducer : public edm::one::EDProducer weightNames_; gen::GenWeightHelper weightHelper_; @@ -44,24 +44,19 @@ class GenWeightProductProducer : public edm::one::EDProducer(iConfig.getParameter("genInfo"))), - genEventToken_(consumes(iConfig.getParameter("genInfo"))), - genLumiInfoHeadTag_(mayConsume(iConfig.getParameter("genLumiInfoHeader"))) -{ +GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iConfig) + : genLumiInfoToken_(consumes(iConfig.getParameter("genInfo"))), + genEventToken_(consumes(iConfig.getParameter("genInfo"))), + genLumiInfoHeadTag_( + mayConsume(iConfig.getParameter("genLumiInfoHeader"))) { produces(); produces(); } - -GenWeightProductProducer::~GenWeightProductProducer() -{ -} - +GenWeightProductProducer::~GenWeightProductProducer() {} // ------------ method called to produce the data ------------ -void -GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { +void GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle genEventInfo; iEvent.getByToken(genEventToken_, genEventInfo); @@ -70,30 +65,27 @@ GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe iEvent.put(std::move(weightProduct)); } -void -GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { - edm::Handle genLumiInfoHead; - iLumi.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); - if (genLumiInfoHead.isValid()) { - std::string label = genLumiInfoHead->configDescription(); - boost::replace_all(label,"-","_"); - weightHelper_.setModel(label); - } - - if (weightNames_.size() == 0) { - edm::Handle genLumiInfoHandle; - iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); - - weightNames_ = genLumiInfoHandle->weightNames(); - weightHelper_.parseWeightGroupsFromNames(weightNames_); - } - auto weightInfoProduct = std::make_unique(); - for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); - } - iLumi.put(std::move(weightInfoProduct)); +void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { + edm::Handle genLumiInfoHead; + iLumi.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); + if (genLumiInfoHead.isValid()) { + std::string label = genLumiInfoHead->configDescription(); + boost::replace_all(label, "-", "_"); + weightHelper_.setModel(label); + } + + if (weightNames_.size() == 0) { + edm::Handle genLumiInfoHandle; + iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); + + weightNames_ = genLumiInfoHandle->weightNames(); + weightHelper_.parseWeightGroupsFromNames(weightNames_); + } + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + iLumi.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(GenWeightProductProducer); - - diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 30ee91b0e2615..c36598cc3785b 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -25,12 +25,11 @@ #include "FWCore/ServiceRegistry/interface/Service.h" -class LHEWeightProductProducer : public edm::one::EDProducer { +class LHEWeightProductProducer : public edm::one::EDProducer { public: explicit LHEWeightProductProducer(const edm::ParameterSet& iConfig); ~LHEWeightProductProducer() override; - + private: gen::LHEWeightHelper weightHelper_; std::string lheLabel_; @@ -43,32 +42,25 @@ class LHEWeightProductProducer : public edm::one::EDProducer("lheSourceLabel")), - lheRunInfoToken_(consumes(lheLabel_)), - lheEventToken_(consumes(lheLabel_)), - lheWeightInfoToken_(consumes(lheLabel_)) -{ +LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iConfig) + : lheLabel_(iConfig.getParameter("lheSourceLabel")), + lheRunInfoToken_(consumes(lheLabel_)), + lheEventToken_(consumes(lheLabel_)), + lheWeightInfoToken_(consumes(lheLabel_)) { produces(); produces(); } - -LHEWeightProductProducer::~LHEWeightProductProducer() -{ -} - +LHEWeightProductProducer::~LHEWeightProductProducer() {} // ------------ method called to produce the data ------------ -void -LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { +void LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { if (foundWeightProduct_) - return; - + return; + edm::Handle lheEventInfo; iEvent.getByToken(lheEventToken_, lheEventInfo); // Read weights from LHEEventProduct @@ -76,42 +68,38 @@ LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe iEvent.put(std::move(weightProduct)); } -void -LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { - edm::Handle lheRunInfoHandle; - run.getByLabel(lheLabel_, lheRunInfoHandle); - - typedef std::vector::const_iterator header_cit; - LHERunInfoProduct::Header headerWeightInfo; - for (header_cit iter=lheRunInfoHandle->headers_begin(); iter!=lheRunInfoHandle->headers_end(); iter++) { - if (iter->tag() == "initrwgt") { - headerWeightInfo = *iter; - break; - } +void LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { + edm::Handle lheRunInfoHandle; + run.getByLabel(lheLabel_, lheRunInfoHandle); + + typedef std::vector::const_iterator header_cit; + LHERunInfoProduct::Header headerWeightInfo; + for (header_cit iter = lheRunInfoHandle->headers_begin(); iter != lheRunInfoHandle->headers_end(); iter++) { + if (iter->tag() == "initrwgt") { + headerWeightInfo = *iter; + break; } + } - weightHelper_.setHeaderLines(headerWeightInfo.lines()); + weightHelper_.setHeaderLines(headerWeightInfo.lines()); } -void -LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const& es) { } - -void -LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { - edm::Handle lheWeightInfoHandle; - lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundWeightProduct_ = true; - return; - } - weightHelper_.parseWeights(); - - auto weightInfoProduct = std::make_unique(); - for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); - } - lumi.put(std::move(weightInfoProduct)); +void LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const& es) {} + +void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { + edm::Handle lheWeightInfoHandle; + lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundWeightProduct_ = true; + return; + } + weightHelper_.parseWeights(); + + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + lumi.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(LHEWeightProductProducer); - diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 74bad0d66781a..09373d83c4fd9 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -4,32 +4,28 @@ using namespace tinyxml2; namespace gen { - GenWeightHelper::GenWeightHelper() { - } - - void - GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { - int index = 0; - - if (weightNames.size() <= 1) - return; + GenWeightHelper::GenWeightHelper() {} - for (std::string weightName : weightNames) { - if(weightName.find("LHE") != std::string::npos) { - // Parse as usual, this is the SUSY workflow - // std::vector info; - // boost::split(info, weightName, boost::is_any_of(",")); - weightGroups_.push_back(new gen::UnknownWeightGroupInfo("inGen")); - } - // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights - else if (weightGroups_.size() == 0) { - weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); - } - auto& group = weightGroups_.back(); - // No IDs for Gen weights - group.addContainedId(index++, "", weightName); - } - } -} + void GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { + int index = 0; + if (weightNames.size() <= 1) + return; + for (std::string weightName : weightNames) { + if (weightName.find("LHE") != std::string::npos) { + // Parse as usual, this is the SUSY workflow + // std::vector info; + // boost::split(info, weightName, boost::is_any_of(",")); + weightGroups_.push_back(new gen::UnknownWeightGroupInfo("inGen")); + } + // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights + else if (weightGroups_.size() == 0) { + weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); + } + auto& group = weightGroups_.back(); + // No IDs for Gen weights + group.addContainedId(index++, "", weightName); + } + } +} // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 2ef6e5b628ecc..d74ccc0b01aac 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -5,71 +5,69 @@ using namespace tinyxml2; namespace gen { - void LHEWeightHelper::setHeaderLines(std::vector headerLines) { - headerLines_ = headerLines; - } + void LHEWeightHelper::setHeaderLines(std::vector headerLines) { headerLines_ = headerLines; } - void LHEWeightHelper::parseWeights() { - parsedWeights_.clear(); - tinyxml2::XMLDocument xmlDoc; - xmlDoc.Parse(("" + boost::algorithm::join(headerLines_, "") + "").c_str()); - tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + void LHEWeightHelper::parseWeights() { + parsedWeights_.clear(); + tinyxml2::XMLDocument xmlDoc; + xmlDoc.Parse(("" + boost::algorithm::join(headerLines_, "") + "").c_str()); + tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); - size_t weightIndex = 0; - for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { - std::string groupName = ""; - if (strcmp(e->Name(), "weight") == 0) { - // we are here if there is a weight that does not belong to any group + size_t weightIndex = 0; + for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { + std::string groupName = ""; + if (strcmp(e->Name(), "weight") == 0) { + // we are here if there is a weight that does not belong to any group + std::string text = ""; + if (e->GetText()) + text = e->GetText(); + parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text}); + } + if (strcmp(e->Name(), "weightgroup") == 0) { + groupName = e->Attribute("name"); + for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; + inner = inner->NextSiblingElement("weight")) { + // we are here if there is a weight in a weightgroup std::string text = ""; - if (e->GetText()) - text = e->GetText(); - parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text}); - } - if (strcmp(e->Name(), "weightgroup") == 0) { - groupName = e->Attribute("name"); - for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; - inner = inner->NextSiblingElement("weight")) { - // we are here if there is a weight in a weightgroup - std::string text = ""; - if (inner->GetText()) - text = inner->GetText(); - std::unordered_map attributes; - for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) - attributes[att->Name()] = att->Value(); - parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes}); - } + if (inner->GetText()) + text = inner->GetText(); + std::unordered_map attributes; + for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes}); } } - buildGroups(); } + buildGroups(); + } - void LHEWeightHelper::buildGroups() { - weightGroups_.clear(); - std::string currentGroupName; - for (const auto& weight : parsedWeights_) { - if (weight.groupname != currentGroupName) { - weightGroups_.push_back(*buildGroup(weight)); - } - currentGroupName = weight.groupname; - WeightGroupInfo& group = weightGroups_.back(); - group.addContainedId(weight.index, weight.id, weight.content); + void LHEWeightHelper::buildGroups() { + weightGroups_.clear(); + std::string currentGroupName; + for (const auto& weight : parsedWeights_) { + if (weight.groupname != currentGroupName) { + weightGroups_.push_back(*buildGroup(weight)); + } + currentGroupName = weight.groupname; + WeightGroupInfo& group = weightGroups_.back(); + group.addContainedId(weight.index, weight.id, weight.content); - if (group.weightType() == gen::WeightType::kScaleWeights) - updateScaleInfo(weight); - else if (group.weightType() == gen::WeightType::kPdfWeights) - updatePdfInfo(weight); - } - //splitPdfGroups(); + if (group.weightType() == gen::WeightType::kScaleWeights) + updateScaleInfo(weight); + else if (group.weightType() == gen::WeightType::kPdfWeights) + updatePdfInfo(weight); } + //splitPdfGroups(); + } - std::unique_ptr LHEWeightHelper::buildGroup(const ParsedWeight& weight) { - if (isScaleWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isPdfWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isMEParamWeightGroup(weight)) - return std::make_unique(weight.groupname); + std::unique_ptr LHEWeightHelper::buildGroup(const ParsedWeight& weight) { + if (isScaleWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isMEParamWeightGroup(weight)) + return std::make_unique(weight.groupname); - return std::make_unique(weight.groupname); - } -} + return std::make_unique(weight.groupname); + } +} // namespace gen diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 92edbbf4d1e59..c2fdd9c79d97c 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -2,8 +2,8 @@ #include namespace gen { - WeightHelper::WeightHelper() : - pdfSetsInfo({ + WeightHelper::WeightHelper() + : pdfSetsInfo({ // In principle this can be parsed from $LHAPDF_DATA_PATH/pdfsets.index, // but do we really want to do that? Can also just hardcode a subset... // TODO: Actually we can just take this from LHAPDF @@ -11,7 +11,7 @@ namespace gen { {"NNPDF31_nnlo_as_0118", 303600, kMonteCarloUnc}, {"NNPDF31_nlo_as_0118", 303400, kMonteCarloUnc}, {"NNPDF31_nlo_hessian_pdfas", 305800, kHessianUnc}, - {"NNPDF31_nnlo_as_0108", 322500, kVariationSet}, + {"NNPDF31_nnlo_as_0108", 322500, kVariationSet}, {"NNPDF31_nnlo_as_0110", 322700, kVariationSet}, {"NNPDF31_nnlo_as_0112", 322900, kVariationSet}, {"NNPDF31_nnlo_as_0114", 323100, kVariationSet}, @@ -26,8 +26,8 @@ namespace gen { {"NNPDF30_nnlo_nf_5_pdfas", 292600, kMonteCarloUnc}, {"NNPDF30_nnlo_nf_4_pdfas", 292400, kMonteCarloUnc}, {"NNPDF30_nlo_nf_4_pdfas", 292000, kMonteCarloUnc}, - {"NNPDF30_lo_as_0130", 263000, kMonteCarloUnc}, - {"NNPDF30_lo_as_0118", 262000, kMonteCarloUnc}, + {"NNPDF30_lo_as_0130", 263000, kMonteCarloUnc}, + {"NNPDF30_lo_as_0118", 262000, kMonteCarloUnc}, {"CT14nnlo", 13000, kHessianUnc}, {"CT14nlo", 13100, kHessianUnc}, {"CT14nnlo_as_0116", 13065, kVariationSet}, @@ -44,129 +44,129 @@ namespace gen { {"PDF4LHC15_nnlo_30_pdfas", 91400, kMonteCarloUnc}, {"ABMP16als118_5_nnlo", 42780, kHessianUnc}, {"HERAPDF20_NLO_EIG", 61130, kHessianUnc}, - {"HERAPDF20_NNLO_EIG", 61200, kHessianUnc}, + {"HERAPDF20_NNLO_EIG", 61200, kHessianUnc}, {"HERAPDF20_NLO_VAR", 61130, kHessianUnc}, {"HERAPDF20_NNLO_VAR", 61230, kHessianUnc}, {"CT14qed_inc_proton", 13400, kHessianUnc}, {"LUXqed17_plus_PDF4LHC15_nnlo_100", 82200, kMonteCarloUnc}, - }) - { model_ = ""; } - - bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { - return (weight.groupname.find("scale_variation") != std::string::npos - || weight.groupname.find("Central scale variation") != std::string::npos); + }) { + model_ = ""; + } + + bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { + return (weight.groupname.find("scale_variation") != std::string::npos || + weight.groupname.find("Central scale variation") != std::string::npos); + } + + bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { + const std::string& name = weight.groupname; + if (name.find("PDF_variation") != std::string::npos) + return true; + + return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [name](const PdfSetInfo& setInfo) { + return setInfo.name == name; + }) != pdfSetsInfo.end(); + } + + bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { + return (weight.groupname.find("mg_reweighting") != std::string::npos); + } + + std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { + std::string attribute = searchAttributesByTag(label, weight); + return attribute.empty() ? searchAttributesByRegex(label, weight) : attribute; + attribute = searchAttributesByRegex(label, weight); + } + + std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { + for (const auto& lab : attributeNames_.at(label)) { + auto& attributes = weight.attributes; + if (attributes.find(lab) != attributes.end()) { + return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); + } } - - bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { - const std::string& name = weight.groupname; - if (name.find("PDF_variation") != std::string::npos) - return true; - - return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), - [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }) != pdfSetsInfo.end(); - } - - bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { - return (weight.groupname.find("mg_reweighting") != std::string::npos); + return ""; + } + + std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { + for (const auto& lab : attributeNames_.at(label)) { + auto& content = weight.content; + + std::regex expr(lab + "=([0-9]+)"); + std::smatch match; + if (std::regex_search(content, match, expr)) { + return boost::algorithm::trim_copy(match.str(1)); + } } - - std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { - std::string attribute = searchAttributesByTag(label, weight); - return attribute.empty() ? searchAttributesByRegex(label, weight) : attribute; - attribute = searchAttributesByRegex(label, weight); - } - - std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { - for (const auto& lab : attributeNames_.at(label)) { - auto& attributes = weight.attributes; - if (attributes.find(lab) != attributes.end()) { - return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); - } - } - return ""; + return ""; + } + + void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { + auto& group = weightGroups_.back(); + auto& scaleGroup = dynamic_cast(group); + std::string muRText = searchAttributes("mur", weight); + std::string muFText = searchAttributes("mur", weight); + if (muRText.empty() || muFText.empty()) { + scaleGroup.setIsWellFormed(false); + return; } - std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { - for (const auto& lab : attributeNames_.at(label)) { - auto& content = weight.content; - - std::regex expr(lab+"=([0-9]+)"); - std::smatch match; - if (std::regex_search(content, match, expr)) { - return boost::algorithm::trim_copy(match.str(1)); - } - } - return ""; + try { + float muR = std::stof(muRText); + float muF = std::stof(muFText); + scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); + } catch (std::invalid_argument& e) { + scaleGroup.setIsWellFormed(false); } - - void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { - auto& group = weightGroups_.back(); - auto& scaleGroup = dynamic_cast(group); - std::string muRText = searchAttributes("mur", weight); - std::string muFText = searchAttributes("mur", weight); - if (muRText.empty() || muFText.empty()) { - scaleGroup.setIsWellFormed(false); - return; - } - - try { - float muR = std::stof(muRText); - float muF = std::stof(muFText); - scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); - } - catch(std::invalid_argument& e) { - scaleGroup.setIsWellFormed(false); + } + + void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); + std::string lhaidText = searchAttributes("pdf", weight); + int lhaid = 0; + if (!lhaidText.empty()) { + try { + lhaid = std::stoi(lhaidText); + } catch (std::invalid_argument& e) { + pdfGroup.setIsWellFormed(false); + } + + if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { + std::string description = ""; + auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [lhaid](const PdfSetInfo& setInfo) { + return setInfo.lhapdfId == lhaid; + }); + if (pdfInfo != pdfSetsInfo.end()) { + pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); + if (pdfInfo->uncertaintyType == gen::kHessianUnc) + description += "Hessian "; + else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) + description += "Monte Carlo "; + description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; + description += " with LHAID = " + std::to_string(lhaid); + description += "; "; } + //else + // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); + pdfGroup.addLhapdfId(lhaid, weight.index); + pdfGroup.appendDescription(description); + } + } else + pdfGroup.setIsWellFormed(false); + } + + // TODO: Could probably recycle this code better + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + for (unsigned int i = 0; i < weights.size(); i++) { + addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); } + return std::move(weightProduct); + } - void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - std::string lhaidText = searchAttributes("pdf", weight); - int lhaid = 0; - if (!lhaidText.empty()) { - try { - lhaid = std::stoi(lhaidText); - } - catch(std::invalid_argument& e) { - pdfGroup.setIsWellFormed(false); - } - - if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { - std::string description = ""; - auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), - [lhaid] (const PdfSetInfo& setInfo) { return setInfo.lhapdfId == lhaid; }); - if (pdfInfo != pdfSetsInfo.end()) { - pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); - if (pdfInfo->uncertaintyType == gen::kHessianUnc) - description += "Hessian "; - else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) - description += "Monte Carlo "; - description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; - description += " with LHAID = " + std::to_string(lhaid); - description += "; "; - } - //else - // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); - pdfGroup.addLhapdfId(lhaid, weight.index); - pdfGroup.appendDescription(description); - } - } - else - pdfGroup.setIsWellFormed(false); - } - - // TODO: Could probably recycle this code better - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { - auto weightProduct = std::make_unique(w0); - weightProduct->setNumWeightSets(weightGroups_.size()); - int weightGroupIndex = 0; - for (unsigned int i = 0; i < weights.size(); i++) { - addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); - } - return std::move(weightProduct); - } - - void WeightHelper::splitPdfGroups() { + void WeightHelper::splitPdfGroups() { // std::vector groupsToSplit; // for (auto& group: weightGroups_) { // if (group.weightType() == gen::WeightType::kPdfWeights) { @@ -175,49 +175,47 @@ namespace gen { // groupsToSplit.push_back(group); // } // } + } + + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + int i = 0; + for (const auto& weight : weights) { + weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i++, weightGroupIndex); } - - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { - auto weightProduct = std::make_unique(w0); - weightProduct->setNumWeightSets(weightGroups_.size()); - int weightGroupIndex = 0; - int i = 0; - for (const auto& weight : weights) { - weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i++, weightGroupIndex); - } - return std::move(weightProduct); + return std::move(weightProduct); + } + + int WeightHelper::addWeightToProduct( + std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex) { + groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); + auto group = weightGroups_[groupIndex]; + int entry = group.weightVectorEntry(name, weightNum); + product->addWeight(weight, groupIndex, entry); + return groupIndex; + } + + int WeightHelper::findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { + // Start search at previous index, under expectation of ordered weights + previousGroupIndex = previousGroupIndex >= 0 ? previousGroupIndex : 0; + for (int index = previousGroupIndex; index < std::min(index + 1, static_cast(weightGroups_.size())); index++) { + const gen::WeightGroupInfo& weightGroup = weightGroups_[index]; + if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { + return static_cast(index); + } } - int WeightHelper::addWeightToProduct(std::unique_ptr& product, - double weight, std::string name, int weightNum, int groupIndex) { - groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); - auto group = weightGroups_[groupIndex]; - int entry = group.weightVectorEntry(name, weightNum); - product->addWeight(weight, groupIndex, entry); - return groupIndex; + // Fall back to unordered search + int counter = 0; + for (auto weightGroup : weightGroups_) { + if (weightGroup.containsWeight(wgtId, weightIndex)) + return counter; + counter++; } - - int WeightHelper::findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { - // Start search at previous index, under expectation of ordered weights - previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; - for (int index = previousGroupIndex; - index < std::min(index+1, static_cast(weightGroups_.size())); index++) { - const gen::WeightGroupInfo& weightGroup = weightGroups_[index]; - if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { - return static_cast(index); - } - } - - // Fall back to unordered search - int counter = 0; - for (auto weightGroup : weightGroups_) { - if (weightGroup.containsWeight(wgtId, weightIndex)) - return counter; - counter++; - } - // Needs to be properly handled - throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) - + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); - } -} - + // Needs to be properly handled + throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); + } +} // namespace gen diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 4d9239f9d1728..535565cb9a9fb 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -66,9 +66,8 @@ Description: [one line class summary] // class declaration // -class ExternalLHEProducer : public edm::one::EDProducer { +class ExternalLHEProducer + : public edm::one::EDProducer { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); ~ExternalLHEProducer() override; @@ -102,14 +101,14 @@ class ExternalLHEProducer : public edm::one::EDProducer> nPartonMapping_{}; - std::unique_ptr reader_; + std::unique_ptr reader_; gen::LHEWeightHelper weightHelper_; - std::shared_ptr runInfoLast; - std::shared_ptr runInfo; - std::shared_ptr partonLevel; - boost::ptr_deque runInfoProducts; - bool wasMerged; - + std::shared_ptr runInfoLast; + std::shared_ptr runInfo; + std::shared_ptr partonLevel; + boost::ptr_deque runInfoProducts; + bool wasMerged; + class FileCloseSentry : private boost::noncopyable { public: explicit FileCloseSentry(int fd) : fd_(fd){}; @@ -191,12 +190,10 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe } std::for_each(partonLevel->weights().begin(), partonLevel->weights().end(), - boost::bind(&LHEEventProduct::addWeight, - product.get(), _1)); + boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); // Should also zero out the weights in the GenInfoProduct - auto weightProduct = weightHelper_.weightProduct(partonLevel->weights(), - partonLevel->originalXWGTUP()); + auto weightProduct = weightHelper_.weightProduct(partonLevel->weights(), partonLevel->originalXWGTUP()); iEvent.put(std::move(weightProduct)); product->setScales(partonLevel->scales()); @@ -263,31 +260,28 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe } // ------------ method called when starting to processes a run ------------ -void -ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) -{ - - // pass the number of events as previous to last argument - std::ostringstream eventStream; - eventStream << nEvents_; - // args_.push_back(eventStream.str()); - args_.insert(args_.begin() + 1, eventStream.str()); - - // pass the random number generator seed as last argument - - edm::Service rng; - - if ( ! rng.isAvailable()) { - throw cms::Exception("Configuration") - << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" - "which is not present in the configuration file. You must add the service\n" - "in the configuration file if you want to run ExternalLHEProducer"; - } - std::ostringstream randomStream; - randomStream << rng->mySeed(); - args_.insert(args_.begin() + 2, randomStream.str()); +void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { + // pass the number of events as previous to last argument + std::ostringstream eventStream; + eventStream << nEvents_; + // args_.push_back(eventStream.str()); + args_.insert(args_.begin() + 1, eventStream.str()); + + // pass the random number generator seed as last argument + + edm::Service rng; + + if (!rng.isAvailable()) { + throw cms::Exception("Configuration") + << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" + "which is not present in the configuration file. You must add the service\n" + "in the configuration file if you want to run ExternalLHEProducer"; + } + std::ostringstream randomStream; + randomStream << rng->mySeed(); + args_.insert(args_.begin() + 2, randomStream.str()); - args_.insert(args_.begin() + 3, std::to_string(nThreads_)); + args_.insert(args_.begin() + 3, std::to_string(nThreads_)); for (unsigned int iArg = 0; iArg < args_.size(); iArg++) { LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; @@ -310,14 +304,14 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) p->fillCompressedContent(instream, 0.25 * insize); instream.close(); } - run.put(std::move(p), "LHEScriptOutput"); + run.put(std::move(p), "LHEScriptOutput"); - // LHE C++ classes translation - // (read back uncompressed file from disk in streaming mode again to save memory) + // LHE C++ classes translation + // (read back uncompressed file from disk in streaming mode again to save memory) - std::vector infiles(1, outputFile_); - unsigned int skip = 0; - reader_ = std::make_unique(infiles, skip); + std::vector infiles(1, outputFile_); + unsigned int skip = 0; + reader_ = std::make_unique(infiles, skip); nextEvent(); if (runInfoLast) { @@ -339,34 +333,31 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) runInfo.reset(); } - - nextEvent(); - if (runInfoLast) { - runInfo = runInfoLast; - - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, - product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, - product.get(), _1)); - - // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); - wasMerged = false; - - run.put(std::move(product)); - - weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); + + nextEvent(); + if (runInfoLast) { + runInfo = runInfoLast; + + std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); + std::for_each(runInfo->getHeaders().begin(), + runInfo->getHeaders().end(), + boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); + std::for_each(runInfo->getComments().begin(), + runInfo->getComments().end(), + boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); + + // keep a copy around in case of merging + runInfoProducts.push_back(new LHERunInfoProduct(*product)); + wasMerged = false; + + run.put(std::move(product)); + + weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); weightHelper_.parseWeights(); - - runInfo.reset(); - } -} + runInfo.reset(); + } +} // ------------ method called when ending the processing of a run ------------ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { @@ -377,23 +368,24 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es nextEvent(); if (partonLevel) { - throw edm::Exception(edm::errors::EventGenerationFailure) << "Error in ExternalLHEProducer::endRunProduce(). " - << "Event loop is over, but there are still lhe events to process." - << "This could happen if lhe file contains more events than requested. This is never expected to happen."; - } - - reader_.reset(); + throw edm::Exception(edm::errors::EventGenerationFailure) + << "Error in ExternalLHEProducer::endRunProduce(). " + << "Event loop is over, but there are still lhe events to process." + << "This could happen if lhe file contains more events than requested. This is never expected to happen."; + } + + reader_.reset(); if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; - } + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } } -void -ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { +void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } lumi.put(std::move(weightInfoProduct)); } @@ -524,7 +516,6 @@ void ExternalLHEProducer::executeScript() { } } - // ------------ Read the output script ------------ #define BUFSIZE 4096 std::unique_ptr ExternalLHEProducer::readOutput() { diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 5587cbd3d31e6..9f6bd55db7bca 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -15,7 +15,6 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "FWCore/Utilities/interface/transform.h" - #include #include #include @@ -27,30 +26,33 @@ namespace { class LHEWeightsTableProducer : public edm::global::EDProducer> { public: - LHEWeightsTableProducer(edm::ParameterSet const& params) : - lheWeightTokens_(edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - lheWeightInfoTokens_(edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), + LHEWeightsTableProducer(edm::ParameterSet const& params) + : lheWeightTokens_( + edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform( + params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), genWeightToken_(consumes(params.getParameter("genWeights"))), - genWeightInfoToken_(consumes(params.getParameter("genWeights"))), + genWeightInfoToken_( + consumes(params.getParameter("genWeights"))), weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), - [](auto& c) { return gen::WeightType(c.at(0)); } )), + [](auto& c) { return gen::WeightType(c.at(0)); })), maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), pdfIds_(params.getUntrackedParameter>("pdfIds", {})), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { if (weightgroups_.size() != maxGroupsPerType_.size()) - throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); + throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); produces>(); } void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { edm::Handle lheWeightHandle; for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - break; - } + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + break; + } } const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); @@ -70,61 +72,60 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>& lheWeightTables, const char* typeName, - const WeightGroupDataContainer& weightInfos, WeightsContainer& allWeights) const { + void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights) const { size_t typeCount = 0; gen::WeightType previousType = gen::WeightType::kUnknownWeights; for (const auto& groupInfo : weightInfos) { - std::string entryName = typeName; - gen::WeightType weightType = groupInfo.group->weightType(); - if (previousType != weightType) - typeCount = 0; - - std::string name = weightTypeNames_.at(weightType); - std::string label = groupInfo.group->name(); - - auto& weights = allWeights.at(groupInfo.index); - label.append("; "); - if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() - && groupInfo.group->nIdsContained() < 10) { - weights = orderedScaleWeights(weights, - dynamic_cast(groupInfo.group)); - label.append("[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); - } - else - label.append(groupInfo.group->description()); - - entryName.append(name); - entryName.append("Weight"); - if (typeCount > 0) { - entryName.append("AltSet"); - entryName.append(std::to_string(typeCount)); - } - - lheWeightTables->emplace_back(weights.size(), entryName, false); - lheWeightTables->back().addColumn( - "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - typeCount++; - previousType = weightType; + std::string entryName = typeName; + gen::WeightType weightType = groupInfo.group->weightType(); + if (previousType != weightType) + typeCount = 0; + + std::string name = weightTypeNames_.at(weightType); + std::string label = groupInfo.group->name(); + + auto& weights = allWeights.at(groupInfo.index); + label.append("; "); + if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && + groupInfo.group->nIdsContained() < 10) { + weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); + label.append( + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else + label.append(groupInfo.group->description()); + + entryName.append(name); + entryName.append("Weight"); + if (typeCount > 0) { + entryName.append("AltSet"); + entryName.append(std::to_string(typeCount)); + } + + lheWeightTables->emplace_back(weights.size(), entryName, false); + lheWeightTables->back().addColumn( + "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + + typeCount++; + previousType = weightType; } } - std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, - edm::EventSetup const&) const override { - + edm::EventSetup const&) const override { // Set equal to the max number of groups // subtrack 1 for each weight group you find edm::Handle lheWeightInfoHandle; for (auto& token : lheWeightInfoTokens_) { - iLumi.getByToken(token, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - break; - } + iLumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + break; + } } edm::Handle genWeightInfoHandle; @@ -132,40 +133,39 @@ class LHEWeightsTableProducer : public edm::global::EDProducer storePerType; for (size_t i = 0; i < weightgroups_.size(); i++) - storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); - auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); + auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); } return std::make_shared(weightsToStore); } - WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, - gen::WeightType weightType, int& maxStore) const { - WeightGroupDataContainer group; - if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); - } - else - group = weightsHandle->weightGroupsAndIndicesByType(weightType); - - if (maxStore < 0 || static_cast(group.size()) <= maxStore) { - // Modify size in case one type of weight is present in multiple products - maxStore -= group.size(); - return group; - } - return std::vector(group.begin(), group.begin()+maxStore); + WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const { + WeightGroupDataContainer group; + if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { + group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + } else + group = weightsHandle->weightGroupsAndIndicesByType(weightType); + + if (maxStore < 0 || static_cast(group.size()) <= maxStore) { + // Modify size in case one type of weight is present in multiple products + maxStore -= group.size(); + return group; + } + return std::vector(group.begin(), group.begin() + maxStore); } - - std::vector orderedScaleWeights(const std::vector& scaleWeights, const gen::ScaleWeightGroupInfo* scaleGroup) const { - + std::vector orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo* scaleGroup) const { std::vector weights; weights.push_back(scaleWeights.at(scaleGroup->muR05muF05Index())); weights.push_back(scaleWeights.at(scaleGroup->muR05muF1Index())); @@ -214,7 +214,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer weightGroupIndices_; int lheWeightPrecision_; - enum {inLHE, inGen}; + enum { inLHE, inGen }; }; #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(LHEWeightsTableProducer); diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index f990ed1931ea5..550a886df1757 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -18,34 +18,31 @@ namespace gen { size_t index; const gen::WeightGroupInfo* group; }; -} // namespace +} // namespace gen class GenWeightInfoProduct { - public: - GenWeightInfoProduct() {} - GenWeightInfoProduct(edm::OwnVector& weightGroups); - GenWeightInfoProduct(const GenWeightInfoProduct& other); - GenWeightInfoProduct(GenWeightInfoProduct&& other); - ~GenWeightInfoProduct() {} - GenWeightInfoProduct& operator=(const GenWeightInfoProduct &other); - GenWeightInfoProduct& operator=(GenWeightInfoProduct &&other); - - const edm::OwnVector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; - std::vector weightGroupsByType(gen::WeightType type) const; - std::vector weightGroupIndicesByType(gen::WeightType type) const; - std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; - std::optional pdfGroupWithIndexByLHAID(int lhaid) const; - std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; - void addWeightGroupInfo(gen::WeightGroupInfo* info); - const int numberOfGroups() const { return weightGroupsInfo_.size(); } - - private: - edm::OwnVector weightGroupsInfo_; - - +public: + GenWeightInfoProduct() {} + GenWeightInfoProduct(edm::OwnVector& weightGroups); + GenWeightInfoProduct(const GenWeightInfoProduct& other); + GenWeightInfoProduct(GenWeightInfoProduct&& other); + ~GenWeightInfoProduct() {} + GenWeightInfoProduct& operator=(const GenWeightInfoProduct& other); + GenWeightInfoProduct& operator=(GenWeightInfoProduct&& other); + + const edm::OwnVector& allWeightGroupsInfo() const; + const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; + const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; + std::vector weightGroupsByType(gen::WeightType type) const; + std::vector weightGroupIndicesByType(gen::WeightType type) const; + std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; + std::optional pdfGroupWithIndexByLHAID(int lhaid) const; + std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; + void addWeightGroupInfo(gen::WeightGroupInfo* info); + const int numberOfGroups() const { return weightGroupsInfo_.size(); } + +private: + edm::OwnVector weightGroupsInfo_; }; -#endif // GeneratorWeightInfo_LHEInterface_GenWeightInfoProduct_h - +#endif // GeneratorWeightInfo_LHEInterface_GenWeightInfoProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index 4675e17c6c80d..872ae29b65d9f 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -12,36 +12,41 @@ typedef std::vector> WeightsContainer; class GenWeightProduct { - public: - GenWeightProduct() { weightsVector_ = {}; centralWeight_ = 1.; } - GenWeightProduct(double w0) { weightsVector_ = {}; centralWeight_ = w0; } - GenWeightProduct& operator=(GenWeightProduct&& other) { - weightsVector_ = std::move(other.weightsVector_); - centralWeight_ = other.centralWeight_; - return *this; - } - ~GenWeightProduct() {} - - void setNumWeightSets(int num) { weightsVector_.resize(num); } - void addWeightSet() { weightsVector_.push_back({}); } - void addWeight(double weight, int setEntry, int weightNum) { - if (weightsVector_.size() == 0 && setEntry == 0) - addWeightSet(); - if (static_cast(weightsVector_.size()) <= setEntry) - throw std::domain_error("Out of range weight"); - auto& weights = weightsVector_.at(setEntry); - if (static_cast(weights.size()) <= weightNum) { - weights.resize(weightNum+1); - } - weights[weightNum] = weight/centralWeight_; - } - const WeightsContainer& weights() const { return weightsVector_; } - double centralWeight() const { return centralWeight_; } - - private: - WeightsContainer weightsVector_; - double centralWeight_; +public: + GenWeightProduct() { + weightsVector_ = {}; + centralWeight_ = 1.; + } + GenWeightProduct(double w0) { + weightsVector_ = {}; + centralWeight_ = w0; + } + GenWeightProduct& operator=(GenWeightProduct&& other) { + weightsVector_ = std::move(other.weightsVector_); + centralWeight_ = other.centralWeight_; + return *this; + } + ~GenWeightProduct() {} + + void setNumWeightSets(int num) { weightsVector_.resize(num); } + void addWeightSet() { weightsVector_.push_back({}); } + void addWeight(double weight, int setEntry, int weightNum) { + if (weightsVector_.size() == 0 && setEntry == 0) + addWeightSet(); + if (static_cast(weightsVector_.size()) <= setEntry) + throw std::domain_error("Out of range weight"); + auto& weights = weightsVector_.at(setEntry); + if (static_cast(weights.size()) <= weightNum) { + weights.resize(weightNum + 1); + } + weights[weightNum] = weight / centralWeight_; + } + const WeightsContainer& weights() const { return weightsVector_; } + double centralWeight() const { return centralWeight_; } + +private: + WeightsContainer weightsVector_; + double centralWeight_; }; -#endif // GeneratorEvent_LHEInterface_GenWeightProduct_h - +#endif // GeneratorEvent_LHEInterface_GenWeightProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 3b2dd09d37609..371debb0fa14a 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -4,20 +4,17 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class MEParamWeightGroupInfo : public WeightGroupInfo { - public: - MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kMEParamWeights; } - MEParamWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = WeightType::kMEParamWeights; } - MEParamWeightGroupInfo(std::string header) : - MEParamWeightGroupInfo(header, header) {} - virtual ~MEParamWeightGroupInfo() override {} - void copy(const MEParamWeightGroupInfo &other); - virtual MEParamWeightGroupInfo* clone() const override; - }; -} - -#endif // SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h - - + class MEParamWeightGroupInfo : public WeightGroupInfo { + public: + MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kMEParamWeights; } + MEParamWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kMEParamWeights; + } + MEParamWeightGroupInfo(std::string header) : MEParamWeightGroupInfo(header, header) {} + virtual ~MEParamWeightGroupInfo() override {} + void copy(const MEParamWeightGroupInfo& other); + virtual MEParamWeightGroupInfo* clone() const override; + }; +} // namespace gen +#endif // SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index ea6c1b1fba683..2634a6e327c3e 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -4,26 +4,20 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class PartonShowerWeightGroupInfo : public WeightGroupInfo { - public: - PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} - PartonShowerWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { - weightType_ = WeightType::kPartonShowerWeights; - } - PartonShowerWeightGroupInfo(std::string header) : - PartonShowerWeightGroupInfo(header, header) { } - PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { - copy(other); - } - virtual ~PartonShowerWeightGroupInfo() override {} - void copy(const PartonShowerWeightGroupInfo &other); - virtual PartonShowerWeightGroupInfo* clone() const override; + class PartonShowerWeightGroupInfo : public WeightGroupInfo { + public: + PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} + PartonShowerWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kPartonShowerWeights; + } + PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} + PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } + virtual ~PartonShowerWeightGroupInfo() override {} + void copy(const PartonShowerWeightGroupInfo &other); + virtual PartonShowerWeightGroupInfo *clone() const override; - // Is a variation of the functional form of the dynamic scale - }; -} + // Is a variation of the functional form of the dynamic scale + }; +} // namespace gen #endif - - diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 8c4cbc6514c4e..617a81f043ef5 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -7,105 +7,100 @@ #include namespace gen { - enum PdfUncertaintyType { - kHessianUnc, - kMonteCarloUnc, - kVariationSet, - kUnknownUnc, - }; + enum PdfUncertaintyType { + kHessianUnc, + kMonteCarloUnc, + kVariationSet, + kUnknownUnc, + }; - class PdfWeightGroupInfo : public WeightGroupInfo { - private: - PdfUncertaintyType uncertaintyType_; - bool hasAlphasVars_; - int alphasUpIndex_; - int alphasDownIndex_; - // Map local index to lhaid - std::unordered_map lhapdfIdsContained_; - public: - PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } - PdfWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = WeightType::kPdfWeights; } - PdfWeightGroupInfo(std::string header) : - WeightGroupInfo(header) { weightType_ = WeightType::kPdfWeights; } - PdfWeightGroupInfo(const PdfWeightGroupInfo &other) { - copy(other); - } - virtual ~PdfWeightGroupInfo() override {} - void copy(const PdfWeightGroupInfo &other); - virtual PdfWeightGroupInfo* clone() const override; + class PdfWeightGroupInfo : public WeightGroupInfo { + private: + PdfUncertaintyType uncertaintyType_; + bool hasAlphasVars_; + int alphasUpIndex_; + int alphasDownIndex_; + // Map local index to lhaid + std::unordered_map lhapdfIdsContained_; - void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } - void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } - void setAlphasUpIndex(int alphasUpIndex) { alphasUpIndex_ = alphasUpIndex; } - void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } - PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } - bool hasAlphasVariations() const { return hasAlphasVars_; } - std::vector idsContainedInPdfSet(int refLhaid) { - std::vector setIds; - int lhaid = refLhaid; - int index = indexOfLhapdfId(lhaid); - while (index <= lastId_ && parentLhapdfId(lhaid, index) == refLhaid) { - setIds.push_back(idsContained_.at(index)); - index++; - lhaid = lhapdfIdsContained_[index]; - } - return setIds; - } - bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } - int parentLhapdfId(int lhaid, int globalIndex) const { return lhaid - (globalIndex - firstId_); } - bool containsParentLhapdfId(int lhaid, int globalIndex) const { - if (indexOfLhapdfId(lhaid) != -1) - return true; - int parentid = parentLhapdfId(lhaid, globalIndex); - return indexOfLhapdfId(parentid) != -1; - } - bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } - int indexOfLhapdfId(int lhaid) const { - for (const auto& id : lhapdfIdsContained_) { - if (id.second == lhaid) - return id.first; - } - return -1; - } - int alphasUpIndex() const { return alphasUpIndex_; } - int alphasDownIndex() const { return alphasDownIndex_; } - void addLhapdfId(int lhaid, int globalIndex) { - lhapdfIdsContained_[globalIndex-firstId_] = lhaid; - } - std::vector lhapdfIdsContained() const { - std::vector lhaids; - for (const auto& id : lhapdfIdsContained_) { - lhaids.push_back(id.first); - } - return lhaids; - } - void removeIdsContained(std::vector metaInfos) { - for (auto& weight : metaInfos) { - auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); - if (info == weight) { - idsContained_.erase(idsContained_.begin()+weight.localIndex, idsContained_.begin()+weight.localIndex+1); - lhapdfIdsContained_.erase(weight.localIndex); - } - } - } - void removeIdsContainedExcept(std::vector metaInfos) { - std::vector newContainedIds; - std::unordered_map newLhapdfIds; - for (auto& weight : metaInfos) { - auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); - if (info == weight) { - newContainedIds.push_back(weight); - if (lhapdfIdsContained_.find(weight.localIndex) != lhapdfIdsContained_.end()) - newLhapdfIds[weight.localIndex] = lhapdfIdsContained_[weight.localIndex]; - } - } - idsContained_ = newContainedIds; - lhapdfIdsContained_ = newLhapdfIds; - } - }; -} + public: + PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } + PdfWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kPdfWeights; + } + PdfWeightGroupInfo(std::string header) : WeightGroupInfo(header) { weightType_ = WeightType::kPdfWeights; } + PdfWeightGroupInfo(const PdfWeightGroupInfo& other) { copy(other); } + virtual ~PdfWeightGroupInfo() override {} + void copy(const PdfWeightGroupInfo& other); + virtual PdfWeightGroupInfo* clone() const override; + void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } + void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } + void setAlphasUpIndex(int alphasUpIndex) { alphasUpIndex_ = alphasUpIndex; } + void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } + PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } + bool hasAlphasVariations() const { return hasAlphasVars_; } + std::vector idsContainedInPdfSet(int refLhaid) { + std::vector setIds; + int lhaid = refLhaid; + int index = indexOfLhapdfId(lhaid); + while (index <= lastId_ && parentLhapdfId(lhaid, index) == refLhaid) { + setIds.push_back(idsContained_.at(index)); + index++; + lhaid = lhapdfIdsContained_[index]; + } + return setIds; + } + bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } + int parentLhapdfId(int lhaid, int globalIndex) const { return lhaid - (globalIndex - firstId_); } + bool containsParentLhapdfId(int lhaid, int globalIndex) const { + if (indexOfLhapdfId(lhaid) != -1) + return true; + int parentid = parentLhapdfId(lhaid, globalIndex); + return indexOfLhapdfId(parentid) != -1; + } + bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } + int indexOfLhapdfId(int lhaid) const { + for (const auto& id : lhapdfIdsContained_) { + if (id.second == lhaid) + return id.first; + } + return -1; + } + int alphasUpIndex() const { return alphasUpIndex_; } + int alphasDownIndex() const { return alphasDownIndex_; } + void addLhapdfId(int lhaid, int globalIndex) { lhapdfIdsContained_[globalIndex - firstId_] = lhaid; } + std::vector lhapdfIdsContained() const { + std::vector lhaids; + for (const auto& id : lhapdfIdsContained_) { + lhaids.push_back(id.first); + } + return lhaids; + } + void removeIdsContained(std::vector metaInfos) { + for (auto& weight : metaInfos) { + auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); + if (info == weight) { + idsContained_.erase(idsContained_.begin() + weight.localIndex, idsContained_.begin() + weight.localIndex + 1); + lhapdfIdsContained_.erase(weight.localIndex); + } + } + } + void removeIdsContainedExcept(std::vector metaInfos) { + std::vector newContainedIds; + std::unordered_map newLhapdfIds; + for (auto& weight : metaInfos) { + auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); + if (info == weight) { + newContainedIds.push_back(weight); + if (lhapdfIdsContained_.find(weight.localIndex) != lhapdfIdsContained_.end()) + newLhapdfIds[weight.localIndex] = lhapdfIdsContained_[weight.localIndex]; + } + } + idsContained_ = newContainedIds; + lhapdfIdsContained_ = newLhapdfIds; + } + }; +} // namespace gen -#endif // SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h - +#endif // SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 71b6a6b0a987a..a62d7cf0fe16a 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -4,62 +4,58 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class ScaleWeightGroupInfo : public WeightGroupInfo { - private: - bool isFunctionalFormVar_; - size_t centralIndex_; - size_t muR1muF2Index_; - size_t muR1muF05Index_; - size_t muR2muF05Index_; - size_t muR2muF1Index_; - size_t muR2muF2Index_; - size_t muR05muF05Index_; - size_t muR05muF1Index_; - size_t muR05muF2Index_; - public: - ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} - ScaleWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { - weightType_ = WeightType::kScaleWeights; - isFunctionalFormVar_ = false; - centralIndex_ = 0; - muR1muF2Index_ = 0; - muR1muF05Index_ = 0; - muR2muF05Index_ = 0; - muR2muF1Index_ = 0; - muR2muF2Index_ = 0; - muR2muF05Index_ = 0; - muR05muF05Index_ = 0; - muR05muF1Index_ = 0; - muR05muF2Index_ = 0; - } - ScaleWeightGroupInfo(std::string header) : - ScaleWeightGroupInfo(header, header) { } - ScaleWeightGroupInfo(const ScaleWeightGroupInfo &other) { - copy(other); - } - virtual ~ScaleWeightGroupInfo() override {} - void copy(const ScaleWeightGroupInfo &other); - virtual ScaleWeightGroupInfo* clone() const override; + class ScaleWeightGroupInfo : public WeightGroupInfo { + private: + bool isFunctionalFormVar_; + size_t centralIndex_; + size_t muR1muF2Index_; + size_t muR1muF05Index_; + size_t muR2muF05Index_; + size_t muR2muF1Index_; + size_t muR2muF2Index_; + size_t muR05muF05Index_; + size_t muR05muF1Index_; + size_t muR05muF2Index_; - void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); - void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); - void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); + public: + ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} + ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kScaleWeights; + isFunctionalFormVar_ = false; + centralIndex_ = 0; + muR1muF2Index_ = 0; + muR1muF05Index_ = 0; + muR2muF05Index_ = 0; + muR2muF1Index_ = 0; + muR2muF2Index_ = 0; + muR2muF05Index_ = 0; + muR05muF05Index_ = 0; + muR05muF1Index_ = 0; + muR05muF2Index_ = 0; + } + ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) {} + ScaleWeightGroupInfo(const ScaleWeightGroupInfo& other) { copy(other); } + virtual ~ScaleWeightGroupInfo() override {} + void copy(const ScaleWeightGroupInfo& other); + virtual ScaleWeightGroupInfo* clone() const override; - // Is a variation of the functional form of the dynamic scale - bool isFunctionalFormVariation(); - void setIsFunctionalFormVariation(bool functionalVar) {isFunctionalFormVar_ = functionalVar; } - size_t centralIndex() const {return centralIndex_; } - size_t muR1muF2Index() const { return muR1muF2Index_; } - size_t muR1muF05Index() const { return muR1muF05Index_; } - size_t muR2muF05Index() const { return muR2muF05Index_; } - size_t muR2muF1Index() const { return muR2muF1Index_; } - size_t muR2muF2Index() const { return muR2muF2Index_; } - size_t muR05muF05Index() const { return muR05muF05Index_; } - size_t muR05muF1Index() const { return muR05muF1Index_; } - size_t muR05muF2Index() const { return muR05muF2Index_; } - }; -} + void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); + void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); + void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); -#endif + // Is a variation of the functional form of the dynamic scale + bool isFunctionalFormVariation(); + void setIsFunctionalFormVariation(bool functionalVar) { isFunctionalFormVar_ = functionalVar; } + size_t centralIndex() const { return centralIndex_; } + size_t muR1muF2Index() const { return muR1muF2Index_; } + size_t muR1muF05Index() const { return muR1muF05Index_; } + size_t muR2muF05Index() const { return muR2muF05Index_; } + size_t muR2muF1Index() const { return muR2muF1Index_; } + size_t muR2muF2Index() const { return muR2muF2Index_; } + size_t muR05muF05Index() const { return muR05muF05Index_; } + size_t muR05muF1Index() const { return muR05muF1Index_; } + size_t muR05muF2Index() const { return muR05muF2Index_; } + }; +} // namespace gen +#endif diff --git a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h index 66152d8840434..d314b9ad40d8a 100644 --- a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h @@ -4,19 +4,21 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class UnknownWeightGroupInfo : public WeightGroupInfo { - public: - UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kUnknownWeights; } - UnknownWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false;} - UnknownWeightGroupInfo(std::string header) : - WeightGroupInfo(header) { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false;} - virtual ~UnknownWeightGroupInfo() override {} - void copy(const UnknownWeightGroupInfo &other); - virtual UnknownWeightGroupInfo* clone() const override; - }; -} - -#endif // SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h - + class UnknownWeightGroupInfo : public WeightGroupInfo { + public: + UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kUnknownWeights; } + UnknownWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kUnknownWeights; + isWellFormed_ = false; + } + UnknownWeightGroupInfo(std::string header) : WeightGroupInfo(header) { + weightType_ = WeightType::kUnknownWeights; + isWellFormed_ = false; + } + virtual ~UnknownWeightGroupInfo() override {} + void copy(const UnknownWeightGroupInfo& other); + virtual UnknownWeightGroupInfo* clone() const override; + }; +} // namespace gen +#endif // SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 7a611c6fb1df3..f404a87926585 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -10,90 +10,87 @@ #include namespace gen { - struct WeightMetaInfo { - size_t globalIndex; - size_t localIndex; - std::string id; - std::string label; + struct WeightMetaInfo { + size_t globalIndex; + size_t localIndex; + std::string id; + std::string label; - bool operator==(const WeightMetaInfo& other) { - return (other.globalIndex == globalIndex && - other.localIndex == localIndex && - other.id == id && - other.label == label); - } - }; + bool operator==(const WeightMetaInfo& other) { + return (other.globalIndex == globalIndex && other.localIndex == localIndex && other.id == id && + other.label == label); + } + }; - enum class WeightType : char { - kPdfWeights = 'P', - kScaleWeights = 's', - kMEParamWeights = 'm', - kPartonShowerWeights = 'p', - kUnknownWeights = 'u', - }; + enum class WeightType : char { + kPdfWeights = 'P', + kScaleWeights = 's', + kMEParamWeights = 'm', + kPartonShowerWeights = 'p', + kUnknownWeights = 'u', + }; - const std::array allWeightTypes = {{WeightType::kPdfWeights, - WeightType::kScaleWeights, WeightType::kMEParamWeights, - WeightType::kPartonShowerWeights, WeightType::kUnknownWeights, - }}; + const std::array allWeightTypes = {{ + WeightType::kPdfWeights, + WeightType::kScaleWeights, + WeightType::kMEParamWeights, + WeightType::kPartonShowerWeights, + WeightType::kUnknownWeights, + }}; - class WeightGroupInfo { - public: - WeightGroupInfo() : WeightGroupInfo("") {} - WeightGroupInfo(std::string header, std::string name): - headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(std::string header): - headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(const WeightGroupInfo &other) { - copy(other); - } - WeightGroupInfo& operator=(const WeightGroupInfo &other) { - copy(other); - return *this; - } - virtual ~WeightGroupInfo() {}; - void copy(const WeightGroupInfo &other); - virtual WeightGroupInfo* clone() const; - WeightMetaInfo weightMetaInfo(int weightEntry) const; - WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId) const; - bool containsWeight(const std::string& wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId, int weightEntry) const; - void addContainedId(int weightEntry, std::string id, std::string label); - std::vector containedIds() const; - bool indexInRange(int index) const; + class WeightGroupInfo { + public: + WeightGroupInfo() : WeightGroupInfo("") {} + WeightGroupInfo(std::string header, std::string name) + : headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} + WeightGroupInfo(std::string header) : headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} + WeightGroupInfo(const WeightGroupInfo& other) { copy(other); } + WeightGroupInfo& operator=(const WeightGroupInfo& other) { + copy(other); + return *this; + } + virtual ~WeightGroupInfo(){}; + void copy(const WeightGroupInfo& other); + virtual WeightGroupInfo* clone() const; + WeightMetaInfo weightMetaInfo(int weightEntry) const; + WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; + int weightVectorEntry(const std::string& wgtId) const; + bool containsWeight(const std::string& wgtId, int weightEntry) const; + int weightVectorEntry(const std::string& wgtId, int weightEntry) const; + void addContainedId(int weightEntry, std::string id, std::string label); + std::vector containedIds() const; + bool indexInRange(int index) const; - void setName(std::string name) { name_ = name; } - void setDescription(std::string description) { description_ = description; } - void appendDescription(std::string description) { description_ += description; } - void setHeaderEntry(std::string header) { headerEntry_ = header; } - void setWeightType(WeightType type) { weightType_ = type; } - void setFirstId(int firstId) { firstId_ = firstId; } - void setLastId(int lastId) { lastId_ = lastId; } + void setName(std::string name) { name_ = name; } + void setDescription(std::string description) { description_ = description; } + void appendDescription(std::string description) { description_ += description; } + void setHeaderEntry(std::string header) { headerEntry_ = header; } + void setWeightType(WeightType type) { weightType_ = type; } + void setFirstId(int firstId) { firstId_ = firstId; } + void setLastId(int lastId) { lastId_ = lastId; } - std::string name() const { return name_; } - std::string description() const { return description_; } - std::string headerEntry() const { return headerEntry_; } - WeightType weightType() const { return weightType_; } - std::vector idsContained() const { return idsContained_; } - size_t nIdsContained() const { return idsContained_.size(); } - int firstId() const { return firstId_; } - int lastId() const { return lastId_; } - // Store whether the group was fully parsed succesfully - void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } - bool isWellFormed() const { return isWellFormed_; } + std::string name() const { return name_; } + std::string description() const { return description_; } + std::string headerEntry() const { return headerEntry_; } + WeightType weightType() const { return weightType_; } + std::vector idsContained() const { return idsContained_; } + size_t nIdsContained() const { return idsContained_.size(); } + int firstId() const { return firstId_; } + int lastId() const { return lastId_; } + // Store whether the group was fully parsed succesfully + void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } + bool isWellFormed() const { return isWellFormed_; } - protected: - bool isWellFormed_; - std::string headerEntry_; - std::string name_; - std::string description_; - WeightType weightType_; - std::vector idsContained_; - int firstId_; - int lastId_; - }; -} - -#endif // SimDataFormats_GeneratorProducts_WeightGroupInfo_h + protected: + bool isWellFormed_; + std::string headerEntry_; + std::string name_; + std::string description_; + WeightType weightType_; + std::vector idsContained_; + int firstId_; + int lastId_; + }; +} // namespace gen +#endif // SimDataFormats_GeneratorProducts_WeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index e16bbebcc27da..7b53436c4c7ff 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -5,92 +5,89 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" GenWeightInfoProduct::GenWeightInfoProduct(edm::OwnVector& weightGroups) { - weightGroupsInfo_ = weightGroups; + weightGroupsInfo_ = weightGroups; } - -GenWeightInfoProduct& GenWeightInfoProduct::operator=(const GenWeightInfoProduct &other) { - weightGroupsInfo_ = other.weightGroupsInfo_; - return * this; + +GenWeightInfoProduct& GenWeightInfoProduct::operator=(const GenWeightInfoProduct& other) { + weightGroupsInfo_ = other.weightGroupsInfo_; + return *this; } -GenWeightInfoProduct& GenWeightInfoProduct::operator=(GenWeightInfoProduct &&other) { - weightGroupsInfo_ = std::move(other.weightGroupsInfo_); - return *this; +GenWeightInfoProduct& GenWeightInfoProduct::operator=(GenWeightInfoProduct&& other) { + weightGroupsInfo_ = std::move(other.weightGroupsInfo_); + return *this; } -const edm::OwnVector& GenWeightInfoProduct::allWeightGroupsInfo() const { - return weightGroupsInfo_; +const edm::OwnVector& GenWeightInfoProduct::allWeightGroupsInfo() const { + return weightGroupsInfo_; } const gen::WeightGroupInfo* GenWeightInfoProduct::containingWeightGroupInfo(int index) const { - for (const auto& weightGroup : weightGroupsInfo_) { - if (weightGroup.indexInRange(index)) - return &weightGroup; - } - throw std::domain_error("Failed to find containing weight group"); + for (const auto& weightGroup : weightGroupsInfo_) { + if (weightGroup.indexInRange(index)) + return &weightGroup; + } + throw std::domain_error("Failed to find containing weight group"); } const gen::WeightGroupInfo* GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { - if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) - throw std::range_error("Weight index out of range!"); - return &weightGroupsInfo_[weightGroupIndex]; + if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) + throw std::range_error("Weight index out of range!"); + return &weightGroupsInfo_[weightGroupIndex]; } std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { - std::vector matchingGroups; - for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { - if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); - } - return matchingGroups; + std::vector matchingGroups; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); + } + return matchingGroups; } std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { - std::vector matchingGroups; - for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { - if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back(weightGroupsInfo_[i].clone()); - } - return matchingGroups; + std::vector matchingGroups; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroups.push_back(weightGroupsInfo_[i].clone()); + } + return matchingGroups; } std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(int lhaid) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); - auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), - [lhaid] (gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); - return pdfGroup->containsLhapdfId(lhaid); - }); - return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; + auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { + auto pdfGroup = dynamic_cast(data.group); + return pdfGroup->containsLhapdfId(lhaid); + }); + return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; } -std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); - std::vector groups; - - for (auto lhaid : lhaids) { - auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), - [lhaid] (gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); - return pdfGroup->containsLhapdfId(lhaid); - }); - if (matchingPdfSet != pdfGroups.end()) - pdfGroups.push_back(*matchingPdfSet); - } - - return pdfGroups; +std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs( + const std::vector& lhaids) const { + auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + std::vector groups; + + for (auto lhaid : lhaids) { + auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { + auto pdfGroup = dynamic_cast(data.group); + return pdfGroup->containsLhapdfId(lhaid); + }); + if (matchingPdfSet != pdfGroups.end()) + pdfGroups.push_back(*matchingPdfSet); + } + + return pdfGroups; } std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { - std::vector matchingGroupIndices; - for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { - if (weightGroupsInfo_[i].weightType() == type) - matchingGroupIndices.push_back(i); - } - return matchingGroupIndices; + std::vector matchingGroupIndices; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroupIndices.push_back(i); + } + return matchingGroupIndices; } -void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { - weightGroupsInfo_.push_back(info); -} +void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index 8d75b537cf890..9174534d41113 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -1,12 +1,7 @@ #include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" namespace gen { - void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo &other) { - WeightGroupInfo::copy(other); - } - - MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { - return new MEParamWeightGroupInfo(*this); - } -} + void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo& other) { WeightGroupInfo::copy(other); } + MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { return new MEParamWeightGroupInfo(*this); } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc index 893db2f20433e..eaa004686f281 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc @@ -1,12 +1,9 @@ #include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" namespace gen { - void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo &other) { - WeightGroupInfo::copy(other); - } - - PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { - return new PartonShowerWeightGroupInfo(*this); - } -} + void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { WeightGroupInfo::copy(other); } + PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { + return new PartonShowerWeightGroupInfo(*this); + } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 5dfbf814f323e..17a106b578932 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -1,16 +1,14 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" namespace gen { - void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { - uncertaintyType_ = other.uncertaintyType(); - hasAlphasVars_ = other.hasAlphasVariations(); - alphasUpIndex_ = other.alphasDownIndex(); - alphasDownIndex_ = other.alphasDownIndex(); - lhapdfIdsContained_ = other.lhapdfIdsContained_; - WeightGroupInfo::copy(other); - } + void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo& other) { + uncertaintyType_ = other.uncertaintyType(); + hasAlphasVars_ = other.hasAlphasVariations(); + alphasUpIndex_ = other.alphasDownIndex(); + alphasDownIndex_ = other.alphasDownIndex(); + lhapdfIdsContained_ = other.lhapdfIdsContained_; + WeightGroupInfo::copy(other); + } - PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { - return new PdfWeightGroupInfo(*this); - } -} + PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { return new PdfWeightGroupInfo(*this); } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 575871de6f101..3919a22b57c94 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -3,55 +3,51 @@ #include namespace gen { - void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { - centralIndex_ = other.centralIndex_; - muR1muF2Index_ = other.muR1muF2Index_; - muR1muF05Index_ = other.muR1muF05Index_; - muR2muF05Index_ = other.muR2muF05Index_; - muR2muF1Index_ = other.muR2muF1Index_; - muR2muF2Index_ = other.muR2muF2Index_; - muR05muF05Index_ = other.muR2muF05Index_; - muR05muF1Index_ = other.muR05muF1Index_; - muR05muF2Index_ = other.muR05muF2Index_; - WeightGroupInfo::copy(other); - } + void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo& other) { + centralIndex_ = other.centralIndex_; + muR1muF2Index_ = other.muR1muF2Index_; + muR1muF05Index_ = other.muR1muF05Index_; + muR2muF05Index_ = other.muR2muF05Index_; + muR2muF1Index_ = other.muR2muF1Index_; + muR2muF2Index_ = other.muR2muF2Index_; + muR05muF05Index_ = other.muR2muF05Index_; + muR05muF1Index_ = other.muR05muF1Index_; + muR05muF2Index_ = other.muR05muF2Index_; + WeightGroupInfo::copy(other); + } - ScaleWeightGroupInfo* ScaleWeightGroupInfo::clone() const { - return new ScaleWeightGroupInfo(*this); - } + ScaleWeightGroupInfo* ScaleWeightGroupInfo::clone() const { return new ScaleWeightGroupInfo(*this); } - void ScaleWeightGroupInfo::addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF) { - WeightGroupInfo::addContainedId(globalIndex, id, label); - setMuRMuFIndex(globalIndex, id, muR, muF); - } - - void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { - auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); - setMuRMuFIndex(metaInfo, muR, muF); - } - - void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { - if (muR == 0.5 && muF == 0.5) - muR05muF05Index_ = info.localIndex; - else if (muR == 0.5 && muF == 1.0) - muR05muF1Index_ = info.localIndex; - else if (muR == 0.5 && muF == 2.0) - muR05muF2Index_ = info.localIndex; - else if (muR == 1.0 && muF == 0.5) - muR1muF05Index_ = info.localIndex; - else if (muR == 1.0 && muF == 1.0) - centralIndex_ = info.localIndex; - else if (muR == 1.0 && muF == 2.0) - muR1muF2Index_ = info.localIndex; - else if (muR == 2.0 && muF == 0.5) - muR2muF05Index_ = info.localIndex; - else if (muR == 2.0 && muF == 1.0) - muR2muF1Index_ = info.localIndex; - else if (muR == 2.0 && muF == 2.0) - muR2muF2Index_ = info.localIndex; - else - isWellFormed_ = false; - } -} + void ScaleWeightGroupInfo::addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF) { + WeightGroupInfo::addContainedId(globalIndex, id, label); + setMuRMuFIndex(globalIndex, id, muR, muF); + } + void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { + auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); + setMuRMuFIndex(metaInfo, muR, muF); + } + void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { + if (muR == 0.5 && muF == 0.5) + muR05muF05Index_ = info.localIndex; + else if (muR == 0.5 && muF == 1.0) + muR05muF1Index_ = info.localIndex; + else if (muR == 0.5 && muF == 2.0) + muR05muF2Index_ = info.localIndex; + else if (muR == 1.0 && muF == 0.5) + muR1muF05Index_ = info.localIndex; + else if (muR == 1.0 && muF == 1.0) + centralIndex_ = info.localIndex; + else if (muR == 1.0 && muF == 2.0) + muR1muF2Index_ = info.localIndex; + else if (muR == 2.0 && muF == 0.5) + muR2muF05Index_ = info.localIndex; + else if (muR == 2.0 && muF == 1.0) + muR2muF1Index_ = info.localIndex; + else if (muR == 2.0 && muF == 2.0) + muR2muF2Index_ = info.localIndex; + else + isWellFormed_ = false; + } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc index 2d56e8e177b31..8c33d59eff35b 100644 --- a/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc @@ -1,8 +1,5 @@ #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" namespace gen { - UnknownWeightGroupInfo* UnknownWeightGroupInfo::clone() const { - return new UnknownWeightGroupInfo(*this); - } -} - + UnknownWeightGroupInfo* UnknownWeightGroupInfo::clone() const { return new UnknownWeightGroupInfo(*this); } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 2b8c5079a443f..4a775456dc4c2 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -6,94 +6,84 @@ #include namespace gen { - void WeightGroupInfo::copy(const WeightGroupInfo &other) { - isWellFormed_ = other.isWellFormed_; - headerEntry_ = other.headerEntry_; - name_ = other.name_; - description_ = other.description_; - weightType_ = other.weightType_; - idsContained_ = other.idsContained_; - firstId_ = other.firstId_; - lastId_ = other.lastId_; - } + void WeightGroupInfo::copy(const WeightGroupInfo& other) { + isWellFormed_ = other.isWellFormed_; + headerEntry_ = other.headerEntry_; + name_ = other.name_; + description_ = other.description_; + weightType_ = other.weightType_; + idsContained_ = other.idsContained_; + firstId_ = other.firstId_; + lastId_ = other.lastId_; + } - WeightGroupInfo* WeightGroupInfo::clone() const { - throw cms::Exception("LogicError", "WeightGroupInfo is abstract, so it's clone() method can't be implemented.\n"); - } + WeightGroupInfo* WeightGroupInfo::clone() const { + throw cms::Exception("LogicError", "WeightGroupInfo is abstract, so it's clone() method can't be implemented.\n"); + } - WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { - return idsContained_.at(weightEntry); - } + WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } - WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { - int entry = weightVectorEntry(wgtId, weightEntry); - if (entry < 0 || entry >= static_cast(idsContained_.size())) - throw std::range_error("Weight entry " + std::to_string(weightEntry) + - " is not a member of group " + name_ + - ". \n firstID = " + std::to_string(firstId_) + " lastId = " + std::to_string(lastId_)); - return idsContained_.at(entry); - } + WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { + int entry = weightVectorEntry(wgtId, weightEntry); + if (entry < 0 || entry >= static_cast(idsContained_.size())) + throw std::range_error("Weight entry " + std::to_string(weightEntry) + " is not a member of group " + name_ + + ". \n firstID = " + std::to_string(firstId_) + " lastId = " + std::to_string(lastId_)); + return idsContained_.at(entry); + } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { - return weightVectorEntry(wgtId, 0); - } + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } - bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { - return weightVectorEntry(wgtId, weightEntry) != -1; - } + bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { + return weightVectorEntry(wgtId, weightEntry) != -1; + } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { - // First try ordered search - if (indexInRange(weightEntry)) { - size_t orderedEntry = weightEntry - firstId_; - if (orderedEntry < idsContained_.size()) - if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { - return orderedEntry; - } + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { + // First try ordered search + if (indexInRange(weightEntry)) { + size_t orderedEntry = weightEntry - firstId_; + if (orderedEntry < idsContained_.size()) + if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { + return orderedEntry; } - // Fall back to search on ID - else if (!wgtId.empty()) { - auto it = std::find_if(idsContained_.begin(), idsContained_.end(), - [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); - if (it != idsContained_.end()) - return std::distance(idsContained_.begin(), it); - } - return -1; } - - void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label="") { - if (firstId_ == -1 || weightEntry < firstId_) { - firstId_ = weightEntry; - // Reset to reflect that indices will be shifted - for (auto& entry : idsContained_) - entry.localIndex = entry.globalIndex - firstId_; - } - if (weightEntry > lastId_) - lastId_ = weightEntry; - - WeightMetaInfo info; - info.globalIndex = weightEntry; - info.localIndex = weightEntry - firstId_; - info.id = id; - info.label = label; - - if (idsContained_.size() < info.localIndex) { - idsContained_.resize(info.localIndex); - idsContained_.insert(idsContained_.begin()+info.localIndex, info); - } - else if (idsContained_.size() == info.localIndex) { - idsContained_.push_back(info); - } - else { - idsContained_.resize(info.localIndex+1); - idsContained_[info.localIndex] = info; - } + // Fall back to search on ID + else if (!wgtId.empty()) { + auto it = std::find_if( + idsContained_.begin(), idsContained_.end(), [wgtId](const WeightMetaInfo& w) { return w.id == wgtId; }); + if (it != idsContained_.end()) + return std::distance(idsContained_.begin(), it); } + return -1; + } - std::vector WeightGroupInfo::containedIds() const { return idsContained_; } + void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label = "") { + if (firstId_ == -1 || weightEntry < firstId_) { + firstId_ = weightEntry; + // Reset to reflect that indices will be shifted + for (auto& entry : idsContained_) + entry.localIndex = entry.globalIndex - firstId_; + } + if (weightEntry > lastId_) + lastId_ = weightEntry; + WeightMetaInfo info; + info.globalIndex = weightEntry; + info.localIndex = weightEntry - firstId_; + info.id = id; + info.label = label; - bool WeightGroupInfo::indexInRange(int index) const { - return (index <= lastId_ && index >= firstId_); + if (idsContained_.size() < info.localIndex) { + idsContained_.resize(info.localIndex); + idsContained_.insert(idsContained_.begin() + info.localIndex, info); + } else if (idsContained_.size() == info.localIndex) { + idsContained_.push_back(info); + } else { + idsContained_.resize(info.localIndex + 1); + idsContained_[info.localIndex] = info; } -} + } + + std::vector WeightGroupInfo::containedIds() const { return idsContained_; } + + bool WeightGroupInfo::indexInRange(int index) const { return (index <= lastId_ && index >= firstId_); } +} // namespace gen From 0e631518c9b5a8e29f2592b1c425cb3a062d36fa Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Mon, 10 Feb 2020 06:42:23 -0500 Subject: [PATCH 082/186] changed LHEsource so it compiles, running tests now added scientific notation for numbers so values are correct added a few more test statements. Need to think of future needs Add testing suite (will remove/squash commits right before merge) Change pdfSetsInfo to be read in from LHAPDF path Still lingering question of how to decide pdf type This can be resolved in the new function "setupPdfSetsInfo" Add check if orphan weight is pdf and fix xml tag swap (needs review) Allow reading '>' as '>' and fix bug with first weight w/o group As for the first weight error: if the first weight doesn't have a weight group, the code would not add it to the list of weights because of currentGroupName and the first weight both having a trivial "" as their name. Thats the reason for the currentGroupName being set to "None" for initialization Fix space issue in regex and moved unchaning variables outside for Clang format --- .../Core/interface/GenWeightHelper.h | 17 +- .../Core/interface/LHEWeightHelper.h | 26 +- .../Core/interface/WeightHelper.h | 100 +- .../Core/plugins/GenWeightProductProducer.cc | 66 +- .../Core/plugins/LHEWeightProductProducer.cc | 90 +- .../Core/src/GenWeightHelper.cc | 48 +- .../Core/src/LHEWeightHelper.cc | 205 ++- GeneratorInterface/Core/src/WeightHelper.cc | 393 ++-- .../plugins/ExternalLHEProducer.cc | 155 +- .../LHEInterface/plugins/LHESource.cc | 99 +- .../plugins/LHEWeightsTableProducer.cc | 160 +- .../interface/GenWeightInfoProduct.h | 51 +- .../interface/GenWeightProduct.h | 67 +- .../interface/MEParamWeightGroupInfo.h | 29 +- .../interface/PartonShowerWeightGroupInfo.h | 34 +- .../interface/PdfWeightGroupInfo.h | 191 +- .../interface/ScaleWeightGroupInfo.h | 111 +- .../interface/UnknownWeightGroupInfo.h | 32 +- .../interface/WeightGroupInfo.h | 155 +- .../src/GenWeightInfoProduct.cc | 119 +- .../src/MEParamWeightGroupInfo.cc | 11 +- .../src/PartonShowerWeights.cc | 13 +- .../src/PdfWeightGroupInfo.cc | 22 +- .../src/ScaleWeightGroupInfo.cc | 92 +- .../src/UnknownWeightGroupInfo.cc | 7 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 146 +- Test/Test/BuildFile.xml | 11 + Test/Test/interface/test.h | 18 + Test/Test/src/classes.h | 1 + Test/Test/src/classes_def.xml | 3 + Test/Test/src/test.cc | 22 + lhe_test.C | 57 + .../DrellYan_LO_MGMLMv233_2016_weightInfo.txt | 474 +++++ .../DrellYan_LO_MGMLMv242_2017_weightInfo.txt | 1158 ++++++++++++ ...rellYan_NLO_MGFXFXv233_2016_weightInfo.txt | 117 ++ ...rellYan_NLO_MGFXFXv242_2017_weightInfo.txt | 1158 ++++++++++++ testFiles/VVV_2017_weight_info.txt | 1358 ++++++++++++++ .../W1jet_260_simplescale_weight_info.txt | 1149 ++++++++++++ testFiles/W1jet_260_weight_info.txt | 1179 ++++++++++++ testFiles/WJ_MiNNLO_weightinfo.txt | 1612 +++++++++++++++++ testFiles/WJ_NNLOPS_weightinfo.txt | 1612 +++++++++++++++++ testFiles/WZVBS_2017_weightInfo.txt | 1180 ++++++++++++ testFiles/WZVBS_private_weightInfo.txt | 150 ++ testFiles/ZJ_MiNNLO_weightinfo.txt | 735 ++++++++ testFiles/ZMiNNLO.txt | 735 ++++++++ testFiles/ZZTo4L_powheg_2016_weightInfo.txt | 227 +++ testFiles/ZZTo4L_powheg_2017_weightInfo.txt | 1087 +++++++++++ testFiles/overview.txt | 12 + testFiles/susyweights.txt | 1227 +++++++++++++ 49 files changed, 16505 insertions(+), 1216 deletions(-) create mode 100644 Test/Test/BuildFile.xml create mode 100644 Test/Test/interface/test.h create mode 100644 Test/Test/src/classes.h create mode 100644 Test/Test/src/classes_def.xml create mode 100644 Test/Test/src/test.cc create mode 100644 lhe_test.C create mode 100644 testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt create mode 100644 testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt create mode 100644 testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt create mode 100644 testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt create mode 100644 testFiles/VVV_2017_weight_info.txt create mode 100644 testFiles/W1jet_260_simplescale_weight_info.txt create mode 100644 testFiles/W1jet_260_weight_info.txt create mode 100644 testFiles/WJ_MiNNLO_weightinfo.txt create mode 100644 testFiles/WJ_NNLOPS_weightinfo.txt create mode 100644 testFiles/WZVBS_2017_weightInfo.txt create mode 100644 testFiles/WZVBS_private_weightInfo.txt create mode 100644 testFiles/ZJ_MiNNLO_weightinfo.txt create mode 100644 testFiles/ZMiNNLO.txt create mode 100644 testFiles/ZZTo4L_powheg_2016_weightInfo.txt create mode 100644 testFiles/ZZTo4L_powheg_2017_weightInfo.txt create mode 100644 testFiles/overview.txt create mode 100644 testFiles/susyweights.txt diff --git a/GeneratorInterface/Core/interface/GenWeightHelper.h b/GeneratorInterface/Core/interface/GenWeightHelper.h index 4836ac90b5332..8797b4654d204 100644 --- a/GeneratorInterface/Core/interface/GenWeightHelper.h +++ b/GeneratorInterface/Core/interface/GenWeightHelper.h @@ -16,15 +16,14 @@ #include namespace gen { - class GenWeightHelper : public WeightHelper { - public: - GenWeightHelper(); + class GenWeightHelper : public WeightHelper { + public: + GenWeightHelper(); - void parseWeightGroupsFromNames(std::vector weightNames); - private: - }; -} - -#endif + void parseWeightGroupsFromNames(std::vector weightNames); + private: + }; +} // namespace gen +#endif diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 12f973ca45fcc..89f1e1c610923 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -17,17 +17,19 @@ #include namespace gen { - class LHEWeightHelper : public WeightHelper { - public: - LHEWeightHelper() : WeightHelper() {}; - void setHeaderLines(std::vector headerLines); - void parseWeights(); - void buildGroups(); - std::unique_ptr buildGroup(const ParsedWeight& weight); - private: - std::vector headerLines_; - }; -} + class LHEWeightHelper : public WeightHelper { + public: + LHEWeightHelper() : WeightHelper(){}; + void setHeaderLines(std::vector headerLines); + void parseWeights(); + void buildGroups(); + bool isConsistent(); + void swapHeaders(); + std::unique_ptr buildGroup(ParsedWeight& weight); -#endif + private: + std::vector headerLines_; + }; +} // namespace gen +#endif diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index b0417ae14680a..ddb61e2828140 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -10,59 +10,63 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" +#include "LHAPDF/LHAPDF.h" #include +#include namespace gen { - struct PdfSetInfo { - std::string name; - int lhapdfId; - PdfUncertaintyType uncertaintyType; - }; + struct PdfSetInfo { + std::string name; + int lhapdfId; + PdfUncertaintyType uncertaintyType; + }; - struct ParsedWeight { - std::string id; - size_t index; - std::string groupname; - std::string content; - std::unordered_map attributes; - }; - - class WeightHelper { - public: - WeightHelper(); - edm::OwnVector weightGroups() { - return weightGroups_; - } - std::unique_ptr weightProduct(std::vector, float w0); - std::unique_ptr weightProduct(std::vector, float w0); - void setModel(std::string model) { model_ = model; } - int addWeightToProduct(std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); - int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); - protected: - std::string model_; - std::vector parsedWeights_; - const std::vector pdfSetsInfo; - std::map currWeightAttributeMap_; - std::map currGroupAttributeMap_; - edm::OwnVector weightGroups_; - bool isScaleWeightGroup(const ParsedWeight& weight); - bool isMEParamWeightGroup(const ParsedWeight& weight); - bool isPdfWeightGroup(const ParsedWeight& weight); - void updateScaleInfo(const ParsedWeight& weight); - void updatePdfInfo(const ParsedWeight& weight); - void splitPdfGroups(); - std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; - std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; - std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; + struct ParsedWeight { + std::string id; + size_t index; + std::string groupname; + std::string content; + std::unordered_map attributes; + }; + + class WeightHelper { + public: + WeightHelper(); + edm::OwnVector weightGroups() { return weightGroups_; } + std::unique_ptr weightProduct(std::vector, float w0); + std::unique_ptr weightProduct(std::vector, float w0); + void setModel(std::string model) { model_ = model; } + int addWeightToProduct( + std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); + int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); - // Possible names for the same thing - const std::unordered_map> attributeNames_ = { - {"muf", {"muR", "MUR", "muf","facscfact"}}, - {"mur", {"muF", "MUF", "mur","renscfact"}}, - {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}} - }; + protected: + std::string model_; + std::vector parsedWeights_; + const std::vector pdfSetsInfo; + std::map currWeightAttributeMap_; + std::map currGroupAttributeMap_; + edm::OwnVector weightGroups_; + bool isScaleWeightGroup(const ParsedWeight& weight); + bool isMEParamWeightGroup(const ParsedWeight& weight); + bool isPdfWeightGroup(const ParsedWeight& weight); + bool isOrphanPdfWeightGroup(ParsedWeight& weight); + void updateScaleInfo(const ParsedWeight& weight); + void updatePdfInfo(const ParsedWeight& weight); + void splitPdfGroups(); + std::vector setupPdfSetsInfo(); + std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; + std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; + std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; + + // Possible names for the same thing + const std::unordered_map> attributeNames_ = { + {"muf", {"muF", "MUF", "muf", "facscfact"}}, + {"mur", {"muR", "MUR", "mur", "renscfact"}}, + {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}, + //{"dyn", {"DYN_SCALE", "dyn_scale_choice"}}, }; -} + }; +} // namespace gen #endif - diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 98075bedd6a3b..c4256bdfc3b5d 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -29,7 +29,7 @@ class GenWeightProductProducer : public edm::one::EDProducer weightNames_; gen::GenWeightHelper weightHelper_; @@ -44,24 +44,19 @@ class GenWeightProductProducer : public edm::one::EDProducer(iConfig.getParameter("genInfo"))), - genEventToken_(consumes(iConfig.getParameter("genInfo"))), - genLumiInfoHeadTag_(mayConsume(iConfig.getParameter("genLumiInfoHeader"))) -{ +GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iConfig) + : genLumiInfoToken_(consumes(iConfig.getParameter("genInfo"))), + genEventToken_(consumes(iConfig.getParameter("genInfo"))), + genLumiInfoHeadTag_( + mayConsume(iConfig.getParameter("genLumiInfoHeader"))) { produces(); produces(); } - -GenWeightProductProducer::~GenWeightProductProducer() -{ -} - +GenWeightProductProducer::~GenWeightProductProducer() {} // ------------ method called to produce the data ------------ -void -GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { +void GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle genEventInfo; iEvent.getByToken(genEventToken_, genEventInfo); @@ -70,30 +65,27 @@ GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe iEvent.put(std::move(weightProduct)); } -void -GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { - edm::Handle genLumiInfoHead; - iLumi.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); - if (genLumiInfoHead.isValid()) { - std::string label = genLumiInfoHead->configDescription(); - boost::replace_all(label,"-","_"); - weightHelper_.setModel(label); - } - - if (weightNames_.size() == 0) { - edm::Handle genLumiInfoHandle; - iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); - - weightNames_ = genLumiInfoHandle->weightNames(); - weightHelper_.parseWeightGroupsFromNames(weightNames_); - } - auto weightInfoProduct = std::make_unique(); - for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); - } - iLumi.put(std::move(weightInfoProduct)); +void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& iLumi, edm::EventSetup const& iSetup) { + edm::Handle genLumiInfoHead; + iLumi.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); + if (genLumiInfoHead.isValid()) { + std::string label = genLumiInfoHead->configDescription(); + boost::replace_all(label, "-", "_"); + weightHelper_.setModel(label); + } + + if (weightNames_.size() == 0) { + edm::Handle genLumiInfoHandle; + iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); + + weightNames_ = genLumiInfoHandle->weightNames(); + weightHelper_.parseWeightGroupsFromNames(weightNames_); + } + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + iLumi.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(GenWeightProductProducer); - - diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 30ee91b0e2615..c36598cc3785b 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -25,12 +25,11 @@ #include "FWCore/ServiceRegistry/interface/Service.h" -class LHEWeightProductProducer : public edm::one::EDProducer { +class LHEWeightProductProducer : public edm::one::EDProducer { public: explicit LHEWeightProductProducer(const edm::ParameterSet& iConfig); ~LHEWeightProductProducer() override; - + private: gen::LHEWeightHelper weightHelper_; std::string lheLabel_; @@ -43,32 +42,25 @@ class LHEWeightProductProducer : public edm::one::EDProducer("lheSourceLabel")), - lheRunInfoToken_(consumes(lheLabel_)), - lheEventToken_(consumes(lheLabel_)), - lheWeightInfoToken_(consumes(lheLabel_)) -{ +LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iConfig) + : lheLabel_(iConfig.getParameter("lheSourceLabel")), + lheRunInfoToken_(consumes(lheLabel_)), + lheEventToken_(consumes(lheLabel_)), + lheWeightInfoToken_(consumes(lheLabel_)) { produces(); produces(); } - -LHEWeightProductProducer::~LHEWeightProductProducer() -{ -} - +LHEWeightProductProducer::~LHEWeightProductProducer() {} // ------------ method called to produce the data ------------ -void -LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { +void LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { if (foundWeightProduct_) - return; - + return; + edm::Handle lheEventInfo; iEvent.getByToken(lheEventToken_, lheEventInfo); // Read weights from LHEEventProduct @@ -76,42 +68,38 @@ LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe iEvent.put(std::move(weightProduct)); } -void -LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { - edm::Handle lheRunInfoHandle; - run.getByLabel(lheLabel_, lheRunInfoHandle); - - typedef std::vector::const_iterator header_cit; - LHERunInfoProduct::Header headerWeightInfo; - for (header_cit iter=lheRunInfoHandle->headers_begin(); iter!=lheRunInfoHandle->headers_end(); iter++) { - if (iter->tag() == "initrwgt") { - headerWeightInfo = *iter; - break; - } +void LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { + edm::Handle lheRunInfoHandle; + run.getByLabel(lheLabel_, lheRunInfoHandle); + + typedef std::vector::const_iterator header_cit; + LHERunInfoProduct::Header headerWeightInfo; + for (header_cit iter = lheRunInfoHandle->headers_begin(); iter != lheRunInfoHandle->headers_end(); iter++) { + if (iter->tag() == "initrwgt") { + headerWeightInfo = *iter; + break; } + } - weightHelper_.setHeaderLines(headerWeightInfo.lines()); + weightHelper_.setHeaderLines(headerWeightInfo.lines()); } -void -LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const& es) { } - -void -LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { - edm::Handle lheWeightInfoHandle; - lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundWeightProduct_ = true; - return; - } - weightHelper_.parseWeights(); - - auto weightInfoProduct = std::make_unique(); - for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); - } - lumi.put(std::move(weightInfoProduct)); +void LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const& es) {} + +void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { + edm::Handle lheWeightInfoHandle; + lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundWeightProduct_ = true; + return; + } + weightHelper_.parseWeights(); + + auto weightInfoProduct = std::make_unique(); + for (auto& weightGroup : weightHelper_.weightGroups()) { + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + } + lumi.put(std::move(weightInfoProduct)); } DEFINE_FWK_MODULE(LHEWeightProductProducer); - diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 74bad0d66781a..09373d83c4fd9 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -4,32 +4,28 @@ using namespace tinyxml2; namespace gen { - GenWeightHelper::GenWeightHelper() { - } - - void - GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { - int index = 0; - - if (weightNames.size() <= 1) - return; + GenWeightHelper::GenWeightHelper() {} - for (std::string weightName : weightNames) { - if(weightName.find("LHE") != std::string::npos) { - // Parse as usual, this is the SUSY workflow - // std::vector info; - // boost::split(info, weightName, boost::is_any_of(",")); - weightGroups_.push_back(new gen::UnknownWeightGroupInfo("inGen")); - } - // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights - else if (weightGroups_.size() == 0) { - weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); - } - auto& group = weightGroups_.back(); - // No IDs for Gen weights - group.addContainedId(index++, "", weightName); - } - } -} + void GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { + int index = 0; + if (weightNames.size() <= 1) + return; + for (std::string weightName : weightNames) { + if (weightName.find("LHE") != std::string::npos) { + // Parse as usual, this is the SUSY workflow + // std::vector info; + // boost::split(info, weightName, boost::is_any_of(",")); + weightGroups_.push_back(new gen::UnknownWeightGroupInfo("inGen")); + } + // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights + else if (weightGroups_.size() == 0) { + weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); + } + auto& group = weightGroups_.back(); + // No IDs for Gen weights + group.addContainedId(index++, "", weightName); + } + } +} // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 2ef6e5b628ecc..c365cfe19df16 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -1,75 +1,174 @@ #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include +#include #include using namespace tinyxml2; namespace gen { - void LHEWeightHelper::setHeaderLines(std::vector headerLines) { - headerLines_ = headerLines; + void LHEWeightHelper::setHeaderLines(std::vector headerLines) { headerLines_ = headerLines; } + + void LHEWeightHelper::parseWeights() { + parsedWeights_.clear(); + + tinyxml2::XMLDocument xmlDoc; + std::string fullHeader = boost::algorithm::join(headerLines_, ""); + + int xmlError = xmlDoc.Parse(fullHeader.c_str()); + // in case of > instead of < + if (xmlError != 0) { + boost::replace_all(fullHeader, "<", "<"); + boost::replace_all(fullHeader, ">", ">"); + xmlError = xmlDoc.Parse(fullHeader.c_str()); + } + // error persists (how to handle error?) + if (xmlError != 0) { + std::cerr << "Error in lhe xml file" << std::endl; + xmlDoc.PrintError(); + exit(1); } - void LHEWeightHelper::parseWeights() { - parsedWeights_.clear(); - tinyxml2::XMLDocument xmlDoc; - xmlDoc.Parse(("" + boost::algorithm::join(headerLines_, "") + "").c_str()); - tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + std::vector nameAlts_ = {"name", "type"}; - size_t weightIndex = 0; - for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { - std::string groupName = ""; - if (strcmp(e->Name(), "weight") == 0) { - // we are here if there is a weight that does not belong to any group - std::string text = ""; - if (e->GetText()) - text = e->GetText(); - parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text}); + size_t weightIndex = 0; + //for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { + for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { + std::string groupName = ""; + if (strcmp(e->Name(), "weight") == 0) { + // we are here if there is a weight that does not belong to any group + std::string text = ""; + if (e->GetText()) { + text = e->GetText(); } - if (strcmp(e->Name(), "weightgroup") == 0) { - groupName = e->Attribute("name"); - for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; - inner = inner->NextSiblingElement("weight")) { - // we are here if there is a weight in a weightgroup - std::string text = ""; - if (inner->GetText()) - text = inner->GetText(); - std::unordered_map attributes; - for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) - attributes[att->Name()] = att->Value(); - parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes}); + std::unordered_map attributes; + for (auto* att = e->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text, attributes}); + } + if (strcmp(e->Name(), "weightgroup") == 0) { + // to deal wiht files with "id" instead of "name" + for (auto nameAtt : nameAlts_) { + if (e->Attribute(nameAtt.c_str())) { + groupName = e->Attribute(nameAtt.c_str()); + break; } } + if (groupName.empty()) { + throw std::runtime_error("couldn't find groupname"); + } + for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; + inner = inner->NextSiblingElement("weight")) { + // we are here if there is a weight in a weightgroup + std::string text = ""; + if (inner->GetText()) + text = inner->GetText(); + std::unordered_map attributes; + for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes}); + } } - buildGroups(); } + buildGroups(); + } - void LHEWeightHelper::buildGroups() { - weightGroups_.clear(); - std::string currentGroupName; - for (const auto& weight : parsedWeights_) { - if (weight.groupname != currentGroupName) { - weightGroups_.push_back(*buildGroup(weight)); - } - currentGroupName = weight.groupname; - WeightGroupInfo& group = weightGroups_.back(); - group.addContainedId(weight.index, weight.id, weight.content); + bool LHEWeightHelper::isConsistent() { + int curLevel = 0; - if (group.weightType() == gen::WeightType::kScaleWeights) - updateScaleInfo(weight); - else if (group.weightType() == gen::WeightType::kPdfWeights) - updatePdfInfo(weight); + for (auto line : headerLines_) { + if (line.find("") != std::string::npos) { + curLevel--; + if (curLevel != 0) { + return false; + } + } } + return curLevel == 0; + } - std::unique_ptr LHEWeightHelper::buildGroup(const ParsedWeight& weight) { - if (isScaleWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isPdfWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isMEParamWeightGroup(weight)) - return std::make_unique(weight.groupname); + void LHEWeightHelper::swapHeaders() { + int curLevel = 0; + int open = -1; + int close = -1; + for (size_t idx = 0; idx < headerLines_.size(); idx++) { + std::string line = headerLines_[idx]; + if (line.find("") != std::string::npos) { + curLevel--; + if (curLevel != 0) { + close = idx; + } + } + if (open > -1 && close > -1) { + std::swap(headerLines_[open], headerLines_[close]); + open = -1; + close = -1; + } + } + } + + void LHEWeightHelper::buildGroups() { + weightGroups_.clear(); + std::string currentGroupName = "None"; + for (auto& weight : parsedWeights_) { + if (weight.groupname != currentGroupName) { + weightGroups_.push_back(*buildGroup(weight)); + } + currentGroupName = weight.groupname; + WeightGroupInfo& group = weightGroups_.back(); - return std::make_unique(weight.groupname); + group.addContainedId(weight.index, weight.id, weight.content); + if (group.weightType() == gen::WeightType::kScaleWeights) + updateScaleInfo(weight); + else if (group.weightType() == gen::WeightType::kPdfWeights) + updatePdfInfo(weight); } -} + + // checks + for (auto& wgt : weightGroups_) { + if (!wgt.isWellFormed()) + std::cout << "\033[1;31m"; + std::cout << std::boolalpha << wgt.name() << " (" << wgt.firstId() << "-" << wgt.lastId() + << "): " << wgt.isWellFormed() << std::endl; + if (wgt.weightType() == gen::WeightType::kScaleWeights) { + auto& wgtScale = dynamic_cast(wgt); + std::cout << wgtScale.centralIndex() << " "; + std::cout << wgtScale.muR1muF2Index() << " "; + std::cout << wgtScale.muR1muF05Index() << " "; + std::cout << wgtScale.muR2muF1Index() << " "; + std::cout << wgtScale.muR2muF2Index() << " "; + std::cout << wgtScale.muR2muF05Index() << " "; + std::cout << wgtScale.muR05muF1Index() << " "; + std::cout << wgtScale.muR05muF2Index() << " "; + std::cout << wgtScale.muR05muF05Index() << " \n"; + } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { + std::cout << wgt.description() << "\n"; + } + if (!wgt.isWellFormed()) + std::cout << "\033[0m"; + } + //splitPdfGroups(); + } + + std::unique_ptr LHEWeightHelper::buildGroup(ParsedWeight& weight) { + if (isScaleWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isMEParamWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isOrphanPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); + + return std::make_unique(weight.groupname); + } +} // namespace gen diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 92edbbf4d1e59..c11f270210859 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -2,222 +2,205 @@ #include namespace gen { - WeightHelper::WeightHelper() : - pdfSetsInfo({ - // In principle this can be parsed from $LHAPDF_DATA_PATH/pdfsets.index, - // but do we really want to do that? Can also just hardcode a subset... - // TODO: Actually we can just take this from LHAPDF - {"NNPDF31_nnlo_hessian_pdfas", 306000, kHessianUnc}, - {"NNPDF31_nnlo_as_0118", 303600, kMonteCarloUnc}, - {"NNPDF31_nlo_as_0118", 303400, kMonteCarloUnc}, - {"NNPDF31_nlo_hessian_pdfas", 305800, kHessianUnc}, - {"NNPDF31_nnlo_as_0108", 322500, kVariationSet}, - {"NNPDF31_nnlo_as_0110", 322700, kVariationSet}, - {"NNPDF31_nnlo_as_0112", 322900, kVariationSet}, - {"NNPDF31_nnlo_as_0114", 323100, kVariationSet}, - {"NNPDF31_nnlo_as_0117", 323300, kVariationSet}, - {"NNPDF31_nnlo_as_0119", 323500, kVariationSet}, - {"NNPDF31_nnlo_as_0122", 323700, kVariationSet}, - {"NNPDF31_nnlo_as_0124", 323900, kVariationSet}, - {"NNPDF31_nnlo_as_0118_nf_4_mc_hessian", 325500, kHessianUnc}, - {"NNPDF31_nlo_as_0118_nf_4", 320500, kMonteCarloUnc}, - {"NNPDF31_nnlo_as_0118_nf_4", 320900, kMonteCarloUnc}, - {"NNPDF30_nlo_nf_5_pdfas", 292200, kMonteCarloUnc}, - {"NNPDF30_nnlo_nf_5_pdfas", 292600, kMonteCarloUnc}, - {"NNPDF30_nnlo_nf_4_pdfas", 292400, kMonteCarloUnc}, - {"NNPDF30_nlo_nf_4_pdfas", 292000, kMonteCarloUnc}, - {"NNPDF30_lo_as_0130", 263000, kMonteCarloUnc}, - {"NNPDF30_lo_as_0118", 262000, kMonteCarloUnc}, - {"CT14nnlo", 13000, kHessianUnc}, - {"CT14nlo", 13100, kHessianUnc}, - {"CT14nnlo_as_0116", 13065, kVariationSet}, - {"CT14nnlo_as_0120", 13069, kVariationSet}, - {"CT14nlo_as_0116", 13163, kVariationSet}, - {"CT14nlo_as_0120", 13167, kVariationSet}, - {"CT14lo", 13200, kVariationSet}, - {"MMHT2014nlo68clas118", 25200, kHessianUnc}, - {"MMHT2014nnlo68cl", 25300, kHessianUnc}, - {"MMHT2014lo68cl", 25000, kHessianUnc}, - {"PDF4LHC15_nlo_100_pdfas", 90200, kMonteCarloUnc}, - {"PDF4LHC15_nnlo_100_pdfas", 91200, kMonteCarloUnc}, - {"PDF4LHC15_nlo_30_pdfas", 90400, kMonteCarloUnc}, - {"PDF4LHC15_nnlo_30_pdfas", 91400, kMonteCarloUnc}, - {"ABMP16als118_5_nnlo", 42780, kHessianUnc}, - {"HERAPDF20_NLO_EIG", 61130, kHessianUnc}, - {"HERAPDF20_NNLO_EIG", 61200, kHessianUnc}, - {"HERAPDF20_NLO_VAR", 61130, kHessianUnc}, - {"HERAPDF20_NNLO_VAR", 61230, kHessianUnc}, - {"CT14qed_inc_proton", 13400, kHessianUnc}, - {"LUXqed17_plus_PDF4LHC15_nnlo_100", 82200, kMonteCarloUnc}, - }) - { model_ = ""; } - - bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { - return (weight.groupname.find("scale_variation") != std::string::npos - || weight.groupname.find("Central scale variation") != std::string::npos); + WeightHelper::WeightHelper() : pdfSetsInfo(setupPdfSetsInfo()) { model_ = ""; } + + std::vector WeightHelper::setupPdfSetsInfo() { + std::vector tmpSetsInfo; + std::string lhapdf_path = std::getenv("LHAPDF_DATA_PATH"); + std::ifstream pdf_file; + pdf_file.open(lhapdf_path + "/pdfsets.index"); + int lha_set, dummy; + std::string lha_name; + while (pdf_file >> lha_set >> lha_name >> dummy) { + tmpSetsInfo.push_back({lha_name, lha_set, kUnknownUnc}); } - - bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { - const std::string& name = weight.groupname; - if (name.find("PDF_variation") != std::string::npos) - return true; - - return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), - [name] (const PdfSetInfo& setInfo) { return setInfo.name == name; }) != pdfSetsInfo.end(); + return tmpSetsInfo; + } + + bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { + return (weight.groupname.find("scale_variation") != std::string::npos || + weight.groupname.find("Central scale variation") != std::string::npos); + } + + bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { + const std::string& name = weight.groupname; + if (name.find("PDF_variation") != std::string::npos) + return true; + + return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [name](const PdfSetInfo& setInfo) { + return setInfo.name == name; + }) != pdfSetsInfo.end(); + } + + bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { + std::string lhaidText = searchAttributes("pdf", weight); + try { + auto pairLHA = LHAPDF::lookupPDF(stoi(lhaidText)); + // require pdf set to exist and it to be the first entry (ie 0) + // possibly change this requirement + if (pairLHA.first != "" && pairLHA.second == 0) { + weight.groupname = std::string(pairLHA.first); + return true; + } + } catch (...) { } - - bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { - return (weight.groupname.find("mg_reweighting") != std::string::npos); + return false; + } + + bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { + return (weight.groupname.find("mg_reweighting") != std::string::npos); + } + + std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { + std::string attribute = searchAttributesByTag(label, weight); + return attribute.empty() ? searchAttributesByRegex(label, weight) : attribute; + attribute = searchAttributesByRegex(label, weight); + } + + std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { + auto& attributes = weight.attributes; + for (const auto& lab : attributeNames_.at(label)) { + if (attributes.find(lab) != attributes.end()) { + return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); + } } - - std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { - std::string attribute = searchAttributesByTag(label, weight); - return attribute.empty() ? searchAttributesByRegex(label, weight) : attribute; - attribute = searchAttributesByRegex(label, weight); + return ""; + } + + std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { + auto& content = weight.content; + std::smatch match; + for (const auto& lab : attributeNames_.at(label)) { + std::regex expr(lab + "\\s?=\\s?([0-9.]+(?:[eE][+-]?[0-9]+)?)"); + if (std::regex_search(content, match, expr)) { + return boost::algorithm::trim_copy(match.str(1)); + } } - - std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { - for (const auto& lab : attributeNames_.at(label)) { - auto& attributes = weight.attributes; - if (attributes.find(lab) != attributes.end()) { - return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); - } - } - return ""; + return ""; + } + + void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { + auto& group = weightGroups_.back(); + auto& scaleGroup = dynamic_cast(group); + std::string muRText = searchAttributes("mur", weight); + std::string muFText = searchAttributes("muf", weight); + if (muRText.empty() || muFText.empty()) { + scaleGroup.setIsWellFormed(false); + return; } - - std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { - for (const auto& lab : attributeNames_.at(label)) { - auto& content = weight.content; - - std::regex expr(lab+"=([0-9]+)"); - std::smatch match; - if (std::regex_search(content, match, expr)) { - return boost::algorithm::trim_copy(match.str(1)); - } - } - return ""; + // currently skips events with a dynscale. May add back + //size_t dyn = -1; + if (weight.attributes.find("DYN_SCALE") != weight.attributes.end()) { + // dyn = std::stoi(boost::algorithm::trim_copy_if(weight.attributes.at("DYN_SCALE"), boost::is_any_of("\""))); + return; } - void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { - auto& group = weightGroups_.back(); - auto& scaleGroup = dynamic_cast(group); - std::string muRText = searchAttributes("mur", weight); - std::string muFText = searchAttributes("mur", weight); - if (muRText.empty() || muFText.empty()) { - scaleGroup.setIsWellFormed(false); - return; - } - - try { - float muR = std::stof(muRText); - float muF = std::stof(muFText); - scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); - } - catch(std::invalid_argument& e) { - scaleGroup.setIsWellFormed(false); - } + try { + float muR = std::stof(muRText); + float muF = std::stof(muFText); + scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); + } catch (std::invalid_argument& e) { + scaleGroup.setIsWellFormed(false); } - - void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - std::string lhaidText = searchAttributes("pdf", weight); - int lhaid = 0; - if (!lhaidText.empty()) { - try { - lhaid = std::stoi(lhaidText); - } - catch(std::invalid_argument& e) { - pdfGroup.setIsWellFormed(false); - } - - if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { - std::string description = ""; - auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), - [lhaid] (const PdfSetInfo& setInfo) { return setInfo.lhapdfId == lhaid; }); - if (pdfInfo != pdfSetsInfo.end()) { - pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); - if (pdfInfo->uncertaintyType == gen::kHessianUnc) - description += "Hessian "; - else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) - description += "Monte Carlo "; - description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; - description += " with LHAID = " + std::to_string(lhaid); - description += "; "; - } - //else - // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); - pdfGroup.addLhapdfId(lhaid, weight.index); - pdfGroup.appendDescription(description); - } + } + + void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); + std::string lhaidText = searchAttributes("pdf", weight); + + int lhaid = 0; + if (!lhaidText.empty()) { + try { + lhaid = std::stoi(lhaidText); + } catch (std::invalid_argument& e) { + pdfGroup.setIsWellFormed(false); + } + + if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { + std::string description = ""; + auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [lhaid](const PdfSetInfo& setInfo) { + return setInfo.lhapdfId == lhaid; + }); + if (pdfInfo != pdfSetsInfo.end()) { + pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); + if (pdfInfo->uncertaintyType == gen::kHessianUnc) + description += "Hessian "; + else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) + description += "Monte Carlo "; + description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; + description += " with LHAID = " + std::to_string(lhaid); + description += "; "; } - else - pdfGroup.setIsWellFormed(false); + //else + // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); + pdfGroup.addLhapdfId(lhaid, weight.index); + pdfGroup.appendDescription(description); + } + } else + pdfGroup.setIsWellFormed(false); + } + + // TODO: Could probably recycle this code better + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + for (unsigned int i = 0; i < weights.size(); i++) { + addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); } - - // TODO: Could probably recycle this code better - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { - auto weightProduct = std::make_unique(w0); - weightProduct->setNumWeightSets(weightGroups_.size()); - int weightGroupIndex = 0; - for (unsigned int i = 0; i < weights.size(); i++) { - addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); - } - return std::move(weightProduct); - } - - void WeightHelper::splitPdfGroups() { - // std::vector groupsToSplit; - // for (auto& group: weightGroups_) { - // if (group.weightType() == gen::WeightType::kPdfWeights) { - // gen::PdfWeightGroupInfo& = dynamic_cast(group); - // if (group.containsMultipleSets()) - // groupsToSplit.push_back(group); - // } - // } - } - - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { - auto weightProduct = std::make_unique(w0); - weightProduct->setNumWeightSets(weightGroups_.size()); - int weightGroupIndex = 0; - int i = 0; - for (const auto& weight : weights) { - weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i++, weightGroupIndex); - } - return std::move(weightProduct); + return std::move(weightProduct); + } + + void WeightHelper::splitPdfGroups() { + // std::vector groupsToSplit; + // for (auto& group: weightGroups_) { + // if (group.weightType() == gen::WeightType::kPdfWeights) { + // gen::PdfWeightGroupInfo& = dynamic_cast(group); + // if (group.containsMultipleSets()) + // groupsToSplit.push_back(group); + // } + // } + } + + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + int i = 0; + for (const auto& weight : weights) { + weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i++, weightGroupIndex); } - - int WeightHelper::addWeightToProduct(std::unique_ptr& product, - double weight, std::string name, int weightNum, int groupIndex) { - groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); - auto group = weightGroups_[groupIndex]; - int entry = group.weightVectorEntry(name, weightNum); - product->addWeight(weight, groupIndex, entry); - return groupIndex; + return std::move(weightProduct); + } + + int WeightHelper::addWeightToProduct( + std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex) { + groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); + auto group = weightGroups_[groupIndex]; + int entry = group.weightVectorEntry(name, weightNum); + product->addWeight(weight, groupIndex, entry); + return groupIndex; + } + + int WeightHelper::findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { + // Start search at previous index, under expectation of ordered weights + previousGroupIndex = previousGroupIndex >= 0 ? previousGroupIndex : 0; + for (int index = previousGroupIndex; index < std::min(index + 1, static_cast(weightGroups_.size())); index++) { + const gen::WeightGroupInfo& weightGroup = weightGroups_[index]; + if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { + return static_cast(index); + } } - int WeightHelper::findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex) { - // Start search at previous index, under expectation of ordered weights - previousGroupIndex = previousGroupIndex >=0 ? previousGroupIndex : 0; - for (int index = previousGroupIndex; - index < std::min(index+1, static_cast(weightGroups_.size())); index++) { - const gen::WeightGroupInfo& weightGroup = weightGroups_[index]; - if (weightGroup.indexInRange(weightIndex) && weightGroup.containsWeight(wgtId, weightIndex)) { - return static_cast(index); - } - } - - // Fall back to unordered search - int counter = 0; - for (auto weightGroup : weightGroups_) { - if (weightGroup.containsWeight(wgtId, weightIndex)) - return counter; - counter++; - } - // Needs to be properly handled - throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) - + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); + // Fall back to unordered search + int counter = 0; + for (auto weightGroup : weightGroups_) { + if (weightGroup.containsWeight(wgtId, weightIndex)) + return counter; + counter++; } -} - + // Needs to be properly handled + throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); + } +} // namespace gen diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 4d9239f9d1728..535565cb9a9fb 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -66,9 +66,8 @@ Description: [one line class summary] // class declaration // -class ExternalLHEProducer : public edm::one::EDProducer { +class ExternalLHEProducer + : public edm::one::EDProducer { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); ~ExternalLHEProducer() override; @@ -102,14 +101,14 @@ class ExternalLHEProducer : public edm::one::EDProducer> nPartonMapping_{}; - std::unique_ptr reader_; + std::unique_ptr reader_; gen::LHEWeightHelper weightHelper_; - std::shared_ptr runInfoLast; - std::shared_ptr runInfo; - std::shared_ptr partonLevel; - boost::ptr_deque runInfoProducts; - bool wasMerged; - + std::shared_ptr runInfoLast; + std::shared_ptr runInfo; + std::shared_ptr partonLevel; + boost::ptr_deque runInfoProducts; + bool wasMerged; + class FileCloseSentry : private boost::noncopyable { public: explicit FileCloseSentry(int fd) : fd_(fd){}; @@ -191,12 +190,10 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe } std::for_each(partonLevel->weights().begin(), partonLevel->weights().end(), - boost::bind(&LHEEventProduct::addWeight, - product.get(), _1)); + boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); // Should also zero out the weights in the GenInfoProduct - auto weightProduct = weightHelper_.weightProduct(partonLevel->weights(), - partonLevel->originalXWGTUP()); + auto weightProduct = weightHelper_.weightProduct(partonLevel->weights(), partonLevel->originalXWGTUP()); iEvent.put(std::move(weightProduct)); product->setScales(partonLevel->scales()); @@ -263,31 +260,28 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe } // ------------ method called when starting to processes a run ------------ -void -ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) -{ - - // pass the number of events as previous to last argument - std::ostringstream eventStream; - eventStream << nEvents_; - // args_.push_back(eventStream.str()); - args_.insert(args_.begin() + 1, eventStream.str()); - - // pass the random number generator seed as last argument - - edm::Service rng; - - if ( ! rng.isAvailable()) { - throw cms::Exception("Configuration") - << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" - "which is not present in the configuration file. You must add the service\n" - "in the configuration file if you want to run ExternalLHEProducer"; - } - std::ostringstream randomStream; - randomStream << rng->mySeed(); - args_.insert(args_.begin() + 2, randomStream.str()); +void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { + // pass the number of events as previous to last argument + std::ostringstream eventStream; + eventStream << nEvents_; + // args_.push_back(eventStream.str()); + args_.insert(args_.begin() + 1, eventStream.str()); + + // pass the random number generator seed as last argument + + edm::Service rng; + + if (!rng.isAvailable()) { + throw cms::Exception("Configuration") + << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" + "which is not present in the configuration file. You must add the service\n" + "in the configuration file if you want to run ExternalLHEProducer"; + } + std::ostringstream randomStream; + randomStream << rng->mySeed(); + args_.insert(args_.begin() + 2, randomStream.str()); - args_.insert(args_.begin() + 3, std::to_string(nThreads_)); + args_.insert(args_.begin() + 3, std::to_string(nThreads_)); for (unsigned int iArg = 0; iArg < args_.size(); iArg++) { LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; @@ -310,14 +304,14 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) p->fillCompressedContent(instream, 0.25 * insize); instream.close(); } - run.put(std::move(p), "LHEScriptOutput"); + run.put(std::move(p), "LHEScriptOutput"); - // LHE C++ classes translation - // (read back uncompressed file from disk in streaming mode again to save memory) + // LHE C++ classes translation + // (read back uncompressed file from disk in streaming mode again to save memory) - std::vector infiles(1, outputFile_); - unsigned int skip = 0; - reader_ = std::make_unique(infiles, skip); + std::vector infiles(1, outputFile_); + unsigned int skip = 0; + reader_ = std::make_unique(infiles, skip); nextEvent(); if (runInfoLast) { @@ -339,34 +333,31 @@ ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) runInfo.reset(); } - - nextEvent(); - if (runInfoLast) { - runInfo = runInfoLast; - - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, - product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, - product.get(), _1)); - - // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); - wasMerged = false; - - run.put(std::move(product)); - - weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); + + nextEvent(); + if (runInfoLast) { + runInfo = runInfoLast; + + std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); + std::for_each(runInfo->getHeaders().begin(), + runInfo->getHeaders().end(), + boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); + std::for_each(runInfo->getComments().begin(), + runInfo->getComments().end(), + boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); + + // keep a copy around in case of merging + runInfoProducts.push_back(new LHERunInfoProduct(*product)); + wasMerged = false; + + run.put(std::move(product)); + + weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); weightHelper_.parseWeights(); - - runInfo.reset(); - } -} + runInfo.reset(); + } +} // ------------ method called when ending the processing of a run ------------ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { @@ -377,23 +368,24 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es nextEvent(); if (partonLevel) { - throw edm::Exception(edm::errors::EventGenerationFailure) << "Error in ExternalLHEProducer::endRunProduce(). " - << "Event loop is over, but there are still lhe events to process." - << "This could happen if lhe file contains more events than requested. This is never expected to happen."; - } - - reader_.reset(); + throw edm::Exception(edm::errors::EventGenerationFailure) + << "Error in ExternalLHEProducer::endRunProduce(). " + << "Event loop is over, but there are still lhe events to process." + << "This could happen if lhe file contains more events than requested. This is never expected to happen."; + } + + reader_.reset(); if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ")."; - } + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } } -void -ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { +void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } lumi.put(std::move(weightInfoProduct)); } @@ -524,7 +516,6 @@ void ExternalLHEProducer::executeScript() { } } - // ------------ Read the output script ------------ #define BUFSIZE 4096 std::unique_ptr ExternalLHEProducer::readOutput() { diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index e21adb04635e5..ab0451c6c0a4c 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -23,7 +23,6 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" @@ -33,12 +32,13 @@ using namespace lhef; -LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDescription& desc) - : ProducerSourceFromFiles(params, desc, false), - reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_( - edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), - phid_() { +LHESource::LHESource(const edm::ParameterSet ¶ms, + const edm::InputSourceDescription &desc) : + ProducerSourceFromFiles(params, desc, false), + reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), + lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), + phid_() +{ nextEvent(); lheProvenanceHelper_.lheAugment(nullptr); // Initialize metadata, and save the process history ID for use every event. @@ -49,11 +49,17 @@ LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDesc //produces(); } -LHESource::~LHESource() {} +LHESource::~LHESource() +{ +} -void LHESource::endJob() { reader_.reset(); } +void LHESource::endJob() +{ + reader_.reset(); +} -void LHESource::nextEvent() { +void LHESource::nextEvent() +{ if (partonLevel_) { return; } @@ -62,7 +68,7 @@ void LHESource::nextEvent() { do { newFileOpened = false; partonLevel_ = reader_->next(&newFileOpened); - if (newFileOpened) { + if(newFileOpened) { incrementFileIndex(); } } while (newFileOpened && !partonLevel_); @@ -74,7 +80,8 @@ void LHESource::nextEvent() { auto runInfoThis = partonLevel_->getRunInfo(); if (runInfoThis != runInfoLast_) { runInfoLast_ = runInfoThis; - std::unique_ptr product(new LHERunInfoProduct(*runInfoThis->getHEPRUP())); + std::unique_ptr product( + new LHERunInfoProduct(*runInfoThis->getHEPRUP())); fillRunInfoProduct(*runInfoThis, *product); if (runInfoProductLast_) { @@ -92,24 +99,27 @@ void LHESource::nextEvent() { } } -void LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { - for (auto const& h : iInfo.getHeaders()) { +void +LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { + for(auto const& h: iInfo.getHeaders()) { oProduct.addHeader(h); } - for (auto const& c : iInfo.getComments()) { + for(auto const& c: iInfo.getComments()) { oProduct.addComment(c); } } -void LHESource::readRun_(edm::RunPrincipal& runPrincipal) { + +void +LHESource::readRun_(edm::RunPrincipal& runPrincipal) { runAuxiliary()->setProcessHistoryID(phid_); runPrincipal.fillRunPrincipal(processHistoryRegistryForUpdate()); putRunInfoProduct(runPrincipal); - putWeightInfoProduct(runPrincipal); } -void LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { +void +LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { luminosityBlockAuxiliary()->setProcessHistoryID(phid_); lumiPrincipal.fillLuminosityBlockPrincipal( processHistoryRegistry().getMapped(lumiPrincipal.aux().processHistoryID())); @@ -123,26 +133,6 @@ void LHESource::putRunInfoProduct(edm::RunPrincipal& iRunPrincipal) { } } -void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { - if (runInfoProductLast_) { - auto product = std::make_unique(); - gen::WeightGroupInfo scaleInfo( - "" - ); - scaleInfo.setWeightType(gen::WeightType::kScaleWeights); - - gen::WeightGroupInfo cenPdfInfo( - "" - ); - cenPdfInfo.setWeightType(gen::WeightType::kPdfWeights); - - product->addWeightGroupInfo(&scaleInfo); - product->addWeightGroupInfo(&cenPdfInfo); - std::unique_ptr rdp(new edm::Wrapper(std::move(product))); - //iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); - } -} - bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventAuxiliary::ExperimentType&) { nextEvent(); @@ -157,38 +147,42 @@ bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventA return true; } -void LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { +void +LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { assert(eventCached() || processingMode() != RunsLumisAndEvents); edm::EventAuxiliary aux(eventID(), processGUID(), edm::Timestamp(presentTime()), false); aux.setProcessHistoryID(phid_); eventPrincipal.fillEventPrincipal(aux, processHistoryRegistry().getMapped(aux.processHistoryID())); std::unique_ptr product( - new LHEEventProduct(*partonLevel_->getHEPEUP(), partonLevel_->originalXWGTUP())); + new LHEEventProduct(*partonLevel_->getHEPEUP(), + partonLevel_->originalXWGTUP()) + ); if (partonLevel_->getPDF()) { product->setPDF(*partonLevel_->getPDF()); } std::for_each(partonLevel_->weights().begin(), partonLevel_->weights().end(), - boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); + boost::bind(&LHEEventProduct::addWeight, + product.get(), _1)); product->setScales(partonLevel_->scales()); product->setNpLO(partonLevel_->npLO()); product->setNpNLO(partonLevel_->npNLO()); std::for_each(partonLevel_->getComments().begin(), partonLevel_->getComments().end(), - boost::bind(&LHEEventProduct::addComment, product.get(), _1)); + boost::bind(&LHEEventProduct::addComment, + product.get(), _1)); std::unique_ptr edp(new edm::Wrapper(std::move(product))); - eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, - std::move(edp), - lheProvenanceHelper_.eventProductProvenance_); + eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, std::move(edp), lheProvenanceHelper_.eventProductProvenance_); partonLevel_.reset(); resetEventCached(); } -std::shared_ptr LHESource::readRunAuxiliary_() { +std::shared_ptr +LHESource::readRunAuxiliary_() { edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewRun(); auto aux = std::make_shared(eventID().run(), ts, edm::Timestamp::invalidTimestamp()); @@ -196,18 +190,19 @@ std::shared_ptr LHESource::readRunAuxiliary_() { return aux; } -std::shared_ptr LHESource::readLuminosityBlockAuxiliary_() { - if (processingMode() == Runs) - return std::shared_ptr(); +std::shared_ptr +LHESource::readLuminosityBlockAuxiliary_() { + if (processingMode() == Runs) return std::shared_ptr(); edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewLumi(); - auto aux = std::make_shared( - eventID().run(), eventID().luminosityBlock(), ts, edm::Timestamp::invalidTimestamp()); + auto aux = std::make_shared(eventID().run(), eventID().luminosityBlock(), + ts, edm::Timestamp::invalidTimestamp()); aux->setProcessHistoryID(phid_); return aux; } -void LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +void +LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.setComment("A source which reads LHE files."); edm::ProducerSourceFromFiles::fillDescription(desc); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 5587cbd3d31e6..9f6bd55db7bca 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -15,7 +15,6 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "FWCore/Utilities/interface/transform.h" - #include #include #include @@ -27,30 +26,33 @@ namespace { class LHEWeightsTableProducer : public edm::global::EDProducer> { public: - LHEWeightsTableProducer(edm::ParameterSet const& params) : - lheWeightTokens_(edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - lheWeightInfoTokens_(edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), + LHEWeightsTableProducer(edm::ParameterSet const& params) + : lheWeightTokens_( + edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform( + params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), genWeightToken_(consumes(params.getParameter("genWeights"))), - genWeightInfoToken_(consumes(params.getParameter("genWeights"))), + genWeightInfoToken_( + consumes(params.getParameter("genWeights"))), weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), - [](auto& c) { return gen::WeightType(c.at(0)); } )), + [](auto& c) { return gen::WeightType(c.at(0)); })), maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), pdfIds_(params.getUntrackedParameter>("pdfIds", {})), lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { if (weightgroups_.size() != maxGroupsPerType_.size()) - throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); + throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); produces>(); } void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { edm::Handle lheWeightHandle; for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - break; - } + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + break; + } } const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); @@ -70,61 +72,60 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>& lheWeightTables, const char* typeName, - const WeightGroupDataContainer& weightInfos, WeightsContainer& allWeights) const { + void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights) const { size_t typeCount = 0; gen::WeightType previousType = gen::WeightType::kUnknownWeights; for (const auto& groupInfo : weightInfos) { - std::string entryName = typeName; - gen::WeightType weightType = groupInfo.group->weightType(); - if (previousType != weightType) - typeCount = 0; - - std::string name = weightTypeNames_.at(weightType); - std::string label = groupInfo.group->name(); - - auto& weights = allWeights.at(groupInfo.index); - label.append("; "); - if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() - && groupInfo.group->nIdsContained() < 10) { - weights = orderedScaleWeights(weights, - dynamic_cast(groupInfo.group)); - label.append("[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); - } - else - label.append(groupInfo.group->description()); - - entryName.append(name); - entryName.append("Weight"); - if (typeCount > 0) { - entryName.append("AltSet"); - entryName.append(std::to_string(typeCount)); - } - - lheWeightTables->emplace_back(weights.size(), entryName, false); - lheWeightTables->back().addColumn( - "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - typeCount++; - previousType = weightType; + std::string entryName = typeName; + gen::WeightType weightType = groupInfo.group->weightType(); + if (previousType != weightType) + typeCount = 0; + + std::string name = weightTypeNames_.at(weightType); + std::string label = groupInfo.group->name(); + + auto& weights = allWeights.at(groupInfo.index); + label.append("; "); + if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && + groupInfo.group->nIdsContained() < 10) { + weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); + label.append( + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else + label.append(groupInfo.group->description()); + + entryName.append(name); + entryName.append("Weight"); + if (typeCount > 0) { + entryName.append("AltSet"); + entryName.append(std::to_string(typeCount)); + } + + lheWeightTables->emplace_back(weights.size(), entryName, false); + lheWeightTables->back().addColumn( + "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + + typeCount++; + previousType = weightType; } } - std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, - edm::EventSetup const&) const override { - + edm::EventSetup const&) const override { // Set equal to the max number of groups // subtrack 1 for each weight group you find edm::Handle lheWeightInfoHandle; for (auto& token : lheWeightInfoTokens_) { - iLumi.getByToken(token, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - break; - } + iLumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + break; + } } edm::Handle genWeightInfoHandle; @@ -132,40 +133,39 @@ class LHEWeightsTableProducer : public edm::global::EDProducer storePerType; for (size_t i = 0; i < weightgroups_.size(); i++) - storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); - auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); + auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); } return std::make_shared(weightsToStore); } - WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, - gen::WeightType weightType, int& maxStore) const { - WeightGroupDataContainer group; - if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); - } - else - group = weightsHandle->weightGroupsAndIndicesByType(weightType); - - if (maxStore < 0 || static_cast(group.size()) <= maxStore) { - // Modify size in case one type of weight is present in multiple products - maxStore -= group.size(); - return group; - } - return std::vector(group.begin(), group.begin()+maxStore); + WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const { + WeightGroupDataContainer group; + if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { + group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + } else + group = weightsHandle->weightGroupsAndIndicesByType(weightType); + + if (maxStore < 0 || static_cast(group.size()) <= maxStore) { + // Modify size in case one type of weight is present in multiple products + maxStore -= group.size(); + return group; + } + return std::vector(group.begin(), group.begin() + maxStore); } - - std::vector orderedScaleWeights(const std::vector& scaleWeights, const gen::ScaleWeightGroupInfo* scaleGroup) const { - + std::vector orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo* scaleGroup) const { std::vector weights; weights.push_back(scaleWeights.at(scaleGroup->muR05muF05Index())); weights.push_back(scaleWeights.at(scaleGroup->muR05muF1Index())); @@ -214,7 +214,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducer weightGroupIndices_; int lheWeightPrecision_; - enum {inLHE, inGen}; + enum { inLHE, inGen }; }; #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(LHEWeightsTableProducer); diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index f990ed1931ea5..550a886df1757 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -18,34 +18,31 @@ namespace gen { size_t index; const gen::WeightGroupInfo* group; }; -} // namespace +} // namespace gen class GenWeightInfoProduct { - public: - GenWeightInfoProduct() {} - GenWeightInfoProduct(edm::OwnVector& weightGroups); - GenWeightInfoProduct(const GenWeightInfoProduct& other); - GenWeightInfoProduct(GenWeightInfoProduct&& other); - ~GenWeightInfoProduct() {} - GenWeightInfoProduct& operator=(const GenWeightInfoProduct &other); - GenWeightInfoProduct& operator=(GenWeightInfoProduct &&other); - - const edm::OwnVector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; - std::vector weightGroupsByType(gen::WeightType type) const; - std::vector weightGroupIndicesByType(gen::WeightType type) const; - std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; - std::optional pdfGroupWithIndexByLHAID(int lhaid) const; - std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; - void addWeightGroupInfo(gen::WeightGroupInfo* info); - const int numberOfGroups() const { return weightGroupsInfo_.size(); } - - private: - edm::OwnVector weightGroupsInfo_; - - +public: + GenWeightInfoProduct() {} + GenWeightInfoProduct(edm::OwnVector& weightGroups); + GenWeightInfoProduct(const GenWeightInfoProduct& other); + GenWeightInfoProduct(GenWeightInfoProduct&& other); + ~GenWeightInfoProduct() {} + GenWeightInfoProduct& operator=(const GenWeightInfoProduct& other); + GenWeightInfoProduct& operator=(GenWeightInfoProduct&& other); + + const edm::OwnVector& allWeightGroupsInfo() const; + const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; + const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; + std::vector weightGroupsByType(gen::WeightType type) const; + std::vector weightGroupIndicesByType(gen::WeightType type) const; + std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; + std::optional pdfGroupWithIndexByLHAID(int lhaid) const; + std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; + void addWeightGroupInfo(gen::WeightGroupInfo* info); + const int numberOfGroups() const { return weightGroupsInfo_.size(); } + +private: + edm::OwnVector weightGroupsInfo_; }; -#endif // GeneratorWeightInfo_LHEInterface_GenWeightInfoProduct_h - +#endif // GeneratorWeightInfo_LHEInterface_GenWeightInfoProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index 4675e17c6c80d..872ae29b65d9f 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -12,36 +12,41 @@ typedef std::vector> WeightsContainer; class GenWeightProduct { - public: - GenWeightProduct() { weightsVector_ = {}; centralWeight_ = 1.; } - GenWeightProduct(double w0) { weightsVector_ = {}; centralWeight_ = w0; } - GenWeightProduct& operator=(GenWeightProduct&& other) { - weightsVector_ = std::move(other.weightsVector_); - centralWeight_ = other.centralWeight_; - return *this; - } - ~GenWeightProduct() {} - - void setNumWeightSets(int num) { weightsVector_.resize(num); } - void addWeightSet() { weightsVector_.push_back({}); } - void addWeight(double weight, int setEntry, int weightNum) { - if (weightsVector_.size() == 0 && setEntry == 0) - addWeightSet(); - if (static_cast(weightsVector_.size()) <= setEntry) - throw std::domain_error("Out of range weight"); - auto& weights = weightsVector_.at(setEntry); - if (static_cast(weights.size()) <= weightNum) { - weights.resize(weightNum+1); - } - weights[weightNum] = weight/centralWeight_; - } - const WeightsContainer& weights() const { return weightsVector_; } - double centralWeight() const { return centralWeight_; } - - private: - WeightsContainer weightsVector_; - double centralWeight_; +public: + GenWeightProduct() { + weightsVector_ = {}; + centralWeight_ = 1.; + } + GenWeightProduct(double w0) { + weightsVector_ = {}; + centralWeight_ = w0; + } + GenWeightProduct& operator=(GenWeightProduct&& other) { + weightsVector_ = std::move(other.weightsVector_); + centralWeight_ = other.centralWeight_; + return *this; + } + ~GenWeightProduct() {} + + void setNumWeightSets(int num) { weightsVector_.resize(num); } + void addWeightSet() { weightsVector_.push_back({}); } + void addWeight(double weight, int setEntry, int weightNum) { + if (weightsVector_.size() == 0 && setEntry == 0) + addWeightSet(); + if (static_cast(weightsVector_.size()) <= setEntry) + throw std::domain_error("Out of range weight"); + auto& weights = weightsVector_.at(setEntry); + if (static_cast(weights.size()) <= weightNum) { + weights.resize(weightNum + 1); + } + weights[weightNum] = weight / centralWeight_; + } + const WeightsContainer& weights() const { return weightsVector_; } + double centralWeight() const { return centralWeight_; } + +private: + WeightsContainer weightsVector_; + double centralWeight_; }; -#endif // GeneratorEvent_LHEInterface_GenWeightProduct_h - +#endif // GeneratorEvent_LHEInterface_GenWeightProduct_h diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 3b2dd09d37609..371debb0fa14a 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -4,20 +4,17 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class MEParamWeightGroupInfo : public WeightGroupInfo { - public: - MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kMEParamWeights; } - MEParamWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = WeightType::kMEParamWeights; } - MEParamWeightGroupInfo(std::string header) : - MEParamWeightGroupInfo(header, header) {} - virtual ~MEParamWeightGroupInfo() override {} - void copy(const MEParamWeightGroupInfo &other); - virtual MEParamWeightGroupInfo* clone() const override; - }; -} - -#endif // SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h - - + class MEParamWeightGroupInfo : public WeightGroupInfo { + public: + MEParamWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kMEParamWeights; } + MEParamWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kMEParamWeights; + } + MEParamWeightGroupInfo(std::string header) : MEParamWeightGroupInfo(header, header) {} + virtual ~MEParamWeightGroupInfo() override {} + void copy(const MEParamWeightGroupInfo& other); + virtual MEParamWeightGroupInfo* clone() const override; + }; +} // namespace gen +#endif // SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index ea6c1b1fba683..2634a6e327c3e 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -4,26 +4,20 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class PartonShowerWeightGroupInfo : public WeightGroupInfo { - public: - PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} - PartonShowerWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { - weightType_ = WeightType::kPartonShowerWeights; - } - PartonShowerWeightGroupInfo(std::string header) : - PartonShowerWeightGroupInfo(header, header) { } - PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { - copy(other); - } - virtual ~PartonShowerWeightGroupInfo() override {} - void copy(const PartonShowerWeightGroupInfo &other); - virtual PartonShowerWeightGroupInfo* clone() const override; + class PartonShowerWeightGroupInfo : public WeightGroupInfo { + public: + PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} + PartonShowerWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kPartonShowerWeights; + } + PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} + PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } + virtual ~PartonShowerWeightGroupInfo() override {} + void copy(const PartonShowerWeightGroupInfo &other); + virtual PartonShowerWeightGroupInfo *clone() const override; - // Is a variation of the functional form of the dynamic scale - }; -} + // Is a variation of the functional form of the dynamic scale + }; +} // namespace gen #endif - - diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 8c4cbc6514c4e..617a81f043ef5 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -7,105 +7,100 @@ #include namespace gen { - enum PdfUncertaintyType { - kHessianUnc, - kMonteCarloUnc, - kVariationSet, - kUnknownUnc, - }; + enum PdfUncertaintyType { + kHessianUnc, + kMonteCarloUnc, + kVariationSet, + kUnknownUnc, + }; - class PdfWeightGroupInfo : public WeightGroupInfo { - private: - PdfUncertaintyType uncertaintyType_; - bool hasAlphasVars_; - int alphasUpIndex_; - int alphasDownIndex_; - // Map local index to lhaid - std::unordered_map lhapdfIdsContained_; - public: - PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } - PdfWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = WeightType::kPdfWeights; } - PdfWeightGroupInfo(std::string header) : - WeightGroupInfo(header) { weightType_ = WeightType::kPdfWeights; } - PdfWeightGroupInfo(const PdfWeightGroupInfo &other) { - copy(other); - } - virtual ~PdfWeightGroupInfo() override {} - void copy(const PdfWeightGroupInfo &other); - virtual PdfWeightGroupInfo* clone() const override; + class PdfWeightGroupInfo : public WeightGroupInfo { + private: + PdfUncertaintyType uncertaintyType_; + bool hasAlphasVars_; + int alphasUpIndex_; + int alphasDownIndex_; + // Map local index to lhaid + std::unordered_map lhapdfIdsContained_; - void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } - void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } - void setAlphasUpIndex(int alphasUpIndex) { alphasUpIndex_ = alphasUpIndex; } - void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } - PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } - bool hasAlphasVariations() const { return hasAlphasVars_; } - std::vector idsContainedInPdfSet(int refLhaid) { - std::vector setIds; - int lhaid = refLhaid; - int index = indexOfLhapdfId(lhaid); - while (index <= lastId_ && parentLhapdfId(lhaid, index) == refLhaid) { - setIds.push_back(idsContained_.at(index)); - index++; - lhaid = lhapdfIdsContained_[index]; - } - return setIds; - } - bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } - int parentLhapdfId(int lhaid, int globalIndex) const { return lhaid - (globalIndex - firstId_); } - bool containsParentLhapdfId(int lhaid, int globalIndex) const { - if (indexOfLhapdfId(lhaid) != -1) - return true; - int parentid = parentLhapdfId(lhaid, globalIndex); - return indexOfLhapdfId(parentid) != -1; - } - bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } - int indexOfLhapdfId(int lhaid) const { - for (const auto& id : lhapdfIdsContained_) { - if (id.second == lhaid) - return id.first; - } - return -1; - } - int alphasUpIndex() const { return alphasUpIndex_; } - int alphasDownIndex() const { return alphasDownIndex_; } - void addLhapdfId(int lhaid, int globalIndex) { - lhapdfIdsContained_[globalIndex-firstId_] = lhaid; - } - std::vector lhapdfIdsContained() const { - std::vector lhaids; - for (const auto& id : lhapdfIdsContained_) { - lhaids.push_back(id.first); - } - return lhaids; - } - void removeIdsContained(std::vector metaInfos) { - for (auto& weight : metaInfos) { - auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); - if (info == weight) { - idsContained_.erase(idsContained_.begin()+weight.localIndex, idsContained_.begin()+weight.localIndex+1); - lhapdfIdsContained_.erase(weight.localIndex); - } - } - } - void removeIdsContainedExcept(std::vector metaInfos) { - std::vector newContainedIds; - std::unordered_map newLhapdfIds; - for (auto& weight : metaInfos) { - auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); - if (info == weight) { - newContainedIds.push_back(weight); - if (lhapdfIdsContained_.find(weight.localIndex) != lhapdfIdsContained_.end()) - newLhapdfIds[weight.localIndex] = lhapdfIdsContained_[weight.localIndex]; - } - } - idsContained_ = newContainedIds; - lhapdfIdsContained_ = newLhapdfIds; - } - }; -} + public: + PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } + PdfWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kPdfWeights; + } + PdfWeightGroupInfo(std::string header) : WeightGroupInfo(header) { weightType_ = WeightType::kPdfWeights; } + PdfWeightGroupInfo(const PdfWeightGroupInfo& other) { copy(other); } + virtual ~PdfWeightGroupInfo() override {} + void copy(const PdfWeightGroupInfo& other); + virtual PdfWeightGroupInfo* clone() const override; + void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } + void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } + void setAlphasUpIndex(int alphasUpIndex) { alphasUpIndex_ = alphasUpIndex; } + void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } + PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } + bool hasAlphasVariations() const { return hasAlphasVars_; } + std::vector idsContainedInPdfSet(int refLhaid) { + std::vector setIds; + int lhaid = refLhaid; + int index = indexOfLhapdfId(lhaid); + while (index <= lastId_ && parentLhapdfId(lhaid, index) == refLhaid) { + setIds.push_back(idsContained_.at(index)); + index++; + lhaid = lhapdfIdsContained_[index]; + } + return setIds; + } + bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } + int parentLhapdfId(int lhaid, int globalIndex) const { return lhaid - (globalIndex - firstId_); } + bool containsParentLhapdfId(int lhaid, int globalIndex) const { + if (indexOfLhapdfId(lhaid) != -1) + return true; + int parentid = parentLhapdfId(lhaid, globalIndex); + return indexOfLhapdfId(parentid) != -1; + } + bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } + int indexOfLhapdfId(int lhaid) const { + for (const auto& id : lhapdfIdsContained_) { + if (id.second == lhaid) + return id.first; + } + return -1; + } + int alphasUpIndex() const { return alphasUpIndex_; } + int alphasDownIndex() const { return alphasDownIndex_; } + void addLhapdfId(int lhaid, int globalIndex) { lhapdfIdsContained_[globalIndex - firstId_] = lhaid; } + std::vector lhapdfIdsContained() const { + std::vector lhaids; + for (const auto& id : lhapdfIdsContained_) { + lhaids.push_back(id.first); + } + return lhaids; + } + void removeIdsContained(std::vector metaInfos) { + for (auto& weight : metaInfos) { + auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); + if (info == weight) { + idsContained_.erase(idsContained_.begin() + weight.localIndex, idsContained_.begin() + weight.localIndex + 1); + lhapdfIdsContained_.erase(weight.localIndex); + } + } + } + void removeIdsContainedExcept(std::vector metaInfos) { + std::vector newContainedIds; + std::unordered_map newLhapdfIds; + for (auto& weight : metaInfos) { + auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); + if (info == weight) { + newContainedIds.push_back(weight); + if (lhapdfIdsContained_.find(weight.localIndex) != lhapdfIdsContained_.end()) + newLhapdfIds[weight.localIndex] = lhapdfIdsContained_[weight.localIndex]; + } + } + idsContained_ = newContainedIds; + lhapdfIdsContained_ = newLhapdfIds; + } + }; +} // namespace gen -#endif // SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h - +#endif // SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 71b6a6b0a987a..9c2c4a3fca9b6 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -2,64 +2,65 @@ #define SimDataFormats_GeneratorProducts_ScaleWeightGroupInfo_h #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include namespace gen { - class ScaleWeightGroupInfo : public WeightGroupInfo { - private: - bool isFunctionalFormVar_; - size_t centralIndex_; - size_t muR1muF2Index_; - size_t muR1muF05Index_; - size_t muR2muF05Index_; - size_t muR2muF1Index_; - size_t muR2muF2Index_; - size_t muR05muF05Index_; - size_t muR05muF1Index_; - size_t muR05muF2Index_; - public: - ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} - ScaleWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { - weightType_ = WeightType::kScaleWeights; - isFunctionalFormVar_ = false; - centralIndex_ = 0; - muR1muF2Index_ = 0; - muR1muF05Index_ = 0; - muR2muF05Index_ = 0; - muR2muF1Index_ = 0; - muR2muF2Index_ = 0; - muR2muF05Index_ = 0; - muR05muF05Index_ = 0; - muR05muF1Index_ = 0; - muR05muF2Index_ = 0; - } - ScaleWeightGroupInfo(std::string header) : - ScaleWeightGroupInfo(header, header) { } - ScaleWeightGroupInfo(const ScaleWeightGroupInfo &other) { - copy(other); - } - virtual ~ScaleWeightGroupInfo() override {} - void copy(const ScaleWeightGroupInfo &other); - virtual ScaleWeightGroupInfo* clone() const override; + class ScaleWeightGroupInfo : public WeightGroupInfo { + private: + bool isFunctionalFormVar_; + size_t centralIndex_; + size_t muR1muF2Index_; + size_t muR1muF05Index_; + size_t muR2muF05Index_; + size_t muR2muF1Index_; + size_t muR2muF2Index_; + size_t muR05muF05Index_; + size_t muR05muF1Index_; + size_t muR05muF2Index_; + // Dyn_scale + // bool hasDyn = false; + // Maybe have mapping of [muR##muF##index] = vector + // std::unordered_map> dynMap; - void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); - void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); - void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); + public: + ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} + ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kScaleWeights; + isFunctionalFormVar_ = false; + centralIndex_ = 0; + muR1muF2Index_ = 0; + muR1muF05Index_ = 0; + muR2muF05Index_ = 0; + muR2muF1Index_ = 0; + muR2muF2Index_ = 0; + muR2muF05Index_ = 0; + muR05muF05Index_ = 0; + muR05muF1Index_ = 0; + muR05muF2Index_ = 0; + } + ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) {} + ScaleWeightGroupInfo(const ScaleWeightGroupInfo& other) { copy(other); } + virtual ~ScaleWeightGroupInfo() override {} + void copy(const ScaleWeightGroupInfo& other); + virtual ScaleWeightGroupInfo* clone() const override; - // Is a variation of the functional form of the dynamic scale - bool isFunctionalFormVariation(); - void setIsFunctionalFormVariation(bool functionalVar) {isFunctionalFormVar_ = functionalVar; } - size_t centralIndex() const {return centralIndex_; } - size_t muR1muF2Index() const { return muR1muF2Index_; } - size_t muR1muF05Index() const { return muR1muF05Index_; } - size_t muR2muF05Index() const { return muR2muF05Index_; } - size_t muR2muF1Index() const { return muR2muF1Index_; } - size_t muR2muF2Index() const { return muR2muF2Index_; } - size_t muR05muF05Index() const { return muR05muF05Index_; } - size_t muR05muF1Index() const { return muR05muF1Index_; } - size_t muR05muF2Index() const { return muR05muF2Index_; } - }; -} + void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); + void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); + void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); -#endif + // Is a variation of the functional form of the dynamic scale + bool isFunctionalFormVariation(); + void setIsFunctionalFormVariation(bool functionalVar) { isFunctionalFormVar_ = functionalVar; } + size_t centralIndex() const { return centralIndex_; } + size_t muR1muF2Index() const { return muR1muF2Index_; } + size_t muR1muF05Index() const { return muR1muF05Index_; } + size_t muR2muF05Index() const { return muR2muF05Index_; } + size_t muR2muF1Index() const { return muR2muF1Index_; } + size_t muR2muF2Index() const { return muR2muF2Index_; } + size_t muR05muF05Index() const { return muR05muF05Index_; } + size_t muR05muF1Index() const { return muR05muF1Index_; } + size_t muR05muF2Index() const { return muR05muF2Index_; } + }; +} // namespace gen +#endif diff --git a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h index 66152d8840434..d314b9ad40d8a 100644 --- a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h @@ -4,19 +4,21 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - class UnknownWeightGroupInfo : public WeightGroupInfo { - public: - UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kUnknownWeights; } - UnknownWeightGroupInfo(std::string header, std::string name) : - WeightGroupInfo(header, name) { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false;} - UnknownWeightGroupInfo(std::string header) : - WeightGroupInfo(header) { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false;} - virtual ~UnknownWeightGroupInfo() override {} - void copy(const UnknownWeightGroupInfo &other); - virtual UnknownWeightGroupInfo* clone() const override; - }; -} - -#endif // SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h - + class UnknownWeightGroupInfo : public WeightGroupInfo { + public: + UnknownWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kUnknownWeights; } + UnknownWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + weightType_ = WeightType::kUnknownWeights; + isWellFormed_ = false; + } + UnknownWeightGroupInfo(std::string header) : WeightGroupInfo(header) { + weightType_ = WeightType::kUnknownWeights; + isWellFormed_ = false; + } + virtual ~UnknownWeightGroupInfo() override {} + void copy(const UnknownWeightGroupInfo& other); + virtual UnknownWeightGroupInfo* clone() const override; + }; +} // namespace gen +#endif // SimDataFormats_GeneratorProducts_UnknownWeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 7a611c6fb1df3..f404a87926585 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -10,90 +10,87 @@ #include namespace gen { - struct WeightMetaInfo { - size_t globalIndex; - size_t localIndex; - std::string id; - std::string label; + struct WeightMetaInfo { + size_t globalIndex; + size_t localIndex; + std::string id; + std::string label; - bool operator==(const WeightMetaInfo& other) { - return (other.globalIndex == globalIndex && - other.localIndex == localIndex && - other.id == id && - other.label == label); - } - }; + bool operator==(const WeightMetaInfo& other) { + return (other.globalIndex == globalIndex && other.localIndex == localIndex && other.id == id && + other.label == label); + } + }; - enum class WeightType : char { - kPdfWeights = 'P', - kScaleWeights = 's', - kMEParamWeights = 'm', - kPartonShowerWeights = 'p', - kUnknownWeights = 'u', - }; + enum class WeightType : char { + kPdfWeights = 'P', + kScaleWeights = 's', + kMEParamWeights = 'm', + kPartonShowerWeights = 'p', + kUnknownWeights = 'u', + }; - const std::array allWeightTypes = {{WeightType::kPdfWeights, - WeightType::kScaleWeights, WeightType::kMEParamWeights, - WeightType::kPartonShowerWeights, WeightType::kUnknownWeights, - }}; + const std::array allWeightTypes = {{ + WeightType::kPdfWeights, + WeightType::kScaleWeights, + WeightType::kMEParamWeights, + WeightType::kPartonShowerWeights, + WeightType::kUnknownWeights, + }}; - class WeightGroupInfo { - public: - WeightGroupInfo() : WeightGroupInfo("") {} - WeightGroupInfo(std::string header, std::string name): - headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(std::string header): - headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(const WeightGroupInfo &other) { - copy(other); - } - WeightGroupInfo& operator=(const WeightGroupInfo &other) { - copy(other); - return *this; - } - virtual ~WeightGroupInfo() {}; - void copy(const WeightGroupInfo &other); - virtual WeightGroupInfo* clone() const; - WeightMetaInfo weightMetaInfo(int weightEntry) const; - WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId) const; - bool containsWeight(const std::string& wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId, int weightEntry) const; - void addContainedId(int weightEntry, std::string id, std::string label); - std::vector containedIds() const; - bool indexInRange(int index) const; + class WeightGroupInfo { + public: + WeightGroupInfo() : WeightGroupInfo("") {} + WeightGroupInfo(std::string header, std::string name) + : headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} + WeightGroupInfo(std::string header) : headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} + WeightGroupInfo(const WeightGroupInfo& other) { copy(other); } + WeightGroupInfo& operator=(const WeightGroupInfo& other) { + copy(other); + return *this; + } + virtual ~WeightGroupInfo(){}; + void copy(const WeightGroupInfo& other); + virtual WeightGroupInfo* clone() const; + WeightMetaInfo weightMetaInfo(int weightEntry) const; + WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; + int weightVectorEntry(const std::string& wgtId) const; + bool containsWeight(const std::string& wgtId, int weightEntry) const; + int weightVectorEntry(const std::string& wgtId, int weightEntry) const; + void addContainedId(int weightEntry, std::string id, std::string label); + std::vector containedIds() const; + bool indexInRange(int index) const; - void setName(std::string name) { name_ = name; } - void setDescription(std::string description) { description_ = description; } - void appendDescription(std::string description) { description_ += description; } - void setHeaderEntry(std::string header) { headerEntry_ = header; } - void setWeightType(WeightType type) { weightType_ = type; } - void setFirstId(int firstId) { firstId_ = firstId; } - void setLastId(int lastId) { lastId_ = lastId; } + void setName(std::string name) { name_ = name; } + void setDescription(std::string description) { description_ = description; } + void appendDescription(std::string description) { description_ += description; } + void setHeaderEntry(std::string header) { headerEntry_ = header; } + void setWeightType(WeightType type) { weightType_ = type; } + void setFirstId(int firstId) { firstId_ = firstId; } + void setLastId(int lastId) { lastId_ = lastId; } - std::string name() const { return name_; } - std::string description() const { return description_; } - std::string headerEntry() const { return headerEntry_; } - WeightType weightType() const { return weightType_; } - std::vector idsContained() const { return idsContained_; } - size_t nIdsContained() const { return idsContained_.size(); } - int firstId() const { return firstId_; } - int lastId() const { return lastId_; } - // Store whether the group was fully parsed succesfully - void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } - bool isWellFormed() const { return isWellFormed_; } + std::string name() const { return name_; } + std::string description() const { return description_; } + std::string headerEntry() const { return headerEntry_; } + WeightType weightType() const { return weightType_; } + std::vector idsContained() const { return idsContained_; } + size_t nIdsContained() const { return idsContained_.size(); } + int firstId() const { return firstId_; } + int lastId() const { return lastId_; } + // Store whether the group was fully parsed succesfully + void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } + bool isWellFormed() const { return isWellFormed_; } - protected: - bool isWellFormed_; - std::string headerEntry_; - std::string name_; - std::string description_; - WeightType weightType_; - std::vector idsContained_; - int firstId_; - int lastId_; - }; -} - -#endif // SimDataFormats_GeneratorProducts_WeightGroupInfo_h + protected: + bool isWellFormed_; + std::string headerEntry_; + std::string name_; + std::string description_; + WeightType weightType_; + std::vector idsContained_; + int firstId_; + int lastId_; + }; +} // namespace gen +#endif // SimDataFormats_GeneratorProducts_WeightGroupInfo_h diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index e16bbebcc27da..7b53436c4c7ff 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -5,92 +5,89 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" GenWeightInfoProduct::GenWeightInfoProduct(edm::OwnVector& weightGroups) { - weightGroupsInfo_ = weightGroups; + weightGroupsInfo_ = weightGroups; } - -GenWeightInfoProduct& GenWeightInfoProduct::operator=(const GenWeightInfoProduct &other) { - weightGroupsInfo_ = other.weightGroupsInfo_; - return * this; + +GenWeightInfoProduct& GenWeightInfoProduct::operator=(const GenWeightInfoProduct& other) { + weightGroupsInfo_ = other.weightGroupsInfo_; + return *this; } -GenWeightInfoProduct& GenWeightInfoProduct::operator=(GenWeightInfoProduct &&other) { - weightGroupsInfo_ = std::move(other.weightGroupsInfo_); - return *this; +GenWeightInfoProduct& GenWeightInfoProduct::operator=(GenWeightInfoProduct&& other) { + weightGroupsInfo_ = std::move(other.weightGroupsInfo_); + return *this; } -const edm::OwnVector& GenWeightInfoProduct::allWeightGroupsInfo() const { - return weightGroupsInfo_; +const edm::OwnVector& GenWeightInfoProduct::allWeightGroupsInfo() const { + return weightGroupsInfo_; } const gen::WeightGroupInfo* GenWeightInfoProduct::containingWeightGroupInfo(int index) const { - for (const auto& weightGroup : weightGroupsInfo_) { - if (weightGroup.indexInRange(index)) - return &weightGroup; - } - throw std::domain_error("Failed to find containing weight group"); + for (const auto& weightGroup : weightGroupsInfo_) { + if (weightGroup.indexInRange(index)) + return &weightGroup; + } + throw std::domain_error("Failed to find containing weight group"); } const gen::WeightGroupInfo* GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { - if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) - throw std::range_error("Weight index out of range!"); - return &weightGroupsInfo_[weightGroupIndex]; + if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) + throw std::range_error("Weight index out of range!"); + return &weightGroupsInfo_[weightGroupIndex]; } std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { - std::vector matchingGroups; - for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { - if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); - } - return matchingGroups; + std::vector matchingGroups; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); + } + return matchingGroups; } std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { - std::vector matchingGroups; - for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { - if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back(weightGroupsInfo_[i].clone()); - } - return matchingGroups; + std::vector matchingGroups; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroups.push_back(weightGroupsInfo_[i].clone()); + } + return matchingGroups; } std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(int lhaid) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); - auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), - [lhaid] (gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); - return pdfGroup->containsLhapdfId(lhaid); - }); - return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; + auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { + auto pdfGroup = dynamic_cast(data.group); + return pdfGroup->containsLhapdfId(lhaid); + }); + return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; } -std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); - std::vector groups; - - for (auto lhaid : lhaids) { - auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), - [lhaid] (gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); - return pdfGroup->containsLhapdfId(lhaid); - }); - if (matchingPdfSet != pdfGroups.end()) - pdfGroups.push_back(*matchingPdfSet); - } - - return pdfGroups; +std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs( + const std::vector& lhaids) const { + auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + std::vector groups; + + for (auto lhaid : lhaids) { + auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { + auto pdfGroup = dynamic_cast(data.group); + return pdfGroup->containsLhapdfId(lhaid); + }); + if (matchingPdfSet != pdfGroups.end()) + pdfGroups.push_back(*matchingPdfSet); + } + + return pdfGroups; } std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType type) const { - std::vector matchingGroupIndices; - for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { - if (weightGroupsInfo_[i].weightType() == type) - matchingGroupIndices.push_back(i); - } - return matchingGroupIndices; + std::vector matchingGroupIndices; + for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + if (weightGroupsInfo_[i].weightType() == type) + matchingGroupIndices.push_back(i); + } + return matchingGroupIndices; } -void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { - weightGroupsInfo_.push_back(info); -} +void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index 8d75b537cf890..9174534d41113 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -1,12 +1,7 @@ #include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" namespace gen { - void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo &other) { - WeightGroupInfo::copy(other); - } - - MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { - return new MEParamWeightGroupInfo(*this); - } -} + void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo& other) { WeightGroupInfo::copy(other); } + MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { return new MEParamWeightGroupInfo(*this); } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc index 893db2f20433e..eaa004686f281 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc @@ -1,12 +1,9 @@ #include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" namespace gen { - void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo &other) { - WeightGroupInfo::copy(other); - } - - PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { - return new PartonShowerWeightGroupInfo(*this); - } -} + void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { WeightGroupInfo::copy(other); } + PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { + return new PartonShowerWeightGroupInfo(*this); + } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 5dfbf814f323e..17a106b578932 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -1,16 +1,14 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" namespace gen { - void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo &other) { - uncertaintyType_ = other.uncertaintyType(); - hasAlphasVars_ = other.hasAlphasVariations(); - alphasUpIndex_ = other.alphasDownIndex(); - alphasDownIndex_ = other.alphasDownIndex(); - lhapdfIdsContained_ = other.lhapdfIdsContained_; - WeightGroupInfo::copy(other); - } + void PdfWeightGroupInfo::copy(const PdfWeightGroupInfo& other) { + uncertaintyType_ = other.uncertaintyType(); + hasAlphasVars_ = other.hasAlphasVariations(); + alphasUpIndex_ = other.alphasDownIndex(); + alphasDownIndex_ = other.alphasDownIndex(); + lhapdfIdsContained_ = other.lhapdfIdsContained_; + WeightGroupInfo::copy(other); + } - PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { - return new PdfWeightGroupInfo(*this); - } -} + PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { return new PdfWeightGroupInfo(*this); } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 575871de6f101..3919a22b57c94 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -3,55 +3,51 @@ #include namespace gen { - void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo &other) { - centralIndex_ = other.centralIndex_; - muR1muF2Index_ = other.muR1muF2Index_; - muR1muF05Index_ = other.muR1muF05Index_; - muR2muF05Index_ = other.muR2muF05Index_; - muR2muF1Index_ = other.muR2muF1Index_; - muR2muF2Index_ = other.muR2muF2Index_; - muR05muF05Index_ = other.muR2muF05Index_; - muR05muF1Index_ = other.muR05muF1Index_; - muR05muF2Index_ = other.muR05muF2Index_; - WeightGroupInfo::copy(other); - } + void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo& other) { + centralIndex_ = other.centralIndex_; + muR1muF2Index_ = other.muR1muF2Index_; + muR1muF05Index_ = other.muR1muF05Index_; + muR2muF05Index_ = other.muR2muF05Index_; + muR2muF1Index_ = other.muR2muF1Index_; + muR2muF2Index_ = other.muR2muF2Index_; + muR05muF05Index_ = other.muR2muF05Index_; + muR05muF1Index_ = other.muR05muF1Index_; + muR05muF2Index_ = other.muR05muF2Index_; + WeightGroupInfo::copy(other); + } - ScaleWeightGroupInfo* ScaleWeightGroupInfo::clone() const { - return new ScaleWeightGroupInfo(*this); - } + ScaleWeightGroupInfo* ScaleWeightGroupInfo::clone() const { return new ScaleWeightGroupInfo(*this); } - void ScaleWeightGroupInfo::addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF) { - WeightGroupInfo::addContainedId(globalIndex, id, label); - setMuRMuFIndex(globalIndex, id, muR, muF); - } - - void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { - auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); - setMuRMuFIndex(metaInfo, muR, muF); - } - - void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { - if (muR == 0.5 && muF == 0.5) - muR05muF05Index_ = info.localIndex; - else if (muR == 0.5 && muF == 1.0) - muR05muF1Index_ = info.localIndex; - else if (muR == 0.5 && muF == 2.0) - muR05muF2Index_ = info.localIndex; - else if (muR == 1.0 && muF == 0.5) - muR1muF05Index_ = info.localIndex; - else if (muR == 1.0 && muF == 1.0) - centralIndex_ = info.localIndex; - else if (muR == 1.0 && muF == 2.0) - muR1muF2Index_ = info.localIndex; - else if (muR == 2.0 && muF == 0.5) - muR2muF05Index_ = info.localIndex; - else if (muR == 2.0 && muF == 1.0) - muR2muF1Index_ = info.localIndex; - else if (muR == 2.0 && muF == 2.0) - muR2muF2Index_ = info.localIndex; - else - isWellFormed_ = false; - } -} + void ScaleWeightGroupInfo::addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF) { + WeightGroupInfo::addContainedId(globalIndex, id, label); + setMuRMuFIndex(globalIndex, id, muR, muF); + } + void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { + auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); + setMuRMuFIndex(metaInfo, muR, muF); + } + void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { + if (muR == 0.5 && muF == 0.5) + muR05muF05Index_ = info.localIndex; + else if (muR == 0.5 && muF == 1.0) + muR05muF1Index_ = info.localIndex; + else if (muR == 0.5 && muF == 2.0) + muR05muF2Index_ = info.localIndex; + else if (muR == 1.0 && muF == 0.5) + muR1muF05Index_ = info.localIndex; + else if (muR == 1.0 && muF == 1.0) + centralIndex_ = info.localIndex; + else if (muR == 1.0 && muF == 2.0) + muR1muF2Index_ = info.localIndex; + else if (muR == 2.0 && muF == 0.5) + muR2muF05Index_ = info.localIndex; + else if (muR == 2.0 && muF == 1.0) + muR2muF1Index_ = info.localIndex; + else if (muR == 2.0 && muF == 2.0) + muR2muF2Index_ = info.localIndex; + else + isWellFormed_ = false; + } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc index 2d56e8e177b31..8c33d59eff35b 100644 --- a/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc @@ -1,8 +1,5 @@ #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" namespace gen { - UnknownWeightGroupInfo* UnknownWeightGroupInfo::clone() const { - return new UnknownWeightGroupInfo(*this); - } -} - + UnknownWeightGroupInfo* UnknownWeightGroupInfo::clone() const { return new UnknownWeightGroupInfo(*this); } +} // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 2b8c5079a443f..4a775456dc4c2 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -6,94 +6,84 @@ #include namespace gen { - void WeightGroupInfo::copy(const WeightGroupInfo &other) { - isWellFormed_ = other.isWellFormed_; - headerEntry_ = other.headerEntry_; - name_ = other.name_; - description_ = other.description_; - weightType_ = other.weightType_; - idsContained_ = other.idsContained_; - firstId_ = other.firstId_; - lastId_ = other.lastId_; - } + void WeightGroupInfo::copy(const WeightGroupInfo& other) { + isWellFormed_ = other.isWellFormed_; + headerEntry_ = other.headerEntry_; + name_ = other.name_; + description_ = other.description_; + weightType_ = other.weightType_; + idsContained_ = other.idsContained_; + firstId_ = other.firstId_; + lastId_ = other.lastId_; + } - WeightGroupInfo* WeightGroupInfo::clone() const { - throw cms::Exception("LogicError", "WeightGroupInfo is abstract, so it's clone() method can't be implemented.\n"); - } + WeightGroupInfo* WeightGroupInfo::clone() const { + throw cms::Exception("LogicError", "WeightGroupInfo is abstract, so it's clone() method can't be implemented.\n"); + } - WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { - return idsContained_.at(weightEntry); - } + WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } - WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { - int entry = weightVectorEntry(wgtId, weightEntry); - if (entry < 0 || entry >= static_cast(idsContained_.size())) - throw std::range_error("Weight entry " + std::to_string(weightEntry) + - " is not a member of group " + name_ + - ". \n firstID = " + std::to_string(firstId_) + " lastId = " + std::to_string(lastId_)); - return idsContained_.at(entry); - } + WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { + int entry = weightVectorEntry(wgtId, weightEntry); + if (entry < 0 || entry >= static_cast(idsContained_.size())) + throw std::range_error("Weight entry " + std::to_string(weightEntry) + " is not a member of group " + name_ + + ". \n firstID = " + std::to_string(firstId_) + " lastId = " + std::to_string(lastId_)); + return idsContained_.at(entry); + } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { - return weightVectorEntry(wgtId, 0); - } + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } - bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { - return weightVectorEntry(wgtId, weightEntry) != -1; - } + bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { + return weightVectorEntry(wgtId, weightEntry) != -1; + } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { - // First try ordered search - if (indexInRange(weightEntry)) { - size_t orderedEntry = weightEntry - firstId_; - if (orderedEntry < idsContained_.size()) - if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { - return orderedEntry; - } + int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { + // First try ordered search + if (indexInRange(weightEntry)) { + size_t orderedEntry = weightEntry - firstId_; + if (orderedEntry < idsContained_.size()) + if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { + return orderedEntry; } - // Fall back to search on ID - else if (!wgtId.empty()) { - auto it = std::find_if(idsContained_.begin(), idsContained_.end(), - [wgtId] (const WeightMetaInfo& w) { return w.id == wgtId; }); - if (it != idsContained_.end()) - return std::distance(idsContained_.begin(), it); - } - return -1; } - - void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label="") { - if (firstId_ == -1 || weightEntry < firstId_) { - firstId_ = weightEntry; - // Reset to reflect that indices will be shifted - for (auto& entry : idsContained_) - entry.localIndex = entry.globalIndex - firstId_; - } - if (weightEntry > lastId_) - lastId_ = weightEntry; - - WeightMetaInfo info; - info.globalIndex = weightEntry; - info.localIndex = weightEntry - firstId_; - info.id = id; - info.label = label; - - if (idsContained_.size() < info.localIndex) { - idsContained_.resize(info.localIndex); - idsContained_.insert(idsContained_.begin()+info.localIndex, info); - } - else if (idsContained_.size() == info.localIndex) { - idsContained_.push_back(info); - } - else { - idsContained_.resize(info.localIndex+1); - idsContained_[info.localIndex] = info; - } + // Fall back to search on ID + else if (!wgtId.empty()) { + auto it = std::find_if( + idsContained_.begin(), idsContained_.end(), [wgtId](const WeightMetaInfo& w) { return w.id == wgtId; }); + if (it != idsContained_.end()) + return std::distance(idsContained_.begin(), it); } + return -1; + } - std::vector WeightGroupInfo::containedIds() const { return idsContained_; } + void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label = "") { + if (firstId_ == -1 || weightEntry < firstId_) { + firstId_ = weightEntry; + // Reset to reflect that indices will be shifted + for (auto& entry : idsContained_) + entry.localIndex = entry.globalIndex - firstId_; + } + if (weightEntry > lastId_) + lastId_ = weightEntry; + WeightMetaInfo info; + info.globalIndex = weightEntry; + info.localIndex = weightEntry - firstId_; + info.id = id; + info.label = label; - bool WeightGroupInfo::indexInRange(int index) const { - return (index <= lastId_ && index >= firstId_); + if (idsContained_.size() < info.localIndex) { + idsContained_.resize(info.localIndex); + idsContained_.insert(idsContained_.begin() + info.localIndex, info); + } else if (idsContained_.size() == info.localIndex) { + idsContained_.push_back(info); + } else { + idsContained_.resize(info.localIndex + 1); + idsContained_[info.localIndex] = info; } -} + } + + std::vector WeightGroupInfo::containedIds() const { return idsContained_; } + + bool WeightGroupInfo::indexInRange(int index) const { return (index <= lastId_ && index >= firstId_); } +} // namespace gen diff --git a/Test/Test/BuildFile.xml b/Test/Test/BuildFile.xml new file mode 100644 index 0000000000000..a1b937c463f71 --- /dev/null +++ b/Test/Test/BuildFile.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Test/Test/interface/test.h b/Test/Test/interface/test.h new file mode 100644 index 0000000000000..22a0a4c2aa0f1 --- /dev/null +++ b/Test/Test/interface/test.h @@ -0,0 +1,18 @@ +#include "GeneratorInterface/Core/interface/LHEWeightHelper.h" + +#include +#include +#include +#include + +namespace test { + class Test_LHEWeightHelper { + public: + Test_LHEWeightHelper(); + + void add_file(std::string infileName); + gen::LHEWeightHelper weight_; + + }; + +} diff --git a/Test/Test/src/classes.h b/Test/Test/src/classes.h new file mode 100644 index 0000000000000..dae06b3522fb1 --- /dev/null +++ b/Test/Test/src/classes.h @@ -0,0 +1 @@ +#include "Test/Test/interface/test.h" diff --git a/Test/Test/src/classes_def.xml b/Test/Test/src/classes_def.xml new file mode 100644 index 0000000000000..47d60af8e4eae --- /dev/null +++ b/Test/Test/src/classes_def.xml @@ -0,0 +1,3 @@ + + + diff --git a/Test/Test/src/test.cc b/Test/Test/src/test.cc new file mode 100644 index 0000000000000..5474e76f6dd18 --- /dev/null +++ b/Test/Test/src/test.cc @@ -0,0 +1,22 @@ +#include "Test/Test/interface/test.h" + +namespace test { + Test_LHEWeightHelper::Test_LHEWeightHelper() { + + } + + void Test_LHEWeightHelper::add_file(std::string infileName) { + std::ifstream myfile; + myfile.open(infileName); + std::vector lines; + std::string line; + while(getline(myfile, line)) { + lines.push_back(line); + } + weight_.setHeaderLines(lines); + myfile.close(); + } + + +} + diff --git a/lhe_test.C b/lhe_test.C new file mode 100644 index 0000000000000..f601cd50eba70 --- /dev/null +++ b/lhe_test.C @@ -0,0 +1,57 @@ +/* + + "testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt"; + "testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt"; + + + "testFiles/W1jet_260_weight_info.txt"; + "testFiles/WJ_MiNNLO_weightinfo.txt"; + "testFiles/WJ_NNLOPS_weightinfo.txt"; + "testFiles/WZVBS_2017_weightInfo.txt"; + "testFiles/WZVBS_aQGCFM_weightInfo.txt"; + "testFiles/WZVBS_aQGC_weightInfo.txt"; + "testFiles/WZVBS_private_weightInfo.txt"; + "testFiles/ZJ_MiNNLO_weightinfo.txt"; + "testFiles/ZZTo4L_powheg_2016_weightInfo.txt"; + "testFiles/ZZTo4L_powheg_2017_weightInfo.txt"; + "testFiles/susyweights.txt"; + + + "testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt"; + + + + "testFiles/VVV_2017_weight_info.txt"; // possibly bad file? +*/ + +void lhe_test() { + + vector files = {//"testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt", + "testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt", + // "testFiles/W1jet_260_weight_info.txt", + // "testFiles/WJ_MiNNLO_weightinfo.txt", + // "testFiles/WJ_NNLOPS_weightinfo.txt", + // "testFiles/WZVBS_2017_weightInfo.txt", + // "testFiles/WZVBS_aQGCFM_weightInfo.txt", + // "testFiles/WZVBS_aQGC_weightInfo.txt", + // "testFiles/WZVBS_private_weightInfo.txt", + // "testFiles/ZJ_MiNNLO_weightinfo.txt", + // "testFiles/ZZTo4L_powheg_2016_weightInfo.txt", + // "testFiles/ZZTo4L_powheg_2017_weightInfo.txt", + // "testFiles/susyweights.txt", + // "testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt" + }; + for(auto infile: files) { + test::Test_LHEWeightHelper a; + std::cout << "-------------------------------------------\n"; + std::cout << infile << "\n"; + a.add_file(infile); + a.weight_.parseWeights(); + } + +} + + +/* Tested + "testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt"; +*/ diff --git a/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt b/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt new file mode 100644 index 0000000000000..9042f45c4f47b --- /dev/null +++ b/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt @@ -0,0 +1,474 @@ + + mur=1 muf=1 + mur=1 muf=2 + mur=1 muf=0.5 + mur=2 muf=1 + mur=2 muf=2 + mur=2 muf=0.5 + mur=0.5 muf=1 + mur=0.5 muf=2 + mur=0.5 muf=0.5 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + Member 53 + Member 54 + Member 55 + Member 56 + Member 57 + Member 58 + Member 59 + Member 60 + Member 61 + Member 62 + Member 63 + Member 64 + Member 65 + Member 66 + Member 67 + Member 68 + Member 69 + Member 70 + Member 71 + Member 72 + Member 73 + Member 74 + Member 75 + Member 76 + Member 77 + Member 78 + Member 79 + Member 80 + Member 81 + Member 82 + Member 83 + Member 84 + Member 85 + Member 86 + Member 87 + Member 88 + Member 89 + Member 90 + Member 91 + Member 92 + Member 93 + Member 94 + Member 95 + Member 96 + Member 97 + Member 98 + Member 99 + Member 100 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + Member 53 + Member 54 + Member 55 + Member 56 + Member 57 + Member 58 + Member 59 + Member 60 + Member 61 + Member 62 + Member 63 + Member 64 + Member 65 + Member 66 + Member 67 + Member 68 + Member 69 + Member 70 + Member 71 + Member 72 + Member 73 + Member 74 + Member 75 + Member 76 + Member 77 + Member 78 + Member 79 + Member 80 + Member 81 + Member 82 + Member 83 + Member 84 + Member 85 + Member 86 + Member 87 + Member 88 + Member 89 + Member 90 + Member 91 + Member 92 + Member 93 + Member 94 + Member 95 + Member 96 + Member 97 + Member 98 + Member 99 + Member 100 + + + Member 0 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + Member 53 + Member 54 + Member 55 + Member 56 + Member 57 + Member 58 + Member 59 + Member 60 + Member 61 + Member 62 + Member 63 + Member 64 + Member 65 + Member 66 + Member 67 + Member 68 + Member 69 + Member 70 + Member 71 + Member 72 + Member 73 + Member 74 + Member 75 + Member 76 + Member 77 + Member 78 + Member 79 + Member 80 + Member 81 + Member 82 + Member 83 + Member 84 + Member 85 + Member 86 + Member 87 + Member 88 + Member 89 + Member 90 + Member 91 + Member 92 + Member 93 + Member 94 + Member 95 + Member 96 + Member 97 + Member 98 + Member 99 + Member 100 + + + Member 0 + + + Member 0 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + + + Member 0 + Member 1 + Member 2 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + + + Member 0 + + + Member 0 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + + + Member 0 + diff --git a/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt b/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt new file mode 100644 index 0000000000000..a3754843fb97e --- /dev/null +++ b/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt @@ -0,0 +1,1158 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/FlatPU28to62HcalNZSRAW_94X_mcRun2_asymptotic_v3-v1/260000/5436C913-046D-E911-B076-0025905A60BE.root + + mur=1 muf=1 + mur=1 muf=2 + mur=1 muf=0.5 + mur=2 muf=1 + mur=2 muf=2 + mur=2 muf=0.5 + mur=0.5 muf=1 + mur=0.5 muf=2 + mur=0.5 muf=0.5 + + + Member 0 of sets NNPDF31_nnlo_hessian_pdfas + Member 1 of sets NNPDF31_nnlo_hessian_pdfas + Member 2 of sets NNPDF31_nnlo_hessian_pdfas + Member 3 of sets NNPDF31_nnlo_hessian_pdfas + Member 4 of sets NNPDF31_nnlo_hessian_pdfas + Member 5 of sets NNPDF31_nnlo_hessian_pdfas + Member 6 of sets NNPDF31_nnlo_hessian_pdfas + Member 7 of sets NNPDF31_nnlo_hessian_pdfas + Member 8 of sets NNPDF31_nnlo_hessian_pdfas + Member 9 of sets NNPDF31_nnlo_hessian_pdfas + Member 10 of sets NNPDF31_nnlo_hessian_pdfas + Member 11 of sets NNPDF31_nnlo_hessian_pdfas + Member 12 of sets NNPDF31_nnlo_hessian_pdfas + Member 13 of sets NNPDF31_nnlo_hessian_pdfas + Member 14 of sets NNPDF31_nnlo_hessian_pdfas + Member 15 of sets NNPDF31_nnlo_hessian_pdfas + Member 16 of sets NNPDF31_nnlo_hessian_pdfas + Member 17 of sets NNPDF31_nnlo_hessian_pdfas + Member 18 of sets NNPDF31_nnlo_hessian_pdfas + Member 19 of sets NNPDF31_nnlo_hessian_pdfas + Member 20 of sets NNPDF31_nnlo_hessian_pdfas + Member 21 of sets NNPDF31_nnlo_hessian_pdfas + Member 22 of sets NNPDF31_nnlo_hessian_pdfas + Member 23 of sets NNPDF31_nnlo_hessian_pdfas + Member 24 of sets NNPDF31_nnlo_hessian_pdfas + Member 25 of sets NNPDF31_nnlo_hessian_pdfas + Member 26 of sets NNPDF31_nnlo_hessian_pdfas + Member 27 of sets NNPDF31_nnlo_hessian_pdfas + Member 28 of sets NNPDF31_nnlo_hessian_pdfas + Member 29 of sets NNPDF31_nnlo_hessian_pdfas + Member 30 of sets NNPDF31_nnlo_hessian_pdfas + Member 31 of sets NNPDF31_nnlo_hessian_pdfas + Member 32 of sets NNPDF31_nnlo_hessian_pdfas + Member 33 of sets NNPDF31_nnlo_hessian_pdfas + Member 34 of sets NNPDF31_nnlo_hessian_pdfas + Member 35 of sets NNPDF31_nnlo_hessian_pdfas + Member 36 of sets NNPDF31_nnlo_hessian_pdfas + Member 37 of sets NNPDF31_nnlo_hessian_pdfas + Member 38 of sets NNPDF31_nnlo_hessian_pdfas + Member 39 of sets NNPDF31_nnlo_hessian_pdfas + Member 40 of sets NNPDF31_nnlo_hessian_pdfas + Member 41 of sets NNPDF31_nnlo_hessian_pdfas + Member 42 of sets NNPDF31_nnlo_hessian_pdfas + Member 43 of sets NNPDF31_nnlo_hessian_pdfas + Member 44 of sets NNPDF31_nnlo_hessian_pdfas + Member 45 of sets NNPDF31_nnlo_hessian_pdfas + Member 46 of sets NNPDF31_nnlo_hessian_pdfas + Member 47 of sets NNPDF31_nnlo_hessian_pdfas + Member 48 of sets NNPDF31_nnlo_hessian_pdfas + Member 49 of sets NNPDF31_nnlo_hessian_pdfas + Member 50 of sets NNPDF31_nnlo_hessian_pdfas + Member 51 of sets NNPDF31_nnlo_hessian_pdfas + Member 52 of sets NNPDF31_nnlo_hessian_pdfas + Member 53 of sets NNPDF31_nnlo_hessian_pdfas + Member 54 of sets NNPDF31_nnlo_hessian_pdfas + Member 55 of sets NNPDF31_nnlo_hessian_pdfas + Member 56 of sets NNPDF31_nnlo_hessian_pdfas + Member 57 of sets NNPDF31_nnlo_hessian_pdfas + Member 58 of sets NNPDF31_nnlo_hessian_pdfas + Member 59 of sets NNPDF31_nnlo_hessian_pdfas + Member 60 of sets NNPDF31_nnlo_hessian_pdfas + Member 61 of sets NNPDF31_nnlo_hessian_pdfas + Member 62 of sets NNPDF31_nnlo_hessian_pdfas + Member 63 of sets NNPDF31_nnlo_hessian_pdfas + Member 64 of sets NNPDF31_nnlo_hessian_pdfas + Member 65 of sets NNPDF31_nnlo_hessian_pdfas + Member 66 of sets NNPDF31_nnlo_hessian_pdfas + Member 67 of sets NNPDF31_nnlo_hessian_pdfas + Member 68 of sets NNPDF31_nnlo_hessian_pdfas + Member 69 of sets NNPDF31_nnlo_hessian_pdfas + Member 70 of sets NNPDF31_nnlo_hessian_pdfas + Member 71 of sets NNPDF31_nnlo_hessian_pdfas + Member 72 of sets NNPDF31_nnlo_hessian_pdfas + Member 73 of sets NNPDF31_nnlo_hessian_pdfas + Member 74 of sets NNPDF31_nnlo_hessian_pdfas + Member 75 of sets NNPDF31_nnlo_hessian_pdfas + Member 76 of sets NNPDF31_nnlo_hessian_pdfas + Member 77 of sets NNPDF31_nnlo_hessian_pdfas + Member 78 of sets NNPDF31_nnlo_hessian_pdfas + Member 79 of sets NNPDF31_nnlo_hessian_pdfas + Member 80 of sets NNPDF31_nnlo_hessian_pdfas + Member 81 of sets NNPDF31_nnlo_hessian_pdfas + Member 82 of sets NNPDF31_nnlo_hessian_pdfas + Member 83 of sets NNPDF31_nnlo_hessian_pdfas + Member 84 of sets NNPDF31_nnlo_hessian_pdfas + Member 85 of sets NNPDF31_nnlo_hessian_pdfas + Member 86 of sets NNPDF31_nnlo_hessian_pdfas + Member 87 of sets NNPDF31_nnlo_hessian_pdfas + Member 88 of sets NNPDF31_nnlo_hessian_pdfas + Member 89 of sets NNPDF31_nnlo_hessian_pdfas + Member 90 of sets NNPDF31_nnlo_hessian_pdfas + Member 91 of sets NNPDF31_nnlo_hessian_pdfas + Member 92 of sets NNPDF31_nnlo_hessian_pdfas + Member 93 of sets NNPDF31_nnlo_hessian_pdfas + Member 94 of sets NNPDF31_nnlo_hessian_pdfas + Member 95 of sets NNPDF31_nnlo_hessian_pdfas + Member 96 of sets NNPDF31_nnlo_hessian_pdfas + Member 97 of sets NNPDF31_nnlo_hessian_pdfas + Member 98 of sets NNPDF31_nnlo_hessian_pdfas + Member 99 of sets NNPDF31_nnlo_hessian_pdfas + Member 100 of sets NNPDF31_nnlo_hessian_pdfas + Member 101 of sets NNPDF31_nnlo_hessian_pdfas + Member 102 of sets NNPDF31_nnlo_hessian_pdfas + + + Member 0 of sets NNPDF31_nnlo_as_0108 + + + Member 0 of sets NNPDF31_nnlo_as_0110 + + + Member 0 of sets NNPDF31_nnlo_as_0112 + + + Member 0 of sets NNPDF31_nnlo_as_0114 + + + Member 0 of sets NNPDF31_nnlo_as_0117 + + + Member 0 of sets NNPDF31_nnlo_as_0119 + + + Member 0 of sets NNPDF31_nnlo_as_0122 + + + Member 0 of sets NNPDF31_nnlo_as_0124 + + + Member 0 of sets NNPDF31_nlo_hessian_pdfas + Member 1 of sets NNPDF31_nlo_hessian_pdfas + Member 2 of sets NNPDF31_nlo_hessian_pdfas + Member 3 of sets NNPDF31_nlo_hessian_pdfas + Member 4 of sets NNPDF31_nlo_hessian_pdfas + Member 5 of sets NNPDF31_nlo_hessian_pdfas + Member 6 of sets NNPDF31_nlo_hessian_pdfas + Member 7 of sets NNPDF31_nlo_hessian_pdfas + Member 8 of sets NNPDF31_nlo_hessian_pdfas + Member 9 of sets NNPDF31_nlo_hessian_pdfas + Member 10 of sets NNPDF31_nlo_hessian_pdfas + Member 11 of sets NNPDF31_nlo_hessian_pdfas + Member 12 of sets NNPDF31_nlo_hessian_pdfas + Member 13 of sets NNPDF31_nlo_hessian_pdfas + Member 14 of sets NNPDF31_nlo_hessian_pdfas + Member 15 of sets NNPDF31_nlo_hessian_pdfas + Member 16 of sets NNPDF31_nlo_hessian_pdfas + Member 17 of sets NNPDF31_nlo_hessian_pdfas + Member 18 of sets NNPDF31_nlo_hessian_pdfas + Member 19 of sets NNPDF31_nlo_hessian_pdfas + Member 20 of sets NNPDF31_nlo_hessian_pdfas + Member 21 of sets NNPDF31_nlo_hessian_pdfas + Member 22 of sets NNPDF31_nlo_hessian_pdfas + Member 23 of sets NNPDF31_nlo_hessian_pdfas + Member 24 of sets NNPDF31_nlo_hessian_pdfas + Member 25 of sets NNPDF31_nlo_hessian_pdfas + Member 26 of sets NNPDF31_nlo_hessian_pdfas + Member 27 of sets NNPDF31_nlo_hessian_pdfas + Member 28 of sets NNPDF31_nlo_hessian_pdfas + Member 29 of sets NNPDF31_nlo_hessian_pdfas + Member 30 of sets NNPDF31_nlo_hessian_pdfas + Member 31 of sets NNPDF31_nlo_hessian_pdfas + Member 32 of sets NNPDF31_nlo_hessian_pdfas + Member 33 of sets NNPDF31_nlo_hessian_pdfas + Member 34 of sets NNPDF31_nlo_hessian_pdfas + Member 35 of sets NNPDF31_nlo_hessian_pdfas + Member 36 of sets NNPDF31_nlo_hessian_pdfas + Member 37 of sets NNPDF31_nlo_hessian_pdfas + Member 38 of sets NNPDF31_nlo_hessian_pdfas + Member 39 of sets NNPDF31_nlo_hessian_pdfas + Member 40 of sets NNPDF31_nlo_hessian_pdfas + Member 41 of sets NNPDF31_nlo_hessian_pdfas + Member 42 of sets NNPDF31_nlo_hessian_pdfas + Member 43 of sets NNPDF31_nlo_hessian_pdfas + Member 44 of sets NNPDF31_nlo_hessian_pdfas + Member 45 of sets NNPDF31_nlo_hessian_pdfas + Member 46 of sets NNPDF31_nlo_hessian_pdfas + Member 47 of sets NNPDF31_nlo_hessian_pdfas + Member 48 of sets NNPDF31_nlo_hessian_pdfas + Member 49 of sets NNPDF31_nlo_hessian_pdfas + Member 50 of sets NNPDF31_nlo_hessian_pdfas + Member 51 of sets NNPDF31_nlo_hessian_pdfas + Member 52 of sets NNPDF31_nlo_hessian_pdfas + Member 53 of sets NNPDF31_nlo_hessian_pdfas + Member 54 of sets NNPDF31_nlo_hessian_pdfas + Member 55 of sets NNPDF31_nlo_hessian_pdfas + Member 56 of sets NNPDF31_nlo_hessian_pdfas + Member 57 of sets NNPDF31_nlo_hessian_pdfas + Member 58 of sets NNPDF31_nlo_hessian_pdfas + Member 59 of sets NNPDF31_nlo_hessian_pdfas + Member 60 of sets NNPDF31_nlo_hessian_pdfas + Member 61 of sets NNPDF31_nlo_hessian_pdfas + Member 62 of sets NNPDF31_nlo_hessian_pdfas + Member 63 of sets NNPDF31_nlo_hessian_pdfas + Member 64 of sets NNPDF31_nlo_hessian_pdfas + Member 65 of sets NNPDF31_nlo_hessian_pdfas + Member 66 of sets NNPDF31_nlo_hessian_pdfas + Member 67 of sets NNPDF31_nlo_hessian_pdfas + Member 68 of sets NNPDF31_nlo_hessian_pdfas + Member 69 of sets NNPDF31_nlo_hessian_pdfas + Member 70 of sets NNPDF31_nlo_hessian_pdfas + Member 71 of sets NNPDF31_nlo_hessian_pdfas + Member 72 of sets NNPDF31_nlo_hessian_pdfas + Member 73 of sets NNPDF31_nlo_hessian_pdfas + Member 74 of sets NNPDF31_nlo_hessian_pdfas + Member 75 of sets NNPDF31_nlo_hessian_pdfas + Member 76 of sets NNPDF31_nlo_hessian_pdfas + Member 77 of sets NNPDF31_nlo_hessian_pdfas + Member 78 of sets NNPDF31_nlo_hessian_pdfas + Member 79 of sets NNPDF31_nlo_hessian_pdfas + Member 80 of sets NNPDF31_nlo_hessian_pdfas + Member 81 of sets NNPDF31_nlo_hessian_pdfas + Member 82 of sets NNPDF31_nlo_hessian_pdfas + Member 83 of sets NNPDF31_nlo_hessian_pdfas + Member 84 of sets NNPDF31_nlo_hessian_pdfas + Member 85 of sets NNPDF31_nlo_hessian_pdfas + Member 86 of sets NNPDF31_nlo_hessian_pdfas + Member 87 of sets NNPDF31_nlo_hessian_pdfas + Member 88 of sets NNPDF31_nlo_hessian_pdfas + Member 89 of sets NNPDF31_nlo_hessian_pdfas + Member 90 of sets NNPDF31_nlo_hessian_pdfas + Member 91 of sets NNPDF31_nlo_hessian_pdfas + Member 92 of sets NNPDF31_nlo_hessian_pdfas + Member 93 of sets NNPDF31_nlo_hessian_pdfas + Member 94 of sets NNPDF31_nlo_hessian_pdfas + Member 95 of sets NNPDF31_nlo_hessian_pdfas + Member 96 of sets NNPDF31_nlo_hessian_pdfas + Member 97 of sets NNPDF31_nlo_hessian_pdfas + Member 98 of sets NNPDF31_nlo_hessian_pdfas + Member 99 of sets NNPDF31_nlo_hessian_pdfas + Member 100 of sets NNPDF31_nlo_hessian_pdfas + Member 101 of sets NNPDF31_nlo_hessian_pdfas + Member 102 of sets NNPDF31_nlo_hessian_pdfas + + + Member 0 of sets CT14nnlo + Member 1 of sets CT14nnlo + Member 2 of sets CT14nnlo + Member 3 of sets CT14nnlo + Member 4 of sets CT14nnlo + Member 5 of sets CT14nnlo + Member 6 of sets CT14nnlo + Member 7 of sets CT14nnlo + Member 8 of sets CT14nnlo + Member 9 of sets CT14nnlo + Member 10 of sets CT14nnlo + Member 11 of sets CT14nnlo + Member 12 of sets CT14nnlo + Member 13 of sets CT14nnlo + Member 14 of sets CT14nnlo + Member 15 of sets CT14nnlo + Member 16 of sets CT14nnlo + Member 17 of sets CT14nnlo + Member 18 of sets CT14nnlo + Member 19 of sets CT14nnlo + Member 20 of sets CT14nnlo + Member 21 of sets CT14nnlo + Member 22 of sets CT14nnlo + Member 23 of sets CT14nnlo + Member 24 of sets CT14nnlo + Member 25 of sets CT14nnlo + Member 26 of sets CT14nnlo + Member 27 of sets CT14nnlo + Member 28 of sets CT14nnlo + Member 29 of sets CT14nnlo + Member 30 of sets CT14nnlo + Member 31 of sets CT14nnlo + Member 32 of sets CT14nnlo + Member 33 of sets CT14nnlo + Member 34 of sets CT14nnlo + Member 35 of sets CT14nnlo + Member 36 of sets CT14nnlo + Member 37 of sets CT14nnlo + Member 38 of sets CT14nnlo + Member 39 of sets CT14nnlo + Member 40 of sets CT14nnlo + Member 41 of sets CT14nnlo + Member 42 of sets CT14nnlo + Member 43 of sets CT14nnlo + Member 44 of sets CT14nnlo + Member 45 of sets CT14nnlo + Member 46 of sets CT14nnlo + Member 47 of sets CT14nnlo + Member 48 of sets CT14nnlo + Member 49 of sets CT14nnlo + Member 50 of sets CT14nnlo + Member 51 of sets CT14nnlo + Member 52 of sets CT14nnlo + Member 53 of sets CT14nnlo + Member 54 of sets CT14nnlo + Member 55 of sets CT14nnlo + Member 56 of sets CT14nnlo + + + Member 0 of sets CT14nnlo_as_0116 + + + Member 0 of sets CT14nnlo_as_0120 + + + Member 0 of sets CT14nlo + Member 1 of sets CT14nlo + Member 2 of sets CT14nlo + Member 3 of sets CT14nlo + Member 4 of sets CT14nlo + Member 5 of sets CT14nlo + Member 6 of sets CT14nlo + Member 7 of sets CT14nlo + Member 8 of sets CT14nlo + Member 9 of sets CT14nlo + Member 10 of sets CT14nlo + Member 11 of sets CT14nlo + Member 12 of sets CT14nlo + Member 13 of sets CT14nlo + Member 14 of sets CT14nlo + Member 15 of sets CT14nlo + Member 16 of sets CT14nlo + Member 17 of sets CT14nlo + Member 18 of sets CT14nlo + Member 19 of sets CT14nlo + Member 20 of sets CT14nlo + Member 21 of sets CT14nlo + Member 22 of sets CT14nlo + Member 23 of sets CT14nlo + Member 24 of sets CT14nlo + Member 25 of sets CT14nlo + Member 26 of sets CT14nlo + Member 27 of sets CT14nlo + Member 28 of sets CT14nlo + Member 29 of sets CT14nlo + Member 30 of sets CT14nlo + Member 31 of sets CT14nlo + Member 32 of sets CT14nlo + Member 33 of sets CT14nlo + Member 34 of sets CT14nlo + Member 35 of sets CT14nlo + Member 36 of sets CT14nlo + Member 37 of sets CT14nlo + Member 38 of sets CT14nlo + Member 39 of sets CT14nlo + Member 40 of sets CT14nlo + Member 41 of sets CT14nlo + Member 42 of sets CT14nlo + Member 43 of sets CT14nlo + Member 44 of sets CT14nlo + Member 45 of sets CT14nlo + Member 46 of sets CT14nlo + Member 47 of sets CT14nlo + Member 48 of sets CT14nlo + Member 49 of sets CT14nlo + Member 50 of sets CT14nlo + Member 51 of sets CT14nlo + Member 52 of sets CT14nlo + Member 53 of sets CT14nlo + Member 54 of sets CT14nlo + Member 55 of sets CT14nlo + Member 56 of sets CT14nlo + + + Member 0 of sets CT14nlo_as_0116 + + + Member 0 of sets CT14nlo_as_0120 + + + Member 0 of sets CT14lo + + + Member 0 of sets MMHT2014nlo68clas118 + Member 1 of sets MMHT2014nlo68clas118 + Member 2 of sets MMHT2014nlo68clas118 + Member 3 of sets MMHT2014nlo68clas118 + Member 4 of sets MMHT2014nlo68clas118 + Member 5 of sets MMHT2014nlo68clas118 + Member 6 of sets MMHT2014nlo68clas118 + Member 7 of sets MMHT2014nlo68clas118 + Member 8 of sets MMHT2014nlo68clas118 + Member 9 of sets MMHT2014nlo68clas118 + Member 10 of sets MMHT2014nlo68clas118 + Member 11 of sets MMHT2014nlo68clas118 + Member 12 of sets MMHT2014nlo68clas118 + Member 13 of sets MMHT2014nlo68clas118 + Member 14 of sets MMHT2014nlo68clas118 + Member 15 of sets MMHT2014nlo68clas118 + Member 16 of sets MMHT2014nlo68clas118 + Member 17 of sets MMHT2014nlo68clas118 + Member 18 of sets MMHT2014nlo68clas118 + Member 19 of sets MMHT2014nlo68clas118 + Member 20 of sets MMHT2014nlo68clas118 + Member 21 of sets MMHT2014nlo68clas118 + Member 22 of sets MMHT2014nlo68clas118 + Member 23 of sets MMHT2014nlo68clas118 + Member 24 of sets MMHT2014nlo68clas118 + Member 25 of sets MMHT2014nlo68clas118 + Member 26 of sets MMHT2014nlo68clas118 + Member 27 of sets MMHT2014nlo68clas118 + Member 28 of sets MMHT2014nlo68clas118 + Member 29 of sets MMHT2014nlo68clas118 + Member 30 of sets MMHT2014nlo68clas118 + Member 31 of sets MMHT2014nlo68clas118 + Member 32 of sets MMHT2014nlo68clas118 + Member 33 of sets MMHT2014nlo68clas118 + Member 34 of sets MMHT2014nlo68clas118 + Member 35 of sets MMHT2014nlo68clas118 + Member 36 of sets MMHT2014nlo68clas118 + Member 37 of sets MMHT2014nlo68clas118 + Member 38 of sets MMHT2014nlo68clas118 + Member 39 of sets MMHT2014nlo68clas118 + Member 40 of sets MMHT2014nlo68clas118 + Member 41 of sets MMHT2014nlo68clas118 + Member 42 of sets MMHT2014nlo68clas118 + Member 43 of sets MMHT2014nlo68clas118 + Member 44 of sets MMHT2014nlo68clas118 + Member 45 of sets MMHT2014nlo68clas118 + Member 46 of sets MMHT2014nlo68clas118 + Member 47 of sets MMHT2014nlo68clas118 + Member 48 of sets MMHT2014nlo68clas118 + Member 49 of sets MMHT2014nlo68clas118 + Member 50 of sets MMHT2014nlo68clas118 + + + Member 0 of sets MMHT2014nnlo68cl + Member 1 of sets MMHT2014nnlo68cl + Member 2 of sets MMHT2014nnlo68cl + Member 3 of sets MMHT2014nnlo68cl + Member 4 of sets MMHT2014nnlo68cl + Member 5 of sets MMHT2014nnlo68cl + Member 6 of sets MMHT2014nnlo68cl + Member 7 of sets MMHT2014nnlo68cl + Member 8 of sets MMHT2014nnlo68cl + Member 9 of sets MMHT2014nnlo68cl + Member 10 of sets MMHT2014nnlo68cl + Member 11 of sets MMHT2014nnlo68cl + Member 12 of sets MMHT2014nnlo68cl + Member 13 of sets MMHT2014nnlo68cl + Member 14 of sets MMHT2014nnlo68cl + Member 15 of sets MMHT2014nnlo68cl + Member 16 of sets MMHT2014nnlo68cl + Member 17 of sets MMHT2014nnlo68cl + Member 18 of sets MMHT2014nnlo68cl + Member 19 of sets MMHT2014nnlo68cl + Member 20 of sets MMHT2014nnlo68cl + Member 21 of sets MMHT2014nnlo68cl + Member 22 of sets MMHT2014nnlo68cl + Member 23 of sets MMHT2014nnlo68cl + Member 24 of sets MMHT2014nnlo68cl + Member 25 of sets MMHT2014nnlo68cl + Member 26 of sets MMHT2014nnlo68cl + Member 27 of sets MMHT2014nnlo68cl + Member 28 of sets MMHT2014nnlo68cl + Member 29 of sets MMHT2014nnlo68cl + Member 30 of sets MMHT2014nnlo68cl + Member 31 of sets MMHT2014nnlo68cl + Member 32 of sets MMHT2014nnlo68cl + Member 33 of sets MMHT2014nnlo68cl + Member 34 of sets MMHT2014nnlo68cl + Member 35 of sets MMHT2014nnlo68cl + Member 36 of sets MMHT2014nnlo68cl + Member 37 of sets MMHT2014nnlo68cl + Member 38 of sets MMHT2014nnlo68cl + Member 39 of sets MMHT2014nnlo68cl + Member 40 of sets MMHT2014nnlo68cl + Member 41 of sets MMHT2014nnlo68cl + Member 42 of sets MMHT2014nnlo68cl + Member 43 of sets MMHT2014nnlo68cl + Member 44 of sets MMHT2014nnlo68cl + Member 45 of sets MMHT2014nnlo68cl + Member 46 of sets MMHT2014nnlo68cl + Member 47 of sets MMHT2014nnlo68cl + Member 48 of sets MMHT2014nnlo68cl + Member 49 of sets MMHT2014nnlo68cl + Member 50 of sets MMHT2014nnlo68cl + + + Member 0 of sets MMHT2014lo68cl + + + Member 0 of sets ABMP16als118_5_nnlo + Member 1 of sets ABMP16als118_5_nnlo + Member 2 of sets ABMP16als118_5_nnlo + Member 3 of sets ABMP16als118_5_nnlo + Member 4 of sets ABMP16als118_5_nnlo + Member 5 of sets ABMP16als118_5_nnlo + Member 6 of sets ABMP16als118_5_nnlo + Member 7 of sets ABMP16als118_5_nnlo + Member 8 of sets ABMP16als118_5_nnlo + Member 9 of sets ABMP16als118_5_nnlo + Member 10 of sets ABMP16als118_5_nnlo + Member 11 of sets ABMP16als118_5_nnlo + Member 12 of sets ABMP16als118_5_nnlo + Member 13 of sets ABMP16als118_5_nnlo + Member 14 of sets ABMP16als118_5_nnlo + Member 15 of sets ABMP16als118_5_nnlo + Member 16 of sets ABMP16als118_5_nnlo + Member 17 of sets ABMP16als118_5_nnlo + Member 18 of sets ABMP16als118_5_nnlo + Member 19 of sets ABMP16als118_5_nnlo + Member 20 of sets ABMP16als118_5_nnlo + Member 21 of sets ABMP16als118_5_nnlo + Member 22 of sets ABMP16als118_5_nnlo + Member 23 of sets ABMP16als118_5_nnlo + Member 24 of sets ABMP16als118_5_nnlo + Member 25 of sets ABMP16als118_5_nnlo + Member 26 of sets ABMP16als118_5_nnlo + Member 27 of sets ABMP16als118_5_nnlo + Member 28 of sets ABMP16als118_5_nnlo + Member 29 of sets ABMP16als118_5_nnlo + + + Member 0 of sets PDF4LHC15_nlo_100_pdfas + Member 1 of sets PDF4LHC15_nlo_100_pdfas + Member 2 of sets PDF4LHC15_nlo_100_pdfas + Member 3 of sets PDF4LHC15_nlo_100_pdfas + Member 4 of sets PDF4LHC15_nlo_100_pdfas + Member 5 of sets PDF4LHC15_nlo_100_pdfas + Member 6 of sets PDF4LHC15_nlo_100_pdfas + Member 7 of sets PDF4LHC15_nlo_100_pdfas + Member 8 of sets PDF4LHC15_nlo_100_pdfas + Member 9 of sets PDF4LHC15_nlo_100_pdfas + Member 10 of sets PDF4LHC15_nlo_100_pdfas + Member 11 of sets PDF4LHC15_nlo_100_pdfas + Member 12 of sets PDF4LHC15_nlo_100_pdfas + Member 13 of sets PDF4LHC15_nlo_100_pdfas + Member 14 of sets PDF4LHC15_nlo_100_pdfas + Member 15 of sets PDF4LHC15_nlo_100_pdfas + Member 16 of sets PDF4LHC15_nlo_100_pdfas + Member 17 of sets PDF4LHC15_nlo_100_pdfas + Member 18 of sets PDF4LHC15_nlo_100_pdfas + Member 19 of sets PDF4LHC15_nlo_100_pdfas + Member 20 of sets PDF4LHC15_nlo_100_pdfas + Member 21 of sets PDF4LHC15_nlo_100_pdfas + Member 22 of sets PDF4LHC15_nlo_100_pdfas + Member 23 of sets PDF4LHC15_nlo_100_pdfas + Member 24 of sets PDF4LHC15_nlo_100_pdfas + Member 25 of sets PDF4LHC15_nlo_100_pdfas + Member 26 of sets PDF4LHC15_nlo_100_pdfas + Member 27 of sets PDF4LHC15_nlo_100_pdfas + Member 28 of sets PDF4LHC15_nlo_100_pdfas + Member 29 of sets PDF4LHC15_nlo_100_pdfas + Member 30 of sets PDF4LHC15_nlo_100_pdfas + Member 31 of sets PDF4LHC15_nlo_100_pdfas + Member 32 of sets PDF4LHC15_nlo_100_pdfas + Member 33 of sets PDF4LHC15_nlo_100_pdfas + Member 34 of sets PDF4LHC15_nlo_100_pdfas + Member 35 of sets PDF4LHC15_nlo_100_pdfas + Member 36 of sets PDF4LHC15_nlo_100_pdfas + Member 37 of sets PDF4LHC15_nlo_100_pdfas + Member 38 of sets PDF4LHC15_nlo_100_pdfas + Member 39 of sets PDF4LHC15_nlo_100_pdfas + Member 40 of sets PDF4LHC15_nlo_100_pdfas + Member 41 of sets PDF4LHC15_nlo_100_pdfas + Member 42 of sets PDF4LHC15_nlo_100_pdfas + Member 43 of sets PDF4LHC15_nlo_100_pdfas + Member 44 of sets PDF4LHC15_nlo_100_pdfas + Member 45 of sets PDF4LHC15_nlo_100_pdfas + Member 46 of sets PDF4LHC15_nlo_100_pdfas + Member 47 of sets PDF4LHC15_nlo_100_pdfas + Member 48 of sets PDF4LHC15_nlo_100_pdfas + Member 49 of sets PDF4LHC15_nlo_100_pdfas + Member 50 of sets PDF4LHC15_nlo_100_pdfas + Member 51 of sets PDF4LHC15_nlo_100_pdfas + Member 52 of sets PDF4LHC15_nlo_100_pdfas + Member 53 of sets PDF4LHC15_nlo_100_pdfas + Member 54 of sets PDF4LHC15_nlo_100_pdfas + Member 55 of sets PDF4LHC15_nlo_100_pdfas + Member 56 of sets PDF4LHC15_nlo_100_pdfas + Member 57 of sets PDF4LHC15_nlo_100_pdfas + Member 58 of sets PDF4LHC15_nlo_100_pdfas + Member 59 of sets PDF4LHC15_nlo_100_pdfas + Member 60 of sets PDF4LHC15_nlo_100_pdfas + Member 61 of sets PDF4LHC15_nlo_100_pdfas + Member 62 of sets PDF4LHC15_nlo_100_pdfas + Member 63 of sets PDF4LHC15_nlo_100_pdfas + Member 64 of sets PDF4LHC15_nlo_100_pdfas + Member 65 of sets PDF4LHC15_nlo_100_pdfas + Member 66 of sets PDF4LHC15_nlo_100_pdfas + Member 67 of sets PDF4LHC15_nlo_100_pdfas + Member 68 of sets PDF4LHC15_nlo_100_pdfas + Member 69 of sets PDF4LHC15_nlo_100_pdfas + Member 70 of sets PDF4LHC15_nlo_100_pdfas + Member 71 of sets PDF4LHC15_nlo_100_pdfas + Member 72 of sets PDF4LHC15_nlo_100_pdfas + Member 73 of sets PDF4LHC15_nlo_100_pdfas + Member 74 of sets PDF4LHC15_nlo_100_pdfas + Member 75 of sets PDF4LHC15_nlo_100_pdfas + Member 76 of sets PDF4LHC15_nlo_100_pdfas + Member 77 of sets PDF4LHC15_nlo_100_pdfas + Member 78 of sets PDF4LHC15_nlo_100_pdfas + Member 79 of sets PDF4LHC15_nlo_100_pdfas + Member 80 of sets PDF4LHC15_nlo_100_pdfas + Member 81 of sets PDF4LHC15_nlo_100_pdfas + Member 82 of sets PDF4LHC15_nlo_100_pdfas + Member 83 of sets PDF4LHC15_nlo_100_pdfas + Member 84 of sets PDF4LHC15_nlo_100_pdfas + Member 85 of sets PDF4LHC15_nlo_100_pdfas + Member 86 of sets PDF4LHC15_nlo_100_pdfas + Member 87 of sets PDF4LHC15_nlo_100_pdfas + Member 88 of sets PDF4LHC15_nlo_100_pdfas + Member 89 of sets PDF4LHC15_nlo_100_pdfas + Member 90 of sets PDF4LHC15_nlo_100_pdfas + Member 91 of sets PDF4LHC15_nlo_100_pdfas + Member 92 of sets PDF4LHC15_nlo_100_pdfas + Member 93 of sets PDF4LHC15_nlo_100_pdfas + Member 94 of sets PDF4LHC15_nlo_100_pdfas + Member 95 of sets PDF4LHC15_nlo_100_pdfas + Member 96 of sets PDF4LHC15_nlo_100_pdfas + Member 97 of sets PDF4LHC15_nlo_100_pdfas + Member 98 of sets PDF4LHC15_nlo_100_pdfas + Member 99 of sets PDF4LHC15_nlo_100_pdfas + Member 100 of sets PDF4LHC15_nlo_100_pdfas + Member 101 of sets PDF4LHC15_nlo_100_pdfas + Member 102 of sets PDF4LHC15_nlo_100_pdfas + + + Member 0 of sets PDF4LHC15_nnlo_100_pdfas + Member 1 of sets PDF4LHC15_nnlo_100_pdfas + Member 2 of sets PDF4LHC15_nnlo_100_pdfas + Member 3 of sets PDF4LHC15_nnlo_100_pdfas + Member 4 of sets PDF4LHC15_nnlo_100_pdfas + Member 5 of sets PDF4LHC15_nnlo_100_pdfas + Member 6 of sets PDF4LHC15_nnlo_100_pdfas + Member 7 of sets PDF4LHC15_nnlo_100_pdfas + Member 8 of sets PDF4LHC15_nnlo_100_pdfas + Member 9 of sets PDF4LHC15_nnlo_100_pdfas + Member 10 of sets PDF4LHC15_nnlo_100_pdfas + Member 11 of sets PDF4LHC15_nnlo_100_pdfas + Member 12 of sets PDF4LHC15_nnlo_100_pdfas + Member 13 of sets PDF4LHC15_nnlo_100_pdfas + Member 14 of sets PDF4LHC15_nnlo_100_pdfas + Member 15 of sets PDF4LHC15_nnlo_100_pdfas + Member 16 of sets PDF4LHC15_nnlo_100_pdfas + Member 17 of sets PDF4LHC15_nnlo_100_pdfas + Member 18 of sets PDF4LHC15_nnlo_100_pdfas + Member 19 of sets PDF4LHC15_nnlo_100_pdfas + Member 20 of sets PDF4LHC15_nnlo_100_pdfas + Member 21 of sets PDF4LHC15_nnlo_100_pdfas + Member 22 of sets PDF4LHC15_nnlo_100_pdfas + Member 23 of sets PDF4LHC15_nnlo_100_pdfas + Member 24 of sets PDF4LHC15_nnlo_100_pdfas + Member 25 of sets PDF4LHC15_nnlo_100_pdfas + Member 26 of sets PDF4LHC15_nnlo_100_pdfas + Member 27 of sets PDF4LHC15_nnlo_100_pdfas + Member 28 of sets PDF4LHC15_nnlo_100_pdfas + Member 29 of sets PDF4LHC15_nnlo_100_pdfas + Member 30 of sets PDF4LHC15_nnlo_100_pdfas + Member 31 of sets PDF4LHC15_nnlo_100_pdfas + Member 32 of sets PDF4LHC15_nnlo_100_pdfas + Member 33 of sets PDF4LHC15_nnlo_100_pdfas + Member 34 of sets PDF4LHC15_nnlo_100_pdfas + Member 35 of sets PDF4LHC15_nnlo_100_pdfas + Member 36 of sets PDF4LHC15_nnlo_100_pdfas + Member 37 of sets PDF4LHC15_nnlo_100_pdfas + Member 38 of sets PDF4LHC15_nnlo_100_pdfas + Member 39 of sets PDF4LHC15_nnlo_100_pdfas + Member 40 of sets PDF4LHC15_nnlo_100_pdfas + Member 41 of sets PDF4LHC15_nnlo_100_pdfas + Member 42 of sets PDF4LHC15_nnlo_100_pdfas + Member 43 of sets PDF4LHC15_nnlo_100_pdfas + Member 44 of sets PDF4LHC15_nnlo_100_pdfas + Member 45 of sets PDF4LHC15_nnlo_100_pdfas + Member 46 of sets PDF4LHC15_nnlo_100_pdfas + Member 47 of sets PDF4LHC15_nnlo_100_pdfas + Member 48 of sets PDF4LHC15_nnlo_100_pdfas + Member 49 of sets PDF4LHC15_nnlo_100_pdfas + Member 50 of sets PDF4LHC15_nnlo_100_pdfas + Member 51 of sets PDF4LHC15_nnlo_100_pdfas + Member 52 of sets PDF4LHC15_nnlo_100_pdfas + Member 53 of sets PDF4LHC15_nnlo_100_pdfas + Member 54 of sets PDF4LHC15_nnlo_100_pdfas + Member 55 of sets PDF4LHC15_nnlo_100_pdfas + Member 56 of sets PDF4LHC15_nnlo_100_pdfas + Member 57 of sets PDF4LHC15_nnlo_100_pdfas + Member 58 of sets PDF4LHC15_nnlo_100_pdfas + Member 59 of sets PDF4LHC15_nnlo_100_pdfas + Member 60 of sets PDF4LHC15_nnlo_100_pdfas + Member 61 of sets PDF4LHC15_nnlo_100_pdfas + Member 62 of sets PDF4LHC15_nnlo_100_pdfas + Member 63 of sets PDF4LHC15_nnlo_100_pdfas + Member 64 of sets PDF4LHC15_nnlo_100_pdfas + Member 65 of sets PDF4LHC15_nnlo_100_pdfas + Member 66 of sets PDF4LHC15_nnlo_100_pdfas + Member 67 of sets PDF4LHC15_nnlo_100_pdfas + Member 68 of sets PDF4LHC15_nnlo_100_pdfas + Member 69 of sets PDF4LHC15_nnlo_100_pdfas + Member 70 of sets PDF4LHC15_nnlo_100_pdfas + Member 71 of sets PDF4LHC15_nnlo_100_pdfas + Member 72 of sets PDF4LHC15_nnlo_100_pdfas + Member 73 of sets PDF4LHC15_nnlo_100_pdfas + Member 74 of sets PDF4LHC15_nnlo_100_pdfas + Member 75 of sets PDF4LHC15_nnlo_100_pdfas + Member 76 of sets PDF4LHC15_nnlo_100_pdfas + Member 77 of sets PDF4LHC15_nnlo_100_pdfas + Member 78 of sets PDF4LHC15_nnlo_100_pdfas + Member 79 of sets PDF4LHC15_nnlo_100_pdfas + Member 80 of sets PDF4LHC15_nnlo_100_pdfas + Member 81 of sets PDF4LHC15_nnlo_100_pdfas + Member 82 of sets PDF4LHC15_nnlo_100_pdfas + Member 83 of sets PDF4LHC15_nnlo_100_pdfas + Member 84 of sets PDF4LHC15_nnlo_100_pdfas + Member 85 of sets PDF4LHC15_nnlo_100_pdfas + Member 86 of sets PDF4LHC15_nnlo_100_pdfas + Member 87 of sets PDF4LHC15_nnlo_100_pdfas + Member 88 of sets PDF4LHC15_nnlo_100_pdfas + Member 89 of sets PDF4LHC15_nnlo_100_pdfas + Member 90 of sets PDF4LHC15_nnlo_100_pdfas + Member 91 of sets PDF4LHC15_nnlo_100_pdfas + Member 92 of sets PDF4LHC15_nnlo_100_pdfas + Member 93 of sets PDF4LHC15_nnlo_100_pdfas + Member 94 of sets PDF4LHC15_nnlo_100_pdfas + Member 95 of sets PDF4LHC15_nnlo_100_pdfas + Member 96 of sets PDF4LHC15_nnlo_100_pdfas + Member 97 of sets PDF4LHC15_nnlo_100_pdfas + Member 98 of sets PDF4LHC15_nnlo_100_pdfas + Member 99 of sets PDF4LHC15_nnlo_100_pdfas + Member 100 of sets PDF4LHC15_nnlo_100_pdfas + Member 101 of sets PDF4LHC15_nnlo_100_pdfas + Member 102 of sets PDF4LHC15_nnlo_100_pdfas + + + Member 0 of sets PDF4LHC15_nlo_30_pdfas + Member 1 of sets PDF4LHC15_nlo_30_pdfas + Member 2 of sets PDF4LHC15_nlo_30_pdfas + Member 3 of sets PDF4LHC15_nlo_30_pdfas + Member 4 of sets PDF4LHC15_nlo_30_pdfas + Member 5 of sets PDF4LHC15_nlo_30_pdfas + Member 6 of sets PDF4LHC15_nlo_30_pdfas + Member 7 of sets PDF4LHC15_nlo_30_pdfas + Member 8 of sets PDF4LHC15_nlo_30_pdfas + Member 9 of sets PDF4LHC15_nlo_30_pdfas + Member 10 of sets PDF4LHC15_nlo_30_pdfas + Member 11 of sets PDF4LHC15_nlo_30_pdfas + Member 12 of sets PDF4LHC15_nlo_30_pdfas + Member 13 of sets PDF4LHC15_nlo_30_pdfas + Member 14 of sets PDF4LHC15_nlo_30_pdfas + Member 15 of sets PDF4LHC15_nlo_30_pdfas + Member 16 of sets PDF4LHC15_nlo_30_pdfas + Member 17 of sets PDF4LHC15_nlo_30_pdfas + Member 18 of sets PDF4LHC15_nlo_30_pdfas + Member 19 of sets PDF4LHC15_nlo_30_pdfas + Member 20 of sets PDF4LHC15_nlo_30_pdfas + Member 21 of sets PDF4LHC15_nlo_30_pdfas + Member 22 of sets PDF4LHC15_nlo_30_pdfas + Member 23 of sets PDF4LHC15_nlo_30_pdfas + Member 24 of sets PDF4LHC15_nlo_30_pdfas + Member 25 of sets PDF4LHC15_nlo_30_pdfas + Member 26 of sets PDF4LHC15_nlo_30_pdfas + Member 27 of sets PDF4LHC15_nlo_30_pdfas + Member 28 of sets PDF4LHC15_nlo_30_pdfas + Member 29 of sets PDF4LHC15_nlo_30_pdfas + Member 30 of sets PDF4LHC15_nlo_30_pdfas + Member 31 of sets PDF4LHC15_nlo_30_pdfas + Member 32 of sets PDF4LHC15_nlo_30_pdfas + + + Member 0 of sets PDF4LHC15_nnlo_30_pdfas + Member 1 of sets PDF4LHC15_nnlo_30_pdfas + Member 2 of sets PDF4LHC15_nnlo_30_pdfas + Member 3 of sets PDF4LHC15_nnlo_30_pdfas + Member 4 of sets PDF4LHC15_nnlo_30_pdfas + Member 5 of sets PDF4LHC15_nnlo_30_pdfas + Member 6 of sets PDF4LHC15_nnlo_30_pdfas + Member 7 of sets PDF4LHC15_nnlo_30_pdfas + Member 8 of sets PDF4LHC15_nnlo_30_pdfas + Member 9 of sets PDF4LHC15_nnlo_30_pdfas + Member 10 of sets PDF4LHC15_nnlo_30_pdfas + Member 11 of sets PDF4LHC15_nnlo_30_pdfas + Member 12 of sets PDF4LHC15_nnlo_30_pdfas + Member 13 of sets PDF4LHC15_nnlo_30_pdfas + Member 14 of sets PDF4LHC15_nnlo_30_pdfas + Member 15 of sets PDF4LHC15_nnlo_30_pdfas + Member 16 of sets PDF4LHC15_nnlo_30_pdfas + Member 17 of sets PDF4LHC15_nnlo_30_pdfas + Member 18 of sets PDF4LHC15_nnlo_30_pdfas + Member 19 of sets PDF4LHC15_nnlo_30_pdfas + Member 20 of sets PDF4LHC15_nnlo_30_pdfas + Member 21 of sets PDF4LHC15_nnlo_30_pdfas + Member 22 of sets PDF4LHC15_nnlo_30_pdfas + Member 23 of sets PDF4LHC15_nnlo_30_pdfas + Member 24 of sets PDF4LHC15_nnlo_30_pdfas + Member 25 of sets PDF4LHC15_nnlo_30_pdfas + Member 26 of sets PDF4LHC15_nnlo_30_pdfas + Member 27 of sets PDF4LHC15_nnlo_30_pdfas + Member 28 of sets PDF4LHC15_nnlo_30_pdfas + Member 29 of sets PDF4LHC15_nnlo_30_pdfas + Member 30 of sets PDF4LHC15_nnlo_30_pdfas + Member 31 of sets PDF4LHC15_nnlo_30_pdfas + Member 32 of sets PDF4LHC15_nnlo_30_pdfas + + + Member 0 of sets HERAPDF20_NLO_EIG + Member 1 of sets HERAPDF20_NLO_EIG + Member 2 of sets HERAPDF20_NLO_EIG + Member 3 of sets HERAPDF20_NLO_EIG + Member 4 of sets HERAPDF20_NLO_EIG + Member 5 of sets HERAPDF20_NLO_EIG + Member 6 of sets HERAPDF20_NLO_EIG + Member 7 of sets HERAPDF20_NLO_EIG + Member 8 of sets HERAPDF20_NLO_EIG + Member 9 of sets HERAPDF20_NLO_EIG + Member 10 of sets HERAPDF20_NLO_EIG + Member 11 of sets HERAPDF20_NLO_EIG + Member 12 of sets HERAPDF20_NLO_EIG + Member 13 of sets HERAPDF20_NLO_EIG + Member 14 of sets HERAPDF20_NLO_EIG + Member 15 of sets HERAPDF20_NLO_EIG + Member 16 of sets HERAPDF20_NLO_EIG + Member 17 of sets HERAPDF20_NLO_EIG + Member 18 of sets HERAPDF20_NLO_EIG + Member 19 of sets HERAPDF20_NLO_EIG + Member 20 of sets HERAPDF20_NLO_EIG + Member 21 of sets HERAPDF20_NLO_EIG + Member 22 of sets HERAPDF20_NLO_EIG + Member 23 of sets HERAPDF20_NLO_EIG + Member 24 of sets HERAPDF20_NLO_EIG + Member 25 of sets HERAPDF20_NLO_EIG + Member 26 of sets HERAPDF20_NLO_EIG + Member 27 of sets HERAPDF20_NLO_EIG + Member 28 of sets HERAPDF20_NLO_EIG + + + Member 0 of sets HERAPDF20_NLO_VAR + Member 1 of sets HERAPDF20_NLO_VAR + Member 2 of sets HERAPDF20_NLO_VAR + Member 3 of sets HERAPDF20_NLO_VAR + Member 4 of sets HERAPDF20_NLO_VAR + Member 5 of sets HERAPDF20_NLO_VAR + Member 6 of sets HERAPDF20_NLO_VAR + Member 7 of sets HERAPDF20_NLO_VAR + Member 8 of sets HERAPDF20_NLO_VAR + Member 9 of sets HERAPDF20_NLO_VAR + Member 10 of sets HERAPDF20_NLO_VAR + Member 11 of sets HERAPDF20_NLO_VAR + Member 12 of sets HERAPDF20_NLO_VAR + Member 13 of sets HERAPDF20_NLO_VAR + + + Member 0 of sets HERAPDF20_NNLO_EIG + Member 1 of sets HERAPDF20_NNLO_EIG + Member 2 of sets HERAPDF20_NNLO_EIG + Member 3 of sets HERAPDF20_NNLO_EIG + Member 4 of sets HERAPDF20_NNLO_EIG + Member 5 of sets HERAPDF20_NNLO_EIG + Member 6 of sets HERAPDF20_NNLO_EIG + Member 7 of sets HERAPDF20_NNLO_EIG + Member 8 of sets HERAPDF20_NNLO_EIG + Member 9 of sets HERAPDF20_NNLO_EIG + Member 10 of sets HERAPDF20_NNLO_EIG + Member 11 of sets HERAPDF20_NNLO_EIG + Member 12 of sets HERAPDF20_NNLO_EIG + Member 13 of sets HERAPDF20_NNLO_EIG + Member 14 of sets HERAPDF20_NNLO_EIG + Member 15 of sets HERAPDF20_NNLO_EIG + Member 16 of sets HERAPDF20_NNLO_EIG + Member 17 of sets HERAPDF20_NNLO_EIG + Member 18 of sets HERAPDF20_NNLO_EIG + Member 19 of sets HERAPDF20_NNLO_EIG + Member 20 of sets HERAPDF20_NNLO_EIG + Member 21 of sets HERAPDF20_NNLO_EIG + Member 22 of sets HERAPDF20_NNLO_EIG + Member 23 of sets HERAPDF20_NNLO_EIG + Member 24 of sets HERAPDF20_NNLO_EIG + Member 25 of sets HERAPDF20_NNLO_EIG + Member 26 of sets HERAPDF20_NNLO_EIG + Member 27 of sets HERAPDF20_NNLO_EIG + Member 28 of sets HERAPDF20_NNLO_EIG + + + Member 0 of sets HERAPDF20_NNLO_VAR + Member 1 of sets HERAPDF20_NNLO_VAR + Member 2 of sets HERAPDF20_NNLO_VAR + Member 3 of sets HERAPDF20_NNLO_VAR + Member 4 of sets HERAPDF20_NNLO_VAR + Member 5 of sets HERAPDF20_NNLO_VAR + Member 6 of sets HERAPDF20_NNLO_VAR + Member 7 of sets HERAPDF20_NNLO_VAR + Member 8 of sets HERAPDF20_NNLO_VAR + Member 9 of sets HERAPDF20_NNLO_VAR + Member 10 of sets HERAPDF20_NNLO_VAR + Member 11 of sets HERAPDF20_NNLO_VAR + Member 12 of sets HERAPDF20_NNLO_VAR + Member 13 of sets HERAPDF20_NNLO_VAR + + + Member 0 of sets CT14qed_inc_proton + Member 1 of sets CT14qed_inc_proton + Member 2 of sets CT14qed_inc_proton + Member 3 of sets CT14qed_inc_proton + Member 4 of sets CT14qed_inc_proton + Member 5 of sets CT14qed_inc_proton + Member 6 of sets CT14qed_inc_proton + Member 7 of sets CT14qed_inc_proton + Member 8 of sets CT14qed_inc_proton + Member 9 of sets CT14qed_inc_proton + Member 10 of sets CT14qed_inc_proton + Member 11 of sets CT14qed_inc_proton + Member 12 of sets CT14qed_inc_proton + Member 13 of sets CT14qed_inc_proton + Member 14 of sets CT14qed_inc_proton + Member 15 of sets CT14qed_inc_proton + Member 16 of sets CT14qed_inc_proton + Member 17 of sets CT14qed_inc_proton + Member 18 of sets CT14qed_inc_proton + Member 19 of sets CT14qed_inc_proton + Member 20 of sets CT14qed_inc_proton + Member 21 of sets CT14qed_inc_proton + Member 22 of sets CT14qed_inc_proton + Member 23 of sets CT14qed_inc_proton + Member 24 of sets CT14qed_inc_proton + Member 25 of sets CT14qed_inc_proton + Member 26 of sets CT14qed_inc_proton + Member 27 of sets CT14qed_inc_proton + Member 28 of sets CT14qed_inc_proton + Member 29 of sets CT14qed_inc_proton + Member 30 of sets CT14qed_inc_proton + + + Member 0 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 1 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 2 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 3 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 4 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 5 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 6 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 7 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 8 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 9 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 10 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 11 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 12 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 13 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 14 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 15 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 16 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 17 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 18 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 19 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 20 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 21 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 22 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 23 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 24 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 25 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 26 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 27 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 28 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 29 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 30 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 31 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 32 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 33 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 34 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 35 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 36 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 37 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 38 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 39 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 40 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 41 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 42 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 43 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 44 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 45 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 46 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 47 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 48 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 49 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 50 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 51 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 52 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 53 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 54 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 55 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 56 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 57 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 58 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 59 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 60 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 61 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 62 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 63 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 64 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 65 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 66 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 67 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 68 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 69 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 70 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 71 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 72 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 73 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 74 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 75 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 76 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 77 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 78 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 79 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 80 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 81 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 82 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 83 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 84 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 85 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 86 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 87 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 88 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 89 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 90 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 91 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 92 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 93 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 94 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 95 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 96 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 97 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 98 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 99 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 100 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 101 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 102 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 103 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 104 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 105 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 106 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 107 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + + + Member 0 of sets NNPDF30_nlo_nf_5_pdfas + Member 1 of sets NNPDF30_nlo_nf_5_pdfas + Member 2 of sets NNPDF30_nlo_nf_5_pdfas + Member 3 of sets NNPDF30_nlo_nf_5_pdfas + Member 4 of sets NNPDF30_nlo_nf_5_pdfas + Member 5 of sets NNPDF30_nlo_nf_5_pdfas + Member 6 of sets NNPDF30_nlo_nf_5_pdfas + Member 7 of sets NNPDF30_nlo_nf_5_pdfas + Member 8 of sets NNPDF30_nlo_nf_5_pdfas + Member 9 of sets NNPDF30_nlo_nf_5_pdfas + Member 10 of sets NNPDF30_nlo_nf_5_pdfas + Member 11 of sets NNPDF30_nlo_nf_5_pdfas + Member 12 of sets NNPDF30_nlo_nf_5_pdfas + Member 13 of sets NNPDF30_nlo_nf_5_pdfas + Member 14 of sets NNPDF30_nlo_nf_5_pdfas + Member 15 of sets NNPDF30_nlo_nf_5_pdfas + Member 16 of sets NNPDF30_nlo_nf_5_pdfas + Member 17 of sets NNPDF30_nlo_nf_5_pdfas + Member 18 of sets NNPDF30_nlo_nf_5_pdfas + Member 19 of sets NNPDF30_nlo_nf_5_pdfas + Member 20 of sets NNPDF30_nlo_nf_5_pdfas + Member 21 of sets NNPDF30_nlo_nf_5_pdfas + Member 22 of sets NNPDF30_nlo_nf_5_pdfas + Member 23 of sets NNPDF30_nlo_nf_5_pdfas + Member 24 of sets NNPDF30_nlo_nf_5_pdfas + Member 25 of sets NNPDF30_nlo_nf_5_pdfas + Member 26 of sets NNPDF30_nlo_nf_5_pdfas + Member 27 of sets NNPDF30_nlo_nf_5_pdfas + Member 28 of sets NNPDF30_nlo_nf_5_pdfas + Member 29 of sets NNPDF30_nlo_nf_5_pdfas + Member 30 of sets NNPDF30_nlo_nf_5_pdfas + Member 31 of sets NNPDF30_nlo_nf_5_pdfas + Member 32 of sets NNPDF30_nlo_nf_5_pdfas + Member 33 of sets NNPDF30_nlo_nf_5_pdfas + Member 34 of sets NNPDF30_nlo_nf_5_pdfas + Member 35 of sets NNPDF30_nlo_nf_5_pdfas + Member 36 of sets NNPDF30_nlo_nf_5_pdfas + Member 37 of sets NNPDF30_nlo_nf_5_pdfas + Member 38 of sets NNPDF30_nlo_nf_5_pdfas + Member 39 of sets NNPDF30_nlo_nf_5_pdfas + Member 40 of sets NNPDF30_nlo_nf_5_pdfas + Member 41 of sets NNPDF30_nlo_nf_5_pdfas + Member 42 of sets NNPDF30_nlo_nf_5_pdfas + Member 43 of sets NNPDF30_nlo_nf_5_pdfas + Member 44 of sets NNPDF30_nlo_nf_5_pdfas + Member 45 of sets NNPDF30_nlo_nf_5_pdfas + Member 46 of sets NNPDF30_nlo_nf_5_pdfas + Member 47 of sets NNPDF30_nlo_nf_5_pdfas + Member 48 of sets NNPDF30_nlo_nf_5_pdfas + Member 49 of sets NNPDF30_nlo_nf_5_pdfas + Member 50 of sets NNPDF30_nlo_nf_5_pdfas + Member 51 of sets NNPDF30_nlo_nf_5_pdfas + Member 52 of sets NNPDF30_nlo_nf_5_pdfas + Member 53 of sets NNPDF30_nlo_nf_5_pdfas + Member 54 of sets NNPDF30_nlo_nf_5_pdfas + Member 55 of sets NNPDF30_nlo_nf_5_pdfas + Member 56 of sets NNPDF30_nlo_nf_5_pdfas + Member 57 of sets NNPDF30_nlo_nf_5_pdfas + Member 58 of sets NNPDF30_nlo_nf_5_pdfas + Member 59 of sets NNPDF30_nlo_nf_5_pdfas + Member 60 of sets NNPDF30_nlo_nf_5_pdfas + Member 61 of sets NNPDF30_nlo_nf_5_pdfas + Member 62 of sets NNPDF30_nlo_nf_5_pdfas + Member 63 of sets NNPDF30_nlo_nf_5_pdfas + Member 64 of sets NNPDF30_nlo_nf_5_pdfas + Member 65 of sets NNPDF30_nlo_nf_5_pdfas + Member 66 of sets NNPDF30_nlo_nf_5_pdfas + Member 67 of sets NNPDF30_nlo_nf_5_pdfas + Member 68 of sets NNPDF30_nlo_nf_5_pdfas + Member 69 of sets NNPDF30_nlo_nf_5_pdfas + Member 70 of sets NNPDF30_nlo_nf_5_pdfas + Member 71 of sets NNPDF30_nlo_nf_5_pdfas + Member 72 of sets NNPDF30_nlo_nf_5_pdfas + Member 73 of sets NNPDF30_nlo_nf_5_pdfas + Member 74 of sets NNPDF30_nlo_nf_5_pdfas + Member 75 of sets NNPDF30_nlo_nf_5_pdfas + Member 76 of sets NNPDF30_nlo_nf_5_pdfas + Member 77 of sets NNPDF30_nlo_nf_5_pdfas + Member 78 of sets NNPDF30_nlo_nf_5_pdfas + Member 79 of sets NNPDF30_nlo_nf_5_pdfas + Member 80 of sets NNPDF30_nlo_nf_5_pdfas + Member 81 of sets NNPDF30_nlo_nf_5_pdfas + Member 82 of sets NNPDF30_nlo_nf_5_pdfas + Member 83 of sets NNPDF30_nlo_nf_5_pdfas + Member 84 of sets NNPDF30_nlo_nf_5_pdfas + Member 85 of sets NNPDF30_nlo_nf_5_pdfas + Member 86 of sets NNPDF30_nlo_nf_5_pdfas + Member 87 of sets NNPDF30_nlo_nf_5_pdfas + Member 88 of sets NNPDF30_nlo_nf_5_pdfas + Member 89 of sets NNPDF30_nlo_nf_5_pdfas + Member 90 of sets NNPDF30_nlo_nf_5_pdfas + Member 91 of sets NNPDF30_nlo_nf_5_pdfas + Member 92 of sets NNPDF30_nlo_nf_5_pdfas + Member 93 of sets NNPDF30_nlo_nf_5_pdfas + Member 94 of sets NNPDF30_nlo_nf_5_pdfas + Member 95 of sets NNPDF30_nlo_nf_5_pdfas + Member 96 of sets NNPDF30_nlo_nf_5_pdfas + Member 97 of sets NNPDF30_nlo_nf_5_pdfas + Member 98 of sets NNPDF30_nlo_nf_5_pdfas + Member 99 of sets NNPDF30_nlo_nf_5_pdfas + Member 100 of sets NNPDF30_nlo_nf_5_pdfas + Member 101 of sets NNPDF30_nlo_nf_5_pdfas + Member 102 of sets NNPDF30_nlo_nf_5_pdfas + + + Member 0 of sets NNPDF30_nnlo_nf_5_pdfas + + + Member 0 of sets NNPDF31_lo_as_0118 + + + Member 0 of sets NNPDF31_lo_as_0130 + + + Member 0 of sets NNPDF30_lo_as_0118 + + + Member 0 of sets NNPDF30_lo_as_0130 + + diff --git a/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt b/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt new file mode 100644 index 0000000000000..5058c004a78c3 --- /dev/null +++ b/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt @@ -0,0 +1,117 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/PUMoriond17_plus5percentMaterial_94X_mcRun2_asymptotic_v3-v2/70000/860C654F-633D-E911-8316-0CC47A2B03A2.root + + muR=0.10000E+01 muF=0.10000E+01 + muR=0.10000E+01 muF=0.20000E+01 + muR=0.10000E+01 muF=0.50000E+00 + muR=0.20000E+01 muF=0.10000E+01 + muR=0.20000E+01 muF=0.20000E+01 + muR=0.20000E+01 muF=0.50000E+00 + muR=0.50000E+00 muF=0.10000E+01 + muR=0.50000E+00 muF=0.20000E+01 + muR=0.50000E+00 muF=0.50000E+00 + + + pdfset=292201 + pdfset=292202 + pdfset=292203 + pdfset=292204 + pdfset=292205 + pdfset=292206 + pdfset=292207 + pdfset=292208 + pdfset=292209 + pdfset=292210 + pdfset=292211 + pdfset=292212 + pdfset=292213 + pdfset=292214 + pdfset=292215 + pdfset=292216 + pdfset=292217 + pdfset=292218 + pdfset=292219 + pdfset=292220 + pdfset=292221 + pdfset=292222 + pdfset=292223 + pdfset=292224 + pdfset=292225 + pdfset=292226 + pdfset=292227 + pdfset=292228 + pdfset=292229 + pdfset=292230 + pdfset=292231 + pdfset=292232 + pdfset=292233 + pdfset=292234 + pdfset=292235 + pdfset=292236 + pdfset=292237 + pdfset=292238 + pdfset=292239 + pdfset=292240 + pdfset=292241 + pdfset=292242 + pdfset=292243 + pdfset=292244 + pdfset=292245 + pdfset=292246 + pdfset=292247 + pdfset=292248 + pdfset=292249 + pdfset=292250 + pdfset=292251 + pdfset=292252 + pdfset=292253 + pdfset=292254 + pdfset=292255 + pdfset=292256 + pdfset=292257 + pdfset=292258 + pdfset=292259 + pdfset=292260 + pdfset=292261 + pdfset=292262 + pdfset=292263 + pdfset=292264 + pdfset=292265 + pdfset=292266 + pdfset=292267 + pdfset=292268 + pdfset=292269 + pdfset=292270 + pdfset=292271 + pdfset=292272 + pdfset=292273 + pdfset=292274 + pdfset=292275 + pdfset=292276 + pdfset=292277 + pdfset=292278 + pdfset=292279 + pdfset=292280 + pdfset=292281 + pdfset=292282 + pdfset=292283 + pdfset=292284 + pdfset=292285 + pdfset=292286 + pdfset=292287 + pdfset=292288 + pdfset=292289 + pdfset=292290 + pdfset=292291 + pdfset=292292 + pdfset=292293 + pdfset=292294 + pdfset=292295 + pdfset=292296 + pdfset=292297 + pdfset=292298 + pdfset=292299 + pdfset=292300 + pdfset=292301 + pdfset=292302 + + diff --git a/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt b/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt new file mode 100644 index 0000000000000..db48284ba64bc --- /dev/null +++ b/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt @@ -0,0 +1,1158 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15_ext2-v1/260000/61CD1B34-65BD-DF42-812C-87CEF2E9AD1A.root + + dyn= -1 muR=0.10000E+01 muF=0.10000E+01 + dyn= -1 muR=0.20000E+01 muF=0.10000E+01 + dyn= -1 muR=0.50000E+00 muF=0.10000E+01 + dyn= -1 muR=0.10000E+01 muF=0.20000E+01 + dyn= -1 muR=0.20000E+01 muF=0.20000E+01 + dyn= -1 muR=0.50000E+00 muF=0.20000E+01 + dyn= -1 muR=0.10000E+01 muF=0.50000E+00 + dyn= -1 muR=0.20000E+01 muF=0.50000E+00 + dyn= -1 muR=0.50000E+00 muF=0.50000E+00 + + + PDF= 306000 NNPDF31_nnlo_hessian_pdfas + PDF= 306001 NNPDF31_nnlo_hessian_pdfas + PDF= 306002 NNPDF31_nnlo_hessian_pdfas + PDF= 306003 NNPDF31_nnlo_hessian_pdfas + PDF= 306004 NNPDF31_nnlo_hessian_pdfas + PDF= 306005 NNPDF31_nnlo_hessian_pdfas + PDF= 306006 NNPDF31_nnlo_hessian_pdfas + PDF= 306007 NNPDF31_nnlo_hessian_pdfas + PDF= 306008 NNPDF31_nnlo_hessian_pdfas + PDF= 306009 NNPDF31_nnlo_hessian_pdfas + PDF= 306010 NNPDF31_nnlo_hessian_pdfas + PDF= 306011 NNPDF31_nnlo_hessian_pdfas + PDF= 306012 NNPDF31_nnlo_hessian_pdfas + PDF= 306013 NNPDF31_nnlo_hessian_pdfas + PDF= 306014 NNPDF31_nnlo_hessian_pdfas + PDF= 306015 NNPDF31_nnlo_hessian_pdfas + PDF= 306016 NNPDF31_nnlo_hessian_pdfas + PDF= 306017 NNPDF31_nnlo_hessian_pdfas + PDF= 306018 NNPDF31_nnlo_hessian_pdfas + PDF= 306019 NNPDF31_nnlo_hessian_pdfas + PDF= 306020 NNPDF31_nnlo_hessian_pdfas + PDF= 306021 NNPDF31_nnlo_hessian_pdfas + PDF= 306022 NNPDF31_nnlo_hessian_pdfas + PDF= 306023 NNPDF31_nnlo_hessian_pdfas + PDF= 306024 NNPDF31_nnlo_hessian_pdfas + PDF= 306025 NNPDF31_nnlo_hessian_pdfas + PDF= 306026 NNPDF31_nnlo_hessian_pdfas + PDF= 306027 NNPDF31_nnlo_hessian_pdfas + PDF= 306028 NNPDF31_nnlo_hessian_pdfas + PDF= 306029 NNPDF31_nnlo_hessian_pdfas + PDF= 306030 NNPDF31_nnlo_hessian_pdfas + PDF= 306031 NNPDF31_nnlo_hessian_pdfas + PDF= 306032 NNPDF31_nnlo_hessian_pdfas + PDF= 306033 NNPDF31_nnlo_hessian_pdfas + PDF= 306034 NNPDF31_nnlo_hessian_pdfas + PDF= 306035 NNPDF31_nnlo_hessian_pdfas + PDF= 306036 NNPDF31_nnlo_hessian_pdfas + PDF= 306037 NNPDF31_nnlo_hessian_pdfas + PDF= 306038 NNPDF31_nnlo_hessian_pdfas + PDF= 306039 NNPDF31_nnlo_hessian_pdfas + PDF= 306040 NNPDF31_nnlo_hessian_pdfas + PDF= 306041 NNPDF31_nnlo_hessian_pdfas + PDF= 306042 NNPDF31_nnlo_hessian_pdfas + PDF= 306043 NNPDF31_nnlo_hessian_pdfas + PDF= 306044 NNPDF31_nnlo_hessian_pdfas + PDF= 306045 NNPDF31_nnlo_hessian_pdfas + PDF= 306046 NNPDF31_nnlo_hessian_pdfas + PDF= 306047 NNPDF31_nnlo_hessian_pdfas + PDF= 306048 NNPDF31_nnlo_hessian_pdfas + PDF= 306049 NNPDF31_nnlo_hessian_pdfas + PDF= 306050 NNPDF31_nnlo_hessian_pdfas + PDF= 306051 NNPDF31_nnlo_hessian_pdfas + PDF= 306052 NNPDF31_nnlo_hessian_pdfas + PDF= 306053 NNPDF31_nnlo_hessian_pdfas + PDF= 306054 NNPDF31_nnlo_hessian_pdfas + PDF= 306055 NNPDF31_nnlo_hessian_pdfas + PDF= 306056 NNPDF31_nnlo_hessian_pdfas + PDF= 306057 NNPDF31_nnlo_hessian_pdfas + PDF= 306058 NNPDF31_nnlo_hessian_pdfas + PDF= 306059 NNPDF31_nnlo_hessian_pdfas + PDF= 306060 NNPDF31_nnlo_hessian_pdfas + PDF= 306061 NNPDF31_nnlo_hessian_pdfas + PDF= 306062 NNPDF31_nnlo_hessian_pdfas + PDF= 306063 NNPDF31_nnlo_hessian_pdfas + PDF= 306064 NNPDF31_nnlo_hessian_pdfas + PDF= 306065 NNPDF31_nnlo_hessian_pdfas + PDF= 306066 NNPDF31_nnlo_hessian_pdfas + PDF= 306067 NNPDF31_nnlo_hessian_pdfas + PDF= 306068 NNPDF31_nnlo_hessian_pdfas + PDF= 306069 NNPDF31_nnlo_hessian_pdfas + PDF= 306070 NNPDF31_nnlo_hessian_pdfas + PDF= 306071 NNPDF31_nnlo_hessian_pdfas + PDF= 306072 NNPDF31_nnlo_hessian_pdfas + PDF= 306073 NNPDF31_nnlo_hessian_pdfas + PDF= 306074 NNPDF31_nnlo_hessian_pdfas + PDF= 306075 NNPDF31_nnlo_hessian_pdfas + PDF= 306076 NNPDF31_nnlo_hessian_pdfas + PDF= 306077 NNPDF31_nnlo_hessian_pdfas + PDF= 306078 NNPDF31_nnlo_hessian_pdfas + PDF= 306079 NNPDF31_nnlo_hessian_pdfas + PDF= 306080 NNPDF31_nnlo_hessian_pdfas + PDF= 306081 NNPDF31_nnlo_hessian_pdfas + PDF= 306082 NNPDF31_nnlo_hessian_pdfas + PDF= 306083 NNPDF31_nnlo_hessian_pdfas + PDF= 306084 NNPDF31_nnlo_hessian_pdfas + PDF= 306085 NNPDF31_nnlo_hessian_pdfas + PDF= 306086 NNPDF31_nnlo_hessian_pdfas + PDF= 306087 NNPDF31_nnlo_hessian_pdfas + PDF= 306088 NNPDF31_nnlo_hessian_pdfas + PDF= 306089 NNPDF31_nnlo_hessian_pdfas + PDF= 306090 NNPDF31_nnlo_hessian_pdfas + PDF= 306091 NNPDF31_nnlo_hessian_pdfas + PDF= 306092 NNPDF31_nnlo_hessian_pdfas + PDF= 306093 NNPDF31_nnlo_hessian_pdfas + PDF= 306094 NNPDF31_nnlo_hessian_pdfas + PDF= 306095 NNPDF31_nnlo_hessian_pdfas + PDF= 306096 NNPDF31_nnlo_hessian_pdfas + PDF= 306097 NNPDF31_nnlo_hessian_pdfas + PDF= 306098 NNPDF31_nnlo_hessian_pdfas + PDF= 306099 NNPDF31_nnlo_hessian_pdfas + PDF= 306100 NNPDF31_nnlo_hessian_pdfas + PDF= 306101 NNPDF31_nnlo_hessian_pdfas + PDF= 306102 NNPDF31_nnlo_hessian_pdfas + + + PDF= 322500 NNPDF31_nnlo_as_0108 + + + PDF= 322700 NNPDF31_nnlo_as_0110 + + + PDF= 322900 NNPDF31_nnlo_as_0112 + + + PDF= 323100 NNPDF31_nnlo_as_0114 + + + PDF= 323300 NNPDF31_nnlo_as_0117 + + + PDF= 323500 NNPDF31_nnlo_as_0119 + + + PDF= 323700 NNPDF31_nnlo_as_0122 + + + PDF= 323900 NNPDF31_nnlo_as_0124 + + + PDF= 305800 NNPDF31_nlo_hessian_pdfas + PDF= 305801 NNPDF31_nlo_hessian_pdfas + PDF= 305802 NNPDF31_nlo_hessian_pdfas + PDF= 305803 NNPDF31_nlo_hessian_pdfas + PDF= 305804 NNPDF31_nlo_hessian_pdfas + PDF= 305805 NNPDF31_nlo_hessian_pdfas + PDF= 305806 NNPDF31_nlo_hessian_pdfas + PDF= 305807 NNPDF31_nlo_hessian_pdfas + PDF= 305808 NNPDF31_nlo_hessian_pdfas + PDF= 305809 NNPDF31_nlo_hessian_pdfas + PDF= 305810 NNPDF31_nlo_hessian_pdfas + PDF= 305811 NNPDF31_nlo_hessian_pdfas + PDF= 305812 NNPDF31_nlo_hessian_pdfas + PDF= 305813 NNPDF31_nlo_hessian_pdfas + PDF= 305814 NNPDF31_nlo_hessian_pdfas + PDF= 305815 NNPDF31_nlo_hessian_pdfas + PDF= 305816 NNPDF31_nlo_hessian_pdfas + PDF= 305817 NNPDF31_nlo_hessian_pdfas + PDF= 305818 NNPDF31_nlo_hessian_pdfas + PDF= 305819 NNPDF31_nlo_hessian_pdfas + PDF= 305820 NNPDF31_nlo_hessian_pdfas + PDF= 305821 NNPDF31_nlo_hessian_pdfas + PDF= 305822 NNPDF31_nlo_hessian_pdfas + PDF= 305823 NNPDF31_nlo_hessian_pdfas + PDF= 305824 NNPDF31_nlo_hessian_pdfas + PDF= 305825 NNPDF31_nlo_hessian_pdfas + PDF= 305826 NNPDF31_nlo_hessian_pdfas + PDF= 305827 NNPDF31_nlo_hessian_pdfas + PDF= 305828 NNPDF31_nlo_hessian_pdfas + PDF= 305829 NNPDF31_nlo_hessian_pdfas + PDF= 305830 NNPDF31_nlo_hessian_pdfas + PDF= 305831 NNPDF31_nlo_hessian_pdfas + PDF= 305832 NNPDF31_nlo_hessian_pdfas + PDF= 305833 NNPDF31_nlo_hessian_pdfas + PDF= 305834 NNPDF31_nlo_hessian_pdfas + PDF= 305835 NNPDF31_nlo_hessian_pdfas + PDF= 305836 NNPDF31_nlo_hessian_pdfas + PDF= 305837 NNPDF31_nlo_hessian_pdfas + PDF= 305838 NNPDF31_nlo_hessian_pdfas + PDF= 305839 NNPDF31_nlo_hessian_pdfas + PDF= 305840 NNPDF31_nlo_hessian_pdfas + PDF= 305841 NNPDF31_nlo_hessian_pdfas + PDF= 305842 NNPDF31_nlo_hessian_pdfas + PDF= 305843 NNPDF31_nlo_hessian_pdfas + PDF= 305844 NNPDF31_nlo_hessian_pdfas + PDF= 305845 NNPDF31_nlo_hessian_pdfas + PDF= 305846 NNPDF31_nlo_hessian_pdfas + PDF= 305847 NNPDF31_nlo_hessian_pdfas + PDF= 305848 NNPDF31_nlo_hessian_pdfas + PDF= 305849 NNPDF31_nlo_hessian_pdfas + PDF= 305850 NNPDF31_nlo_hessian_pdfas + PDF= 305851 NNPDF31_nlo_hessian_pdfas + PDF= 305852 NNPDF31_nlo_hessian_pdfas + PDF= 305853 NNPDF31_nlo_hessian_pdfas + PDF= 305854 NNPDF31_nlo_hessian_pdfas + PDF= 305855 NNPDF31_nlo_hessian_pdfas + PDF= 305856 NNPDF31_nlo_hessian_pdfas + PDF= 305857 NNPDF31_nlo_hessian_pdfas + PDF= 305858 NNPDF31_nlo_hessian_pdfas + PDF= 305859 NNPDF31_nlo_hessian_pdfas + PDF= 305860 NNPDF31_nlo_hessian_pdfas + PDF= 305861 NNPDF31_nlo_hessian_pdfas + PDF= 305862 NNPDF31_nlo_hessian_pdfas + PDF= 305863 NNPDF31_nlo_hessian_pdfas + PDF= 305864 NNPDF31_nlo_hessian_pdfas + PDF= 305865 NNPDF31_nlo_hessian_pdfas + PDF= 305866 NNPDF31_nlo_hessian_pdfas + PDF= 305867 NNPDF31_nlo_hessian_pdfas + PDF= 305868 NNPDF31_nlo_hessian_pdfas + PDF= 305869 NNPDF31_nlo_hessian_pdfas + PDF= 305870 NNPDF31_nlo_hessian_pdfas + PDF= 305871 NNPDF31_nlo_hessian_pdfas + PDF= 305872 NNPDF31_nlo_hessian_pdfas + PDF= 305873 NNPDF31_nlo_hessian_pdfas + PDF= 305874 NNPDF31_nlo_hessian_pdfas + PDF= 305875 NNPDF31_nlo_hessian_pdfas + PDF= 305876 NNPDF31_nlo_hessian_pdfas + PDF= 305877 NNPDF31_nlo_hessian_pdfas + PDF= 305878 NNPDF31_nlo_hessian_pdfas + PDF= 305879 NNPDF31_nlo_hessian_pdfas + PDF= 305880 NNPDF31_nlo_hessian_pdfas + PDF= 305881 NNPDF31_nlo_hessian_pdfas + PDF= 305882 NNPDF31_nlo_hessian_pdfas + PDF= 305883 NNPDF31_nlo_hessian_pdfas + PDF= 305884 NNPDF31_nlo_hessian_pdfas + PDF= 305885 NNPDF31_nlo_hessian_pdfas + PDF= 305886 NNPDF31_nlo_hessian_pdfas + PDF= 305887 NNPDF31_nlo_hessian_pdfas + PDF= 305888 NNPDF31_nlo_hessian_pdfas + PDF= 305889 NNPDF31_nlo_hessian_pdfas + PDF= 305890 NNPDF31_nlo_hessian_pdfas + PDF= 305891 NNPDF31_nlo_hessian_pdfas + PDF= 305892 NNPDF31_nlo_hessian_pdfas + PDF= 305893 NNPDF31_nlo_hessian_pdfas + PDF= 305894 NNPDF31_nlo_hessian_pdfas + PDF= 305895 NNPDF31_nlo_hessian_pdfas + PDF= 305896 NNPDF31_nlo_hessian_pdfas + PDF= 305897 NNPDF31_nlo_hessian_pdfas + PDF= 305898 NNPDF31_nlo_hessian_pdfas + PDF= 305899 NNPDF31_nlo_hessian_pdfas + PDF= 305900 NNPDF31_nlo_hessian_pdfas + PDF= 305901 NNPDF31_nlo_hessian_pdfas + PDF= 305902 NNPDF31_nlo_hessian_pdfas + + + PDF= 13000 CT14nnlo + PDF= 13001 CT14nnlo + PDF= 13002 CT14nnlo + PDF= 13003 CT14nnlo + PDF= 13004 CT14nnlo + PDF= 13005 CT14nnlo + PDF= 13006 CT14nnlo + PDF= 13007 CT14nnlo + PDF= 13008 CT14nnlo + PDF= 13009 CT14nnlo + PDF= 13010 CT14nnlo + PDF= 13011 CT14nnlo + PDF= 13012 CT14nnlo + PDF= 13013 CT14nnlo + PDF= 13014 CT14nnlo + PDF= 13015 CT14nnlo + PDF= 13016 CT14nnlo + PDF= 13017 CT14nnlo + PDF= 13018 CT14nnlo + PDF= 13019 CT14nnlo + PDF= 13020 CT14nnlo + PDF= 13021 CT14nnlo + PDF= 13022 CT14nnlo + PDF= 13023 CT14nnlo + PDF= 13024 CT14nnlo + PDF= 13025 CT14nnlo + PDF= 13026 CT14nnlo + PDF= 13027 CT14nnlo + PDF= 13028 CT14nnlo + PDF= 13029 CT14nnlo + PDF= 13030 CT14nnlo + PDF= 13031 CT14nnlo + PDF= 13032 CT14nnlo + PDF= 13033 CT14nnlo + PDF= 13034 CT14nnlo + PDF= 13035 CT14nnlo + PDF= 13036 CT14nnlo + PDF= 13037 CT14nnlo + PDF= 13038 CT14nnlo + PDF= 13039 CT14nnlo + PDF= 13040 CT14nnlo + PDF= 13041 CT14nnlo + PDF= 13042 CT14nnlo + PDF= 13043 CT14nnlo + PDF= 13044 CT14nnlo + PDF= 13045 CT14nnlo + PDF= 13046 CT14nnlo + PDF= 13047 CT14nnlo + PDF= 13048 CT14nnlo + PDF= 13049 CT14nnlo + PDF= 13050 CT14nnlo + PDF= 13051 CT14nnlo + PDF= 13052 CT14nnlo + PDF= 13053 CT14nnlo + PDF= 13054 CT14nnlo + PDF= 13055 CT14nnlo + PDF= 13056 CT14nnlo + + + PDF= 13065 CT14nnlo_as_0116 + + + PDF= 13069 CT14nnlo_as_0120 + + + PDF= 13100 CT14nlo + PDF= 13101 CT14nlo + PDF= 13102 CT14nlo + PDF= 13103 CT14nlo + PDF= 13104 CT14nlo + PDF= 13105 CT14nlo + PDF= 13106 CT14nlo + PDF= 13107 CT14nlo + PDF= 13108 CT14nlo + PDF= 13109 CT14nlo + PDF= 13110 CT14nlo + PDF= 13111 CT14nlo + PDF= 13112 CT14nlo + PDF= 13113 CT14nlo + PDF= 13114 CT14nlo + PDF= 13115 CT14nlo + PDF= 13116 CT14nlo + PDF= 13117 CT14nlo + PDF= 13118 CT14nlo + PDF= 13119 CT14nlo + PDF= 13120 CT14nlo + PDF= 13121 CT14nlo + PDF= 13122 CT14nlo + PDF= 13123 CT14nlo + PDF= 13124 CT14nlo + PDF= 13125 CT14nlo + PDF= 13126 CT14nlo + PDF= 13127 CT14nlo + PDF= 13128 CT14nlo + PDF= 13129 CT14nlo + PDF= 13130 CT14nlo + PDF= 13131 CT14nlo + PDF= 13132 CT14nlo + PDF= 13133 CT14nlo + PDF= 13134 CT14nlo + PDF= 13135 CT14nlo + PDF= 13136 CT14nlo + PDF= 13137 CT14nlo + PDF= 13138 CT14nlo + PDF= 13139 CT14nlo + PDF= 13140 CT14nlo + PDF= 13141 CT14nlo + PDF= 13142 CT14nlo + PDF= 13143 CT14nlo + PDF= 13144 CT14nlo + PDF= 13145 CT14nlo + PDF= 13146 CT14nlo + PDF= 13147 CT14nlo + PDF= 13148 CT14nlo + PDF= 13149 CT14nlo + PDF= 13150 CT14nlo + PDF= 13151 CT14nlo + PDF= 13152 CT14nlo + PDF= 13153 CT14nlo + PDF= 13154 CT14nlo + PDF= 13155 CT14nlo + PDF= 13156 CT14nlo + + + PDF= 13163 CT14nlo_as_0116 + + + PDF= 13167 CT14nlo_as_0120 + + + PDF= 13200 CT14lo + + + PDF= 25200 MMHT2014nlo68clas118 + PDF= 25201 MMHT2014nlo68clas118 + PDF= 25202 MMHT2014nlo68clas118 + PDF= 25203 MMHT2014nlo68clas118 + PDF= 25204 MMHT2014nlo68clas118 + PDF= 25205 MMHT2014nlo68clas118 + PDF= 25206 MMHT2014nlo68clas118 + PDF= 25207 MMHT2014nlo68clas118 + PDF= 25208 MMHT2014nlo68clas118 + PDF= 25209 MMHT2014nlo68clas118 + PDF= 25210 MMHT2014nlo68clas118 + PDF= 25211 MMHT2014nlo68clas118 + PDF= 25212 MMHT2014nlo68clas118 + PDF= 25213 MMHT2014nlo68clas118 + PDF= 25214 MMHT2014nlo68clas118 + PDF= 25215 MMHT2014nlo68clas118 + PDF= 25216 MMHT2014nlo68clas118 + PDF= 25217 MMHT2014nlo68clas118 + PDF= 25218 MMHT2014nlo68clas118 + PDF= 25219 MMHT2014nlo68clas118 + PDF= 25220 MMHT2014nlo68clas118 + PDF= 25221 MMHT2014nlo68clas118 + PDF= 25222 MMHT2014nlo68clas118 + PDF= 25223 MMHT2014nlo68clas118 + PDF= 25224 MMHT2014nlo68clas118 + PDF= 25225 MMHT2014nlo68clas118 + PDF= 25226 MMHT2014nlo68clas118 + PDF= 25227 MMHT2014nlo68clas118 + PDF= 25228 MMHT2014nlo68clas118 + PDF= 25229 MMHT2014nlo68clas118 + PDF= 25230 MMHT2014nlo68clas118 + PDF= 25231 MMHT2014nlo68clas118 + PDF= 25232 MMHT2014nlo68clas118 + PDF= 25233 MMHT2014nlo68clas118 + PDF= 25234 MMHT2014nlo68clas118 + PDF= 25235 MMHT2014nlo68clas118 + PDF= 25236 MMHT2014nlo68clas118 + PDF= 25237 MMHT2014nlo68clas118 + PDF= 25238 MMHT2014nlo68clas118 + PDF= 25239 MMHT2014nlo68clas118 + PDF= 25240 MMHT2014nlo68clas118 + PDF= 25241 MMHT2014nlo68clas118 + PDF= 25242 MMHT2014nlo68clas118 + PDF= 25243 MMHT2014nlo68clas118 + PDF= 25244 MMHT2014nlo68clas118 + PDF= 25245 MMHT2014nlo68clas118 + PDF= 25246 MMHT2014nlo68clas118 + PDF= 25247 MMHT2014nlo68clas118 + PDF= 25248 MMHT2014nlo68clas118 + PDF= 25249 MMHT2014nlo68clas118 + PDF= 25250 MMHT2014nlo68clas118 + + + PDF= 25300 MMHT2014nnlo68cl + PDF= 25301 MMHT2014nnlo68cl + PDF= 25302 MMHT2014nnlo68cl + PDF= 25303 MMHT2014nnlo68cl + PDF= 25304 MMHT2014nnlo68cl + PDF= 25305 MMHT2014nnlo68cl + PDF= 25306 MMHT2014nnlo68cl + PDF= 25307 MMHT2014nnlo68cl + PDF= 25308 MMHT2014nnlo68cl + PDF= 25309 MMHT2014nnlo68cl + PDF= 25310 MMHT2014nnlo68cl + PDF= 25311 MMHT2014nnlo68cl + PDF= 25312 MMHT2014nnlo68cl + PDF= 25313 MMHT2014nnlo68cl + PDF= 25314 MMHT2014nnlo68cl + PDF= 25315 MMHT2014nnlo68cl + PDF= 25316 MMHT2014nnlo68cl + PDF= 25317 MMHT2014nnlo68cl + PDF= 25318 MMHT2014nnlo68cl + PDF= 25319 MMHT2014nnlo68cl + PDF= 25320 MMHT2014nnlo68cl + PDF= 25321 MMHT2014nnlo68cl + PDF= 25322 MMHT2014nnlo68cl + PDF= 25323 MMHT2014nnlo68cl + PDF= 25324 MMHT2014nnlo68cl + PDF= 25325 MMHT2014nnlo68cl + PDF= 25326 MMHT2014nnlo68cl + PDF= 25327 MMHT2014nnlo68cl + PDF= 25328 MMHT2014nnlo68cl + PDF= 25329 MMHT2014nnlo68cl + PDF= 25330 MMHT2014nnlo68cl + PDF= 25331 MMHT2014nnlo68cl + PDF= 25332 MMHT2014nnlo68cl + PDF= 25333 MMHT2014nnlo68cl + PDF= 25334 MMHT2014nnlo68cl + PDF= 25335 MMHT2014nnlo68cl + PDF= 25336 MMHT2014nnlo68cl + PDF= 25337 MMHT2014nnlo68cl + PDF= 25338 MMHT2014nnlo68cl + PDF= 25339 MMHT2014nnlo68cl + PDF= 25340 MMHT2014nnlo68cl + PDF= 25341 MMHT2014nnlo68cl + PDF= 25342 MMHT2014nnlo68cl + PDF= 25343 MMHT2014nnlo68cl + PDF= 25344 MMHT2014nnlo68cl + PDF= 25345 MMHT2014nnlo68cl + PDF= 25346 MMHT2014nnlo68cl + PDF= 25347 MMHT2014nnlo68cl + PDF= 25348 MMHT2014nnlo68cl + PDF= 25349 MMHT2014nnlo68cl + PDF= 25350 MMHT2014nnlo68cl + + + PDF= 25000 MMHT2014lo68cl + + + PDF= 42780 ABMP16als118_5_nnlo + PDF= 42781 ABMP16als118_5_nnlo + PDF= 42782 ABMP16als118_5_nnlo + PDF= 42783 ABMP16als118_5_nnlo + PDF= 42784 ABMP16als118_5_nnlo + PDF= 42785 ABMP16als118_5_nnlo + PDF= 42786 ABMP16als118_5_nnlo + PDF= 42787 ABMP16als118_5_nnlo + PDF= 42788 ABMP16als118_5_nnlo + PDF= 42789 ABMP16als118_5_nnlo + PDF= 42790 ABMP16als118_5_nnlo + PDF= 42791 ABMP16als118_5_nnlo + PDF= 42792 ABMP16als118_5_nnlo + PDF= 42793 ABMP16als118_5_nnlo + PDF= 42794 ABMP16als118_5_nnlo + PDF= 42795 ABMP16als118_5_nnlo + PDF= 42796 ABMP16als118_5_nnlo + PDF= 42797 ABMP16als118_5_nnlo + PDF= 42798 ABMP16als118_5_nnlo + PDF= 42799 ABMP16als118_5_nnlo + PDF= 42800 ABMP16als118_5_nnlo + PDF= 42801 ABMP16als118_5_nnlo + PDF= 42802 ABMP16als118_5_nnlo + PDF= 42803 ABMP16als118_5_nnlo + PDF= 42804 ABMP16als118_5_nnlo + PDF= 42805 ABMP16als118_5_nnlo + PDF= 42806 ABMP16als118_5_nnlo + PDF= 42807 ABMP16als118_5_nnlo + PDF= 42808 ABMP16als118_5_nnlo + PDF= 42809 ABMP16als118_5_nnlo + + + PDF= 90200 PDF4LHC15_nlo_100_pdfas + PDF= 90201 PDF4LHC15_nlo_100_pdfas + PDF= 90202 PDF4LHC15_nlo_100_pdfas + PDF= 90203 PDF4LHC15_nlo_100_pdfas + PDF= 90204 PDF4LHC15_nlo_100_pdfas + PDF= 90205 PDF4LHC15_nlo_100_pdfas + PDF= 90206 PDF4LHC15_nlo_100_pdfas + PDF= 90207 PDF4LHC15_nlo_100_pdfas + PDF= 90208 PDF4LHC15_nlo_100_pdfas + PDF= 90209 PDF4LHC15_nlo_100_pdfas + PDF= 90210 PDF4LHC15_nlo_100_pdfas + PDF= 90211 PDF4LHC15_nlo_100_pdfas + PDF= 90212 PDF4LHC15_nlo_100_pdfas + PDF= 90213 PDF4LHC15_nlo_100_pdfas + PDF= 90214 PDF4LHC15_nlo_100_pdfas + PDF= 90215 PDF4LHC15_nlo_100_pdfas + PDF= 90216 PDF4LHC15_nlo_100_pdfas + PDF= 90217 PDF4LHC15_nlo_100_pdfas + PDF= 90218 PDF4LHC15_nlo_100_pdfas + PDF= 90219 PDF4LHC15_nlo_100_pdfas + PDF= 90220 PDF4LHC15_nlo_100_pdfas + PDF= 90221 PDF4LHC15_nlo_100_pdfas + PDF= 90222 PDF4LHC15_nlo_100_pdfas + PDF= 90223 PDF4LHC15_nlo_100_pdfas + PDF= 90224 PDF4LHC15_nlo_100_pdfas + PDF= 90225 PDF4LHC15_nlo_100_pdfas + PDF= 90226 PDF4LHC15_nlo_100_pdfas + PDF= 90227 PDF4LHC15_nlo_100_pdfas + PDF= 90228 PDF4LHC15_nlo_100_pdfas + PDF= 90229 PDF4LHC15_nlo_100_pdfas + PDF= 90230 PDF4LHC15_nlo_100_pdfas + PDF= 90231 PDF4LHC15_nlo_100_pdfas + PDF= 90232 PDF4LHC15_nlo_100_pdfas + PDF= 90233 PDF4LHC15_nlo_100_pdfas + PDF= 90234 PDF4LHC15_nlo_100_pdfas + PDF= 90235 PDF4LHC15_nlo_100_pdfas + PDF= 90236 PDF4LHC15_nlo_100_pdfas + PDF= 90237 PDF4LHC15_nlo_100_pdfas + PDF= 90238 PDF4LHC15_nlo_100_pdfas + PDF= 90239 PDF4LHC15_nlo_100_pdfas + PDF= 90240 PDF4LHC15_nlo_100_pdfas + PDF= 90241 PDF4LHC15_nlo_100_pdfas + PDF= 90242 PDF4LHC15_nlo_100_pdfas + PDF= 90243 PDF4LHC15_nlo_100_pdfas + PDF= 90244 PDF4LHC15_nlo_100_pdfas + PDF= 90245 PDF4LHC15_nlo_100_pdfas + PDF= 90246 PDF4LHC15_nlo_100_pdfas + PDF= 90247 PDF4LHC15_nlo_100_pdfas + PDF= 90248 PDF4LHC15_nlo_100_pdfas + PDF= 90249 PDF4LHC15_nlo_100_pdfas + PDF= 90250 PDF4LHC15_nlo_100_pdfas + PDF= 90251 PDF4LHC15_nlo_100_pdfas + PDF= 90252 PDF4LHC15_nlo_100_pdfas + PDF= 90253 PDF4LHC15_nlo_100_pdfas + PDF= 90254 PDF4LHC15_nlo_100_pdfas + PDF= 90255 PDF4LHC15_nlo_100_pdfas + PDF= 90256 PDF4LHC15_nlo_100_pdfas + PDF= 90257 PDF4LHC15_nlo_100_pdfas + PDF= 90258 PDF4LHC15_nlo_100_pdfas + PDF= 90259 PDF4LHC15_nlo_100_pdfas + PDF= 90260 PDF4LHC15_nlo_100_pdfas + PDF= 90261 PDF4LHC15_nlo_100_pdfas + PDF= 90262 PDF4LHC15_nlo_100_pdfas + PDF= 90263 PDF4LHC15_nlo_100_pdfas + PDF= 90264 PDF4LHC15_nlo_100_pdfas + PDF= 90265 PDF4LHC15_nlo_100_pdfas + PDF= 90266 PDF4LHC15_nlo_100_pdfas + PDF= 90267 PDF4LHC15_nlo_100_pdfas + PDF= 90268 PDF4LHC15_nlo_100_pdfas + PDF= 90269 PDF4LHC15_nlo_100_pdfas + PDF= 90270 PDF4LHC15_nlo_100_pdfas + PDF= 90271 PDF4LHC15_nlo_100_pdfas + PDF= 90272 PDF4LHC15_nlo_100_pdfas + PDF= 90273 PDF4LHC15_nlo_100_pdfas + PDF= 90274 PDF4LHC15_nlo_100_pdfas + PDF= 90275 PDF4LHC15_nlo_100_pdfas + PDF= 90276 PDF4LHC15_nlo_100_pdfas + PDF= 90277 PDF4LHC15_nlo_100_pdfas + PDF= 90278 PDF4LHC15_nlo_100_pdfas + PDF= 90279 PDF4LHC15_nlo_100_pdfas + PDF= 90280 PDF4LHC15_nlo_100_pdfas + PDF= 90281 PDF4LHC15_nlo_100_pdfas + PDF= 90282 PDF4LHC15_nlo_100_pdfas + PDF= 90283 PDF4LHC15_nlo_100_pdfas + PDF= 90284 PDF4LHC15_nlo_100_pdfas + PDF= 90285 PDF4LHC15_nlo_100_pdfas + PDF= 90286 PDF4LHC15_nlo_100_pdfas + PDF= 90287 PDF4LHC15_nlo_100_pdfas + PDF= 90288 PDF4LHC15_nlo_100_pdfas + PDF= 90289 PDF4LHC15_nlo_100_pdfas + PDF= 90290 PDF4LHC15_nlo_100_pdfas + PDF= 90291 PDF4LHC15_nlo_100_pdfas + PDF= 90292 PDF4LHC15_nlo_100_pdfas + PDF= 90293 PDF4LHC15_nlo_100_pdfas + PDF= 90294 PDF4LHC15_nlo_100_pdfas + PDF= 90295 PDF4LHC15_nlo_100_pdfas + PDF= 90296 PDF4LHC15_nlo_100_pdfas + PDF= 90297 PDF4LHC15_nlo_100_pdfas + PDF= 90298 PDF4LHC15_nlo_100_pdfas + PDF= 90299 PDF4LHC15_nlo_100_pdfas + PDF= 90300 PDF4LHC15_nlo_100_pdfas + PDF= 90301 PDF4LHC15_nlo_100_pdfas + PDF= 90302 PDF4LHC15_nlo_100_pdfas + + + PDF= 91200 PDF4LHC15_nnlo_100_pdfas + PDF= 91201 PDF4LHC15_nnlo_100_pdfas + PDF= 91202 PDF4LHC15_nnlo_100_pdfas + PDF= 91203 PDF4LHC15_nnlo_100_pdfas + PDF= 91204 PDF4LHC15_nnlo_100_pdfas + PDF= 91205 PDF4LHC15_nnlo_100_pdfas + PDF= 91206 PDF4LHC15_nnlo_100_pdfas + PDF= 91207 PDF4LHC15_nnlo_100_pdfas + PDF= 91208 PDF4LHC15_nnlo_100_pdfas + PDF= 91209 PDF4LHC15_nnlo_100_pdfas + PDF= 91210 PDF4LHC15_nnlo_100_pdfas + PDF= 91211 PDF4LHC15_nnlo_100_pdfas + PDF= 91212 PDF4LHC15_nnlo_100_pdfas + PDF= 91213 PDF4LHC15_nnlo_100_pdfas + PDF= 91214 PDF4LHC15_nnlo_100_pdfas + PDF= 91215 PDF4LHC15_nnlo_100_pdfas + PDF= 91216 PDF4LHC15_nnlo_100_pdfas + PDF= 91217 PDF4LHC15_nnlo_100_pdfas + PDF= 91218 PDF4LHC15_nnlo_100_pdfas + PDF= 91219 PDF4LHC15_nnlo_100_pdfas + PDF= 91220 PDF4LHC15_nnlo_100_pdfas + PDF= 91221 PDF4LHC15_nnlo_100_pdfas + PDF= 91222 PDF4LHC15_nnlo_100_pdfas + PDF= 91223 PDF4LHC15_nnlo_100_pdfas + PDF= 91224 PDF4LHC15_nnlo_100_pdfas + PDF= 91225 PDF4LHC15_nnlo_100_pdfas + PDF= 91226 PDF4LHC15_nnlo_100_pdfas + PDF= 91227 PDF4LHC15_nnlo_100_pdfas + PDF= 91228 PDF4LHC15_nnlo_100_pdfas + PDF= 91229 PDF4LHC15_nnlo_100_pdfas + PDF= 91230 PDF4LHC15_nnlo_100_pdfas + PDF= 91231 PDF4LHC15_nnlo_100_pdfas + PDF= 91232 PDF4LHC15_nnlo_100_pdfas + PDF= 91233 PDF4LHC15_nnlo_100_pdfas + PDF= 91234 PDF4LHC15_nnlo_100_pdfas + PDF= 91235 PDF4LHC15_nnlo_100_pdfas + PDF= 91236 PDF4LHC15_nnlo_100_pdfas + PDF= 91237 PDF4LHC15_nnlo_100_pdfas + PDF= 91238 PDF4LHC15_nnlo_100_pdfas + PDF= 91239 PDF4LHC15_nnlo_100_pdfas + PDF= 91240 PDF4LHC15_nnlo_100_pdfas + PDF= 91241 PDF4LHC15_nnlo_100_pdfas + PDF= 91242 PDF4LHC15_nnlo_100_pdfas + PDF= 91243 PDF4LHC15_nnlo_100_pdfas + PDF= 91244 PDF4LHC15_nnlo_100_pdfas + PDF= 91245 PDF4LHC15_nnlo_100_pdfas + PDF= 91246 PDF4LHC15_nnlo_100_pdfas + PDF= 91247 PDF4LHC15_nnlo_100_pdfas + PDF= 91248 PDF4LHC15_nnlo_100_pdfas + PDF= 91249 PDF4LHC15_nnlo_100_pdfas + PDF= 91250 PDF4LHC15_nnlo_100_pdfas + PDF= 91251 PDF4LHC15_nnlo_100_pdfas + PDF= 91252 PDF4LHC15_nnlo_100_pdfas + PDF= 91253 PDF4LHC15_nnlo_100_pdfas + PDF= 91254 PDF4LHC15_nnlo_100_pdfas + PDF= 91255 PDF4LHC15_nnlo_100_pdfas + PDF= 91256 PDF4LHC15_nnlo_100_pdfas + PDF= 91257 PDF4LHC15_nnlo_100_pdfas + PDF= 91258 PDF4LHC15_nnlo_100_pdfas + PDF= 91259 PDF4LHC15_nnlo_100_pdfas + PDF= 91260 PDF4LHC15_nnlo_100_pdfas + PDF= 91261 PDF4LHC15_nnlo_100_pdfas + PDF= 91262 PDF4LHC15_nnlo_100_pdfas + PDF= 91263 PDF4LHC15_nnlo_100_pdfas + PDF= 91264 PDF4LHC15_nnlo_100_pdfas + PDF= 91265 PDF4LHC15_nnlo_100_pdfas + PDF= 91266 PDF4LHC15_nnlo_100_pdfas + PDF= 91267 PDF4LHC15_nnlo_100_pdfas + PDF= 91268 PDF4LHC15_nnlo_100_pdfas + PDF= 91269 PDF4LHC15_nnlo_100_pdfas + PDF= 91270 PDF4LHC15_nnlo_100_pdfas + PDF= 91271 PDF4LHC15_nnlo_100_pdfas + PDF= 91272 PDF4LHC15_nnlo_100_pdfas + PDF= 91273 PDF4LHC15_nnlo_100_pdfas + PDF= 91274 PDF4LHC15_nnlo_100_pdfas + PDF= 91275 PDF4LHC15_nnlo_100_pdfas + PDF= 91276 PDF4LHC15_nnlo_100_pdfas + PDF= 91277 PDF4LHC15_nnlo_100_pdfas + PDF= 91278 PDF4LHC15_nnlo_100_pdfas + PDF= 91279 PDF4LHC15_nnlo_100_pdfas + PDF= 91280 PDF4LHC15_nnlo_100_pdfas + PDF= 91281 PDF4LHC15_nnlo_100_pdfas + PDF= 91282 PDF4LHC15_nnlo_100_pdfas + PDF= 91283 PDF4LHC15_nnlo_100_pdfas + PDF= 91284 PDF4LHC15_nnlo_100_pdfas + PDF= 91285 PDF4LHC15_nnlo_100_pdfas + PDF= 91286 PDF4LHC15_nnlo_100_pdfas + PDF= 91287 PDF4LHC15_nnlo_100_pdfas + PDF= 91288 PDF4LHC15_nnlo_100_pdfas + PDF= 91289 PDF4LHC15_nnlo_100_pdfas + PDF= 91290 PDF4LHC15_nnlo_100_pdfas + PDF= 91291 PDF4LHC15_nnlo_100_pdfas + PDF= 91292 PDF4LHC15_nnlo_100_pdfas + PDF= 91293 PDF4LHC15_nnlo_100_pdfas + PDF= 91294 PDF4LHC15_nnlo_100_pdfas + PDF= 91295 PDF4LHC15_nnlo_100_pdfas + PDF= 91296 PDF4LHC15_nnlo_100_pdfas + PDF= 91297 PDF4LHC15_nnlo_100_pdfas + PDF= 91298 PDF4LHC15_nnlo_100_pdfas + PDF= 91299 PDF4LHC15_nnlo_100_pdfas + PDF= 91300 PDF4LHC15_nnlo_100_pdfas + PDF= 91301 PDF4LHC15_nnlo_100_pdfas + PDF= 91302 PDF4LHC15_nnlo_100_pdfas + + + PDF= 90400 PDF4LHC15_nlo_30_pdfas + PDF= 90401 PDF4LHC15_nlo_30_pdfas + PDF= 90402 PDF4LHC15_nlo_30_pdfas + PDF= 90403 PDF4LHC15_nlo_30_pdfas + PDF= 90404 PDF4LHC15_nlo_30_pdfas + PDF= 90405 PDF4LHC15_nlo_30_pdfas + PDF= 90406 PDF4LHC15_nlo_30_pdfas + PDF= 90407 PDF4LHC15_nlo_30_pdfas + PDF= 90408 PDF4LHC15_nlo_30_pdfas + PDF= 90409 PDF4LHC15_nlo_30_pdfas + PDF= 90410 PDF4LHC15_nlo_30_pdfas + PDF= 90411 PDF4LHC15_nlo_30_pdfas + PDF= 90412 PDF4LHC15_nlo_30_pdfas + PDF= 90413 PDF4LHC15_nlo_30_pdfas + PDF= 90414 PDF4LHC15_nlo_30_pdfas + PDF= 90415 PDF4LHC15_nlo_30_pdfas + PDF= 90416 PDF4LHC15_nlo_30_pdfas + PDF= 90417 PDF4LHC15_nlo_30_pdfas + PDF= 90418 PDF4LHC15_nlo_30_pdfas + PDF= 90419 PDF4LHC15_nlo_30_pdfas + PDF= 90420 PDF4LHC15_nlo_30_pdfas + PDF= 90421 PDF4LHC15_nlo_30_pdfas + PDF= 90422 PDF4LHC15_nlo_30_pdfas + PDF= 90423 PDF4LHC15_nlo_30_pdfas + PDF= 90424 PDF4LHC15_nlo_30_pdfas + PDF= 90425 PDF4LHC15_nlo_30_pdfas + PDF= 90426 PDF4LHC15_nlo_30_pdfas + PDF= 90427 PDF4LHC15_nlo_30_pdfas + PDF= 90428 PDF4LHC15_nlo_30_pdfas + PDF= 90429 PDF4LHC15_nlo_30_pdfas + PDF= 90430 PDF4LHC15_nlo_30_pdfas + PDF= 90431 PDF4LHC15_nlo_30_pdfas + PDF= 90432 PDF4LHC15_nlo_30_pdfas + + + PDF= 91400 PDF4LHC15_nnlo_30_pdfas + PDF= 91401 PDF4LHC15_nnlo_30_pdfas + PDF= 91402 PDF4LHC15_nnlo_30_pdfas + PDF= 91403 PDF4LHC15_nnlo_30_pdfas + PDF= 91404 PDF4LHC15_nnlo_30_pdfas + PDF= 91405 PDF4LHC15_nnlo_30_pdfas + PDF= 91406 PDF4LHC15_nnlo_30_pdfas + PDF= 91407 PDF4LHC15_nnlo_30_pdfas + PDF= 91408 PDF4LHC15_nnlo_30_pdfas + PDF= 91409 PDF4LHC15_nnlo_30_pdfas + PDF= 91410 PDF4LHC15_nnlo_30_pdfas + PDF= 91411 PDF4LHC15_nnlo_30_pdfas + PDF= 91412 PDF4LHC15_nnlo_30_pdfas + PDF= 91413 PDF4LHC15_nnlo_30_pdfas + PDF= 91414 PDF4LHC15_nnlo_30_pdfas + PDF= 91415 PDF4LHC15_nnlo_30_pdfas + PDF= 91416 PDF4LHC15_nnlo_30_pdfas + PDF= 91417 PDF4LHC15_nnlo_30_pdfas + PDF= 91418 PDF4LHC15_nnlo_30_pdfas + PDF= 91419 PDF4LHC15_nnlo_30_pdfas + PDF= 91420 PDF4LHC15_nnlo_30_pdfas + PDF= 91421 PDF4LHC15_nnlo_30_pdfas + PDF= 91422 PDF4LHC15_nnlo_30_pdfas + PDF= 91423 PDF4LHC15_nnlo_30_pdfas + PDF= 91424 PDF4LHC15_nnlo_30_pdfas + PDF= 91425 PDF4LHC15_nnlo_30_pdfas + PDF= 91426 PDF4LHC15_nnlo_30_pdfas + PDF= 91427 PDF4LHC15_nnlo_30_pdfas + PDF= 91428 PDF4LHC15_nnlo_30_pdfas + PDF= 91429 PDF4LHC15_nnlo_30_pdfas + PDF= 91430 PDF4LHC15_nnlo_30_pdfas + PDF= 91431 PDF4LHC15_nnlo_30_pdfas + PDF= 91432 PDF4LHC15_nnlo_30_pdfas + + + PDF= 61100 HERAPDF20_NLO_EIG + PDF= 61101 HERAPDF20_NLO_EIG + PDF= 61102 HERAPDF20_NLO_EIG + PDF= 61103 HERAPDF20_NLO_EIG + PDF= 61104 HERAPDF20_NLO_EIG + PDF= 61105 HERAPDF20_NLO_EIG + PDF= 61106 HERAPDF20_NLO_EIG + PDF= 61107 HERAPDF20_NLO_EIG + PDF= 61108 HERAPDF20_NLO_EIG + PDF= 61109 HERAPDF20_NLO_EIG + PDF= 61110 HERAPDF20_NLO_EIG + PDF= 61111 HERAPDF20_NLO_EIG + PDF= 61112 HERAPDF20_NLO_EIG + PDF= 61113 HERAPDF20_NLO_EIG + PDF= 61114 HERAPDF20_NLO_EIG + PDF= 61115 HERAPDF20_NLO_EIG + PDF= 61116 HERAPDF20_NLO_EIG + PDF= 61117 HERAPDF20_NLO_EIG + PDF= 61118 HERAPDF20_NLO_EIG + PDF= 61119 HERAPDF20_NLO_EIG + PDF= 61120 HERAPDF20_NLO_EIG + PDF= 61121 HERAPDF20_NLO_EIG + PDF= 61122 HERAPDF20_NLO_EIG + PDF= 61123 HERAPDF20_NLO_EIG + PDF= 61124 HERAPDF20_NLO_EIG + PDF= 61125 HERAPDF20_NLO_EIG + PDF= 61126 HERAPDF20_NLO_EIG + PDF= 61127 HERAPDF20_NLO_EIG + PDF= 61128 HERAPDF20_NLO_EIG + + + PDF= 61130 HERAPDF20_NLO_VAR + PDF= 61131 HERAPDF20_NLO_VAR + PDF= 61132 HERAPDF20_NLO_VAR + PDF= 61133 HERAPDF20_NLO_VAR + PDF= 61134 HERAPDF20_NLO_VAR + PDF= 61135 HERAPDF20_NLO_VAR + PDF= 61136 HERAPDF20_NLO_VAR + PDF= 61137 HERAPDF20_NLO_VAR + PDF= 61138 HERAPDF20_NLO_VAR + PDF= 61139 HERAPDF20_NLO_VAR + PDF= 61140 HERAPDF20_NLO_VAR + PDF= 61141 HERAPDF20_NLO_VAR + PDF= 61142 HERAPDF20_NLO_VAR + PDF= 61143 HERAPDF20_NLO_VAR + + + PDF= 61200 HERAPDF20_NNLO_EIG + PDF= 61201 HERAPDF20_NNLO_EIG + PDF= 61202 HERAPDF20_NNLO_EIG + PDF= 61203 HERAPDF20_NNLO_EIG + PDF= 61204 HERAPDF20_NNLO_EIG + PDF= 61205 HERAPDF20_NNLO_EIG + PDF= 61206 HERAPDF20_NNLO_EIG + PDF= 61207 HERAPDF20_NNLO_EIG + PDF= 61208 HERAPDF20_NNLO_EIG + PDF= 61209 HERAPDF20_NNLO_EIG + PDF= 61210 HERAPDF20_NNLO_EIG + PDF= 61211 HERAPDF20_NNLO_EIG + PDF= 61212 HERAPDF20_NNLO_EIG + PDF= 61213 HERAPDF20_NNLO_EIG + PDF= 61214 HERAPDF20_NNLO_EIG + PDF= 61215 HERAPDF20_NNLO_EIG + PDF= 61216 HERAPDF20_NNLO_EIG + PDF= 61217 HERAPDF20_NNLO_EIG + PDF= 61218 HERAPDF20_NNLO_EIG + PDF= 61219 HERAPDF20_NNLO_EIG + PDF= 61220 HERAPDF20_NNLO_EIG + PDF= 61221 HERAPDF20_NNLO_EIG + PDF= 61222 HERAPDF20_NNLO_EIG + PDF= 61223 HERAPDF20_NNLO_EIG + PDF= 61224 HERAPDF20_NNLO_EIG + PDF= 61225 HERAPDF20_NNLO_EIG + PDF= 61226 HERAPDF20_NNLO_EIG + PDF= 61227 HERAPDF20_NNLO_EIG + PDF= 61228 HERAPDF20_NNLO_EIG + + + PDF= 61230 HERAPDF20_NNLO_VAR + PDF= 61231 HERAPDF20_NNLO_VAR + PDF= 61232 HERAPDF20_NNLO_VAR + PDF= 61233 HERAPDF20_NNLO_VAR + PDF= 61234 HERAPDF20_NNLO_VAR + PDF= 61235 HERAPDF20_NNLO_VAR + PDF= 61236 HERAPDF20_NNLO_VAR + PDF= 61237 HERAPDF20_NNLO_VAR + PDF= 61238 HERAPDF20_NNLO_VAR + PDF= 61239 HERAPDF20_NNLO_VAR + PDF= 61240 HERAPDF20_NNLO_VAR + PDF= 61241 HERAPDF20_NNLO_VAR + PDF= 61242 HERAPDF20_NNLO_VAR + PDF= 61243 HERAPDF20_NNLO_VAR + + + PDF= 13400 CT14qed_inc_proton + PDF= 13401 CT14qed_inc_proton + PDF= 13402 CT14qed_inc_proton + PDF= 13403 CT14qed_inc_proton + PDF= 13404 CT14qed_inc_proton + PDF= 13405 CT14qed_inc_proton + PDF= 13406 CT14qed_inc_proton + PDF= 13407 CT14qed_inc_proton + PDF= 13408 CT14qed_inc_proton + PDF= 13409 CT14qed_inc_proton + PDF= 13410 CT14qed_inc_proton + PDF= 13411 CT14qed_inc_proton + PDF= 13412 CT14qed_inc_proton + PDF= 13413 CT14qed_inc_proton + PDF= 13414 CT14qed_inc_proton + PDF= 13415 CT14qed_inc_proton + PDF= 13416 CT14qed_inc_proton + PDF= 13417 CT14qed_inc_proton + PDF= 13418 CT14qed_inc_proton + PDF= 13419 CT14qed_inc_proton + PDF= 13420 CT14qed_inc_proton + PDF= 13421 CT14qed_inc_proton + PDF= 13422 CT14qed_inc_proton + PDF= 13423 CT14qed_inc_proton + PDF= 13424 CT14qed_inc_proton + PDF= 13425 CT14qed_inc_proton + PDF= 13426 CT14qed_inc_proton + PDF= 13427 CT14qed_inc_proton + PDF= 13428 CT14qed_inc_proton + PDF= 13429 CT14qed_inc_proton + PDF= 13430 CT14qed_inc_proton + + + PDF= 82200 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82201 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82202 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82203 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82204 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82205 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82206 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82207 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82208 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82209 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82210 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82211 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82212 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82213 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82214 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82215 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82216 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82217 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82218 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82219 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82220 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82221 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82222 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82223 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82224 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82225 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82226 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82227 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82228 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82229 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82230 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82231 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82232 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82233 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82234 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82235 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82236 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82237 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82238 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82239 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82240 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82241 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82242 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82243 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82244 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82245 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82246 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82247 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82248 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82249 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82250 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82251 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82252 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82253 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82254 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82255 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82256 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82257 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82258 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82259 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82260 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82261 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82262 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82263 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82264 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82265 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82266 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82267 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82268 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82269 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82270 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82271 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82272 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82273 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82274 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82275 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82276 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82277 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82278 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82279 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82280 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82281 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82282 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82283 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82284 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82285 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82286 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82287 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82288 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82289 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82290 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82291 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82292 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82293 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82294 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82295 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82296 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82297 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82298 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82299 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82300 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82301 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82302 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82303 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82304 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82305 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82306 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82307 LUXqed17_plus_PDF4LHC15_nnlo_100 + + + PDF= 292200 NNPDF30_nlo_nf_5_pdfas + PDF= 292201 NNPDF30_nlo_nf_5_pdfas + PDF= 292202 NNPDF30_nlo_nf_5_pdfas + PDF= 292203 NNPDF30_nlo_nf_5_pdfas + PDF= 292204 NNPDF30_nlo_nf_5_pdfas + PDF= 292205 NNPDF30_nlo_nf_5_pdfas + PDF= 292206 NNPDF30_nlo_nf_5_pdfas + PDF= 292207 NNPDF30_nlo_nf_5_pdfas + PDF= 292208 NNPDF30_nlo_nf_5_pdfas + PDF= 292209 NNPDF30_nlo_nf_5_pdfas + PDF= 292210 NNPDF30_nlo_nf_5_pdfas + PDF= 292211 NNPDF30_nlo_nf_5_pdfas + PDF= 292212 NNPDF30_nlo_nf_5_pdfas + PDF= 292213 NNPDF30_nlo_nf_5_pdfas + PDF= 292214 NNPDF30_nlo_nf_5_pdfas + PDF= 292215 NNPDF30_nlo_nf_5_pdfas + PDF= 292216 NNPDF30_nlo_nf_5_pdfas + PDF= 292217 NNPDF30_nlo_nf_5_pdfas + PDF= 292218 NNPDF30_nlo_nf_5_pdfas + PDF= 292219 NNPDF30_nlo_nf_5_pdfas + PDF= 292220 NNPDF30_nlo_nf_5_pdfas + PDF= 292221 NNPDF30_nlo_nf_5_pdfas + PDF= 292222 NNPDF30_nlo_nf_5_pdfas + PDF= 292223 NNPDF30_nlo_nf_5_pdfas + PDF= 292224 NNPDF30_nlo_nf_5_pdfas + PDF= 292225 NNPDF30_nlo_nf_5_pdfas + PDF= 292226 NNPDF30_nlo_nf_5_pdfas + PDF= 292227 NNPDF30_nlo_nf_5_pdfas + PDF= 292228 NNPDF30_nlo_nf_5_pdfas + PDF= 292229 NNPDF30_nlo_nf_5_pdfas + PDF= 292230 NNPDF30_nlo_nf_5_pdfas + PDF= 292231 NNPDF30_nlo_nf_5_pdfas + PDF= 292232 NNPDF30_nlo_nf_5_pdfas + PDF= 292233 NNPDF30_nlo_nf_5_pdfas + PDF= 292234 NNPDF30_nlo_nf_5_pdfas + PDF= 292235 NNPDF30_nlo_nf_5_pdfas + PDF= 292236 NNPDF30_nlo_nf_5_pdfas + PDF= 292237 NNPDF30_nlo_nf_5_pdfas + PDF= 292238 NNPDF30_nlo_nf_5_pdfas + PDF= 292239 NNPDF30_nlo_nf_5_pdfas + PDF= 292240 NNPDF30_nlo_nf_5_pdfas + PDF= 292241 NNPDF30_nlo_nf_5_pdfas + PDF= 292242 NNPDF30_nlo_nf_5_pdfas + PDF= 292243 NNPDF30_nlo_nf_5_pdfas + PDF= 292244 NNPDF30_nlo_nf_5_pdfas + PDF= 292245 NNPDF30_nlo_nf_5_pdfas + PDF= 292246 NNPDF30_nlo_nf_5_pdfas + PDF= 292247 NNPDF30_nlo_nf_5_pdfas + PDF= 292248 NNPDF30_nlo_nf_5_pdfas + PDF= 292249 NNPDF30_nlo_nf_5_pdfas + PDF= 292250 NNPDF30_nlo_nf_5_pdfas + PDF= 292251 NNPDF30_nlo_nf_5_pdfas + PDF= 292252 NNPDF30_nlo_nf_5_pdfas + PDF= 292253 NNPDF30_nlo_nf_5_pdfas + PDF= 292254 NNPDF30_nlo_nf_5_pdfas + PDF= 292255 NNPDF30_nlo_nf_5_pdfas + PDF= 292256 NNPDF30_nlo_nf_5_pdfas + PDF= 292257 NNPDF30_nlo_nf_5_pdfas + PDF= 292258 NNPDF30_nlo_nf_5_pdfas + PDF= 292259 NNPDF30_nlo_nf_5_pdfas + PDF= 292260 NNPDF30_nlo_nf_5_pdfas + PDF= 292261 NNPDF30_nlo_nf_5_pdfas + PDF= 292262 NNPDF30_nlo_nf_5_pdfas + PDF= 292263 NNPDF30_nlo_nf_5_pdfas + PDF= 292264 NNPDF30_nlo_nf_5_pdfas + PDF= 292265 NNPDF30_nlo_nf_5_pdfas + PDF= 292266 NNPDF30_nlo_nf_5_pdfas + PDF= 292267 NNPDF30_nlo_nf_5_pdfas + PDF= 292268 NNPDF30_nlo_nf_5_pdfas + PDF= 292269 NNPDF30_nlo_nf_5_pdfas + PDF= 292270 NNPDF30_nlo_nf_5_pdfas + PDF= 292271 NNPDF30_nlo_nf_5_pdfas + PDF= 292272 NNPDF30_nlo_nf_5_pdfas + PDF= 292273 NNPDF30_nlo_nf_5_pdfas + PDF= 292274 NNPDF30_nlo_nf_5_pdfas + PDF= 292275 NNPDF30_nlo_nf_5_pdfas + PDF= 292276 NNPDF30_nlo_nf_5_pdfas + PDF= 292277 NNPDF30_nlo_nf_5_pdfas + PDF= 292278 NNPDF30_nlo_nf_5_pdfas + PDF= 292279 NNPDF30_nlo_nf_5_pdfas + PDF= 292280 NNPDF30_nlo_nf_5_pdfas + PDF= 292281 NNPDF30_nlo_nf_5_pdfas + PDF= 292282 NNPDF30_nlo_nf_5_pdfas + PDF= 292283 NNPDF30_nlo_nf_5_pdfas + PDF= 292284 NNPDF30_nlo_nf_5_pdfas + PDF= 292285 NNPDF30_nlo_nf_5_pdfas + PDF= 292286 NNPDF30_nlo_nf_5_pdfas + PDF= 292287 NNPDF30_nlo_nf_5_pdfas + PDF= 292288 NNPDF30_nlo_nf_5_pdfas + PDF= 292289 NNPDF30_nlo_nf_5_pdfas + PDF= 292290 NNPDF30_nlo_nf_5_pdfas + PDF= 292291 NNPDF30_nlo_nf_5_pdfas + PDF= 292292 NNPDF30_nlo_nf_5_pdfas + PDF= 292293 NNPDF30_nlo_nf_5_pdfas + PDF= 292294 NNPDF30_nlo_nf_5_pdfas + PDF= 292295 NNPDF30_nlo_nf_5_pdfas + PDF= 292296 NNPDF30_nlo_nf_5_pdfas + PDF= 292297 NNPDF30_nlo_nf_5_pdfas + PDF= 292298 NNPDF30_nlo_nf_5_pdfas + PDF= 292299 NNPDF30_nlo_nf_5_pdfas + PDF= 292300 NNPDF30_nlo_nf_5_pdfas + PDF= 292301 NNPDF30_nlo_nf_5_pdfas + PDF= 292302 NNPDF30_nlo_nf_5_pdfas + + + PDF= 292600 NNPDF30_nnlo_nf_5_pdfas + + + PDF= 315000 NNPDF31_lo_as_0118 + + + PDF= 315200 NNPDF31_lo_as_0130 + + + PDF= 262000 NNPDF30_lo_as_0118 + + + PDF= 263000 NNPDF30_lo_as_0130 + + diff --git a/testFiles/VVV_2017_weight_info.txt b/testFiles/VVV_2017_weight_info.txt new file mode 100644 index 0000000000000..2e242bafc6b5c --- /dev/null +++ b/testFiles/VVV_2017_weight_info.txt @@ -0,0 +1,1358 @@ + + + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + # scale + # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian + + PDF=325500 MemberID=1 + PDF=325500 MemberID=2 + PDF=325500 MemberID=3 + PDF=325500 MemberID=4 + PDF=325500 MemberID=5 + PDF=325500 MemberID=6 + PDF=325500 MemberID=7 + PDF=325500 MemberID=8 + PDF=325500 MemberID=9 + PDF=325500 MemberID=10 + PDF=325500 MemberID=11 + PDF=325500 MemberID=12 + PDF=325500 MemberID=13 + PDF=325500 MemberID=14 + PDF=325500 MemberID=15 + PDF=325500 MemberID=16 + PDF=325500 MemberID=17 + PDF=325500 MemberID=18 + PDF=325500 MemberID=19 + PDF=325500 MemberID=20 + PDF=325500 MemberID=21 + PDF=325500 MemberID=22 + PDF=325500 MemberID=23 + PDF=325500 MemberID=24 + PDF=325500 MemberID=25 + PDF=325500 MemberID=26 + PDF=325500 MemberID=27 + PDF=325500 MemberID=28 + PDF=325500 MemberID=29 + PDF=325500 MemberID=30 + PDF=325500 MemberID=31 + PDF=325500 MemberID=32 + PDF=325500 MemberID=33 + PDF=325500 MemberID=34 + PDF=325500 MemberID=35 + PDF=325500 MemberID=36 + PDF=325500 MemberID=37 + PDF=325500 MemberID=38 + PDF=325500 MemberID=39 + PDF=325500 MemberID=40 + PDF=325500 MemberID=41 + PDF=325500 MemberID=42 + PDF=325500 MemberID=43 + PDF=325500 MemberID=44 + PDF=325500 MemberID=45 + PDF=325500 MemberID=46 + PDF=325500 MemberID=47 + PDF=325500 MemberID=48 + PDF=325500 MemberID=49 + PDF=325500 MemberID=50 + PDF=325500 MemberID=51 + PDF=325500 MemberID=52 + PDF=325500 MemberID=53 + PDF=325500 MemberID=54 + PDF=325500 MemberID=55 + PDF=325500 MemberID=56 + PDF=325500 MemberID=57 + PDF=325500 MemberID=58 + PDF=325500 MemberID=59 + PDF=325500 MemberID=60 + PDF=325500 MemberID=61 + PDF=325500 MemberID=62 + PDF=325500 MemberID=63 + PDF=325500 MemberID=64 + PDF=325500 MemberID=65 + PDF=325500 MemberID=66 + PDF=325500 MemberID=67 + PDF=325500 MemberID=68 + PDF=325500 MemberID=69 + PDF=325500 MemberID=70 + PDF=325500 MemberID=71 + PDF=325500 MemberID=72 + PDF=325500 MemberID=73 + PDF=325500 MemberID=74 + PDF=325500 MemberID=75 + PDF=325500 MemberID=76 + PDF=325500 MemberID=77 + PDF=325500 MemberID=78 + PDF=325500 MemberID=79 + PDF=325500 MemberID=80 + PDF=325500 MemberID=81 + PDF=325500 MemberID=82 + PDF=325500 MemberID=83 + PDF=325500 MemberID=84 + PDF=325500 MemberID=85 + PDF=325500 MemberID=86 + PDF=325500 MemberID=87 + PDF=325500 MemberID=88 + PDF=325500 MemberID=89 + PDF=325500 MemberID=90 + PDF=325500 MemberID=91 + PDF=325500 MemberID=92 + PDF=325500 MemberID=93 + PDF=325500 MemberID=94 + PDF=325500 MemberID=95 + PDF=325500 MemberID=96 + PDF=325500 MemberID=97 + PDF=325500 MemberID=98 + PDF=325500 MemberID=99 + PDF=325500 MemberID=100 + + + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + + + # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian + + + PDF + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + # scale + + alpsfact=0.5 + alpsfact=2.0 + # ALPS + # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian + + PDF=325500 MemberID=1 + PDF=325500 MemberID=2 + PDF=325500 MemberID=3 + PDF=325500 MemberID=4 + PDF=325500 MemberID=5 + PDF=325500 MemberID=6 + PDF=325500 MemberID=7 + PDF=325500 MemberID=8 + PDF=325500 MemberID=9 + PDF=325500 MemberID=10 + PDF=325500 MemberID=11 + PDF=325500 MemberID=12 + PDF=325500 MemberID=13 + PDF=325500 MemberID=14 + PDF=325500 MemberID=15 + PDF=325500 MemberID=16 + PDF=325500 MemberID=17 + PDF=325500 MemberID=18 + PDF=325500 MemberID=19 + PDF=325500 MemberID=20 + PDF=325500 MemberID=21 + PDF=325500 MemberID=22 + PDF=325500 MemberID=23 + PDF=325500 MemberID=24 + PDF=325500 MemberID=25 + PDF=325500 MemberID=26 + PDF=325500 MemberID=27 + PDF=325500 MemberID=28 + PDF=325500 MemberID=29 + PDF=325500 MemberID=30 + PDF=325500 MemberID=31 + PDF=325500 MemberID=32 + PDF=325500 MemberID=33 + PDF=325500 MemberID=34 + PDF=325500 MemberID=35 + PDF=325500 MemberID=36 + PDF=325500 MemberID=37 + PDF=325500 MemberID=38 + PDF=325500 MemberID=39 + PDF=325500 MemberID=40 + PDF=325500 MemberID=41 + PDF=325500 MemberID=42 + PDF=325500 MemberID=43 + PDF=325500 MemberID=44 + PDF=325500 MemberID=45 + PDF=325500 MemberID=46 + PDF=325500 MemberID=47 + PDF=325500 MemberID=48 + PDF=325500 MemberID=49 + PDF=325500 MemberID=50 + PDF=325500 MemberID=51 + PDF=325500 MemberID=52 + PDF=325500 MemberID=53 + PDF=325500 MemberID=54 + PDF=325500 MemberID=55 + PDF=325500 MemberID=56 + PDF=325500 MemberID=57 + PDF=325500 MemberID=58 + PDF=325500 MemberID=59 + PDF=325500 MemberID=60 + PDF=325500 MemberID=61 + PDF=325500 MemberID=62 + PDF=325500 MemberID=63 + PDF=325500 MemberID=64 + PDF=325500 MemberID=65 + PDF=325500 MemberID=66 + PDF=325500 MemberID=67 + PDF=325500 MemberID=68 + PDF=325500 MemberID=69 + PDF=325500 MemberID=70 + PDF=325500 MemberID=71 + PDF=325500 MemberID=72 + PDF=325500 MemberID=73 + PDF=325500 MemberID=74 + PDF=325500 MemberID=75 + PDF=325500 MemberID=76 + PDF=325500 MemberID=77 + PDF=325500 MemberID=78 + PDF=325500 MemberID=79 + PDF=325500 MemberID=80 + PDF=325500 MemberID=81 + PDF=325500 MemberID=82 + PDF=325500 MemberID=83 + PDF=325500 MemberID=84 + PDF=325500 MemberID=85 + PDF=325500 MemberID=86 + PDF=325500 MemberID=87 + PDF=325500 MemberID=88 + PDF=325500 MemberID=89 + PDF=325500 MemberID=90 + PDF=325500 MemberID=91 + PDF=325500 MemberID=92 + PDF=325500 MemberID=93 + PDF=325500 MemberID=94 + PDF=325500 MemberID=95 + PDF=325500 MemberID=96 + PDF=325500 MemberID=97 + PDF=325500 MemberID=98 + PDF=325500 MemberID=99 + PDF=325500 MemberID=100 + # PDFSET -> PDFSET + # 320900: NNPDF3.1 NNLO global fit, nf=4. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + PDF=320900 MemberID=0 + PDF=320900 MemberID=1 + PDF=320900 MemberID=2 + PDF=320900 MemberID=3 + PDF=320900 MemberID=4 + PDF=320900 MemberID=5 + PDF=320900 MemberID=6 + PDF=320900 MemberID=7 + PDF=320900 MemberID=8 + PDF=320900 MemberID=9 + PDF=320900 MemberID=10 + PDF=320900 MemberID=11 + PDF=320900 MemberID=12 + PDF=320900 MemberID=13 + PDF=320900 MemberID=14 + PDF=320900 MemberID=15 + PDF=320900 MemberID=16 + PDF=320900 MemberID=17 + PDF=320900 MemberID=18 + PDF=320900 MemberID=19 + PDF=320900 MemberID=20 + PDF=320900 MemberID=21 + PDF=320900 MemberID=22 + PDF=320900 MemberID=23 + PDF=320900 MemberID=24 + PDF=320900 MemberID=25 + PDF=320900 MemberID=26 + PDF=320900 MemberID=27 + PDF=320900 MemberID=28 + PDF=320900 MemberID=29 + PDF=320900 MemberID=30 + PDF=320900 MemberID=31 + PDF=320900 MemberID=32 + PDF=320900 MemberID=33 + PDF=320900 MemberID=34 + PDF=320900 MemberID=35 + PDF=320900 MemberID=36 + PDF=320900 MemberID=37 + PDF=320900 MemberID=38 + PDF=320900 MemberID=39 + PDF=320900 MemberID=40 + PDF=320900 MemberID=41 + PDF=320900 MemberID=42 + PDF=320900 MemberID=43 + PDF=320900 MemberID=44 + PDF=320900 MemberID=45 + PDF=320900 MemberID=46 + PDF=320900 MemberID=47 + PDF=320900 MemberID=48 + PDF=320900 MemberID=49 + PDF=320900 MemberID=50 + PDF=320900 MemberID=51 + PDF=320900 MemberID=52 + PDF=320900 MemberID=53 + PDF=320900 MemberID=54 + PDF=320900 MemberID=55 + PDF=320900 MemberID=56 + PDF=320900 MemberID=57 + PDF=320900 MemberID=58 + PDF=320900 MemberID=59 + PDF=320900 MemberID=60 + PDF=320900 MemberID=61 + PDF=320900 MemberID=62 + PDF=320900 MemberID=63 + PDF=320900 MemberID=64 + PDF=320900 MemberID=65 + PDF=320900 MemberID=66 + PDF=320900 MemberID=67 + PDF=320900 MemberID=68 + PDF=320900 MemberID=69 + PDF=320900 MemberID=70 + PDF=320900 MemberID=71 + PDF=320900 MemberID=72 + PDF=320900 MemberID=73 + PDF=320900 MemberID=74 + PDF=320900 MemberID=75 + PDF=320900 MemberID=76 + PDF=320900 MemberID=77 + PDF=320900 MemberID=78 + PDF=320900 MemberID=79 + PDF=320900 MemberID=80 + PDF=320900 MemberID=81 + PDF=320900 MemberID=82 + PDF=320900 MemberID=83 + PDF=320900 MemberID=84 + PDF=320900 MemberID=85 + PDF=320900 MemberID=86 + PDF=320900 MemberID=87 + PDF=320900 MemberID=88 + PDF=320900 MemberID=89 + PDF=320900 MemberID=90 + PDF=320900 MemberID=91 + PDF=320900 MemberID=92 + PDF=320900 MemberID=93 + PDF=320900 MemberID=94 + PDF=320900 MemberID=95 + PDF=320900 MemberID=96 + PDF=320900 MemberID=97 + PDF=320900 MemberID=98 + PDF=320900 MemberID=99 + PDF=320900 MemberID=100 + # PDFSET -> PDFSET + # 11082: CT10 NLO PDF fixed 4-flavour fits using the standard CTEQ PDF evolution but using the HOPPET alphas_s running solution. NEW CT12 grid type. Excluding the D0 Run-II W asymmetry data. mem=0 ; mem=0 ; NF4 high scale Q=m_Z=91.190 GeV; mem=1 ; NF4 low scale Q=m_tau=1.778 GeV + PDF=11082 MemberID=0 + PDF=11082 MemberID=1 + # PDFSET -> PDF + PDF=13091 MemberID=0 + PDF=13191 MemberID=0 + PDF=13202 MemberID=0 + # 23100: MSTW 2008 LO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org + PDF=23100 MemberID=0 + PDF=23100 MemberID=1 + PDF=23100 MemberID=2 + PDF=23100 MemberID=3 + PDF=23100 MemberID=4 + PDF=23100 MemberID=5 + PDF=23100 MemberID=6 + PDF=23100 MemberID=7 + PDF=23100 MemberID=8 + PDF=23100 MemberID=9 + PDF=23100 MemberID=10 + PDF=23100 MemberID=11 + PDF=23100 MemberID=12 + PDF=23100 MemberID=13 + PDF=23100 MemberID=14 + PDF=23100 MemberID=15 + PDF=23100 MemberID=16 + PDF=23100 MemberID=17 + PDF=23100 MemberID=18 + PDF=23100 MemberID=19 + PDF=23100 MemberID=20 + PDF=23100 MemberID=21 + PDF=23100 MemberID=22 + PDF=23100 MemberID=23 + PDF=23100 MemberID=24 + PDF=23100 MemberID=25 + PDF=23100 MemberID=26 + PDF=23100 MemberID=27 + PDF=23100 MemberID=28 + PDF=23100 MemberID=29 + PDF=23100 MemberID=30 + PDF=23100 MemberID=31 + PDF=23100 MemberID=32 + PDF=23100 MemberID=33 + PDF=23100 MemberID=34 + PDF=23100 MemberID=35 + PDF=23100 MemberID=36 + PDF=23100 MemberID=37 + PDF=23100 MemberID=38 + PDF=23100 MemberID=39 + PDF=23100 MemberID=40 + # PDFSET -> PDFSET + # 23300: MSTW 2008 NLO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org + PDF=23300 MemberID=0 + PDF=23300 MemberID=1 + PDF=23300 MemberID=2 + PDF=23300 MemberID=3 + PDF=23300 MemberID=4 + PDF=23300 MemberID=5 + PDF=23300 MemberID=6 + PDF=23300 MemberID=7 + PDF=23300 MemberID=8 + PDF=23300 MemberID=9 + PDF=23300 MemberID=10 + PDF=23300 MemberID=11 + PDF=23300 MemberID=12 + PDF=23300 MemberID=13 + PDF=23300 MemberID=14 + PDF=23300 MemberID=15 + PDF=23300 MemberID=16 + PDF=23300 MemberID=17 + PDF=23300 MemberID=18 + PDF=23300 MemberID=19 + PDF=23300 MemberID=20 + PDF=23300 MemberID=21 + PDF=23300 MemberID=22 + PDF=23300 MemberID=23 + PDF=23300 MemberID=24 + PDF=23300 MemberID=25 + PDF=23300 MemberID=26 + PDF=23300 MemberID=27 + PDF=23300 MemberID=28 + PDF=23300 MemberID=29 + PDF=23300 MemberID=30 + PDF=23300 MemberID=31 + PDF=23300 MemberID=32 + PDF=23300 MemberID=33 + PDF=23300 MemberID=34 + PDF=23300 MemberID=35 + PDF=23300 MemberID=36 + PDF=23300 MemberID=37 + PDF=23300 MemberID=38 + PDF=23300 MemberID=39 + PDF=23300 MemberID=40 + # PDFSET -> PDFSET + # 23490: MSTW 2008 NLO (fits for range of m_b values, evolve with 4 flavours maximum). This set has 7 member PDFs. mem=0 ; default m_b = 4.75 GeV; mem=1-6 ; m_b = 4.00, 4.25, 4.50, 5.00, 5.25, 5.50 GeV. http://mstwpdf.hepforge.org + PDF=23490 MemberID=0 + PDF=23490 MemberID=1 + PDF=23490 MemberID=2 + PDF=23490 MemberID=3 + PDF=23490 MemberID=4 + PDF=23490 MemberID=5 + PDF=23490 MemberID=6 + # PDFSET -> PDFSET + # 23600: MSTW 2008 NNLO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org + PDF=23600 MemberID=0 + PDF=23600 MemberID=1 + PDF=23600 MemberID=2 + PDF=23600 MemberID=3 + PDF=23600 MemberID=4 + PDF=23600 MemberID=5 + PDF=23600 MemberID=6 + PDF=23600 MemberID=7 + PDF=23600 MemberID=8 + PDF=23600 MemberID=9 + PDF=23600 MemberID=10 + PDF=23600 MemberID=11 + PDF=23600 MemberID=12 + PDF=23600 MemberID=13 + PDF=23600 MemberID=14 + PDF=23600 MemberID=15 + PDF=23600 MemberID=16 + PDF=23600 MemberID=17 + PDF=23600 MemberID=18 + PDF=23600 MemberID=19 + PDF=23600 MemberID=20 + PDF=23600 MemberID=21 + PDF=23600 MemberID=22 + PDF=23600 MemberID=23 + PDF=23600 MemberID=24 + PDF=23600 MemberID=25 + PDF=23600 MemberID=26 + PDF=23600 MemberID=27 + PDF=23600 MemberID=28 + PDF=23600 MemberID=29 + PDF=23600 MemberID=30 + PDF=23600 MemberID=31 + PDF=23600 MemberID=32 + PDF=23600 MemberID=33 + PDF=23600 MemberID=34 + PDF=23600 MemberID=35 + PDF=23600 MemberID=36 + PDF=23600 MemberID=37 + PDF=23600 MemberID=38 + PDF=23600 MemberID=39 + PDF=23600 MemberID=40 + # PDFSET -> PDFSET + # 23790: MSTW 2008 NNLO (fits for range of m_b values, evolve with 4 flavours maximum). This set has 7 member PDFs. mem=0 ; default m_b = 4.75 GeV; mem=1-6 ; m_b = 4.00, 4.25, 4.50, 5.00, 5.25, 5.50 GeV. http://mstwpdf.hepforge.org + PDF=23790 MemberID=0 + PDF=23790 MemberID=1 + PDF=23790 MemberID=2 + PDF=23790 MemberID=3 + PDF=23790 MemberID=4 + PDF=23790 MemberID=5 + PDF=23790 MemberID=6 + # PDFSET -> PDFSET + # 25410: MMHT 2014 NLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht + PDF=25410 MemberID=0 + PDF=25410 MemberID=1 + PDF=25410 MemberID=2 + PDF=25410 MemberID=3 + PDF=25410 MemberID=4 + PDF=25410 MemberID=5 + PDF=25410 MemberID=6 + PDF=25410 MemberID=7 + PDF=25410 MemberID=8 + PDF=25410 MemberID=9 + PDF=25410 MemberID=10 + PDF=25410 MemberID=11 + PDF=25410 MemberID=12 + PDF=25410 MemberID=13 + PDF=25410 MemberID=14 + PDF=25410 MemberID=15 + PDF=25410 MemberID=16 + PDF=25410 MemberID=17 + PDF=25410 MemberID=18 + PDF=25410 MemberID=19 + PDF=25410 MemberID=20 + PDF=25410 MemberID=21 + PDF=25410 MemberID=22 + PDF=25410 MemberID=23 + PDF=25410 MemberID=24 + PDF=25410 MemberID=25 + PDF=25410 MemberID=26 + PDF=25410 MemberID=27 + PDF=25410 MemberID=28 + PDF=25410 MemberID=29 + PDF=25410 MemberID=30 + PDF=25410 MemberID=31 + PDF=25410 MemberID=32 + PDF=25410 MemberID=33 + PDF=25410 MemberID=34 + PDF=25410 MemberID=35 + PDF=25410 MemberID=36 + PDF=25410 MemberID=37 + PDF=25410 MemberID=38 + PDF=25410 MemberID=39 + PDF=25410 MemberID=40 + PDF=25410 MemberID=41 + PDF=25410 MemberID=42 + PDF=25410 MemberID=43 + PDF=25410 MemberID=44 + PDF=25410 MemberID=45 + PDF=25410 MemberID=46 + PDF=25410 MemberID=47 + PDF=25410 MemberID=48 + PDF=25410 MemberID=49 + PDF=25410 MemberID=50 + # PDFSET -> PDFSET + # 25510: MMHT 2014 NLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht + PDF=25510 MemberID=0 + PDF=25510 MemberID=1 + PDF=25510 MemberID=2 + PDF=25510 MemberID=3 + PDF=25510 MemberID=4 + PDF=25510 MemberID=5 + PDF=25510 MemberID=6 + PDF=25510 MemberID=7 + PDF=25510 MemberID=8 + PDF=25510 MemberID=9 + PDF=25510 MemberID=10 + PDF=25510 MemberID=11 + PDF=25510 MemberID=12 + PDF=25510 MemberID=13 + PDF=25510 MemberID=14 + PDF=25510 MemberID=15 + PDF=25510 MemberID=16 + PDF=25510 MemberID=17 + PDF=25510 MemberID=18 + PDF=25510 MemberID=19 + PDF=25510 MemberID=20 + PDF=25510 MemberID=21 + PDF=25510 MemberID=22 + PDF=25510 MemberID=23 + PDF=25510 MemberID=24 + PDF=25510 MemberID=25 + PDF=25510 MemberID=26 + PDF=25510 MemberID=27 + PDF=25510 MemberID=28 + PDF=25510 MemberID=29 + PDF=25510 MemberID=30 + PDF=25510 MemberID=31 + PDF=25510 MemberID=32 + PDF=25510 MemberID=33 + PDF=25510 MemberID=34 + PDF=25510 MemberID=35 + PDF=25510 MemberID=36 + PDF=25510 MemberID=37 + PDF=25510 MemberID=38 + PDF=25510 MemberID=39 + PDF=25510 MemberID=40 + PDF=25510 MemberID=41 + PDF=25510 MemberID=42 + PDF=25510 MemberID=43 + PDF=25510 MemberID=44 + PDF=25510 MemberID=45 + PDF=25510 MemberID=46 + PDF=25510 MemberID=47 + PDF=25510 MemberID=48 + PDF=25510 MemberID=49 + PDF=25510 MemberID=50 + # PDFSET -> PDFSET + # 25570: MMHT 2014 NLO (fits for range of alpha_S values, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. best-fit alpha_S(M_Z) = 0.120; mem=1-4 --.gt. alpha_S(M_Z) = 0.117,...,0.121. Website: www.hep.ucl.ac.uk/mmht + PDF=25570 MemberID=0 + PDF=25570 MemberID=1 + PDF=25570 MemberID=2 + PDF=25570 MemberID=3 + PDF=25570 MemberID=4 + # PDFSET -> PDFSET + # 25605: MMHT 2014 NLO (range of mc, evolve with 4 flavours maximum). This set has 9 member PDFs. mem=0 --.gt. default mc = 1.40 GeV; mem=1-8 --.gt. mc = 1.15 - 1.55 GeV in steps of 0.05 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25605 MemberID=0 + PDF=25605 MemberID=1 + PDF=25605 MemberID=2 + PDF=25605 MemberID=3 + PDF=25605 MemberID=4 + PDF=25605 MemberID=5 + PDF=25605 MemberID=6 + PDF=25605 MemberID=7 + PDF=25605 MemberID=8 + # PDFSET -> PDFSET + # 25620: MMHT 2014 NLO (range of mb, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. default mb = 4.75 GeV; mem=1-4 --.gt. mb = 4.25 - 5.25 GeV in steps of 0.25 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25620 MemberID=0 + PDF=25620 MemberID=1 + PDF=25620 MemberID=2 + PDF=25620 MemberID=3 + PDF=25620 MemberID=4 + # PDFSET -> PDFSET + # 25710: MMHT 2014 NNLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht + PDF=25710 MemberID=0 + PDF=25710 MemberID=1 + PDF=25710 MemberID=2 + PDF=25710 MemberID=3 + PDF=25710 MemberID=4 + PDF=25710 MemberID=5 + PDF=25710 MemberID=6 + PDF=25710 MemberID=7 + PDF=25710 MemberID=8 + PDF=25710 MemberID=9 + PDF=25710 MemberID=10 + PDF=25710 MemberID=11 + PDF=25710 MemberID=12 + PDF=25710 MemberID=13 + PDF=25710 MemberID=14 + PDF=25710 MemberID=15 + PDF=25710 MemberID=16 + PDF=25710 MemberID=17 + PDF=25710 MemberID=18 + PDF=25710 MemberID=19 + PDF=25710 MemberID=20 + PDF=25710 MemberID=21 + PDF=25710 MemberID=22 + PDF=25710 MemberID=23 + PDF=25710 MemberID=24 + PDF=25710 MemberID=25 + PDF=25710 MemberID=26 + PDF=25710 MemberID=27 + PDF=25710 MemberID=28 + PDF=25710 MemberID=29 + PDF=25710 MemberID=30 + PDF=25710 MemberID=31 + PDF=25710 MemberID=32 + PDF=25710 MemberID=33 + PDF=25710 MemberID=34 + PDF=25710 MemberID=35 + PDF=25710 MemberID=36 + PDF=25710 MemberID=37 + PDF=25710 MemberID=38 + PDF=25710 MemberID=39 + PDF=25710 MemberID=40 + PDF=25710 MemberID=41 + PDF=25710 MemberID=42 + PDF=25710 MemberID=43 + PDF=25710 MemberID=44 + PDF=25710 MemberID=45 + PDF=25710 MemberID=46 + PDF=25710 MemberID=47 + PDF=25710 MemberID=48 + PDF=25710 MemberID=49 + PDF=25710 MemberID=50 + # PDFSET -> PDFSET + # 25770: MMHT 2014 NNLO (fits for range of alpha_S values, evolve with 4 flavours maximum). This set has 3 member PDFs. mem=0 --.gt. best-fit alpha_S(M_Z) = 0.118; mem=1-2 --.gt. alpha_S(M_Z) = 0.117, 0.119. Website: www.hep.ucl.ac.uk/mmht + PDF=25770 MemberID=0 + PDF=25770 MemberID=1 + PDF=25770 MemberID=2 + # PDFSET -> PDFSET + # 25805: MMHT 2014 NNLO (range of mc, evolve with 4 flavours maximum). This set has 9 member PDFs. mem=0 --.gt. default mc = 1.40 GeV; mem=1-8 --.gt. mc = 1.15 - 1.55 GeV in steps of 0.05 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25805 MemberID=0 + PDF=25805 MemberID=1 + PDF=25805 MemberID=2 + PDF=25805 MemberID=3 + PDF=25805 MemberID=4 + PDF=25805 MemberID=5 + PDF=25805 MemberID=6 + PDF=25805 MemberID=7 + PDF=25805 MemberID=8 + # PDFSET -> PDFSET + # 25840: MMHT 2014 NNLO (range of mb, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. default mb = 4.75 GeV; mem=1-4 --.gt. mb = 4.25 - 5.25 GeV in steps of 0.25 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25840 MemberID=0 + PDF=25840 MemberID=1 + PDF=25840 MemberID=2 + PDF=25840 MemberID=3 + PDF=25840 MemberID=4 + # PDFSET -> PDFSET + # 92000: PDF4LHC15_nlo_nf4_30, alphas(MZ)=0.1126, mem=0 ; central value; mem=1-30 ; PDF symmetric eigenvectors + PDF=92000 MemberID=0 + PDF=92000 MemberID=1 + PDF=92000 MemberID=2 + PDF=92000 MemberID=3 + PDF=92000 MemberID=4 + PDF=92000 MemberID=5 + PDF=92000 MemberID=6 + PDF=92000 MemberID=7 + PDF=92000 MemberID=8 + PDF=92000 MemberID=9 + PDF=92000 MemberID=10 + PDF=92000 MemberID=11 + PDF=92000 MemberID=12 + PDF=92000 MemberID=13 + PDF=92000 MemberID=14 + PDF=92000 MemberID=15 + PDF=92000 MemberID=16 + PDF=92000 MemberID=17 + PDF=92000 MemberID=18 + PDF=92000 MemberID=19 + PDF=92000 MemberID=20 + PDF=92000 MemberID=21 + PDF=92000 MemberID=22 + PDF=92000 MemberID=23 + PDF=92000 MemberID=24 + PDF=92000 MemberID=25 + PDF=92000 MemberID=26 + PDF=92000 MemberID=27 + PDF=92000 MemberID=28 + PDF=92000 MemberID=29 + PDF=92000 MemberID=30 + # PDFSET -> PDFSET + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + PDF=306000 MemberID=0 + PDF=306000 MemberID=1 + PDF=306000 MemberID=2 + PDF=306000 MemberID=3 + PDF=306000 MemberID=4 + PDF=306000 MemberID=5 + PDF=306000 MemberID=6 + PDF=306000 MemberID=7 + PDF=306000 MemberID=8 + PDF=306000 MemberID=9 + PDF=306000 MemberID=10 + PDF=306000 MemberID=11 + PDF=306000 MemberID=12 + PDF=306000 MemberID=13 + PDF=306000 MemberID=14 + PDF=306000 MemberID=15 + PDF=306000 MemberID=16 + PDF=306000 MemberID=17 + PDF=306000 MemberID=18 + PDF=306000 MemberID=19 + PDF=306000 MemberID=20 + PDF=306000 MemberID=21 + PDF=306000 MemberID=22 + PDF=306000 MemberID=23 + PDF=306000 MemberID=24 + PDF=306000 MemberID=25 + PDF=306000 MemberID=26 + PDF=306000 MemberID=27 + PDF=306000 MemberID=28 + PDF=306000 MemberID=29 + PDF=306000 MemberID=30 + PDF=306000 MemberID=31 + PDF=306000 MemberID=32 + PDF=306000 MemberID=33 + PDF=306000 MemberID=34 + PDF=306000 MemberID=35 + PDF=306000 MemberID=36 + PDF=306000 MemberID=37 + PDF=306000 MemberID=38 + PDF=306000 MemberID=39 + PDF=306000 MemberID=40 + PDF=306000 MemberID=41 + PDF=306000 MemberID=42 + PDF=306000 MemberID=43 + PDF=306000 MemberID=44 + PDF=306000 MemberID=45 + PDF=306000 MemberID=46 + PDF=306000 MemberID=47 + PDF=306000 MemberID=48 + PDF=306000 MemberID=49 + PDF=306000 MemberID=50 + PDF=306000 MemberID=51 + PDF=306000 MemberID=52 + PDF=306000 MemberID=53 + PDF=306000 MemberID=54 + PDF=306000 MemberID=55 + PDF=306000 MemberID=56 + PDF=306000 MemberID=57 + PDF=306000 MemberID=58 + PDF=306000 MemberID=59 + PDF=306000 MemberID=60 + PDF=306000 MemberID=61 + PDF=306000 MemberID=62 + PDF=306000 MemberID=63 + PDF=306000 MemberID=64 + PDF=306000 MemberID=65 + PDF=306000 MemberID=66 + PDF=306000 MemberID=67 + PDF=306000 MemberID=68 + PDF=306000 MemberID=69 + PDF=306000 MemberID=70 + PDF=306000 MemberID=71 + PDF=306000 MemberID=72 + PDF=306000 MemberID=73 + PDF=306000 MemberID=74 + PDF=306000 MemberID=75 + PDF=306000 MemberID=76 + PDF=306000 MemberID=77 + PDF=306000 MemberID=78 + PDF=306000 MemberID=79 + PDF=306000 MemberID=80 + PDF=306000 MemberID=81 + PDF=306000 MemberID=82 + PDF=306000 MemberID=83 + PDF=306000 MemberID=84 + PDF=306000 MemberID=85 + PDF=306000 MemberID=86 + PDF=306000 MemberID=87 + PDF=306000 MemberID=88 + PDF=306000 MemberID=89 + PDF=306000 MemberID=90 + PDF=306000 MemberID=91 + PDF=306000 MemberID=92 + PDF=306000 MemberID=93 + PDF=306000 MemberID=94 + PDF=306000 MemberID=95 + PDF=306000 MemberID=96 + PDF=306000 MemberID=97 + PDF=306000 MemberID=98 + PDF=306000 MemberID=99 + PDF=306000 MemberID=100 + PDF=306000 MemberID=101 + PDF=306000 MemberID=102 + # PDFSET -> PDFSET + # 320500: NNPDF3.1 NLO global fit, nf=4. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + PDF=320500 MemberID=0 + PDF=320500 MemberID=1 + PDF=320500 MemberID=2 + PDF=320500 MemberID=3 + PDF=320500 MemberID=4 + PDF=320500 MemberID=5 + PDF=320500 MemberID=6 + PDF=320500 MemberID=7 + PDF=320500 MemberID=8 + PDF=320500 MemberID=9 + PDF=320500 MemberID=10 + PDF=320500 MemberID=11 + PDF=320500 MemberID=12 + PDF=320500 MemberID=13 + PDF=320500 MemberID=14 + PDF=320500 MemberID=15 + PDF=320500 MemberID=16 + PDF=320500 MemberID=17 + PDF=320500 MemberID=18 + PDF=320500 MemberID=19 + PDF=320500 MemberID=20 + PDF=320500 MemberID=21 + PDF=320500 MemberID=22 + PDF=320500 MemberID=23 + PDF=320500 MemberID=24 + PDF=320500 MemberID=25 + PDF=320500 MemberID=26 + PDF=320500 MemberID=27 + PDF=320500 MemberID=28 + PDF=320500 MemberID=29 + PDF=320500 MemberID=30 + PDF=320500 MemberID=31 + PDF=320500 MemberID=32 + PDF=320500 MemberID=33 + PDF=320500 MemberID=34 + PDF=320500 MemberID=35 + PDF=320500 MemberID=36 + PDF=320500 MemberID=37 + PDF=320500 MemberID=38 + PDF=320500 MemberID=39 + PDF=320500 MemberID=40 + PDF=320500 MemberID=41 + PDF=320500 MemberID=42 + PDF=320500 MemberID=43 + PDF=320500 MemberID=44 + PDF=320500 MemberID=45 + PDF=320500 MemberID=46 + PDF=320500 MemberID=47 + PDF=320500 MemberID=48 + PDF=320500 MemberID=49 + PDF=320500 MemberID=50 + PDF=320500 MemberID=51 + PDF=320500 MemberID=52 + PDF=320500 MemberID=53 + PDF=320500 MemberID=54 + PDF=320500 MemberID=55 + PDF=320500 MemberID=56 + PDF=320500 MemberID=57 + PDF=320500 MemberID=58 + PDF=320500 MemberID=59 + PDF=320500 MemberID=60 + PDF=320500 MemberID=61 + PDF=320500 MemberID=62 + PDF=320500 MemberID=63 + PDF=320500 MemberID=64 + PDF=320500 MemberID=65 + PDF=320500 MemberID=66 + PDF=320500 MemberID=67 + PDF=320500 MemberID=68 + PDF=320500 MemberID=69 + PDF=320500 MemberID=70 + PDF=320500 MemberID=71 + PDF=320500 MemberID=72 + PDF=320500 MemberID=73 + PDF=320500 MemberID=74 + PDF=320500 MemberID=75 + PDF=320500 MemberID=76 + PDF=320500 MemberID=77 + PDF=320500 MemberID=78 + PDF=320500 MemberID=79 + PDF=320500 MemberID=80 + PDF=320500 MemberID=81 + PDF=320500 MemberID=82 + PDF=320500 MemberID=83 + PDF=320500 MemberID=84 + PDF=320500 MemberID=85 + PDF=320500 MemberID=86 + PDF=320500 MemberID=87 + PDF=320500 MemberID=88 + PDF=320500 MemberID=89 + PDF=320500 MemberID=90 + PDF=320500 MemberID=91 + PDF=320500 MemberID=92 + PDF=320500 MemberID=93 + PDF=320500 MemberID=94 + PDF=320500 MemberID=95 + PDF=320500 MemberID=96 + PDF=320500 MemberID=97 + PDF=320500 MemberID=98 + PDF=320500 MemberID=99 + PDF=320500 MemberID=100 + # PDFSET -> PDFSET + # 260400: NNPDF3.0 NLO global fit, alphas(mb)=0.22278. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + PDF=260400 MemberID=0 + PDF=260400 MemberID=1 + PDF=260400 MemberID=2 + PDF=260400 MemberID=3 + PDF=260400 MemberID=4 + PDF=260400 MemberID=5 + PDF=260400 MemberID=6 + PDF=260400 MemberID=7 + PDF=260400 MemberID=8 + PDF=260400 MemberID=9 + PDF=260400 MemberID=10 + PDF=260400 MemberID=11 + PDF=260400 MemberID=12 + PDF=260400 MemberID=13 + PDF=260400 MemberID=14 + PDF=260400 MemberID=15 + PDF=260400 MemberID=16 + PDF=260400 MemberID=17 + PDF=260400 MemberID=18 + PDF=260400 MemberID=19 + PDF=260400 MemberID=20 + PDF=260400 MemberID=21 + PDF=260400 MemberID=22 + PDF=260400 MemberID=23 + PDF=260400 MemberID=24 + PDF=260400 MemberID=25 + PDF=260400 MemberID=26 + PDF=260400 MemberID=27 + PDF=260400 MemberID=28 + PDF=260400 MemberID=29 + PDF=260400 MemberID=30 + PDF=260400 MemberID=31 + PDF=260400 MemberID=32 + PDF=260400 MemberID=33 + PDF=260400 MemberID=34 + PDF=260400 MemberID=35 + PDF=260400 MemberID=36 + PDF=260400 MemberID=37 + PDF=260400 MemberID=38 + PDF=260400 MemberID=39 + PDF=260400 MemberID=40 + PDF=260400 MemberID=41 + PDF=260400 MemberID=42 + PDF=260400 MemberID=43 + PDF=260400 MemberID=44 + PDF=260400 MemberID=45 + PDF=260400 MemberID=46 + PDF=260400 MemberID=47 + PDF=260400 MemberID=48 + PDF=260400 MemberID=49 + PDF=260400 MemberID=50 + PDF=260400 MemberID=51 + PDF=260400 MemberID=52 + PDF=260400 MemberID=53 + PDF=260400 MemberID=54 + PDF=260400 MemberID=55 + PDF=260400 MemberID=56 + PDF=260400 MemberID=57 + PDF=260400 MemberID=58 + PDF=260400 MemberID=59 + PDF=260400 MemberID=60 + PDF=260400 MemberID=61 + PDF=260400 MemberID=62 + PDF=260400 MemberID=63 + PDF=260400 MemberID=64 + PDF=260400 MemberID=65 + PDF=260400 MemberID=66 + PDF=260400 MemberID=67 + PDF=260400 MemberID=68 + PDF=260400 MemberID=69 + PDF=260400 MemberID=70 + PDF=260400 MemberID=71 + PDF=260400 MemberID=72 + PDF=260400 MemberID=73 + PDF=260400 MemberID=74 + PDF=260400 MemberID=75 + PDF=260400 MemberID=76 + PDF=260400 MemberID=77 + PDF=260400 MemberID=78 + PDF=260400 MemberID=79 + PDF=260400 MemberID=80 + PDF=260400 MemberID=81 + PDF=260400 MemberID=82 + PDF=260400 MemberID=83 + PDF=260400 MemberID=84 + PDF=260400 MemberID=85 + PDF=260400 MemberID=86 + PDF=260400 MemberID=87 + PDF=260400 MemberID=88 + PDF=260400 MemberID=89 + PDF=260400 MemberID=90 + PDF=260400 MemberID=91 + PDF=260400 MemberID=92 + PDF=260400 MemberID=93 + PDF=260400 MemberID=94 + PDF=260400 MemberID=95 + PDF=260400 MemberID=96 + PDF=260400 MemberID=97 + PDF=260400 MemberID=98 + PDF=260400 MemberID=99 + PDF=260400 MemberID=100 + # PDFSET -> PDF + PDF=262400 MemberID=0 + PDF=263400 MemberID=0 + # 292000: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119; maximum number of active flavors NF=4 + PDF=292000 MemberID=0 + PDF=292000 MemberID=1 + PDF=292000 MemberID=2 + PDF=292000 MemberID=3 + PDF=292000 MemberID=4 + PDF=292000 MemberID=5 + PDF=292000 MemberID=6 + PDF=292000 MemberID=7 + PDF=292000 MemberID=8 + PDF=292000 MemberID=9 + PDF=292000 MemberID=10 + PDF=292000 MemberID=11 + PDF=292000 MemberID=12 + PDF=292000 MemberID=13 + PDF=292000 MemberID=14 + PDF=292000 MemberID=15 + PDF=292000 MemberID=16 + PDF=292000 MemberID=17 + PDF=292000 MemberID=18 + PDF=292000 MemberID=19 + PDF=292000 MemberID=20 + PDF=292000 MemberID=21 + PDF=292000 MemberID=22 + PDF=292000 MemberID=23 + PDF=292000 MemberID=24 + PDF=292000 MemberID=25 + PDF=292000 MemberID=26 + PDF=292000 MemberID=27 + PDF=292000 MemberID=28 + PDF=292000 MemberID=29 + PDF=292000 MemberID=30 + PDF=292000 MemberID=31 + PDF=292000 MemberID=32 + PDF=292000 MemberID=33 + PDF=292000 MemberID=34 + PDF=292000 MemberID=35 + PDF=292000 MemberID=36 + PDF=292000 MemberID=37 + PDF=292000 MemberID=38 + PDF=292000 MemberID=39 + PDF=292000 MemberID=40 + PDF=292000 MemberID=41 + PDF=292000 MemberID=42 + PDF=292000 MemberID=43 + PDF=292000 MemberID=44 + PDF=292000 MemberID=45 + PDF=292000 MemberID=46 + PDF=292000 MemberID=47 + PDF=292000 MemberID=48 + PDF=292000 MemberID=49 + PDF=292000 MemberID=50 + PDF=292000 MemberID=51 + PDF=292000 MemberID=52 + PDF=292000 MemberID=53 + PDF=292000 MemberID=54 + PDF=292000 MemberID=55 + PDF=292000 MemberID=56 + PDF=292000 MemberID=57 + PDF=292000 MemberID=58 + PDF=292000 MemberID=59 + PDF=292000 MemberID=60 + PDF=292000 MemberID=61 + PDF=292000 MemberID=62 + PDF=292000 MemberID=63 + PDF=292000 MemberID=64 + PDF=292000 MemberID=65 + PDF=292000 MemberID=66 + PDF=292000 MemberID=67 + PDF=292000 MemberID=68 + PDF=292000 MemberID=69 + PDF=292000 MemberID=70 + PDF=292000 MemberID=71 + PDF=292000 MemberID=72 + PDF=292000 MemberID=73 + PDF=292000 MemberID=74 + PDF=292000 MemberID=75 + PDF=292000 MemberID=76 + PDF=292000 MemberID=77 + PDF=292000 MemberID=78 + PDF=292000 MemberID=79 + PDF=292000 MemberID=80 + PDF=292000 MemberID=81 + PDF=292000 MemberID=82 + PDF=292000 MemberID=83 + PDF=292000 MemberID=84 + PDF=292000 MemberID=85 + PDF=292000 MemberID=86 + PDF=292000 MemberID=87 + PDF=292000 MemberID=88 + PDF=292000 MemberID=89 + PDF=292000 MemberID=90 + PDF=292000 MemberID=91 + PDF=292000 MemberID=92 + PDF=292000 MemberID=93 + PDF=292000 MemberID=94 + PDF=292000 MemberID=95 + PDF=292000 MemberID=96 + PDF=292000 MemberID=97 + PDF=292000 MemberID=98 + PDF=292000 MemberID=99 + PDF=292000 MemberID=100 + PDF=292000 MemberID=101 + PDF=292000 MemberID=102 + # PDFSET -> PDF + PDF=292400 MemberID=0 + diff --git a/testFiles/W1jet_260_simplescale_weight_info.txt b/testFiles/W1jet_260_simplescale_weight_info.txt new file mode 100644 index 0000000000000..ec48a9642f46c --- /dev/null +++ b/testFiles/W1jet_260_simplescale_weight_info.txt @@ -0,0 +1,1149 @@ + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + PDF + + MUR=2.0 + MUR=0.5 + MUF=2.0 + MUR=2.0 MUF=2.0 + MUR=0.5 MUF=2.0 + MUF=0.5 + MUR=2.0 MUF=0.5 + MUR=0.5 MUF=0.5 + # scale + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + PDF=306000 MemberID=1 + PDF=306000 MemberID=2 + PDF=306000 MemberID=3 + PDF=306000 MemberID=4 + PDF=306000 MemberID=5 + PDF=306000 MemberID=6 + PDF=306000 MemberID=7 + PDF=306000 MemberID=8 + PDF=306000 MemberID=9 + PDF=306000 MemberID=10 + PDF=306000 MemberID=11 + PDF=306000 MemberID=12 + PDF=306000 MemberID=13 + PDF=306000 MemberID=14 + PDF=306000 MemberID=15 + PDF=306000 MemberID=16 + PDF=306000 MemberID=17 + PDF=306000 MemberID=18 + PDF=306000 MemberID=19 + PDF=306000 MemberID=20 + PDF=306000 MemberID=21 + PDF=306000 MemberID=22 + PDF=306000 MemberID=23 + PDF=306000 MemberID=24 + PDF=306000 MemberID=25 + PDF=306000 MemberID=26 + PDF=306000 MemberID=27 + PDF=306000 MemberID=28 + PDF=306000 MemberID=29 + PDF=306000 MemberID=30 + PDF=306000 MemberID=31 + PDF=306000 MemberID=32 + PDF=306000 MemberID=33 + PDF=306000 MemberID=34 + PDF=306000 MemberID=35 + PDF=306000 MemberID=36 + PDF=306000 MemberID=37 + PDF=306000 MemberID=38 + PDF=306000 MemberID=39 + PDF=306000 MemberID=40 + PDF=306000 MemberID=41 + PDF=306000 MemberID=42 + PDF=306000 MemberID=43 + PDF=306000 MemberID=44 + PDF=306000 MemberID=45 + PDF=306000 MemberID=46 + PDF=306000 MemberID=47 + PDF=306000 MemberID=48 + PDF=306000 MemberID=49 + PDF=306000 MemberID=50 + PDF=306000 MemberID=51 + PDF=306000 MemberID=52 + PDF=306000 MemberID=53 + PDF=306000 MemberID=54 + PDF=306000 MemberID=55 + PDF=306000 MemberID=56 + PDF=306000 MemberID=57 + PDF=306000 MemberID=58 + PDF=306000 MemberID=59 + PDF=306000 MemberID=60 + PDF=306000 MemberID=61 + PDF=306000 MemberID=62 + PDF=306000 MemberID=63 + PDF=306000 MemberID=64 + PDF=306000 MemberID=65 + PDF=306000 MemberID=66 + PDF=306000 MemberID=67 + PDF=306000 MemberID=68 + PDF=306000 MemberID=69 + PDF=306000 MemberID=70 + PDF=306000 MemberID=71 + PDF=306000 MemberID=72 + PDF=306000 MemberID=73 + PDF=306000 MemberID=74 + PDF=306000 MemberID=75 + PDF=306000 MemberID=76 + PDF=306000 MemberID=77 + PDF=306000 MemberID=78 + PDF=306000 MemberID=79 + PDF=306000 MemberID=80 + PDF=306000 MemberID=81 + PDF=306000 MemberID=82 + PDF=306000 MemberID=83 + PDF=306000 MemberID=84 + PDF=306000 MemberID=85 + PDF=306000 MemberID=86 + PDF=306000 MemberID=87 + PDF=306000 MemberID=88 + PDF=306000 MemberID=89 + PDF=306000 MemberID=90 + PDF=306000 MemberID=91 + PDF=306000 MemberID=92 + PDF=306000 MemberID=93 + PDF=306000 MemberID=94 + PDF=306000 MemberID=95 + PDF=306000 MemberID=96 + PDF=306000 MemberID=97 + PDF=306000 MemberID=98 + PDF=306000 MemberID=99 + PDF=306000 MemberID=100 + PDF=306000 MemberID=101 + PDF=306000 MemberID=102 + # PDFSET -> PDF + PDF=322500 MemberID=0 + PDF=322700 MemberID=0 + PDF=322900 MemberID=0 + PDF=323100 MemberID=0 + PDF=323300 MemberID=0 + PDF=323500 MemberID=0 + PDF=323700 MemberID=0 + PDF=323900 MemberID=0 + # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + PDF=305800 MemberID=0 + PDF=305800 MemberID=1 + PDF=305800 MemberID=2 + PDF=305800 MemberID=3 + PDF=305800 MemberID=4 + PDF=305800 MemberID=5 + PDF=305800 MemberID=6 + PDF=305800 MemberID=7 + PDF=305800 MemberID=8 + PDF=305800 MemberID=9 + PDF=305800 MemberID=10 + PDF=305800 MemberID=11 + PDF=305800 MemberID=12 + PDF=305800 MemberID=13 + PDF=305800 MemberID=14 + PDF=305800 MemberID=15 + PDF=305800 MemberID=16 + PDF=305800 MemberID=17 + PDF=305800 MemberID=18 + PDF=305800 MemberID=19 + PDF=305800 MemberID=20 + PDF=305800 MemberID=21 + PDF=305800 MemberID=22 + PDF=305800 MemberID=23 + PDF=305800 MemberID=24 + PDF=305800 MemberID=25 + PDF=305800 MemberID=26 + PDF=305800 MemberID=27 + PDF=305800 MemberID=28 + PDF=305800 MemberID=29 + PDF=305800 MemberID=30 + PDF=305800 MemberID=31 + PDF=305800 MemberID=32 + PDF=305800 MemberID=33 + PDF=305800 MemberID=34 + PDF=305800 MemberID=35 + PDF=305800 MemberID=36 + PDF=305800 MemberID=37 + PDF=305800 MemberID=38 + PDF=305800 MemberID=39 + PDF=305800 MemberID=40 + PDF=305800 MemberID=41 + PDF=305800 MemberID=42 + PDF=305800 MemberID=43 + PDF=305800 MemberID=44 + PDF=305800 MemberID=45 + PDF=305800 MemberID=46 + PDF=305800 MemberID=47 + PDF=305800 MemberID=48 + PDF=305800 MemberID=49 + PDF=305800 MemberID=50 + PDF=305800 MemberID=51 + PDF=305800 MemberID=52 + PDF=305800 MemberID=53 + PDF=305800 MemberID=54 + PDF=305800 MemberID=55 + PDF=305800 MemberID=56 + PDF=305800 MemberID=57 + PDF=305800 MemberID=58 + PDF=305800 MemberID=59 + PDF=305800 MemberID=60 + PDF=305800 MemberID=61 + PDF=305800 MemberID=62 + PDF=305800 MemberID=63 + PDF=305800 MemberID=64 + PDF=305800 MemberID=65 + PDF=305800 MemberID=66 + PDF=305800 MemberID=67 + PDF=305800 MemberID=68 + PDF=305800 MemberID=69 + PDF=305800 MemberID=70 + PDF=305800 MemberID=71 + PDF=305800 MemberID=72 + PDF=305800 MemberID=73 + PDF=305800 MemberID=74 + PDF=305800 MemberID=75 + PDF=305800 MemberID=76 + PDF=305800 MemberID=77 + PDF=305800 MemberID=78 + PDF=305800 MemberID=79 + PDF=305800 MemberID=80 + PDF=305800 MemberID=81 + PDF=305800 MemberID=82 + PDF=305800 MemberID=83 + PDF=305800 MemberID=84 + PDF=305800 MemberID=85 + PDF=305800 MemberID=86 + PDF=305800 MemberID=87 + PDF=305800 MemberID=88 + PDF=305800 MemberID=89 + PDF=305800 MemberID=90 + PDF=305800 MemberID=91 + PDF=305800 MemberID=92 + PDF=305800 MemberID=93 + PDF=305800 MemberID=94 + PDF=305800 MemberID=95 + PDF=305800 MemberID=96 + PDF=305800 MemberID=97 + PDF=305800 MemberID=98 + PDF=305800 MemberID=99 + PDF=305800 MemberID=100 + PDF=305800 MemberID=101 + PDF=305800 MemberID=102 + # PDFSET -> PDFSET + # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13000 MemberID=0 + PDF=13000 MemberID=1 + PDF=13000 MemberID=2 + PDF=13000 MemberID=3 + PDF=13000 MemberID=4 + PDF=13000 MemberID=5 + PDF=13000 MemberID=6 + PDF=13000 MemberID=7 + PDF=13000 MemberID=8 + PDF=13000 MemberID=9 + PDF=13000 MemberID=10 + PDF=13000 MemberID=11 + PDF=13000 MemberID=12 + PDF=13000 MemberID=13 + PDF=13000 MemberID=14 + PDF=13000 MemberID=15 + PDF=13000 MemberID=16 + PDF=13000 MemberID=17 + PDF=13000 MemberID=18 + PDF=13000 MemberID=19 + PDF=13000 MemberID=20 + PDF=13000 MemberID=21 + PDF=13000 MemberID=22 + PDF=13000 MemberID=23 + PDF=13000 MemberID=24 + PDF=13000 MemberID=25 + PDF=13000 MemberID=26 + PDF=13000 MemberID=27 + PDF=13000 MemberID=28 + PDF=13000 MemberID=29 + PDF=13000 MemberID=30 + PDF=13000 MemberID=31 + PDF=13000 MemberID=32 + PDF=13000 MemberID=33 + PDF=13000 MemberID=34 + PDF=13000 MemberID=35 + PDF=13000 MemberID=36 + PDF=13000 MemberID=37 + PDF=13000 MemberID=38 + PDF=13000 MemberID=39 + PDF=13000 MemberID=40 + PDF=13000 MemberID=41 + PDF=13000 MemberID=42 + PDF=13000 MemberID=43 + PDF=13000 MemberID=44 + PDF=13000 MemberID=45 + PDF=13000 MemberID=46 + PDF=13000 MemberID=47 + PDF=13000 MemberID=48 + PDF=13000 MemberID=49 + PDF=13000 MemberID=50 + PDF=13000 MemberID=51 + PDF=13000 MemberID=52 + PDF=13000 MemberID=53 + PDF=13000 MemberID=54 + PDF=13000 MemberID=55 + PDF=13000 MemberID=56 + # PDFSET -> PDF + PDF=13065 MemberID=0 + PDF=13069 MemberID=0 + # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13100 MemberID=0 + PDF=13100 MemberID=1 + PDF=13100 MemberID=2 + PDF=13100 MemberID=3 + PDF=13100 MemberID=4 + PDF=13100 MemberID=5 + PDF=13100 MemberID=6 + PDF=13100 MemberID=7 + PDF=13100 MemberID=8 + PDF=13100 MemberID=9 + PDF=13100 MemberID=10 + PDF=13100 MemberID=11 + PDF=13100 MemberID=12 + PDF=13100 MemberID=13 + PDF=13100 MemberID=14 + PDF=13100 MemberID=15 + PDF=13100 MemberID=16 + PDF=13100 MemberID=17 + PDF=13100 MemberID=18 + PDF=13100 MemberID=19 + PDF=13100 MemberID=20 + PDF=13100 MemberID=21 + PDF=13100 MemberID=22 + PDF=13100 MemberID=23 + PDF=13100 MemberID=24 + PDF=13100 MemberID=25 + PDF=13100 MemberID=26 + PDF=13100 MemberID=27 + PDF=13100 MemberID=28 + PDF=13100 MemberID=29 + PDF=13100 MemberID=30 + PDF=13100 MemberID=31 + PDF=13100 MemberID=32 + PDF=13100 MemberID=33 + PDF=13100 MemberID=34 + PDF=13100 MemberID=35 + PDF=13100 MemberID=36 + PDF=13100 MemberID=37 + PDF=13100 MemberID=38 + PDF=13100 MemberID=39 + PDF=13100 MemberID=40 + PDF=13100 MemberID=41 + PDF=13100 MemberID=42 + PDF=13100 MemberID=43 + PDF=13100 MemberID=44 + PDF=13100 MemberID=45 + PDF=13100 MemberID=46 + PDF=13100 MemberID=47 + PDF=13100 MemberID=48 + PDF=13100 MemberID=49 + PDF=13100 MemberID=50 + PDF=13100 MemberID=51 + PDF=13100 MemberID=52 + PDF=13100 MemberID=53 + PDF=13100 MemberID=54 + PDF=13100 MemberID=55 + PDF=13100 MemberID=56 + # PDFSET -> PDF + PDF=13163 MemberID=0 + PDF=13167 MemberID=0 + PDF=13200 MemberID=0 + # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25200 MemberID=0 + PDF=25200 MemberID=1 + PDF=25200 MemberID=2 + PDF=25200 MemberID=3 + PDF=25200 MemberID=4 + PDF=25200 MemberID=5 + PDF=25200 MemberID=6 + PDF=25200 MemberID=7 + PDF=25200 MemberID=8 + PDF=25200 MemberID=9 + PDF=25200 MemberID=10 + PDF=25200 MemberID=11 + PDF=25200 MemberID=12 + PDF=25200 MemberID=13 + PDF=25200 MemberID=14 + PDF=25200 MemberID=15 + PDF=25200 MemberID=16 + PDF=25200 MemberID=17 + PDF=25200 MemberID=18 + PDF=25200 MemberID=19 + PDF=25200 MemberID=20 + PDF=25200 MemberID=21 + PDF=25200 MemberID=22 + PDF=25200 MemberID=23 + PDF=25200 MemberID=24 + PDF=25200 MemberID=25 + PDF=25200 MemberID=26 + PDF=25200 MemberID=27 + PDF=25200 MemberID=28 + PDF=25200 MemberID=29 + PDF=25200 MemberID=30 + PDF=25200 MemberID=31 + PDF=25200 MemberID=32 + PDF=25200 MemberID=33 + PDF=25200 MemberID=34 + PDF=25200 MemberID=35 + PDF=25200 MemberID=36 + PDF=25200 MemberID=37 + PDF=25200 MemberID=38 + PDF=25200 MemberID=39 + PDF=25200 MemberID=40 + PDF=25200 MemberID=41 + PDF=25200 MemberID=42 + PDF=25200 MemberID=43 + PDF=25200 MemberID=44 + PDF=25200 MemberID=45 + PDF=25200 MemberID=46 + PDF=25200 MemberID=47 + PDF=25200 MemberID=48 + PDF=25200 MemberID=49 + PDF=25200 MemberID=50 + # PDFSET -> PDFSET + # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25300 MemberID=0 + PDF=25300 MemberID=1 + PDF=25300 MemberID=2 + PDF=25300 MemberID=3 + PDF=25300 MemberID=4 + PDF=25300 MemberID=5 + PDF=25300 MemberID=6 + PDF=25300 MemberID=7 + PDF=25300 MemberID=8 + PDF=25300 MemberID=9 + PDF=25300 MemberID=10 + PDF=25300 MemberID=11 + PDF=25300 MemberID=12 + PDF=25300 MemberID=13 + PDF=25300 MemberID=14 + PDF=25300 MemberID=15 + PDF=25300 MemberID=16 + PDF=25300 MemberID=17 + PDF=25300 MemberID=18 + PDF=25300 MemberID=19 + PDF=25300 MemberID=20 + PDF=25300 MemberID=21 + PDF=25300 MemberID=22 + PDF=25300 MemberID=23 + PDF=25300 MemberID=24 + PDF=25300 MemberID=25 + PDF=25300 MemberID=26 + PDF=25300 MemberID=27 + PDF=25300 MemberID=28 + PDF=25300 MemberID=29 + PDF=25300 MemberID=30 + PDF=25300 MemberID=31 + PDF=25300 MemberID=32 + PDF=25300 MemberID=33 + PDF=25300 MemberID=34 + PDF=25300 MemberID=35 + PDF=25300 MemberID=36 + PDF=25300 MemberID=37 + PDF=25300 MemberID=38 + PDF=25300 MemberID=39 + PDF=25300 MemberID=40 + PDF=25300 MemberID=41 + PDF=25300 MemberID=42 + PDF=25300 MemberID=43 + PDF=25300 MemberID=44 + PDF=25300 MemberID=45 + PDF=25300 MemberID=46 + PDF=25300 MemberID=47 + PDF=25300 MemberID=48 + PDF=25300 MemberID=49 + PDF=25300 MemberID=50 + # PDFSET -> PDF + PDF=25000 MemberID=0 + # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set + PDF=42780 MemberID=0 + PDF=42780 MemberID=1 + PDF=42780 MemberID=2 + PDF=42780 MemberID=3 + PDF=42780 MemberID=4 + PDF=42780 MemberID=5 + PDF=42780 MemberID=6 + PDF=42780 MemberID=7 + PDF=42780 MemberID=8 + PDF=42780 MemberID=9 + PDF=42780 MemberID=10 + PDF=42780 MemberID=11 + PDF=42780 MemberID=12 + PDF=42780 MemberID=13 + PDF=42780 MemberID=14 + PDF=42780 MemberID=15 + PDF=42780 MemberID=16 + PDF=42780 MemberID=17 + PDF=42780 MemberID=18 + PDF=42780 MemberID=19 + PDF=42780 MemberID=20 + PDF=42780 MemberID=21 + PDF=42780 MemberID=22 + PDF=42780 MemberID=23 + PDF=42780 MemberID=24 + PDF=42780 MemberID=25 + PDF=42780 MemberID=26 + PDF=42780 MemberID=27 + PDF=42780 MemberID=28 + PDF=42780 MemberID=29 + # PDFSET -> PDFSET + # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=90200 MemberID=0 + PDF=90200 MemberID=1 + PDF=90200 MemberID=2 + PDF=90200 MemberID=3 + PDF=90200 MemberID=4 + PDF=90200 MemberID=5 + PDF=90200 MemberID=6 + PDF=90200 MemberID=7 + PDF=90200 MemberID=8 + PDF=90200 MemberID=9 + PDF=90200 MemberID=10 + PDF=90200 MemberID=11 + PDF=90200 MemberID=12 + PDF=90200 MemberID=13 + PDF=90200 MemberID=14 + PDF=90200 MemberID=15 + PDF=90200 MemberID=16 + PDF=90200 MemberID=17 + PDF=90200 MemberID=18 + PDF=90200 MemberID=19 + PDF=90200 MemberID=20 + PDF=90200 MemberID=21 + PDF=90200 MemberID=22 + PDF=90200 MemberID=23 + PDF=90200 MemberID=24 + PDF=90200 MemberID=25 + PDF=90200 MemberID=26 + PDF=90200 MemberID=27 + PDF=90200 MemberID=28 + PDF=90200 MemberID=29 + PDF=90200 MemberID=30 + PDF=90200 MemberID=31 + PDF=90200 MemberID=32 + PDF=90200 MemberID=33 + PDF=90200 MemberID=34 + PDF=90200 MemberID=35 + PDF=90200 MemberID=36 + PDF=90200 MemberID=37 + PDF=90200 MemberID=38 + PDF=90200 MemberID=39 + PDF=90200 MemberID=40 + PDF=90200 MemberID=41 + PDF=90200 MemberID=42 + PDF=90200 MemberID=43 + PDF=90200 MemberID=44 + PDF=90200 MemberID=45 + PDF=90200 MemberID=46 + PDF=90200 MemberID=47 + PDF=90200 MemberID=48 + PDF=90200 MemberID=49 + PDF=90200 MemberID=50 + PDF=90200 MemberID=51 + PDF=90200 MemberID=52 + PDF=90200 MemberID=53 + PDF=90200 MemberID=54 + PDF=90200 MemberID=55 + PDF=90200 MemberID=56 + PDF=90200 MemberID=57 + PDF=90200 MemberID=58 + PDF=90200 MemberID=59 + PDF=90200 MemberID=60 + PDF=90200 MemberID=61 + PDF=90200 MemberID=62 + PDF=90200 MemberID=63 + PDF=90200 MemberID=64 + PDF=90200 MemberID=65 + PDF=90200 MemberID=66 + PDF=90200 MemberID=67 + PDF=90200 MemberID=68 + PDF=90200 MemberID=69 + PDF=90200 MemberID=70 + PDF=90200 MemberID=71 + PDF=90200 MemberID=72 + PDF=90200 MemberID=73 + PDF=90200 MemberID=74 + PDF=90200 MemberID=75 + PDF=90200 MemberID=76 + PDF=90200 MemberID=77 + PDF=90200 MemberID=78 + PDF=90200 MemberID=79 + PDF=90200 MemberID=80 + PDF=90200 MemberID=81 + PDF=90200 MemberID=82 + PDF=90200 MemberID=83 + PDF=90200 MemberID=84 + PDF=90200 MemberID=85 + PDF=90200 MemberID=86 + PDF=90200 MemberID=87 + PDF=90200 MemberID=88 + PDF=90200 MemberID=89 + PDF=90200 MemberID=90 + PDF=90200 MemberID=91 + PDF=90200 MemberID=92 + PDF=90200 MemberID=93 + PDF=90200 MemberID=94 + PDF=90200 MemberID=95 + PDF=90200 MemberID=96 + PDF=90200 MemberID=97 + PDF=90200 MemberID=98 + PDF=90200 MemberID=99 + PDF=90200 MemberID=100 + PDF=90200 MemberID=101 + PDF=90200 MemberID=102 + # PDFSET -> PDFSET + # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=91200 MemberID=0 + PDF=91200 MemberID=1 + PDF=91200 MemberID=2 + PDF=91200 MemberID=3 + PDF=91200 MemberID=4 + PDF=91200 MemberID=5 + PDF=91200 MemberID=6 + PDF=91200 MemberID=7 + PDF=91200 MemberID=8 + PDF=91200 MemberID=9 + PDF=91200 MemberID=10 + PDF=91200 MemberID=11 + PDF=91200 MemberID=12 + PDF=91200 MemberID=13 + PDF=91200 MemberID=14 + PDF=91200 MemberID=15 + PDF=91200 MemberID=16 + PDF=91200 MemberID=17 + PDF=91200 MemberID=18 + PDF=91200 MemberID=19 + PDF=91200 MemberID=20 + PDF=91200 MemberID=21 + PDF=91200 MemberID=22 + PDF=91200 MemberID=23 + PDF=91200 MemberID=24 + PDF=91200 MemberID=25 + PDF=91200 MemberID=26 + PDF=91200 MemberID=27 + PDF=91200 MemberID=28 + PDF=91200 MemberID=29 + PDF=91200 MemberID=30 + PDF=91200 MemberID=31 + PDF=91200 MemberID=32 + PDF=91200 MemberID=33 + PDF=91200 MemberID=34 + PDF=91200 MemberID=35 + PDF=91200 MemberID=36 + PDF=91200 MemberID=37 + PDF=91200 MemberID=38 + PDF=91200 MemberID=39 + PDF=91200 MemberID=40 + PDF=91200 MemberID=41 + PDF=91200 MemberID=42 + PDF=91200 MemberID=43 + PDF=91200 MemberID=44 + PDF=91200 MemberID=45 + PDF=91200 MemberID=46 + PDF=91200 MemberID=47 + PDF=91200 MemberID=48 + PDF=91200 MemberID=49 + PDF=91200 MemberID=50 + PDF=91200 MemberID=51 + PDF=91200 MemberID=52 + PDF=91200 MemberID=53 + PDF=91200 MemberID=54 + PDF=91200 MemberID=55 + PDF=91200 MemberID=56 + PDF=91200 MemberID=57 + PDF=91200 MemberID=58 + PDF=91200 MemberID=59 + PDF=91200 MemberID=60 + PDF=91200 MemberID=61 + PDF=91200 MemberID=62 + PDF=91200 MemberID=63 + PDF=91200 MemberID=64 + PDF=91200 MemberID=65 + PDF=91200 MemberID=66 + PDF=91200 MemberID=67 + PDF=91200 MemberID=68 + PDF=91200 MemberID=69 + PDF=91200 MemberID=70 + PDF=91200 MemberID=71 + PDF=91200 MemberID=72 + PDF=91200 MemberID=73 + PDF=91200 MemberID=74 + PDF=91200 MemberID=75 + PDF=91200 MemberID=76 + PDF=91200 MemberID=77 + PDF=91200 MemberID=78 + PDF=91200 MemberID=79 + PDF=91200 MemberID=80 + PDF=91200 MemberID=81 + PDF=91200 MemberID=82 + PDF=91200 MemberID=83 + PDF=91200 MemberID=84 + PDF=91200 MemberID=85 + PDF=91200 MemberID=86 + PDF=91200 MemberID=87 + PDF=91200 MemberID=88 + PDF=91200 MemberID=89 + PDF=91200 MemberID=90 + PDF=91200 MemberID=91 + PDF=91200 MemberID=92 + PDF=91200 MemberID=93 + PDF=91200 MemberID=94 + PDF=91200 MemberID=95 + PDF=91200 MemberID=96 + PDF=91200 MemberID=97 + PDF=91200 MemberID=98 + PDF=91200 MemberID=99 + PDF=91200 MemberID=100 + PDF=91200 MemberID=101 + PDF=91200 MemberID=102 + # PDFSET -> PDFSET + # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=90400 MemberID=0 + PDF=90400 MemberID=1 + PDF=90400 MemberID=2 + PDF=90400 MemberID=3 + PDF=90400 MemberID=4 + PDF=90400 MemberID=5 + PDF=90400 MemberID=6 + PDF=90400 MemberID=7 + PDF=90400 MemberID=8 + PDF=90400 MemberID=9 + PDF=90400 MemberID=10 + PDF=90400 MemberID=11 + PDF=90400 MemberID=12 + PDF=90400 MemberID=13 + PDF=90400 MemberID=14 + PDF=90400 MemberID=15 + PDF=90400 MemberID=16 + PDF=90400 MemberID=17 + PDF=90400 MemberID=18 + PDF=90400 MemberID=19 + PDF=90400 MemberID=20 + PDF=90400 MemberID=21 + PDF=90400 MemberID=22 + PDF=90400 MemberID=23 + PDF=90400 MemberID=24 + PDF=90400 MemberID=25 + PDF=90400 MemberID=26 + PDF=90400 MemberID=27 + PDF=90400 MemberID=28 + PDF=90400 MemberID=29 + PDF=90400 MemberID=30 + PDF=90400 MemberID=31 + PDF=90400 MemberID=32 + # PDFSET -> PDFSET + # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=91400 MemberID=0 + PDF=91400 MemberID=1 + PDF=91400 MemberID=2 + PDF=91400 MemberID=3 + PDF=91400 MemberID=4 + PDF=91400 MemberID=5 + PDF=91400 MemberID=6 + PDF=91400 MemberID=7 + PDF=91400 MemberID=8 + PDF=91400 MemberID=9 + PDF=91400 MemberID=10 + PDF=91400 MemberID=11 + PDF=91400 MemberID=12 + PDF=91400 MemberID=13 + PDF=91400 MemberID=14 + PDF=91400 MemberID=15 + PDF=91400 MemberID=16 + PDF=91400 MemberID=17 + PDF=91400 MemberID=18 + PDF=91400 MemberID=19 + PDF=91400 MemberID=20 + PDF=91400 MemberID=21 + PDF=91400 MemberID=22 + PDF=91400 MemberID=23 + PDF=91400 MemberID=24 + PDF=91400 MemberID=25 + PDF=91400 MemberID=26 + PDF=91400 MemberID=27 + PDF=91400 MemberID=28 + PDF=91400 MemberID=29 + PDF=91400 MemberID=30 + PDF=91400 MemberID=31 + PDF=91400 MemberID=32 + # PDFSET -> PDFSET + # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61100 MemberID=0 + PDF=61100 MemberID=1 + PDF=61100 MemberID=2 + PDF=61100 MemberID=3 + PDF=61100 MemberID=4 + PDF=61100 MemberID=5 + PDF=61100 MemberID=6 + PDF=61100 MemberID=7 + PDF=61100 MemberID=8 + PDF=61100 MemberID=9 + PDF=61100 MemberID=10 + PDF=61100 MemberID=11 + PDF=61100 MemberID=12 + PDF=61100 MemberID=13 + PDF=61100 MemberID=14 + PDF=61100 MemberID=15 + PDF=61100 MemberID=16 + PDF=61100 MemberID=17 + PDF=61100 MemberID=18 + PDF=61100 MemberID=19 + PDF=61100 MemberID=20 + PDF=61100 MemberID=21 + PDF=61100 MemberID=22 + PDF=61100 MemberID=23 + PDF=61100 MemberID=24 + PDF=61100 MemberID=25 + PDF=61100 MemberID=26 + PDF=61100 MemberID=27 + PDF=61100 MemberID=28 + # PDFSET -> PDFSET + # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); + PDF=61130 MemberID=0 + PDF=61130 MemberID=1 + PDF=61130 MemberID=2 + PDF=61130 MemberID=3 + PDF=61130 MemberID=4 + PDF=61130 MemberID=5 + PDF=61130 MemberID=6 + PDF=61130 MemberID=7 + PDF=61130 MemberID=8 + PDF=61130 MemberID=9 + PDF=61130 MemberID=10 + PDF=61130 MemberID=11 + PDF=61130 MemberID=12 + PDF=61130 MemberID=13 + # PDFSET -> PDFSET + # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61200 MemberID=0 + PDF=61200 MemberID=1 + PDF=61200 MemberID=2 + PDF=61200 MemberID=3 + PDF=61200 MemberID=4 + PDF=61200 MemberID=5 + PDF=61200 MemberID=6 + PDF=61200 MemberID=7 + PDF=61200 MemberID=8 + PDF=61200 MemberID=9 + PDF=61200 MemberID=10 + PDF=61200 MemberID=11 + PDF=61200 MemberID=12 + PDF=61200 MemberID=13 + PDF=61200 MemberID=14 + PDF=61200 MemberID=15 + PDF=61200 MemberID=16 + PDF=61200 MemberID=17 + PDF=61200 MemberID=18 + PDF=61200 MemberID=19 + PDF=61200 MemberID=20 + PDF=61200 MemberID=21 + PDF=61200 MemberID=22 + PDF=61200 MemberID=23 + PDF=61200 MemberID=24 + PDF=61200 MemberID=25 + PDF=61200 MemberID=26 + PDF=61200 MemberID=27 + PDF=61200 MemberID=28 + # PDFSET -> PDFSET + # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); + PDF=61230 MemberID=0 + PDF=61230 MemberID=1 + PDF=61230 MemberID=2 + PDF=61230 MemberID=3 + PDF=61230 MemberID=4 + PDF=61230 MemberID=5 + PDF=61230 MemberID=6 + PDF=61230 MemberID=7 + PDF=61230 MemberID=8 + PDF=61230 MemberID=9 + PDF=61230 MemberID=10 + PDF=61230 MemberID=11 + PDF=61230 MemberID=12 + PDF=61230 MemberID=13 + # PDFSET -> PDFSET + # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference + PDF=13400 MemberID=0 + PDF=13400 MemberID=1 + PDF=13400 MemberID=2 + PDF=13400 MemberID=3 + PDF=13400 MemberID=4 + PDF=13400 MemberID=5 + PDF=13400 MemberID=6 + PDF=13400 MemberID=7 + PDF=13400 MemberID=8 + PDF=13400 MemberID=9 + PDF=13400 MemberID=10 + PDF=13400 MemberID=11 + PDF=13400 MemberID=12 + PDF=13400 MemberID=13 + PDF=13400 MemberID=14 + PDF=13400 MemberID=15 + PDF=13400 MemberID=16 + PDF=13400 MemberID=17 + PDF=13400 MemberID=18 + PDF=13400 MemberID=19 + PDF=13400 MemberID=20 + PDF=13400 MemberID=21 + PDF=13400 MemberID=22 + PDF=13400 MemberID=23 + PDF=13400 MemberID=24 + PDF=13400 MemberID=25 + PDF=13400 MemberID=26 + PDF=13400 MemberID=27 + PDF=13400 MemberID=28 + PDF=13400 MemberID=29 + PDF=13400 MemberID=30 + # PDFSET -> PDFSET + # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. +PDF4LHC15_nnlo_100 description: + PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 + ; PDF symmetric eigenvectors +LUXqed description: + Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P + fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. + Photon generated at scale 100.0 GeV, other partons matched at scale + 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - + 0.00699 * x^{0.000} g(x) at scale 10.0 GeV +Members: + 0 is central + 1-100 map to original PDF members + 101 replacement of CLAS resonance fit with Christy-Bosted fit + 102 rescale-R-0.5 + 103 rescale R in high-Q^2 region with a higher-twist component + 104 use the A1 elastic fit result without the two-photon exchange corrections + 105 use the lower edge of the elastic fit error band + 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 + 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) +Versioning info: + DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) +LUXqed version history for this PDF: + This version corresponds to the long LUXqed17 paper. + PDF=82200 MemberID=0 + PDF=82200 MemberID=1 + PDF=82200 MemberID=2 + PDF=82200 MemberID=3 + PDF=82200 MemberID=4 + PDF=82200 MemberID=5 + PDF=82200 MemberID=6 + PDF=82200 MemberID=7 + PDF=82200 MemberID=8 + PDF=82200 MemberID=9 + PDF=82200 MemberID=10 + PDF=82200 MemberID=11 + PDF=82200 MemberID=12 + PDF=82200 MemberID=13 + PDF=82200 MemberID=14 + PDF=82200 MemberID=15 + PDF=82200 MemberID=16 + PDF=82200 MemberID=17 + PDF=82200 MemberID=18 + PDF=82200 MemberID=19 + PDF=82200 MemberID=20 + PDF=82200 MemberID=21 + PDF=82200 MemberID=22 + PDF=82200 MemberID=23 + PDF=82200 MemberID=24 + PDF=82200 MemberID=25 + PDF=82200 MemberID=26 + PDF=82200 MemberID=27 + PDF=82200 MemberID=28 + PDF=82200 MemberID=29 + PDF=82200 MemberID=30 + PDF=82200 MemberID=31 + PDF=82200 MemberID=32 + PDF=82200 MemberID=33 + PDF=82200 MemberID=34 + PDF=82200 MemberID=35 + PDF=82200 MemberID=36 + PDF=82200 MemberID=37 + PDF=82200 MemberID=38 + PDF=82200 MemberID=39 + PDF=82200 MemberID=40 + PDF=82200 MemberID=41 + PDF=82200 MemberID=42 + PDF=82200 MemberID=43 + PDF=82200 MemberID=44 + PDF=82200 MemberID=45 + PDF=82200 MemberID=46 + PDF=82200 MemberID=47 + PDF=82200 MemberID=48 + PDF=82200 MemberID=49 + PDF=82200 MemberID=50 + PDF=82200 MemberID=51 + PDF=82200 MemberID=52 + PDF=82200 MemberID=53 + PDF=82200 MemberID=54 + PDF=82200 MemberID=55 + PDF=82200 MemberID=56 + PDF=82200 MemberID=57 + PDF=82200 MemberID=58 + PDF=82200 MemberID=59 + PDF=82200 MemberID=60 + PDF=82200 MemberID=61 + PDF=82200 MemberID=62 + PDF=82200 MemberID=63 + PDF=82200 MemberID=64 + PDF=82200 MemberID=65 + PDF=82200 MemberID=66 + PDF=82200 MemberID=67 + PDF=82200 MemberID=68 + PDF=82200 MemberID=69 + PDF=82200 MemberID=70 + PDF=82200 MemberID=71 + PDF=82200 MemberID=72 + PDF=82200 MemberID=73 + PDF=82200 MemberID=74 + PDF=82200 MemberID=75 + PDF=82200 MemberID=76 + PDF=82200 MemberID=77 + PDF=82200 MemberID=78 + PDF=82200 MemberID=79 + PDF=82200 MemberID=80 + PDF=82200 MemberID=81 + PDF=82200 MemberID=82 + PDF=82200 MemberID=83 + PDF=82200 MemberID=84 + PDF=82200 MemberID=85 + PDF=82200 MemberID=86 + PDF=82200 MemberID=87 + PDF=82200 MemberID=88 + PDF=82200 MemberID=89 + PDF=82200 MemberID=90 + PDF=82200 MemberID=91 + PDF=82200 MemberID=92 + PDF=82200 MemberID=93 + PDF=82200 MemberID=94 + PDF=82200 MemberID=95 + PDF=82200 MemberID=96 + PDF=82200 MemberID=97 + PDF=82200 MemberID=98 + PDF=82200 MemberID=99 + PDF=82200 MemberID=100 + PDF=82200 MemberID=101 + PDF=82200 MemberID=102 + PDF=82200 MemberID=103 + PDF=82200 MemberID=104 + PDF=82200 MemberID=105 + PDF=82200 MemberID=106 + PDF=82200 MemberID=107 + # PDFSET -> PDFSET + # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 + PDF=292200 MemberID=0 + PDF=292200 MemberID=1 + PDF=292200 MemberID=2 + PDF=292200 MemberID=3 + PDF=292200 MemberID=4 + PDF=292200 MemberID=5 + PDF=292200 MemberID=6 + PDF=292200 MemberID=7 + PDF=292200 MemberID=8 + PDF=292200 MemberID=9 + PDF=292200 MemberID=10 + PDF=292200 MemberID=11 + PDF=292200 MemberID=12 + PDF=292200 MemberID=13 + PDF=292200 MemberID=14 + PDF=292200 MemberID=15 + PDF=292200 MemberID=16 + PDF=292200 MemberID=17 + PDF=292200 MemberID=18 + PDF=292200 MemberID=19 + PDF=292200 MemberID=20 + PDF=292200 MemberID=21 + PDF=292200 MemberID=22 + PDF=292200 MemberID=23 + PDF=292200 MemberID=24 + PDF=292200 MemberID=25 + PDF=292200 MemberID=26 + PDF=292200 MemberID=27 + PDF=292200 MemberID=28 + PDF=292200 MemberID=29 + PDF=292200 MemberID=30 + PDF=292200 MemberID=31 + PDF=292200 MemberID=32 + PDF=292200 MemberID=33 + PDF=292200 MemberID=34 + PDF=292200 MemberID=35 + PDF=292200 MemberID=36 + PDF=292200 MemberID=37 + PDF=292200 MemberID=38 + PDF=292200 MemberID=39 + PDF=292200 MemberID=40 + PDF=292200 MemberID=41 + PDF=292200 MemberID=42 + PDF=292200 MemberID=43 + PDF=292200 MemberID=44 + PDF=292200 MemberID=45 + PDF=292200 MemberID=46 + PDF=292200 MemberID=47 + PDF=292200 MemberID=48 + PDF=292200 MemberID=49 + PDF=292200 MemberID=50 + PDF=292200 MemberID=51 + PDF=292200 MemberID=52 + PDF=292200 MemberID=53 + PDF=292200 MemberID=54 + PDF=292200 MemberID=55 + PDF=292200 MemberID=56 + PDF=292200 MemberID=57 + PDF=292200 MemberID=58 + PDF=292200 MemberID=59 + PDF=292200 MemberID=60 + PDF=292200 MemberID=61 + PDF=292200 MemberID=62 + PDF=292200 MemberID=63 + PDF=292200 MemberID=64 + PDF=292200 MemberID=65 + PDF=292200 MemberID=66 + PDF=292200 MemberID=67 + PDF=292200 MemberID=68 + PDF=292200 MemberID=69 + PDF=292200 MemberID=70 + PDF=292200 MemberID=71 + PDF=292200 MemberID=72 + PDF=292200 MemberID=73 + PDF=292200 MemberID=74 + PDF=292200 MemberID=75 + PDF=292200 MemberID=76 + PDF=292200 MemberID=77 + PDF=292200 MemberID=78 + PDF=292200 MemberID=79 + PDF=292200 MemberID=80 + PDF=292200 MemberID=81 + PDF=292200 MemberID=82 + PDF=292200 MemberID=83 + PDF=292200 MemberID=84 + PDF=292200 MemberID=85 + PDF=292200 MemberID=86 + PDF=292200 MemberID=87 + PDF=292200 MemberID=88 + PDF=292200 MemberID=89 + PDF=292200 MemberID=90 + PDF=292200 MemberID=91 + PDF=292200 MemberID=92 + PDF=292200 MemberID=93 + PDF=292200 MemberID=94 + PDF=292200 MemberID=95 + PDF=292200 MemberID=96 + PDF=292200 MemberID=97 + PDF=292200 MemberID=98 + PDF=292200 MemberID=99 + PDF=292200 MemberID=100 + PDF=292200 MemberID=101 + PDF=292200 MemberID=102 + # PDFSET -> PDF + PDF=292600 MemberID=0 + PDF=315000 MemberID=0 + PDF=315200 MemberID=0 + PDF=262000 MemberID=0 + PDF=263000 MemberID=0 + + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + diff --git a/testFiles/W1jet_260_weight_info.txt b/testFiles/W1jet_260_weight_info.txt new file mode 100644 index 0000000000000..d8b08d74060b4 --- /dev/null +++ b/testFiles/W1jet_260_weight_info.txt @@ -0,0 +1,1179 @@ + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + + PDF + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + # scale + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + PDF=306000 MemberID=1 + PDF=306000 MemberID=2 + PDF=306000 MemberID=3 + PDF=306000 MemberID=4 + PDF=306000 MemberID=5 + PDF=306000 MemberID=6 + PDF=306000 MemberID=7 + PDF=306000 MemberID=8 + PDF=306000 MemberID=9 + PDF=306000 MemberID=10 + PDF=306000 MemberID=11 + PDF=306000 MemberID=12 + PDF=306000 MemberID=13 + PDF=306000 MemberID=14 + PDF=306000 MemberID=15 + PDF=306000 MemberID=16 + PDF=306000 MemberID=17 + PDF=306000 MemberID=18 + PDF=306000 MemberID=19 + PDF=306000 MemberID=20 + PDF=306000 MemberID=21 + PDF=306000 MemberID=22 + PDF=306000 MemberID=23 + PDF=306000 MemberID=24 + PDF=306000 MemberID=25 + PDF=306000 MemberID=26 + PDF=306000 MemberID=27 + PDF=306000 MemberID=28 + PDF=306000 MemberID=29 + PDF=306000 MemberID=30 + PDF=306000 MemberID=31 + PDF=306000 MemberID=32 + PDF=306000 MemberID=33 + PDF=306000 MemberID=34 + PDF=306000 MemberID=35 + PDF=306000 MemberID=36 + PDF=306000 MemberID=37 + PDF=306000 MemberID=38 + PDF=306000 MemberID=39 + PDF=306000 MemberID=40 + PDF=306000 MemberID=41 + PDF=306000 MemberID=42 + PDF=306000 MemberID=43 + PDF=306000 MemberID=44 + PDF=306000 MemberID=45 + PDF=306000 MemberID=46 + PDF=306000 MemberID=47 + PDF=306000 MemberID=48 + PDF=306000 MemberID=49 + PDF=306000 MemberID=50 + PDF=306000 MemberID=51 + PDF=306000 MemberID=52 + PDF=306000 MemberID=53 + PDF=306000 MemberID=54 + PDF=306000 MemberID=55 + PDF=306000 MemberID=56 + PDF=306000 MemberID=57 + PDF=306000 MemberID=58 + PDF=306000 MemberID=59 + PDF=306000 MemberID=60 + PDF=306000 MemberID=61 + PDF=306000 MemberID=62 + PDF=306000 MemberID=63 + PDF=306000 MemberID=64 + PDF=306000 MemberID=65 + PDF=306000 MemberID=66 + PDF=306000 MemberID=67 + PDF=306000 MemberID=68 + PDF=306000 MemberID=69 + PDF=306000 MemberID=70 + PDF=306000 MemberID=71 + PDF=306000 MemberID=72 + PDF=306000 MemberID=73 + PDF=306000 MemberID=74 + PDF=306000 MemberID=75 + PDF=306000 MemberID=76 + PDF=306000 MemberID=77 + PDF=306000 MemberID=78 + PDF=306000 MemberID=79 + PDF=306000 MemberID=80 + PDF=306000 MemberID=81 + PDF=306000 MemberID=82 + PDF=306000 MemberID=83 + PDF=306000 MemberID=84 + PDF=306000 MemberID=85 + PDF=306000 MemberID=86 + PDF=306000 MemberID=87 + PDF=306000 MemberID=88 + PDF=306000 MemberID=89 + PDF=306000 MemberID=90 + PDF=306000 MemberID=91 + PDF=306000 MemberID=92 + PDF=306000 MemberID=93 + PDF=306000 MemberID=94 + PDF=306000 MemberID=95 + PDF=306000 MemberID=96 + PDF=306000 MemberID=97 + PDF=306000 MemberID=98 + PDF=306000 MemberID=99 + PDF=306000 MemberID=100 + PDF=306000 MemberID=101 + PDF=306000 MemberID=102 + # PDFSET -> PDF + PDF=322500 MemberID=0 + PDF=322700 MemberID=0 + PDF=322900 MemberID=0 + PDF=323100 MemberID=0 + PDF=323300 MemberID=0 + PDF=323500 MemberID=0 + PDF=323700 MemberID=0 + PDF=323900 MemberID=0 + # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + PDF=305800 MemberID=0 + PDF=305800 MemberID=1 + PDF=305800 MemberID=2 + PDF=305800 MemberID=3 + PDF=305800 MemberID=4 + PDF=305800 MemberID=5 + PDF=305800 MemberID=6 + PDF=305800 MemberID=7 + PDF=305800 MemberID=8 + PDF=305800 MemberID=9 + PDF=305800 MemberID=10 + PDF=305800 MemberID=11 + PDF=305800 MemberID=12 + PDF=305800 MemberID=13 + PDF=305800 MemberID=14 + PDF=305800 MemberID=15 + PDF=305800 MemberID=16 + PDF=305800 MemberID=17 + PDF=305800 MemberID=18 + PDF=305800 MemberID=19 + PDF=305800 MemberID=20 + PDF=305800 MemberID=21 + PDF=305800 MemberID=22 + PDF=305800 MemberID=23 + PDF=305800 MemberID=24 + PDF=305800 MemberID=25 + PDF=305800 MemberID=26 + PDF=305800 MemberID=27 + PDF=305800 MemberID=28 + PDF=305800 MemberID=29 + PDF=305800 MemberID=30 + PDF=305800 MemberID=31 + PDF=305800 MemberID=32 + PDF=305800 MemberID=33 + PDF=305800 MemberID=34 + PDF=305800 MemberID=35 + PDF=305800 MemberID=36 + PDF=305800 MemberID=37 + PDF=305800 MemberID=38 + PDF=305800 MemberID=39 + PDF=305800 MemberID=40 + PDF=305800 MemberID=41 + PDF=305800 MemberID=42 + PDF=305800 MemberID=43 + PDF=305800 MemberID=44 + PDF=305800 MemberID=45 + PDF=305800 MemberID=46 + PDF=305800 MemberID=47 + PDF=305800 MemberID=48 + PDF=305800 MemberID=49 + PDF=305800 MemberID=50 + PDF=305800 MemberID=51 + PDF=305800 MemberID=52 + PDF=305800 MemberID=53 + PDF=305800 MemberID=54 + PDF=305800 MemberID=55 + PDF=305800 MemberID=56 + PDF=305800 MemberID=57 + PDF=305800 MemberID=58 + PDF=305800 MemberID=59 + PDF=305800 MemberID=60 + PDF=305800 MemberID=61 + PDF=305800 MemberID=62 + PDF=305800 MemberID=63 + PDF=305800 MemberID=64 + PDF=305800 MemberID=65 + PDF=305800 MemberID=66 + PDF=305800 MemberID=67 + PDF=305800 MemberID=68 + PDF=305800 MemberID=69 + PDF=305800 MemberID=70 + PDF=305800 MemberID=71 + PDF=305800 MemberID=72 + PDF=305800 MemberID=73 + PDF=305800 MemberID=74 + PDF=305800 MemberID=75 + PDF=305800 MemberID=76 + PDF=305800 MemberID=77 + PDF=305800 MemberID=78 + PDF=305800 MemberID=79 + PDF=305800 MemberID=80 + PDF=305800 MemberID=81 + PDF=305800 MemberID=82 + PDF=305800 MemberID=83 + PDF=305800 MemberID=84 + PDF=305800 MemberID=85 + PDF=305800 MemberID=86 + PDF=305800 MemberID=87 + PDF=305800 MemberID=88 + PDF=305800 MemberID=89 + PDF=305800 MemberID=90 + PDF=305800 MemberID=91 + PDF=305800 MemberID=92 + PDF=305800 MemberID=93 + PDF=305800 MemberID=94 + PDF=305800 MemberID=95 + PDF=305800 MemberID=96 + PDF=305800 MemberID=97 + PDF=305800 MemberID=98 + PDF=305800 MemberID=99 + PDF=305800 MemberID=100 + PDF=305800 MemberID=101 + PDF=305800 MemberID=102 + # PDFSET -> PDFSET + # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13000 MemberID=0 + PDF=13000 MemberID=1 + PDF=13000 MemberID=2 + PDF=13000 MemberID=3 + PDF=13000 MemberID=4 + PDF=13000 MemberID=5 + PDF=13000 MemberID=6 + PDF=13000 MemberID=7 + PDF=13000 MemberID=8 + PDF=13000 MemberID=9 + PDF=13000 MemberID=10 + PDF=13000 MemberID=11 + PDF=13000 MemberID=12 + PDF=13000 MemberID=13 + PDF=13000 MemberID=14 + PDF=13000 MemberID=15 + PDF=13000 MemberID=16 + PDF=13000 MemberID=17 + PDF=13000 MemberID=18 + PDF=13000 MemberID=19 + PDF=13000 MemberID=20 + PDF=13000 MemberID=21 + PDF=13000 MemberID=22 + PDF=13000 MemberID=23 + PDF=13000 MemberID=24 + PDF=13000 MemberID=25 + PDF=13000 MemberID=26 + PDF=13000 MemberID=27 + PDF=13000 MemberID=28 + PDF=13000 MemberID=29 + PDF=13000 MemberID=30 + PDF=13000 MemberID=31 + PDF=13000 MemberID=32 + PDF=13000 MemberID=33 + PDF=13000 MemberID=34 + PDF=13000 MemberID=35 + PDF=13000 MemberID=36 + PDF=13000 MemberID=37 + PDF=13000 MemberID=38 + PDF=13000 MemberID=39 + PDF=13000 MemberID=40 + PDF=13000 MemberID=41 + PDF=13000 MemberID=42 + PDF=13000 MemberID=43 + PDF=13000 MemberID=44 + PDF=13000 MemberID=45 + PDF=13000 MemberID=46 + PDF=13000 MemberID=47 + PDF=13000 MemberID=48 + PDF=13000 MemberID=49 + PDF=13000 MemberID=50 + PDF=13000 MemberID=51 + PDF=13000 MemberID=52 + PDF=13000 MemberID=53 + PDF=13000 MemberID=54 + PDF=13000 MemberID=55 + PDF=13000 MemberID=56 + # PDFSET -> PDF + PDF=13065 MemberID=0 + PDF=13069 MemberID=0 + # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13100 MemberID=0 + PDF=13100 MemberID=1 + PDF=13100 MemberID=2 + PDF=13100 MemberID=3 + PDF=13100 MemberID=4 + PDF=13100 MemberID=5 + PDF=13100 MemberID=6 + PDF=13100 MemberID=7 + PDF=13100 MemberID=8 + PDF=13100 MemberID=9 + PDF=13100 MemberID=10 + PDF=13100 MemberID=11 + PDF=13100 MemberID=12 + PDF=13100 MemberID=13 + PDF=13100 MemberID=14 + PDF=13100 MemberID=15 + PDF=13100 MemberID=16 + PDF=13100 MemberID=17 + PDF=13100 MemberID=18 + PDF=13100 MemberID=19 + PDF=13100 MemberID=20 + PDF=13100 MemberID=21 + PDF=13100 MemberID=22 + PDF=13100 MemberID=23 + PDF=13100 MemberID=24 + PDF=13100 MemberID=25 + PDF=13100 MemberID=26 + PDF=13100 MemberID=27 + PDF=13100 MemberID=28 + PDF=13100 MemberID=29 + PDF=13100 MemberID=30 + PDF=13100 MemberID=31 + PDF=13100 MemberID=32 + PDF=13100 MemberID=33 + PDF=13100 MemberID=34 + PDF=13100 MemberID=35 + PDF=13100 MemberID=36 + PDF=13100 MemberID=37 + PDF=13100 MemberID=38 + PDF=13100 MemberID=39 + PDF=13100 MemberID=40 + PDF=13100 MemberID=41 + PDF=13100 MemberID=42 + PDF=13100 MemberID=43 + PDF=13100 MemberID=44 + PDF=13100 MemberID=45 + PDF=13100 MemberID=46 + PDF=13100 MemberID=47 + PDF=13100 MemberID=48 + PDF=13100 MemberID=49 + PDF=13100 MemberID=50 + PDF=13100 MemberID=51 + PDF=13100 MemberID=52 + PDF=13100 MemberID=53 + PDF=13100 MemberID=54 + PDF=13100 MemberID=55 + PDF=13100 MemberID=56 + # PDFSET -> PDF + PDF=13163 MemberID=0 + PDF=13167 MemberID=0 + PDF=13200 MemberID=0 + # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25200 MemberID=0 + PDF=25200 MemberID=1 + PDF=25200 MemberID=2 + PDF=25200 MemberID=3 + PDF=25200 MemberID=4 + PDF=25200 MemberID=5 + PDF=25200 MemberID=6 + PDF=25200 MemberID=7 + PDF=25200 MemberID=8 + PDF=25200 MemberID=9 + PDF=25200 MemberID=10 + PDF=25200 MemberID=11 + PDF=25200 MemberID=12 + PDF=25200 MemberID=13 + PDF=25200 MemberID=14 + PDF=25200 MemberID=15 + PDF=25200 MemberID=16 + PDF=25200 MemberID=17 + PDF=25200 MemberID=18 + PDF=25200 MemberID=19 + PDF=25200 MemberID=20 + PDF=25200 MemberID=21 + PDF=25200 MemberID=22 + PDF=25200 MemberID=23 + PDF=25200 MemberID=24 + PDF=25200 MemberID=25 + PDF=25200 MemberID=26 + PDF=25200 MemberID=27 + PDF=25200 MemberID=28 + PDF=25200 MemberID=29 + PDF=25200 MemberID=30 + PDF=25200 MemberID=31 + PDF=25200 MemberID=32 + PDF=25200 MemberID=33 + PDF=25200 MemberID=34 + PDF=25200 MemberID=35 + PDF=25200 MemberID=36 + PDF=25200 MemberID=37 + PDF=25200 MemberID=38 + PDF=25200 MemberID=39 + PDF=25200 MemberID=40 + PDF=25200 MemberID=41 + PDF=25200 MemberID=42 + PDF=25200 MemberID=43 + PDF=25200 MemberID=44 + PDF=25200 MemberID=45 + PDF=25200 MemberID=46 + PDF=25200 MemberID=47 + PDF=25200 MemberID=48 + PDF=25200 MemberID=49 + PDF=25200 MemberID=50 + # PDFSET -> PDFSET + # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25300 MemberID=0 + PDF=25300 MemberID=1 + PDF=25300 MemberID=2 + PDF=25300 MemberID=3 + PDF=25300 MemberID=4 + PDF=25300 MemberID=5 + PDF=25300 MemberID=6 + PDF=25300 MemberID=7 + PDF=25300 MemberID=8 + PDF=25300 MemberID=9 + PDF=25300 MemberID=10 + PDF=25300 MemberID=11 + PDF=25300 MemberID=12 + PDF=25300 MemberID=13 + PDF=25300 MemberID=14 + PDF=25300 MemberID=15 + PDF=25300 MemberID=16 + PDF=25300 MemberID=17 + PDF=25300 MemberID=18 + PDF=25300 MemberID=19 + PDF=25300 MemberID=20 + PDF=25300 MemberID=21 + PDF=25300 MemberID=22 + PDF=25300 MemberID=23 + PDF=25300 MemberID=24 + PDF=25300 MemberID=25 + PDF=25300 MemberID=26 + PDF=25300 MemberID=27 + PDF=25300 MemberID=28 + PDF=25300 MemberID=29 + PDF=25300 MemberID=30 + PDF=25300 MemberID=31 + PDF=25300 MemberID=32 + PDF=25300 MemberID=33 + PDF=25300 MemberID=34 + PDF=25300 MemberID=35 + PDF=25300 MemberID=36 + PDF=25300 MemberID=37 + PDF=25300 MemberID=38 + PDF=25300 MemberID=39 + PDF=25300 MemberID=40 + PDF=25300 MemberID=41 + PDF=25300 MemberID=42 + PDF=25300 MemberID=43 + PDF=25300 MemberID=44 + PDF=25300 MemberID=45 + PDF=25300 MemberID=46 + PDF=25300 MemberID=47 + PDF=25300 MemberID=48 + PDF=25300 MemberID=49 + PDF=25300 MemberID=50 + # PDFSET -> PDF + PDF=25000 MemberID=0 + # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set + PDF=42780 MemberID=0 + PDF=42780 MemberID=1 + PDF=42780 MemberID=2 + PDF=42780 MemberID=3 + PDF=42780 MemberID=4 + PDF=42780 MemberID=5 + PDF=42780 MemberID=6 + PDF=42780 MemberID=7 + PDF=42780 MemberID=8 + PDF=42780 MemberID=9 + PDF=42780 MemberID=10 + PDF=42780 MemberID=11 + PDF=42780 MemberID=12 + PDF=42780 MemberID=13 + PDF=42780 MemberID=14 + PDF=42780 MemberID=15 + PDF=42780 MemberID=16 + PDF=42780 MemberID=17 + PDF=42780 MemberID=18 + PDF=42780 MemberID=19 + PDF=42780 MemberID=20 + PDF=42780 MemberID=21 + PDF=42780 MemberID=22 + PDF=42780 MemberID=23 + PDF=42780 MemberID=24 + PDF=42780 MemberID=25 + PDF=42780 MemberID=26 + PDF=42780 MemberID=27 + PDF=42780 MemberID=28 + PDF=42780 MemberID=29 + # PDFSET -> PDFSET + # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=90200 MemberID=0 + PDF=90200 MemberID=1 + PDF=90200 MemberID=2 + PDF=90200 MemberID=3 + PDF=90200 MemberID=4 + PDF=90200 MemberID=5 + PDF=90200 MemberID=6 + PDF=90200 MemberID=7 + PDF=90200 MemberID=8 + PDF=90200 MemberID=9 + PDF=90200 MemberID=10 + PDF=90200 MemberID=11 + PDF=90200 MemberID=12 + PDF=90200 MemberID=13 + PDF=90200 MemberID=14 + PDF=90200 MemberID=15 + PDF=90200 MemberID=16 + PDF=90200 MemberID=17 + PDF=90200 MemberID=18 + PDF=90200 MemberID=19 + PDF=90200 MemberID=20 + PDF=90200 MemberID=21 + PDF=90200 MemberID=22 + PDF=90200 MemberID=23 + PDF=90200 MemberID=24 + PDF=90200 MemberID=25 + PDF=90200 MemberID=26 + PDF=90200 MemberID=27 + PDF=90200 MemberID=28 + PDF=90200 MemberID=29 + PDF=90200 MemberID=30 + PDF=90200 MemberID=31 + PDF=90200 MemberID=32 + PDF=90200 MemberID=33 + PDF=90200 MemberID=34 + PDF=90200 MemberID=35 + PDF=90200 MemberID=36 + PDF=90200 MemberID=37 + PDF=90200 MemberID=38 + PDF=90200 MemberID=39 + PDF=90200 MemberID=40 + PDF=90200 MemberID=41 + PDF=90200 MemberID=42 + PDF=90200 MemberID=43 + PDF=90200 MemberID=44 + PDF=90200 MemberID=45 + PDF=90200 MemberID=46 + PDF=90200 MemberID=47 + PDF=90200 MemberID=48 + PDF=90200 MemberID=49 + PDF=90200 MemberID=50 + PDF=90200 MemberID=51 + PDF=90200 MemberID=52 + PDF=90200 MemberID=53 + PDF=90200 MemberID=54 + PDF=90200 MemberID=55 + PDF=90200 MemberID=56 + PDF=90200 MemberID=57 + PDF=90200 MemberID=58 + PDF=90200 MemberID=59 + PDF=90200 MemberID=60 + PDF=90200 MemberID=61 + PDF=90200 MemberID=62 + PDF=90200 MemberID=63 + PDF=90200 MemberID=64 + PDF=90200 MemberID=65 + PDF=90200 MemberID=66 + PDF=90200 MemberID=67 + PDF=90200 MemberID=68 + PDF=90200 MemberID=69 + PDF=90200 MemberID=70 + PDF=90200 MemberID=71 + PDF=90200 MemberID=72 + PDF=90200 MemberID=73 + PDF=90200 MemberID=74 + PDF=90200 MemberID=75 + PDF=90200 MemberID=76 + PDF=90200 MemberID=77 + PDF=90200 MemberID=78 + PDF=90200 MemberID=79 + PDF=90200 MemberID=80 + PDF=90200 MemberID=81 + PDF=90200 MemberID=82 + PDF=90200 MemberID=83 + PDF=90200 MemberID=84 + PDF=90200 MemberID=85 + PDF=90200 MemberID=86 + PDF=90200 MemberID=87 + PDF=90200 MemberID=88 + PDF=90200 MemberID=89 + PDF=90200 MemberID=90 + PDF=90200 MemberID=91 + PDF=90200 MemberID=92 + PDF=90200 MemberID=93 + PDF=90200 MemberID=94 + PDF=90200 MemberID=95 + PDF=90200 MemberID=96 + PDF=90200 MemberID=97 + PDF=90200 MemberID=98 + PDF=90200 MemberID=99 + PDF=90200 MemberID=100 + PDF=90200 MemberID=101 + PDF=90200 MemberID=102 + # PDFSET -> PDFSET + # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=91200 MemberID=0 + PDF=91200 MemberID=1 + PDF=91200 MemberID=2 + PDF=91200 MemberID=3 + PDF=91200 MemberID=4 + PDF=91200 MemberID=5 + PDF=91200 MemberID=6 + PDF=91200 MemberID=7 + PDF=91200 MemberID=8 + PDF=91200 MemberID=9 + PDF=91200 MemberID=10 + PDF=91200 MemberID=11 + PDF=91200 MemberID=12 + PDF=91200 MemberID=13 + PDF=91200 MemberID=14 + PDF=91200 MemberID=15 + PDF=91200 MemberID=16 + PDF=91200 MemberID=17 + PDF=91200 MemberID=18 + PDF=91200 MemberID=19 + PDF=91200 MemberID=20 + PDF=91200 MemberID=21 + PDF=91200 MemberID=22 + PDF=91200 MemberID=23 + PDF=91200 MemberID=24 + PDF=91200 MemberID=25 + PDF=91200 MemberID=26 + PDF=91200 MemberID=27 + PDF=91200 MemberID=28 + PDF=91200 MemberID=29 + PDF=91200 MemberID=30 + PDF=91200 MemberID=31 + PDF=91200 MemberID=32 + PDF=91200 MemberID=33 + PDF=91200 MemberID=34 + PDF=91200 MemberID=35 + PDF=91200 MemberID=36 + PDF=91200 MemberID=37 + PDF=91200 MemberID=38 + PDF=91200 MemberID=39 + PDF=91200 MemberID=40 + PDF=91200 MemberID=41 + PDF=91200 MemberID=42 + PDF=91200 MemberID=43 + PDF=91200 MemberID=44 + PDF=91200 MemberID=45 + PDF=91200 MemberID=46 + PDF=91200 MemberID=47 + PDF=91200 MemberID=48 + PDF=91200 MemberID=49 + PDF=91200 MemberID=50 + PDF=91200 MemberID=51 + PDF=91200 MemberID=52 + PDF=91200 MemberID=53 + PDF=91200 MemberID=54 + PDF=91200 MemberID=55 + PDF=91200 MemberID=56 + PDF=91200 MemberID=57 + PDF=91200 MemberID=58 + PDF=91200 MemberID=59 + PDF=91200 MemberID=60 + PDF=91200 MemberID=61 + PDF=91200 MemberID=62 + PDF=91200 MemberID=63 + PDF=91200 MemberID=64 + PDF=91200 MemberID=65 + PDF=91200 MemberID=66 + PDF=91200 MemberID=67 + PDF=91200 MemberID=68 + PDF=91200 MemberID=69 + PDF=91200 MemberID=70 + PDF=91200 MemberID=71 + PDF=91200 MemberID=72 + PDF=91200 MemberID=73 + PDF=91200 MemberID=74 + PDF=91200 MemberID=75 + PDF=91200 MemberID=76 + PDF=91200 MemberID=77 + PDF=91200 MemberID=78 + PDF=91200 MemberID=79 + PDF=91200 MemberID=80 + PDF=91200 MemberID=81 + PDF=91200 MemberID=82 + PDF=91200 MemberID=83 + PDF=91200 MemberID=84 + PDF=91200 MemberID=85 + PDF=91200 MemberID=86 + PDF=91200 MemberID=87 + PDF=91200 MemberID=88 + PDF=91200 MemberID=89 + PDF=91200 MemberID=90 + PDF=91200 MemberID=91 + PDF=91200 MemberID=92 + PDF=91200 MemberID=93 + PDF=91200 MemberID=94 + PDF=91200 MemberID=95 + PDF=91200 MemberID=96 + PDF=91200 MemberID=97 + PDF=91200 MemberID=98 + PDF=91200 MemberID=99 + PDF=91200 MemberID=100 + PDF=91200 MemberID=101 + PDF=91200 MemberID=102 + # PDFSET -> PDFSET + # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=90400 MemberID=0 + PDF=90400 MemberID=1 + PDF=90400 MemberID=2 + PDF=90400 MemberID=3 + PDF=90400 MemberID=4 + PDF=90400 MemberID=5 + PDF=90400 MemberID=6 + PDF=90400 MemberID=7 + PDF=90400 MemberID=8 + PDF=90400 MemberID=9 + PDF=90400 MemberID=10 + PDF=90400 MemberID=11 + PDF=90400 MemberID=12 + PDF=90400 MemberID=13 + PDF=90400 MemberID=14 + PDF=90400 MemberID=15 + PDF=90400 MemberID=16 + PDF=90400 MemberID=17 + PDF=90400 MemberID=18 + PDF=90400 MemberID=19 + PDF=90400 MemberID=20 + PDF=90400 MemberID=21 + PDF=90400 MemberID=22 + PDF=90400 MemberID=23 + PDF=90400 MemberID=24 + PDF=90400 MemberID=25 + PDF=90400 MemberID=26 + PDF=90400 MemberID=27 + PDF=90400 MemberID=28 + PDF=90400 MemberID=29 + PDF=90400 MemberID=30 + PDF=90400 MemberID=31 + PDF=90400 MemberID=32 + # PDFSET -> PDFSET + # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=91400 MemberID=0 + PDF=91400 MemberID=1 + PDF=91400 MemberID=2 + PDF=91400 MemberID=3 + PDF=91400 MemberID=4 + PDF=91400 MemberID=5 + PDF=91400 MemberID=6 + PDF=91400 MemberID=7 + PDF=91400 MemberID=8 + PDF=91400 MemberID=9 + PDF=91400 MemberID=10 + PDF=91400 MemberID=11 + PDF=91400 MemberID=12 + PDF=91400 MemberID=13 + PDF=91400 MemberID=14 + PDF=91400 MemberID=15 + PDF=91400 MemberID=16 + PDF=91400 MemberID=17 + PDF=91400 MemberID=18 + PDF=91400 MemberID=19 + PDF=91400 MemberID=20 + PDF=91400 MemberID=21 + PDF=91400 MemberID=22 + PDF=91400 MemberID=23 + PDF=91400 MemberID=24 + PDF=91400 MemberID=25 + PDF=91400 MemberID=26 + PDF=91400 MemberID=27 + PDF=91400 MemberID=28 + PDF=91400 MemberID=29 + PDF=91400 MemberID=30 + PDF=91400 MemberID=31 + PDF=91400 MemberID=32 + # PDFSET -> PDFSET + # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61100 MemberID=0 + PDF=61100 MemberID=1 + PDF=61100 MemberID=2 + PDF=61100 MemberID=3 + PDF=61100 MemberID=4 + PDF=61100 MemberID=5 + PDF=61100 MemberID=6 + PDF=61100 MemberID=7 + PDF=61100 MemberID=8 + PDF=61100 MemberID=9 + PDF=61100 MemberID=10 + PDF=61100 MemberID=11 + PDF=61100 MemberID=12 + PDF=61100 MemberID=13 + PDF=61100 MemberID=14 + PDF=61100 MemberID=15 + PDF=61100 MemberID=16 + PDF=61100 MemberID=17 + PDF=61100 MemberID=18 + PDF=61100 MemberID=19 + PDF=61100 MemberID=20 + PDF=61100 MemberID=21 + PDF=61100 MemberID=22 + PDF=61100 MemberID=23 + PDF=61100 MemberID=24 + PDF=61100 MemberID=25 + PDF=61100 MemberID=26 + PDF=61100 MemberID=27 + PDF=61100 MemberID=28 + # PDFSET -> PDFSET + # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); + PDF=61130 MemberID=0 + PDF=61130 MemberID=1 + PDF=61130 MemberID=2 + PDF=61130 MemberID=3 + PDF=61130 MemberID=4 + PDF=61130 MemberID=5 + PDF=61130 MemberID=6 + PDF=61130 MemberID=7 + PDF=61130 MemberID=8 + PDF=61130 MemberID=9 + PDF=61130 MemberID=10 + PDF=61130 MemberID=11 + PDF=61130 MemberID=12 + PDF=61130 MemberID=13 + # PDFSET -> PDFSET + # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61200 MemberID=0 + PDF=61200 MemberID=1 + PDF=61200 MemberID=2 + PDF=61200 MemberID=3 + PDF=61200 MemberID=4 + PDF=61200 MemberID=5 + PDF=61200 MemberID=6 + PDF=61200 MemberID=7 + PDF=61200 MemberID=8 + PDF=61200 MemberID=9 + PDF=61200 MemberID=10 + PDF=61200 MemberID=11 + PDF=61200 MemberID=12 + PDF=61200 MemberID=13 + PDF=61200 MemberID=14 + PDF=61200 MemberID=15 + PDF=61200 MemberID=16 + PDF=61200 MemberID=17 + PDF=61200 MemberID=18 + PDF=61200 MemberID=19 + PDF=61200 MemberID=20 + PDF=61200 MemberID=21 + PDF=61200 MemberID=22 + PDF=61200 MemberID=23 + PDF=61200 MemberID=24 + PDF=61200 MemberID=25 + PDF=61200 MemberID=26 + PDF=61200 MemberID=27 + PDF=61200 MemberID=28 + # PDFSET -> PDFSET + # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); + PDF=61230 MemberID=0 + PDF=61230 MemberID=1 + PDF=61230 MemberID=2 + PDF=61230 MemberID=3 + PDF=61230 MemberID=4 + PDF=61230 MemberID=5 + PDF=61230 MemberID=6 + PDF=61230 MemberID=7 + PDF=61230 MemberID=8 + PDF=61230 MemberID=9 + PDF=61230 MemberID=10 + PDF=61230 MemberID=11 + PDF=61230 MemberID=12 + PDF=61230 MemberID=13 + # PDFSET -> PDFSET + # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference + PDF=13400 MemberID=0 + PDF=13400 MemberID=1 + PDF=13400 MemberID=2 + PDF=13400 MemberID=3 + PDF=13400 MemberID=4 + PDF=13400 MemberID=5 + PDF=13400 MemberID=6 + PDF=13400 MemberID=7 + PDF=13400 MemberID=8 + PDF=13400 MemberID=9 + PDF=13400 MemberID=10 + PDF=13400 MemberID=11 + PDF=13400 MemberID=12 + PDF=13400 MemberID=13 + PDF=13400 MemberID=14 + PDF=13400 MemberID=15 + PDF=13400 MemberID=16 + PDF=13400 MemberID=17 + PDF=13400 MemberID=18 + PDF=13400 MemberID=19 + PDF=13400 MemberID=20 + PDF=13400 MemberID=21 + PDF=13400 MemberID=22 + PDF=13400 MemberID=23 + PDF=13400 MemberID=24 + PDF=13400 MemberID=25 + PDF=13400 MemberID=26 + PDF=13400 MemberID=27 + PDF=13400 MemberID=28 + PDF=13400 MemberID=29 + PDF=13400 MemberID=30 + # PDFSET -> PDFSET + # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. +PDF4LHC15_nnlo_100 description: + PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 + ; PDF symmetric eigenvectors +LUXqed description: + Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P + fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. + Photon generated at scale 100.0 GeV, other partons matched at scale + 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - + 0.00699 * x^{0.000} g(x) at scale 10.0 GeV +Members: + 0 is central + 1-100 map to original PDF members + 101 replacement of CLAS resonance fit with Christy-Bosted fit + 102 rescale-R-0.5 + 103 rescale R in high-Q^2 region with a higher-twist component + 104 use the A1 elastic fit result without the two-photon exchange corrections + 105 use the lower edge of the elastic fit error band + 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 + 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) +Versioning info: + DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) +LUXqed version history for this PDF: + This version corresponds to the long LUXqed17 paper. + PDF=82200 MemberID=0 + PDF=82200 MemberID=1 + PDF=82200 MemberID=2 + PDF=82200 MemberID=3 + PDF=82200 MemberID=4 + PDF=82200 MemberID=5 + PDF=82200 MemberID=6 + PDF=82200 MemberID=7 + PDF=82200 MemberID=8 + PDF=82200 MemberID=9 + PDF=82200 MemberID=10 + PDF=82200 MemberID=11 + PDF=82200 MemberID=12 + PDF=82200 MemberID=13 + PDF=82200 MemberID=14 + PDF=82200 MemberID=15 + PDF=82200 MemberID=16 + PDF=82200 MemberID=17 + PDF=82200 MemberID=18 + PDF=82200 MemberID=19 + PDF=82200 MemberID=20 + PDF=82200 MemberID=21 + PDF=82200 MemberID=22 + PDF=82200 MemberID=23 + PDF=82200 MemberID=24 + PDF=82200 MemberID=25 + PDF=82200 MemberID=26 + PDF=82200 MemberID=27 + PDF=82200 MemberID=28 + PDF=82200 MemberID=29 + PDF=82200 MemberID=30 + PDF=82200 MemberID=31 + PDF=82200 MemberID=32 + PDF=82200 MemberID=33 + PDF=82200 MemberID=34 + PDF=82200 MemberID=35 + PDF=82200 MemberID=36 + PDF=82200 MemberID=37 + PDF=82200 MemberID=38 + PDF=82200 MemberID=39 + PDF=82200 MemberID=40 + PDF=82200 MemberID=41 + PDF=82200 MemberID=42 + PDF=82200 MemberID=43 + PDF=82200 MemberID=44 + PDF=82200 MemberID=45 + PDF=82200 MemberID=46 + PDF=82200 MemberID=47 + PDF=82200 MemberID=48 + PDF=82200 MemberID=49 + PDF=82200 MemberID=50 + PDF=82200 MemberID=51 + PDF=82200 MemberID=52 + PDF=82200 MemberID=53 + PDF=82200 MemberID=54 + PDF=82200 MemberID=55 + PDF=82200 MemberID=56 + PDF=82200 MemberID=57 + PDF=82200 MemberID=58 + PDF=82200 MemberID=59 + PDF=82200 MemberID=60 + PDF=82200 MemberID=61 + PDF=82200 MemberID=62 + PDF=82200 MemberID=63 + PDF=82200 MemberID=64 + PDF=82200 MemberID=65 + PDF=82200 MemberID=66 + PDF=82200 MemberID=67 + PDF=82200 MemberID=68 + PDF=82200 MemberID=69 + PDF=82200 MemberID=70 + PDF=82200 MemberID=71 + PDF=82200 MemberID=72 + PDF=82200 MemberID=73 + PDF=82200 MemberID=74 + PDF=82200 MemberID=75 + PDF=82200 MemberID=76 + PDF=82200 MemberID=77 + PDF=82200 MemberID=78 + PDF=82200 MemberID=79 + PDF=82200 MemberID=80 + PDF=82200 MemberID=81 + PDF=82200 MemberID=82 + PDF=82200 MemberID=83 + PDF=82200 MemberID=84 + PDF=82200 MemberID=85 + PDF=82200 MemberID=86 + PDF=82200 MemberID=87 + PDF=82200 MemberID=88 + PDF=82200 MemberID=89 + PDF=82200 MemberID=90 + PDF=82200 MemberID=91 + PDF=82200 MemberID=92 + PDF=82200 MemberID=93 + PDF=82200 MemberID=94 + PDF=82200 MemberID=95 + PDF=82200 MemberID=96 + PDF=82200 MemberID=97 + PDF=82200 MemberID=98 + PDF=82200 MemberID=99 + PDF=82200 MemberID=100 + PDF=82200 MemberID=101 + PDF=82200 MemberID=102 + PDF=82200 MemberID=103 + PDF=82200 MemberID=104 + PDF=82200 MemberID=105 + PDF=82200 MemberID=106 + PDF=82200 MemberID=107 + # PDFSET -> PDFSET + # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 + PDF=292200 MemberID=0 + PDF=292200 MemberID=1 + PDF=292200 MemberID=2 + PDF=292200 MemberID=3 + PDF=292200 MemberID=4 + PDF=292200 MemberID=5 + PDF=292200 MemberID=6 + PDF=292200 MemberID=7 + PDF=292200 MemberID=8 + PDF=292200 MemberID=9 + PDF=292200 MemberID=10 + PDF=292200 MemberID=11 + PDF=292200 MemberID=12 + PDF=292200 MemberID=13 + PDF=292200 MemberID=14 + PDF=292200 MemberID=15 + PDF=292200 MemberID=16 + PDF=292200 MemberID=17 + PDF=292200 MemberID=18 + PDF=292200 MemberID=19 + PDF=292200 MemberID=20 + PDF=292200 MemberID=21 + PDF=292200 MemberID=22 + PDF=292200 MemberID=23 + PDF=292200 MemberID=24 + PDF=292200 MemberID=25 + PDF=292200 MemberID=26 + PDF=292200 MemberID=27 + PDF=292200 MemberID=28 + PDF=292200 MemberID=29 + PDF=292200 MemberID=30 + PDF=292200 MemberID=31 + PDF=292200 MemberID=32 + PDF=292200 MemberID=33 + PDF=292200 MemberID=34 + PDF=292200 MemberID=35 + PDF=292200 MemberID=36 + PDF=292200 MemberID=37 + PDF=292200 MemberID=38 + PDF=292200 MemberID=39 + PDF=292200 MemberID=40 + PDF=292200 MemberID=41 + PDF=292200 MemberID=42 + PDF=292200 MemberID=43 + PDF=292200 MemberID=44 + PDF=292200 MemberID=45 + PDF=292200 MemberID=46 + PDF=292200 MemberID=47 + PDF=292200 MemberID=48 + PDF=292200 MemberID=49 + PDF=292200 MemberID=50 + PDF=292200 MemberID=51 + PDF=292200 MemberID=52 + PDF=292200 MemberID=53 + PDF=292200 MemberID=54 + PDF=292200 MemberID=55 + PDF=292200 MemberID=56 + PDF=292200 MemberID=57 + PDF=292200 MemberID=58 + PDF=292200 MemberID=59 + PDF=292200 MemberID=60 + PDF=292200 MemberID=61 + PDF=292200 MemberID=62 + PDF=292200 MemberID=63 + PDF=292200 MemberID=64 + PDF=292200 MemberID=65 + PDF=292200 MemberID=66 + PDF=292200 MemberID=67 + PDF=292200 MemberID=68 + PDF=292200 MemberID=69 + PDF=292200 MemberID=70 + PDF=292200 MemberID=71 + PDF=292200 MemberID=72 + PDF=292200 MemberID=73 + PDF=292200 MemberID=74 + PDF=292200 MemberID=75 + PDF=292200 MemberID=76 + PDF=292200 MemberID=77 + PDF=292200 MemberID=78 + PDF=292200 MemberID=79 + PDF=292200 MemberID=80 + PDF=292200 MemberID=81 + PDF=292200 MemberID=82 + PDF=292200 MemberID=83 + PDF=292200 MemberID=84 + PDF=292200 MemberID=85 + PDF=292200 MemberID=86 + PDF=292200 MemberID=87 + PDF=292200 MemberID=88 + PDF=292200 MemberID=89 + PDF=292200 MemberID=90 + PDF=292200 MemberID=91 + PDF=292200 MemberID=92 + PDF=292200 MemberID=93 + PDF=292200 MemberID=94 + PDF=292200 MemberID=95 + PDF=292200 MemberID=96 + PDF=292200 MemberID=97 + PDF=292200 MemberID=98 + PDF=292200 MemberID=99 + PDF=292200 MemberID=100 + PDF=292200 MemberID=101 + PDF=292200 MemberID=102 + # PDFSET -> PDF + PDF=292600 MemberID=0 + PDF=315000 MemberID=0 + PDF=315200 MemberID=0 + PDF=262000 MemberID=0 + PDF=263000 MemberID=0 diff --git a/testFiles/WJ_MiNNLO_weightinfo.txt b/testFiles/WJ_MiNNLO_weightinfo.txt new file mode 100644 index 0000000000000..773c0d3c15e91 --- /dev/null +++ b/testFiles/WJ_MiNNLO_weightinfo.txt @@ -0,0 +1,1612 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W9-denom.top + + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W9-denom.top + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + lhapdf=306000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306057 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306058 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306059 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306060 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306061 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306062 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306063 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306064 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306066 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306067 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306068 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306070 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306071 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306072 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306073 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306074 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306075 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306076 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306077 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306078 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306079 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306080 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306081 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306082 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306083 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306084 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306085 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306086 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306087 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306088 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306089 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306090 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306091 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306092 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306093 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306094 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306095 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306096 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306097 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306098 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306099 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325701 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325702 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325703 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325704 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325705 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325706 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325707 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325708 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325709 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325710 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325711 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325712 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325713 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325714 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325715 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325716 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325717 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325718 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325719 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325720 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325721 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325722 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325723 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325724 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325725 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325726 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325727 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325728 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325729 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325730 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325731 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325732 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325733 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325734 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325735 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325736 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325737 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325738 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325739 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325761 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325762 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325763 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325764 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325765 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325766 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325767 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325768 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325769 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325770 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325771 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325772 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325773 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325774 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325775 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325776 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325777 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325778 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325779 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325780 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325781 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325782 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325783 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325784 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325785 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325786 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325787 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325788 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325789 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325790 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325791 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325792 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325793 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325794 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325795 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325796 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325797 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325798 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325799 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325800 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325901 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325902 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325903 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325904 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325905 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325906 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325907 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325908 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325909 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325910 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325911 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325912 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325913 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325914 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325915 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325916 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325917 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325918 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325919 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325920 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325921 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325922 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325923 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325924 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325925 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325926 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325927 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325928 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325929 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325930 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325931 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325932 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325933 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325934 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325935 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325936 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325937 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325938 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325939 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325940 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325941 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325942 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325943 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325944 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325945 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325946 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325947 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325948 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325949 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325950 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325951 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325952 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325953 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325954 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325955 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325956 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325957 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325958 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325959 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325960 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325961 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325962 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325963 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325964 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325965 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325966 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325967 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325968 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325969 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325970 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325971 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325972 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325973 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325974 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325975 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325976 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325977 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325978 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325979 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325980 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325981 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325982 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325983 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325984 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325985 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325986 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325987 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325988 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325989 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325990 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325991 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325992 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325993 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325994 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325995 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325996 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325997 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325998 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325999 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326103 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326104 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326105 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326106 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326107 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326108 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326109 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326110 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326111 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326112 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326113 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326114 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326115 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326116 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326117 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326118 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326119 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326120 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326121 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326122 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326123 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326124 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326125 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326126 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326127 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326128 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326129 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326130 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326131 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326132 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326133 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326134 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326135 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326136 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326137 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326138 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326139 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326140 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326141 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326142 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326143 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326144 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326145 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326146 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326147 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326148 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326149 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326150 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326151 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326152 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326153 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326154 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326155 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326156 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326157 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326158 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326159 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326160 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326161 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326162 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326163 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326164 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326165 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326166 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326167 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326168 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326169 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326170 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326171 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326172 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326173 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326174 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326175 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326176 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326177 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326178 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326179 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326180 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326181 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326182 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326183 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326184 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326185 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326186 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326187 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326188 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326189 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326190 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326191 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326192 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326193 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326194 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326195 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326196 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326197 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326198 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326199 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326351 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326352 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326353 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326354 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326355 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326356 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326357 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326358 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326359 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326363 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326364 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326365 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326366 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326367 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326368 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326369 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326370 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326371 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326372 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326373 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326374 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326375 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326376 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326377 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326378 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326379 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326380 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326381 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326382 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326383 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326384 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326385 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326386 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326387 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326388 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326389 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326390 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326391 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326392 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326393 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326394 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326395 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326396 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326397 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326398 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326399 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326400 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42560 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42561 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42562 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42563 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42564 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42565 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42566 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42567 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42568 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42569 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42570 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42571 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42572 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42573 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42574 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42575 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42576 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42577 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42578 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42579 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42580 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42581 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42582 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42583 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42584 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42585 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42586 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42587 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42588 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42589 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61201 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61202 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61203 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61204 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61205 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61206 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61207 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61208 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61209 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61210 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61211 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61212 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61213 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61214 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61215 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61216 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61217 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61218 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61219 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61220 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61221 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61222 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61223 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61224 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61225 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61226 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61227 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61228 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61230 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61231 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61232 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61233 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61234 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61235 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61236 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61237 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61238 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61239 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61240 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61241 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61242 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61243 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + diff --git a/testFiles/WJ_NNLOPS_weightinfo.txt b/testFiles/WJ_NNLOPS_weightinfo.txt new file mode 100644 index 0000000000000..773c0d3c15e91 --- /dev/null +++ b/testFiles/WJ_NNLOPS_weightinfo.txt @@ -0,0 +1,1612 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W9-denom.top + + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W9-denom.top + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + lhapdf=306000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306057 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306058 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306059 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306060 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306061 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306062 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306063 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306064 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306066 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306067 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306068 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306070 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306071 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306072 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306073 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306074 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306075 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306076 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306077 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306078 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306079 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306080 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306081 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306082 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306083 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306084 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306085 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306086 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306087 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306088 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306089 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306090 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306091 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306092 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306093 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306094 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306095 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306096 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306097 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306098 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306099 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325701 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325702 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325703 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325704 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325705 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325706 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325707 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325708 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325709 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325710 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325711 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325712 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325713 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325714 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325715 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325716 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325717 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325718 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325719 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325720 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325721 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325722 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325723 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325724 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325725 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325726 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325727 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325728 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325729 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325730 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325731 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325732 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325733 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325734 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325735 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325736 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325737 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325738 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325739 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325761 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325762 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325763 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325764 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325765 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325766 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325767 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325768 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325769 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325770 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325771 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325772 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325773 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325774 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325775 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325776 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325777 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325778 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325779 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325780 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325781 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325782 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325783 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325784 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325785 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325786 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325787 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325788 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325789 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325790 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325791 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325792 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325793 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325794 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325795 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325796 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325797 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325798 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325799 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325800 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325901 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325902 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325903 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325904 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325905 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325906 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325907 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325908 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325909 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325910 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325911 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325912 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325913 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325914 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325915 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325916 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325917 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325918 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325919 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325920 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325921 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325922 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325923 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325924 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325925 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325926 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325927 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325928 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325929 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325930 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325931 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325932 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325933 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325934 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325935 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325936 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325937 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325938 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325939 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325940 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325941 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325942 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325943 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325944 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325945 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325946 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325947 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325948 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325949 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325950 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325951 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325952 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325953 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325954 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325955 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325956 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325957 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325958 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325959 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325960 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325961 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325962 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325963 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325964 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325965 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325966 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325967 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325968 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325969 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325970 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325971 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325972 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325973 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325974 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325975 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325976 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325977 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325978 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325979 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325980 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325981 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325982 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325983 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325984 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325985 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325986 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325987 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325988 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325989 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325990 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325991 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325992 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325993 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325994 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325995 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325996 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325997 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325998 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325999 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326103 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326104 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326105 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326106 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326107 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326108 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326109 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326110 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326111 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326112 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326113 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326114 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326115 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326116 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326117 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326118 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326119 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326120 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326121 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326122 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326123 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326124 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326125 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326126 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326127 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326128 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326129 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326130 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326131 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326132 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326133 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326134 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326135 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326136 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326137 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326138 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326139 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326140 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326141 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326142 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326143 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326144 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326145 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326146 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326147 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326148 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326149 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326150 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326151 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326152 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326153 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326154 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326155 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326156 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326157 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326158 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326159 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326160 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326161 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326162 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326163 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326164 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326165 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326166 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326167 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326168 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326169 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326170 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326171 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326172 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326173 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326174 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326175 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326176 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326177 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326178 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326179 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326180 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326181 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326182 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326183 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326184 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326185 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326186 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326187 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326188 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326189 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326190 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326191 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326192 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326193 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326194 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326195 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326196 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326197 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326198 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326199 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326351 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326352 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326353 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326354 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326355 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326356 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326357 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326358 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326359 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326363 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326364 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326365 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326366 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326367 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326368 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326369 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326370 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326371 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326372 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326373 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326374 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326375 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326376 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326377 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326378 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326379 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326380 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326381 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326382 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326383 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326384 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326385 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326386 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326387 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326388 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326389 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326390 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326391 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326392 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326393 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326394 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326395 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326396 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326397 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326398 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326399 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326400 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42560 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42561 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42562 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42563 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42564 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42565 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42566 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42567 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42568 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42569 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42570 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42571 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42572 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42573 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42574 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42575 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42576 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42577 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42578 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42579 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42580 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42581 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42582 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42583 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42584 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42585 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42586 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42587 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42588 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42589 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61201 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61202 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61203 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61204 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61205 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61206 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61207 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61208 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61209 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61210 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61211 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61212 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61213 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61214 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61215 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61216 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61217 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61218 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61219 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61220 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61221 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61222 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61223 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61224 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61225 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61226 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61227 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61228 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61230 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61231 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61232 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61233 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61234 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61235 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61236 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61237 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61238 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61239 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61240 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61241 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61242 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61243 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + diff --git a/testFiles/WZVBS_2017_weightInfo.txt b/testFiles/WZVBS_2017_weightInfo.txt new file mode 100644 index 0000000000000..79718529a993b --- /dev/null +++ b/testFiles/WZVBS_2017_weightInfo.txt @@ -0,0 +1,1180 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/WLLJJ_WToLNu_EWK_TuneCP5_13TeV_madgraph-madspin-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15-v1/50000/7E4F4321-598D-6A45-9681-8F8BA9817ECE.root + +<weight id="1001" MUR="1.0" MUF="1.0" PDF="320900" > </weight> +<weightgroup name="Central scale variation" combine="envelope"> +<weight id="1002" MUR="1.0" MUF="1.0" DYN_SCALE="1" PDF="320900" > dyn_scale_choice=sum pt </weight> +<weight id="1003" MUR="1.0" MUF="1.0" DYN_SCALE="2" PDF="320900" > dyn_scale_choice=HT </weight> +<weight id="1004" MUR="1.0" MUF="1.0" DYN_SCALE="3" PDF="320900" > dyn_scale_choice=HT/2 </weight> +<weight id="1005" MUR="1.0" MUF="1.0" DYN_SCALE="4" PDF="320900" > dyn_scale_choice=sqrts </weight> +<weight id="1006" MUR="2.0" MUF="1.0" PDF="320900" > MUR=2.0 </weight> +<weight id="1007" MUR="2.0" MUF="1.0" DYN_SCALE="1" PDF="320900" > MUR=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1008" MUR="2.0" MUF="1.0" DYN_SCALE="2" PDF="320900" > MUR=2.0 dyn_scale_choice=HT </weight> +<weight id="1009" MUR="2.0" MUF="1.0" DYN_SCALE="3" PDF="320900" > MUR=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1010" MUR="2.0" MUF="1.0" DYN_SCALE="4" PDF="320900" > MUR=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1011" MUR="0.5" MUF="1.0" PDF="320900" > MUR=0.5 </weight> +<weight id="1012" MUR="0.5" MUF="1.0" DYN_SCALE="1" PDF="320900" > MUR=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1013" MUR="0.5" MUF="1.0" DYN_SCALE="2" PDF="320900" > MUR=0.5 dyn_scale_choice=HT </weight> +<weight id="1014" MUR="0.5" MUF="1.0" DYN_SCALE="3" PDF="320900" > MUR=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1015" MUR="0.5" MUF="1.0" DYN_SCALE="4" PDF="320900" > MUR=0.5 dyn_scale_choice=sqrts </weight> +<weight id="1016" MUR="1.0" MUF="2.0" PDF="320900" > MUF=2.0 </weight> +<weight id="1017" MUR="1.0" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUF=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1018" MUR="1.0" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUF=2.0 dyn_scale_choice=HT </weight> +<weight id="1019" MUR="1.0" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUF=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1020" MUR="1.0" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUF=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1021" MUR="2.0" MUF="2.0" PDF="320900" > MUR=2.0 MUF=2.0 </weight> +<weight id="1022" MUR="2.0" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1023" MUR="2.0" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=HT </weight> +<weight id="1024" MUR="2.0" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1025" MUR="2.0" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1026" MUR="0.5" MUF="2.0" PDF="320900" > MUR=0.5 MUF=2.0 </weight> +<weight id="1027" MUR="0.5" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1028" MUR="0.5" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=HT </weight> +<weight id="1029" MUR="0.5" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1030" MUR="0.5" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1031" MUR="1.0" MUF="0.5" PDF="320900" > MUF=0.5 </weight> +<weight id="1032" MUR="1.0" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUF=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1033" MUR="1.0" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUF=0.5 dyn_scale_choice=HT </weight> +<weight id="1034" MUR="1.0" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUF=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1035" MUR="1.0" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUF=0.5 dyn_scale_choice=sqrts </weight> +<weight id="1036" MUR="2.0" MUF="0.5" PDF="320900" > MUR=2.0 MUF=0.5 </weight> +<weight id="1037" MUR="2.0" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1038" MUR="2.0" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=HT </weight> +<weight id="1039" MUR="2.0" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1040" MUR="2.0" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts </weight> +<weight id="1041" MUR="0.5" MUF="0.5" PDF="320900" > MUR=0.5 MUF=0.5 </weight> +<weight id="1042" MUR="0.5" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1043" MUR="0.5" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=HT </weight> +<weight id="1044" MUR="0.5" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1045" MUR="0.5" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts </weight> +</weightgroup> # scale +<weightgroup name="NNPDF31_nnlo_hessian_pdfas" combine="symmhessian+as"> # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 +<weight id="1046" MUR="1.0" MUF="1.0" PDF="306000" > PDF=306000 MemberID=0 </weight> +<weight id="1047" MUR="1.0" MUF="1.0" PDF="306001" > PDF=306000 MemberID=1 </weight> +<weight id="1048" MUR="1.0" MUF="1.0" PDF="306002" > PDF=306000 MemberID=2 </weight> +<weight id="1049" MUR="1.0" MUF="1.0" PDF="306003" > PDF=306000 MemberID=3 </weight> +<weight id="1050" MUR="1.0" MUF="1.0" PDF="306004" > PDF=306000 MemberID=4 </weight> +<weight id="1051" MUR="1.0" MUF="1.0" PDF="306005" > PDF=306000 MemberID=5 </weight> +<weight id="1052" MUR="1.0" MUF="1.0" PDF="306006" > PDF=306000 MemberID=6 </weight> +<weight id="1053" MUR="1.0" MUF="1.0" PDF="306007" > PDF=306000 MemberID=7 </weight> +<weight id="1054" MUR="1.0" MUF="1.0" PDF="306008" > PDF=306000 MemberID=8 </weight> +<weight id="1055" MUR="1.0" MUF="1.0" PDF="306009" > PDF=306000 MemberID=9 </weight> +<weight id="1056" MUR="1.0" MUF="1.0" PDF="306010" > PDF=306000 MemberID=10 </weight> +<weight id="1057" MUR="1.0" MUF="1.0" PDF="306011" > PDF=306000 MemberID=11 </weight> +<weight id="1058" MUR="1.0" MUF="1.0" PDF="306012" > PDF=306000 MemberID=12 </weight> +<weight id="1059" MUR="1.0" MUF="1.0" PDF="306013" > PDF=306000 MemberID=13 </weight> +<weight id="1060" MUR="1.0" MUF="1.0" PDF="306014" > PDF=306000 MemberID=14 </weight> +<weight id="1061" MUR="1.0" MUF="1.0" PDF="306015" > PDF=306000 MemberID=15 </weight> +<weight id="1062" MUR="1.0" MUF="1.0" PDF="306016" > PDF=306000 MemberID=16 </weight> +<weight id="1063" MUR="1.0" MUF="1.0" PDF="306017" > PDF=306000 MemberID=17 </weight> +<weight id="1064" MUR="1.0" MUF="1.0" PDF="306018" > PDF=306000 MemberID=18 </weight> +<weight id="1065" MUR="1.0" MUF="1.0" PDF="306019" > PDF=306000 MemberID=19 </weight> +<weight id="1066" MUR="1.0" MUF="1.0" PDF="306020" > PDF=306000 MemberID=20 </weight> +<weight id="1067" MUR="1.0" MUF="1.0" PDF="306021" > PDF=306000 MemberID=21 </weight> +<weight id="1068" MUR="1.0" MUF="1.0" PDF="306022" > PDF=306000 MemberID=22 </weight> +<weight id="1069" MUR="1.0" MUF="1.0" PDF="306023" > PDF=306000 MemberID=23 </weight> +<weight id="1070" MUR="1.0" MUF="1.0" PDF="306024" > PDF=306000 MemberID=24 </weight> +<weight id="1071" MUR="1.0" MUF="1.0" PDF="306025" > PDF=306000 MemberID=25 </weight> +<weight id="1072" MUR="1.0" MUF="1.0" PDF="306026" > PDF=306000 MemberID=26 </weight> +<weight id="1073" MUR="1.0" MUF="1.0" PDF="306027" > PDF=306000 MemberID=27 </weight> +<weight id="1074" MUR="1.0" MUF="1.0" PDF="306028" > PDF=306000 MemberID=28 </weight> +<weight id="1075" MUR="1.0" MUF="1.0" PDF="306029" > PDF=306000 MemberID=29 </weight> +<weight id="1076" MUR="1.0" MUF="1.0" PDF="306030" > PDF=306000 MemberID=30 </weight> +<weight id="1077" MUR="1.0" MUF="1.0" PDF="306031" > PDF=306000 MemberID=31 </weight> +<weight id="1078" MUR="1.0" MUF="1.0" PDF="306032" > PDF=306000 MemberID=32 </weight> +<weight id="1079" MUR="1.0" MUF="1.0" PDF="306033" > PDF=306000 MemberID=33 </weight> +<weight id="1080" MUR="1.0" MUF="1.0" PDF="306034" > PDF=306000 MemberID=34 </weight> +<weight id="1081" MUR="1.0" MUF="1.0" PDF="306035" > PDF=306000 MemberID=35 </weight> +<weight id="1082" MUR="1.0" MUF="1.0" PDF="306036" > PDF=306000 MemberID=36 </weight> +<weight id="1083" MUR="1.0" MUF="1.0" PDF="306037" > PDF=306000 MemberID=37 </weight> +<weight id="1084" MUR="1.0" MUF="1.0" PDF="306038" > PDF=306000 MemberID=38 </weight> +<weight id="1085" MUR="1.0" MUF="1.0" PDF="306039" > PDF=306000 MemberID=39 </weight> +<weight id="1086" MUR="1.0" MUF="1.0" PDF="306040" > PDF=306000 MemberID=40 </weight> +<weight id="1087" MUR="1.0" MUF="1.0" PDF="306041" > PDF=306000 MemberID=41 </weight> +<weight id="1088" MUR="1.0" MUF="1.0" PDF="306042" > PDF=306000 MemberID=42 </weight> +<weight id="1089" MUR="1.0" MUF="1.0" PDF="306043" > PDF=306000 MemberID=43 </weight> +<weight id="1090" MUR="1.0" MUF="1.0" PDF="306044" > PDF=306000 MemberID=44 </weight> +<weight id="1091" MUR="1.0" MUF="1.0" PDF="306045" > PDF=306000 MemberID=45 </weight> +<weight id="1092" MUR="1.0" MUF="1.0" PDF="306046" > PDF=306000 MemberID=46 </weight> +<weight id="1093" MUR="1.0" MUF="1.0" PDF="306047" > PDF=306000 MemberID=47 </weight> +<weight id="1094" MUR="1.0" MUF="1.0" PDF="306048" > PDF=306000 MemberID=48 </weight> +<weight id="1095" MUR="1.0" MUF="1.0" PDF="306049" > PDF=306000 MemberID=49 </weight> +<weight id="1096" MUR="1.0" MUF="1.0" PDF="306050" > PDF=306000 MemberID=50 </weight> +<weight id="1097" MUR="1.0" MUF="1.0" PDF="306051" > PDF=306000 MemberID=51 </weight> +<weight id="1098" MUR="1.0" MUF="1.0" PDF="306052" > PDF=306000 MemberID=52 </weight> +<weight id="1099" MUR="1.0" MUF="1.0" PDF="306053" > PDF=306000 MemberID=53 </weight> +<weight id="1100" MUR="1.0" MUF="1.0" PDF="306054" > PDF=306000 MemberID=54 </weight> +<weight id="1101" MUR="1.0" MUF="1.0" PDF="306055" > PDF=306000 MemberID=55 </weight> +<weight id="1102" MUR="1.0" MUF="1.0" PDF="306056" > PDF=306000 MemberID=56 </weight> +<weight id="1103" MUR="1.0" MUF="1.0" PDF="306057" > PDF=306000 MemberID=57 </weight> +<weight id="1104" MUR="1.0" MUF="1.0" PDF="306058" > PDF=306000 MemberID=58 </weight> +<weight id="1105" MUR="1.0" MUF="1.0" PDF="306059" > PDF=306000 MemberID=59 </weight> +<weight id="1106" MUR="1.0" MUF="1.0" PDF="306060" > PDF=306000 MemberID=60 </weight> +<weight id="1107" MUR="1.0" MUF="1.0" PDF="306061" > PDF=306000 MemberID=61 </weight> +<weight id="1108" MUR="1.0" MUF="1.0" PDF="306062" > PDF=306000 MemberID=62 </weight> +<weight id="1109" MUR="1.0" MUF="1.0" PDF="306063" > PDF=306000 MemberID=63 </weight> +<weight id="1110" MUR="1.0" MUF="1.0" PDF="306064" > PDF=306000 MemberID=64 </weight> +<weight id="1111" MUR="1.0" MUF="1.0" PDF="306065" > PDF=306000 MemberID=65 </weight> +<weight id="1112" MUR="1.0" MUF="1.0" PDF="306066" > PDF=306000 MemberID=66 </weight> +<weight id="1113" MUR="1.0" MUF="1.0" PDF="306067" > PDF=306000 MemberID=67 </weight> +<weight id="1114" MUR="1.0" MUF="1.0" PDF="306068" > PDF=306000 MemberID=68 </weight> +<weight id="1115" MUR="1.0" MUF="1.0" PDF="306069" > PDF=306000 MemberID=69 </weight> +<weight id="1116" MUR="1.0" MUF="1.0" PDF="306070" > PDF=306000 MemberID=70 </weight> +<weight id="1117" MUR="1.0" MUF="1.0" PDF="306071" > PDF=306000 MemberID=71 </weight> +<weight id="1118" MUR="1.0" MUF="1.0" PDF="306072" > PDF=306000 MemberID=72 </weight> +<weight id="1119" MUR="1.0" MUF="1.0" PDF="306073" > PDF=306000 MemberID=73 </weight> +<weight id="1120" MUR="1.0" MUF="1.0" PDF="306074" > PDF=306000 MemberID=74 </weight> +<weight id="1121" MUR="1.0" MUF="1.0" PDF="306075" > PDF=306000 MemberID=75 </weight> +<weight id="1122" MUR="1.0" MUF="1.0" PDF="306076" > PDF=306000 MemberID=76 </weight> +<weight id="1123" MUR="1.0" MUF="1.0" PDF="306077" > PDF=306000 MemberID=77 </weight> +<weight id="1124" MUR="1.0" MUF="1.0" PDF="306078" > PDF=306000 MemberID=78 </weight> +<weight id="1125" MUR="1.0" MUF="1.0" PDF="306079" > PDF=306000 MemberID=79 </weight> +<weight id="1126" MUR="1.0" MUF="1.0" PDF="306080" > PDF=306000 MemberID=80 </weight> +<weight id="1127" MUR="1.0" MUF="1.0" PDF="306081" > PDF=306000 MemberID=81 </weight> +<weight id="1128" MUR="1.0" MUF="1.0" PDF="306082" > PDF=306000 MemberID=82 </weight> +<weight id="1129" MUR="1.0" MUF="1.0" PDF="306083" > PDF=306000 MemberID=83 </weight> +<weight id="1130" MUR="1.0" MUF="1.0" PDF="306084" > PDF=306000 MemberID=84 </weight> +<weight id="1131" MUR="1.0" MUF="1.0" PDF="306085" > PDF=306000 MemberID=85 </weight> +<weight id="1132" MUR="1.0" MUF="1.0" PDF="306086" > PDF=306000 MemberID=86 </weight> +<weight id="1133" MUR="1.0" MUF="1.0" PDF="306087" > PDF=306000 MemberID=87 </weight> +<weight id="1134" MUR="1.0" MUF="1.0" PDF="306088" > PDF=306000 MemberID=88 </weight> +<weight id="1135" MUR="1.0" MUF="1.0" PDF="306089" > PDF=306000 MemberID=89 </weight> +<weight id="1136" MUR="1.0" MUF="1.0" PDF="306090" > PDF=306000 MemberID=90 </weight> +<weight id="1137" MUR="1.0" MUF="1.0" PDF="306091" > PDF=306000 MemberID=91 </weight> +<weight id="1138" MUR="1.0" MUF="1.0" PDF="306092" > PDF=306000 MemberID=92 </weight> +<weight id="1139" MUR="1.0" MUF="1.0" PDF="306093" > PDF=306000 MemberID=93 </weight> +<weight id="1140" MUR="1.0" MUF="1.0" PDF="306094" > PDF=306000 MemberID=94 </weight> +<weight id="1141" MUR="1.0" MUF="1.0" PDF="306095" > PDF=306000 MemberID=95 </weight> +<weight id="1142" MUR="1.0" MUF="1.0" PDF="306096" > PDF=306000 MemberID=96 </weight> +<weight id="1143" MUR="1.0" MUF="1.0" PDF="306097" > PDF=306000 MemberID=97 </weight> +<weight id="1144" MUR="1.0" MUF="1.0" PDF="306098" > PDF=306000 MemberID=98 </weight> +<weight id="1145" MUR="1.0" MUF="1.0" PDF="306099" > PDF=306000 MemberID=99 </weight> +<weight id="1146" MUR="1.0" MUF="1.0" PDF="306100" > PDF=306000 MemberID=100 </weight> +<weight id="1147" MUR="1.0" MUF="1.0" PDF="306101" > PDF=306000 MemberID=101 </weight> +<weight id="1148" MUR="1.0" MUF="1.0" PDF="306102" > PDF=306000 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1149" MUR="1.0" MUF="1.0" PDF="322500" > PDF=322500 MemberID=0 </weight> +<weight id="1150" MUR="1.0" MUF="1.0" PDF="322700" > PDF=322700 MemberID=0 </weight> +<weight id="1151" MUR="1.0" MUF="1.0" PDF="322900" > PDF=322900 MemberID=0 </weight> +<weight id="1152" MUR="1.0" MUF="1.0" PDF="323100" > PDF=323100 MemberID=0 </weight> +<weight id="1153" MUR="1.0" MUF="1.0" PDF="323300" > PDF=323300 MemberID=0 </weight> +<weight id="1154" MUR="1.0" MUF="1.0" PDF="323500" > PDF=323500 MemberID=0 </weight> +<weight id="1155" MUR="1.0" MUF="1.0" PDF="323700" > PDF=323700 MemberID=0 </weight> +<weight id="1156" MUR="1.0" MUF="1.0" PDF="323900" > PDF=323900 MemberID=0 </weight> +<weightgroup name="NNPDF31_nlo_hessian_pdfas" combine="symmhessian+as"> # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 +<weight id="1157" MUR="1.0" MUF="1.0" PDF="305800" > PDF=305800 MemberID=0 </weight> +<weight id="1158" MUR="1.0" MUF="1.0" PDF="305801" > PDF=305800 MemberID=1 </weight> +<weight id="1159" MUR="1.0" MUF="1.0" PDF="305802" > PDF=305800 MemberID=2 </weight> +<weight id="1160" MUR="1.0" MUF="1.0" PDF="305803" > PDF=305800 MemberID=3 </weight> +<weight id="1161" MUR="1.0" MUF="1.0" PDF="305804" > PDF=305800 MemberID=4 </weight> +<weight id="1162" MUR="1.0" MUF="1.0" PDF="305805" > PDF=305800 MemberID=5 </weight> +<weight id="1163" MUR="1.0" MUF="1.0" PDF="305806" > PDF=305800 MemberID=6 </weight> +<weight id="1164" MUR="1.0" MUF="1.0" PDF="305807" > PDF=305800 MemberID=7 </weight> +<weight id="1165" MUR="1.0" MUF="1.0" PDF="305808" > PDF=305800 MemberID=8 </weight> +<weight id="1166" MUR="1.0" MUF="1.0" PDF="305809" > PDF=305800 MemberID=9 </weight> +<weight id="1167" MUR="1.0" MUF="1.0" PDF="305810" > PDF=305800 MemberID=10 </weight> +<weight id="1168" MUR="1.0" MUF="1.0" PDF="305811" > PDF=305800 MemberID=11 </weight> +<weight id="1169" MUR="1.0" MUF="1.0" PDF="305812" > PDF=305800 MemberID=12 </weight> +<weight id="1170" MUR="1.0" MUF="1.0" PDF="305813" > PDF=305800 MemberID=13 </weight> +<weight id="1171" MUR="1.0" MUF="1.0" PDF="305814" > PDF=305800 MemberID=14 </weight> +<weight id="1172" MUR="1.0" MUF="1.0" PDF="305815" > PDF=305800 MemberID=15 </weight> +<weight id="1173" MUR="1.0" MUF="1.0" PDF="305816" > PDF=305800 MemberID=16 </weight> +<weight id="1174" MUR="1.0" MUF="1.0" PDF="305817" > PDF=305800 MemberID=17 </weight> +<weight id="1175" MUR="1.0" MUF="1.0" PDF="305818" > PDF=305800 MemberID=18 </weight> +<weight id="1176" MUR="1.0" MUF="1.0" PDF="305819" > PDF=305800 MemberID=19 </weight> +<weight id="1177" MUR="1.0" MUF="1.0" PDF="305820" > PDF=305800 MemberID=20 </weight> +<weight id="1178" MUR="1.0" MUF="1.0" PDF="305821" > PDF=305800 MemberID=21 </weight> +<weight id="1179" MUR="1.0" MUF="1.0" PDF="305822" > PDF=305800 MemberID=22 </weight> +<weight id="1180" MUR="1.0" MUF="1.0" PDF="305823" > PDF=305800 MemberID=23 </weight> +<weight id="1181" MUR="1.0" MUF="1.0" PDF="305824" > PDF=305800 MemberID=24 </weight> +<weight id="1182" MUR="1.0" MUF="1.0" PDF="305825" > PDF=305800 MemberID=25 </weight> +<weight id="1183" MUR="1.0" MUF="1.0" PDF="305826" > PDF=305800 MemberID=26 </weight> +<weight id="1184" MUR="1.0" MUF="1.0" PDF="305827" > PDF=305800 MemberID=27 </weight> +<weight id="1185" MUR="1.0" MUF="1.0" PDF="305828" > PDF=305800 MemberID=28 </weight> +<weight id="1186" MUR="1.0" MUF="1.0" PDF="305829" > PDF=305800 MemberID=29 </weight> +<weight id="1187" MUR="1.0" MUF="1.0" PDF="305830" > PDF=305800 MemberID=30 </weight> +<weight id="1188" MUR="1.0" MUF="1.0" PDF="305831" > PDF=305800 MemberID=31 </weight> +<weight id="1189" MUR="1.0" MUF="1.0" PDF="305832" > PDF=305800 MemberID=32 </weight> +<weight id="1190" MUR="1.0" MUF="1.0" PDF="305833" > PDF=305800 MemberID=33 </weight> +<weight id="1191" MUR="1.0" MUF="1.0" PDF="305834" > PDF=305800 MemberID=34 </weight> +<weight id="1192" MUR="1.0" MUF="1.0" PDF="305835" > PDF=305800 MemberID=35 </weight> +<weight id="1193" MUR="1.0" MUF="1.0" PDF="305836" > PDF=305800 MemberID=36 </weight> +<weight id="1194" MUR="1.0" MUF="1.0" PDF="305837" > PDF=305800 MemberID=37 </weight> +<weight id="1195" MUR="1.0" MUF="1.0" PDF="305838" > PDF=305800 MemberID=38 </weight> +<weight id="1196" MUR="1.0" MUF="1.0" PDF="305839" > PDF=305800 MemberID=39 </weight> +<weight id="1197" MUR="1.0" MUF="1.0" PDF="305840" > PDF=305800 MemberID=40 </weight> +<weight id="1198" MUR="1.0" MUF="1.0" PDF="305841" > PDF=305800 MemberID=41 </weight> +<weight id="1199" MUR="1.0" MUF="1.0" PDF="305842" > PDF=305800 MemberID=42 </weight> +<weight id="1200" MUR="1.0" MUF="1.0" PDF="305843" > PDF=305800 MemberID=43 </weight> +<weight id="1201" MUR="1.0" MUF="1.0" PDF="305844" > PDF=305800 MemberID=44 </weight> +<weight id="1202" MUR="1.0" MUF="1.0" PDF="305845" > PDF=305800 MemberID=45 </weight> +<weight id="1203" MUR="1.0" MUF="1.0" PDF="305846" > PDF=305800 MemberID=46 </weight> +<weight id="1204" MUR="1.0" MUF="1.0" PDF="305847" > PDF=305800 MemberID=47 </weight> +<weight id="1205" MUR="1.0" MUF="1.0" PDF="305848" > PDF=305800 MemberID=48 </weight> +<weight id="1206" MUR="1.0" MUF="1.0" PDF="305849" > PDF=305800 MemberID=49 </weight> +<weight id="1207" MUR="1.0" MUF="1.0" PDF="305850" > PDF=305800 MemberID=50 </weight> +<weight id="1208" MUR="1.0" MUF="1.0" PDF="305851" > PDF=305800 MemberID=51 </weight> +<weight id="1209" MUR="1.0" MUF="1.0" PDF="305852" > PDF=305800 MemberID=52 </weight> +<weight id="1210" MUR="1.0" MUF="1.0" PDF="305853" > PDF=305800 MemberID=53 </weight> +<weight id="1211" MUR="1.0" MUF="1.0" PDF="305854" > PDF=305800 MemberID=54 </weight> +<weight id="1212" MUR="1.0" MUF="1.0" PDF="305855" > PDF=305800 MemberID=55 </weight> +<weight id="1213" MUR="1.0" MUF="1.0" PDF="305856" > PDF=305800 MemberID=56 </weight> +<weight id="1214" MUR="1.0" MUF="1.0" PDF="305857" > PDF=305800 MemberID=57 </weight> +<weight id="1215" MUR="1.0" MUF="1.0" PDF="305858" > PDF=305800 MemberID=58 </weight> +<weight id="1216" MUR="1.0" MUF="1.0" PDF="305859" > PDF=305800 MemberID=59 </weight> +<weight id="1217" MUR="1.0" MUF="1.0" PDF="305860" > PDF=305800 MemberID=60 </weight> +<weight id="1218" MUR="1.0" MUF="1.0" PDF="305861" > PDF=305800 MemberID=61 </weight> +<weight id="1219" MUR="1.0" MUF="1.0" PDF="305862" > PDF=305800 MemberID=62 </weight> +<weight id="1220" MUR="1.0" MUF="1.0" PDF="305863" > PDF=305800 MemberID=63 </weight> +<weight id="1221" MUR="1.0" MUF="1.0" PDF="305864" > PDF=305800 MemberID=64 </weight> +<weight id="1222" MUR="1.0" MUF="1.0" PDF="305865" > PDF=305800 MemberID=65 </weight> +<weight id="1223" MUR="1.0" MUF="1.0" PDF="305866" > PDF=305800 MemberID=66 </weight> +<weight id="1224" MUR="1.0" MUF="1.0" PDF="305867" > PDF=305800 MemberID=67 </weight> +<weight id="1225" MUR="1.0" MUF="1.0" PDF="305868" > PDF=305800 MemberID=68 </weight> +<weight id="1226" MUR="1.0" MUF="1.0" PDF="305869" > PDF=305800 MemberID=69 </weight> +<weight id="1227" MUR="1.0" MUF="1.0" PDF="305870" > PDF=305800 MemberID=70 </weight> +<weight id="1228" MUR="1.0" MUF="1.0" PDF="305871" > PDF=305800 MemberID=71 </weight> +<weight id="1229" MUR="1.0" MUF="1.0" PDF="305872" > PDF=305800 MemberID=72 </weight> +<weight id="1230" MUR="1.0" MUF="1.0" PDF="305873" > PDF=305800 MemberID=73 </weight> +<weight id="1231" MUR="1.0" MUF="1.0" PDF="305874" > PDF=305800 MemberID=74 </weight> +<weight id="1232" MUR="1.0" MUF="1.0" PDF="305875" > PDF=305800 MemberID=75 </weight> +<weight id="1233" MUR="1.0" MUF="1.0" PDF="305876" > PDF=305800 MemberID=76 </weight> +<weight id="1234" MUR="1.0" MUF="1.0" PDF="305877" > PDF=305800 MemberID=77 </weight> +<weight id="1235" MUR="1.0" MUF="1.0" PDF="305878" > PDF=305800 MemberID=78 </weight> +<weight id="1236" MUR="1.0" MUF="1.0" PDF="305879" > PDF=305800 MemberID=79 </weight> +<weight id="1237" MUR="1.0" MUF="1.0" PDF="305880" > PDF=305800 MemberID=80 </weight> +<weight id="1238" MUR="1.0" MUF="1.0" PDF="305881" > PDF=305800 MemberID=81 </weight> +<weight id="1239" MUR="1.0" MUF="1.0" PDF="305882" > PDF=305800 MemberID=82 </weight> +<weight id="1240" MUR="1.0" MUF="1.0" PDF="305883" > PDF=305800 MemberID=83 </weight> +<weight id="1241" MUR="1.0" MUF="1.0" PDF="305884" > PDF=305800 MemberID=84 </weight> +<weight id="1242" MUR="1.0" MUF="1.0" PDF="305885" > PDF=305800 MemberID=85 </weight> +<weight id="1243" MUR="1.0" MUF="1.0" PDF="305886" > PDF=305800 MemberID=86 </weight> +<weight id="1244" MUR="1.0" MUF="1.0" PDF="305887" > PDF=305800 MemberID=87 </weight> +<weight id="1245" MUR="1.0" MUF="1.0" PDF="305888" > PDF=305800 MemberID=88 </weight> +<weight id="1246" MUR="1.0" MUF="1.0" PDF="305889" > PDF=305800 MemberID=89 </weight> +<weight id="1247" MUR="1.0" MUF="1.0" PDF="305890" > PDF=305800 MemberID=90 </weight> +<weight id="1248" MUR="1.0" MUF="1.0" PDF="305891" > PDF=305800 MemberID=91 </weight> +<weight id="1249" MUR="1.0" MUF="1.0" PDF="305892" > PDF=305800 MemberID=92 </weight> +<weight id="1250" MUR="1.0" MUF="1.0" PDF="305893" > PDF=305800 MemberID=93 </weight> +<weight id="1251" MUR="1.0" MUF="1.0" PDF="305894" > PDF=305800 MemberID=94 </weight> +<weight id="1252" MUR="1.0" MUF="1.0" PDF="305895" > PDF=305800 MemberID=95 </weight> +<weight id="1253" MUR="1.0" MUF="1.0" PDF="305896" > PDF=305800 MemberID=96 </weight> +<weight id="1254" MUR="1.0" MUF="1.0" PDF="305897" > PDF=305800 MemberID=97 </weight> +<weight id="1255" MUR="1.0" MUF="1.0" PDF="305898" > PDF=305800 MemberID=98 </weight> +<weight id="1256" MUR="1.0" MUF="1.0" PDF="305899" > PDF=305800 MemberID=99 </weight> +<weight id="1257" MUR="1.0" MUF="1.0" PDF="305900" > PDF=305800 MemberID=100 </weight> +<weight id="1258" MUR="1.0" MUF="1.0" PDF="305901" > PDF=305800 MemberID=101 </weight> +<weight id="1259" MUR="1.0" MUF="1.0" PDF="305902" > PDF=305800 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="CT14nnlo" combine="hessian"> # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% +<weight id="1260" MUR="1.0" MUF="1.0" PDF="13000" > PDF=13000 MemberID=0 </weight> +<weight id="1261" MUR="1.0" MUF="1.0" PDF="13001" > PDF=13000 MemberID=1 </weight> +<weight id="1262" MUR="1.0" MUF="1.0" PDF="13002" > PDF=13000 MemberID=2 </weight> +<weight id="1263" MUR="1.0" MUF="1.0" PDF="13003" > PDF=13000 MemberID=3 </weight> +<weight id="1264" MUR="1.0" MUF="1.0" PDF="13004" > PDF=13000 MemberID=4 </weight> +<weight id="1265" MUR="1.0" MUF="1.0" PDF="13005" > PDF=13000 MemberID=5 </weight> +<weight id="1266" MUR="1.0" MUF="1.0" PDF="13006" > PDF=13000 MemberID=6 </weight> +<weight id="1267" MUR="1.0" MUF="1.0" PDF="13007" > PDF=13000 MemberID=7 </weight> +<weight id="1268" MUR="1.0" MUF="1.0" PDF="13008" > PDF=13000 MemberID=8 </weight> +<weight id="1269" MUR="1.0" MUF="1.0" PDF="13009" > PDF=13000 MemberID=9 </weight> +<weight id="1270" MUR="1.0" MUF="1.0" PDF="13010" > PDF=13000 MemberID=10 </weight> +<weight id="1271" MUR="1.0" MUF="1.0" PDF="13011" > PDF=13000 MemberID=11 </weight> +<weight id="1272" MUR="1.0" MUF="1.0" PDF="13012" > PDF=13000 MemberID=12 </weight> +<weight id="1273" MUR="1.0" MUF="1.0" PDF="13013" > PDF=13000 MemberID=13 </weight> +<weight id="1274" MUR="1.0" MUF="1.0" PDF="13014" > PDF=13000 MemberID=14 </weight> +<weight id="1275" MUR="1.0" MUF="1.0" PDF="13015" > PDF=13000 MemberID=15 </weight> +<weight id="1276" MUR="1.0" MUF="1.0" PDF="13016" > PDF=13000 MemberID=16 </weight> +<weight id="1277" MUR="1.0" MUF="1.0" PDF="13017" > PDF=13000 MemberID=17 </weight> +<weight id="1278" MUR="1.0" MUF="1.0" PDF="13018" > PDF=13000 MemberID=18 </weight> +<weight id="1279" MUR="1.0" MUF="1.0" PDF="13019" > PDF=13000 MemberID=19 </weight> +<weight id="1280" MUR="1.0" MUF="1.0" PDF="13020" > PDF=13000 MemberID=20 </weight> +<weight id="1281" MUR="1.0" MUF="1.0" PDF="13021" > PDF=13000 MemberID=21 </weight> +<weight id="1282" MUR="1.0" MUF="1.0" PDF="13022" > PDF=13000 MemberID=22 </weight> +<weight id="1283" MUR="1.0" MUF="1.0" PDF="13023" > PDF=13000 MemberID=23 </weight> +<weight id="1284" MUR="1.0" MUF="1.0" PDF="13024" > PDF=13000 MemberID=24 </weight> +<weight id="1285" MUR="1.0" MUF="1.0" PDF="13025" > PDF=13000 MemberID=25 </weight> +<weight id="1286" MUR="1.0" MUF="1.0" PDF="13026" > PDF=13000 MemberID=26 </weight> +<weight id="1287" MUR="1.0" MUF="1.0" PDF="13027" > PDF=13000 MemberID=27 </weight> +<weight id="1288" MUR="1.0" MUF="1.0" PDF="13028" > PDF=13000 MemberID=28 </weight> +<weight id="1289" MUR="1.0" MUF="1.0" PDF="13029" > PDF=13000 MemberID=29 </weight> +<weight id="1290" MUR="1.0" MUF="1.0" PDF="13030" > PDF=13000 MemberID=30 </weight> +<weight id="1291" MUR="1.0" MUF="1.0" PDF="13031" > PDF=13000 MemberID=31 </weight> +<weight id="1292" MUR="1.0" MUF="1.0" PDF="13032" > PDF=13000 MemberID=32 </weight> +<weight id="1293" MUR="1.0" MUF="1.0" PDF="13033" > PDF=13000 MemberID=33 </weight> +<weight id="1294" MUR="1.0" MUF="1.0" PDF="13034" > PDF=13000 MemberID=34 </weight> +<weight id="1295" MUR="1.0" MUF="1.0" PDF="13035" > PDF=13000 MemberID=35 </weight> +<weight id="1296" MUR="1.0" MUF="1.0" PDF="13036" > PDF=13000 MemberID=36 </weight> +<weight id="1297" MUR="1.0" MUF="1.0" PDF="13037" > PDF=13000 MemberID=37 </weight> +<weight id="1298" MUR="1.0" MUF="1.0" PDF="13038" > PDF=13000 MemberID=38 </weight> +<weight id="1299" MUR="1.0" MUF="1.0" PDF="13039" > PDF=13000 MemberID=39 </weight> +<weight id="1300" MUR="1.0" MUF="1.0" PDF="13040" > PDF=13000 MemberID=40 </weight> +<weight id="1301" MUR="1.0" MUF="1.0" PDF="13041" > PDF=13000 MemberID=41 </weight> +<weight id="1302" MUR="1.0" MUF="1.0" PDF="13042" > PDF=13000 MemberID=42 </weight> +<weight id="1303" MUR="1.0" MUF="1.0" PDF="13043" > PDF=13000 MemberID=43 </weight> +<weight id="1304" MUR="1.0" MUF="1.0" PDF="13044" > PDF=13000 MemberID=44 </weight> +<weight id="1305" MUR="1.0" MUF="1.0" PDF="13045" > PDF=13000 MemberID=45 </weight> +<weight id="1306" MUR="1.0" MUF="1.0" PDF="13046" > PDF=13000 MemberID=46 </weight> +<weight id="1307" MUR="1.0" MUF="1.0" PDF="13047" > PDF=13000 MemberID=47 </weight> +<weight id="1308" MUR="1.0" MUF="1.0" PDF="13048" > PDF=13000 MemberID=48 </weight> +<weight id="1309" MUR="1.0" MUF="1.0" PDF="13049" > PDF=13000 MemberID=49 </weight> +<weight id="1310" MUR="1.0" MUF="1.0" PDF="13050" > PDF=13000 MemberID=50 </weight> +<weight id="1311" MUR="1.0" MUF="1.0" PDF="13051" > PDF=13000 MemberID=51 </weight> +<weight id="1312" MUR="1.0" MUF="1.0" PDF="13052" > PDF=13000 MemberID=52 </weight> +<weight id="1313" MUR="1.0" MUF="1.0" PDF="13053" > PDF=13000 MemberID=53 </weight> +<weight id="1314" MUR="1.0" MUF="1.0" PDF="13054" > PDF=13000 MemberID=54 </weight> +<weight id="1315" MUR="1.0" MUF="1.0" PDF="13055" > PDF=13000 MemberID=55 </weight> +<weight id="1316" MUR="1.0" MUF="1.0" PDF="13056" > PDF=13000 MemberID=56 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1317" MUR="1.0" MUF="1.0" PDF="13065" > PDF=13065 MemberID=0 </weight> +<weight id="1318" MUR="1.0" MUF="1.0" PDF="13069" > PDF=13069 MemberID=0 </weight> +<weightgroup name="CT14nlo" combine="hessian"> # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% +<weight id="1319" MUR="1.0" MUF="1.0" PDF="13100" > PDF=13100 MemberID=0 </weight> +<weight id="1320" MUR="1.0" MUF="1.0" PDF="13101" > PDF=13100 MemberID=1 </weight> +<weight id="1321" MUR="1.0" MUF="1.0" PDF="13102" > PDF=13100 MemberID=2 </weight> +<weight id="1322" MUR="1.0" MUF="1.0" PDF="13103" > PDF=13100 MemberID=3 </weight> +<weight id="1323" MUR="1.0" MUF="1.0" PDF="13104" > PDF=13100 MemberID=4 </weight> +<weight id="1324" MUR="1.0" MUF="1.0" PDF="13105" > PDF=13100 MemberID=5 </weight> +<weight id="1325" MUR="1.0" MUF="1.0" PDF="13106" > PDF=13100 MemberID=6 </weight> +<weight id="1326" MUR="1.0" MUF="1.0" PDF="13107" > PDF=13100 MemberID=7 </weight> +<weight id="1327" MUR="1.0" MUF="1.0" PDF="13108" > PDF=13100 MemberID=8 </weight> +<weight id="1328" MUR="1.0" MUF="1.0" PDF="13109" > PDF=13100 MemberID=9 </weight> +<weight id="1329" MUR="1.0" MUF="1.0" PDF="13110" > PDF=13100 MemberID=10 </weight> +<weight id="1330" MUR="1.0" MUF="1.0" PDF="13111" > PDF=13100 MemberID=11 </weight> +<weight id="1331" MUR="1.0" MUF="1.0" PDF="13112" > PDF=13100 MemberID=12 </weight> +<weight id="1332" MUR="1.0" MUF="1.0" PDF="13113" > PDF=13100 MemberID=13 </weight> +<weight id="1333" MUR="1.0" MUF="1.0" PDF="13114" > PDF=13100 MemberID=14 </weight> +<weight id="1334" MUR="1.0" MUF="1.0" PDF="13115" > PDF=13100 MemberID=15 </weight> +<weight id="1335" MUR="1.0" MUF="1.0" PDF="13116" > PDF=13100 MemberID=16 </weight> +<weight id="1336" MUR="1.0" MUF="1.0" PDF="13117" > PDF=13100 MemberID=17 </weight> +<weight id="1337" MUR="1.0" MUF="1.0" PDF="13118" > PDF=13100 MemberID=18 </weight> +<weight id="1338" MUR="1.0" MUF="1.0" PDF="13119" > PDF=13100 MemberID=19 </weight> +<weight id="1339" MUR="1.0" MUF="1.0" PDF="13120" > PDF=13100 MemberID=20 </weight> +<weight id="1340" MUR="1.0" MUF="1.0" PDF="13121" > PDF=13100 MemberID=21 </weight> +<weight id="1341" MUR="1.0" MUF="1.0" PDF="13122" > PDF=13100 MemberID=22 </weight> +<weight id="1342" MUR="1.0" MUF="1.0" PDF="13123" > PDF=13100 MemberID=23 </weight> +<weight id="1343" MUR="1.0" MUF="1.0" PDF="13124" > PDF=13100 MemberID=24 </weight> +<weight id="1344" MUR="1.0" MUF="1.0" PDF="13125" > PDF=13100 MemberID=25 </weight> +<weight id="1345" MUR="1.0" MUF="1.0" PDF="13126" > PDF=13100 MemberID=26 </weight> +<weight id="1346" MUR="1.0" MUF="1.0" PDF="13127" > PDF=13100 MemberID=27 </weight> +<weight id="1347" MUR="1.0" MUF="1.0" PDF="13128" > PDF=13100 MemberID=28 </weight> +<weight id="1348" MUR="1.0" MUF="1.0" PDF="13129" > PDF=13100 MemberID=29 </weight> +<weight id="1349" MUR="1.0" MUF="1.0" PDF="13130" > PDF=13100 MemberID=30 </weight> +<weight id="1350" MUR="1.0" MUF="1.0" PDF="13131" > PDF=13100 MemberID=31 </weight> +<weight id="1351" MUR="1.0" MUF="1.0" PDF="13132" > PDF=13100 MemberID=32 </weight> +<weight id="1352" MUR="1.0" MUF="1.0" PDF="13133" > PDF=13100 MemberID=33 </weight> +<weight id="1353" MUR="1.0" MUF="1.0" PDF="13134" > PDF=13100 MemberID=34 </weight> +<weight id="1354" MUR="1.0" MUF="1.0" PDF="13135" > PDF=13100 MemberID=35 </weight> +<weight id="1355" MUR="1.0" MUF="1.0" PDF="13136" > PDF=13100 MemberID=36 </weight> +<weight id="1356" MUR="1.0" MUF="1.0" PDF="13137" > PDF=13100 MemberID=37 </weight> +<weight id="1357" MUR="1.0" MUF="1.0" PDF="13138" > PDF=13100 MemberID=38 </weight> +<weight id="1358" MUR="1.0" MUF="1.0" PDF="13139" > PDF=13100 MemberID=39 </weight> +<weight id="1359" MUR="1.0" MUF="1.0" PDF="13140" > PDF=13100 MemberID=40 </weight> +<weight id="1360" MUR="1.0" MUF="1.0" PDF="13141" > PDF=13100 MemberID=41 </weight> +<weight id="1361" MUR="1.0" MUF="1.0" PDF="13142" > PDF=13100 MemberID=42 </weight> +<weight id="1362" MUR="1.0" MUF="1.0" PDF="13143" > PDF=13100 MemberID=43 </weight> +<weight id="1363" MUR="1.0" MUF="1.0" PDF="13144" > PDF=13100 MemberID=44 </weight> +<weight id="1364" MUR="1.0" MUF="1.0" PDF="13145" > PDF=13100 MemberID=45 </weight> +<weight id="1365" MUR="1.0" MUF="1.0" PDF="13146" > PDF=13100 MemberID=46 </weight> +<weight id="1366" MUR="1.0" MUF="1.0" PDF="13147" > PDF=13100 MemberID=47 </weight> +<weight id="1367" MUR="1.0" MUF="1.0" PDF="13148" > PDF=13100 MemberID=48 </weight> +<weight id="1368" MUR="1.0" MUF="1.0" PDF="13149" > PDF=13100 MemberID=49 </weight> +<weight id="1369" MUR="1.0" MUF="1.0" PDF="13150" > PDF=13100 MemberID=50 </weight> +<weight id="1370" MUR="1.0" MUF="1.0" PDF="13151" > PDF=13100 MemberID=51 </weight> +<weight id="1371" MUR="1.0" MUF="1.0" PDF="13152" > PDF=13100 MemberID=52 </weight> +<weight id="1372" MUR="1.0" MUF="1.0" PDF="13153" > PDF=13100 MemberID=53 </weight> +<weight id="1373" MUR="1.0" MUF="1.0" PDF="13154" > PDF=13100 MemberID=54 </weight> +<weight id="1374" MUR="1.0" MUF="1.0" PDF="13155" > PDF=13100 MemberID=55 </weight> +<weight id="1375" MUR="1.0" MUF="1.0" PDF="13156" > PDF=13100 MemberID=56 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1376" MUR="1.0" MUF="1.0" PDF="13163" > PDF=13163 MemberID=0 </weight> +<weight id="1377" MUR="1.0" MUF="1.0" PDF="13167" > PDF=13167 MemberID=0 </weight> +<weight id="1378" MUR="1.0" MUF="1.0" PDF="13200" > PDF=13200 MemberID=0 </weight> +<weightgroup name="MMHT2014nlo68clas118" combine="hessian"> # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht +<weight id="1379" MUR="1.0" MUF="1.0" PDF="25200" > PDF=25200 MemberID=0 </weight> +<weight id="1380" MUR="1.0" MUF="1.0" PDF="25201" > PDF=25200 MemberID=1 </weight> +<weight id="1381" MUR="1.0" MUF="1.0" PDF="25202" > PDF=25200 MemberID=2 </weight> +<weight id="1382" MUR="1.0" MUF="1.0" PDF="25203" > PDF=25200 MemberID=3 </weight> +<weight id="1383" MUR="1.0" MUF="1.0" PDF="25204" > PDF=25200 MemberID=4 </weight> +<weight id="1384" MUR="1.0" MUF="1.0" PDF="25205" > PDF=25200 MemberID=5 </weight> +<weight id="1385" MUR="1.0" MUF="1.0" PDF="25206" > PDF=25200 MemberID=6 </weight> +<weight id="1386" MUR="1.0" MUF="1.0" PDF="25207" > PDF=25200 MemberID=7 </weight> +<weight id="1387" MUR="1.0" MUF="1.0" PDF="25208" > PDF=25200 MemberID=8 </weight> +<weight id="1388" MUR="1.0" MUF="1.0" PDF="25209" > PDF=25200 MemberID=9 </weight> +<weight id="1389" MUR="1.0" MUF="1.0" PDF="25210" > PDF=25200 MemberID=10 </weight> +<weight id="1390" MUR="1.0" MUF="1.0" PDF="25211" > PDF=25200 MemberID=11 </weight> +<weight id="1391" MUR="1.0" MUF="1.0" PDF="25212" > PDF=25200 MemberID=12 </weight> +<weight id="1392" MUR="1.0" MUF="1.0" PDF="25213" > PDF=25200 MemberID=13 </weight> +<weight id="1393" MUR="1.0" MUF="1.0" PDF="25214" > PDF=25200 MemberID=14 </weight> +<weight id="1394" MUR="1.0" MUF="1.0" PDF="25215" > PDF=25200 MemberID=15 </weight> +<weight id="1395" MUR="1.0" MUF="1.0" PDF="25216" > PDF=25200 MemberID=16 </weight> +<weight id="1396" MUR="1.0" MUF="1.0" PDF="25217" > PDF=25200 MemberID=17 </weight> +<weight id="1397" MUR="1.0" MUF="1.0" PDF="25218" > PDF=25200 MemberID=18 </weight> +<weight id="1398" MUR="1.0" MUF="1.0" PDF="25219" > PDF=25200 MemberID=19 </weight> +<weight id="1399" MUR="1.0" MUF="1.0" PDF="25220" > PDF=25200 MemberID=20 </weight> +<weight id="1400" MUR="1.0" MUF="1.0" PDF="25221" > PDF=25200 MemberID=21 </weight> +<weight id="1401" MUR="1.0" MUF="1.0" PDF="25222" > PDF=25200 MemberID=22 </weight> +<weight id="1402" MUR="1.0" MUF="1.0" PDF="25223" > PDF=25200 MemberID=23 </weight> +<weight id="1403" MUR="1.0" MUF="1.0" PDF="25224" > PDF=25200 MemberID=24 </weight> +<weight id="1404" MUR="1.0" MUF="1.0" PDF="25225" > PDF=25200 MemberID=25 </weight> +<weight id="1405" MUR="1.0" MUF="1.0" PDF="25226" > PDF=25200 MemberID=26 </weight> +<weight id="1406" MUR="1.0" MUF="1.0" PDF="25227" > PDF=25200 MemberID=27 </weight> +<weight id="1407" MUR="1.0" MUF="1.0" PDF="25228" > PDF=25200 MemberID=28 </weight> +<weight id="1408" MUR="1.0" MUF="1.0" PDF="25229" > PDF=25200 MemberID=29 </weight> +<weight id="1409" MUR="1.0" MUF="1.0" PDF="25230" > PDF=25200 MemberID=30 </weight> +<weight id="1410" MUR="1.0" MUF="1.0" PDF="25231" > PDF=25200 MemberID=31 </weight> +<weight id="1411" MUR="1.0" MUF="1.0" PDF="25232" > PDF=25200 MemberID=32 </weight> +<weight id="1412" MUR="1.0" MUF="1.0" PDF="25233" > PDF=25200 MemberID=33 </weight> +<weight id="1413" MUR="1.0" MUF="1.0" PDF="25234" > PDF=25200 MemberID=34 </weight> +<weight id="1414" MUR="1.0" MUF="1.0" PDF="25235" > PDF=25200 MemberID=35 </weight> +<weight id="1415" MUR="1.0" MUF="1.0" PDF="25236" > PDF=25200 MemberID=36 </weight> +<weight id="1416" MUR="1.0" MUF="1.0" PDF="25237" > PDF=25200 MemberID=37 </weight> +<weight id="1417" MUR="1.0" MUF="1.0" PDF="25238" > PDF=25200 MemberID=38 </weight> +<weight id="1418" MUR="1.0" MUF="1.0" PDF="25239" > PDF=25200 MemberID=39 </weight> +<weight id="1419" MUR="1.0" MUF="1.0" PDF="25240" > PDF=25200 MemberID=40 </weight> +<weight id="1420" MUR="1.0" MUF="1.0" PDF="25241" > PDF=25200 MemberID=41 </weight> +<weight id="1421" MUR="1.0" MUF="1.0" PDF="25242" > PDF=25200 MemberID=42 </weight> +<weight id="1422" MUR="1.0" MUF="1.0" PDF="25243" > PDF=25200 MemberID=43 </weight> +<weight id="1423" MUR="1.0" MUF="1.0" PDF="25244" > PDF=25200 MemberID=44 </weight> +<weight id="1424" MUR="1.0" MUF="1.0" PDF="25245" > PDF=25200 MemberID=45 </weight> +<weight id="1425" MUR="1.0" MUF="1.0" PDF="25246" > PDF=25200 MemberID=46 </weight> +<weight id="1426" MUR="1.0" MUF="1.0" PDF="25247" > PDF=25200 MemberID=47 </weight> +<weight id="1427" MUR="1.0" MUF="1.0" PDF="25248" > PDF=25200 MemberID=48 </weight> +<weight id="1428" MUR="1.0" MUF="1.0" PDF="25249" > PDF=25200 MemberID=49 </weight> +<weight id="1429" MUR="1.0" MUF="1.0" PDF="25250" > PDF=25200 MemberID=50 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="MMHT2014nnlo68cl" combine="hessian"> # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht +<weight id="1430" MUR="1.0" MUF="1.0" PDF="25300" > PDF=25300 MemberID=0 </weight> +<weight id="1431" MUR="1.0" MUF="1.0" PDF="25301" > PDF=25300 MemberID=1 </weight> +<weight id="1432" MUR="1.0" MUF="1.0" PDF="25302" > PDF=25300 MemberID=2 </weight> +<weight id="1433" MUR="1.0" MUF="1.0" PDF="25303" > PDF=25300 MemberID=3 </weight> +<weight id="1434" MUR="1.0" MUF="1.0" PDF="25304" > PDF=25300 MemberID=4 </weight> +<weight id="1435" MUR="1.0" MUF="1.0" PDF="25305" > PDF=25300 MemberID=5 </weight> +<weight id="1436" MUR="1.0" MUF="1.0" PDF="25306" > PDF=25300 MemberID=6 </weight> +<weight id="1437" MUR="1.0" MUF="1.0" PDF="25307" > PDF=25300 MemberID=7 </weight> +<weight id="1438" MUR="1.0" MUF="1.0" PDF="25308" > PDF=25300 MemberID=8 </weight> +<weight id="1439" MUR="1.0" MUF="1.0" PDF="25309" > PDF=25300 MemberID=9 </weight> +<weight id="1440" MUR="1.0" MUF="1.0" PDF="25310" > PDF=25300 MemberID=10 </weight> +<weight id="1441" MUR="1.0" MUF="1.0" PDF="25311" > PDF=25300 MemberID=11 </weight> +<weight id="1442" MUR="1.0" MUF="1.0" PDF="25312" > PDF=25300 MemberID=12 </weight> +<weight id="1443" MUR="1.0" MUF="1.0" PDF="25313" > PDF=25300 MemberID=13 </weight> +<weight id="1444" MUR="1.0" MUF="1.0" PDF="25314" > PDF=25300 MemberID=14 </weight> +<weight id="1445" MUR="1.0" MUF="1.0" PDF="25315" > PDF=25300 MemberID=15 </weight> +<weight id="1446" MUR="1.0" MUF="1.0" PDF="25316" > PDF=25300 MemberID=16 </weight> +<weight id="1447" MUR="1.0" MUF="1.0" PDF="25317" > PDF=25300 MemberID=17 </weight> +<weight id="1448" MUR="1.0" MUF="1.0" PDF="25318" > PDF=25300 MemberID=18 </weight> +<weight id="1449" MUR="1.0" MUF="1.0" PDF="25319" > PDF=25300 MemberID=19 </weight> +<weight id="1450" MUR="1.0" MUF="1.0" PDF="25320" > PDF=25300 MemberID=20 </weight> +<weight id="1451" MUR="1.0" MUF="1.0" PDF="25321" > PDF=25300 MemberID=21 </weight> +<weight id="1452" MUR="1.0" MUF="1.0" PDF="25322" > PDF=25300 MemberID=22 </weight> +<weight id="1453" MUR="1.0" MUF="1.0" PDF="25323" > PDF=25300 MemberID=23 </weight> +<weight id="1454" MUR="1.0" MUF="1.0" PDF="25324" > PDF=25300 MemberID=24 </weight> +<weight id="1455" MUR="1.0" MUF="1.0" PDF="25325" > PDF=25300 MemberID=25 </weight> +<weight id="1456" MUR="1.0" MUF="1.0" PDF="25326" > PDF=25300 MemberID=26 </weight> +<weight id="1457" MUR="1.0" MUF="1.0" PDF="25327" > PDF=25300 MemberID=27 </weight> +<weight id="1458" MUR="1.0" MUF="1.0" PDF="25328" > PDF=25300 MemberID=28 </weight> +<weight id="1459" MUR="1.0" MUF="1.0" PDF="25329" > PDF=25300 MemberID=29 </weight> +<weight id="1460" MUR="1.0" MUF="1.0" PDF="25330" > PDF=25300 MemberID=30 </weight> +<weight id="1461" MUR="1.0" MUF="1.0" PDF="25331" > PDF=25300 MemberID=31 </weight> +<weight id="1462" MUR="1.0" MUF="1.0" PDF="25332" > PDF=25300 MemberID=32 </weight> +<weight id="1463" MUR="1.0" MUF="1.0" PDF="25333" > PDF=25300 MemberID=33 </weight> +<weight id="1464" MUR="1.0" MUF="1.0" PDF="25334" > PDF=25300 MemberID=34 </weight> +<weight id="1465" MUR="1.0" MUF="1.0" PDF="25335" > PDF=25300 MemberID=35 </weight> +<weight id="1466" MUR="1.0" MUF="1.0" PDF="25336" > PDF=25300 MemberID=36 </weight> +<weight id="1467" MUR="1.0" MUF="1.0" PDF="25337" > PDF=25300 MemberID=37 </weight> +<weight id="1468" MUR="1.0" MUF="1.0" PDF="25338" > PDF=25300 MemberID=38 </weight> +<weight id="1469" MUR="1.0" MUF="1.0" PDF="25339" > PDF=25300 MemberID=39 </weight> +<weight id="1470" MUR="1.0" MUF="1.0" PDF="25340" > PDF=25300 MemberID=40 </weight> +<weight id="1471" MUR="1.0" MUF="1.0" PDF="25341" > PDF=25300 MemberID=41 </weight> +<weight id="1472" MUR="1.0" MUF="1.0" PDF="25342" > PDF=25300 MemberID=42 </weight> +<weight id="1473" MUR="1.0" MUF="1.0" PDF="25343" > PDF=25300 MemberID=43 </weight> +<weight id="1474" MUR="1.0" MUF="1.0" PDF="25344" > PDF=25300 MemberID=44 </weight> +<weight id="1475" MUR="1.0" MUF="1.0" PDF="25345" > PDF=25300 MemberID=45 </weight> +<weight id="1476" MUR="1.0" MUF="1.0" PDF="25346" > PDF=25300 MemberID=46 </weight> +<weight id="1477" MUR="1.0" MUF="1.0" PDF="25347" > PDF=25300 MemberID=47 </weight> +<weight id="1478" MUR="1.0" MUF="1.0" PDF="25348" > PDF=25300 MemberID=48 </weight> +<weight id="1479" MUR="1.0" MUF="1.0" PDF="25349" > PDF=25300 MemberID=49 </weight> +<weight id="1480" MUR="1.0" MUF="1.0" PDF="25350" > PDF=25300 MemberID=50 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1481" MUR="1.0" MUF="1.0" PDF="25000" > PDF=25000 MemberID=0 </weight> +<weightgroup name="ABMP16als118_5_nnlo" combine="symmhessian"> # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set +<weight id="1482" MUR="1.0" MUF="1.0" PDF="42780" > PDF=42780 MemberID=0 </weight> +<weight id="1483" MUR="1.0" MUF="1.0" PDF="42781" > PDF=42780 MemberID=1 </weight> +<weight id="1484" MUR="1.0" MUF="1.0" PDF="42782" > PDF=42780 MemberID=2 </weight> +<weight id="1485" MUR="1.0" MUF="1.0" PDF="42783" > PDF=42780 MemberID=3 </weight> +<weight id="1486" MUR="1.0" MUF="1.0" PDF="42784" > PDF=42780 MemberID=4 </weight> +<weight id="1487" MUR="1.0" MUF="1.0" PDF="42785" > PDF=42780 MemberID=5 </weight> +<weight id="1488" MUR="1.0" MUF="1.0" PDF="42786" > PDF=42780 MemberID=6 </weight> +<weight id="1489" MUR="1.0" MUF="1.0" PDF="42787" > PDF=42780 MemberID=7 </weight> +<weight id="1490" MUR="1.0" MUF="1.0" PDF="42788" > PDF=42780 MemberID=8 </weight> +<weight id="1491" MUR="1.0" MUF="1.0" PDF="42789" > PDF=42780 MemberID=9 </weight> +<weight id="1492" MUR="1.0" MUF="1.0" PDF="42790" > PDF=42780 MemberID=10 </weight> +<weight id="1493" MUR="1.0" MUF="1.0" PDF="42791" > PDF=42780 MemberID=11 </weight> +<weight id="1494" MUR="1.0" MUF="1.0" PDF="42792" > PDF=42780 MemberID=12 </weight> +<weight id="1495" MUR="1.0" MUF="1.0" PDF="42793" > PDF=42780 MemberID=13 </weight> +<weight id="1496" MUR="1.0" MUF="1.0" PDF="42794" > PDF=42780 MemberID=14 </weight> +<weight id="1497" MUR="1.0" MUF="1.0" PDF="42795" > PDF=42780 MemberID=15 </weight> +<weight id="1498" MUR="1.0" MUF="1.0" PDF="42796" > PDF=42780 MemberID=16 </weight> +<weight id="1499" MUR="1.0" MUF="1.0" PDF="42797" > PDF=42780 MemberID=17 </weight> +<weight id="1500" MUR="1.0" MUF="1.0" PDF="42798" > PDF=42780 MemberID=18 </weight> +<weight id="1501" MUR="1.0" MUF="1.0" PDF="42799" > PDF=42780 MemberID=19 </weight> +<weight id="1502" MUR="1.0" MUF="1.0" PDF="42800" > PDF=42780 MemberID=20 </weight> +<weight id="1503" MUR="1.0" MUF="1.0" PDF="42801" > PDF=42780 MemberID=21 </weight> +<weight id="1504" MUR="1.0" MUF="1.0" PDF="42802" > PDF=42780 MemberID=22 </weight> +<weight id="1505" MUR="1.0" MUF="1.0" PDF="42803" > PDF=42780 MemberID=23 </weight> +<weight id="1506" MUR="1.0" MUF="1.0" PDF="42804" > PDF=42780 MemberID=24 </weight> +<weight id="1507" MUR="1.0" MUF="1.0" PDF="42805" > PDF=42780 MemberID=25 </weight> +<weight id="1508" MUR="1.0" MUF="1.0" PDF="42806" > PDF=42780 MemberID=26 </weight> +<weight id="1509" MUR="1.0" MUF="1.0" PDF="42807" > PDF=42780 MemberID=27 </weight> +<weight id="1510" MUR="1.0" MUF="1.0" PDF="42808" > PDF=42780 MemberID=28 </weight> +<weight id="1511" MUR="1.0" MUF="1.0" PDF="42809" > PDF=42780 MemberID=29 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nlo_100_pdfas" combine="symmhessian+as"> # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 +<weight id="1512" MUR="1.0" MUF="1.0" PDF="90200" > PDF=90200 MemberID=0 </weight> +<weight id="1513" MUR="1.0" MUF="1.0" PDF="90201" > PDF=90200 MemberID=1 </weight> +<weight id="1514" MUR="1.0" MUF="1.0" PDF="90202" > PDF=90200 MemberID=2 </weight> +<weight id="1515" MUR="1.0" MUF="1.0" PDF="90203" > PDF=90200 MemberID=3 </weight> +<weight id="1516" MUR="1.0" MUF="1.0" PDF="90204" > PDF=90200 MemberID=4 </weight> +<weight id="1517" MUR="1.0" MUF="1.0" PDF="90205" > PDF=90200 MemberID=5 </weight> +<weight id="1518" MUR="1.0" MUF="1.0" PDF="90206" > PDF=90200 MemberID=6 </weight> +<weight id="1519" MUR="1.0" MUF="1.0" PDF="90207" > PDF=90200 MemberID=7 </weight> +<weight id="1520" MUR="1.0" MUF="1.0" PDF="90208" > PDF=90200 MemberID=8 </weight> +<weight id="1521" MUR="1.0" MUF="1.0" PDF="90209" > PDF=90200 MemberID=9 </weight> +<weight id="1522" MUR="1.0" MUF="1.0" PDF="90210" > PDF=90200 MemberID=10 </weight> +<weight id="1523" MUR="1.0" MUF="1.0" PDF="90211" > PDF=90200 MemberID=11 </weight> +<weight id="1524" MUR="1.0" MUF="1.0" PDF="90212" > PDF=90200 MemberID=12 </weight> +<weight id="1525" MUR="1.0" MUF="1.0" PDF="90213" > PDF=90200 MemberID=13 </weight> +<weight id="1526" MUR="1.0" MUF="1.0" PDF="90214" > PDF=90200 MemberID=14 </weight> +<weight id="1527" MUR="1.0" MUF="1.0" PDF="90215" > PDF=90200 MemberID=15 </weight> +<weight id="1528" MUR="1.0" MUF="1.0" PDF="90216" > PDF=90200 MemberID=16 </weight> +<weight id="1529" MUR="1.0" MUF="1.0" PDF="90217" > PDF=90200 MemberID=17 </weight> +<weight id="1530" MUR="1.0" MUF="1.0" PDF="90218" > PDF=90200 MemberID=18 </weight> +<weight id="1531" MUR="1.0" MUF="1.0" PDF="90219" > PDF=90200 MemberID=19 </weight> +<weight id="1532" MUR="1.0" MUF="1.0" PDF="90220" > PDF=90200 MemberID=20 </weight> +<weight id="1533" MUR="1.0" MUF="1.0" PDF="90221" > PDF=90200 MemberID=21 </weight> +<weight id="1534" MUR="1.0" MUF="1.0" PDF="90222" > PDF=90200 MemberID=22 </weight> +<weight id="1535" MUR="1.0" MUF="1.0" PDF="90223" > PDF=90200 MemberID=23 </weight> +<weight id="1536" MUR="1.0" MUF="1.0" PDF="90224" > PDF=90200 MemberID=24 </weight> +<weight id="1537" MUR="1.0" MUF="1.0" PDF="90225" > PDF=90200 MemberID=25 </weight> +<weight id="1538" MUR="1.0" MUF="1.0" PDF="90226" > PDF=90200 MemberID=26 </weight> +<weight id="1539" MUR="1.0" MUF="1.0" PDF="90227" > PDF=90200 MemberID=27 </weight> +<weight id="1540" MUR="1.0" MUF="1.0" PDF="90228" > PDF=90200 MemberID=28 </weight> +<weight id="1541" MUR="1.0" MUF="1.0" PDF="90229" > PDF=90200 MemberID=29 </weight> +<weight id="1542" MUR="1.0" MUF="1.0" PDF="90230" > PDF=90200 MemberID=30 </weight> +<weight id="1543" MUR="1.0" MUF="1.0" PDF="90231" > PDF=90200 MemberID=31 </weight> +<weight id="1544" MUR="1.0" MUF="1.0" PDF="90232" > PDF=90200 MemberID=32 </weight> +<weight id="1545" MUR="1.0" MUF="1.0" PDF="90233" > PDF=90200 MemberID=33 </weight> +<weight id="1546" MUR="1.0" MUF="1.0" PDF="90234" > PDF=90200 MemberID=34 </weight> +<weight id="1547" MUR="1.0" MUF="1.0" PDF="90235" > PDF=90200 MemberID=35 </weight> +<weight id="1548" MUR="1.0" MUF="1.0" PDF="90236" > PDF=90200 MemberID=36 </weight> +<weight id="1549" MUR="1.0" MUF="1.0" PDF="90237" > PDF=90200 MemberID=37 </weight> +<weight id="1550" MUR="1.0" MUF="1.0" PDF="90238" > PDF=90200 MemberID=38 </weight> +<weight id="1551" MUR="1.0" MUF="1.0" PDF="90239" > PDF=90200 MemberID=39 </weight> +<weight id="1552" MUR="1.0" MUF="1.0" PDF="90240" > PDF=90200 MemberID=40 </weight> +<weight id="1553" MUR="1.0" MUF="1.0" PDF="90241" > PDF=90200 MemberID=41 </weight> +<weight id="1554" MUR="1.0" MUF="1.0" PDF="90242" > PDF=90200 MemberID=42 </weight> +<weight id="1555" MUR="1.0" MUF="1.0" PDF="90243" > PDF=90200 MemberID=43 </weight> +<weight id="1556" MUR="1.0" MUF="1.0" PDF="90244" > PDF=90200 MemberID=44 </weight> +<weight id="1557" MUR="1.0" MUF="1.0" PDF="90245" > PDF=90200 MemberID=45 </weight> +<weight id="1558" MUR="1.0" MUF="1.0" PDF="90246" > PDF=90200 MemberID=46 </weight> +<weight id="1559" MUR="1.0" MUF="1.0" PDF="90247" > PDF=90200 MemberID=47 </weight> +<weight id="1560" MUR="1.0" MUF="1.0" PDF="90248" > PDF=90200 MemberID=48 </weight> +<weight id="1561" MUR="1.0" MUF="1.0" PDF="90249" > PDF=90200 MemberID=49 </weight> +<weight id="1562" MUR="1.0" MUF="1.0" PDF="90250" > PDF=90200 MemberID=50 </weight> +<weight id="1563" MUR="1.0" MUF="1.0" PDF="90251" > PDF=90200 MemberID=51 </weight> +<weight id="1564" MUR="1.0" MUF="1.0" PDF="90252" > PDF=90200 MemberID=52 </weight> +<weight id="1565" MUR="1.0" MUF="1.0" PDF="90253" > PDF=90200 MemberID=53 </weight> +<weight id="1566" MUR="1.0" MUF="1.0" PDF="90254" > PDF=90200 MemberID=54 </weight> +<weight id="1567" MUR="1.0" MUF="1.0" PDF="90255" > PDF=90200 MemberID=55 </weight> +<weight id="1568" MUR="1.0" MUF="1.0" PDF="90256" > PDF=90200 MemberID=56 </weight> +<weight id="1569" MUR="1.0" MUF="1.0" PDF="90257" > PDF=90200 MemberID=57 </weight> +<weight id="1570" MUR="1.0" MUF="1.0" PDF="90258" > PDF=90200 MemberID=58 </weight> +<weight id="1571" MUR="1.0" MUF="1.0" PDF="90259" > PDF=90200 MemberID=59 </weight> +<weight id="1572" MUR="1.0" MUF="1.0" PDF="90260" > PDF=90200 MemberID=60 </weight> +<weight id="1573" MUR="1.0" MUF="1.0" PDF="90261" > PDF=90200 MemberID=61 </weight> +<weight id="1574" MUR="1.0" MUF="1.0" PDF="90262" > PDF=90200 MemberID=62 </weight> +<weight id="1575" MUR="1.0" MUF="1.0" PDF="90263" > PDF=90200 MemberID=63 </weight> +<weight id="1576" MUR="1.0" MUF="1.0" PDF="90264" > PDF=90200 MemberID=64 </weight> +<weight id="1577" MUR="1.0" MUF="1.0" PDF="90265" > PDF=90200 MemberID=65 </weight> +<weight id="1578" MUR="1.0" MUF="1.0" PDF="90266" > PDF=90200 MemberID=66 </weight> +<weight id="1579" MUR="1.0" MUF="1.0" PDF="90267" > PDF=90200 MemberID=67 </weight> +<weight id="1580" MUR="1.0" MUF="1.0" PDF="90268" > PDF=90200 MemberID=68 </weight> +<weight id="1581" MUR="1.0" MUF="1.0" PDF="90269" > PDF=90200 MemberID=69 </weight> +<weight id="1582" MUR="1.0" MUF="1.0" PDF="90270" > PDF=90200 MemberID=70 </weight> +<weight id="1583" MUR="1.0" MUF="1.0" PDF="90271" > PDF=90200 MemberID=71 </weight> +<weight id="1584" MUR="1.0" MUF="1.0" PDF="90272" > PDF=90200 MemberID=72 </weight> +<weight id="1585" MUR="1.0" MUF="1.0" PDF="90273" > PDF=90200 MemberID=73 </weight> +<weight id="1586" MUR="1.0" MUF="1.0" PDF="90274" > PDF=90200 MemberID=74 </weight> +<weight id="1587" MUR="1.0" MUF="1.0" PDF="90275" > PDF=90200 MemberID=75 </weight> +<weight id="1588" MUR="1.0" MUF="1.0" PDF="90276" > PDF=90200 MemberID=76 </weight> +<weight id="1589" MUR="1.0" MUF="1.0" PDF="90277" > PDF=90200 MemberID=77 </weight> +<weight id="1590" MUR="1.0" MUF="1.0" PDF="90278" > PDF=90200 MemberID=78 </weight> +<weight id="1591" MUR="1.0" MUF="1.0" PDF="90279" > PDF=90200 MemberID=79 </weight> +<weight id="1592" MUR="1.0" MUF="1.0" PDF="90280" > PDF=90200 MemberID=80 </weight> +<weight id="1593" MUR="1.0" MUF="1.0" PDF="90281" > PDF=90200 MemberID=81 </weight> +<weight id="1594" MUR="1.0" MUF="1.0" PDF="90282" > PDF=90200 MemberID=82 </weight> +<weight id="1595" MUR="1.0" MUF="1.0" PDF="90283" > PDF=90200 MemberID=83 </weight> +<weight id="1596" MUR="1.0" MUF="1.0" PDF="90284" > PDF=90200 MemberID=84 </weight> +<weight id="1597" MUR="1.0" MUF="1.0" PDF="90285" > PDF=90200 MemberID=85 </weight> +<weight id="1598" MUR="1.0" MUF="1.0" PDF="90286" > PDF=90200 MemberID=86 </weight> +<weight id="1599" MUR="1.0" MUF="1.0" PDF="90287" > PDF=90200 MemberID=87 </weight> +<weight id="1600" MUR="1.0" MUF="1.0" PDF="90288" > PDF=90200 MemberID=88 </weight> +<weight id="1601" MUR="1.0" MUF="1.0" PDF="90289" > PDF=90200 MemberID=89 </weight> +<weight id="1602" MUR="1.0" MUF="1.0" PDF="90290" > PDF=90200 MemberID=90 </weight> +<weight id="1603" MUR="1.0" MUF="1.0" PDF="90291" > PDF=90200 MemberID=91 </weight> +<weight id="1604" MUR="1.0" MUF="1.0" PDF="90292" > PDF=90200 MemberID=92 </weight> +<weight id="1605" MUR="1.0" MUF="1.0" PDF="90293" > PDF=90200 MemberID=93 </weight> +<weight id="1606" MUR="1.0" MUF="1.0" PDF="90294" > PDF=90200 MemberID=94 </weight> +<weight id="1607" MUR="1.0" MUF="1.0" PDF="90295" > PDF=90200 MemberID=95 </weight> +<weight id="1608" MUR="1.0" MUF="1.0" PDF="90296" > PDF=90200 MemberID=96 </weight> +<weight id="1609" MUR="1.0" MUF="1.0" PDF="90297" > PDF=90200 MemberID=97 </weight> +<weight id="1610" MUR="1.0" MUF="1.0" PDF="90298" > PDF=90200 MemberID=98 </weight> +<weight id="1611" MUR="1.0" MUF="1.0" PDF="90299" > PDF=90200 MemberID=99 </weight> +<weight id="1612" MUR="1.0" MUF="1.0" PDF="90300" > PDF=90200 MemberID=100 </weight> +<weight id="1613" MUR="1.0" MUF="1.0" PDF="90301" > PDF=90200 MemberID=101 </weight> +<weight id="1614" MUR="1.0" MUF="1.0" PDF="90302" > PDF=90200 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nnlo_100_pdfas" combine="symmhessian+as"> # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 +<weight id="1615" MUR="1.0" MUF="1.0" PDF="91200" > PDF=91200 MemberID=0 </weight> +<weight id="1616" MUR="1.0" MUF="1.0" PDF="91201" > PDF=91200 MemberID=1 </weight> +<weight id="1617" MUR="1.0" MUF="1.0" PDF="91202" > PDF=91200 MemberID=2 </weight> +<weight id="1618" MUR="1.0" MUF="1.0" PDF="91203" > PDF=91200 MemberID=3 </weight> +<weight id="1619" MUR="1.0" MUF="1.0" PDF="91204" > PDF=91200 MemberID=4 </weight> +<weight id="1620" MUR="1.0" MUF="1.0" PDF="91205" > PDF=91200 MemberID=5 </weight> +<weight id="1621" MUR="1.0" MUF="1.0" PDF="91206" > PDF=91200 MemberID=6 </weight> +<weight id="1622" MUR="1.0" MUF="1.0" PDF="91207" > PDF=91200 MemberID=7 </weight> +<weight id="1623" MUR="1.0" MUF="1.0" PDF="91208" > PDF=91200 MemberID=8 </weight> +<weight id="1624" MUR="1.0" MUF="1.0" PDF="91209" > PDF=91200 MemberID=9 </weight> +<weight id="1625" MUR="1.0" MUF="1.0" PDF="91210" > PDF=91200 MemberID=10 </weight> +<weight id="1626" MUR="1.0" MUF="1.0" PDF="91211" > PDF=91200 MemberID=11 </weight> +<weight id="1627" MUR="1.0" MUF="1.0" PDF="91212" > PDF=91200 MemberID=12 </weight> +<weight id="1628" MUR="1.0" MUF="1.0" PDF="91213" > PDF=91200 MemberID=13 </weight> +<weight id="1629" MUR="1.0" MUF="1.0" PDF="91214" > PDF=91200 MemberID=14 </weight> +<weight id="1630" MUR="1.0" MUF="1.0" PDF="91215" > PDF=91200 MemberID=15 </weight> +<weight id="1631" MUR="1.0" MUF="1.0" PDF="91216" > PDF=91200 MemberID=16 </weight> +<weight id="1632" MUR="1.0" MUF="1.0" PDF="91217" > PDF=91200 MemberID=17 </weight> +<weight id="1633" MUR="1.0" MUF="1.0" PDF="91218" > PDF=91200 MemberID=18 </weight> +<weight id="1634" MUR="1.0" MUF="1.0" PDF="91219" > PDF=91200 MemberID=19 </weight> +<weight id="1635" MUR="1.0" MUF="1.0" PDF="91220" > PDF=91200 MemberID=20 </weight> +<weight id="1636" MUR="1.0" MUF="1.0" PDF="91221" > PDF=91200 MemberID=21 </weight> +<weight id="1637" MUR="1.0" MUF="1.0" PDF="91222" > PDF=91200 MemberID=22 </weight> +<weight id="1638" MUR="1.0" MUF="1.0" PDF="91223" > PDF=91200 MemberID=23 </weight> +<weight id="1639" MUR="1.0" MUF="1.0" PDF="91224" > PDF=91200 MemberID=24 </weight> +<weight id="1640" MUR="1.0" MUF="1.0" PDF="91225" > PDF=91200 MemberID=25 </weight> +<weight id="1641" MUR="1.0" MUF="1.0" PDF="91226" > PDF=91200 MemberID=26 </weight> +<weight id="1642" MUR="1.0" MUF="1.0" PDF="91227" > PDF=91200 MemberID=27 </weight> +<weight id="1643" MUR="1.0" MUF="1.0" PDF="91228" > PDF=91200 MemberID=28 </weight> +<weight id="1644" MUR="1.0" MUF="1.0" PDF="91229" > PDF=91200 MemberID=29 </weight> +<weight id="1645" MUR="1.0" MUF="1.0" PDF="91230" > PDF=91200 MemberID=30 </weight> +<weight id="1646" MUR="1.0" MUF="1.0" PDF="91231" > PDF=91200 MemberID=31 </weight> +<weight id="1647" MUR="1.0" MUF="1.0" PDF="91232" > PDF=91200 MemberID=32 </weight> +<weight id="1648" MUR="1.0" MUF="1.0" PDF="91233" > PDF=91200 MemberID=33 </weight> +<weight id="1649" MUR="1.0" MUF="1.0" PDF="91234" > PDF=91200 MemberID=34 </weight> +<weight id="1650" MUR="1.0" MUF="1.0" PDF="91235" > PDF=91200 MemberID=35 </weight> +<weight id="1651" MUR="1.0" MUF="1.0" PDF="91236" > PDF=91200 MemberID=36 </weight> +<weight id="1652" MUR="1.0" MUF="1.0" PDF="91237" > PDF=91200 MemberID=37 </weight> +<weight id="1653" MUR="1.0" MUF="1.0" PDF="91238" > PDF=91200 MemberID=38 </weight> +<weight id="1654" MUR="1.0" MUF="1.0" PDF="91239" > PDF=91200 MemberID=39 </weight> +<weight id="1655" MUR="1.0" MUF="1.0" PDF="91240" > PDF=91200 MemberID=40 </weight> +<weight id="1656" MUR="1.0" MUF="1.0" PDF="91241" > PDF=91200 MemberID=41 </weight> +<weight id="1657" MUR="1.0" MUF="1.0" PDF="91242" > PDF=91200 MemberID=42 </weight> +<weight id="1658" MUR="1.0" MUF="1.0" PDF="91243" > PDF=91200 MemberID=43 </weight> +<weight id="1659" MUR="1.0" MUF="1.0" PDF="91244" > PDF=91200 MemberID=44 </weight> +<weight id="1660" MUR="1.0" MUF="1.0" PDF="91245" > PDF=91200 MemberID=45 </weight> +<weight id="1661" MUR="1.0" MUF="1.0" PDF="91246" > PDF=91200 MemberID=46 </weight> +<weight id="1662" MUR="1.0" MUF="1.0" PDF="91247" > PDF=91200 MemberID=47 </weight> +<weight id="1663" MUR="1.0" MUF="1.0" PDF="91248" > PDF=91200 MemberID=48 </weight> +<weight id="1664" MUR="1.0" MUF="1.0" PDF="91249" > PDF=91200 MemberID=49 </weight> +<weight id="1665" MUR="1.0" MUF="1.0" PDF="91250" > PDF=91200 MemberID=50 </weight> +<weight id="1666" MUR="1.0" MUF="1.0" PDF="91251" > PDF=91200 MemberID=51 </weight> +<weight id="1667" MUR="1.0" MUF="1.0" PDF="91252" > PDF=91200 MemberID=52 </weight> +<weight id="1668" MUR="1.0" MUF="1.0" PDF="91253" > PDF=91200 MemberID=53 </weight> +<weight id="1669" MUR="1.0" MUF="1.0" PDF="91254" > PDF=91200 MemberID=54 </weight> +<weight id="1670" MUR="1.0" MUF="1.0" PDF="91255" > PDF=91200 MemberID=55 </weight> +<weight id="1671" MUR="1.0" MUF="1.0" PDF="91256" > PDF=91200 MemberID=56 </weight> +<weight id="1672" MUR="1.0" MUF="1.0" PDF="91257" > PDF=91200 MemberID=57 </weight> +<weight id="1673" MUR="1.0" MUF="1.0" PDF="91258" > PDF=91200 MemberID=58 </weight> +<weight id="1674" MUR="1.0" MUF="1.0" PDF="91259" > PDF=91200 MemberID=59 </weight> +<weight id="1675" MUR="1.0" MUF="1.0" PDF="91260" > PDF=91200 MemberID=60 </weight> +<weight id="1676" MUR="1.0" MUF="1.0" PDF="91261" > PDF=91200 MemberID=61 </weight> +<weight id="1677" MUR="1.0" MUF="1.0" PDF="91262" > PDF=91200 MemberID=62 </weight> +<weight id="1678" MUR="1.0" MUF="1.0" PDF="91263" > PDF=91200 MemberID=63 </weight> +<weight id="1679" MUR="1.0" MUF="1.0" PDF="91264" > PDF=91200 MemberID=64 </weight> +<weight id="1680" MUR="1.0" MUF="1.0" PDF="91265" > PDF=91200 MemberID=65 </weight> +<weight id="1681" MUR="1.0" MUF="1.0" PDF="91266" > PDF=91200 MemberID=66 </weight> +<weight id="1682" MUR="1.0" MUF="1.0" PDF="91267" > PDF=91200 MemberID=67 </weight> +<weight id="1683" MUR="1.0" MUF="1.0" PDF="91268" > PDF=91200 MemberID=68 </weight> +<weight id="1684" MUR="1.0" MUF="1.0" PDF="91269" > PDF=91200 MemberID=69 </weight> +<weight id="1685" MUR="1.0" MUF="1.0" PDF="91270" > PDF=91200 MemberID=70 </weight> +<weight id="1686" MUR="1.0" MUF="1.0" PDF="91271" > PDF=91200 MemberID=71 </weight> +<weight id="1687" MUR="1.0" MUF="1.0" PDF="91272" > PDF=91200 MemberID=72 </weight> +<weight id="1688" MUR="1.0" MUF="1.0" PDF="91273" > PDF=91200 MemberID=73 </weight> +<weight id="1689" MUR="1.0" MUF="1.0" PDF="91274" > PDF=91200 MemberID=74 </weight> +<weight id="1690" MUR="1.0" MUF="1.0" PDF="91275" > PDF=91200 MemberID=75 </weight> +<weight id="1691" MUR="1.0" MUF="1.0" PDF="91276" > PDF=91200 MemberID=76 </weight> +<weight id="1692" MUR="1.0" MUF="1.0" PDF="91277" > PDF=91200 MemberID=77 </weight> +<weight id="1693" MUR="1.0" MUF="1.0" PDF="91278" > PDF=91200 MemberID=78 </weight> +<weight id="1694" MUR="1.0" MUF="1.0" PDF="91279" > PDF=91200 MemberID=79 </weight> +<weight id="1695" MUR="1.0" MUF="1.0" PDF="91280" > PDF=91200 MemberID=80 </weight> +<weight id="1696" MUR="1.0" MUF="1.0" PDF="91281" > PDF=91200 MemberID=81 </weight> +<weight id="1697" MUR="1.0" MUF="1.0" PDF="91282" > PDF=91200 MemberID=82 </weight> +<weight id="1698" MUR="1.0" MUF="1.0" PDF="91283" > PDF=91200 MemberID=83 </weight> +<weight id="1699" MUR="1.0" MUF="1.0" PDF="91284" > PDF=91200 MemberID=84 </weight> +<weight id="1700" MUR="1.0" MUF="1.0" PDF="91285" > PDF=91200 MemberID=85 </weight> +<weight id="1701" MUR="1.0" MUF="1.0" PDF="91286" > PDF=91200 MemberID=86 </weight> +<weight id="1702" MUR="1.0" MUF="1.0" PDF="91287" > PDF=91200 MemberID=87 </weight> +<weight id="1703" MUR="1.0" MUF="1.0" PDF="91288" > PDF=91200 MemberID=88 </weight> +<weight id="1704" MUR="1.0" MUF="1.0" PDF="91289" > PDF=91200 MemberID=89 </weight> +<weight id="1705" MUR="1.0" MUF="1.0" PDF="91290" > PDF=91200 MemberID=90 </weight> +<weight id="1706" MUR="1.0" MUF="1.0" PDF="91291" > PDF=91200 MemberID=91 </weight> +<weight id="1707" MUR="1.0" MUF="1.0" PDF="91292" > PDF=91200 MemberID=92 </weight> +<weight id="1708" MUR="1.0" MUF="1.0" PDF="91293" > PDF=91200 MemberID=93 </weight> +<weight id="1709" MUR="1.0" MUF="1.0" PDF="91294" > PDF=91200 MemberID=94 </weight> +<weight id="1710" MUR="1.0" MUF="1.0" PDF="91295" > PDF=91200 MemberID=95 </weight> +<weight id="1711" MUR="1.0" MUF="1.0" PDF="91296" > PDF=91200 MemberID=96 </weight> +<weight id="1712" MUR="1.0" MUF="1.0" PDF="91297" > PDF=91200 MemberID=97 </weight> +<weight id="1713" MUR="1.0" MUF="1.0" PDF="91298" > PDF=91200 MemberID=98 </weight> +<weight id="1714" MUR="1.0" MUF="1.0" PDF="91299" > PDF=91200 MemberID=99 </weight> +<weight id="1715" MUR="1.0" MUF="1.0" PDF="91300" > PDF=91200 MemberID=100 </weight> +<weight id="1716" MUR="1.0" MUF="1.0" PDF="91301" > PDF=91200 MemberID=101 </weight> +<weight id="1717" MUR="1.0" MUF="1.0" PDF="91302" > PDF=91200 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nlo_30_pdfas" combine="symmhessian+as"> # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 +<weight id="1718" MUR="1.0" MUF="1.0" PDF="90400" > PDF=90400 MemberID=0 </weight> +<weight id="1719" MUR="1.0" MUF="1.0" PDF="90401" > PDF=90400 MemberID=1 </weight> +<weight id="1720" MUR="1.0" MUF="1.0" PDF="90402" > PDF=90400 MemberID=2 </weight> +<weight id="1721" MUR="1.0" MUF="1.0" PDF="90403" > PDF=90400 MemberID=3 </weight> +<weight id="1722" MUR="1.0" MUF="1.0" PDF="90404" > PDF=90400 MemberID=4 </weight> +<weight id="1723" MUR="1.0" MUF="1.0" PDF="90405" > PDF=90400 MemberID=5 </weight> +<weight id="1724" MUR="1.0" MUF="1.0" PDF="90406" > PDF=90400 MemberID=6 </weight> +<weight id="1725" MUR="1.0" MUF="1.0" PDF="90407" > PDF=90400 MemberID=7 </weight> +<weight id="1726" MUR="1.0" MUF="1.0" PDF="90408" > PDF=90400 MemberID=8 </weight> +<weight id="1727" MUR="1.0" MUF="1.0" PDF="90409" > PDF=90400 MemberID=9 </weight> +<weight id="1728" MUR="1.0" MUF="1.0" PDF="90410" > PDF=90400 MemberID=10 </weight> +<weight id="1729" MUR="1.0" MUF="1.0" PDF="90411" > PDF=90400 MemberID=11 </weight> +<weight id="1730" MUR="1.0" MUF="1.0" PDF="90412" > PDF=90400 MemberID=12 </weight> +<weight id="1731" MUR="1.0" MUF="1.0" PDF="90413" > PDF=90400 MemberID=13 </weight> +<weight id="1732" MUR="1.0" MUF="1.0" PDF="90414" > PDF=90400 MemberID=14 </weight> +<weight id="1733" MUR="1.0" MUF="1.0" PDF="90415" > PDF=90400 MemberID=15 </weight> +<weight id="1734" MUR="1.0" MUF="1.0" PDF="90416" > PDF=90400 MemberID=16 </weight> +<weight id="1735" MUR="1.0" MUF="1.0" PDF="90417" > PDF=90400 MemberID=17 </weight> +<weight id="1736" MUR="1.0" MUF="1.0" PDF="90418" > PDF=90400 MemberID=18 </weight> +<weight id="1737" MUR="1.0" MUF="1.0" PDF="90419" > PDF=90400 MemberID=19 </weight> +<weight id="1738" MUR="1.0" MUF="1.0" PDF="90420" > PDF=90400 MemberID=20 </weight> +<weight id="1739" MUR="1.0" MUF="1.0" PDF="90421" > PDF=90400 MemberID=21 </weight> +<weight id="1740" MUR="1.0" MUF="1.0" PDF="90422" > PDF=90400 MemberID=22 </weight> +<weight id="1741" MUR="1.0" MUF="1.0" PDF="90423" > PDF=90400 MemberID=23 </weight> +<weight id="1742" MUR="1.0" MUF="1.0" PDF="90424" > PDF=90400 MemberID=24 </weight> +<weight id="1743" MUR="1.0" MUF="1.0" PDF="90425" > PDF=90400 MemberID=25 </weight> +<weight id="1744" MUR="1.0" MUF="1.0" PDF="90426" > PDF=90400 MemberID=26 </weight> +<weight id="1745" MUR="1.0" MUF="1.0" PDF="90427" > PDF=90400 MemberID=27 </weight> +<weight id="1746" MUR="1.0" MUF="1.0" PDF="90428" > PDF=90400 MemberID=28 </weight> +<weight id="1747" MUR="1.0" MUF="1.0" PDF="90429" > PDF=90400 MemberID=29 </weight> +<weight id="1748" MUR="1.0" MUF="1.0" PDF="90430" > PDF=90400 MemberID=30 </weight> +<weight id="1749" MUR="1.0" MUF="1.0" PDF="90431" > PDF=90400 MemberID=31 </weight> +<weight id="1750" MUR="1.0" MUF="1.0" PDF="90432" > PDF=90400 MemberID=32 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nnlo_30_pdfas" combine="symmhessian+as"> # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 +<weight id="1751" MUR="1.0" MUF="1.0" PDF="91400" > PDF=91400 MemberID=0 </weight> +<weight id="1752" MUR="1.0" MUF="1.0" PDF="91401" > PDF=91400 MemberID=1 </weight> +<weight id="1753" MUR="1.0" MUF="1.0" PDF="91402" > PDF=91400 MemberID=2 </weight> +<weight id="1754" MUR="1.0" MUF="1.0" PDF="91403" > PDF=91400 MemberID=3 </weight> +<weight id="1755" MUR="1.0" MUF="1.0" PDF="91404" > PDF=91400 MemberID=4 </weight> +<weight id="1756" MUR="1.0" MUF="1.0" PDF="91405" > PDF=91400 MemberID=5 </weight> +<weight id="1757" MUR="1.0" MUF="1.0" PDF="91406" > PDF=91400 MemberID=6 </weight> +<weight id="1758" MUR="1.0" MUF="1.0" PDF="91407" > PDF=91400 MemberID=7 </weight> +<weight id="1759" MUR="1.0" MUF="1.0" PDF="91408" > PDF=91400 MemberID=8 </weight> +<weight id="1760" MUR="1.0" MUF="1.0" PDF="91409" > PDF=91400 MemberID=9 </weight> +<weight id="1761" MUR="1.0" MUF="1.0" PDF="91410" > PDF=91400 MemberID=10 </weight> +<weight id="1762" MUR="1.0" MUF="1.0" PDF="91411" > PDF=91400 MemberID=11 </weight> +<weight id="1763" MUR="1.0" MUF="1.0" PDF="91412" > PDF=91400 MemberID=12 </weight> +<weight id="1764" MUR="1.0" MUF="1.0" PDF="91413" > PDF=91400 MemberID=13 </weight> +<weight id="1765" MUR="1.0" MUF="1.0" PDF="91414" > PDF=91400 MemberID=14 </weight> +<weight id="1766" MUR="1.0" MUF="1.0" PDF="91415" > PDF=91400 MemberID=15 </weight> +<weight id="1767" MUR="1.0" MUF="1.0" PDF="91416" > PDF=91400 MemberID=16 </weight> +<weight id="1768" MUR="1.0" MUF="1.0" PDF="91417" > PDF=91400 MemberID=17 </weight> +<weight id="1769" MUR="1.0" MUF="1.0" PDF="91418" > PDF=91400 MemberID=18 </weight> +<weight id="1770" MUR="1.0" MUF="1.0" PDF="91419" > PDF=91400 MemberID=19 </weight> +<weight id="1771" MUR="1.0" MUF="1.0" PDF="91420" > PDF=91400 MemberID=20 </weight> +<weight id="1772" MUR="1.0" MUF="1.0" PDF="91421" > PDF=91400 MemberID=21 </weight> +<weight id="1773" MUR="1.0" MUF="1.0" PDF="91422" > PDF=91400 MemberID=22 </weight> +<weight id="1774" MUR="1.0" MUF="1.0" PDF="91423" > PDF=91400 MemberID=23 </weight> +<weight id="1775" MUR="1.0" MUF="1.0" PDF="91424" > PDF=91400 MemberID=24 </weight> +<weight id="1776" MUR="1.0" MUF="1.0" PDF="91425" > PDF=91400 MemberID=25 </weight> +<weight id="1777" MUR="1.0" MUF="1.0" PDF="91426" > PDF=91400 MemberID=26 </weight> +<weight id="1778" MUR="1.0" MUF="1.0" PDF="91427" > PDF=91400 MemberID=27 </weight> +<weight id="1779" MUR="1.0" MUF="1.0" PDF="91428" > PDF=91400 MemberID=28 </weight> +<weight id="1780" MUR="1.0" MUF="1.0" PDF="91429" > PDF=91400 MemberID=29 </weight> +<weight id="1781" MUR="1.0" MUF="1.0" PDF="91430" > PDF=91400 MemberID=30 </weight> +<weight id="1782" MUR="1.0" MUF="1.0" PDF="91431" > PDF=91400 MemberID=31 </weight> +<weight id="1783" MUR="1.0" MUF="1.0" PDF="91432" > PDF=91400 MemberID=32 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NLO_EIG" combine="hessian"> # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. +<weight id="1784" MUR="1.0" MUF="1.0" PDF="61100" > PDF=61100 MemberID=0 </weight> +<weight id="1785" MUR="1.0" MUF="1.0" PDF="61101" > PDF=61100 MemberID=1 </weight> +<weight id="1786" MUR="1.0" MUF="1.0" PDF="61102" > PDF=61100 MemberID=2 </weight> +<weight id="1787" MUR="1.0" MUF="1.0" PDF="61103" > PDF=61100 MemberID=3 </weight> +<weight id="1788" MUR="1.0" MUF="1.0" PDF="61104" > PDF=61100 MemberID=4 </weight> +<weight id="1789" MUR="1.0" MUF="1.0" PDF="61105" > PDF=61100 MemberID=5 </weight> +<weight id="1790" MUR="1.0" MUF="1.0" PDF="61106" > PDF=61100 MemberID=6 </weight> +<weight id="1791" MUR="1.0" MUF="1.0" PDF="61107" > PDF=61100 MemberID=7 </weight> +<weight id="1792" MUR="1.0" MUF="1.0" PDF="61108" > PDF=61100 MemberID=8 </weight> +<weight id="1793" MUR="1.0" MUF="1.0" PDF="61109" > PDF=61100 MemberID=9 </weight> +<weight id="1794" MUR="1.0" MUF="1.0" PDF="61110" > PDF=61100 MemberID=10 </weight> +<weight id="1795" MUR="1.0" MUF="1.0" PDF="61111" > PDF=61100 MemberID=11 </weight> +<weight id="1796" MUR="1.0" MUF="1.0" PDF="61112" > PDF=61100 MemberID=12 </weight> +<weight id="1797" MUR="1.0" MUF="1.0" PDF="61113" > PDF=61100 MemberID=13 </weight> +<weight id="1798" MUR="1.0" MUF="1.0" PDF="61114" > PDF=61100 MemberID=14 </weight> +<weight id="1799" MUR="1.0" MUF="1.0" PDF="61115" > PDF=61100 MemberID=15 </weight> +<weight id="1800" MUR="1.0" MUF="1.0" PDF="61116" > PDF=61100 MemberID=16 </weight> +<weight id="1801" MUR="1.0" MUF="1.0" PDF="61117" > PDF=61100 MemberID=17 </weight> +<weight id="1802" MUR="1.0" MUF="1.0" PDF="61118" > PDF=61100 MemberID=18 </weight> +<weight id="1803" MUR="1.0" MUF="1.0" PDF="61119" > PDF=61100 MemberID=19 </weight> +<weight id="1804" MUR="1.0" MUF="1.0" PDF="61120" > PDF=61100 MemberID=20 </weight> +<weight id="1805" MUR="1.0" MUF="1.0" PDF="61121" > PDF=61100 MemberID=21 </weight> +<weight id="1806" MUR="1.0" MUF="1.0" PDF="61122" > PDF=61100 MemberID=22 </weight> +<weight id="1807" MUR="1.0" MUF="1.0" PDF="61123" > PDF=61100 MemberID=23 </weight> +<weight id="1808" MUR="1.0" MUF="1.0" PDF="61124" > PDF=61100 MemberID=24 </weight> +<weight id="1809" MUR="1.0" MUF="1.0" PDF="61125" > PDF=61100 MemberID=25 </weight> +<weight id="1810" MUR="1.0" MUF="1.0" PDF="61126" > PDF=61100 MemberID=26 </weight> +<weight id="1811" MUR="1.0" MUF="1.0" PDF="61127" > PDF=61100 MemberID=27 </weight> +<weight id="1812" MUR="1.0" MUF="1.0" PDF="61128" > PDF=61100 MemberID=28 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NLO_VAR" combine="custom"> # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); +<weight id="1813" MUR="1.0" MUF="1.0" PDF="61130" > PDF=61130 MemberID=0 </weight> +<weight id="1814" MUR="1.0" MUF="1.0" PDF="61131" > PDF=61130 MemberID=1 </weight> +<weight id="1815" MUR="1.0" MUF="1.0" PDF="61132" > PDF=61130 MemberID=2 </weight> +<weight id="1816" MUR="1.0" MUF="1.0" PDF="61133" > PDF=61130 MemberID=3 </weight> +<weight id="1817" MUR="1.0" MUF="1.0" PDF="61134" > PDF=61130 MemberID=4 </weight> +<weight id="1818" MUR="1.0" MUF="1.0" PDF="61135" > PDF=61130 MemberID=5 </weight> +<weight id="1819" MUR="1.0" MUF="1.0" PDF="61136" > PDF=61130 MemberID=6 </weight> +<weight id="1820" MUR="1.0" MUF="1.0" PDF="61137" > PDF=61130 MemberID=7 </weight> +<weight id="1821" MUR="1.0" MUF="1.0" PDF="61138" > PDF=61130 MemberID=8 </weight> +<weight id="1822" MUR="1.0" MUF="1.0" PDF="61139" > PDF=61130 MemberID=9 </weight> +<weight id="1823" MUR="1.0" MUF="1.0" PDF="61140" > PDF=61130 MemberID=10 </weight> +<weight id="1824" MUR="1.0" MUF="1.0" PDF="61141" > PDF=61130 MemberID=11 </weight> +<weight id="1825" MUR="1.0" MUF="1.0" PDF="61142" > PDF=61130 MemberID=12 </weight> +<weight id="1826" MUR="1.0" MUF="1.0" PDF="61143" > PDF=61130 MemberID=13 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NNLO_EIG" combine="hessian"> # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. +<weight id="1827" MUR="1.0" MUF="1.0" PDF="61200" > PDF=61200 MemberID=0 </weight> +<weight id="1828" MUR="1.0" MUF="1.0" PDF="61201" > PDF=61200 MemberID=1 </weight> +<weight id="1829" MUR="1.0" MUF="1.0" PDF="61202" > PDF=61200 MemberID=2 </weight> +<weight id="1830" MUR="1.0" MUF="1.0" PDF="61203" > PDF=61200 MemberID=3 </weight> +<weight id="1831" MUR="1.0" MUF="1.0" PDF="61204" > PDF=61200 MemberID=4 </weight> +<weight id="1832" MUR="1.0" MUF="1.0" PDF="61205" > PDF=61200 MemberID=5 </weight> +<weight id="1833" MUR="1.0" MUF="1.0" PDF="61206" > PDF=61200 MemberID=6 </weight> +<weight id="1834" MUR="1.0" MUF="1.0" PDF="61207" > PDF=61200 MemberID=7 </weight> +<weight id="1835" MUR="1.0" MUF="1.0" PDF="61208" > PDF=61200 MemberID=8 </weight> +<weight id="1836" MUR="1.0" MUF="1.0" PDF="61209" > PDF=61200 MemberID=9 </weight> +<weight id="1837" MUR="1.0" MUF="1.0" PDF="61210" > PDF=61200 MemberID=10 </weight> +<weight id="1838" MUR="1.0" MUF="1.0" PDF="61211" > PDF=61200 MemberID=11 </weight> +<weight id="1839" MUR="1.0" MUF="1.0" PDF="61212" > PDF=61200 MemberID=12 </weight> +<weight id="1840" MUR="1.0" MUF="1.0" PDF="61213" > PDF=61200 MemberID=13 </weight> +<weight id="1841" MUR="1.0" MUF="1.0" PDF="61214" > PDF=61200 MemberID=14 </weight> +<weight id="1842" MUR="1.0" MUF="1.0" PDF="61215" > PDF=61200 MemberID=15 </weight> +<weight id="1843" MUR="1.0" MUF="1.0" PDF="61216" > PDF=61200 MemberID=16 </weight> +<weight id="1844" MUR="1.0" MUF="1.0" PDF="61217" > PDF=61200 MemberID=17 </weight> +<weight id="1845" MUR="1.0" MUF="1.0" PDF="61218" > PDF=61200 MemberID=18 </weight> +<weight id="1846" MUR="1.0" MUF="1.0" PDF="61219" > PDF=61200 MemberID=19 </weight> +<weight id="1847" MUR="1.0" MUF="1.0" PDF="61220" > PDF=61200 MemberID=20 </weight> +<weight id="1848" MUR="1.0" MUF="1.0" PDF="61221" > PDF=61200 MemberID=21 </weight> +<weight id="1849" MUR="1.0" MUF="1.0" PDF="61222" > PDF=61200 MemberID=22 </weight> +<weight id="1850" MUR="1.0" MUF="1.0" PDF="61223" > PDF=61200 MemberID=23 </weight> +<weight id="1851" MUR="1.0" MUF="1.0" PDF="61224" > PDF=61200 MemberID=24 </weight> +<weight id="1852" MUR="1.0" MUF="1.0" PDF="61225" > PDF=61200 MemberID=25 </weight> +<weight id="1853" MUR="1.0" MUF="1.0" PDF="61226" > PDF=61200 MemberID=26 </weight> +<weight id="1854" MUR="1.0" MUF="1.0" PDF="61227" > PDF=61200 MemberID=27 </weight> +<weight id="1855" MUR="1.0" MUF="1.0" PDF="61228" > PDF=61200 MemberID=28 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NNLO_VAR" combine="custom"> # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); +<weight id="1856" MUR="1.0" MUF="1.0" PDF="61230" > PDF=61230 MemberID=0 </weight> +<weight id="1857" MUR="1.0" MUF="1.0" PDF="61231" > PDF=61230 MemberID=1 </weight> +<weight id="1858" MUR="1.0" MUF="1.0" PDF="61232" > PDF=61230 MemberID=2 </weight> +<weight id="1859" MUR="1.0" MUF="1.0" PDF="61233" > PDF=61230 MemberID=3 </weight> +<weight id="1860" MUR="1.0" MUF="1.0" PDF="61234" > PDF=61230 MemberID=4 </weight> +<weight id="1861" MUR="1.0" MUF="1.0" PDF="61235" > PDF=61230 MemberID=5 </weight> +<weight id="1862" MUR="1.0" MUF="1.0" PDF="61236" > PDF=61230 MemberID=6 </weight> +<weight id="1863" MUR="1.0" MUF="1.0" PDF="61237" > PDF=61230 MemberID=7 </weight> +<weight id="1864" MUR="1.0" MUF="1.0" PDF="61238" > PDF=61230 MemberID=8 </weight> +<weight id="1865" MUR="1.0" MUF="1.0" PDF="61239" > PDF=61230 MemberID=9 </weight> +<weight id="1866" MUR="1.0" MUF="1.0" PDF="61240" > PDF=61230 MemberID=10 </weight> +<weight id="1867" MUR="1.0" MUF="1.0" PDF="61241" > PDF=61230 MemberID=11 </weight> +<weight id="1868" MUR="1.0" MUF="1.0" PDF="61242" > PDF=61230 MemberID=12 </weight> +<weight id="1869" MUR="1.0" MUF="1.0" PDF="61243" > PDF=61230 MemberID=13 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="CT14qed_inc_proton" combine="unknown"> # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference +<weight id="1870" MUR="1.0" MUF="1.0" PDF="13400" > PDF=13400 MemberID=0 </weight> +<weight id="1871" MUR="1.0" MUF="1.0" PDF="13401" > PDF=13400 MemberID=1 </weight> +<weight id="1872" MUR="1.0" MUF="1.0" PDF="13402" > PDF=13400 MemberID=2 </weight> +<weight id="1873" MUR="1.0" MUF="1.0" PDF="13403" > PDF=13400 MemberID=3 </weight> +<weight id="1874" MUR="1.0" MUF="1.0" PDF="13404" > PDF=13400 MemberID=4 </weight> +<weight id="1875" MUR="1.0" MUF="1.0" PDF="13405" > PDF=13400 MemberID=5 </weight> +<weight id="1876" MUR="1.0" MUF="1.0" PDF="13406" > PDF=13400 MemberID=6 </weight> +<weight id="1877" MUR="1.0" MUF="1.0" PDF="13407" > PDF=13400 MemberID=7 </weight> +<weight id="1878" MUR="1.0" MUF="1.0" PDF="13408" > PDF=13400 MemberID=8 </weight> +<weight id="1879" MUR="1.0" MUF="1.0" PDF="13409" > PDF=13400 MemberID=9 </weight> +<weight id="1880" MUR="1.0" MUF="1.0" PDF="13410" > PDF=13400 MemberID=10 </weight> +<weight id="1881" MUR="1.0" MUF="1.0" PDF="13411" > PDF=13400 MemberID=11 </weight> +<weight id="1882" MUR="1.0" MUF="1.0" PDF="13412" > PDF=13400 MemberID=12 </weight> +<weight id="1883" MUR="1.0" MUF="1.0" PDF="13413" > PDF=13400 MemberID=13 </weight> +<weight id="1884" MUR="1.0" MUF="1.0" PDF="13414" > PDF=13400 MemberID=14 </weight> +<weight id="1885" MUR="1.0" MUF="1.0" PDF="13415" > PDF=13400 MemberID=15 </weight> +<weight id="1886" MUR="1.0" MUF="1.0" PDF="13416" > PDF=13400 MemberID=16 </weight> +<weight id="1887" MUR="1.0" MUF="1.0" PDF="13417" > PDF=13400 MemberID=17 </weight> +<weight id="1888" MUR="1.0" MUF="1.0" PDF="13418" > PDF=13400 MemberID=18 </weight> +<weight id="1889" MUR="1.0" MUF="1.0" PDF="13419" > PDF=13400 MemberID=19 </weight> +<weight id="1890" MUR="1.0" MUF="1.0" PDF="13420" > PDF=13400 MemberID=20 </weight> +<weight id="1891" MUR="1.0" MUF="1.0" PDF="13421" > PDF=13400 MemberID=21 </weight> +<weight id="1892" MUR="1.0" MUF="1.0" PDF="13422" > PDF=13400 MemberID=22 </weight> +<weight id="1893" MUR="1.0" MUF="1.0" PDF="13423" > PDF=13400 MemberID=23 </weight> +<weight id="1894" MUR="1.0" MUF="1.0" PDF="13424" > PDF=13400 MemberID=24 </weight> +<weight id="1895" MUR="1.0" MUF="1.0" PDF="13425" > PDF=13400 MemberID=25 </weight> +<weight id="1896" MUR="1.0" MUF="1.0" PDF="13426" > PDF=13400 MemberID=26 </weight> +<weight id="1897" MUR="1.0" MUF="1.0" PDF="13427" > PDF=13400 MemberID=27 </weight> +<weight id="1898" MUR="1.0" MUF="1.0" PDF="13428" > PDF=13400 MemberID=28 </weight> +<weight id="1899" MUR="1.0" MUF="1.0" PDF="13429" > PDF=13400 MemberID=29 </weight> +<weight id="1900" MUR="1.0" MUF="1.0" PDF="13430" > PDF=13400 MemberID=30 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="LUXqed17_plus_PDF4LHC15_nnlo_100" combine="symmhessian"> # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. +PDF4LHC15_nnlo_100 description: + PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 + ; PDF symmetric eigenvectors +LUXqed description: + Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P + fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. + Photon generated at scale 100.0 GeV, other partons matched at scale + 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - + 0.00699 * x^{0.000} g(x) at scale 10.0 GeV +Members: + 0 is central + 1-100 map to original PDF members + 101 replacement of CLAS resonance fit with Christy-Bosted fit + 102 rescale-R-0.5 + 103 rescale R in high-Q^2 region with a higher-twist component + 104 use the A1 elastic fit result without the two-photon exchange corrections + 105 use the lower edge of the elastic fit error band + 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 + 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) +Versioning info: + DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) +LUXqed version history for this PDF: + This version corresponds to the long LUXqed17 paper. +<weight id="1901" MUR="1.0" MUF="1.0" PDF="82200" > PDF=82200 MemberID=0 </weight> +<weight id="1902" MUR="1.0" MUF="1.0" PDF="82201" > PDF=82200 MemberID=1 </weight> +<weight id="1903" MUR="1.0" MUF="1.0" PDF="82202" > PDF=82200 MemberID=2 </weight> +<weight id="1904" MUR="1.0" MUF="1.0" PDF="82203" > PDF=82200 MemberID=3 </weight> +<weight id="1905" MUR="1.0" MUF="1.0" PDF="82204" > PDF=82200 MemberID=4 </weight> +<weight id="1906" MUR="1.0" MUF="1.0" PDF="82205" > PDF=82200 MemberID=5 </weight> +<weight id="1907" MUR="1.0" MUF="1.0" PDF="82206" > PDF=82200 MemberID=6 </weight> +<weight id="1908" MUR="1.0" MUF="1.0" PDF="82207" > PDF=82200 MemberID=7 </weight> +<weight id="1909" MUR="1.0" MUF="1.0" PDF="82208" > PDF=82200 MemberID=8 </weight> +<weight id="1910" MUR="1.0" MUF="1.0" PDF="82209" > PDF=82200 MemberID=9 </weight> +<weight id="1911" MUR="1.0" MUF="1.0" PDF="82210" > PDF=82200 MemberID=10 </weight> +<weight id="1912" MUR="1.0" MUF="1.0" PDF="82211" > PDF=82200 MemberID=11 </weight> +<weight id="1913" MUR="1.0" MUF="1.0" PDF="82212" > PDF=82200 MemberID=12 </weight> +<weight id="1914" MUR="1.0" MUF="1.0" PDF="82213" > PDF=82200 MemberID=13 </weight> +<weight id="1915" MUR="1.0" MUF="1.0" PDF="82214" > PDF=82200 MemberID=14 </weight> +<weight id="1916" MUR="1.0" MUF="1.0" PDF="82215" > PDF=82200 MemberID=15 </weight> +<weight id="1917" MUR="1.0" MUF="1.0" PDF="82216" > PDF=82200 MemberID=16 </weight> +<weight id="1918" MUR="1.0" MUF="1.0" PDF="82217" > PDF=82200 MemberID=17 </weight> +<weight id="1919" MUR="1.0" MUF="1.0" PDF="82218" > PDF=82200 MemberID=18 </weight> +<weight id="1920" MUR="1.0" MUF="1.0" PDF="82219" > PDF=82200 MemberID=19 </weight> +<weight id="1921" MUR="1.0" MUF="1.0" PDF="82220" > PDF=82200 MemberID=20 </weight> +<weight id="1922" MUR="1.0" MUF="1.0" PDF="82221" > PDF=82200 MemberID=21 </weight> +<weight id="1923" MUR="1.0" MUF="1.0" PDF="82222" > PDF=82200 MemberID=22 </weight> +<weight id="1924" MUR="1.0" MUF="1.0" PDF="82223" > PDF=82200 MemberID=23 </weight> +<weight id="1925" MUR="1.0" MUF="1.0" PDF="82224" > PDF=82200 MemberID=24 </weight> +<weight id="1926" MUR="1.0" MUF="1.0" PDF="82225" > PDF=82200 MemberID=25 </weight> +<weight id="1927" MUR="1.0" MUF="1.0" PDF="82226" > PDF=82200 MemberID=26 </weight> +<weight id="1928" MUR="1.0" MUF="1.0" PDF="82227" > PDF=82200 MemberID=27 </weight> +<weight id="1929" MUR="1.0" MUF="1.0" PDF="82228" > PDF=82200 MemberID=28 </weight> +<weight id="1930" MUR="1.0" MUF="1.0" PDF="82229" > PDF=82200 MemberID=29 </weight> +<weight id="1931" MUR="1.0" MUF="1.0" PDF="82230" > PDF=82200 MemberID=30 </weight> +<weight id="1932" MUR="1.0" MUF="1.0" PDF="82231" > PDF=82200 MemberID=31 </weight> +<weight id="1933" MUR="1.0" MUF="1.0" PDF="82232" > PDF=82200 MemberID=32 </weight> +<weight id="1934" MUR="1.0" MUF="1.0" PDF="82233" > PDF=82200 MemberID=33 </weight> +<weight id="1935" MUR="1.0" MUF="1.0" PDF="82234" > PDF=82200 MemberID=34 </weight> +<weight id="1936" MUR="1.0" MUF="1.0" PDF="82235" > PDF=82200 MemberID=35 </weight> +<weight id="1937" MUR="1.0" MUF="1.0" PDF="82236" > PDF=82200 MemberID=36 </weight> +<weight id="1938" MUR="1.0" MUF="1.0" PDF="82237" > PDF=82200 MemberID=37 </weight> +<weight id="1939" MUR="1.0" MUF="1.0" PDF="82238" > PDF=82200 MemberID=38 </weight> +<weight id="1940" MUR="1.0" MUF="1.0" PDF="82239" > PDF=82200 MemberID=39 </weight> +<weight id="1941" MUR="1.0" MUF="1.0" PDF="82240" > PDF=82200 MemberID=40 </weight> +<weight id="1942" MUR="1.0" MUF="1.0" PDF="82241" > PDF=82200 MemberID=41 </weight> +<weight id="1943" MUR="1.0" MUF="1.0" PDF="82242" > PDF=82200 MemberID=42 </weight> +<weight id="1944" MUR="1.0" MUF="1.0" PDF="82243" > PDF=82200 MemberID=43 </weight> +<weight id="1945" MUR="1.0" MUF="1.0" PDF="82244" > PDF=82200 MemberID=44 </weight> +<weight id="1946" MUR="1.0" MUF="1.0" PDF="82245" > PDF=82200 MemberID=45 </weight> +<weight id="1947" MUR="1.0" MUF="1.0" PDF="82246" > PDF=82200 MemberID=46 </weight> +<weight id="1948" MUR="1.0" MUF="1.0" PDF="82247" > PDF=82200 MemberID=47 </weight> +<weight id="1949" MUR="1.0" MUF="1.0" PDF="82248" > PDF=82200 MemberID=48 </weight> +<weight id="1950" MUR="1.0" MUF="1.0" PDF="82249" > PDF=82200 MemberID=49 </weight> +<weight id="1951" MUR="1.0" MUF="1.0" PDF="82250" > PDF=82200 MemberID=50 </weight> +<weight id="1952" MUR="1.0" MUF="1.0" PDF="82251" > PDF=82200 MemberID=51 </weight> +<weight id="1953" MUR="1.0" MUF="1.0" PDF="82252" > PDF=82200 MemberID=52 </weight> +<weight id="1954" MUR="1.0" MUF="1.0" PDF="82253" > PDF=82200 MemberID=53 </weight> +<weight id="1955" MUR="1.0" MUF="1.0" PDF="82254" > PDF=82200 MemberID=54 </weight> +<weight id="1956" MUR="1.0" MUF="1.0" PDF="82255" > PDF=82200 MemberID=55 </weight> +<weight id="1957" MUR="1.0" MUF="1.0" PDF="82256" > PDF=82200 MemberID=56 </weight> +<weight id="1958" MUR="1.0" MUF="1.0" PDF="82257" > PDF=82200 MemberID=57 </weight> +<weight id="1959" MUR="1.0" MUF="1.0" PDF="82258" > PDF=82200 MemberID=58 </weight> +<weight id="1960" MUR="1.0" MUF="1.0" PDF="82259" > PDF=82200 MemberID=59 </weight> +<weight id="1961" MUR="1.0" MUF="1.0" PDF="82260" > PDF=82200 MemberID=60 </weight> +<weight id="1962" MUR="1.0" MUF="1.0" PDF="82261" > PDF=82200 MemberID=61 </weight> +<weight id="1963" MUR="1.0" MUF="1.0" PDF="82262" > PDF=82200 MemberID=62 </weight> +<weight id="1964" MUR="1.0" MUF="1.0" PDF="82263" > PDF=82200 MemberID=63 </weight> +<weight id="1965" MUR="1.0" MUF="1.0" PDF="82264" > PDF=82200 MemberID=64 </weight> +<weight id="1966" MUR="1.0" MUF="1.0" PDF="82265" > PDF=82200 MemberID=65 </weight> +<weight id="1967" MUR="1.0" MUF="1.0" PDF="82266" > PDF=82200 MemberID=66 </weight> +<weight id="1968" MUR="1.0" MUF="1.0" PDF="82267" > PDF=82200 MemberID=67 </weight> +<weight id="1969" MUR="1.0" MUF="1.0" PDF="82268" > PDF=82200 MemberID=68 </weight> +<weight id="1970" MUR="1.0" MUF="1.0" PDF="82269" > PDF=82200 MemberID=69 </weight> +<weight id="1971" MUR="1.0" MUF="1.0" PDF="82270" > PDF=82200 MemberID=70 </weight> +<weight id="1972" MUR="1.0" MUF="1.0" PDF="82271" > PDF=82200 MemberID=71 </weight> +<weight id="1973" MUR="1.0" MUF="1.0" PDF="82272" > PDF=82200 MemberID=72 </weight> +<weight id="1974" MUR="1.0" MUF="1.0" PDF="82273" > PDF=82200 MemberID=73 </weight> +<weight id="1975" MUR="1.0" MUF="1.0" PDF="82274" > PDF=82200 MemberID=74 </weight> +<weight id="1976" MUR="1.0" MUF="1.0" PDF="82275" > PDF=82200 MemberID=75 </weight> +<weight id="1977" MUR="1.0" MUF="1.0" PDF="82276" > PDF=82200 MemberID=76 </weight> +<weight id="1978" MUR="1.0" MUF="1.0" PDF="82277" > PDF=82200 MemberID=77 </weight> +<weight id="1979" MUR="1.0" MUF="1.0" PDF="82278" > PDF=82200 MemberID=78 </weight> +<weight id="1980" MUR="1.0" MUF="1.0" PDF="82279" > PDF=82200 MemberID=79 </weight> +<weight id="1981" MUR="1.0" MUF="1.0" PDF="82280" > PDF=82200 MemberID=80 </weight> +<weight id="1982" MUR="1.0" MUF="1.0" PDF="82281" > PDF=82200 MemberID=81 </weight> +<weight id="1983" MUR="1.0" MUF="1.0" PDF="82282" > PDF=82200 MemberID=82 </weight> +<weight id="1984" MUR="1.0" MUF="1.0" PDF="82283" > PDF=82200 MemberID=83 </weight> +<weight id="1985" MUR="1.0" MUF="1.0" PDF="82284" > PDF=82200 MemberID=84 </weight> +<weight id="1986" MUR="1.0" MUF="1.0" PDF="82285" > PDF=82200 MemberID=85 </weight> +<weight id="1987" MUR="1.0" MUF="1.0" PDF="82286" > PDF=82200 MemberID=86 </weight> +<weight id="1988" MUR="1.0" MUF="1.0" PDF="82287" > PDF=82200 MemberID=87 </weight> +<weight id="1989" MUR="1.0" MUF="1.0" PDF="82288" > PDF=82200 MemberID=88 </weight> +<weight id="1990" MUR="1.0" MUF="1.0" PDF="82289" > PDF=82200 MemberID=89 </weight> +<weight id="1991" MUR="1.0" MUF="1.0" PDF="82290" > PDF=82200 MemberID=90 </weight> +<weight id="1992" MUR="1.0" MUF="1.0" PDF="82291" > PDF=82200 MemberID=91 </weight> +<weight id="1993" MUR="1.0" MUF="1.0" PDF="82292" > PDF=82200 MemberID=92 </weight> +<weight id="1994" MUR="1.0" MUF="1.0" PDF="82293" > PDF=82200 MemberID=93 </weight> +<weight id="1995" MUR="1.0" MUF="1.0" PDF="82294" > PDF=82200 MemberID=94 </weight> +<weight id="1996" MUR="1.0" MUF="1.0" PDF="82295" > PDF=82200 MemberID=95 </weight> +<weight id="1997" MUR="1.0" MUF="1.0" PDF="82296" > PDF=82200 MemberID=96 </weight> +<weight id="1998" MUR="1.0" MUF="1.0" PDF="82297" > PDF=82200 MemberID=97 </weight> +<weight id="1999" MUR="1.0" MUF="1.0" PDF="82298" > PDF=82200 MemberID=98 </weight> +<weight id="2000" MUR="1.0" MUF="1.0" PDF="82299" > PDF=82200 MemberID=99 </weight> +<weight id="2001" MUR="1.0" MUF="1.0" PDF="82300" > PDF=82200 MemberID=100 </weight> +<weight id="2002" MUR="1.0" MUF="1.0" PDF="82301" > PDF=82200 MemberID=101 </weight> +<weight id="2003" MUR="1.0" MUF="1.0" PDF="82302" > PDF=82200 MemberID=102 </weight> +<weight id="2004" MUR="1.0" MUF="1.0" PDF="82303" > PDF=82200 MemberID=103 </weight> +<weight id="2005" MUR="1.0" MUF="1.0" PDF="82304" > PDF=82200 MemberID=104 </weight> +<weight id="2006" MUR="1.0" MUF="1.0" PDF="82305" > PDF=82200 MemberID=105 </weight> +<weight id="2007" MUR="1.0" MUF="1.0" PDF="82306" > PDF=82200 MemberID=106 </weight> +<weight id="2008" MUR="1.0" MUF="1.0" PDF="82307" > PDF=82200 MemberID=107 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="NNPDF30_nlo_nf_5_pdfas" combine="replicas+as"> # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 +<weight id="2009" MUR="1.0" MUF="1.0" PDF="292200" > PDF=292200 MemberID=0 </weight> +<weight id="2010" MUR="1.0" MUF="1.0" PDF="292201" > PDF=292200 MemberID=1 </weight> +<weight id="2011" MUR="1.0" MUF="1.0" PDF="292202" > PDF=292200 MemberID=2 </weight> +<weight id="2012" MUR="1.0" MUF="1.0" PDF="292203" > PDF=292200 MemberID=3 </weight> +<weight id="2013" MUR="1.0" MUF="1.0" PDF="292204" > PDF=292200 MemberID=4 </weight> +<weight id="2014" MUR="1.0" MUF="1.0" PDF="292205" > PDF=292200 MemberID=5 </weight> +<weight id="2015" MUR="1.0" MUF="1.0" PDF="292206" > PDF=292200 MemberID=6 </weight> +<weight id="2016" MUR="1.0" MUF="1.0" PDF="292207" > PDF=292200 MemberID=7 </weight> +<weight id="2017" MUR="1.0" MUF="1.0" PDF="292208" > PDF=292200 MemberID=8 </weight> +<weight id="2018" MUR="1.0" MUF="1.0" PDF="292209" > PDF=292200 MemberID=9 </weight> +<weight id="2019" MUR="1.0" MUF="1.0" PDF="292210" > PDF=292200 MemberID=10 </weight> +<weight id="2020" MUR="1.0" MUF="1.0" PDF="292211" > PDF=292200 MemberID=11 </weight> +<weight id="2021" MUR="1.0" MUF="1.0" PDF="292212" > PDF=292200 MemberID=12 </weight> +<weight id="2022" MUR="1.0" MUF="1.0" PDF="292213" > PDF=292200 MemberID=13 </weight> +<weight id="2023" MUR="1.0" MUF="1.0" PDF="292214" > PDF=292200 MemberID=14 </weight> +<weight id="2024" MUR="1.0" MUF="1.0" PDF="292215" > PDF=292200 MemberID=15 </weight> +<weight id="2025" MUR="1.0" MUF="1.0" PDF="292216" > PDF=292200 MemberID=16 </weight> +<weight id="2026" MUR="1.0" MUF="1.0" PDF="292217" > PDF=292200 MemberID=17 </weight> +<weight id="2027" MUR="1.0" MUF="1.0" PDF="292218" > PDF=292200 MemberID=18 </weight> +<weight id="2028" MUR="1.0" MUF="1.0" PDF="292219" > PDF=292200 MemberID=19 </weight> +<weight id="2029" MUR="1.0" MUF="1.0" PDF="292220" > PDF=292200 MemberID=20 </weight> +<weight id="2030" MUR="1.0" MUF="1.0" PDF="292221" > PDF=292200 MemberID=21 </weight> +<weight id="2031" MUR="1.0" MUF="1.0" PDF="292222" > PDF=292200 MemberID=22 </weight> +<weight id="2032" MUR="1.0" MUF="1.0" PDF="292223" > PDF=292200 MemberID=23 </weight> +<weight id="2033" MUR="1.0" MUF="1.0" PDF="292224" > PDF=292200 MemberID=24 </weight> +<weight id="2034" MUR="1.0" MUF="1.0" PDF="292225" > PDF=292200 MemberID=25 </weight> +<weight id="2035" MUR="1.0" MUF="1.0" PDF="292226" > PDF=292200 MemberID=26 </weight> +<weight id="2036" MUR="1.0" MUF="1.0" PDF="292227" > PDF=292200 MemberID=27 </weight> +<weight id="2037" MUR="1.0" MUF="1.0" PDF="292228" > PDF=292200 MemberID=28 </weight> +<weight id="2038" MUR="1.0" MUF="1.0" PDF="292229" > PDF=292200 MemberID=29 </weight> +<weight id="2039" MUR="1.0" MUF="1.0" PDF="292230" > PDF=292200 MemberID=30 </weight> +<weight id="2040" MUR="1.0" MUF="1.0" PDF="292231" > PDF=292200 MemberID=31 </weight> +<weight id="2041" MUR="1.0" MUF="1.0" PDF="292232" > PDF=292200 MemberID=32 </weight> +<weight id="2042" MUR="1.0" MUF="1.0" PDF="292233" > PDF=292200 MemberID=33 </weight> +<weight id="2043" MUR="1.0" MUF="1.0" PDF="292234" > PDF=292200 MemberID=34 </weight> +<weight id="2044" MUR="1.0" MUF="1.0" PDF="292235" > PDF=292200 MemberID=35 </weight> +<weight id="2045" MUR="1.0" MUF="1.0" PDF="292236" > PDF=292200 MemberID=36 </weight> +<weight id="2046" MUR="1.0" MUF="1.0" PDF="292237" > PDF=292200 MemberID=37 </weight> +<weight id="2047" MUR="1.0" MUF="1.0" PDF="292238" > PDF=292200 MemberID=38 </weight> +<weight id="2048" MUR="1.0" MUF="1.0" PDF="292239" > PDF=292200 MemberID=39 </weight> +<weight id="2049" MUR="1.0" MUF="1.0" PDF="292240" > PDF=292200 MemberID=40 </weight> +<weight id="2050" MUR="1.0" MUF="1.0" PDF="292241" > PDF=292200 MemberID=41 </weight> +<weight id="2051" MUR="1.0" MUF="1.0" PDF="292242" > PDF=292200 MemberID=42 </weight> +<weight id="2052" MUR="1.0" MUF="1.0" PDF="292243" > PDF=292200 MemberID=43 </weight> +<weight id="2053" MUR="1.0" MUF="1.0" PDF="292244" > PDF=292200 MemberID=44 </weight> +<weight id="2054" MUR="1.0" MUF="1.0" PDF="292245" > PDF=292200 MemberID=45 </weight> +<weight id="2055" MUR="1.0" MUF="1.0" PDF="292246" > PDF=292200 MemberID=46 </weight> +<weight id="2056" MUR="1.0" MUF="1.0" PDF="292247" > PDF=292200 MemberID=47 </weight> +<weight id="2057" MUR="1.0" MUF="1.0" PDF="292248" > PDF=292200 MemberID=48 </weight> +<weight id="2058" MUR="1.0" MUF="1.0" PDF="292249" > PDF=292200 MemberID=49 </weight> +<weight id="2059" MUR="1.0" MUF="1.0" PDF="292250" > PDF=292200 MemberID=50 </weight> +<weight id="2060" MUR="1.0" MUF="1.0" PDF="292251" > PDF=292200 MemberID=51 </weight> +<weight id="2061" MUR="1.0" MUF="1.0" PDF="292252" > PDF=292200 MemberID=52 </weight> +<weight id="2062" MUR="1.0" MUF="1.0" PDF="292253" > PDF=292200 MemberID=53 </weight> +<weight id="2063" MUR="1.0" MUF="1.0" PDF="292254" > PDF=292200 MemberID=54 </weight> +<weight id="2064" MUR="1.0" MUF="1.0" PDF="292255" > PDF=292200 MemberID=55 </weight> +<weight id="2065" MUR="1.0" MUF="1.0" PDF="292256" > PDF=292200 MemberID=56 </weight> +<weight id="2066" MUR="1.0" MUF="1.0" PDF="292257" > PDF=292200 MemberID=57 </weight> +<weight id="2067" MUR="1.0" MUF="1.0" PDF="292258" > PDF=292200 MemberID=58 </weight> +<weight id="2068" MUR="1.0" MUF="1.0" PDF="292259" > PDF=292200 MemberID=59 </weight> +<weight id="2069" MUR="1.0" MUF="1.0" PDF="292260" > PDF=292200 MemberID=60 </weight> +<weight id="2070" MUR="1.0" MUF="1.0" PDF="292261" > PDF=292200 MemberID=61 </weight> +<weight id="2071" MUR="1.0" MUF="1.0" PDF="292262" > PDF=292200 MemberID=62 </weight> +<weight id="2072" MUR="1.0" MUF="1.0" PDF="292263" > PDF=292200 MemberID=63 </weight> +<weight id="2073" MUR="1.0" MUF="1.0" PDF="292264" > PDF=292200 MemberID=64 </weight> +<weight id="2074" MUR="1.0" MUF="1.0" PDF="292265" > PDF=292200 MemberID=65 </weight> +<weight id="2075" MUR="1.0" MUF="1.0" PDF="292266" > PDF=292200 MemberID=66 </weight> +<weight id="2076" MUR="1.0" MUF="1.0" PDF="292267" > PDF=292200 MemberID=67 </weight> +<weight id="2077" MUR="1.0" MUF="1.0" PDF="292268" > PDF=292200 MemberID=68 </weight> +<weight id="2078" MUR="1.0" MUF="1.0" PDF="292269" > PDF=292200 MemberID=69 </weight> +<weight id="2079" MUR="1.0" MUF="1.0" PDF="292270" > PDF=292200 MemberID=70 </weight> +<weight id="2080" MUR="1.0" MUF="1.0" PDF="292271" > PDF=292200 MemberID=71 </weight> +<weight id="2081" MUR="1.0" MUF="1.0" PDF="292272" > PDF=292200 MemberID=72 </weight> +<weight id="2082" MUR="1.0" MUF="1.0" PDF="292273" > PDF=292200 MemberID=73 </weight> +<weight id="2083" MUR="1.0" MUF="1.0" PDF="292274" > PDF=292200 MemberID=74 </weight> +<weight id="2084" MUR="1.0" MUF="1.0" PDF="292275" > PDF=292200 MemberID=75 </weight> +<weight id="2085" MUR="1.0" MUF="1.0" PDF="292276" > PDF=292200 MemberID=76 </weight> +<weight id="2086" MUR="1.0" MUF="1.0" PDF="292277" > PDF=292200 MemberID=77 </weight> +<weight id="2087" MUR="1.0" MUF="1.0" PDF="292278" > PDF=292200 MemberID=78 </weight> +<weight id="2088" MUR="1.0" MUF="1.0" PDF="292279" > PDF=292200 MemberID=79 </weight> +<weight id="2089" MUR="1.0" MUF="1.0" PDF="292280" > PDF=292200 MemberID=80 </weight> +<weight id="2090" MUR="1.0" MUF="1.0" PDF="292281" > PDF=292200 MemberID=81 </weight> +<weight id="2091" MUR="1.0" MUF="1.0" PDF="292282" > PDF=292200 MemberID=82 </weight> +<weight id="2092" MUR="1.0" MUF="1.0" PDF="292283" > PDF=292200 MemberID=83 </weight> +<weight id="2093" MUR="1.0" MUF="1.0" PDF="292284" > PDF=292200 MemberID=84 </weight> +<weight id="2094" MUR="1.0" MUF="1.0" PDF="292285" > PDF=292200 MemberID=85 </weight> +<weight id="2095" MUR="1.0" MUF="1.0" PDF="292286" > PDF=292200 MemberID=86 </weight> +<weight id="2096" MUR="1.0" MUF="1.0" PDF="292287" > PDF=292200 MemberID=87 </weight> +<weight id="2097" MUR="1.0" MUF="1.0" PDF="292288" > PDF=292200 MemberID=88 </weight> +<weight id="2098" MUR="1.0" MUF="1.0" PDF="292289" > PDF=292200 MemberID=89 </weight> +<weight id="2099" MUR="1.0" MUF="1.0" PDF="292290" > PDF=292200 MemberID=90 </weight> +<weight id="2100" MUR="1.0" MUF="1.0" PDF="292291" > PDF=292200 MemberID=91 </weight> +<weight id="2101" MUR="1.0" MUF="1.0" PDF="292292" > PDF=292200 MemberID=92 </weight> +<weight id="2102" MUR="1.0" MUF="1.0" PDF="292293" > PDF=292200 MemberID=93 </weight> +<weight id="2103" MUR="1.0" MUF="1.0" PDF="292294" > PDF=292200 MemberID=94 </weight> +<weight id="2104" MUR="1.0" MUF="1.0" PDF="292295" > PDF=292200 MemberID=95 </weight> +<weight id="2105" MUR="1.0" MUF="1.0" PDF="292296" > PDF=292200 MemberID=96 </weight> +<weight id="2106" MUR="1.0" MUF="1.0" PDF="292297" > PDF=292200 MemberID=97 </weight> +<weight id="2107" MUR="1.0" MUF="1.0" PDF="292298" > PDF=292200 MemberID=98 </weight> +<weight id="2108" MUR="1.0" MUF="1.0" PDF="292299" > PDF=292200 MemberID=99 </weight> +<weight id="2109" MUR="1.0" MUF="1.0" PDF="292300" > PDF=292200 MemberID=100 </weight> +<weight id="2110" MUR="1.0" MUF="1.0" PDF="292301" > PDF=292200 MemberID=101 </weight> +<weight id="2111" MUR="1.0" MUF="1.0" PDF="292302" > PDF=292200 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="2112" MUR="1.0" MUF="1.0" PDF="292600" > PDF=292600 MemberID=0 </weight> +<weight id="2113" MUR="1.0" MUF="1.0" PDF="315000" > PDF=315000 MemberID=0 </weight> +<weight id="2114" MUR="1.0" MUF="1.0" PDF="315200" > PDF=315200 MemberID=0 </weight> +<weight id="2115" MUR="1.0" MUF="1.0" PDF="262000" > PDF=262000 MemberID=0 </weight> +<weight id="2116" MUR="1.0" MUF="1.0" PDF="263000" > PDF=263000 MemberID=0 </weight> + diff --git a/testFiles/WZVBS_private_weightInfo.txt b/testFiles/WZVBS_private_weightInfo.txt new file mode 100644 index 0000000000000..c3723d61f19b3 --- /dev/null +++ b/testFiles/WZVBS_private_weightInfo.txt @@ -0,0 +1,150 @@ +# ---> From file /afs/cern.ch/user/k/kelong/work/temp/testMG.root + + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + # scale + # 263400: NNPDF3.0 LO global fit, alphas(mb)=0.2544. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + + PDF=263400 MemberID=1 + PDF=263400 MemberID=2 + PDF=263400 MemberID=3 + PDF=263400 MemberID=4 + PDF=263400 MemberID=5 + PDF=263400 MemberID=6 + PDF=263400 MemberID=7 + PDF=263400 MemberID=8 + PDF=263400 MemberID=9 + PDF=263400 MemberID=10 + PDF=263400 MemberID=11 + PDF=263400 MemberID=12 + PDF=263400 MemberID=13 + PDF=263400 MemberID=14 + PDF=263400 MemberID=15 + PDF=263400 MemberID=16 + PDF=263400 MemberID=17 + PDF=263400 MemberID=18 + PDF=263400 MemberID=19 + PDF=263400 MemberID=20 + PDF=263400 MemberID=21 + PDF=263400 MemberID=22 + PDF=263400 MemberID=23 + PDF=263400 MemberID=24 + PDF=263400 MemberID=25 + PDF=263400 MemberID=26 + PDF=263400 MemberID=27 + PDF=263400 MemberID=28 + PDF=263400 MemberID=29 + PDF=263400 MemberID=30 + PDF=263400 MemberID=31 + PDF=263400 MemberID=32 + PDF=263400 MemberID=33 + PDF=263400 MemberID=34 + PDF=263400 MemberID=35 + PDF=263400 MemberID=36 + PDF=263400 MemberID=37 + PDF=263400 MemberID=38 + PDF=263400 MemberID=39 + PDF=263400 MemberID=40 + PDF=263400 MemberID=41 + PDF=263400 MemberID=42 + PDF=263400 MemberID=43 + PDF=263400 MemberID=44 + PDF=263400 MemberID=45 + PDF=263400 MemberID=46 + PDF=263400 MemberID=47 + PDF=263400 MemberID=48 + PDF=263400 MemberID=49 + PDF=263400 MemberID=50 + PDF=263400 MemberID=51 + PDF=263400 MemberID=52 + PDF=263400 MemberID=53 + PDF=263400 MemberID=54 + PDF=263400 MemberID=55 + PDF=263400 MemberID=56 + PDF=263400 MemberID=57 + PDF=263400 MemberID=58 + PDF=263400 MemberID=59 + PDF=263400 MemberID=60 + PDF=263400 MemberID=61 + PDF=263400 MemberID=62 + PDF=263400 MemberID=63 + PDF=263400 MemberID=64 + PDF=263400 MemberID=65 + PDF=263400 MemberID=66 + PDF=263400 MemberID=67 + PDF=263400 MemberID=68 + PDF=263400 MemberID=69 + PDF=263400 MemberID=70 + PDF=263400 MemberID=71 + PDF=263400 MemberID=72 + PDF=263400 MemberID=73 + PDF=263400 MemberID=74 + PDF=263400 MemberID=75 + PDF=263400 MemberID=76 + PDF=263400 MemberID=77 + PDF=263400 MemberID=78 + PDF=263400 MemberID=79 + PDF=263400 MemberID=80 + PDF=263400 MemberID=81 + PDF=263400 MemberID=82 + PDF=263400 MemberID=83 + PDF=263400 MemberID=84 + PDF=263400 MemberID=85 + PDF=263400 MemberID=86 + PDF=263400 MemberID=87 + PDF=263400 MemberID=88 + PDF=263400 MemberID=89 + PDF=263400 MemberID=90 + PDF=263400 MemberID=91 + PDF=263400 MemberID=92 + PDF=263400 MemberID=93 + PDF=263400 MemberID=94 + PDF=263400 MemberID=95 + PDF=263400 MemberID=96 + PDF=263400 MemberID=97 + PDF=263400 MemberID=98 + PDF=263400 MemberID=99 + PDF=263400 MemberID=100 + diff --git a/testFiles/ZJ_MiNNLO_weightinfo.txt b/testFiles/ZJ_MiNNLO_weightinfo.txt new file mode 100644 index 0000000000000..217e23d31862a --- /dev/null +++ b/testFiles/ZJ_MiNNLO_weightinfo.txt @@ -0,0 +1,735 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + diff --git a/testFiles/ZMiNNLO.txt b/testFiles/ZMiNNLO.txt new file mode 100644 index 0000000000000..217e23d31862a --- /dev/null +++ b/testFiles/ZMiNNLO.txt @@ -0,0 +1,735 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + diff --git a/testFiles/ZZTo4L_powheg_2016_weightInfo.txt b/testFiles/ZZTo4L_powheg_2016_weightInfo.txt new file mode 100644 index 0000000000000..a9f90131365a7 --- /dev/null +++ b/testFiles/ZZTo4L_powheg_2016_weightInfo.txt @@ -0,0 +1,227 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/ZZTo4L_13TeV_powheg_pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v1/270000/B84CB0F2-E2C6-E811-BC6F-001A649D4631.root + + muR=1 muF=1 + muR=1 muF=2 + muR=1 muF=0.5 + muR=2 muF=1 + muR=2 muF=2 + muR=2 muF=0.5 + muR=0.5 muF=1 + muR=0.5 muF=2 + muR=0.5 muF=0.5 + + + PDF set = 260001 + PDF set = 260002 + PDF set = 260003 + PDF set = 260004 + PDF set = 260005 + PDF set = 260006 + PDF set = 260007 + PDF set = 260008 + PDF set = 260009 + PDF set = 260010 + PDF set = 260011 + PDF set = 260012 + PDF set = 260013 + PDF set = 260014 + PDF set = 260015 + PDF set = 260016 + PDF set = 260017 + PDF set = 260018 + PDF set = 260019 + PDF set = 260020 + PDF set = 260021 + PDF set = 260022 + PDF set = 260023 + PDF set = 260024 + PDF set = 260025 + PDF set = 260026 + PDF set = 260027 + PDF set = 260028 + PDF set = 260029 + PDF set = 260030 + PDF set = 260031 + PDF set = 260032 + PDF set = 260033 + PDF set = 260034 + PDF set = 260035 + PDF set = 260036 + PDF set = 260037 + PDF set = 260038 + PDF set = 260039 + PDF set = 260040 + PDF set = 260041 + PDF set = 260042 + PDF set = 260043 + PDF set = 260044 + PDF set = 260045 + PDF set = 260046 + PDF set = 260047 + PDF set = 260048 + PDF set = 260049 + PDF set = 260050 + PDF set = 260051 + PDF set = 260052 + PDF set = 260053 + PDF set = 260054 + PDF set = 260055 + PDF set = 260056 + PDF set = 260057 + PDF set = 260058 + PDF set = 260059 + PDF set = 260060 + PDF set = 260061 + PDF set = 260062 + PDF set = 260063 + PDF set = 260064 + PDF set = 260065 + PDF set = 260066 + PDF set = 260067 + PDF set = 260068 + PDF set = 260069 + PDF set = 260070 + PDF set = 260071 + PDF set = 260072 + PDF set = 260073 + PDF set = 260074 + PDF set = 260075 + PDF set = 260076 + PDF set = 260077 + PDF set = 260078 + PDF set = 260079 + PDF set = 260080 + PDF set = 260081 + PDF set = 260082 + PDF set = 260083 + PDF set = 260084 + PDF set = 260085 + PDF set = 260086 + PDF set = 260087 + PDF set = 260088 + PDF set = 260089 + PDF set = 260090 + PDF set = 260091 + PDF set = 260092 + PDF set = 260093 + PDF set = 260094 + PDF set = 260095 + PDF set = 260096 + PDF set = 260097 + PDF set = 260098 + PDF set = 260099 + PDF set = 260100 + PDF set = 265000 + PDF set = 266000 + PDF set = 11000 + PDF set = 11001 + PDF set = 11002 + PDF set = 11003 + PDF set = 11004 + PDF set = 11005 + PDF set = 11006 + PDF set = 11007 + PDF set = 11008 + PDF set = 11009 + PDF set = 11010 + PDF set = 11011 + PDF set = 11012 + PDF set = 11013 + PDF set = 11014 + PDF set = 11015 + PDF set = 11016 + PDF set = 11017 + PDF set = 11018 + PDF set = 11019 + PDF set = 11020 + PDF set = 11021 + PDF set = 11022 + PDF set = 11023 + PDF set = 11024 + PDF set = 11025 + PDF set = 11026 + PDF set = 11027 + PDF set = 11028 + PDF set = 11029 + PDF set = 11030 + PDF set = 11031 + PDF set = 11032 + PDF set = 11033 + PDF set = 11034 + PDF set = 11035 + PDF set = 11036 + PDF set = 11037 + PDF set = 11038 + PDF set = 11039 + PDF set = 11040 + PDF set = 11041 + PDF set = 11042 + PDF set = 11043 + PDF set = 11044 + PDF set = 11045 + PDF set = 11046 + PDF set = 11047 + PDF set = 11048 + PDF set = 11049 + PDF set = 11050 + PDF set = 11051 + PDF set = 11052 + PDF set = 11067 + PDF set = 11069 + PDF set = 25200 + PDF set = 25201 + PDF set = 25202 + PDF set = 25203 + PDF set = 25204 + PDF set = 25205 + PDF set = 25206 + PDF set = 25207 + PDF set = 25208 + PDF set = 25209 + PDF set = 25210 + PDF set = 25211 + PDF set = 25212 + PDF set = 25213 + PDF set = 25214 + PDF set = 25215 + PDF set = 25216 + PDF set = 25217 + PDF set = 25218 + PDF set = 25219 + PDF set = 25220 + PDF set = 25221 + PDF set = 25222 + PDF set = 25223 + PDF set = 25224 + PDF set = 25225 + PDF set = 25226 + PDF set = 25227 + PDF set = 25228 + PDF set = 25229 + PDF set = 25230 + PDF set = 25231 + PDF set = 25232 + PDF set = 25233 + PDF set = 25234 + PDF set = 25235 + PDF set = 25236 + PDF set = 25237 + PDF set = 25238 + PDF set = 25239 + PDF set = 25240 + PDF set = 25241 + PDF set = 25242 + PDF set = 25243 + PDF set = 25244 + PDF set = 25245 + PDF set = 25246 + PDF set = 25247 + PDF set = 25248 + PDF set = 25249 + PDF set = 25250 + PDF set = 25260 + PDF set = 25261 + PDF set = 25262 + PDF set = 25263 + PDF set = 25264 + diff --git a/testFiles/ZZTo4L_powheg_2017_weightInfo.txt b/testFiles/ZZTo4L_powheg_2017_weightInfo.txt new file mode 100644 index 0000000000000..eba77245d4473 --- /dev/null +++ b/testFiles/ZZTo4L_powheg_2017_weightInfo.txt @@ -0,0 +1,1087 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/ZZTo4L_TuneCP5_13TeV_powheg_pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15_ext1-v2/10000/A3FB9D9C-6F10-6349-8345-BC3068E2E75A.root + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=305800 + lhapdf=305801 + lhapdf=305802 + lhapdf=305803 + lhapdf=305804 + lhapdf=305805 + lhapdf=305806 + lhapdf=305807 + lhapdf=305808 + lhapdf=305809 + lhapdf=305810 + lhapdf=305811 + lhapdf=305812 + lhapdf=305813 + lhapdf=305814 + lhapdf=305815 + lhapdf=305816 + lhapdf=305817 + lhapdf=305818 + lhapdf=305819 + lhapdf=305820 + lhapdf=305821 + lhapdf=305822 + lhapdf=305823 + lhapdf=305824 + lhapdf=305825 + lhapdf=305826 + lhapdf=305827 + lhapdf=305828 + lhapdf=305829 + lhapdf=305830 + lhapdf=305831 + lhapdf=305832 + lhapdf=305833 + lhapdf=305834 + lhapdf=305835 + lhapdf=305836 + lhapdf=305837 + lhapdf=305838 + lhapdf=305839 + lhapdf=305840 + lhapdf=305841 + lhapdf=305842 + lhapdf=305843 + lhapdf=305844 + lhapdf=305845 + lhapdf=305846 + lhapdf=305847 + lhapdf=305848 + lhapdf=305849 + lhapdf=305850 + lhapdf=305851 + lhapdf=305852 + lhapdf=305853 + lhapdf=305854 + lhapdf=305855 + lhapdf=305856 + lhapdf=305857 + lhapdf=305858 + lhapdf=305859 + lhapdf=305860 + lhapdf=305861 + lhapdf=305862 + lhapdf=305863 + lhapdf=305864 + lhapdf=305865 + lhapdf=305866 + lhapdf=305867 + lhapdf=305868 + lhapdf=305869 + lhapdf=305870 + lhapdf=305871 + lhapdf=305872 + lhapdf=305873 + lhapdf=305874 + lhapdf=305875 + lhapdf=305876 + lhapdf=305877 + lhapdf=305878 + lhapdf=305879 + lhapdf=305880 + lhapdf=305881 + lhapdf=305882 + lhapdf=305883 + lhapdf=305884 + lhapdf=305885 + lhapdf=305886 + lhapdf=305887 + lhapdf=305888 + lhapdf=305889 + lhapdf=305890 + lhapdf=305891 + lhapdf=305892 + lhapdf=305893 + lhapdf=305894 + lhapdf=305895 + lhapdf=305896 + lhapdf=305897 + lhapdf=305898 + lhapdf=305899 + lhapdf=305900 + lhapdf=305901 + lhapdf=305902 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=13100 + lhapdf=13101 + lhapdf=13102 + lhapdf=13103 + lhapdf=13104 + lhapdf=13105 + lhapdf=13106 + lhapdf=13107 + lhapdf=13108 + lhapdf=13109 + lhapdf=13110 + lhapdf=13111 + lhapdf=13112 + lhapdf=13113 + lhapdf=13114 + lhapdf=13115 + lhapdf=13116 + lhapdf=13117 + lhapdf=13118 + lhapdf=13119 + lhapdf=13120 + lhapdf=13121 + lhapdf=13122 + lhapdf=13123 + lhapdf=13124 + lhapdf=13125 + lhapdf=13126 + lhapdf=13127 + lhapdf=13128 + lhapdf=13129 + lhapdf=13130 + lhapdf=13131 + lhapdf=13132 + lhapdf=13133 + lhapdf=13134 + lhapdf=13135 + lhapdf=13136 + lhapdf=13137 + lhapdf=13138 + lhapdf=13139 + lhapdf=13140 + lhapdf=13141 + lhapdf=13142 + lhapdf=13143 + lhapdf=13144 + lhapdf=13145 + lhapdf=13146 + lhapdf=13147 + lhapdf=13148 + lhapdf=13149 + lhapdf=13150 + lhapdf=13151 + lhapdf=13152 + lhapdf=13153 + lhapdf=13154 + lhapdf=13155 + lhapdf=13156 + lhapdf=13163 + lhapdf=13167 + lhapdf=13200 + lhapdf=25200 + lhapdf=25201 + lhapdf=25202 + lhapdf=25203 + lhapdf=25204 + lhapdf=25205 + lhapdf=25206 + lhapdf=25207 + lhapdf=25208 + lhapdf=25209 + lhapdf=25210 + lhapdf=25211 + lhapdf=25212 + lhapdf=25213 + lhapdf=25214 + lhapdf=25215 + lhapdf=25216 + lhapdf=25217 + lhapdf=25218 + lhapdf=25219 + lhapdf=25220 + lhapdf=25221 + lhapdf=25222 + lhapdf=25223 + lhapdf=25224 + lhapdf=25225 + lhapdf=25226 + lhapdf=25227 + lhapdf=25228 + lhapdf=25229 + lhapdf=25230 + lhapdf=25231 + lhapdf=25232 + lhapdf=25233 + lhapdf=25234 + lhapdf=25235 + lhapdf=25236 + lhapdf=25237 + lhapdf=25238 + lhapdf=25239 + lhapdf=25240 + lhapdf=25241 + lhapdf=25242 + lhapdf=25243 + lhapdf=25244 + lhapdf=25245 + lhapdf=25246 + lhapdf=25247 + lhapdf=25248 + lhapdf=25249 + lhapdf=25250 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25000 + lhapdf=42780 + lhapdf=42781 + lhapdf=42782 + lhapdf=42783 + lhapdf=42784 + lhapdf=42785 + lhapdf=42786 + lhapdf=42787 + lhapdf=42788 + lhapdf=42789 + lhapdf=42790 + lhapdf=42791 + lhapdf=42792 + lhapdf=42793 + lhapdf=42794 + lhapdf=42795 + lhapdf=42796 + lhapdf=42797 + lhapdf=42798 + lhapdf=42799 + lhapdf=42800 + lhapdf=42801 + lhapdf=42802 + lhapdf=42803 + lhapdf=42804 + lhapdf=42805 + lhapdf=42806 + lhapdf=42807 + lhapdf=42808 + lhapdf=42809 + lhapdf=90200 + lhapdf=90201 + lhapdf=90202 + lhapdf=90203 + lhapdf=90204 + lhapdf=90205 + lhapdf=90206 + lhapdf=90207 + lhapdf=90208 + lhapdf=90209 + lhapdf=90210 + lhapdf=90211 + lhapdf=90212 + lhapdf=90213 + lhapdf=90214 + lhapdf=90215 + lhapdf=90216 + lhapdf=90217 + lhapdf=90218 + lhapdf=90219 + lhapdf=90220 + lhapdf=90221 + lhapdf=90222 + lhapdf=90223 + lhapdf=90224 + lhapdf=90225 + lhapdf=90226 + lhapdf=90227 + lhapdf=90228 + lhapdf=90229 + lhapdf=90230 + lhapdf=90231 + lhapdf=90232 + lhapdf=90233 + lhapdf=90234 + lhapdf=90235 + lhapdf=90236 + lhapdf=90237 + lhapdf=90238 + lhapdf=90239 + lhapdf=90240 + lhapdf=90241 + lhapdf=90242 + lhapdf=90243 + lhapdf=90244 + lhapdf=90245 + lhapdf=90246 + lhapdf=90247 + lhapdf=90248 + lhapdf=90249 + lhapdf=90250 + lhapdf=90251 + lhapdf=90252 + lhapdf=90253 + lhapdf=90254 + lhapdf=90255 + lhapdf=90256 + lhapdf=90257 + lhapdf=90258 + lhapdf=90259 + lhapdf=90260 + lhapdf=90261 + lhapdf=90262 + lhapdf=90263 + lhapdf=90264 + lhapdf=90265 + lhapdf=90266 + lhapdf=90267 + lhapdf=90268 + lhapdf=90269 + lhapdf=90270 + lhapdf=90271 + lhapdf=90272 + lhapdf=90273 + lhapdf=90274 + lhapdf=90275 + lhapdf=90276 + lhapdf=90277 + lhapdf=90278 + lhapdf=90279 + lhapdf=90280 + lhapdf=90281 + lhapdf=90282 + lhapdf=90283 + lhapdf=90284 + lhapdf=90285 + lhapdf=90286 + lhapdf=90287 + lhapdf=90288 + lhapdf=90289 + lhapdf=90290 + lhapdf=90291 + lhapdf=90292 + lhapdf=90293 + lhapdf=90294 + lhapdf=90295 + lhapdf=90296 + lhapdf=90297 + lhapdf=90298 + lhapdf=90299 + lhapdf=90300 + lhapdf=90301 + lhapdf=90302 + lhapdf=91200 + lhapdf=91201 + lhapdf=91202 + lhapdf=91203 + lhapdf=91204 + lhapdf=91205 + lhapdf=91206 + lhapdf=91207 + lhapdf=91208 + lhapdf=91209 + lhapdf=91210 + lhapdf=91211 + lhapdf=91212 + lhapdf=91213 + lhapdf=91214 + lhapdf=91215 + lhapdf=91216 + lhapdf=91217 + lhapdf=91218 + lhapdf=91219 + lhapdf=91220 + lhapdf=91221 + lhapdf=91222 + lhapdf=91223 + lhapdf=91224 + lhapdf=91225 + lhapdf=91226 + lhapdf=91227 + lhapdf=91228 + lhapdf=91229 + lhapdf=91230 + lhapdf=91231 + lhapdf=91232 + lhapdf=91233 + lhapdf=91234 + lhapdf=91235 + lhapdf=91236 + lhapdf=91237 + lhapdf=91238 + lhapdf=91239 + lhapdf=91240 + lhapdf=91241 + lhapdf=91242 + lhapdf=91243 + lhapdf=91244 + lhapdf=91245 + lhapdf=91246 + lhapdf=91247 + lhapdf=91248 + lhapdf=91249 + lhapdf=91250 + lhapdf=91251 + lhapdf=91252 + lhapdf=91253 + lhapdf=91254 + lhapdf=91255 + lhapdf=91256 + lhapdf=91257 + lhapdf=91258 + lhapdf=91259 + lhapdf=91260 + lhapdf=91261 + lhapdf=91262 + lhapdf=91263 + lhapdf=91264 + lhapdf=91265 + lhapdf=91266 + lhapdf=91267 + lhapdf=91268 + lhapdf=91269 + lhapdf=91270 + lhapdf=91271 + lhapdf=91272 + lhapdf=91273 + lhapdf=91274 + lhapdf=91275 + lhapdf=91276 + lhapdf=91277 + lhapdf=91278 + lhapdf=91279 + lhapdf=91280 + lhapdf=91281 + lhapdf=91282 + lhapdf=91283 + lhapdf=91284 + lhapdf=91285 + lhapdf=91286 + lhapdf=91287 + lhapdf=91288 + lhapdf=91289 + lhapdf=91290 + lhapdf=91291 + lhapdf=91292 + lhapdf=91293 + lhapdf=91294 + lhapdf=91295 + lhapdf=91296 + lhapdf=91297 + lhapdf=91298 + lhapdf=91299 + lhapdf=91300 + lhapdf=91301 + lhapdf=91302 + lhapdf=90400 + lhapdf=90401 + lhapdf=90402 + lhapdf=90403 + lhapdf=90404 + lhapdf=90405 + lhapdf=90406 + lhapdf=90407 + lhapdf=90408 + lhapdf=90409 + lhapdf=90410 + lhapdf=90411 + lhapdf=90412 + lhapdf=90413 + lhapdf=90414 + lhapdf=90415 + lhapdf=90416 + lhapdf=90417 + lhapdf=90418 + lhapdf=90419 + lhapdf=90420 + lhapdf=90421 + lhapdf=90422 + lhapdf=90423 + lhapdf=90424 + lhapdf=90425 + lhapdf=90426 + lhapdf=90427 + lhapdf=90428 + lhapdf=90429 + lhapdf=90430 + lhapdf=90431 + lhapdf=90432 + lhapdf=91400 + lhapdf=91401 + lhapdf=91402 + lhapdf=91403 + lhapdf=91404 + lhapdf=91405 + lhapdf=91406 + lhapdf=91407 + lhapdf=91408 + lhapdf=91409 + lhapdf=91410 + lhapdf=91411 + lhapdf=91412 + lhapdf=91413 + lhapdf=91414 + lhapdf=91415 + lhapdf=91416 + lhapdf=91417 + lhapdf=91418 + lhapdf=91419 + lhapdf=91420 + lhapdf=91421 + lhapdf=91422 + lhapdf=91423 + lhapdf=91424 + lhapdf=91425 + lhapdf=91426 + lhapdf=91427 + lhapdf=91428 + lhapdf=91429 + lhapdf=91430 + lhapdf=91431 + lhapdf=91432 + lhapdf=61100 + lhapdf=61101 + lhapdf=61102 + lhapdf=61103 + lhapdf=61104 + lhapdf=61105 + lhapdf=61106 + lhapdf=61107 + lhapdf=61108 + lhapdf=61109 + lhapdf=61110 + lhapdf=61111 + lhapdf=61112 + lhapdf=61113 + lhapdf=61114 + lhapdf=61115 + lhapdf=61116 + lhapdf=61117 + lhapdf=61118 + lhapdf=61119 + lhapdf=61120 + lhapdf=61121 + lhapdf=61122 + lhapdf=61123 + lhapdf=61124 + lhapdf=61125 + lhapdf=61126 + lhapdf=61127 + lhapdf=61128 + lhapdf=61130 + lhapdf=61131 + lhapdf=61132 + lhapdf=61133 + lhapdf=61134 + lhapdf=61135 + lhapdf=61136 + lhapdf=61137 + lhapdf=61138 + lhapdf=61139 + lhapdf=61140 + lhapdf=61141 + lhapdf=61142 + lhapdf=61143 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=13400 + lhapdf=13401 + lhapdf=13402 + lhapdf=13403 + lhapdf=13404 + lhapdf=13405 + lhapdf=13406 + lhapdf=13407 + lhapdf=13408 + lhapdf=13409 + lhapdf=13410 + lhapdf=13411 + lhapdf=13412 + lhapdf=13413 + lhapdf=13414 + lhapdf=13415 + lhapdf=13416 + lhapdf=13417 + lhapdf=13418 + lhapdf=13419 + lhapdf=13420 + lhapdf=13421 + lhapdf=13422 + lhapdf=13423 + lhapdf=13424 + lhapdf=13425 + lhapdf=13426 + lhapdf=13427 + lhapdf=13428 + lhapdf=13429 + lhapdf=13430 + lhapdf=82200 + lhapdf=82201 + lhapdf=82202 + lhapdf=82203 + lhapdf=82204 + lhapdf=82205 + lhapdf=82206 + lhapdf=82207 + lhapdf=82208 + lhapdf=82209 + lhapdf=82210 + lhapdf=82211 + lhapdf=82212 + lhapdf=82213 + lhapdf=82214 + lhapdf=82215 + lhapdf=82216 + lhapdf=82217 + lhapdf=82218 + lhapdf=82219 + lhapdf=82220 + lhapdf=82221 + lhapdf=82222 + lhapdf=82223 + lhapdf=82224 + lhapdf=82225 + lhapdf=82226 + lhapdf=82227 + lhapdf=82228 + lhapdf=82229 + lhapdf=82230 + lhapdf=82231 + lhapdf=82232 + lhapdf=82233 + lhapdf=82234 + lhapdf=82235 + lhapdf=82236 + lhapdf=82237 + lhapdf=82238 + lhapdf=82239 + lhapdf=82240 + lhapdf=82241 + lhapdf=82242 + lhapdf=82243 + lhapdf=82244 + lhapdf=82245 + lhapdf=82246 + lhapdf=82247 + lhapdf=82248 + lhapdf=82249 + lhapdf=82250 + lhapdf=82251 + lhapdf=82252 + lhapdf=82253 + lhapdf=82254 + lhapdf=82255 + lhapdf=82256 + lhapdf=82257 + lhapdf=82258 + lhapdf=82259 + lhapdf=82260 + lhapdf=82261 + lhapdf=82262 + lhapdf=82263 + lhapdf=82264 + lhapdf=82265 + lhapdf=82266 + lhapdf=82267 + lhapdf=82268 + lhapdf=82269 + lhapdf=82270 + lhapdf=82271 + lhapdf=82272 + lhapdf=82273 + lhapdf=82274 + lhapdf=82275 + lhapdf=82276 + lhapdf=82277 + lhapdf=82278 + lhapdf=82279 + lhapdf=82280 + lhapdf=82281 + lhapdf=82282 + lhapdf=82283 + lhapdf=82284 + lhapdf=82285 + lhapdf=82286 + lhapdf=82287 + lhapdf=82288 + lhapdf=82289 + lhapdf=82290 + lhapdf=82291 + lhapdf=82292 + lhapdf=82293 + lhapdf=82294 + lhapdf=82295 + lhapdf=82296 + lhapdf=82297 + lhapdf=82298 + lhapdf=82299 + lhapdf=82300 + lhapdf=82301 + lhapdf=82302 + lhapdf=82303 + lhapdf=82304 + lhapdf=82305 + lhapdf=82306 + lhapdf=82307 + + + lhapdf=292200 + lhapdf=292201 + lhapdf=292202 + lhapdf=292203 + lhapdf=292204 + lhapdf=292205 + lhapdf=292206 + lhapdf=292207 + lhapdf=292208 + lhapdf=292209 + lhapdf=292210 + lhapdf=292211 + lhapdf=292212 + lhapdf=292213 + lhapdf=292214 + lhapdf=292215 + lhapdf=292216 + lhapdf=292217 + lhapdf=292218 + lhapdf=292219 + lhapdf=292220 + lhapdf=292221 + lhapdf=292222 + lhapdf=292223 + lhapdf=292224 + lhapdf=292225 + lhapdf=292226 + lhapdf=292227 + lhapdf=292228 + lhapdf=292229 + lhapdf=292230 + lhapdf=292231 + lhapdf=292232 + lhapdf=292233 + lhapdf=292234 + lhapdf=292235 + lhapdf=292236 + lhapdf=292237 + lhapdf=292238 + lhapdf=292239 + lhapdf=292240 + lhapdf=292241 + lhapdf=292242 + lhapdf=292243 + lhapdf=292244 + lhapdf=292245 + lhapdf=292246 + lhapdf=292247 + lhapdf=292248 + lhapdf=292249 + lhapdf=292250 + lhapdf=292251 + lhapdf=292252 + lhapdf=292253 + lhapdf=292254 + lhapdf=292255 + lhapdf=292256 + lhapdf=292257 + lhapdf=292258 + lhapdf=292259 + lhapdf=292260 + lhapdf=292261 + lhapdf=292262 + lhapdf=292263 + lhapdf=292264 + lhapdf=292265 + lhapdf=292266 + lhapdf=292267 + lhapdf=292268 + lhapdf=292269 + lhapdf=292270 + lhapdf=292271 + lhapdf=292272 + lhapdf=292273 + lhapdf=292274 + lhapdf=292275 + lhapdf=292276 + lhapdf=292277 + lhapdf=292278 + lhapdf=292279 + lhapdf=292280 + lhapdf=292281 + lhapdf=292282 + lhapdf=292283 + lhapdf=292284 + lhapdf=292285 + lhapdf=292286 + lhapdf=292287 + lhapdf=292288 + lhapdf=292289 + lhapdf=292290 + lhapdf=292291 + lhapdf=292292 + lhapdf=292293 + lhapdf=292294 + lhapdf=292295 + lhapdf=292296 + lhapdf=292297 + lhapdf=292298 + lhapdf=292299 + lhapdf=292300 + lhapdf=292301 + lhapdf=292302 + lhapdf=292600 + lhapdf=315000 + lhapdf=315200 + lhapdf=262000 + lhapdf=263000 + diff --git a/testFiles/overview.txt b/testFiles/overview.txt new file mode 100644 index 0000000000000..65cffa71130b3 --- /dev/null +++ b/testFiles/overview.txt @@ -0,0 +1,12 @@ +MadGraph no systematics program + - LO + - NLO +MadGraph + systematics program + - Standard + - with dynamic scale +MadGraph + reweight + +POWHEG 2016 +POWHEG 2017 + +?? diff --git a/testFiles/susyweights.txt b/testFiles/susyweights.txt new file mode 100644 index 0000000000000..8d997605fcaa0 --- /dev/null +++ b/testFiles/susyweights.txt @@ -0,0 +1,1227 @@ +# From file /store/mc/RunIIAutumn18MiniAOD/SMS-TChiWZ_ZToLL_mZMin-0p1_mC1-325to1000_TuneCP2_13TeV-madgraphMLM-pythia8/MINIAODSIM/GridpackScan_102X_upgrade2018_realistic_v15-v1/260000/E535B34E-AE47-1F41-88CC-676F1D975A12.root +nominal +LHE, id = 1, group = Central scale variation, mur=1 muf=1 +LHE, id = 2, group = Central scale variation, mur=1 muf=2 +LHE, id = 3, group = Central scale variation, mur=1 muf=0.5 +LHE, id = 4, group = Central scale variation, mur=2 muf=1 +LHE, id = 5, group = Central scale variation, mur=2 muf=2 +LHE, id = 6, group = Central scale variation, mur=2 muf=0.5 +LHE, id = 7, group = Central scale variation, mur=0.5 muf=1 +LHE, id = 8, group = Central scale variation, mur=0.5 muf=2 +LHE, id = 9, group = Central scale variation, mur=0.5 muf=0.5 +LHE, id = 10, group = NNPDF31_lo_as_0130, Member 0 of sets NNPDF31_lo_as_0130 +LHE, id = 11, group = NNPDF31_lo_as_0130, Member 1 of sets NNPDF31_lo_as_0130 +LHE, id = 12, group = NNPDF31_lo_as_0130, Member 2 of sets NNPDF31_lo_as_0130 +LHE, id = 13, group = NNPDF31_lo_as_0130, Member 3 of sets NNPDF31_lo_as_0130 +LHE, id = 14, group = NNPDF31_lo_as_0130, Member 4 of sets NNPDF31_lo_as_0130 +LHE, id = 15, group = NNPDF31_lo_as_0130, Member 5 of sets NNPDF31_lo_as_0130 +LHE, id = 16, group = NNPDF31_lo_as_0130, Member 6 of sets NNPDF31_lo_as_0130 +LHE, id = 17, group = NNPDF31_lo_as_0130, Member 7 of sets NNPDF31_lo_as_0130 +LHE, id = 18, group = NNPDF31_lo_as_0130, Member 8 of sets NNPDF31_lo_as_0130 +LHE, id = 19, group = NNPDF31_lo_as_0130, Member 9 of sets NNPDF31_lo_as_0130 +LHE, id = 20, group = NNPDF31_lo_as_0130, Member 10 of sets NNPDF31_lo_as_0130 +LHE, id = 21, group = NNPDF31_lo_as_0130, Member 11 of sets NNPDF31_lo_as_0130 +LHE, id = 22, group = NNPDF31_lo_as_0130, Member 12 of sets NNPDF31_lo_as_0130 +LHE, id = 23, group = NNPDF31_lo_as_0130, Member 13 of sets NNPDF31_lo_as_0130 +LHE, id = 24, group = NNPDF31_lo_as_0130, Member 14 of sets NNPDF31_lo_as_0130 +LHE, id = 25, group = NNPDF31_lo_as_0130, Member 15 of sets NNPDF31_lo_as_0130 +LHE, id = 26, group = NNPDF31_lo_as_0130, Member 16 of sets NNPDF31_lo_as_0130 +LHE, id = 27, group = NNPDF31_lo_as_0130, Member 17 of sets NNPDF31_lo_as_0130 +LHE, id = 28, group = NNPDF31_lo_as_0130, Member 18 of sets NNPDF31_lo_as_0130 +LHE, id = 29, group = NNPDF31_lo_as_0130, Member 19 of sets NNPDF31_lo_as_0130 +LHE, id = 30, group = NNPDF31_lo_as_0130, Member 20 of sets NNPDF31_lo_as_0130 +LHE, id = 31, group = NNPDF31_lo_as_0130, Member 21 of sets NNPDF31_lo_as_0130 +LHE, id = 32, group = NNPDF31_lo_as_0130, Member 22 of sets NNPDF31_lo_as_0130 +LHE, id = 33, group = NNPDF31_lo_as_0130, Member 23 of sets NNPDF31_lo_as_0130 +LHE, id = 34, group = NNPDF31_lo_as_0130, Member 24 of sets NNPDF31_lo_as_0130 +LHE, id = 35, group = NNPDF31_lo_as_0130, Member 25 of sets NNPDF31_lo_as_0130 +LHE, id = 36, group = NNPDF31_lo_as_0130, Member 26 of sets NNPDF31_lo_as_0130 +LHE, id = 37, group = NNPDF31_lo_as_0130, Member 27 of sets NNPDF31_lo_as_0130 +LHE, id = 38, group = NNPDF31_lo_as_0130, Member 28 of sets NNPDF31_lo_as_0130 +LHE, id = 39, group = NNPDF31_lo_as_0130, Member 29 of sets NNPDF31_lo_as_0130 +LHE, id = 40, group = NNPDF31_lo_as_0130, Member 30 of sets NNPDF31_lo_as_0130 +LHE, id = 41, group = NNPDF31_lo_as_0130, Member 31 of sets NNPDF31_lo_as_0130 +LHE, id = 42, group = NNPDF31_lo_as_0130, Member 32 of sets NNPDF31_lo_as_0130 +LHE, id = 43, group = NNPDF31_lo_as_0130, Member 33 of sets NNPDF31_lo_as_0130 +LHE, id = 44, group = NNPDF31_lo_as_0130, Member 34 of sets NNPDF31_lo_as_0130 +LHE, id = 45, group = NNPDF31_lo_as_0130, Member 35 of sets NNPDF31_lo_as_0130 +LHE, id = 46, group = NNPDF31_lo_as_0130, Member 36 of sets NNPDF31_lo_as_0130 +LHE, id = 47, group = NNPDF31_lo_as_0130, Member 37 of sets NNPDF31_lo_as_0130 +LHE, id = 48, group = NNPDF31_lo_as_0130, Member 38 of sets NNPDF31_lo_as_0130 +LHE, id = 49, group = NNPDF31_lo_as_0130, Member 39 of sets NNPDF31_lo_as_0130 +LHE, id = 50, group = NNPDF31_lo_as_0130, Member 40 of sets NNPDF31_lo_as_0130 +LHE, id = 51, group = NNPDF31_lo_as_0130, Member 41 of sets NNPDF31_lo_as_0130 +LHE, id = 52, group = NNPDF31_lo_as_0130, Member 42 of sets NNPDF31_lo_as_0130 +LHE, id = 53, group = NNPDF31_lo_as_0130, Member 43 of sets NNPDF31_lo_as_0130 +LHE, id = 54, group = NNPDF31_lo_as_0130, Member 44 of sets NNPDF31_lo_as_0130 +LHE, id = 55, group = NNPDF31_lo_as_0130, Member 45 of sets NNPDF31_lo_as_0130 +LHE, id = 56, group = NNPDF31_lo_as_0130, Member 46 of sets NNPDF31_lo_as_0130 +LHE, id = 57, group = NNPDF31_lo_as_0130, Member 47 of sets NNPDF31_lo_as_0130 +LHE, id = 58, group = NNPDF31_lo_as_0130, Member 48 of sets NNPDF31_lo_as_0130 +LHE, id = 59, group = NNPDF31_lo_as_0130, Member 49 of sets NNPDF31_lo_as_0130 +LHE, id = 60, group = NNPDF31_lo_as_0130, Member 50 of sets NNPDF31_lo_as_0130 +LHE, id = 61, group = NNPDF31_lo_as_0130, Member 51 of sets NNPDF31_lo_as_0130 +LHE, id = 62, group = NNPDF31_lo_as_0130, Member 52 of sets NNPDF31_lo_as_0130 +LHE, id = 63, group = NNPDF31_lo_as_0130, Member 53 of sets NNPDF31_lo_as_0130 +LHE, id = 64, group = NNPDF31_lo_as_0130, Member 54 of sets NNPDF31_lo_as_0130 +LHE, id = 65, group = NNPDF31_lo_as_0130, Member 55 of sets NNPDF31_lo_as_0130 +LHE, id = 66, group = NNPDF31_lo_as_0130, Member 56 of sets NNPDF31_lo_as_0130 +LHE, id = 67, group = NNPDF31_lo_as_0130, Member 57 of sets NNPDF31_lo_as_0130 +LHE, id = 68, group = NNPDF31_lo_as_0130, Member 58 of sets NNPDF31_lo_as_0130 +LHE, id = 69, group = NNPDF31_lo_as_0130, Member 59 of sets NNPDF31_lo_as_0130 +LHE, id = 70, group = NNPDF31_lo_as_0130, Member 60 of sets NNPDF31_lo_as_0130 +LHE, id = 71, group = NNPDF31_lo_as_0130, Member 61 of sets NNPDF31_lo_as_0130 +LHE, id = 72, group = NNPDF31_lo_as_0130, Member 62 of sets NNPDF31_lo_as_0130 +LHE, id = 73, group = NNPDF31_lo_as_0130, Member 63 of sets NNPDF31_lo_as_0130 +LHE, id = 74, group = NNPDF31_lo_as_0130, Member 64 of sets NNPDF31_lo_as_0130 +LHE, id = 75, group = NNPDF31_lo_as_0130, Member 65 of sets NNPDF31_lo_as_0130 +LHE, id = 76, group = NNPDF31_lo_as_0130, Member 66 of sets NNPDF31_lo_as_0130 +LHE, id = 77, group = NNPDF31_lo_as_0130, Member 67 of sets NNPDF31_lo_as_0130 +LHE, id = 78, group = NNPDF31_lo_as_0130, Member 68 of sets NNPDF31_lo_as_0130 +LHE, id = 79, group = NNPDF31_lo_as_0130, Member 69 of sets NNPDF31_lo_as_0130 +LHE, id = 80, group = NNPDF31_lo_as_0130, Member 70 of sets NNPDF31_lo_as_0130 +LHE, id = 81, group = NNPDF31_lo_as_0130, Member 71 of sets NNPDF31_lo_as_0130 +LHE, id = 82, group = NNPDF31_lo_as_0130, Member 72 of sets NNPDF31_lo_as_0130 +LHE, id = 83, group = NNPDF31_lo_as_0130, Member 73 of sets NNPDF31_lo_as_0130 +LHE, id = 84, group = NNPDF31_lo_as_0130, Member 74 of sets NNPDF31_lo_as_0130 +LHE, id = 85, group = NNPDF31_lo_as_0130, Member 75 of sets NNPDF31_lo_as_0130 +LHE, id = 86, group = NNPDF31_lo_as_0130, Member 76 of sets NNPDF31_lo_as_0130 +LHE, id = 87, group = NNPDF31_lo_as_0130, Member 77 of sets NNPDF31_lo_as_0130 +LHE, id = 88, group = NNPDF31_lo_as_0130, Member 78 of sets NNPDF31_lo_as_0130 +LHE, id = 89, group = NNPDF31_lo_as_0130, Member 79 of sets NNPDF31_lo_as_0130 +LHE, id = 90, group = NNPDF31_lo_as_0130, Member 80 of sets NNPDF31_lo_as_0130 +LHE, id = 91, group = NNPDF31_lo_as_0130, Member 81 of sets NNPDF31_lo_as_0130 +LHE, id = 92, group = NNPDF31_lo_as_0130, Member 82 of sets NNPDF31_lo_as_0130 +LHE, id = 93, group = NNPDF31_lo_as_0130, Member 83 of sets NNPDF31_lo_as_0130 +LHE, id = 94, group = NNPDF31_lo_as_0130, Member 84 of sets NNPDF31_lo_as_0130 +LHE, id = 95, group = NNPDF31_lo_as_0130, Member 85 of sets NNPDF31_lo_as_0130 +LHE, id = 96, group = NNPDF31_lo_as_0130, Member 86 of sets NNPDF31_lo_as_0130 +LHE, id = 97, group = NNPDF31_lo_as_0130, Member 87 of sets NNPDF31_lo_as_0130 +LHE, id = 98, group = NNPDF31_lo_as_0130, Member 88 of sets NNPDF31_lo_as_0130 +LHE, id = 99, group = NNPDF31_lo_as_0130, Member 89 of sets NNPDF31_lo_as_0130 +LHE, id = 100, group = NNPDF31_lo_as_0130, Member 90 of sets NNPDF31_lo_as_0130 +LHE, id = 101, group = NNPDF31_lo_as_0130, Member 91 of sets NNPDF31_lo_as_0130 +LHE, id = 102, group = NNPDF31_lo_as_0130, Member 92 of sets NNPDF31_lo_as_0130 +LHE, id = 103, group = NNPDF31_lo_as_0130, Member 93 of sets NNPDF31_lo_as_0130 +LHE, id = 104, group = NNPDF31_lo_as_0130, Member 94 of sets NNPDF31_lo_as_0130 +LHE, id = 105, group = NNPDF31_lo_as_0130, Member 95 of sets NNPDF31_lo_as_0130 +LHE, id = 106, group = NNPDF31_lo_as_0130, Member 96 of sets NNPDF31_lo_as_0130 +LHE, id = 107, group = NNPDF31_lo_as_0130, Member 97 of sets NNPDF31_lo_as_0130 +LHE, id = 108, group = NNPDF31_lo_as_0130, Member 98 of sets NNPDF31_lo_as_0130 +LHE, id = 109, group = NNPDF31_lo_as_0130, Member 99 of sets NNPDF31_lo_as_0130 +LHE, id = 110, group = NNPDF31_lo_as_0130, Member 100 of sets NNPDF31_lo_as_0130 +LHE, id = 111, group = NNPDF31_nnlo_hessian_pdfas, Member 0 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 112, group = NNPDF31_nnlo_hessian_pdfas, Member 1 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 113, group = NNPDF31_nnlo_hessian_pdfas, Member 2 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 114, group = NNPDF31_nnlo_hessian_pdfas, Member 3 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 115, group = NNPDF31_nnlo_hessian_pdfas, Member 4 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 116, group = NNPDF31_nnlo_hessian_pdfas, Member 5 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 117, group = NNPDF31_nnlo_hessian_pdfas, Member 6 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 118, group = NNPDF31_nnlo_hessian_pdfas, Member 7 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 119, group = NNPDF31_nnlo_hessian_pdfas, Member 8 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 120, group = NNPDF31_nnlo_hessian_pdfas, Member 9 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 121, group = NNPDF31_nnlo_hessian_pdfas, Member 10 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 122, group = NNPDF31_nnlo_hessian_pdfas, Member 11 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 123, group = NNPDF31_nnlo_hessian_pdfas, Member 12 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 124, group = NNPDF31_nnlo_hessian_pdfas, Member 13 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 125, group = NNPDF31_nnlo_hessian_pdfas, Member 14 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 126, group = NNPDF31_nnlo_hessian_pdfas, Member 15 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 127, group = NNPDF31_nnlo_hessian_pdfas, Member 16 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 128, group = NNPDF31_nnlo_hessian_pdfas, Member 17 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 129, group = NNPDF31_nnlo_hessian_pdfas, Member 18 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 130, group = NNPDF31_nnlo_hessian_pdfas, Member 19 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 131, group = NNPDF31_nnlo_hessian_pdfas, Member 20 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 132, group = NNPDF31_nnlo_hessian_pdfas, Member 21 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 133, group = NNPDF31_nnlo_hessian_pdfas, Member 22 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 134, group = NNPDF31_nnlo_hessian_pdfas, Member 23 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 135, group = NNPDF31_nnlo_hessian_pdfas, Member 24 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 136, group = NNPDF31_nnlo_hessian_pdfas, Member 25 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 137, group = NNPDF31_nnlo_hessian_pdfas, Member 26 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 138, group = NNPDF31_nnlo_hessian_pdfas, Member 27 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 139, group = NNPDF31_nnlo_hessian_pdfas, Member 28 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 140, group = NNPDF31_nnlo_hessian_pdfas, Member 29 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 141, group = NNPDF31_nnlo_hessian_pdfas, Member 30 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 142, group = NNPDF31_nnlo_hessian_pdfas, Member 31 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 143, group = NNPDF31_nnlo_hessian_pdfas, Member 32 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 144, group = NNPDF31_nnlo_hessian_pdfas, Member 33 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 145, group = NNPDF31_nnlo_hessian_pdfas, Member 34 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 146, group = NNPDF31_nnlo_hessian_pdfas, Member 35 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 147, group = NNPDF31_nnlo_hessian_pdfas, Member 36 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 148, group = NNPDF31_nnlo_hessian_pdfas, Member 37 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 149, group = NNPDF31_nnlo_hessian_pdfas, Member 38 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 150, group = NNPDF31_nnlo_hessian_pdfas, Member 39 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 151, group = NNPDF31_nnlo_hessian_pdfas, Member 40 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 152, group = NNPDF31_nnlo_hessian_pdfas, Member 41 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 153, group = NNPDF31_nnlo_hessian_pdfas, Member 42 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 154, group = NNPDF31_nnlo_hessian_pdfas, Member 43 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 155, group = NNPDF31_nnlo_hessian_pdfas, Member 44 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 156, group = NNPDF31_nnlo_hessian_pdfas, Member 45 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 157, group = NNPDF31_nnlo_hessian_pdfas, Member 46 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 158, group = NNPDF31_nnlo_hessian_pdfas, Member 47 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 159, group = NNPDF31_nnlo_hessian_pdfas, Member 48 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 160, group = NNPDF31_nnlo_hessian_pdfas, Member 49 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 161, group = NNPDF31_nnlo_hessian_pdfas, Member 50 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 162, group = NNPDF31_nnlo_hessian_pdfas, Member 51 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 163, group = NNPDF31_nnlo_hessian_pdfas, Member 52 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 164, group = NNPDF31_nnlo_hessian_pdfas, Member 53 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 165, group = NNPDF31_nnlo_hessian_pdfas, Member 54 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 166, group = NNPDF31_nnlo_hessian_pdfas, Member 55 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 167, group = NNPDF31_nnlo_hessian_pdfas, Member 56 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 168, group = NNPDF31_nnlo_hessian_pdfas, Member 57 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 169, group = NNPDF31_nnlo_hessian_pdfas, Member 58 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 170, group = NNPDF31_nnlo_hessian_pdfas, Member 59 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 171, group = NNPDF31_nnlo_hessian_pdfas, Member 60 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 172, group = NNPDF31_nnlo_hessian_pdfas, Member 61 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 173, group = NNPDF31_nnlo_hessian_pdfas, Member 62 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 174, group = NNPDF31_nnlo_hessian_pdfas, Member 63 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 175, group = NNPDF31_nnlo_hessian_pdfas, Member 64 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 176, group = NNPDF31_nnlo_hessian_pdfas, Member 65 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 177, group = NNPDF31_nnlo_hessian_pdfas, Member 66 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 178, group = NNPDF31_nnlo_hessian_pdfas, Member 67 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 179, group = NNPDF31_nnlo_hessian_pdfas, Member 68 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 180, group = NNPDF31_nnlo_hessian_pdfas, Member 69 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 181, group = NNPDF31_nnlo_hessian_pdfas, Member 70 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 182, group = NNPDF31_nnlo_hessian_pdfas, Member 71 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 183, group = NNPDF31_nnlo_hessian_pdfas, Member 72 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 184, group = NNPDF31_nnlo_hessian_pdfas, Member 73 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 185, group = NNPDF31_nnlo_hessian_pdfas, Member 74 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 186, group = NNPDF31_nnlo_hessian_pdfas, Member 75 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 187, group = NNPDF31_nnlo_hessian_pdfas, Member 76 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 188, group = NNPDF31_nnlo_hessian_pdfas, Member 77 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 189, group = NNPDF31_nnlo_hessian_pdfas, Member 78 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 190, group = NNPDF31_nnlo_hessian_pdfas, Member 79 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 191, group = NNPDF31_nnlo_hessian_pdfas, Member 80 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 192, group = NNPDF31_nnlo_hessian_pdfas, Member 81 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 193, group = NNPDF31_nnlo_hessian_pdfas, Member 82 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 194, group = NNPDF31_nnlo_hessian_pdfas, Member 83 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 195, group = NNPDF31_nnlo_hessian_pdfas, Member 84 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 196, group = NNPDF31_nnlo_hessian_pdfas, Member 85 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 197, group = NNPDF31_nnlo_hessian_pdfas, Member 86 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 198, group = NNPDF31_nnlo_hessian_pdfas, Member 87 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 199, group = NNPDF31_nnlo_hessian_pdfas, Member 88 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 200, group = NNPDF31_nnlo_hessian_pdfas, Member 89 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 201, group = NNPDF31_nnlo_hessian_pdfas, Member 90 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 202, group = NNPDF31_nnlo_hessian_pdfas, Member 91 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 203, group = NNPDF31_nnlo_hessian_pdfas, Member 92 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 204, group = NNPDF31_nnlo_hessian_pdfas, Member 93 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 205, group = NNPDF31_nnlo_hessian_pdfas, Member 94 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 206, group = NNPDF31_nnlo_hessian_pdfas, Member 95 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 207, group = NNPDF31_nnlo_hessian_pdfas, Member 96 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 208, group = NNPDF31_nnlo_hessian_pdfas, Member 97 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 209, group = NNPDF31_nnlo_hessian_pdfas, Member 98 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 210, group = NNPDF31_nnlo_hessian_pdfas, Member 99 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 211, group = NNPDF31_nnlo_hessian_pdfas, Member 100 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 212, group = NNPDF31_nnlo_hessian_pdfas, Member 101 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 213, group = NNPDF31_nnlo_hessian_pdfas, Member 102 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 214, group = NNPDF31_nnlo_as_0108, Member 0 of sets NNPDF31_nnlo_as_0108 +LHE, id = 215, group = NNPDF31_nnlo_as_0110, Member 0 of sets NNPDF31_nnlo_as_0110 +LHE, id = 216, group = NNPDF31_nnlo_as_0112, Member 0 of sets NNPDF31_nnlo_as_0112 +LHE, id = 217, group = NNPDF31_nnlo_as_0114, Member 0 of sets NNPDF31_nnlo_as_0114 +LHE, id = 218, group = NNPDF31_nnlo_as_0117, Member 0 of sets NNPDF31_nnlo_as_0117 +LHE, id = 219, group = NNPDF31_nnlo_as_0119, Member 0 of sets NNPDF31_nnlo_as_0119 +LHE, id = 220, group = NNPDF31_nnlo_as_0122, Member 0 of sets NNPDF31_nnlo_as_0122 +LHE, id = 221, group = NNPDF31_nnlo_as_0124, Member 0 of sets NNPDF31_nnlo_as_0124 +LHE, id = 222, group = NNPDF31_nlo_hessian_pdfas, Member 0 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 223, group = NNPDF31_nlo_hessian_pdfas, Member 1 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 224, group = NNPDF31_nlo_hessian_pdfas, Member 2 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 225, group = NNPDF31_nlo_hessian_pdfas, Member 3 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 226, group = NNPDF31_nlo_hessian_pdfas, Member 4 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 227, group = NNPDF31_nlo_hessian_pdfas, Member 5 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 228, group = NNPDF31_nlo_hessian_pdfas, Member 6 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 229, group = NNPDF31_nlo_hessian_pdfas, Member 7 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 230, group = NNPDF31_nlo_hessian_pdfas, Member 8 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 231, group = NNPDF31_nlo_hessian_pdfas, Member 9 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 232, group = NNPDF31_nlo_hessian_pdfas, Member 10 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 233, group = NNPDF31_nlo_hessian_pdfas, Member 11 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 234, group = NNPDF31_nlo_hessian_pdfas, Member 12 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 235, group = NNPDF31_nlo_hessian_pdfas, Member 13 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 236, group = NNPDF31_nlo_hessian_pdfas, Member 14 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 237, group = NNPDF31_nlo_hessian_pdfas, Member 15 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 238, group = NNPDF31_nlo_hessian_pdfas, Member 16 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 239, group = NNPDF31_nlo_hessian_pdfas, Member 17 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 240, group = NNPDF31_nlo_hessian_pdfas, Member 18 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 241, group = NNPDF31_nlo_hessian_pdfas, Member 19 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 242, group = NNPDF31_nlo_hessian_pdfas, Member 20 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 243, group = NNPDF31_nlo_hessian_pdfas, Member 21 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 244, group = NNPDF31_nlo_hessian_pdfas, Member 22 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 245, group = NNPDF31_nlo_hessian_pdfas, Member 23 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 246, group = NNPDF31_nlo_hessian_pdfas, Member 24 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 247, group = NNPDF31_nlo_hessian_pdfas, Member 25 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 248, group = NNPDF31_nlo_hessian_pdfas, Member 26 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 249, group = NNPDF31_nlo_hessian_pdfas, Member 27 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 250, group = NNPDF31_nlo_hessian_pdfas, Member 28 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 251, group = NNPDF31_nlo_hessian_pdfas, Member 29 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 252, group = NNPDF31_nlo_hessian_pdfas, Member 30 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 253, group = NNPDF31_nlo_hessian_pdfas, Member 31 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 254, group = NNPDF31_nlo_hessian_pdfas, Member 32 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 255, group = NNPDF31_nlo_hessian_pdfas, Member 33 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 256, group = NNPDF31_nlo_hessian_pdfas, Member 34 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 257, group = NNPDF31_nlo_hessian_pdfas, Member 35 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 258, group = NNPDF31_nlo_hessian_pdfas, Member 36 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 259, group = NNPDF31_nlo_hessian_pdfas, Member 37 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 260, group = NNPDF31_nlo_hessian_pdfas, Member 38 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 261, group = NNPDF31_nlo_hessian_pdfas, Member 39 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 262, group = NNPDF31_nlo_hessian_pdfas, Member 40 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 263, group = NNPDF31_nlo_hessian_pdfas, Member 41 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 264, group = NNPDF31_nlo_hessian_pdfas, Member 42 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 265, group = NNPDF31_nlo_hessian_pdfas, Member 43 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 266, group = NNPDF31_nlo_hessian_pdfas, Member 44 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 267, group = NNPDF31_nlo_hessian_pdfas, Member 45 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 268, group = NNPDF31_nlo_hessian_pdfas, Member 46 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 269, group = NNPDF31_nlo_hessian_pdfas, Member 47 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 270, group = NNPDF31_nlo_hessian_pdfas, Member 48 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 271, group = NNPDF31_nlo_hessian_pdfas, Member 49 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 272, group = NNPDF31_nlo_hessian_pdfas, Member 50 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 273, group = NNPDF31_nlo_hessian_pdfas, Member 51 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 274, group = NNPDF31_nlo_hessian_pdfas, Member 52 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 275, group = NNPDF31_nlo_hessian_pdfas, Member 53 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 276, group = NNPDF31_nlo_hessian_pdfas, Member 54 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 277, group = NNPDF31_nlo_hessian_pdfas, Member 55 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 278, group = NNPDF31_nlo_hessian_pdfas, Member 56 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 279, group = NNPDF31_nlo_hessian_pdfas, Member 57 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 280, group = NNPDF31_nlo_hessian_pdfas, Member 58 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 281, group = NNPDF31_nlo_hessian_pdfas, Member 59 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 282, group = NNPDF31_nlo_hessian_pdfas, Member 60 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 283, group = NNPDF31_nlo_hessian_pdfas, Member 61 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 284, group = NNPDF31_nlo_hessian_pdfas, Member 62 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 285, group = NNPDF31_nlo_hessian_pdfas, Member 63 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 286, group = NNPDF31_nlo_hessian_pdfas, Member 64 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 287, group = NNPDF31_nlo_hessian_pdfas, Member 65 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 288, group = NNPDF31_nlo_hessian_pdfas, Member 66 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 289, group = NNPDF31_nlo_hessian_pdfas, Member 67 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 290, group = NNPDF31_nlo_hessian_pdfas, Member 68 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 291, group = NNPDF31_nlo_hessian_pdfas, Member 69 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 292, group = NNPDF31_nlo_hessian_pdfas, Member 70 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 293, group = NNPDF31_nlo_hessian_pdfas, Member 71 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 294, group = NNPDF31_nlo_hessian_pdfas, Member 72 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 295, group = NNPDF31_nlo_hessian_pdfas, Member 73 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 296, group = NNPDF31_nlo_hessian_pdfas, Member 74 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 297, group = NNPDF31_nlo_hessian_pdfas, Member 75 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 298, group = NNPDF31_nlo_hessian_pdfas, Member 76 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 299, group = NNPDF31_nlo_hessian_pdfas, Member 77 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 300, group = NNPDF31_nlo_hessian_pdfas, Member 78 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 301, group = NNPDF31_nlo_hessian_pdfas, Member 79 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 302, group = NNPDF31_nlo_hessian_pdfas, Member 80 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 303, group = NNPDF31_nlo_hessian_pdfas, Member 81 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 304, group = NNPDF31_nlo_hessian_pdfas, Member 82 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 305, group = NNPDF31_nlo_hessian_pdfas, Member 83 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 306, group = NNPDF31_nlo_hessian_pdfas, Member 84 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 307, group = NNPDF31_nlo_hessian_pdfas, Member 85 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 308, group = NNPDF31_nlo_hessian_pdfas, Member 86 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 309, group = NNPDF31_nlo_hessian_pdfas, Member 87 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 310, group = NNPDF31_nlo_hessian_pdfas, Member 88 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 311, group = NNPDF31_nlo_hessian_pdfas, Member 89 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 312, group = NNPDF31_nlo_hessian_pdfas, Member 90 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 313, group = NNPDF31_nlo_hessian_pdfas, Member 91 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 314, group = NNPDF31_nlo_hessian_pdfas, Member 92 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 315, group = NNPDF31_nlo_hessian_pdfas, Member 93 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 316, group = NNPDF31_nlo_hessian_pdfas, Member 94 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 317, group = NNPDF31_nlo_hessian_pdfas, Member 95 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 318, group = NNPDF31_nlo_hessian_pdfas, Member 96 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 319, group = NNPDF31_nlo_hessian_pdfas, Member 97 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 320, group = NNPDF31_nlo_hessian_pdfas, Member 98 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 321, group = NNPDF31_nlo_hessian_pdfas, Member 99 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 322, group = NNPDF31_nlo_hessian_pdfas, Member 100 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 323, group = NNPDF31_nlo_hessian_pdfas, Member 101 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 324, group = NNPDF31_nlo_hessian_pdfas, Member 102 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 325, group = CT14nnlo, Member 0 of sets CT14nnlo +LHE, id = 326, group = CT14nnlo, Member 1 of sets CT14nnlo +LHE, id = 327, group = CT14nnlo, Member 2 of sets CT14nnlo +LHE, id = 328, group = CT14nnlo, Member 3 of sets CT14nnlo +LHE, id = 329, group = CT14nnlo, Member 4 of sets CT14nnlo +LHE, id = 330, group = CT14nnlo, Member 5 of sets CT14nnlo +LHE, id = 331, group = CT14nnlo, Member 6 of sets CT14nnlo +LHE, id = 332, group = CT14nnlo, Member 7 of sets CT14nnlo +LHE, id = 333, group = CT14nnlo, Member 8 of sets CT14nnlo +LHE, id = 334, group = CT14nnlo, Member 9 of sets CT14nnlo +LHE, id = 335, group = CT14nnlo, Member 10 of sets CT14nnlo +LHE, id = 336, group = CT14nnlo, Member 11 of sets CT14nnlo +LHE, id = 337, group = CT14nnlo, Member 12 of sets CT14nnlo +LHE, id = 338, group = CT14nnlo, Member 13 of sets CT14nnlo +LHE, id = 339, group = CT14nnlo, Member 14 of sets CT14nnlo +LHE, id = 340, group = CT14nnlo, Member 15 of sets CT14nnlo +LHE, id = 341, group = CT14nnlo, Member 16 of sets CT14nnlo +LHE, id = 342, group = CT14nnlo, Member 17 of sets CT14nnlo +LHE, id = 343, group = CT14nnlo, Member 18 of sets CT14nnlo +LHE, id = 344, group = CT14nnlo, Member 19 of sets CT14nnlo +LHE, id = 345, group = CT14nnlo, Member 20 of sets CT14nnlo +LHE, id = 346, group = CT14nnlo, Member 21 of sets CT14nnlo +LHE, id = 347, group = CT14nnlo, Member 22 of sets CT14nnlo +LHE, id = 348, group = CT14nnlo, Member 23 of sets CT14nnlo +LHE, id = 349, group = CT14nnlo, Member 24 of sets CT14nnlo +LHE, id = 350, group = CT14nnlo, Member 25 of sets CT14nnlo +LHE, id = 351, group = CT14nnlo, Member 26 of sets CT14nnlo +LHE, id = 352, group = CT14nnlo, Member 27 of sets CT14nnlo +LHE, id = 353, group = CT14nnlo, Member 28 of sets CT14nnlo +LHE, id = 354, group = CT14nnlo, Member 29 of sets CT14nnlo +LHE, id = 355, group = CT14nnlo, Member 30 of sets CT14nnlo +LHE, id = 356, group = CT14nnlo, Member 31 of sets CT14nnlo +LHE, id = 357, group = CT14nnlo, Member 32 of sets CT14nnlo +LHE, id = 358, group = CT14nnlo, Member 33 of sets CT14nnlo +LHE, id = 359, group = CT14nnlo, Member 34 of sets CT14nnlo +LHE, id = 360, group = CT14nnlo, Member 35 of sets CT14nnlo +LHE, id = 361, group = CT14nnlo, Member 36 of sets CT14nnlo +LHE, id = 362, group = CT14nnlo, Member 37 of sets CT14nnlo +LHE, id = 363, group = CT14nnlo, Member 38 of sets CT14nnlo +LHE, id = 364, group = CT14nnlo, Member 39 of sets CT14nnlo +LHE, id = 365, group = CT14nnlo, Member 40 of sets CT14nnlo +LHE, id = 366, group = CT14nnlo, Member 41 of sets CT14nnlo +LHE, id = 367, group = CT14nnlo, Member 42 of sets CT14nnlo +LHE, id = 368, group = CT14nnlo, Member 43 of sets CT14nnlo +LHE, id = 369, group = CT14nnlo, Member 44 of sets CT14nnlo +LHE, id = 370, group = CT14nnlo, Member 45 of sets CT14nnlo +LHE, id = 371, group = CT14nnlo, Member 46 of sets CT14nnlo +LHE, id = 372, group = CT14nnlo, Member 47 of sets CT14nnlo +LHE, id = 373, group = CT14nnlo, Member 48 of sets CT14nnlo +LHE, id = 374, group = CT14nnlo, Member 49 of sets CT14nnlo +LHE, id = 375, group = CT14nnlo, Member 50 of sets CT14nnlo +LHE, id = 376, group = CT14nnlo, Member 51 of sets CT14nnlo +LHE, id = 377, group = CT14nnlo, Member 52 of sets CT14nnlo +LHE, id = 378, group = CT14nnlo, Member 53 of sets CT14nnlo +LHE, id = 379, group = CT14nnlo, Member 54 of sets CT14nnlo +LHE, id = 380, group = CT14nnlo, Member 55 of sets CT14nnlo +LHE, id = 381, group = CT14nnlo, Member 56 of sets CT14nnlo +LHE, id = 382, group = CT14nnlo_as_0116, Member 0 of sets CT14nnlo_as_0116 +LHE, id = 383, group = CT14nnlo_as_0120, Member 0 of sets CT14nnlo_as_0120 +LHE, id = 384, group = CT14nlo, Member 0 of sets CT14nlo +LHE, id = 385, group = CT14nlo, Member 1 of sets CT14nlo +LHE, id = 386, group = CT14nlo, Member 2 of sets CT14nlo +LHE, id = 387, group = CT14nlo, Member 3 of sets CT14nlo +LHE, id = 388, group = CT14nlo, Member 4 of sets CT14nlo +LHE, id = 389, group = CT14nlo, Member 5 of sets CT14nlo +LHE, id = 390, group = CT14nlo, Member 6 of sets CT14nlo +LHE, id = 391, group = CT14nlo, Member 7 of sets CT14nlo +LHE, id = 392, group = CT14nlo, Member 8 of sets CT14nlo +LHE, id = 393, group = CT14nlo, Member 9 of sets CT14nlo +LHE, id = 394, group = CT14nlo, Member 10 of sets CT14nlo +LHE, id = 395, group = CT14nlo, Member 11 of sets CT14nlo +LHE, id = 396, group = CT14nlo, Member 12 of sets CT14nlo +LHE, id = 397, group = CT14nlo, Member 13 of sets CT14nlo +LHE, id = 398, group = CT14nlo, Member 14 of sets CT14nlo +LHE, id = 399, group = CT14nlo, Member 15 of sets CT14nlo +LHE, id = 400, group = CT14nlo, Member 16 of sets CT14nlo +LHE, id = 401, group = CT14nlo, Member 17 of sets CT14nlo +LHE, id = 402, group = CT14nlo, Member 18 of sets CT14nlo +LHE, id = 403, group = CT14nlo, Member 19 of sets CT14nlo +LHE, id = 404, group = CT14nlo, Member 20 of sets CT14nlo +LHE, id = 405, group = CT14nlo, Member 21 of sets CT14nlo +LHE, id = 406, group = CT14nlo, Member 22 of sets CT14nlo +LHE, id = 407, group = CT14nlo, Member 23 of sets CT14nlo +LHE, id = 408, group = CT14nlo, Member 24 of sets CT14nlo +LHE, id = 409, group = CT14nlo, Member 25 of sets CT14nlo +LHE, id = 410, group = CT14nlo, Member 26 of sets CT14nlo +LHE, id = 411, group = CT14nlo, Member 27 of sets CT14nlo +LHE, id = 412, group = CT14nlo, Member 28 of sets CT14nlo +LHE, id = 413, group = CT14nlo, Member 29 of sets CT14nlo +LHE, id = 414, group = CT14nlo, Member 30 of sets CT14nlo +LHE, id = 415, group = CT14nlo, Member 31 of sets CT14nlo +LHE, id = 416, group = CT14nlo, Member 32 of sets CT14nlo +LHE, id = 417, group = CT14nlo, Member 33 of sets CT14nlo +LHE, id = 418, group = CT14nlo, Member 34 of sets CT14nlo +LHE, id = 419, group = CT14nlo, Member 35 of sets CT14nlo +LHE, id = 420, group = CT14nlo, Member 36 of sets CT14nlo +LHE, id = 421, group = CT14nlo, Member 37 of sets CT14nlo +LHE, id = 422, group = CT14nlo, Member 38 of sets CT14nlo +LHE, id = 423, group = CT14nlo, Member 39 of sets CT14nlo +LHE, id = 424, group = CT14nlo, Member 40 of sets CT14nlo +LHE, id = 425, group = CT14nlo, Member 41 of sets CT14nlo +LHE, id = 426, group = CT14nlo, Member 42 of sets CT14nlo +LHE, id = 427, group = CT14nlo, Member 43 of sets CT14nlo +LHE, id = 428, group = CT14nlo, Member 44 of sets CT14nlo +LHE, id = 429, group = CT14nlo, Member 45 of sets CT14nlo +LHE, id = 430, group = CT14nlo, Member 46 of sets CT14nlo +LHE, id = 431, group = CT14nlo, Member 47 of sets CT14nlo +LHE, id = 432, group = CT14nlo, Member 48 of sets CT14nlo +LHE, id = 433, group = CT14nlo, Member 49 of sets CT14nlo +LHE, id = 434, group = CT14nlo, Member 50 of sets CT14nlo +LHE, id = 435, group = CT14nlo, Member 51 of sets CT14nlo +LHE, id = 436, group = CT14nlo, Member 52 of sets CT14nlo +LHE, id = 437, group = CT14nlo, Member 53 of sets CT14nlo +LHE, id = 438, group = CT14nlo, Member 54 of sets CT14nlo +LHE, id = 439, group = CT14nlo, Member 55 of sets CT14nlo +LHE, id = 440, group = CT14nlo, Member 56 of sets CT14nlo +LHE, id = 441, group = CT14nlo_as_0116, Member 0 of sets CT14nlo_as_0116 +LHE, id = 442, group = CT14nlo_as_0120, Member 0 of sets CT14nlo_as_0120 +LHE, id = 443, group = CT14lo, Member 0 of sets CT14lo +LHE, id = 444, group = MMHT2014nlo68clas118, Member 0 of sets MMHT2014nlo68clas118 +LHE, id = 445, group = MMHT2014nlo68clas118, Member 1 of sets MMHT2014nlo68clas118 +LHE, id = 446, group = MMHT2014nlo68clas118, Member 2 of sets MMHT2014nlo68clas118 +LHE, id = 447, group = MMHT2014nlo68clas118, Member 3 of sets MMHT2014nlo68clas118 +LHE, id = 448, group = MMHT2014nlo68clas118, Member 4 of sets MMHT2014nlo68clas118 +LHE, id = 449, group = MMHT2014nlo68clas118, Member 5 of sets MMHT2014nlo68clas118 +LHE, id = 450, group = MMHT2014nlo68clas118, Member 6 of sets MMHT2014nlo68clas118 +LHE, id = 451, group = MMHT2014nlo68clas118, Member 7 of sets MMHT2014nlo68clas118 +LHE, id = 452, group = MMHT2014nlo68clas118, Member 8 of sets MMHT2014nlo68clas118 +LHE, id = 453, group = MMHT2014nlo68clas118, Member 9 of sets MMHT2014nlo68clas118 +LHE, id = 454, group = MMHT2014nlo68clas118, Member 10 of sets MMHT2014nlo68clas118 +LHE, id = 455, group = MMHT2014nlo68clas118, Member 11 of sets MMHT2014nlo68clas118 +LHE, id = 456, group = MMHT2014nlo68clas118, Member 12 of sets MMHT2014nlo68clas118 +LHE, id = 457, group = MMHT2014nlo68clas118, Member 13 of sets MMHT2014nlo68clas118 +LHE, id = 458, group = MMHT2014nlo68clas118, Member 14 of sets MMHT2014nlo68clas118 +LHE, id = 459, group = MMHT2014nlo68clas118, Member 15 of sets MMHT2014nlo68clas118 +LHE, id = 460, group = MMHT2014nlo68clas118, Member 16 of sets MMHT2014nlo68clas118 +LHE, id = 461, group = MMHT2014nlo68clas118, Member 17 of sets MMHT2014nlo68clas118 +LHE, id = 462, group = MMHT2014nlo68clas118, Member 18 of sets MMHT2014nlo68clas118 +LHE, id = 463, group = MMHT2014nlo68clas118, Member 19 of sets MMHT2014nlo68clas118 +LHE, id = 464, group = MMHT2014nlo68clas118, Member 20 of sets MMHT2014nlo68clas118 +LHE, id = 465, group = MMHT2014nlo68clas118, Member 21 of sets MMHT2014nlo68clas118 +LHE, id = 466, group = MMHT2014nlo68clas118, Member 22 of sets MMHT2014nlo68clas118 +LHE, id = 467, group = MMHT2014nlo68clas118, Member 23 of sets MMHT2014nlo68clas118 +LHE, id = 468, group = MMHT2014nlo68clas118, Member 24 of sets MMHT2014nlo68clas118 +LHE, id = 469, group = MMHT2014nlo68clas118, Member 25 of sets MMHT2014nlo68clas118 +LHE, id = 470, group = MMHT2014nlo68clas118, Member 26 of sets MMHT2014nlo68clas118 +LHE, id = 471, group = MMHT2014nlo68clas118, Member 27 of sets MMHT2014nlo68clas118 +LHE, id = 472, group = MMHT2014nlo68clas118, Member 28 of sets MMHT2014nlo68clas118 +LHE, id = 473, group = MMHT2014nlo68clas118, Member 29 of sets MMHT2014nlo68clas118 +LHE, id = 474, group = MMHT2014nlo68clas118, Member 30 of sets MMHT2014nlo68clas118 +LHE, id = 475, group = MMHT2014nlo68clas118, Member 31 of sets MMHT2014nlo68clas118 +LHE, id = 476, group = MMHT2014nlo68clas118, Member 32 of sets MMHT2014nlo68clas118 +LHE, id = 477, group = MMHT2014nlo68clas118, Member 33 of sets MMHT2014nlo68clas118 +LHE, id = 478, group = MMHT2014nlo68clas118, Member 34 of sets MMHT2014nlo68clas118 +LHE, id = 479, group = MMHT2014nlo68clas118, Member 35 of sets MMHT2014nlo68clas118 +LHE, id = 480, group = MMHT2014nlo68clas118, Member 36 of sets MMHT2014nlo68clas118 +LHE, id = 481, group = MMHT2014nlo68clas118, Member 37 of sets MMHT2014nlo68clas118 +LHE, id = 482, group = MMHT2014nlo68clas118, Member 38 of sets MMHT2014nlo68clas118 +LHE, id = 483, group = MMHT2014nlo68clas118, Member 39 of sets MMHT2014nlo68clas118 +LHE, id = 484, group = MMHT2014nlo68clas118, Member 40 of sets MMHT2014nlo68clas118 +LHE, id = 485, group = MMHT2014nlo68clas118, Member 41 of sets MMHT2014nlo68clas118 +LHE, id = 486, group = MMHT2014nlo68clas118, Member 42 of sets MMHT2014nlo68clas118 +LHE, id = 487, group = MMHT2014nlo68clas118, Member 43 of sets MMHT2014nlo68clas118 +LHE, id = 488, group = MMHT2014nlo68clas118, Member 44 of sets MMHT2014nlo68clas118 +LHE, id = 489, group = MMHT2014nlo68clas118, Member 45 of sets MMHT2014nlo68clas118 +LHE, id = 490, group = MMHT2014nlo68clas118, Member 46 of sets MMHT2014nlo68clas118 +LHE, id = 491, group = MMHT2014nlo68clas118, Member 47 of sets MMHT2014nlo68clas118 +LHE, id = 492, group = MMHT2014nlo68clas118, Member 48 of sets MMHT2014nlo68clas118 +LHE, id = 493, group = MMHT2014nlo68clas118, Member 49 of sets MMHT2014nlo68clas118 +LHE, id = 494, group = MMHT2014nlo68clas118, Member 50 of sets MMHT2014nlo68clas118 +LHE, id = 495, group = MMHT2014nnlo68cl, Member 0 of sets MMHT2014nnlo68cl +LHE, id = 496, group = MMHT2014nnlo68cl, Member 1 of sets MMHT2014nnlo68cl +LHE, id = 497, group = MMHT2014nnlo68cl, Member 2 of sets MMHT2014nnlo68cl +LHE, id = 498, group = MMHT2014nnlo68cl, Member 3 of sets MMHT2014nnlo68cl +LHE, id = 499, group = MMHT2014nnlo68cl, Member 4 of sets MMHT2014nnlo68cl +LHE, id = 500, group = MMHT2014nnlo68cl, Member 5 of sets MMHT2014nnlo68cl +LHE, id = 501, group = MMHT2014nnlo68cl, Member 6 of sets MMHT2014nnlo68cl +LHE, id = 502, group = MMHT2014nnlo68cl, Member 7 of sets MMHT2014nnlo68cl +LHE, id = 503, group = MMHT2014nnlo68cl, Member 8 of sets MMHT2014nnlo68cl +LHE, id = 504, group = MMHT2014nnlo68cl, Member 9 of sets MMHT2014nnlo68cl +LHE, id = 505, group = MMHT2014nnlo68cl, Member 10 of sets MMHT2014nnlo68cl +LHE, id = 506, group = MMHT2014nnlo68cl, Member 11 of sets MMHT2014nnlo68cl +LHE, id = 507, group = MMHT2014nnlo68cl, Member 12 of sets MMHT2014nnlo68cl +LHE, id = 508, group = MMHT2014nnlo68cl, Member 13 of sets MMHT2014nnlo68cl +LHE, id = 509, group = MMHT2014nnlo68cl, Member 14 of sets MMHT2014nnlo68cl +LHE, id = 510, group = MMHT2014nnlo68cl, Member 15 of sets MMHT2014nnlo68cl +LHE, id = 511, group = MMHT2014nnlo68cl, Member 16 of sets MMHT2014nnlo68cl +LHE, id = 512, group = MMHT2014nnlo68cl, Member 17 of sets MMHT2014nnlo68cl +LHE, id = 513, group = MMHT2014nnlo68cl, Member 18 of sets MMHT2014nnlo68cl +LHE, id = 514, group = MMHT2014nnlo68cl, Member 19 of sets MMHT2014nnlo68cl +LHE, id = 515, group = MMHT2014nnlo68cl, Member 20 of sets MMHT2014nnlo68cl +LHE, id = 516, group = MMHT2014nnlo68cl, Member 21 of sets MMHT2014nnlo68cl +LHE, id = 517, group = MMHT2014nnlo68cl, Member 22 of sets MMHT2014nnlo68cl +LHE, id = 518, group = MMHT2014nnlo68cl, Member 23 of sets MMHT2014nnlo68cl +LHE, id = 519, group = MMHT2014nnlo68cl, Member 24 of sets MMHT2014nnlo68cl +LHE, id = 520, group = MMHT2014nnlo68cl, Member 25 of sets MMHT2014nnlo68cl +LHE, id = 521, group = MMHT2014nnlo68cl, Member 26 of sets MMHT2014nnlo68cl +LHE, id = 522, group = MMHT2014nnlo68cl, Member 27 of sets MMHT2014nnlo68cl +LHE, id = 523, group = MMHT2014nnlo68cl, Member 28 of sets MMHT2014nnlo68cl +LHE, id = 524, group = MMHT2014nnlo68cl, Member 29 of sets MMHT2014nnlo68cl +LHE, id = 525, group = MMHT2014nnlo68cl, Member 30 of sets MMHT2014nnlo68cl +LHE, id = 526, group = MMHT2014nnlo68cl, Member 31 of sets MMHT2014nnlo68cl +LHE, id = 527, group = MMHT2014nnlo68cl, Member 32 of sets MMHT2014nnlo68cl +LHE, id = 528, group = MMHT2014nnlo68cl, Member 33 of sets MMHT2014nnlo68cl +LHE, id = 529, group = MMHT2014nnlo68cl, Member 34 of sets MMHT2014nnlo68cl +LHE, id = 530, group = MMHT2014nnlo68cl, Member 35 of sets MMHT2014nnlo68cl +LHE, id = 531, group = MMHT2014nnlo68cl, Member 36 of sets MMHT2014nnlo68cl +LHE, id = 532, group = MMHT2014nnlo68cl, Member 37 of sets MMHT2014nnlo68cl +LHE, id = 533, group = MMHT2014nnlo68cl, Member 38 of sets MMHT2014nnlo68cl +LHE, id = 534, group = MMHT2014nnlo68cl, Member 39 of sets MMHT2014nnlo68cl +LHE, id = 535, group = MMHT2014nnlo68cl, Member 40 of sets MMHT2014nnlo68cl +LHE, id = 536, group = MMHT2014nnlo68cl, Member 41 of sets MMHT2014nnlo68cl +LHE, id = 537, group = MMHT2014nnlo68cl, Member 42 of sets MMHT2014nnlo68cl +LHE, id = 538, group = MMHT2014nnlo68cl, Member 43 of sets MMHT2014nnlo68cl +LHE, id = 539, group = MMHT2014nnlo68cl, Member 44 of sets MMHT2014nnlo68cl +LHE, id = 540, group = MMHT2014nnlo68cl, Member 45 of sets MMHT2014nnlo68cl +LHE, id = 541, group = MMHT2014nnlo68cl, Member 46 of sets MMHT2014nnlo68cl +LHE, id = 542, group = MMHT2014nnlo68cl, Member 47 of sets MMHT2014nnlo68cl +LHE, id = 543, group = MMHT2014nnlo68cl, Member 48 of sets MMHT2014nnlo68cl +LHE, id = 544, group = MMHT2014nnlo68cl, Member 49 of sets MMHT2014nnlo68cl +LHE, id = 545, group = MMHT2014nnlo68cl, Member 50 of sets MMHT2014nnlo68cl +LHE, id = 546, group = MMHT2014lo68cl, Member 0 of sets MMHT2014lo68cl +LHE, id = 547, group = ABMP16als118_5_nnlo, Member 0 of sets ABMP16als118_5_nnlo +LHE, id = 548, group = ABMP16als118_5_nnlo, Member 1 of sets ABMP16als118_5_nnlo +LHE, id = 549, group = ABMP16als118_5_nnlo, Member 2 of sets ABMP16als118_5_nnlo +LHE, id = 550, group = ABMP16als118_5_nnlo, Member 3 of sets ABMP16als118_5_nnlo +LHE, id = 551, group = ABMP16als118_5_nnlo, Member 4 of sets ABMP16als118_5_nnlo +LHE, id = 552, group = ABMP16als118_5_nnlo, Member 5 of sets ABMP16als118_5_nnlo +LHE, id = 553, group = ABMP16als118_5_nnlo, Member 6 of sets ABMP16als118_5_nnlo +LHE, id = 554, group = ABMP16als118_5_nnlo, Member 7 of sets ABMP16als118_5_nnlo +LHE, id = 555, group = ABMP16als118_5_nnlo, Member 8 of sets ABMP16als118_5_nnlo +LHE, id = 556, group = ABMP16als118_5_nnlo, Member 9 of sets ABMP16als118_5_nnlo +LHE, id = 557, group = ABMP16als118_5_nnlo, Member 10 of sets ABMP16als118_5_nnlo +LHE, id = 558, group = ABMP16als118_5_nnlo, Member 11 of sets ABMP16als118_5_nnlo +LHE, id = 559, group = ABMP16als118_5_nnlo, Member 12 of sets ABMP16als118_5_nnlo +LHE, id = 560, group = ABMP16als118_5_nnlo, Member 13 of sets ABMP16als118_5_nnlo +LHE, id = 561, group = ABMP16als118_5_nnlo, Member 14 of sets ABMP16als118_5_nnlo +LHE, id = 562, group = ABMP16als118_5_nnlo, Member 15 of sets ABMP16als118_5_nnlo +LHE, id = 563, group = ABMP16als118_5_nnlo, Member 16 of sets ABMP16als118_5_nnlo +LHE, id = 564, group = ABMP16als118_5_nnlo, Member 17 of sets ABMP16als118_5_nnlo +LHE, id = 565, group = ABMP16als118_5_nnlo, Member 18 of sets ABMP16als118_5_nnlo +LHE, id = 566, group = ABMP16als118_5_nnlo, Member 19 of sets ABMP16als118_5_nnlo +LHE, id = 567, group = ABMP16als118_5_nnlo, Member 20 of sets ABMP16als118_5_nnlo +LHE, id = 568, group = ABMP16als118_5_nnlo, Member 21 of sets ABMP16als118_5_nnlo +LHE, id = 569, group = ABMP16als118_5_nnlo, Member 22 of sets ABMP16als118_5_nnlo +LHE, id = 570, group = ABMP16als118_5_nnlo, Member 23 of sets ABMP16als118_5_nnlo +LHE, id = 571, group = ABMP16als118_5_nnlo, Member 24 of sets ABMP16als118_5_nnlo +LHE, id = 572, group = ABMP16als118_5_nnlo, Member 25 of sets ABMP16als118_5_nnlo +LHE, id = 573, group = ABMP16als118_5_nnlo, Member 26 of sets ABMP16als118_5_nnlo +LHE, id = 574, group = ABMP16als118_5_nnlo, Member 27 of sets ABMP16als118_5_nnlo +LHE, id = 575, group = ABMP16als118_5_nnlo, Member 28 of sets ABMP16als118_5_nnlo +LHE, id = 576, group = ABMP16als118_5_nnlo, Member 29 of sets ABMP16als118_5_nnlo +LHE, id = 577, group = PDF4LHC15_nlo_100_pdfas, Member 0 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 578, group = PDF4LHC15_nlo_100_pdfas, Member 1 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 579, group = PDF4LHC15_nlo_100_pdfas, Member 2 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 580, group = PDF4LHC15_nlo_100_pdfas, Member 3 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 581, group = PDF4LHC15_nlo_100_pdfas, Member 4 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 582, group = PDF4LHC15_nlo_100_pdfas, Member 5 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 583, group = PDF4LHC15_nlo_100_pdfas, Member 6 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 584, group = PDF4LHC15_nlo_100_pdfas, Member 7 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 585, group = PDF4LHC15_nlo_100_pdfas, Member 8 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 586, group = PDF4LHC15_nlo_100_pdfas, Member 9 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 587, group = PDF4LHC15_nlo_100_pdfas, Member 10 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 588, group = PDF4LHC15_nlo_100_pdfas, Member 11 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 589, group = PDF4LHC15_nlo_100_pdfas, Member 12 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 590, group = PDF4LHC15_nlo_100_pdfas, Member 13 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 591, group = PDF4LHC15_nlo_100_pdfas, Member 14 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 592, group = PDF4LHC15_nlo_100_pdfas, Member 15 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 593, group = PDF4LHC15_nlo_100_pdfas, Member 16 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 594, group = PDF4LHC15_nlo_100_pdfas, Member 17 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 595, group = PDF4LHC15_nlo_100_pdfas, Member 18 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 596, group = PDF4LHC15_nlo_100_pdfas, Member 19 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 597, group = PDF4LHC15_nlo_100_pdfas, Member 20 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 598, group = PDF4LHC15_nlo_100_pdfas, Member 21 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 599, group = PDF4LHC15_nlo_100_pdfas, Member 22 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 600, group = PDF4LHC15_nlo_100_pdfas, Member 23 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 601, group = PDF4LHC15_nlo_100_pdfas, Member 24 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 602, group = PDF4LHC15_nlo_100_pdfas, Member 25 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 603, group = PDF4LHC15_nlo_100_pdfas, Member 26 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 604, group = PDF4LHC15_nlo_100_pdfas, Member 27 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 605, group = PDF4LHC15_nlo_100_pdfas, Member 28 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 606, group = PDF4LHC15_nlo_100_pdfas, Member 29 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 607, group = PDF4LHC15_nlo_100_pdfas, Member 30 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 608, group = PDF4LHC15_nlo_100_pdfas, Member 31 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 609, group = PDF4LHC15_nlo_100_pdfas, Member 32 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 610, group = PDF4LHC15_nlo_100_pdfas, Member 33 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 611, group = PDF4LHC15_nlo_100_pdfas, Member 34 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 612, group = PDF4LHC15_nlo_100_pdfas, Member 35 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 613, group = PDF4LHC15_nlo_100_pdfas, Member 36 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 614, group = PDF4LHC15_nlo_100_pdfas, Member 37 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 615, group = PDF4LHC15_nlo_100_pdfas, Member 38 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 616, group = PDF4LHC15_nlo_100_pdfas, Member 39 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 617, group = PDF4LHC15_nlo_100_pdfas, Member 40 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 618, group = PDF4LHC15_nlo_100_pdfas, Member 41 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 619, group = PDF4LHC15_nlo_100_pdfas, Member 42 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 620, group = PDF4LHC15_nlo_100_pdfas, Member 43 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 621, group = PDF4LHC15_nlo_100_pdfas, Member 44 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 622, group = PDF4LHC15_nlo_100_pdfas, Member 45 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 623, group = PDF4LHC15_nlo_100_pdfas, Member 46 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 624, group = PDF4LHC15_nlo_100_pdfas, Member 47 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 625, group = PDF4LHC15_nlo_100_pdfas, Member 48 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 626, group = PDF4LHC15_nlo_100_pdfas, Member 49 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 627, group = PDF4LHC15_nlo_100_pdfas, Member 50 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 628, group = PDF4LHC15_nlo_100_pdfas, Member 51 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 629, group = PDF4LHC15_nlo_100_pdfas, Member 52 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 630, group = PDF4LHC15_nlo_100_pdfas, Member 53 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 631, group = PDF4LHC15_nlo_100_pdfas, Member 54 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 632, group = PDF4LHC15_nlo_100_pdfas, Member 55 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 633, group = PDF4LHC15_nlo_100_pdfas, Member 56 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 634, group = PDF4LHC15_nlo_100_pdfas, Member 57 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 635, group = PDF4LHC15_nlo_100_pdfas, Member 58 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 636, group = PDF4LHC15_nlo_100_pdfas, Member 59 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 637, group = PDF4LHC15_nlo_100_pdfas, Member 60 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 638, group = PDF4LHC15_nlo_100_pdfas, Member 61 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 639, group = PDF4LHC15_nlo_100_pdfas, Member 62 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 640, group = PDF4LHC15_nlo_100_pdfas, Member 63 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 641, group = PDF4LHC15_nlo_100_pdfas, Member 64 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 642, group = PDF4LHC15_nlo_100_pdfas, Member 65 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 643, group = PDF4LHC15_nlo_100_pdfas, Member 66 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 644, group = PDF4LHC15_nlo_100_pdfas, Member 67 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 645, group = PDF4LHC15_nlo_100_pdfas, Member 68 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 646, group = PDF4LHC15_nlo_100_pdfas, Member 69 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 647, group = PDF4LHC15_nlo_100_pdfas, Member 70 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 648, group = PDF4LHC15_nlo_100_pdfas, Member 71 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 649, group = PDF4LHC15_nlo_100_pdfas, Member 72 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 650, group = PDF4LHC15_nlo_100_pdfas, Member 73 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 651, group = PDF4LHC15_nlo_100_pdfas, Member 74 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 652, group = PDF4LHC15_nlo_100_pdfas, Member 75 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 653, group = PDF4LHC15_nlo_100_pdfas, Member 76 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 654, group = PDF4LHC15_nlo_100_pdfas, Member 77 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 655, group = PDF4LHC15_nlo_100_pdfas, Member 78 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 656, group = PDF4LHC15_nlo_100_pdfas, Member 79 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 657, group = PDF4LHC15_nlo_100_pdfas, Member 80 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 658, group = PDF4LHC15_nlo_100_pdfas, Member 81 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 659, group = PDF4LHC15_nlo_100_pdfas, Member 82 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 660, group = PDF4LHC15_nlo_100_pdfas, Member 83 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 661, group = PDF4LHC15_nlo_100_pdfas, Member 84 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 662, group = PDF4LHC15_nlo_100_pdfas, Member 85 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 663, group = PDF4LHC15_nlo_100_pdfas, Member 86 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 664, group = PDF4LHC15_nlo_100_pdfas, Member 87 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 665, group = PDF4LHC15_nlo_100_pdfas, Member 88 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 666, group = PDF4LHC15_nlo_100_pdfas, Member 89 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 667, group = PDF4LHC15_nlo_100_pdfas, Member 90 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 668, group = PDF4LHC15_nlo_100_pdfas, Member 91 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 669, group = PDF4LHC15_nlo_100_pdfas, Member 92 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 670, group = PDF4LHC15_nlo_100_pdfas, Member 93 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 671, group = PDF4LHC15_nlo_100_pdfas, Member 94 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 672, group = PDF4LHC15_nlo_100_pdfas, Member 95 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 673, group = PDF4LHC15_nlo_100_pdfas, Member 96 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 674, group = PDF4LHC15_nlo_100_pdfas, Member 97 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 675, group = PDF4LHC15_nlo_100_pdfas, Member 98 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 676, group = PDF4LHC15_nlo_100_pdfas, Member 99 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 677, group = PDF4LHC15_nlo_100_pdfas, Member 100 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 678, group = PDF4LHC15_nlo_100_pdfas, Member 101 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 679, group = PDF4LHC15_nlo_100_pdfas, Member 102 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 680, group = PDF4LHC15_nnlo_100_pdfas, Member 0 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 681, group = PDF4LHC15_nnlo_100_pdfas, Member 1 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 682, group = PDF4LHC15_nnlo_100_pdfas, Member 2 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 683, group = PDF4LHC15_nnlo_100_pdfas, Member 3 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 684, group = PDF4LHC15_nnlo_100_pdfas, Member 4 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 685, group = PDF4LHC15_nnlo_100_pdfas, Member 5 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 686, group = PDF4LHC15_nnlo_100_pdfas, Member 6 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 687, group = PDF4LHC15_nnlo_100_pdfas, Member 7 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 688, group = PDF4LHC15_nnlo_100_pdfas, Member 8 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 689, group = PDF4LHC15_nnlo_100_pdfas, Member 9 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 690, group = PDF4LHC15_nnlo_100_pdfas, Member 10 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 691, group = PDF4LHC15_nnlo_100_pdfas, Member 11 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 692, group = PDF4LHC15_nnlo_100_pdfas, Member 12 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 693, group = PDF4LHC15_nnlo_100_pdfas, Member 13 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 694, group = PDF4LHC15_nnlo_100_pdfas, Member 14 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 695, group = PDF4LHC15_nnlo_100_pdfas, Member 15 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 696, group = PDF4LHC15_nnlo_100_pdfas, Member 16 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 697, group = PDF4LHC15_nnlo_100_pdfas, Member 17 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 698, group = PDF4LHC15_nnlo_100_pdfas, Member 18 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 699, group = PDF4LHC15_nnlo_100_pdfas, Member 19 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 700, group = PDF4LHC15_nnlo_100_pdfas, Member 20 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 701, group = PDF4LHC15_nnlo_100_pdfas, Member 21 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 702, group = PDF4LHC15_nnlo_100_pdfas, Member 22 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 703, group = PDF4LHC15_nnlo_100_pdfas, Member 23 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 704, group = PDF4LHC15_nnlo_100_pdfas, Member 24 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 705, group = PDF4LHC15_nnlo_100_pdfas, Member 25 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 706, group = PDF4LHC15_nnlo_100_pdfas, Member 26 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 707, group = PDF4LHC15_nnlo_100_pdfas, Member 27 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 708, group = PDF4LHC15_nnlo_100_pdfas, Member 28 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 709, group = PDF4LHC15_nnlo_100_pdfas, Member 29 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 710, group = PDF4LHC15_nnlo_100_pdfas, Member 30 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 711, group = PDF4LHC15_nnlo_100_pdfas, Member 31 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 712, group = PDF4LHC15_nnlo_100_pdfas, Member 32 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 713, group = PDF4LHC15_nnlo_100_pdfas, Member 33 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 714, group = PDF4LHC15_nnlo_100_pdfas, Member 34 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 715, group = PDF4LHC15_nnlo_100_pdfas, Member 35 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 716, group = PDF4LHC15_nnlo_100_pdfas, Member 36 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 717, group = PDF4LHC15_nnlo_100_pdfas, Member 37 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 718, group = PDF4LHC15_nnlo_100_pdfas, Member 38 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 719, group = PDF4LHC15_nnlo_100_pdfas, Member 39 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 720, group = PDF4LHC15_nnlo_100_pdfas, Member 40 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 721, group = PDF4LHC15_nnlo_100_pdfas, Member 41 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 722, group = PDF4LHC15_nnlo_100_pdfas, Member 42 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 723, group = PDF4LHC15_nnlo_100_pdfas, Member 43 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 724, group = PDF4LHC15_nnlo_100_pdfas, Member 44 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 725, group = PDF4LHC15_nnlo_100_pdfas, Member 45 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 726, group = PDF4LHC15_nnlo_100_pdfas, Member 46 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 727, group = PDF4LHC15_nnlo_100_pdfas, Member 47 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 728, group = PDF4LHC15_nnlo_100_pdfas, Member 48 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 729, group = PDF4LHC15_nnlo_100_pdfas, Member 49 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 730, group = PDF4LHC15_nnlo_100_pdfas, Member 50 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 731, group = PDF4LHC15_nnlo_100_pdfas, Member 51 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 732, group = PDF4LHC15_nnlo_100_pdfas, Member 52 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 733, group = PDF4LHC15_nnlo_100_pdfas, Member 53 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 734, group = PDF4LHC15_nnlo_100_pdfas, Member 54 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 735, group = PDF4LHC15_nnlo_100_pdfas, Member 55 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 736, group = PDF4LHC15_nnlo_100_pdfas, Member 56 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 737, group = PDF4LHC15_nnlo_100_pdfas, Member 57 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 738, group = PDF4LHC15_nnlo_100_pdfas, Member 58 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 739, group = PDF4LHC15_nnlo_100_pdfas, Member 59 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 740, group = PDF4LHC15_nnlo_100_pdfas, Member 60 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 741, group = PDF4LHC15_nnlo_100_pdfas, Member 61 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 742, group = PDF4LHC15_nnlo_100_pdfas, Member 62 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 743, group = PDF4LHC15_nnlo_100_pdfas, Member 63 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 744, group = PDF4LHC15_nnlo_100_pdfas, Member 64 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 745, group = PDF4LHC15_nnlo_100_pdfas, Member 65 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 746, group = PDF4LHC15_nnlo_100_pdfas, Member 66 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 747, group = PDF4LHC15_nnlo_100_pdfas, Member 67 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 748, group = PDF4LHC15_nnlo_100_pdfas, Member 68 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 749, group = PDF4LHC15_nnlo_100_pdfas, Member 69 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 750, group = PDF4LHC15_nnlo_100_pdfas, Member 70 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 751, group = PDF4LHC15_nnlo_100_pdfas, Member 71 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 752, group = PDF4LHC15_nnlo_100_pdfas, Member 72 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 753, group = PDF4LHC15_nnlo_100_pdfas, Member 73 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 754, group = PDF4LHC15_nnlo_100_pdfas, Member 74 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 755, group = PDF4LHC15_nnlo_100_pdfas, Member 75 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 756, group = PDF4LHC15_nnlo_100_pdfas, Member 76 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 757, group = PDF4LHC15_nnlo_100_pdfas, Member 77 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 758, group = PDF4LHC15_nnlo_100_pdfas, Member 78 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 759, group = PDF4LHC15_nnlo_100_pdfas, Member 79 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 760, group = PDF4LHC15_nnlo_100_pdfas, Member 80 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 761, group = PDF4LHC15_nnlo_100_pdfas, Member 81 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 762, group = PDF4LHC15_nnlo_100_pdfas, Member 82 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 763, group = PDF4LHC15_nnlo_100_pdfas, Member 83 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 764, group = PDF4LHC15_nnlo_100_pdfas, Member 84 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 765, group = PDF4LHC15_nnlo_100_pdfas, Member 85 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 766, group = PDF4LHC15_nnlo_100_pdfas, Member 86 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 767, group = PDF4LHC15_nnlo_100_pdfas, Member 87 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 768, group = PDF4LHC15_nnlo_100_pdfas, Member 88 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 769, group = PDF4LHC15_nnlo_100_pdfas, Member 89 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 770, group = PDF4LHC15_nnlo_100_pdfas, Member 90 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 771, group = PDF4LHC15_nnlo_100_pdfas, Member 91 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 772, group = PDF4LHC15_nnlo_100_pdfas, Member 92 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 773, group = PDF4LHC15_nnlo_100_pdfas, Member 93 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 774, group = PDF4LHC15_nnlo_100_pdfas, Member 94 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 775, group = PDF4LHC15_nnlo_100_pdfas, Member 95 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 776, group = PDF4LHC15_nnlo_100_pdfas, Member 96 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 777, group = PDF4LHC15_nnlo_100_pdfas, Member 97 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 778, group = PDF4LHC15_nnlo_100_pdfas, Member 98 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 779, group = PDF4LHC15_nnlo_100_pdfas, Member 99 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 780, group = PDF4LHC15_nnlo_100_pdfas, Member 100 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 781, group = PDF4LHC15_nnlo_100_pdfas, Member 101 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 782, group = PDF4LHC15_nnlo_100_pdfas, Member 102 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 783, group = PDF4LHC15_nlo_30_pdfas, Member 0 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 784, group = PDF4LHC15_nlo_30_pdfas, Member 1 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 785, group = PDF4LHC15_nlo_30_pdfas, Member 2 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 786, group = PDF4LHC15_nlo_30_pdfas, Member 3 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 787, group = PDF4LHC15_nlo_30_pdfas, Member 4 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 788, group = PDF4LHC15_nlo_30_pdfas, Member 5 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 789, group = PDF4LHC15_nlo_30_pdfas, Member 6 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 790, group = PDF4LHC15_nlo_30_pdfas, Member 7 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 791, group = PDF4LHC15_nlo_30_pdfas, Member 8 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 792, group = PDF4LHC15_nlo_30_pdfas, Member 9 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 793, group = PDF4LHC15_nlo_30_pdfas, Member 10 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 794, group = PDF4LHC15_nlo_30_pdfas, Member 11 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 795, group = PDF4LHC15_nlo_30_pdfas, Member 12 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 796, group = PDF4LHC15_nlo_30_pdfas, Member 13 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 797, group = PDF4LHC15_nlo_30_pdfas, Member 14 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 798, group = PDF4LHC15_nlo_30_pdfas, Member 15 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 799, group = PDF4LHC15_nlo_30_pdfas, Member 16 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 800, group = PDF4LHC15_nlo_30_pdfas, Member 17 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 801, group = PDF4LHC15_nlo_30_pdfas, Member 18 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 802, group = PDF4LHC15_nlo_30_pdfas, Member 19 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 803, group = PDF4LHC15_nlo_30_pdfas, Member 20 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 804, group = PDF4LHC15_nlo_30_pdfas, Member 21 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 805, group = PDF4LHC15_nlo_30_pdfas, Member 22 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 806, group = PDF4LHC15_nlo_30_pdfas, Member 23 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 807, group = PDF4LHC15_nlo_30_pdfas, Member 24 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 808, group = PDF4LHC15_nlo_30_pdfas, Member 25 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 809, group = PDF4LHC15_nlo_30_pdfas, Member 26 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 810, group = PDF4LHC15_nlo_30_pdfas, Member 27 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 811, group = PDF4LHC15_nlo_30_pdfas, Member 28 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 812, group = PDF4LHC15_nlo_30_pdfas, Member 29 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 813, group = PDF4LHC15_nlo_30_pdfas, Member 30 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 814, group = PDF4LHC15_nlo_30_pdfas, Member 31 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 815, group = PDF4LHC15_nlo_30_pdfas, Member 32 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 816, group = PDF4LHC15_nnlo_30_pdfas, Member 0 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 817, group = PDF4LHC15_nnlo_30_pdfas, Member 1 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 818, group = PDF4LHC15_nnlo_30_pdfas, Member 2 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 819, group = PDF4LHC15_nnlo_30_pdfas, Member 3 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 820, group = PDF4LHC15_nnlo_30_pdfas, Member 4 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 821, group = PDF4LHC15_nnlo_30_pdfas, Member 5 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 822, group = PDF4LHC15_nnlo_30_pdfas, Member 6 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 823, group = PDF4LHC15_nnlo_30_pdfas, Member 7 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 824, group = PDF4LHC15_nnlo_30_pdfas, Member 8 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 825, group = PDF4LHC15_nnlo_30_pdfas, Member 9 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 826, group = PDF4LHC15_nnlo_30_pdfas, Member 10 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 827, group = PDF4LHC15_nnlo_30_pdfas, Member 11 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 828, group = PDF4LHC15_nnlo_30_pdfas, Member 12 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 829, group = PDF4LHC15_nnlo_30_pdfas, Member 13 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 830, group = PDF4LHC15_nnlo_30_pdfas, Member 14 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 831, group = PDF4LHC15_nnlo_30_pdfas, Member 15 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 832, group = PDF4LHC15_nnlo_30_pdfas, Member 16 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 833, group = PDF4LHC15_nnlo_30_pdfas, Member 17 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 834, group = PDF4LHC15_nnlo_30_pdfas, Member 18 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 835, group = PDF4LHC15_nnlo_30_pdfas, Member 19 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 836, group = PDF4LHC15_nnlo_30_pdfas, Member 20 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 837, group = PDF4LHC15_nnlo_30_pdfas, Member 21 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 838, group = PDF4LHC15_nnlo_30_pdfas, Member 22 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 839, group = PDF4LHC15_nnlo_30_pdfas, Member 23 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 840, group = PDF4LHC15_nnlo_30_pdfas, Member 24 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 841, group = PDF4LHC15_nnlo_30_pdfas, Member 25 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 842, group = PDF4LHC15_nnlo_30_pdfas, Member 26 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 843, group = PDF4LHC15_nnlo_30_pdfas, Member 27 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 844, group = PDF4LHC15_nnlo_30_pdfas, Member 28 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 845, group = PDF4LHC15_nnlo_30_pdfas, Member 29 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 846, group = PDF4LHC15_nnlo_30_pdfas, Member 30 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 847, group = PDF4LHC15_nnlo_30_pdfas, Member 31 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 848, group = PDF4LHC15_nnlo_30_pdfas, Member 32 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 849, group = HERAPDF20_NLO_EIG, Member 0 of sets HERAPDF20_NLO_EIG +LHE, id = 850, group = HERAPDF20_NLO_EIG, Member 1 of sets HERAPDF20_NLO_EIG +LHE, id = 851, group = HERAPDF20_NLO_EIG, Member 2 of sets HERAPDF20_NLO_EIG +LHE, id = 852, group = HERAPDF20_NLO_EIG, Member 3 of sets HERAPDF20_NLO_EIG +LHE, id = 853, group = HERAPDF20_NLO_EIG, Member 4 of sets HERAPDF20_NLO_EIG +LHE, id = 854, group = HERAPDF20_NLO_EIG, Member 5 of sets HERAPDF20_NLO_EIG +LHE, id = 855, group = HERAPDF20_NLO_EIG, Member 6 of sets HERAPDF20_NLO_EIG +LHE, id = 856, group = HERAPDF20_NLO_EIG, Member 7 of sets HERAPDF20_NLO_EIG +LHE, id = 857, group = HERAPDF20_NLO_EIG, Member 8 of sets HERAPDF20_NLO_EIG +LHE, id = 858, group = HERAPDF20_NLO_EIG, Member 9 of sets HERAPDF20_NLO_EIG +LHE, id = 859, group = HERAPDF20_NLO_EIG, Member 10 of sets HERAPDF20_NLO_EIG +LHE, id = 860, group = HERAPDF20_NLO_EIG, Member 11 of sets HERAPDF20_NLO_EIG +LHE, id = 861, group = HERAPDF20_NLO_EIG, Member 12 of sets HERAPDF20_NLO_EIG +LHE, id = 862, group = HERAPDF20_NLO_EIG, Member 13 of sets HERAPDF20_NLO_EIG +LHE, id = 863, group = HERAPDF20_NLO_EIG, Member 14 of sets HERAPDF20_NLO_EIG +LHE, id = 864, group = HERAPDF20_NLO_EIG, Member 15 of sets HERAPDF20_NLO_EIG +LHE, id = 865, group = HERAPDF20_NLO_EIG, Member 16 of sets HERAPDF20_NLO_EIG +LHE, id = 866, group = HERAPDF20_NLO_EIG, Member 17 of sets HERAPDF20_NLO_EIG +LHE, id = 867, group = HERAPDF20_NLO_EIG, Member 18 of sets HERAPDF20_NLO_EIG +LHE, id = 868, group = HERAPDF20_NLO_EIG, Member 19 of sets HERAPDF20_NLO_EIG +LHE, id = 869, group = HERAPDF20_NLO_EIG, Member 20 of sets HERAPDF20_NLO_EIG +LHE, id = 870, group = HERAPDF20_NLO_EIG, Member 21 of sets HERAPDF20_NLO_EIG +LHE, id = 871, group = HERAPDF20_NLO_EIG, Member 22 of sets HERAPDF20_NLO_EIG +LHE, id = 872, group = HERAPDF20_NLO_EIG, Member 23 of sets HERAPDF20_NLO_EIG +LHE, id = 873, group = HERAPDF20_NLO_EIG, Member 24 of sets HERAPDF20_NLO_EIG +LHE, id = 874, group = HERAPDF20_NLO_EIG, Member 25 of sets HERAPDF20_NLO_EIG +LHE, id = 875, group = HERAPDF20_NLO_EIG, Member 26 of sets HERAPDF20_NLO_EIG +LHE, id = 876, group = HERAPDF20_NLO_EIG, Member 27 of sets HERAPDF20_NLO_EIG +LHE, id = 877, group = HERAPDF20_NLO_EIG, Member 28 of sets HERAPDF20_NLO_EIG +LHE, id = 878, group = HERAPDF20_NLO_VAR, Member 0 of sets HERAPDF20_NLO_VAR +LHE, id = 879, group = HERAPDF20_NLO_VAR, Member 1 of sets HERAPDF20_NLO_VAR +LHE, id = 880, group = HERAPDF20_NLO_VAR, Member 2 of sets HERAPDF20_NLO_VAR +LHE, id = 881, group = HERAPDF20_NLO_VAR, Member 3 of sets HERAPDF20_NLO_VAR +LHE, id = 882, group = HERAPDF20_NLO_VAR, Member 4 of sets HERAPDF20_NLO_VAR +LHE, id = 883, group = HERAPDF20_NLO_VAR, Member 5 of sets HERAPDF20_NLO_VAR +LHE, id = 884, group = HERAPDF20_NLO_VAR, Member 6 of sets HERAPDF20_NLO_VAR +LHE, id = 885, group = HERAPDF20_NLO_VAR, Member 7 of sets HERAPDF20_NLO_VAR +LHE, id = 886, group = HERAPDF20_NLO_VAR, Member 8 of sets HERAPDF20_NLO_VAR +LHE, id = 887, group = HERAPDF20_NLO_VAR, Member 9 of sets HERAPDF20_NLO_VAR +LHE, id = 888, group = HERAPDF20_NLO_VAR, Member 10 of sets HERAPDF20_NLO_VAR +LHE, id = 889, group = HERAPDF20_NLO_VAR, Member 11 of sets HERAPDF20_NLO_VAR +LHE, id = 890, group = HERAPDF20_NLO_VAR, Member 12 of sets HERAPDF20_NLO_VAR +LHE, id = 891, group = HERAPDF20_NLO_VAR, Member 13 of sets HERAPDF20_NLO_VAR +LHE, id = 892, group = HERAPDF20_NNLO_EIG, Member 0 of sets HERAPDF20_NNLO_EIG +LHE, id = 893, group = HERAPDF20_NNLO_EIG, Member 1 of sets HERAPDF20_NNLO_EIG +LHE, id = 894, group = HERAPDF20_NNLO_EIG, Member 2 of sets HERAPDF20_NNLO_EIG +LHE, id = 895, group = HERAPDF20_NNLO_EIG, Member 3 of sets HERAPDF20_NNLO_EIG +LHE, id = 896, group = HERAPDF20_NNLO_EIG, Member 4 of sets HERAPDF20_NNLO_EIG +LHE, id = 897, group = HERAPDF20_NNLO_EIG, Member 5 of sets HERAPDF20_NNLO_EIG +LHE, id = 898, group = HERAPDF20_NNLO_EIG, Member 6 of sets HERAPDF20_NNLO_EIG +LHE, id = 899, group = HERAPDF20_NNLO_EIG, Member 7 of sets HERAPDF20_NNLO_EIG +LHE, id = 900, group = HERAPDF20_NNLO_EIG, Member 8 of sets HERAPDF20_NNLO_EIG +LHE, id = 901, group = HERAPDF20_NNLO_EIG, Member 9 of sets HERAPDF20_NNLO_EIG +LHE, id = 902, group = HERAPDF20_NNLO_EIG, Member 10 of sets HERAPDF20_NNLO_EIG +LHE, id = 903, group = HERAPDF20_NNLO_EIG, Member 11 of sets HERAPDF20_NNLO_EIG +LHE, id = 904, group = HERAPDF20_NNLO_EIG, Member 12 of sets HERAPDF20_NNLO_EIG +LHE, id = 905, group = HERAPDF20_NNLO_EIG, Member 13 of sets HERAPDF20_NNLO_EIG +LHE, id = 906, group = HERAPDF20_NNLO_EIG, Member 14 of sets HERAPDF20_NNLO_EIG +LHE, id = 907, group = HERAPDF20_NNLO_EIG, Member 15 of sets HERAPDF20_NNLO_EIG +LHE, id = 908, group = HERAPDF20_NNLO_EIG, Member 16 of sets HERAPDF20_NNLO_EIG +LHE, id = 909, group = HERAPDF20_NNLO_EIG, Member 17 of sets HERAPDF20_NNLO_EIG +LHE, id = 910, group = HERAPDF20_NNLO_EIG, Member 18 of sets HERAPDF20_NNLO_EIG +LHE, id = 911, group = HERAPDF20_NNLO_EIG, Member 19 of sets HERAPDF20_NNLO_EIG +LHE, id = 912, group = HERAPDF20_NNLO_EIG, Member 20 of sets HERAPDF20_NNLO_EIG +LHE, id = 913, group = HERAPDF20_NNLO_EIG, Member 21 of sets HERAPDF20_NNLO_EIG +LHE, id = 914, group = HERAPDF20_NNLO_EIG, Member 22 of sets HERAPDF20_NNLO_EIG +LHE, id = 915, group = HERAPDF20_NNLO_EIG, Member 23 of sets HERAPDF20_NNLO_EIG +LHE, id = 916, group = HERAPDF20_NNLO_EIG, Member 24 of sets HERAPDF20_NNLO_EIG +LHE, id = 917, group = HERAPDF20_NNLO_EIG, Member 25 of sets HERAPDF20_NNLO_EIG +LHE, id = 918, group = HERAPDF20_NNLO_EIG, Member 26 of sets HERAPDF20_NNLO_EIG +LHE, id = 919, group = HERAPDF20_NNLO_EIG, Member 27 of sets HERAPDF20_NNLO_EIG +LHE, id = 920, group = HERAPDF20_NNLO_EIG, Member 28 of sets HERAPDF20_NNLO_EIG +LHE, id = 921, group = HERAPDF20_NNLO_VAR, Member 0 of sets HERAPDF20_NNLO_VAR +LHE, id = 922, group = HERAPDF20_NNLO_VAR, Member 1 of sets HERAPDF20_NNLO_VAR +LHE, id = 923, group = HERAPDF20_NNLO_VAR, Member 2 of sets HERAPDF20_NNLO_VAR +LHE, id = 924, group = HERAPDF20_NNLO_VAR, Member 3 of sets HERAPDF20_NNLO_VAR +LHE, id = 925, group = HERAPDF20_NNLO_VAR, Member 4 of sets HERAPDF20_NNLO_VAR +LHE, id = 926, group = HERAPDF20_NNLO_VAR, Member 5 of sets HERAPDF20_NNLO_VAR +LHE, id = 927, group = HERAPDF20_NNLO_VAR, Member 6 of sets HERAPDF20_NNLO_VAR +LHE, id = 928, group = HERAPDF20_NNLO_VAR, Member 7 of sets HERAPDF20_NNLO_VAR +LHE, id = 929, group = HERAPDF20_NNLO_VAR, Member 8 of sets HERAPDF20_NNLO_VAR +LHE, id = 930, group = HERAPDF20_NNLO_VAR, Member 9 of sets HERAPDF20_NNLO_VAR +LHE, id = 931, group = HERAPDF20_NNLO_VAR, Member 10 of sets HERAPDF20_NNLO_VAR +LHE, id = 932, group = HERAPDF20_NNLO_VAR, Member 11 of sets HERAPDF20_NNLO_VAR +LHE, id = 933, group = HERAPDF20_NNLO_VAR, Member 12 of sets HERAPDF20_NNLO_VAR +LHE, id = 934, group = HERAPDF20_NNLO_VAR, Member 13 of sets HERAPDF20_NNLO_VAR +LHE, id = 935, group = CT14qed_inc_proton, Member 0 of sets CT14qed_inc_proton +LHE, id = 936, group = CT14qed_inc_proton, Member 1 of sets CT14qed_inc_proton +LHE, id = 937, group = CT14qed_inc_proton, Member 2 of sets CT14qed_inc_proton +LHE, id = 938, group = CT14qed_inc_proton, Member 3 of sets CT14qed_inc_proton +LHE, id = 939, group = CT14qed_inc_proton, Member 4 of sets CT14qed_inc_proton +LHE, id = 940, group = CT14qed_inc_proton, Member 5 of sets CT14qed_inc_proton +LHE, id = 941, group = CT14qed_inc_proton, Member 6 of sets CT14qed_inc_proton +LHE, id = 942, group = CT14qed_inc_proton, Member 7 of sets CT14qed_inc_proton +LHE, id = 943, group = CT14qed_inc_proton, Member 8 of sets CT14qed_inc_proton +LHE, id = 944, group = CT14qed_inc_proton, Member 9 of sets CT14qed_inc_proton +LHE, id = 945, group = CT14qed_inc_proton, Member 10 of sets CT14qed_inc_proton +LHE, id = 946, group = CT14qed_inc_proton, Member 11 of sets CT14qed_inc_proton +LHE, id = 947, group = CT14qed_inc_proton, Member 12 of sets CT14qed_inc_proton +LHE, id = 948, group = CT14qed_inc_proton, Member 13 of sets CT14qed_inc_proton +LHE, id = 949, group = CT14qed_inc_proton, Member 14 of sets CT14qed_inc_proton +LHE, id = 950, group = CT14qed_inc_proton, Member 15 of sets CT14qed_inc_proton +LHE, id = 951, group = CT14qed_inc_proton, Member 16 of sets CT14qed_inc_proton +LHE, id = 952, group = CT14qed_inc_proton, Member 17 of sets CT14qed_inc_proton +LHE, id = 953, group = CT14qed_inc_proton, Member 18 of sets CT14qed_inc_proton +LHE, id = 954, group = CT14qed_inc_proton, Member 19 of sets CT14qed_inc_proton +LHE, id = 955, group = CT14qed_inc_proton, Member 20 of sets CT14qed_inc_proton +LHE, id = 956, group = CT14qed_inc_proton, Member 21 of sets CT14qed_inc_proton +LHE, id = 957, group = CT14qed_inc_proton, Member 22 of sets CT14qed_inc_proton +LHE, id = 958, group = CT14qed_inc_proton, Member 23 of sets CT14qed_inc_proton +LHE, id = 959, group = CT14qed_inc_proton, Member 24 of sets CT14qed_inc_proton +LHE, id = 960, group = CT14qed_inc_proton, Member 25 of sets CT14qed_inc_proton +LHE, id = 961, group = CT14qed_inc_proton, Member 26 of sets CT14qed_inc_proton +LHE, id = 962, group = CT14qed_inc_proton, Member 27 of sets CT14qed_inc_proton +LHE, id = 963, group = CT14qed_inc_proton, Member 28 of sets CT14qed_inc_proton +LHE, id = 964, group = CT14qed_inc_proton, Member 29 of sets CT14qed_inc_proton +LHE, id = 965, group = CT14qed_inc_proton, Member 30 of sets CT14qed_inc_proton +LHE, id = 966, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 0 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 967, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 1 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 968, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 2 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 969, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 3 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 970, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 4 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 971, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 5 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 972, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 6 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 973, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 7 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 974, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 8 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 975, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 9 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 976, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 10 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 977, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 11 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 978, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 12 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 979, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 13 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 980, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 14 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 981, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 15 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 982, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 16 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 983, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 17 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 984, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 18 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 985, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 19 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 986, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 20 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 987, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 21 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 988, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 22 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 989, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 23 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 990, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 24 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 991, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 25 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 992, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 26 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 993, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 27 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 994, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 28 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 995, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 29 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 996, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 30 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 997, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 31 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 998, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 32 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 999, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 33 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1000, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 34 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1001, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 35 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1002, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 36 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1003, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 37 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1004, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 38 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1005, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 39 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1006, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 40 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1007, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 41 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1008, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 42 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1009, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 43 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1010, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 44 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1011, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 45 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1012, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 46 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1013, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 47 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1014, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 48 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1015, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 49 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1016, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 50 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1017, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 51 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1018, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 52 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1019, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 53 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1020, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 54 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1021, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 55 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1022, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 56 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1023, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 57 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1024, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 58 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1025, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 59 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1026, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 60 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1027, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 61 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1028, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 62 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1029, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 63 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1030, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 64 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1031, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 65 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1032, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 66 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1033, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 67 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1034, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 68 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1035, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 69 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1036, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 70 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1037, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 71 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1038, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 72 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1039, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 73 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1040, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 74 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1041, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 75 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1042, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 76 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1043, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 77 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1044, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 78 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1045, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 79 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1046, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 80 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1047, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 81 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1048, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 82 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1049, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 83 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1050, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 84 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1051, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 85 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1052, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 86 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1053, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 87 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1054, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 88 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1055, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 89 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1056, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 90 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1057, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 91 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1058, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 92 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1059, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 93 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1060, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 94 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1061, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 95 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1062, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 96 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1063, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 97 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1064, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 98 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1065, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 99 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1066, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 100 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1067, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 101 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1068, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 102 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1069, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 103 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1070, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 104 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1071, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 105 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1072, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 106 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1073, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 107 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1074, group = NNPDF30_nlo_nf_5_pdfas, Member 0 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1075, group = NNPDF30_nlo_nf_5_pdfas, Member 1 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1076, group = NNPDF30_nlo_nf_5_pdfas, Member 2 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1077, group = NNPDF30_nlo_nf_5_pdfas, Member 3 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1078, group = NNPDF30_nlo_nf_5_pdfas, Member 4 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1079, group = NNPDF30_nlo_nf_5_pdfas, Member 5 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1080, group = NNPDF30_nlo_nf_5_pdfas, Member 6 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1081, group = NNPDF30_nlo_nf_5_pdfas, Member 7 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1082, group = NNPDF30_nlo_nf_5_pdfas, Member 8 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1083, group = NNPDF30_nlo_nf_5_pdfas, Member 9 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1084, group = NNPDF30_nlo_nf_5_pdfas, Member 10 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1085, group = NNPDF30_nlo_nf_5_pdfas, Member 11 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1086, group = NNPDF30_nlo_nf_5_pdfas, Member 12 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1087, group = NNPDF30_nlo_nf_5_pdfas, Member 13 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1088, group = NNPDF30_nlo_nf_5_pdfas, Member 14 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1089, group = NNPDF30_nlo_nf_5_pdfas, Member 15 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1090, group = NNPDF30_nlo_nf_5_pdfas, Member 16 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1091, group = NNPDF30_nlo_nf_5_pdfas, Member 17 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1092, group = NNPDF30_nlo_nf_5_pdfas, Member 18 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1093, group = NNPDF30_nlo_nf_5_pdfas, Member 19 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1094, group = NNPDF30_nlo_nf_5_pdfas, Member 20 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1095, group = NNPDF30_nlo_nf_5_pdfas, Member 21 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1096, group = NNPDF30_nlo_nf_5_pdfas, Member 22 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1097, group = NNPDF30_nlo_nf_5_pdfas, Member 23 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1098, group = NNPDF30_nlo_nf_5_pdfas, Member 24 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1099, group = NNPDF30_nlo_nf_5_pdfas, Member 25 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1100, group = NNPDF30_nlo_nf_5_pdfas, Member 26 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1101, group = NNPDF30_nlo_nf_5_pdfas, Member 27 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1102, group = NNPDF30_nlo_nf_5_pdfas, Member 28 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1103, group = NNPDF30_nlo_nf_5_pdfas, Member 29 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1104, group = NNPDF30_nlo_nf_5_pdfas, Member 30 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1105, group = NNPDF30_nlo_nf_5_pdfas, Member 31 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1106, group = NNPDF30_nlo_nf_5_pdfas, Member 32 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1107, group = NNPDF30_nlo_nf_5_pdfas, Member 33 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1108, group = NNPDF30_nlo_nf_5_pdfas, Member 34 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1109, group = NNPDF30_nlo_nf_5_pdfas, Member 35 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1110, group = NNPDF30_nlo_nf_5_pdfas, Member 36 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1111, group = NNPDF30_nlo_nf_5_pdfas, Member 37 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1112, group = NNPDF30_nlo_nf_5_pdfas, Member 38 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1113, group = NNPDF30_nlo_nf_5_pdfas, Member 39 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1114, group = NNPDF30_nlo_nf_5_pdfas, Member 40 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1115, group = NNPDF30_nlo_nf_5_pdfas, Member 41 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1116, group = NNPDF30_nlo_nf_5_pdfas, Member 42 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1117, group = NNPDF30_nlo_nf_5_pdfas, Member 43 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1118, group = NNPDF30_nlo_nf_5_pdfas, Member 44 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1119, group = NNPDF30_nlo_nf_5_pdfas, Member 45 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1120, group = NNPDF30_nlo_nf_5_pdfas, Member 46 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1121, group = NNPDF30_nlo_nf_5_pdfas, Member 47 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1122, group = NNPDF30_nlo_nf_5_pdfas, Member 48 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1123, group = NNPDF30_nlo_nf_5_pdfas, Member 49 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1124, group = NNPDF30_nlo_nf_5_pdfas, Member 50 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1125, group = NNPDF30_nlo_nf_5_pdfas, Member 51 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1126, group = NNPDF30_nlo_nf_5_pdfas, Member 52 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1127, group = NNPDF30_nlo_nf_5_pdfas, Member 53 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1128, group = NNPDF30_nlo_nf_5_pdfas, Member 54 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1129, group = NNPDF30_nlo_nf_5_pdfas, Member 55 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1130, group = NNPDF30_nlo_nf_5_pdfas, Member 56 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1131, group = NNPDF30_nlo_nf_5_pdfas, Member 57 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1132, group = NNPDF30_nlo_nf_5_pdfas, Member 58 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1133, group = NNPDF30_nlo_nf_5_pdfas, Member 59 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1134, group = NNPDF30_nlo_nf_5_pdfas, Member 60 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1135, group = NNPDF30_nlo_nf_5_pdfas, Member 61 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1136, group = NNPDF30_nlo_nf_5_pdfas, Member 62 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1137, group = NNPDF30_nlo_nf_5_pdfas, Member 63 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1138, group = NNPDF30_nlo_nf_5_pdfas, Member 64 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1139, group = NNPDF30_nlo_nf_5_pdfas, Member 65 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1140, group = NNPDF30_nlo_nf_5_pdfas, Member 66 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1141, group = NNPDF30_nlo_nf_5_pdfas, Member 67 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1142, group = NNPDF30_nlo_nf_5_pdfas, Member 68 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1143, group = NNPDF30_nlo_nf_5_pdfas, Member 69 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1144, group = NNPDF30_nlo_nf_5_pdfas, Member 70 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1145, group = NNPDF30_nlo_nf_5_pdfas, Member 71 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1146, group = NNPDF30_nlo_nf_5_pdfas, Member 72 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1147, group = NNPDF30_nlo_nf_5_pdfas, Member 73 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1148, group = NNPDF30_nlo_nf_5_pdfas, Member 74 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1149, group = NNPDF30_nlo_nf_5_pdfas, Member 75 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1150, group = NNPDF30_nlo_nf_5_pdfas, Member 76 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1151, group = NNPDF30_nlo_nf_5_pdfas, Member 77 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1152, group = NNPDF30_nlo_nf_5_pdfas, Member 78 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1153, group = NNPDF30_nlo_nf_5_pdfas, Member 79 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1154, group = NNPDF30_nlo_nf_5_pdfas, Member 80 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1155, group = NNPDF30_nlo_nf_5_pdfas, Member 81 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1156, group = NNPDF30_nlo_nf_5_pdfas, Member 82 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1157, group = NNPDF30_nlo_nf_5_pdfas, Member 83 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1158, group = NNPDF30_nlo_nf_5_pdfas, Member 84 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1159, group = NNPDF30_nlo_nf_5_pdfas, Member 85 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1160, group = NNPDF30_nlo_nf_5_pdfas, Member 86 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1161, group = NNPDF30_nlo_nf_5_pdfas, Member 87 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1162, group = NNPDF30_nlo_nf_5_pdfas, Member 88 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1163, group = NNPDF30_nlo_nf_5_pdfas, Member 89 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1164, group = NNPDF30_nlo_nf_5_pdfas, Member 90 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1165, group = NNPDF30_nlo_nf_5_pdfas, Member 91 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1166, group = NNPDF30_nlo_nf_5_pdfas, Member 92 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1167, group = NNPDF30_nlo_nf_5_pdfas, Member 93 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1168, group = NNPDF30_nlo_nf_5_pdfas, Member 94 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1169, group = NNPDF30_nlo_nf_5_pdfas, Member 95 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1170, group = NNPDF30_nlo_nf_5_pdfas, Member 96 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1171, group = NNPDF30_nlo_nf_5_pdfas, Member 97 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1172, group = NNPDF30_nlo_nf_5_pdfas, Member 98 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1173, group = NNPDF30_nlo_nf_5_pdfas, Member 99 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1174, group = NNPDF30_nlo_nf_5_pdfas, Member 100 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1175, group = NNPDF30_nlo_nf_5_pdfas, Member 101 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1176, group = NNPDF30_nlo_nf_5_pdfas, Member 102 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1177, group = NNPDF30_nnlo_nf_5_pdfas, Member 0 of sets NNPDF30_nnlo_nf_5_pdfas +LHE, id = 1178, group = NNPDF31_lo_as_0118, Member 0 of sets NNPDF31_lo_as_0118 +LHE, id = 1179, group = NNPDF30_lo_as_0118, Member 0 of sets NNPDF30_lo_as_0118 +LHE, id = 1180, group = NNPDF30_lo_as_0130, Member 0 of sets NNPDF30_lo_as_0130 +Baseline +isrRedHi +fsrRedHi +isrRedLo +fsrRedLo +isrDefHi +fsrDefHi +isrDefLo +fsrDefLo +isrConHi +fsrConHi +isrConLo +fsrConLo +fsr_G2GG_muR_dn +fsr_G2GG_muR_up +fsr_G2QQ_muR_dn +fsr_G2QQ_muR_up +fsr_Q2QG_muR_dn +fsr_Q2QG_muR_up +fsr_X2XG_muR_dn +fsr_X2XG_muR_up +fsr_G2GG_cNS_dn +fsr_G2GG_cNS_up +fsr_G2QQ_cNS_dn +fsr_G2QQ_cNS_up +fsr_Q2QG_cNS_dn +fsr_Q2QG_cNS_up +fsr_X2XG_cNS_dn +fsr_X2XG_cNS_up +isr_G2GG_muR_dn +isr_G2GG_muR_up +isr_G2QQ_muR_dn +isr_G2QQ_muR_up +isr_Q2QG_muR_dn +isr_Q2QG_muR_up +isr_X2XG_muR_dn +isr_X2XG_muR_up +isr_G2GG_cNS_dn +isr_G2GG_cNS_up +isr_G2QQ_cNS_dn +isr_G2QQ_cNS_up +isr_Q2QG_cNS_dn +isr_Q2QG_cNS_up +isr_X2XG_cNS_dn +isr_X2XG_cNS_up From 7ea1ea4ebb89677945d52f42b913c2101fc3ea5a Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 20 May 2020 17:32:35 +0200 Subject: [PATCH 083/186] Revert LHE source --- .../LHEInterface/plugins/LHESource.cc | 99 ++++++++++--------- 1 file changed, 52 insertions(+), 47 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index ab0451c6c0a4c..e21adb04635e5 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -23,6 +23,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" @@ -32,13 +33,12 @@ using namespace lhef; -LHESource::LHESource(const edm::ParameterSet ¶ms, - const edm::InputSourceDescription &desc) : - ProducerSourceFromFiles(params, desc, false), - reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), - phid_() -{ +LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDescription& desc) + : ProducerSourceFromFiles(params, desc, false), + reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), + lheProvenanceHelper_( + edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), + phid_() { nextEvent(); lheProvenanceHelper_.lheAugment(nullptr); // Initialize metadata, and save the process history ID for use every event. @@ -49,17 +49,11 @@ LHESource::LHESource(const edm::ParameterSet ¶ms, //produces(); } -LHESource::~LHESource() -{ -} +LHESource::~LHESource() {} -void LHESource::endJob() -{ - reader_.reset(); -} +void LHESource::endJob() { reader_.reset(); } -void LHESource::nextEvent() -{ +void LHESource::nextEvent() { if (partonLevel_) { return; } @@ -68,7 +62,7 @@ void LHESource::nextEvent() do { newFileOpened = false; partonLevel_ = reader_->next(&newFileOpened); - if(newFileOpened) { + if (newFileOpened) { incrementFileIndex(); } } while (newFileOpened && !partonLevel_); @@ -80,8 +74,7 @@ void LHESource::nextEvent() auto runInfoThis = partonLevel_->getRunInfo(); if (runInfoThis != runInfoLast_) { runInfoLast_ = runInfoThis; - std::unique_ptr product( - new LHERunInfoProduct(*runInfoThis->getHEPRUP())); + std::unique_ptr product(new LHERunInfoProduct(*runInfoThis->getHEPRUP())); fillRunInfoProduct(*runInfoThis, *product); if (runInfoProductLast_) { @@ -99,27 +92,24 @@ void LHESource::nextEvent() } } -void -LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { - for(auto const& h: iInfo.getHeaders()) { +void LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { + for (auto const& h : iInfo.getHeaders()) { oProduct.addHeader(h); } - for(auto const& c: iInfo.getComments()) { + for (auto const& c : iInfo.getComments()) { oProduct.addComment(c); } } - -void -LHESource::readRun_(edm::RunPrincipal& runPrincipal) { +void LHESource::readRun_(edm::RunPrincipal& runPrincipal) { runAuxiliary()->setProcessHistoryID(phid_); runPrincipal.fillRunPrincipal(processHistoryRegistryForUpdate()); putRunInfoProduct(runPrincipal); + putWeightInfoProduct(runPrincipal); } -void -LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { +void LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { luminosityBlockAuxiliary()->setProcessHistoryID(phid_); lumiPrincipal.fillLuminosityBlockPrincipal( processHistoryRegistry().getMapped(lumiPrincipal.aux().processHistoryID())); @@ -133,6 +123,26 @@ void LHESource::putRunInfoProduct(edm::RunPrincipal& iRunPrincipal) { } } +void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { + if (runInfoProductLast_) { + auto product = std::make_unique(); + gen::WeightGroupInfo scaleInfo( + "" + ); + scaleInfo.setWeightType(gen::WeightType::kScaleWeights); + + gen::WeightGroupInfo cenPdfInfo( + "" + ); + cenPdfInfo.setWeightType(gen::WeightType::kPdfWeights); + + product->addWeightGroupInfo(&scaleInfo); + product->addWeightGroupInfo(&cenPdfInfo); + std::unique_ptr rdp(new edm::Wrapper(std::move(product))); + //iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); + } +} + bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventAuxiliary::ExperimentType&) { nextEvent(); @@ -147,42 +157,38 @@ bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventA return true; } -void -LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { +void LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { assert(eventCached() || processingMode() != RunsLumisAndEvents); edm::EventAuxiliary aux(eventID(), processGUID(), edm::Timestamp(presentTime()), false); aux.setProcessHistoryID(phid_); eventPrincipal.fillEventPrincipal(aux, processHistoryRegistry().getMapped(aux.processHistoryID())); std::unique_ptr product( - new LHEEventProduct(*partonLevel_->getHEPEUP(), - partonLevel_->originalXWGTUP()) - ); + new LHEEventProduct(*partonLevel_->getHEPEUP(), partonLevel_->originalXWGTUP())); if (partonLevel_->getPDF()) { product->setPDF(*partonLevel_->getPDF()); } std::for_each(partonLevel_->weights().begin(), partonLevel_->weights().end(), - boost::bind(&LHEEventProduct::addWeight, - product.get(), _1)); + boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); product->setScales(partonLevel_->scales()); product->setNpLO(partonLevel_->npLO()); product->setNpNLO(partonLevel_->npNLO()); std::for_each(partonLevel_->getComments().begin(), partonLevel_->getComments().end(), - boost::bind(&LHEEventProduct::addComment, - product.get(), _1)); + boost::bind(&LHEEventProduct::addComment, product.get(), _1)); std::unique_ptr edp(new edm::Wrapper(std::move(product))); - eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, std::move(edp), lheProvenanceHelper_.eventProductProvenance_); + eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, + std::move(edp), + lheProvenanceHelper_.eventProductProvenance_); partonLevel_.reset(); resetEventCached(); } -std::shared_ptr -LHESource::readRunAuxiliary_() { +std::shared_ptr LHESource::readRunAuxiliary_() { edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewRun(); auto aux = std::make_shared(eventID().run(), ts, edm::Timestamp::invalidTimestamp()); @@ -190,19 +196,18 @@ LHESource::readRunAuxiliary_() { return aux; } -std::shared_ptr -LHESource::readLuminosityBlockAuxiliary_() { - if (processingMode() == Runs) return std::shared_ptr(); +std::shared_ptr LHESource::readLuminosityBlockAuxiliary_() { + if (processingMode() == Runs) + return std::shared_ptr(); edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewLumi(); - auto aux = std::make_shared(eventID().run(), eventID().luminosityBlock(), - ts, edm::Timestamp::invalidTimestamp()); + auto aux = std::make_shared( + eventID().run(), eventID().luminosityBlock(), ts, edm::Timestamp::invalidTimestamp()); aux->setProcessHistoryID(phid_); return aux; } -void -LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +void LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.setComment("A source which reads LHE files."); edm::ProducerSourceFromFiles::fillDescription(desc); From 6d6b77f837074b3dad976f60ad63bfdad3588858 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Mon, 10 Feb 2020 06:42:23 -0500 Subject: [PATCH 084/186] Dylan's improvements of weight parsing changed LHEsource so it compiles, running tests now added scientific notation for numbers so values are correct added a few more test statements. Need to think of future needs Add testing suite (will remove/squash commits right before merge) Change pdfSetsInfo to be read in from LHAPDF path Still lingering question of how to decide pdf type This can be resolved in the new function "setupPdfSetsInfo" Add check if orphan weight is pdf and fix xml tag swap (needs review) Allow reading '>' as '>' and fix bug with first weight w/o group As for the first weight error: if the first weight doesn't have a weight group, the code would not add it to the list of weights because of currentGroupName and the first weight both having a trivial "" as their name. Thats the reason for the currentGroupName being set to "None" for initialization Fix space issue in regex and moved unchaning variables outside for Add pdfgroup splitting. To do this, needed LHAPDF requirements clang format --- .../Core/interface/LHEWeightHelper.h | 4 +- .../Core/interface/WeightHelper.h | 16 +- .../Core/src/LHEWeightHelper.cc | 138 +- GeneratorInterface/Core/src/WeightHelper.cc | 194 +- .../LHEInterface/plugins/LHESource.cc | 99 +- .../GeneratorProducts/BuildFile.xml | 1 + .../interface/PdfWeightGroupInfo.h | 13 +- .../interface/ScaleWeightGroupInfo.h | 5 + Test/Test/BuildFile.xml | 11 + Test/Test/interface/test.h | 18 + Test/Test/src/classes.h | 1 + Test/Test/src/classes_def.xml | 3 + Test/Test/src/test.cc | 22 + lhe_test.C | 57 + .../DrellYan_LO_MGMLMv233_2016_weightInfo.txt | 474 +++++ .../DrellYan_LO_MGMLMv242_2017_weightInfo.txt | 1158 ++++++++++++ ...rellYan_NLO_MGFXFXv233_2016_weightInfo.txt | 117 ++ ...rellYan_NLO_MGFXFXv242_2017_weightInfo.txt | 1158 ++++++++++++ testFiles/VVV_2017_weight_info.txt | 1358 ++++++++++++++ .../W1jet_260_simplescale_weight_info.txt | 1149 ++++++++++++ testFiles/W1jet_260_weight_info.txt | 1179 ++++++++++++ testFiles/WJ_MiNNLO_weightinfo.txt | 1612 +++++++++++++++++ testFiles/WJ_NNLOPS_weightinfo.txt | 1612 +++++++++++++++++ testFiles/WZVBS_2017_weightInfo.txt | 1180 ++++++++++++ testFiles/WZVBS_private_weightInfo.txt | 150 ++ testFiles/ZJ_MiNNLO_weightinfo.txt | 735 ++++++++ testFiles/ZMiNNLO.txt | 735 ++++++++ testFiles/ZZTo4L_powheg_2016_weightInfo.txt | 227 +++ testFiles/ZZTo4L_powheg_2017_weightInfo.txt | 1087 +++++++++++ testFiles/overview.txt | 12 + testFiles/susyweights.txt | 1227 +++++++++++++ 31 files changed, 15589 insertions(+), 163 deletions(-) create mode 100644 Test/Test/BuildFile.xml create mode 100644 Test/Test/interface/test.h create mode 100644 Test/Test/src/classes.h create mode 100644 Test/Test/src/classes_def.xml create mode 100644 Test/Test/src/test.cc create mode 100644 lhe_test.C create mode 100644 testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt create mode 100644 testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt create mode 100644 testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt create mode 100644 testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt create mode 100644 testFiles/VVV_2017_weight_info.txt create mode 100644 testFiles/W1jet_260_simplescale_weight_info.txt create mode 100644 testFiles/W1jet_260_weight_info.txt create mode 100644 testFiles/WJ_MiNNLO_weightinfo.txt create mode 100644 testFiles/WJ_NNLOPS_weightinfo.txt create mode 100644 testFiles/WZVBS_2017_weightInfo.txt create mode 100644 testFiles/WZVBS_private_weightInfo.txt create mode 100644 testFiles/ZJ_MiNNLO_weightinfo.txt create mode 100644 testFiles/ZMiNNLO.txt create mode 100644 testFiles/ZZTo4L_powheg_2016_weightInfo.txt create mode 100644 testFiles/ZZTo4L_powheg_2017_weightInfo.txt create mode 100644 testFiles/overview.txt create mode 100644 testFiles/susyweights.txt diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 0e8b47ffa6e04..89f1e1c610923 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -23,7 +23,9 @@ namespace gen { void setHeaderLines(std::vector headerLines); void parseWeights(); void buildGroups(); - std::unique_ptr buildGroup(const ParsedWeight& weight); + bool isConsistent(); + void swapHeaders(); + std::unique_ptr buildGroup(ParsedWeight& weight); private: std::vector headerLines_; diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index b44648a595a48..5a162121148a2 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -10,7 +10,10 @@ #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" +#include "LHAPDF/LHAPDF.h" #include +#include +#include namespace gen { struct PdfSetInfo { @@ -25,6 +28,7 @@ namespace gen { std::string groupname; std::string content; std::unordered_map attributes; + size_t wgtGroup_idx; }; class WeightHelper { @@ -48,18 +52,24 @@ namespace gen { bool isScaleWeightGroup(const ParsedWeight& weight); bool isMEParamWeightGroup(const ParsedWeight& weight); bool isPdfWeightGroup(const ParsedWeight& weight); + bool isOrphanPdfWeightGroup(ParsedWeight& weight); + bool isMultiSetPdfGroup(WeightGroupInfo& group); void updateScaleInfo(const ParsedWeight& weight); void updatePdfInfo(const ParsedWeight& weight); + void updatePdfInfo(int lhaid, int index); void splitPdfGroups(); + std::vector setupPdfSetsInfo(); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; // Possible names for the same thing const std::unordered_map> attributeNames_ = { - {"muf", {"muR", "MUR", "muf", "facscfact"}}, - {"mur", {"muF", "MUF", "mur", "renscfact"}}, - {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}}; + {"muf", {"muF", "MUF", "muf", "facscfact"}}, + {"mur", {"muR", "MUR", "mur", "renscfact"}}, + {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}, + //{"dyn", {"DYN_SCALE", "dyn_scale_choice"}}, + }; }; } // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index d74ccc0b01aac..7d24fa34cdfbd 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -1,5 +1,6 @@ #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include +#include #include using namespace tinyxml2; @@ -9,22 +10,56 @@ namespace gen { void LHEWeightHelper::parseWeights() { parsedWeights_.clear(); + + if (!isConsistent()) { + swapHeaders(); + } + tinyxml2::XMLDocument xmlDoc; - xmlDoc.Parse(("" + boost::algorithm::join(headerLines_, "") + "").c_str()); - tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("root"); + std::string fullHeader = boost::algorithm::join(headerLines_, ""); + + int xmlError = xmlDoc.Parse(fullHeader.c_str()); + // in case of > instead of < + if (xmlError != 0) { + boost::replace_all(fullHeader, "<", "<"); + boost::replace_all(fullHeader, ">", ">"); + xmlError = xmlDoc.Parse(fullHeader.c_str()); + } + // error persists (how to handle error?) + if (xmlError != 0) { + std::cerr << "Error in lhe xml file" << std::endl; + xmlDoc.PrintError(); + exit(1); + } + + std::vector nameAlts_ = {"name", "type"}; size_t weightIndex = 0; - for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { + size_t groupIndex = 0; + //for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { + for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { std::string groupName = ""; if (strcmp(e->Name(), "weight") == 0) { // we are here if there is a weight that does not belong to any group std::string text = ""; - if (e->GetText()) + if (e->GetText()) { text = e->GetText(); - parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text}); - } - if (strcmp(e->Name(), "weightgroup") == 0) { - groupName = e->Attribute("name"); + } + std::unordered_map attributes; + for (auto* att = e->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); + } else if (strcmp(e->Name(), "weightgroup") == 0) { + // to deal wiht files with "id" instead of "name" + for (auto nameAtt : nameAlts_) { + if (e->Attribute(nameAtt.c_str())) { + groupName = e->Attribute(nameAtt.c_str()); + break; + } + } + if (groupName.empty()) { + throw std::runtime_error("couldn't find groupname"); + } for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; inner = inner->NextSiblingElement("weight")) { // we are here if there is a weight in a weightgroup @@ -34,39 +69,110 @@ namespace gen { std::unordered_map attributes; for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) attributes[att->Name()] = att->Value(); - parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes}); + parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); } } + groupIndex++; } buildGroups(); } + bool LHEWeightHelper::isConsistent() { + int curLevel = 0; + + for (auto line : headerLines_) { + if (line.find("") != std::string::npos) { + curLevel--; + if (curLevel != 0) { + return false; + } + } + } + return curLevel == 0; + } + + void LHEWeightHelper::swapHeaders() { + int curLevel = 0; + int open = -1; + int close = -1; + for (size_t idx = 0; idx < headerLines_.size(); idx++) { + std::string line = headerLines_[idx]; + if (line.find("") != std::string::npos) { + curLevel--; + if (curLevel != 0) { + close = idx; + } + } + if (open > -1 && close > -1) { + std::swap(headerLines_[open], headerLines_[close]); + open = -1; + close = -1; + } + } + } + void LHEWeightHelper::buildGroups() { weightGroups_.clear(); - std::string currentGroupName; - for (const auto& weight : parsedWeights_) { - if (weight.groupname != currentGroupName) { + size_t currentGroupIdx = -1; + for (auto& weight : parsedWeights_) { + if (currentGroupIdx != weight.wgtGroup_idx) { weightGroups_.push_back(*buildGroup(weight)); + currentGroupIdx = weight.wgtGroup_idx; } - currentGroupName = weight.groupname; + WeightGroupInfo& group = weightGroups_.back(); - group.addContainedId(weight.index, weight.id, weight.content); + group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) updateScaleInfo(weight); else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(weight); } - //splitPdfGroups(); + splitPdfGroups(); + // checks + for (auto& wgt : weightGroups_) { + if (!wgt.isWellFormed()) + std::cout << "\033[1;31m"; + std::cout << std::boolalpha << wgt.name() << " (" << wgt.firstId() << "-" << wgt.lastId() + << "): " << wgt.isWellFormed() << std::endl; + if (wgt.weightType() == gen::WeightType::kScaleWeights) { + auto& wgtScale = dynamic_cast(wgt); + std::cout << wgtScale.centralIndex() << " "; + std::cout << wgtScale.muR1muF2Index() << " "; + std::cout << wgtScale.muR1muF05Index() << " "; + std::cout << wgtScale.muR2muF1Index() << " "; + std::cout << wgtScale.muR2muF2Index() << " "; + std::cout << wgtScale.muR2muF05Index() << " "; + std::cout << wgtScale.muR05muF1Index() << " "; + std::cout << wgtScale.muR05muF2Index() << " "; + std::cout << wgtScale.muR05muF05Index() << " \n"; + } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { + std::cout << wgt.description() << "\n"; + } + if (!wgt.isWellFormed()) + std::cout << "\033[0m"; + } } - std::unique_ptr LHEWeightHelper::buildGroup(const ParsedWeight& weight) { + std::unique_ptr LHEWeightHelper::buildGroup(ParsedWeight& weight) { if (isScaleWeightGroup(weight)) return std::make_unique(weight.groupname); else if (isPdfWeightGroup(weight)) return std::make_unique(weight.groupname); else if (isMEParamWeightGroup(weight)) return std::make_unique(weight.groupname); + else if (isOrphanPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); return std::make_unique(weight.groupname); } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index c2fdd9c79d97c..b5f6692b8e57a 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -2,55 +2,19 @@ #include namespace gen { - WeightHelper::WeightHelper() - : pdfSetsInfo({ - // In principle this can be parsed from $LHAPDF_DATA_PATH/pdfsets.index, - // but do we really want to do that? Can also just hardcode a subset... - // TODO: Actually we can just take this from LHAPDF - {"NNPDF31_nnlo_hessian_pdfas", 306000, kHessianUnc}, - {"NNPDF31_nnlo_as_0118", 303600, kMonteCarloUnc}, - {"NNPDF31_nlo_as_0118", 303400, kMonteCarloUnc}, - {"NNPDF31_nlo_hessian_pdfas", 305800, kHessianUnc}, - {"NNPDF31_nnlo_as_0108", 322500, kVariationSet}, - {"NNPDF31_nnlo_as_0110", 322700, kVariationSet}, - {"NNPDF31_nnlo_as_0112", 322900, kVariationSet}, - {"NNPDF31_nnlo_as_0114", 323100, kVariationSet}, - {"NNPDF31_nnlo_as_0117", 323300, kVariationSet}, - {"NNPDF31_nnlo_as_0119", 323500, kVariationSet}, - {"NNPDF31_nnlo_as_0122", 323700, kVariationSet}, - {"NNPDF31_nnlo_as_0124", 323900, kVariationSet}, - {"NNPDF31_nnlo_as_0118_nf_4_mc_hessian", 325500, kHessianUnc}, - {"NNPDF31_nlo_as_0118_nf_4", 320500, kMonteCarloUnc}, - {"NNPDF31_nnlo_as_0118_nf_4", 320900, kMonteCarloUnc}, - {"NNPDF30_nlo_nf_5_pdfas", 292200, kMonteCarloUnc}, - {"NNPDF30_nnlo_nf_5_pdfas", 292600, kMonteCarloUnc}, - {"NNPDF30_nnlo_nf_4_pdfas", 292400, kMonteCarloUnc}, - {"NNPDF30_nlo_nf_4_pdfas", 292000, kMonteCarloUnc}, - {"NNPDF30_lo_as_0130", 263000, kMonteCarloUnc}, - {"NNPDF30_lo_as_0118", 262000, kMonteCarloUnc}, - {"CT14nnlo", 13000, kHessianUnc}, - {"CT14nlo", 13100, kHessianUnc}, - {"CT14nnlo_as_0116", 13065, kVariationSet}, - {"CT14nnlo_as_0120", 13069, kVariationSet}, - {"CT14nlo_as_0116", 13163, kVariationSet}, - {"CT14nlo_as_0120", 13167, kVariationSet}, - {"CT14lo", 13200, kVariationSet}, - {"MMHT2014nlo68clas118", 25200, kHessianUnc}, - {"MMHT2014nnlo68cl", 25300, kHessianUnc}, - {"MMHT2014lo68cl", 25000, kHessianUnc}, - {"PDF4LHC15_nlo_100_pdfas", 90200, kMonteCarloUnc}, - {"PDF4LHC15_nnlo_100_pdfas", 91200, kMonteCarloUnc}, - {"PDF4LHC15_nlo_30_pdfas", 90400, kMonteCarloUnc}, - {"PDF4LHC15_nnlo_30_pdfas", 91400, kMonteCarloUnc}, - {"ABMP16als118_5_nnlo", 42780, kHessianUnc}, - {"HERAPDF20_NLO_EIG", 61130, kHessianUnc}, - {"HERAPDF20_NNLO_EIG", 61200, kHessianUnc}, - {"HERAPDF20_NLO_VAR", 61130, kHessianUnc}, - {"HERAPDF20_NNLO_VAR", 61230, kHessianUnc}, - {"CT14qed_inc_proton", 13400, kHessianUnc}, - {"LUXqed17_plus_PDF4LHC15_nnlo_100", 82200, kMonteCarloUnc}, - }) { - model_ = ""; + WeightHelper::WeightHelper() : pdfSetsInfo(setupPdfSetsInfo()) { model_ = ""; } + + std::vector WeightHelper::setupPdfSetsInfo() { + std::vector tmpSetsInfo; + std::string lhapdf_path = std::getenv("LHAPDF_DATA_PATH"); + std::ifstream pdf_file; + pdf_file.open(lhapdf_path + "/pdfsets.index"); + int lha_set, dummy; + std::string lha_name; + while (pdf_file >> lha_set >> lha_name >> dummy) { + tmpSetsInfo.push_back({lha_name, lha_set, kUnknownUnc}); + } + return tmpSetsInfo; } bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { @@ -68,6 +32,21 @@ namespace gen { }) != pdfSetsInfo.end(); } + bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { + std::string lhaidText = searchAttributes("pdf", weight); + try { + auto pairLHA = LHAPDF::lookupPDF(stoi(lhaidText)); + // require pdf set to exist and it to be the first entry (ie 0) + // possibly change this requirement + if (pairLHA.first != "" && pairLHA.second == 0) { + weight.groupname = std::string(pairLHA.first); + return true; + } + } catch (...) { + } + return false; + } + bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { return (weight.groupname.find("mg_reweighting") != std::string::npos); } @@ -79,8 +58,8 @@ namespace gen { } std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { + auto& attributes = weight.attributes; for (const auto& lab : attributeNames_.at(label)) { - auto& attributes = weight.attributes; if (attributes.find(lab) != attributes.end()) { return boost::algorithm::trim_copy_if(attributes.at(lab), boost::is_any_of("\"")); } @@ -89,11 +68,10 @@ namespace gen { } std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { + auto& content = weight.content; + std::smatch match; for (const auto& lab : attributeNames_.at(label)) { - auto& content = weight.content; - - std::regex expr(lab + "=([0-9]+)"); - std::smatch match; + std::regex expr(lab + "\\s?=\\s?([0-9.]+(?:[eE][+-]?[0-9]+)?)"); if (std::regex_search(content, match, expr)) { return boost::algorithm::trim_copy(match.str(1)); } @@ -105,11 +83,17 @@ namespace gen { auto& group = weightGroups_.back(); auto& scaleGroup = dynamic_cast(group); std::string muRText = searchAttributes("mur", weight); - std::string muFText = searchAttributes("mur", weight); + std::string muFText = searchAttributes("muf", weight); if (muRText.empty() || muFText.empty()) { scaleGroup.setIsWellFormed(false); return; } + // currently skips events with a dynscale. May add back + //size_t dyn = -1; + if (weight.attributes.find("DYN_SCALE") != weight.attributes.end()) { + // dyn = std::stoi(boost::algorithm::trim_copy_if(weight.attributes.at("DYN_SCALE"), boost::is_any_of("\""))); + return; + } try { float muR = std::stof(muRText); @@ -121,38 +105,43 @@ namespace gen { } void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); + auto& group = weightGroups_.back(); std::string lhaidText = searchAttributes("pdf", weight); int lhaid = 0; if (!lhaidText.empty()) { try { lhaid = std::stoi(lhaidText); } catch (std::invalid_argument& e) { - pdfGroup.setIsWellFormed(false); + group.setIsWellFormed(false); + return; } + updatePdfInfo(lhaid, weight.index); + } else + group.setIsWellFormed(false); + } - if (!pdfGroup.containsParentLhapdfId(lhaid, weight.index)) { - std::string description = ""; - auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [lhaid](const PdfSetInfo& setInfo) { - return setInfo.lhapdfId == lhaid; - }); - if (pdfInfo != pdfSetsInfo.end()) { - pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); - if (pdfInfo->uncertaintyType == gen::kHessianUnc) - description += "Hessian "; - else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) - description += "Monte Carlo "; - description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; - description += " with LHAID = " + std::to_string(lhaid); - description += "; "; - } - //else - // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); - pdfGroup.addLhapdfId(lhaid, weight.index); - pdfGroup.appendDescription(description); + void WeightHelper::updatePdfInfo(int lhaid, int index) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); + if (!pdfGroup.containsParentLhapdfId(lhaid)) { + std::string description = ""; + auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [lhaid](const PdfSetInfo& setInfo) { + return setInfo.lhapdfId == lhaid; + }); + if (pdfInfo != pdfSetsInfo.end()) { + pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); + if (pdfInfo->uncertaintyType == gen::kHessianUnc) + description += "Hessian "; + else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) + description += "Monte Carlo "; + description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; + description += " with LHAID = " + std::to_string(lhaid); + description += "; "; } - } else - pdfGroup.setIsWellFormed(false); + //else + // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); + pdfGroup.addLhapdfId(lhaid, index); + pdfGroup.appendDescription(description); + } } // TODO: Could probably recycle this code better @@ -166,15 +155,48 @@ namespace gen { return std::move(weightProduct); } + bool WeightHelper::isMultiSetPdfGroup(WeightGroupInfo& group) { + if (group.weightType() == gen::WeightType::kPdfWeights) { + gen::PdfWeightGroupInfo& pdfGroup = dynamic_cast(group); + if (pdfGroup.containsMultipleSets()) { + return true; + } + } + return false; + } + void WeightHelper::splitPdfGroups() { - // std::vector groupsToSplit; - // for (auto& group: weightGroups_) { - // if (group.weightType() == gen::WeightType::kPdfWeights) { - // gen::PdfWeightGroupInfo& = dynamic_cast(group); - // if (group.containsMultipleSets()) - // groupsToSplit.push_back(group); - // } - // } + std::vector groupsToSplit; + for (auto& group : weightGroups_) { + if (isMultiSetPdfGroup(group)) { + groupsToSplit.push_back(dynamic_cast(group)); + } + } + weightGroups_.erase(std::remove_if(weightGroups_.begin(), + weightGroups_.end(), + [this](auto& group) { return this->isMultiSetPdfGroup(group); }), + weightGroups_.end()); + + // Actually split groups + for (auto parentGroup : groupsToSplit) { + int currentPdfParent = -1; + std::vector firstLhapdfIds = parentGroup.lhapdfIdsContained(); + std::sort(firstLhapdfIds.begin(), firstLhapdfIds.end(), std::greater()); + int parentFirstId = parentGroup.firstId(); + for (auto& metaInfo : parentGroup.containedIds()) { + if (firstLhapdfIds.back() == (int)(metaInfo.globalIndex - parentFirstId)) { + currentPdfParent = parentGroup.getLHAPDFidFromIdx(firstLhapdfIds.back()); + firstLhapdfIds.pop_back(); + std::string groupName = LHAPDF::lookupPDF(currentPdfParent).first; + weightGroups_.push_back(*std::make_unique(groupName)); + } + WeightGroupInfo& childGroup = weightGroups_.back(); + + childGroup.addContainedId(metaInfo.globalIndex, metaInfo.id, metaInfo.label); + int lhaid = currentPdfParent + (metaInfo.globalIndex - childGroup.firstId()); + updatePdfInfo(lhaid, metaInfo.globalIndex); + } + } } std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index e21adb04635e5..ab0451c6c0a4c 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -23,7 +23,6 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" @@ -33,12 +32,13 @@ using namespace lhef; -LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDescription& desc) - : ProducerSourceFromFiles(params, desc, false), - reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_( - edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), - phid_() { +LHESource::LHESource(const edm::ParameterSet ¶ms, + const edm::InputSourceDescription &desc) : + ProducerSourceFromFiles(params, desc, false), + reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), + lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), + phid_() +{ nextEvent(); lheProvenanceHelper_.lheAugment(nullptr); // Initialize metadata, and save the process history ID for use every event. @@ -49,11 +49,17 @@ LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDesc //produces(); } -LHESource::~LHESource() {} +LHESource::~LHESource() +{ +} -void LHESource::endJob() { reader_.reset(); } +void LHESource::endJob() +{ + reader_.reset(); +} -void LHESource::nextEvent() { +void LHESource::nextEvent() +{ if (partonLevel_) { return; } @@ -62,7 +68,7 @@ void LHESource::nextEvent() { do { newFileOpened = false; partonLevel_ = reader_->next(&newFileOpened); - if (newFileOpened) { + if(newFileOpened) { incrementFileIndex(); } } while (newFileOpened && !partonLevel_); @@ -74,7 +80,8 @@ void LHESource::nextEvent() { auto runInfoThis = partonLevel_->getRunInfo(); if (runInfoThis != runInfoLast_) { runInfoLast_ = runInfoThis; - std::unique_ptr product(new LHERunInfoProduct(*runInfoThis->getHEPRUP())); + std::unique_ptr product( + new LHERunInfoProduct(*runInfoThis->getHEPRUP())); fillRunInfoProduct(*runInfoThis, *product); if (runInfoProductLast_) { @@ -92,24 +99,27 @@ void LHESource::nextEvent() { } } -void LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { - for (auto const& h : iInfo.getHeaders()) { +void +LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { + for(auto const& h: iInfo.getHeaders()) { oProduct.addHeader(h); } - for (auto const& c : iInfo.getComments()) { + for(auto const& c: iInfo.getComments()) { oProduct.addComment(c); } } -void LHESource::readRun_(edm::RunPrincipal& runPrincipal) { + +void +LHESource::readRun_(edm::RunPrincipal& runPrincipal) { runAuxiliary()->setProcessHistoryID(phid_); runPrincipal.fillRunPrincipal(processHistoryRegistryForUpdate()); putRunInfoProduct(runPrincipal); - putWeightInfoProduct(runPrincipal); } -void LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { +void +LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { luminosityBlockAuxiliary()->setProcessHistoryID(phid_); lumiPrincipal.fillLuminosityBlockPrincipal( processHistoryRegistry().getMapped(lumiPrincipal.aux().processHistoryID())); @@ -123,26 +133,6 @@ void LHESource::putRunInfoProduct(edm::RunPrincipal& iRunPrincipal) { } } -void LHESource::putWeightInfoProduct(edm::RunPrincipal& iRunPrincipal) { - if (runInfoProductLast_) { - auto product = std::make_unique(); - gen::WeightGroupInfo scaleInfo( - "" - ); - scaleInfo.setWeightType(gen::WeightType::kScaleWeights); - - gen::WeightGroupInfo cenPdfInfo( - "" - ); - cenPdfInfo.setWeightType(gen::WeightType::kPdfWeights); - - product->addWeightGroupInfo(&scaleInfo); - product->addWeightGroupInfo(&cenPdfInfo); - std::unique_ptr rdp(new edm::Wrapper(std::move(product))); - //iRunPrincipal.put(lheProvenanceHelper_.weightProductBranchDescription_, std::move(rdp)); - } -} - bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventAuxiliary::ExperimentType&) { nextEvent(); @@ -157,38 +147,42 @@ bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventA return true; } -void LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { +void +LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { assert(eventCached() || processingMode() != RunsLumisAndEvents); edm::EventAuxiliary aux(eventID(), processGUID(), edm::Timestamp(presentTime()), false); aux.setProcessHistoryID(phid_); eventPrincipal.fillEventPrincipal(aux, processHistoryRegistry().getMapped(aux.processHistoryID())); std::unique_ptr product( - new LHEEventProduct(*partonLevel_->getHEPEUP(), partonLevel_->originalXWGTUP())); + new LHEEventProduct(*partonLevel_->getHEPEUP(), + partonLevel_->originalXWGTUP()) + ); if (partonLevel_->getPDF()) { product->setPDF(*partonLevel_->getPDF()); } std::for_each(partonLevel_->weights().begin(), partonLevel_->weights().end(), - boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); + boost::bind(&LHEEventProduct::addWeight, + product.get(), _1)); product->setScales(partonLevel_->scales()); product->setNpLO(partonLevel_->npLO()); product->setNpNLO(partonLevel_->npNLO()); std::for_each(partonLevel_->getComments().begin(), partonLevel_->getComments().end(), - boost::bind(&LHEEventProduct::addComment, product.get(), _1)); + boost::bind(&LHEEventProduct::addComment, + product.get(), _1)); std::unique_ptr edp(new edm::Wrapper(std::move(product))); - eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, - std::move(edp), - lheProvenanceHelper_.eventProductProvenance_); + eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, std::move(edp), lheProvenanceHelper_.eventProductProvenance_); partonLevel_.reset(); resetEventCached(); } -std::shared_ptr LHESource::readRunAuxiliary_() { +std::shared_ptr +LHESource::readRunAuxiliary_() { edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewRun(); auto aux = std::make_shared(eventID().run(), ts, edm::Timestamp::invalidTimestamp()); @@ -196,18 +190,19 @@ std::shared_ptr LHESource::readRunAuxiliary_() { return aux; } -std::shared_ptr LHESource::readLuminosityBlockAuxiliary_() { - if (processingMode() == Runs) - return std::shared_ptr(); +std::shared_ptr +LHESource::readLuminosityBlockAuxiliary_() { + if (processingMode() == Runs) return std::shared_ptr(); edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewLumi(); - auto aux = std::make_shared( - eventID().run(), eventID().luminosityBlock(), ts, edm::Timestamp::invalidTimestamp()); + auto aux = std::make_shared(eventID().run(), eventID().luminosityBlock(), + ts, edm::Timestamp::invalidTimestamp()); aux->setProcessHistoryID(phid_); return aux; } -void LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +void +LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.setComment("A source which reads LHE files."); edm::ProducerSourceFromFiles::fillDescription(desc); diff --git a/SimDataFormats/GeneratorProducts/BuildFile.xml b/SimDataFormats/GeneratorProducts/BuildFile.xml index c46f70032901b..5cbbdbdf5df0b 100644 --- a/SimDataFormats/GeneratorProducts/BuildFile.xml +++ b/SimDataFormats/GeneratorProducts/BuildFile.xml @@ -3,6 +3,7 @@ + diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 617a81f043ef5..626f1ab2297b4 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -2,6 +2,7 @@ #define SimDataFormats_GeneratorProducts_PdfWeightGroupInfo_h #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "LHAPDF/LHAPDF.h" #include #include #include @@ -34,6 +35,8 @@ namespace gen { void copy(const PdfWeightGroupInfo& other); virtual PdfWeightGroupInfo* clone() const override; + std::unordered_map getLHAPDFids() { return lhapdfIdsContained_; } + int getLHAPDFidFromIdx(int idx) const { return lhapdfIdsContained_.at(idx); } void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } void setAlphasUpIndex(int alphasUpIndex) { alphasUpIndex_ = alphasUpIndex; } @@ -44,7 +47,7 @@ namespace gen { std::vector setIds; int lhaid = refLhaid; int index = indexOfLhapdfId(lhaid); - while (index <= lastId_ && parentLhapdfId(lhaid, index) == refLhaid) { + while (index <= lastId_ && parentLhapdfId(lhaid) == refLhaid) { setIds.push_back(idsContained_.at(index)); index++; lhaid = lhapdfIdsContained_[index]; @@ -52,12 +55,12 @@ namespace gen { return setIds; } bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } - int parentLhapdfId(int lhaid, int globalIndex) const { return lhaid - (globalIndex - firstId_); } - bool containsParentLhapdfId(int lhaid, int globalIndex) const { + int parentLhapdfId(int lhaid) const { return lhaid - LHAPDF::lookupPDF(lhaid).second; } + bool containsParentLhapdfId(int lhaid) const { if (indexOfLhapdfId(lhaid) != -1) return true; - int parentid = parentLhapdfId(lhaid, globalIndex); - return indexOfLhapdfId(parentid) != -1; + + return indexOfLhapdfId(parentLhapdfId(lhaid)) != -1; } bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } int indexOfLhapdfId(int lhaid) const { diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index a62d7cf0fe16a..9c2c4a3fca9b6 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -2,6 +2,7 @@ #define SimDataFormats_GeneratorProducts_ScaleWeightGroupInfo_h #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include namespace gen { class ScaleWeightGroupInfo : public WeightGroupInfo { @@ -16,6 +17,10 @@ namespace gen { size_t muR05muF05Index_; size_t muR05muF1Index_; size_t muR05muF2Index_; + // Dyn_scale + // bool hasDyn = false; + // Maybe have mapping of [muR##muF##index] = vector + // std::unordered_map> dynMap; public: ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} diff --git a/Test/Test/BuildFile.xml b/Test/Test/BuildFile.xml new file mode 100644 index 0000000000000..a1b937c463f71 --- /dev/null +++ b/Test/Test/BuildFile.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Test/Test/interface/test.h b/Test/Test/interface/test.h new file mode 100644 index 0000000000000..22a0a4c2aa0f1 --- /dev/null +++ b/Test/Test/interface/test.h @@ -0,0 +1,18 @@ +#include "GeneratorInterface/Core/interface/LHEWeightHelper.h" + +#include +#include +#include +#include + +namespace test { + class Test_LHEWeightHelper { + public: + Test_LHEWeightHelper(); + + void add_file(std::string infileName); + gen::LHEWeightHelper weight_; + + }; + +} diff --git a/Test/Test/src/classes.h b/Test/Test/src/classes.h new file mode 100644 index 0000000000000..dae06b3522fb1 --- /dev/null +++ b/Test/Test/src/classes.h @@ -0,0 +1 @@ +#include "Test/Test/interface/test.h" diff --git a/Test/Test/src/classes_def.xml b/Test/Test/src/classes_def.xml new file mode 100644 index 0000000000000..47d60af8e4eae --- /dev/null +++ b/Test/Test/src/classes_def.xml @@ -0,0 +1,3 @@ + + + diff --git a/Test/Test/src/test.cc b/Test/Test/src/test.cc new file mode 100644 index 0000000000000..5474e76f6dd18 --- /dev/null +++ b/Test/Test/src/test.cc @@ -0,0 +1,22 @@ +#include "Test/Test/interface/test.h" + +namespace test { + Test_LHEWeightHelper::Test_LHEWeightHelper() { + + } + + void Test_LHEWeightHelper::add_file(std::string infileName) { + std::ifstream myfile; + myfile.open(infileName); + std::vector lines; + std::string line; + while(getline(myfile, line)) { + lines.push_back(line); + } + weight_.setHeaderLines(lines); + myfile.close(); + } + + +} + diff --git a/lhe_test.C b/lhe_test.C new file mode 100644 index 0000000000000..f601cd50eba70 --- /dev/null +++ b/lhe_test.C @@ -0,0 +1,57 @@ +/* + + "testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt"; + "testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt"; + + + "testFiles/W1jet_260_weight_info.txt"; + "testFiles/WJ_MiNNLO_weightinfo.txt"; + "testFiles/WJ_NNLOPS_weightinfo.txt"; + "testFiles/WZVBS_2017_weightInfo.txt"; + "testFiles/WZVBS_aQGCFM_weightInfo.txt"; + "testFiles/WZVBS_aQGC_weightInfo.txt"; + "testFiles/WZVBS_private_weightInfo.txt"; + "testFiles/ZJ_MiNNLO_weightinfo.txt"; + "testFiles/ZZTo4L_powheg_2016_weightInfo.txt"; + "testFiles/ZZTo4L_powheg_2017_weightInfo.txt"; + "testFiles/susyweights.txt"; + + + "testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt"; + + + + "testFiles/VVV_2017_weight_info.txt"; // possibly bad file? +*/ + +void lhe_test() { + + vector files = {//"testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt", + "testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt", + // "testFiles/W1jet_260_weight_info.txt", + // "testFiles/WJ_MiNNLO_weightinfo.txt", + // "testFiles/WJ_NNLOPS_weightinfo.txt", + // "testFiles/WZVBS_2017_weightInfo.txt", + // "testFiles/WZVBS_aQGCFM_weightInfo.txt", + // "testFiles/WZVBS_aQGC_weightInfo.txt", + // "testFiles/WZVBS_private_weightInfo.txt", + // "testFiles/ZJ_MiNNLO_weightinfo.txt", + // "testFiles/ZZTo4L_powheg_2016_weightInfo.txt", + // "testFiles/ZZTo4L_powheg_2017_weightInfo.txt", + // "testFiles/susyweights.txt", + // "testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt" + }; + for(auto infile: files) { + test::Test_LHEWeightHelper a; + std::cout << "-------------------------------------------\n"; + std::cout << infile << "\n"; + a.add_file(infile); + a.weight_.parseWeights(); + } + +} + + +/* Tested + "testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt"; +*/ diff --git a/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt b/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt new file mode 100644 index 0000000000000..9042f45c4f47b --- /dev/null +++ b/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt @@ -0,0 +1,474 @@ + + mur=1 muf=1 + mur=1 muf=2 + mur=1 muf=0.5 + mur=2 muf=1 + mur=2 muf=2 + mur=2 muf=0.5 + mur=0.5 muf=1 + mur=0.5 muf=2 + mur=0.5 muf=0.5 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + Member 53 + Member 54 + Member 55 + Member 56 + Member 57 + Member 58 + Member 59 + Member 60 + Member 61 + Member 62 + Member 63 + Member 64 + Member 65 + Member 66 + Member 67 + Member 68 + Member 69 + Member 70 + Member 71 + Member 72 + Member 73 + Member 74 + Member 75 + Member 76 + Member 77 + Member 78 + Member 79 + Member 80 + Member 81 + Member 82 + Member 83 + Member 84 + Member 85 + Member 86 + Member 87 + Member 88 + Member 89 + Member 90 + Member 91 + Member 92 + Member 93 + Member 94 + Member 95 + Member 96 + Member 97 + Member 98 + Member 99 + Member 100 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + Member 53 + Member 54 + Member 55 + Member 56 + Member 57 + Member 58 + Member 59 + Member 60 + Member 61 + Member 62 + Member 63 + Member 64 + Member 65 + Member 66 + Member 67 + Member 68 + Member 69 + Member 70 + Member 71 + Member 72 + Member 73 + Member 74 + Member 75 + Member 76 + Member 77 + Member 78 + Member 79 + Member 80 + Member 81 + Member 82 + Member 83 + Member 84 + Member 85 + Member 86 + Member 87 + Member 88 + Member 89 + Member 90 + Member 91 + Member 92 + Member 93 + Member 94 + Member 95 + Member 96 + Member 97 + Member 98 + Member 99 + Member 100 + + + Member 0 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + Member 53 + Member 54 + Member 55 + Member 56 + Member 57 + Member 58 + Member 59 + Member 60 + Member 61 + Member 62 + Member 63 + Member 64 + Member 65 + Member 66 + Member 67 + Member 68 + Member 69 + Member 70 + Member 71 + Member 72 + Member 73 + Member 74 + Member 75 + Member 76 + Member 77 + Member 78 + Member 79 + Member 80 + Member 81 + Member 82 + Member 83 + Member 84 + Member 85 + Member 86 + Member 87 + Member 88 + Member 89 + Member 90 + Member 91 + Member 92 + Member 93 + Member 94 + Member 95 + Member 96 + Member 97 + Member 98 + Member 99 + Member 100 + + + Member 0 + + + Member 0 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + + + Member 0 + Member 1 + Member 2 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + + + Member 0 + + + Member 0 + + + Member 0 + Member 1 + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 + Member 7 + Member 8 + Member 9 + Member 10 + Member 11 + Member 12 + Member 13 + Member 14 + Member 15 + Member 16 + Member 17 + Member 18 + Member 19 + Member 20 + Member 21 + Member 22 + Member 23 + Member 24 + Member 25 + Member 26 + Member 27 + Member 28 + Member 29 + Member 30 + Member 31 + Member 32 + Member 33 + Member 34 + Member 35 + Member 36 + Member 37 + Member 38 + Member 39 + Member 40 + Member 41 + Member 42 + Member 43 + Member 44 + Member 45 + Member 46 + Member 47 + Member 48 + Member 49 + Member 50 + Member 51 + Member 52 + + + Member 0 + diff --git a/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt b/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt new file mode 100644 index 0000000000000..a3754843fb97e --- /dev/null +++ b/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt @@ -0,0 +1,1158 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/FlatPU28to62HcalNZSRAW_94X_mcRun2_asymptotic_v3-v1/260000/5436C913-046D-E911-B076-0025905A60BE.root + + mur=1 muf=1 + mur=1 muf=2 + mur=1 muf=0.5 + mur=2 muf=1 + mur=2 muf=2 + mur=2 muf=0.5 + mur=0.5 muf=1 + mur=0.5 muf=2 + mur=0.5 muf=0.5 + + + Member 0 of sets NNPDF31_nnlo_hessian_pdfas + Member 1 of sets NNPDF31_nnlo_hessian_pdfas + Member 2 of sets NNPDF31_nnlo_hessian_pdfas + Member 3 of sets NNPDF31_nnlo_hessian_pdfas + Member 4 of sets NNPDF31_nnlo_hessian_pdfas + Member 5 of sets NNPDF31_nnlo_hessian_pdfas + Member 6 of sets NNPDF31_nnlo_hessian_pdfas + Member 7 of sets NNPDF31_nnlo_hessian_pdfas + Member 8 of sets NNPDF31_nnlo_hessian_pdfas + Member 9 of sets NNPDF31_nnlo_hessian_pdfas + Member 10 of sets NNPDF31_nnlo_hessian_pdfas + Member 11 of sets NNPDF31_nnlo_hessian_pdfas + Member 12 of sets NNPDF31_nnlo_hessian_pdfas + Member 13 of sets NNPDF31_nnlo_hessian_pdfas + Member 14 of sets NNPDF31_nnlo_hessian_pdfas + Member 15 of sets NNPDF31_nnlo_hessian_pdfas + Member 16 of sets NNPDF31_nnlo_hessian_pdfas + Member 17 of sets NNPDF31_nnlo_hessian_pdfas + Member 18 of sets NNPDF31_nnlo_hessian_pdfas + Member 19 of sets NNPDF31_nnlo_hessian_pdfas + Member 20 of sets NNPDF31_nnlo_hessian_pdfas + Member 21 of sets NNPDF31_nnlo_hessian_pdfas + Member 22 of sets NNPDF31_nnlo_hessian_pdfas + Member 23 of sets NNPDF31_nnlo_hessian_pdfas + Member 24 of sets NNPDF31_nnlo_hessian_pdfas + Member 25 of sets NNPDF31_nnlo_hessian_pdfas + Member 26 of sets NNPDF31_nnlo_hessian_pdfas + Member 27 of sets NNPDF31_nnlo_hessian_pdfas + Member 28 of sets NNPDF31_nnlo_hessian_pdfas + Member 29 of sets NNPDF31_nnlo_hessian_pdfas + Member 30 of sets NNPDF31_nnlo_hessian_pdfas + Member 31 of sets NNPDF31_nnlo_hessian_pdfas + Member 32 of sets NNPDF31_nnlo_hessian_pdfas + Member 33 of sets NNPDF31_nnlo_hessian_pdfas + Member 34 of sets NNPDF31_nnlo_hessian_pdfas + Member 35 of sets NNPDF31_nnlo_hessian_pdfas + Member 36 of sets NNPDF31_nnlo_hessian_pdfas + Member 37 of sets NNPDF31_nnlo_hessian_pdfas + Member 38 of sets NNPDF31_nnlo_hessian_pdfas + Member 39 of sets NNPDF31_nnlo_hessian_pdfas + Member 40 of sets NNPDF31_nnlo_hessian_pdfas + Member 41 of sets NNPDF31_nnlo_hessian_pdfas + Member 42 of sets NNPDF31_nnlo_hessian_pdfas + Member 43 of sets NNPDF31_nnlo_hessian_pdfas + Member 44 of sets NNPDF31_nnlo_hessian_pdfas + Member 45 of sets NNPDF31_nnlo_hessian_pdfas + Member 46 of sets NNPDF31_nnlo_hessian_pdfas + Member 47 of sets NNPDF31_nnlo_hessian_pdfas + Member 48 of sets NNPDF31_nnlo_hessian_pdfas + Member 49 of sets NNPDF31_nnlo_hessian_pdfas + Member 50 of sets NNPDF31_nnlo_hessian_pdfas + Member 51 of sets NNPDF31_nnlo_hessian_pdfas + Member 52 of sets NNPDF31_nnlo_hessian_pdfas + Member 53 of sets NNPDF31_nnlo_hessian_pdfas + Member 54 of sets NNPDF31_nnlo_hessian_pdfas + Member 55 of sets NNPDF31_nnlo_hessian_pdfas + Member 56 of sets NNPDF31_nnlo_hessian_pdfas + Member 57 of sets NNPDF31_nnlo_hessian_pdfas + Member 58 of sets NNPDF31_nnlo_hessian_pdfas + Member 59 of sets NNPDF31_nnlo_hessian_pdfas + Member 60 of sets NNPDF31_nnlo_hessian_pdfas + Member 61 of sets NNPDF31_nnlo_hessian_pdfas + Member 62 of sets NNPDF31_nnlo_hessian_pdfas + Member 63 of sets NNPDF31_nnlo_hessian_pdfas + Member 64 of sets NNPDF31_nnlo_hessian_pdfas + Member 65 of sets NNPDF31_nnlo_hessian_pdfas + Member 66 of sets NNPDF31_nnlo_hessian_pdfas + Member 67 of sets NNPDF31_nnlo_hessian_pdfas + Member 68 of sets NNPDF31_nnlo_hessian_pdfas + Member 69 of sets NNPDF31_nnlo_hessian_pdfas + Member 70 of sets NNPDF31_nnlo_hessian_pdfas + Member 71 of sets NNPDF31_nnlo_hessian_pdfas + Member 72 of sets NNPDF31_nnlo_hessian_pdfas + Member 73 of sets NNPDF31_nnlo_hessian_pdfas + Member 74 of sets NNPDF31_nnlo_hessian_pdfas + Member 75 of sets NNPDF31_nnlo_hessian_pdfas + Member 76 of sets NNPDF31_nnlo_hessian_pdfas + Member 77 of sets NNPDF31_nnlo_hessian_pdfas + Member 78 of sets NNPDF31_nnlo_hessian_pdfas + Member 79 of sets NNPDF31_nnlo_hessian_pdfas + Member 80 of sets NNPDF31_nnlo_hessian_pdfas + Member 81 of sets NNPDF31_nnlo_hessian_pdfas + Member 82 of sets NNPDF31_nnlo_hessian_pdfas + Member 83 of sets NNPDF31_nnlo_hessian_pdfas + Member 84 of sets NNPDF31_nnlo_hessian_pdfas + Member 85 of sets NNPDF31_nnlo_hessian_pdfas + Member 86 of sets NNPDF31_nnlo_hessian_pdfas + Member 87 of sets NNPDF31_nnlo_hessian_pdfas + Member 88 of sets NNPDF31_nnlo_hessian_pdfas + Member 89 of sets NNPDF31_nnlo_hessian_pdfas + Member 90 of sets NNPDF31_nnlo_hessian_pdfas + Member 91 of sets NNPDF31_nnlo_hessian_pdfas + Member 92 of sets NNPDF31_nnlo_hessian_pdfas + Member 93 of sets NNPDF31_nnlo_hessian_pdfas + Member 94 of sets NNPDF31_nnlo_hessian_pdfas + Member 95 of sets NNPDF31_nnlo_hessian_pdfas + Member 96 of sets NNPDF31_nnlo_hessian_pdfas + Member 97 of sets NNPDF31_nnlo_hessian_pdfas + Member 98 of sets NNPDF31_nnlo_hessian_pdfas + Member 99 of sets NNPDF31_nnlo_hessian_pdfas + Member 100 of sets NNPDF31_nnlo_hessian_pdfas + Member 101 of sets NNPDF31_nnlo_hessian_pdfas + Member 102 of sets NNPDF31_nnlo_hessian_pdfas + + + Member 0 of sets NNPDF31_nnlo_as_0108 + + + Member 0 of sets NNPDF31_nnlo_as_0110 + + + Member 0 of sets NNPDF31_nnlo_as_0112 + + + Member 0 of sets NNPDF31_nnlo_as_0114 + + + Member 0 of sets NNPDF31_nnlo_as_0117 + + + Member 0 of sets NNPDF31_nnlo_as_0119 + + + Member 0 of sets NNPDF31_nnlo_as_0122 + + + Member 0 of sets NNPDF31_nnlo_as_0124 + + + Member 0 of sets NNPDF31_nlo_hessian_pdfas + Member 1 of sets NNPDF31_nlo_hessian_pdfas + Member 2 of sets NNPDF31_nlo_hessian_pdfas + Member 3 of sets NNPDF31_nlo_hessian_pdfas + Member 4 of sets NNPDF31_nlo_hessian_pdfas + Member 5 of sets NNPDF31_nlo_hessian_pdfas + Member 6 of sets NNPDF31_nlo_hessian_pdfas + Member 7 of sets NNPDF31_nlo_hessian_pdfas + Member 8 of sets NNPDF31_nlo_hessian_pdfas + Member 9 of sets NNPDF31_nlo_hessian_pdfas + Member 10 of sets NNPDF31_nlo_hessian_pdfas + Member 11 of sets NNPDF31_nlo_hessian_pdfas + Member 12 of sets NNPDF31_nlo_hessian_pdfas + Member 13 of sets NNPDF31_nlo_hessian_pdfas + Member 14 of sets NNPDF31_nlo_hessian_pdfas + Member 15 of sets NNPDF31_nlo_hessian_pdfas + Member 16 of sets NNPDF31_nlo_hessian_pdfas + Member 17 of sets NNPDF31_nlo_hessian_pdfas + Member 18 of sets NNPDF31_nlo_hessian_pdfas + Member 19 of sets NNPDF31_nlo_hessian_pdfas + Member 20 of sets NNPDF31_nlo_hessian_pdfas + Member 21 of sets NNPDF31_nlo_hessian_pdfas + Member 22 of sets NNPDF31_nlo_hessian_pdfas + Member 23 of sets NNPDF31_nlo_hessian_pdfas + Member 24 of sets NNPDF31_nlo_hessian_pdfas + Member 25 of sets NNPDF31_nlo_hessian_pdfas + Member 26 of sets NNPDF31_nlo_hessian_pdfas + Member 27 of sets NNPDF31_nlo_hessian_pdfas + Member 28 of sets NNPDF31_nlo_hessian_pdfas + Member 29 of sets NNPDF31_nlo_hessian_pdfas + Member 30 of sets NNPDF31_nlo_hessian_pdfas + Member 31 of sets NNPDF31_nlo_hessian_pdfas + Member 32 of sets NNPDF31_nlo_hessian_pdfas + Member 33 of sets NNPDF31_nlo_hessian_pdfas + Member 34 of sets NNPDF31_nlo_hessian_pdfas + Member 35 of sets NNPDF31_nlo_hessian_pdfas + Member 36 of sets NNPDF31_nlo_hessian_pdfas + Member 37 of sets NNPDF31_nlo_hessian_pdfas + Member 38 of sets NNPDF31_nlo_hessian_pdfas + Member 39 of sets NNPDF31_nlo_hessian_pdfas + Member 40 of sets NNPDF31_nlo_hessian_pdfas + Member 41 of sets NNPDF31_nlo_hessian_pdfas + Member 42 of sets NNPDF31_nlo_hessian_pdfas + Member 43 of sets NNPDF31_nlo_hessian_pdfas + Member 44 of sets NNPDF31_nlo_hessian_pdfas + Member 45 of sets NNPDF31_nlo_hessian_pdfas + Member 46 of sets NNPDF31_nlo_hessian_pdfas + Member 47 of sets NNPDF31_nlo_hessian_pdfas + Member 48 of sets NNPDF31_nlo_hessian_pdfas + Member 49 of sets NNPDF31_nlo_hessian_pdfas + Member 50 of sets NNPDF31_nlo_hessian_pdfas + Member 51 of sets NNPDF31_nlo_hessian_pdfas + Member 52 of sets NNPDF31_nlo_hessian_pdfas + Member 53 of sets NNPDF31_nlo_hessian_pdfas + Member 54 of sets NNPDF31_nlo_hessian_pdfas + Member 55 of sets NNPDF31_nlo_hessian_pdfas + Member 56 of sets NNPDF31_nlo_hessian_pdfas + Member 57 of sets NNPDF31_nlo_hessian_pdfas + Member 58 of sets NNPDF31_nlo_hessian_pdfas + Member 59 of sets NNPDF31_nlo_hessian_pdfas + Member 60 of sets NNPDF31_nlo_hessian_pdfas + Member 61 of sets NNPDF31_nlo_hessian_pdfas + Member 62 of sets NNPDF31_nlo_hessian_pdfas + Member 63 of sets NNPDF31_nlo_hessian_pdfas + Member 64 of sets NNPDF31_nlo_hessian_pdfas + Member 65 of sets NNPDF31_nlo_hessian_pdfas + Member 66 of sets NNPDF31_nlo_hessian_pdfas + Member 67 of sets NNPDF31_nlo_hessian_pdfas + Member 68 of sets NNPDF31_nlo_hessian_pdfas + Member 69 of sets NNPDF31_nlo_hessian_pdfas + Member 70 of sets NNPDF31_nlo_hessian_pdfas + Member 71 of sets NNPDF31_nlo_hessian_pdfas + Member 72 of sets NNPDF31_nlo_hessian_pdfas + Member 73 of sets NNPDF31_nlo_hessian_pdfas + Member 74 of sets NNPDF31_nlo_hessian_pdfas + Member 75 of sets NNPDF31_nlo_hessian_pdfas + Member 76 of sets NNPDF31_nlo_hessian_pdfas + Member 77 of sets NNPDF31_nlo_hessian_pdfas + Member 78 of sets NNPDF31_nlo_hessian_pdfas + Member 79 of sets NNPDF31_nlo_hessian_pdfas + Member 80 of sets NNPDF31_nlo_hessian_pdfas + Member 81 of sets NNPDF31_nlo_hessian_pdfas + Member 82 of sets NNPDF31_nlo_hessian_pdfas + Member 83 of sets NNPDF31_nlo_hessian_pdfas + Member 84 of sets NNPDF31_nlo_hessian_pdfas + Member 85 of sets NNPDF31_nlo_hessian_pdfas + Member 86 of sets NNPDF31_nlo_hessian_pdfas + Member 87 of sets NNPDF31_nlo_hessian_pdfas + Member 88 of sets NNPDF31_nlo_hessian_pdfas + Member 89 of sets NNPDF31_nlo_hessian_pdfas + Member 90 of sets NNPDF31_nlo_hessian_pdfas + Member 91 of sets NNPDF31_nlo_hessian_pdfas + Member 92 of sets NNPDF31_nlo_hessian_pdfas + Member 93 of sets NNPDF31_nlo_hessian_pdfas + Member 94 of sets NNPDF31_nlo_hessian_pdfas + Member 95 of sets NNPDF31_nlo_hessian_pdfas + Member 96 of sets NNPDF31_nlo_hessian_pdfas + Member 97 of sets NNPDF31_nlo_hessian_pdfas + Member 98 of sets NNPDF31_nlo_hessian_pdfas + Member 99 of sets NNPDF31_nlo_hessian_pdfas + Member 100 of sets NNPDF31_nlo_hessian_pdfas + Member 101 of sets NNPDF31_nlo_hessian_pdfas + Member 102 of sets NNPDF31_nlo_hessian_pdfas + + + Member 0 of sets CT14nnlo + Member 1 of sets CT14nnlo + Member 2 of sets CT14nnlo + Member 3 of sets CT14nnlo + Member 4 of sets CT14nnlo + Member 5 of sets CT14nnlo + Member 6 of sets CT14nnlo + Member 7 of sets CT14nnlo + Member 8 of sets CT14nnlo + Member 9 of sets CT14nnlo + Member 10 of sets CT14nnlo + Member 11 of sets CT14nnlo + Member 12 of sets CT14nnlo + Member 13 of sets CT14nnlo + Member 14 of sets CT14nnlo + Member 15 of sets CT14nnlo + Member 16 of sets CT14nnlo + Member 17 of sets CT14nnlo + Member 18 of sets CT14nnlo + Member 19 of sets CT14nnlo + Member 20 of sets CT14nnlo + Member 21 of sets CT14nnlo + Member 22 of sets CT14nnlo + Member 23 of sets CT14nnlo + Member 24 of sets CT14nnlo + Member 25 of sets CT14nnlo + Member 26 of sets CT14nnlo + Member 27 of sets CT14nnlo + Member 28 of sets CT14nnlo + Member 29 of sets CT14nnlo + Member 30 of sets CT14nnlo + Member 31 of sets CT14nnlo + Member 32 of sets CT14nnlo + Member 33 of sets CT14nnlo + Member 34 of sets CT14nnlo + Member 35 of sets CT14nnlo + Member 36 of sets CT14nnlo + Member 37 of sets CT14nnlo + Member 38 of sets CT14nnlo + Member 39 of sets CT14nnlo + Member 40 of sets CT14nnlo + Member 41 of sets CT14nnlo + Member 42 of sets CT14nnlo + Member 43 of sets CT14nnlo + Member 44 of sets CT14nnlo + Member 45 of sets CT14nnlo + Member 46 of sets CT14nnlo + Member 47 of sets CT14nnlo + Member 48 of sets CT14nnlo + Member 49 of sets CT14nnlo + Member 50 of sets CT14nnlo + Member 51 of sets CT14nnlo + Member 52 of sets CT14nnlo + Member 53 of sets CT14nnlo + Member 54 of sets CT14nnlo + Member 55 of sets CT14nnlo + Member 56 of sets CT14nnlo + + + Member 0 of sets CT14nnlo_as_0116 + + + Member 0 of sets CT14nnlo_as_0120 + + + Member 0 of sets CT14nlo + Member 1 of sets CT14nlo + Member 2 of sets CT14nlo + Member 3 of sets CT14nlo + Member 4 of sets CT14nlo + Member 5 of sets CT14nlo + Member 6 of sets CT14nlo + Member 7 of sets CT14nlo + Member 8 of sets CT14nlo + Member 9 of sets CT14nlo + Member 10 of sets CT14nlo + Member 11 of sets CT14nlo + Member 12 of sets CT14nlo + Member 13 of sets CT14nlo + Member 14 of sets CT14nlo + Member 15 of sets CT14nlo + Member 16 of sets CT14nlo + Member 17 of sets CT14nlo + Member 18 of sets CT14nlo + Member 19 of sets CT14nlo + Member 20 of sets CT14nlo + Member 21 of sets CT14nlo + Member 22 of sets CT14nlo + Member 23 of sets CT14nlo + Member 24 of sets CT14nlo + Member 25 of sets CT14nlo + Member 26 of sets CT14nlo + Member 27 of sets CT14nlo + Member 28 of sets CT14nlo + Member 29 of sets CT14nlo + Member 30 of sets CT14nlo + Member 31 of sets CT14nlo + Member 32 of sets CT14nlo + Member 33 of sets CT14nlo + Member 34 of sets CT14nlo + Member 35 of sets CT14nlo + Member 36 of sets CT14nlo + Member 37 of sets CT14nlo + Member 38 of sets CT14nlo + Member 39 of sets CT14nlo + Member 40 of sets CT14nlo + Member 41 of sets CT14nlo + Member 42 of sets CT14nlo + Member 43 of sets CT14nlo + Member 44 of sets CT14nlo + Member 45 of sets CT14nlo + Member 46 of sets CT14nlo + Member 47 of sets CT14nlo + Member 48 of sets CT14nlo + Member 49 of sets CT14nlo + Member 50 of sets CT14nlo + Member 51 of sets CT14nlo + Member 52 of sets CT14nlo + Member 53 of sets CT14nlo + Member 54 of sets CT14nlo + Member 55 of sets CT14nlo + Member 56 of sets CT14nlo + + + Member 0 of sets CT14nlo_as_0116 + + + Member 0 of sets CT14nlo_as_0120 + + + Member 0 of sets CT14lo + + + Member 0 of sets MMHT2014nlo68clas118 + Member 1 of sets MMHT2014nlo68clas118 + Member 2 of sets MMHT2014nlo68clas118 + Member 3 of sets MMHT2014nlo68clas118 + Member 4 of sets MMHT2014nlo68clas118 + Member 5 of sets MMHT2014nlo68clas118 + Member 6 of sets MMHT2014nlo68clas118 + Member 7 of sets MMHT2014nlo68clas118 + Member 8 of sets MMHT2014nlo68clas118 + Member 9 of sets MMHT2014nlo68clas118 + Member 10 of sets MMHT2014nlo68clas118 + Member 11 of sets MMHT2014nlo68clas118 + Member 12 of sets MMHT2014nlo68clas118 + Member 13 of sets MMHT2014nlo68clas118 + Member 14 of sets MMHT2014nlo68clas118 + Member 15 of sets MMHT2014nlo68clas118 + Member 16 of sets MMHT2014nlo68clas118 + Member 17 of sets MMHT2014nlo68clas118 + Member 18 of sets MMHT2014nlo68clas118 + Member 19 of sets MMHT2014nlo68clas118 + Member 20 of sets MMHT2014nlo68clas118 + Member 21 of sets MMHT2014nlo68clas118 + Member 22 of sets MMHT2014nlo68clas118 + Member 23 of sets MMHT2014nlo68clas118 + Member 24 of sets MMHT2014nlo68clas118 + Member 25 of sets MMHT2014nlo68clas118 + Member 26 of sets MMHT2014nlo68clas118 + Member 27 of sets MMHT2014nlo68clas118 + Member 28 of sets MMHT2014nlo68clas118 + Member 29 of sets MMHT2014nlo68clas118 + Member 30 of sets MMHT2014nlo68clas118 + Member 31 of sets MMHT2014nlo68clas118 + Member 32 of sets MMHT2014nlo68clas118 + Member 33 of sets MMHT2014nlo68clas118 + Member 34 of sets MMHT2014nlo68clas118 + Member 35 of sets MMHT2014nlo68clas118 + Member 36 of sets MMHT2014nlo68clas118 + Member 37 of sets MMHT2014nlo68clas118 + Member 38 of sets MMHT2014nlo68clas118 + Member 39 of sets MMHT2014nlo68clas118 + Member 40 of sets MMHT2014nlo68clas118 + Member 41 of sets MMHT2014nlo68clas118 + Member 42 of sets MMHT2014nlo68clas118 + Member 43 of sets MMHT2014nlo68clas118 + Member 44 of sets MMHT2014nlo68clas118 + Member 45 of sets MMHT2014nlo68clas118 + Member 46 of sets MMHT2014nlo68clas118 + Member 47 of sets MMHT2014nlo68clas118 + Member 48 of sets MMHT2014nlo68clas118 + Member 49 of sets MMHT2014nlo68clas118 + Member 50 of sets MMHT2014nlo68clas118 + + + Member 0 of sets MMHT2014nnlo68cl + Member 1 of sets MMHT2014nnlo68cl + Member 2 of sets MMHT2014nnlo68cl + Member 3 of sets MMHT2014nnlo68cl + Member 4 of sets MMHT2014nnlo68cl + Member 5 of sets MMHT2014nnlo68cl + Member 6 of sets MMHT2014nnlo68cl + Member 7 of sets MMHT2014nnlo68cl + Member 8 of sets MMHT2014nnlo68cl + Member 9 of sets MMHT2014nnlo68cl + Member 10 of sets MMHT2014nnlo68cl + Member 11 of sets MMHT2014nnlo68cl + Member 12 of sets MMHT2014nnlo68cl + Member 13 of sets MMHT2014nnlo68cl + Member 14 of sets MMHT2014nnlo68cl + Member 15 of sets MMHT2014nnlo68cl + Member 16 of sets MMHT2014nnlo68cl + Member 17 of sets MMHT2014nnlo68cl + Member 18 of sets MMHT2014nnlo68cl + Member 19 of sets MMHT2014nnlo68cl + Member 20 of sets MMHT2014nnlo68cl + Member 21 of sets MMHT2014nnlo68cl + Member 22 of sets MMHT2014nnlo68cl + Member 23 of sets MMHT2014nnlo68cl + Member 24 of sets MMHT2014nnlo68cl + Member 25 of sets MMHT2014nnlo68cl + Member 26 of sets MMHT2014nnlo68cl + Member 27 of sets MMHT2014nnlo68cl + Member 28 of sets MMHT2014nnlo68cl + Member 29 of sets MMHT2014nnlo68cl + Member 30 of sets MMHT2014nnlo68cl + Member 31 of sets MMHT2014nnlo68cl + Member 32 of sets MMHT2014nnlo68cl + Member 33 of sets MMHT2014nnlo68cl + Member 34 of sets MMHT2014nnlo68cl + Member 35 of sets MMHT2014nnlo68cl + Member 36 of sets MMHT2014nnlo68cl + Member 37 of sets MMHT2014nnlo68cl + Member 38 of sets MMHT2014nnlo68cl + Member 39 of sets MMHT2014nnlo68cl + Member 40 of sets MMHT2014nnlo68cl + Member 41 of sets MMHT2014nnlo68cl + Member 42 of sets MMHT2014nnlo68cl + Member 43 of sets MMHT2014nnlo68cl + Member 44 of sets MMHT2014nnlo68cl + Member 45 of sets MMHT2014nnlo68cl + Member 46 of sets MMHT2014nnlo68cl + Member 47 of sets MMHT2014nnlo68cl + Member 48 of sets MMHT2014nnlo68cl + Member 49 of sets MMHT2014nnlo68cl + Member 50 of sets MMHT2014nnlo68cl + + + Member 0 of sets MMHT2014lo68cl + + + Member 0 of sets ABMP16als118_5_nnlo + Member 1 of sets ABMP16als118_5_nnlo + Member 2 of sets ABMP16als118_5_nnlo + Member 3 of sets ABMP16als118_5_nnlo + Member 4 of sets ABMP16als118_5_nnlo + Member 5 of sets ABMP16als118_5_nnlo + Member 6 of sets ABMP16als118_5_nnlo + Member 7 of sets ABMP16als118_5_nnlo + Member 8 of sets ABMP16als118_5_nnlo + Member 9 of sets ABMP16als118_5_nnlo + Member 10 of sets ABMP16als118_5_nnlo + Member 11 of sets ABMP16als118_5_nnlo + Member 12 of sets ABMP16als118_5_nnlo + Member 13 of sets ABMP16als118_5_nnlo + Member 14 of sets ABMP16als118_5_nnlo + Member 15 of sets ABMP16als118_5_nnlo + Member 16 of sets ABMP16als118_5_nnlo + Member 17 of sets ABMP16als118_5_nnlo + Member 18 of sets ABMP16als118_5_nnlo + Member 19 of sets ABMP16als118_5_nnlo + Member 20 of sets ABMP16als118_5_nnlo + Member 21 of sets ABMP16als118_5_nnlo + Member 22 of sets ABMP16als118_5_nnlo + Member 23 of sets ABMP16als118_5_nnlo + Member 24 of sets ABMP16als118_5_nnlo + Member 25 of sets ABMP16als118_5_nnlo + Member 26 of sets ABMP16als118_5_nnlo + Member 27 of sets ABMP16als118_5_nnlo + Member 28 of sets ABMP16als118_5_nnlo + Member 29 of sets ABMP16als118_5_nnlo + + + Member 0 of sets PDF4LHC15_nlo_100_pdfas + Member 1 of sets PDF4LHC15_nlo_100_pdfas + Member 2 of sets PDF4LHC15_nlo_100_pdfas + Member 3 of sets PDF4LHC15_nlo_100_pdfas + Member 4 of sets PDF4LHC15_nlo_100_pdfas + Member 5 of sets PDF4LHC15_nlo_100_pdfas + Member 6 of sets PDF4LHC15_nlo_100_pdfas + Member 7 of sets PDF4LHC15_nlo_100_pdfas + Member 8 of sets PDF4LHC15_nlo_100_pdfas + Member 9 of sets PDF4LHC15_nlo_100_pdfas + Member 10 of sets PDF4LHC15_nlo_100_pdfas + Member 11 of sets PDF4LHC15_nlo_100_pdfas + Member 12 of sets PDF4LHC15_nlo_100_pdfas + Member 13 of sets PDF4LHC15_nlo_100_pdfas + Member 14 of sets PDF4LHC15_nlo_100_pdfas + Member 15 of sets PDF4LHC15_nlo_100_pdfas + Member 16 of sets PDF4LHC15_nlo_100_pdfas + Member 17 of sets PDF4LHC15_nlo_100_pdfas + Member 18 of sets PDF4LHC15_nlo_100_pdfas + Member 19 of sets PDF4LHC15_nlo_100_pdfas + Member 20 of sets PDF4LHC15_nlo_100_pdfas + Member 21 of sets PDF4LHC15_nlo_100_pdfas + Member 22 of sets PDF4LHC15_nlo_100_pdfas + Member 23 of sets PDF4LHC15_nlo_100_pdfas + Member 24 of sets PDF4LHC15_nlo_100_pdfas + Member 25 of sets PDF4LHC15_nlo_100_pdfas + Member 26 of sets PDF4LHC15_nlo_100_pdfas + Member 27 of sets PDF4LHC15_nlo_100_pdfas + Member 28 of sets PDF4LHC15_nlo_100_pdfas + Member 29 of sets PDF4LHC15_nlo_100_pdfas + Member 30 of sets PDF4LHC15_nlo_100_pdfas + Member 31 of sets PDF4LHC15_nlo_100_pdfas + Member 32 of sets PDF4LHC15_nlo_100_pdfas + Member 33 of sets PDF4LHC15_nlo_100_pdfas + Member 34 of sets PDF4LHC15_nlo_100_pdfas + Member 35 of sets PDF4LHC15_nlo_100_pdfas + Member 36 of sets PDF4LHC15_nlo_100_pdfas + Member 37 of sets PDF4LHC15_nlo_100_pdfas + Member 38 of sets PDF4LHC15_nlo_100_pdfas + Member 39 of sets PDF4LHC15_nlo_100_pdfas + Member 40 of sets PDF4LHC15_nlo_100_pdfas + Member 41 of sets PDF4LHC15_nlo_100_pdfas + Member 42 of sets PDF4LHC15_nlo_100_pdfas + Member 43 of sets PDF4LHC15_nlo_100_pdfas + Member 44 of sets PDF4LHC15_nlo_100_pdfas + Member 45 of sets PDF4LHC15_nlo_100_pdfas + Member 46 of sets PDF4LHC15_nlo_100_pdfas + Member 47 of sets PDF4LHC15_nlo_100_pdfas + Member 48 of sets PDF4LHC15_nlo_100_pdfas + Member 49 of sets PDF4LHC15_nlo_100_pdfas + Member 50 of sets PDF4LHC15_nlo_100_pdfas + Member 51 of sets PDF4LHC15_nlo_100_pdfas + Member 52 of sets PDF4LHC15_nlo_100_pdfas + Member 53 of sets PDF4LHC15_nlo_100_pdfas + Member 54 of sets PDF4LHC15_nlo_100_pdfas + Member 55 of sets PDF4LHC15_nlo_100_pdfas + Member 56 of sets PDF4LHC15_nlo_100_pdfas + Member 57 of sets PDF4LHC15_nlo_100_pdfas + Member 58 of sets PDF4LHC15_nlo_100_pdfas + Member 59 of sets PDF4LHC15_nlo_100_pdfas + Member 60 of sets PDF4LHC15_nlo_100_pdfas + Member 61 of sets PDF4LHC15_nlo_100_pdfas + Member 62 of sets PDF4LHC15_nlo_100_pdfas + Member 63 of sets PDF4LHC15_nlo_100_pdfas + Member 64 of sets PDF4LHC15_nlo_100_pdfas + Member 65 of sets PDF4LHC15_nlo_100_pdfas + Member 66 of sets PDF4LHC15_nlo_100_pdfas + Member 67 of sets PDF4LHC15_nlo_100_pdfas + Member 68 of sets PDF4LHC15_nlo_100_pdfas + Member 69 of sets PDF4LHC15_nlo_100_pdfas + Member 70 of sets PDF4LHC15_nlo_100_pdfas + Member 71 of sets PDF4LHC15_nlo_100_pdfas + Member 72 of sets PDF4LHC15_nlo_100_pdfas + Member 73 of sets PDF4LHC15_nlo_100_pdfas + Member 74 of sets PDF4LHC15_nlo_100_pdfas + Member 75 of sets PDF4LHC15_nlo_100_pdfas + Member 76 of sets PDF4LHC15_nlo_100_pdfas + Member 77 of sets PDF4LHC15_nlo_100_pdfas + Member 78 of sets PDF4LHC15_nlo_100_pdfas + Member 79 of sets PDF4LHC15_nlo_100_pdfas + Member 80 of sets PDF4LHC15_nlo_100_pdfas + Member 81 of sets PDF4LHC15_nlo_100_pdfas + Member 82 of sets PDF4LHC15_nlo_100_pdfas + Member 83 of sets PDF4LHC15_nlo_100_pdfas + Member 84 of sets PDF4LHC15_nlo_100_pdfas + Member 85 of sets PDF4LHC15_nlo_100_pdfas + Member 86 of sets PDF4LHC15_nlo_100_pdfas + Member 87 of sets PDF4LHC15_nlo_100_pdfas + Member 88 of sets PDF4LHC15_nlo_100_pdfas + Member 89 of sets PDF4LHC15_nlo_100_pdfas + Member 90 of sets PDF4LHC15_nlo_100_pdfas + Member 91 of sets PDF4LHC15_nlo_100_pdfas + Member 92 of sets PDF4LHC15_nlo_100_pdfas + Member 93 of sets PDF4LHC15_nlo_100_pdfas + Member 94 of sets PDF4LHC15_nlo_100_pdfas + Member 95 of sets PDF4LHC15_nlo_100_pdfas + Member 96 of sets PDF4LHC15_nlo_100_pdfas + Member 97 of sets PDF4LHC15_nlo_100_pdfas + Member 98 of sets PDF4LHC15_nlo_100_pdfas + Member 99 of sets PDF4LHC15_nlo_100_pdfas + Member 100 of sets PDF4LHC15_nlo_100_pdfas + Member 101 of sets PDF4LHC15_nlo_100_pdfas + Member 102 of sets PDF4LHC15_nlo_100_pdfas + + + Member 0 of sets PDF4LHC15_nnlo_100_pdfas + Member 1 of sets PDF4LHC15_nnlo_100_pdfas + Member 2 of sets PDF4LHC15_nnlo_100_pdfas + Member 3 of sets PDF4LHC15_nnlo_100_pdfas + Member 4 of sets PDF4LHC15_nnlo_100_pdfas + Member 5 of sets PDF4LHC15_nnlo_100_pdfas + Member 6 of sets PDF4LHC15_nnlo_100_pdfas + Member 7 of sets PDF4LHC15_nnlo_100_pdfas + Member 8 of sets PDF4LHC15_nnlo_100_pdfas + Member 9 of sets PDF4LHC15_nnlo_100_pdfas + Member 10 of sets PDF4LHC15_nnlo_100_pdfas + Member 11 of sets PDF4LHC15_nnlo_100_pdfas + Member 12 of sets PDF4LHC15_nnlo_100_pdfas + Member 13 of sets PDF4LHC15_nnlo_100_pdfas + Member 14 of sets PDF4LHC15_nnlo_100_pdfas + Member 15 of sets PDF4LHC15_nnlo_100_pdfas + Member 16 of sets PDF4LHC15_nnlo_100_pdfas + Member 17 of sets PDF4LHC15_nnlo_100_pdfas + Member 18 of sets PDF4LHC15_nnlo_100_pdfas + Member 19 of sets PDF4LHC15_nnlo_100_pdfas + Member 20 of sets PDF4LHC15_nnlo_100_pdfas + Member 21 of sets PDF4LHC15_nnlo_100_pdfas + Member 22 of sets PDF4LHC15_nnlo_100_pdfas + Member 23 of sets PDF4LHC15_nnlo_100_pdfas + Member 24 of sets PDF4LHC15_nnlo_100_pdfas + Member 25 of sets PDF4LHC15_nnlo_100_pdfas + Member 26 of sets PDF4LHC15_nnlo_100_pdfas + Member 27 of sets PDF4LHC15_nnlo_100_pdfas + Member 28 of sets PDF4LHC15_nnlo_100_pdfas + Member 29 of sets PDF4LHC15_nnlo_100_pdfas + Member 30 of sets PDF4LHC15_nnlo_100_pdfas + Member 31 of sets PDF4LHC15_nnlo_100_pdfas + Member 32 of sets PDF4LHC15_nnlo_100_pdfas + Member 33 of sets PDF4LHC15_nnlo_100_pdfas + Member 34 of sets PDF4LHC15_nnlo_100_pdfas + Member 35 of sets PDF4LHC15_nnlo_100_pdfas + Member 36 of sets PDF4LHC15_nnlo_100_pdfas + Member 37 of sets PDF4LHC15_nnlo_100_pdfas + Member 38 of sets PDF4LHC15_nnlo_100_pdfas + Member 39 of sets PDF4LHC15_nnlo_100_pdfas + Member 40 of sets PDF4LHC15_nnlo_100_pdfas + Member 41 of sets PDF4LHC15_nnlo_100_pdfas + Member 42 of sets PDF4LHC15_nnlo_100_pdfas + Member 43 of sets PDF4LHC15_nnlo_100_pdfas + Member 44 of sets PDF4LHC15_nnlo_100_pdfas + Member 45 of sets PDF4LHC15_nnlo_100_pdfas + Member 46 of sets PDF4LHC15_nnlo_100_pdfas + Member 47 of sets PDF4LHC15_nnlo_100_pdfas + Member 48 of sets PDF4LHC15_nnlo_100_pdfas + Member 49 of sets PDF4LHC15_nnlo_100_pdfas + Member 50 of sets PDF4LHC15_nnlo_100_pdfas + Member 51 of sets PDF4LHC15_nnlo_100_pdfas + Member 52 of sets PDF4LHC15_nnlo_100_pdfas + Member 53 of sets PDF4LHC15_nnlo_100_pdfas + Member 54 of sets PDF4LHC15_nnlo_100_pdfas + Member 55 of sets PDF4LHC15_nnlo_100_pdfas + Member 56 of sets PDF4LHC15_nnlo_100_pdfas + Member 57 of sets PDF4LHC15_nnlo_100_pdfas + Member 58 of sets PDF4LHC15_nnlo_100_pdfas + Member 59 of sets PDF4LHC15_nnlo_100_pdfas + Member 60 of sets PDF4LHC15_nnlo_100_pdfas + Member 61 of sets PDF4LHC15_nnlo_100_pdfas + Member 62 of sets PDF4LHC15_nnlo_100_pdfas + Member 63 of sets PDF4LHC15_nnlo_100_pdfas + Member 64 of sets PDF4LHC15_nnlo_100_pdfas + Member 65 of sets PDF4LHC15_nnlo_100_pdfas + Member 66 of sets PDF4LHC15_nnlo_100_pdfas + Member 67 of sets PDF4LHC15_nnlo_100_pdfas + Member 68 of sets PDF4LHC15_nnlo_100_pdfas + Member 69 of sets PDF4LHC15_nnlo_100_pdfas + Member 70 of sets PDF4LHC15_nnlo_100_pdfas + Member 71 of sets PDF4LHC15_nnlo_100_pdfas + Member 72 of sets PDF4LHC15_nnlo_100_pdfas + Member 73 of sets PDF4LHC15_nnlo_100_pdfas + Member 74 of sets PDF4LHC15_nnlo_100_pdfas + Member 75 of sets PDF4LHC15_nnlo_100_pdfas + Member 76 of sets PDF4LHC15_nnlo_100_pdfas + Member 77 of sets PDF4LHC15_nnlo_100_pdfas + Member 78 of sets PDF4LHC15_nnlo_100_pdfas + Member 79 of sets PDF4LHC15_nnlo_100_pdfas + Member 80 of sets PDF4LHC15_nnlo_100_pdfas + Member 81 of sets PDF4LHC15_nnlo_100_pdfas + Member 82 of sets PDF4LHC15_nnlo_100_pdfas + Member 83 of sets PDF4LHC15_nnlo_100_pdfas + Member 84 of sets PDF4LHC15_nnlo_100_pdfas + Member 85 of sets PDF4LHC15_nnlo_100_pdfas + Member 86 of sets PDF4LHC15_nnlo_100_pdfas + Member 87 of sets PDF4LHC15_nnlo_100_pdfas + Member 88 of sets PDF4LHC15_nnlo_100_pdfas + Member 89 of sets PDF4LHC15_nnlo_100_pdfas + Member 90 of sets PDF4LHC15_nnlo_100_pdfas + Member 91 of sets PDF4LHC15_nnlo_100_pdfas + Member 92 of sets PDF4LHC15_nnlo_100_pdfas + Member 93 of sets PDF4LHC15_nnlo_100_pdfas + Member 94 of sets PDF4LHC15_nnlo_100_pdfas + Member 95 of sets PDF4LHC15_nnlo_100_pdfas + Member 96 of sets PDF4LHC15_nnlo_100_pdfas + Member 97 of sets PDF4LHC15_nnlo_100_pdfas + Member 98 of sets PDF4LHC15_nnlo_100_pdfas + Member 99 of sets PDF4LHC15_nnlo_100_pdfas + Member 100 of sets PDF4LHC15_nnlo_100_pdfas + Member 101 of sets PDF4LHC15_nnlo_100_pdfas + Member 102 of sets PDF4LHC15_nnlo_100_pdfas + + + Member 0 of sets PDF4LHC15_nlo_30_pdfas + Member 1 of sets PDF4LHC15_nlo_30_pdfas + Member 2 of sets PDF4LHC15_nlo_30_pdfas + Member 3 of sets PDF4LHC15_nlo_30_pdfas + Member 4 of sets PDF4LHC15_nlo_30_pdfas + Member 5 of sets PDF4LHC15_nlo_30_pdfas + Member 6 of sets PDF4LHC15_nlo_30_pdfas + Member 7 of sets PDF4LHC15_nlo_30_pdfas + Member 8 of sets PDF4LHC15_nlo_30_pdfas + Member 9 of sets PDF4LHC15_nlo_30_pdfas + Member 10 of sets PDF4LHC15_nlo_30_pdfas + Member 11 of sets PDF4LHC15_nlo_30_pdfas + Member 12 of sets PDF4LHC15_nlo_30_pdfas + Member 13 of sets PDF4LHC15_nlo_30_pdfas + Member 14 of sets PDF4LHC15_nlo_30_pdfas + Member 15 of sets PDF4LHC15_nlo_30_pdfas + Member 16 of sets PDF4LHC15_nlo_30_pdfas + Member 17 of sets PDF4LHC15_nlo_30_pdfas + Member 18 of sets PDF4LHC15_nlo_30_pdfas + Member 19 of sets PDF4LHC15_nlo_30_pdfas + Member 20 of sets PDF4LHC15_nlo_30_pdfas + Member 21 of sets PDF4LHC15_nlo_30_pdfas + Member 22 of sets PDF4LHC15_nlo_30_pdfas + Member 23 of sets PDF4LHC15_nlo_30_pdfas + Member 24 of sets PDF4LHC15_nlo_30_pdfas + Member 25 of sets PDF4LHC15_nlo_30_pdfas + Member 26 of sets PDF4LHC15_nlo_30_pdfas + Member 27 of sets PDF4LHC15_nlo_30_pdfas + Member 28 of sets PDF4LHC15_nlo_30_pdfas + Member 29 of sets PDF4LHC15_nlo_30_pdfas + Member 30 of sets PDF4LHC15_nlo_30_pdfas + Member 31 of sets PDF4LHC15_nlo_30_pdfas + Member 32 of sets PDF4LHC15_nlo_30_pdfas + + + Member 0 of sets PDF4LHC15_nnlo_30_pdfas + Member 1 of sets PDF4LHC15_nnlo_30_pdfas + Member 2 of sets PDF4LHC15_nnlo_30_pdfas + Member 3 of sets PDF4LHC15_nnlo_30_pdfas + Member 4 of sets PDF4LHC15_nnlo_30_pdfas + Member 5 of sets PDF4LHC15_nnlo_30_pdfas + Member 6 of sets PDF4LHC15_nnlo_30_pdfas + Member 7 of sets PDF4LHC15_nnlo_30_pdfas + Member 8 of sets PDF4LHC15_nnlo_30_pdfas + Member 9 of sets PDF4LHC15_nnlo_30_pdfas + Member 10 of sets PDF4LHC15_nnlo_30_pdfas + Member 11 of sets PDF4LHC15_nnlo_30_pdfas + Member 12 of sets PDF4LHC15_nnlo_30_pdfas + Member 13 of sets PDF4LHC15_nnlo_30_pdfas + Member 14 of sets PDF4LHC15_nnlo_30_pdfas + Member 15 of sets PDF4LHC15_nnlo_30_pdfas + Member 16 of sets PDF4LHC15_nnlo_30_pdfas + Member 17 of sets PDF4LHC15_nnlo_30_pdfas + Member 18 of sets PDF4LHC15_nnlo_30_pdfas + Member 19 of sets PDF4LHC15_nnlo_30_pdfas + Member 20 of sets PDF4LHC15_nnlo_30_pdfas + Member 21 of sets PDF4LHC15_nnlo_30_pdfas + Member 22 of sets PDF4LHC15_nnlo_30_pdfas + Member 23 of sets PDF4LHC15_nnlo_30_pdfas + Member 24 of sets PDF4LHC15_nnlo_30_pdfas + Member 25 of sets PDF4LHC15_nnlo_30_pdfas + Member 26 of sets PDF4LHC15_nnlo_30_pdfas + Member 27 of sets PDF4LHC15_nnlo_30_pdfas + Member 28 of sets PDF4LHC15_nnlo_30_pdfas + Member 29 of sets PDF4LHC15_nnlo_30_pdfas + Member 30 of sets PDF4LHC15_nnlo_30_pdfas + Member 31 of sets PDF4LHC15_nnlo_30_pdfas + Member 32 of sets PDF4LHC15_nnlo_30_pdfas + + + Member 0 of sets HERAPDF20_NLO_EIG + Member 1 of sets HERAPDF20_NLO_EIG + Member 2 of sets HERAPDF20_NLO_EIG + Member 3 of sets HERAPDF20_NLO_EIG + Member 4 of sets HERAPDF20_NLO_EIG + Member 5 of sets HERAPDF20_NLO_EIG + Member 6 of sets HERAPDF20_NLO_EIG + Member 7 of sets HERAPDF20_NLO_EIG + Member 8 of sets HERAPDF20_NLO_EIG + Member 9 of sets HERAPDF20_NLO_EIG + Member 10 of sets HERAPDF20_NLO_EIG + Member 11 of sets HERAPDF20_NLO_EIG + Member 12 of sets HERAPDF20_NLO_EIG + Member 13 of sets HERAPDF20_NLO_EIG + Member 14 of sets HERAPDF20_NLO_EIG + Member 15 of sets HERAPDF20_NLO_EIG + Member 16 of sets HERAPDF20_NLO_EIG + Member 17 of sets HERAPDF20_NLO_EIG + Member 18 of sets HERAPDF20_NLO_EIG + Member 19 of sets HERAPDF20_NLO_EIG + Member 20 of sets HERAPDF20_NLO_EIG + Member 21 of sets HERAPDF20_NLO_EIG + Member 22 of sets HERAPDF20_NLO_EIG + Member 23 of sets HERAPDF20_NLO_EIG + Member 24 of sets HERAPDF20_NLO_EIG + Member 25 of sets HERAPDF20_NLO_EIG + Member 26 of sets HERAPDF20_NLO_EIG + Member 27 of sets HERAPDF20_NLO_EIG + Member 28 of sets HERAPDF20_NLO_EIG + + + Member 0 of sets HERAPDF20_NLO_VAR + Member 1 of sets HERAPDF20_NLO_VAR + Member 2 of sets HERAPDF20_NLO_VAR + Member 3 of sets HERAPDF20_NLO_VAR + Member 4 of sets HERAPDF20_NLO_VAR + Member 5 of sets HERAPDF20_NLO_VAR + Member 6 of sets HERAPDF20_NLO_VAR + Member 7 of sets HERAPDF20_NLO_VAR + Member 8 of sets HERAPDF20_NLO_VAR + Member 9 of sets HERAPDF20_NLO_VAR + Member 10 of sets HERAPDF20_NLO_VAR + Member 11 of sets HERAPDF20_NLO_VAR + Member 12 of sets HERAPDF20_NLO_VAR + Member 13 of sets HERAPDF20_NLO_VAR + + + Member 0 of sets HERAPDF20_NNLO_EIG + Member 1 of sets HERAPDF20_NNLO_EIG + Member 2 of sets HERAPDF20_NNLO_EIG + Member 3 of sets HERAPDF20_NNLO_EIG + Member 4 of sets HERAPDF20_NNLO_EIG + Member 5 of sets HERAPDF20_NNLO_EIG + Member 6 of sets HERAPDF20_NNLO_EIG + Member 7 of sets HERAPDF20_NNLO_EIG + Member 8 of sets HERAPDF20_NNLO_EIG + Member 9 of sets HERAPDF20_NNLO_EIG + Member 10 of sets HERAPDF20_NNLO_EIG + Member 11 of sets HERAPDF20_NNLO_EIG + Member 12 of sets HERAPDF20_NNLO_EIG + Member 13 of sets HERAPDF20_NNLO_EIG + Member 14 of sets HERAPDF20_NNLO_EIG + Member 15 of sets HERAPDF20_NNLO_EIG + Member 16 of sets HERAPDF20_NNLO_EIG + Member 17 of sets HERAPDF20_NNLO_EIG + Member 18 of sets HERAPDF20_NNLO_EIG + Member 19 of sets HERAPDF20_NNLO_EIG + Member 20 of sets HERAPDF20_NNLO_EIG + Member 21 of sets HERAPDF20_NNLO_EIG + Member 22 of sets HERAPDF20_NNLO_EIG + Member 23 of sets HERAPDF20_NNLO_EIG + Member 24 of sets HERAPDF20_NNLO_EIG + Member 25 of sets HERAPDF20_NNLO_EIG + Member 26 of sets HERAPDF20_NNLO_EIG + Member 27 of sets HERAPDF20_NNLO_EIG + Member 28 of sets HERAPDF20_NNLO_EIG + + + Member 0 of sets HERAPDF20_NNLO_VAR + Member 1 of sets HERAPDF20_NNLO_VAR + Member 2 of sets HERAPDF20_NNLO_VAR + Member 3 of sets HERAPDF20_NNLO_VAR + Member 4 of sets HERAPDF20_NNLO_VAR + Member 5 of sets HERAPDF20_NNLO_VAR + Member 6 of sets HERAPDF20_NNLO_VAR + Member 7 of sets HERAPDF20_NNLO_VAR + Member 8 of sets HERAPDF20_NNLO_VAR + Member 9 of sets HERAPDF20_NNLO_VAR + Member 10 of sets HERAPDF20_NNLO_VAR + Member 11 of sets HERAPDF20_NNLO_VAR + Member 12 of sets HERAPDF20_NNLO_VAR + Member 13 of sets HERAPDF20_NNLO_VAR + + + Member 0 of sets CT14qed_inc_proton + Member 1 of sets CT14qed_inc_proton + Member 2 of sets CT14qed_inc_proton + Member 3 of sets CT14qed_inc_proton + Member 4 of sets CT14qed_inc_proton + Member 5 of sets CT14qed_inc_proton + Member 6 of sets CT14qed_inc_proton + Member 7 of sets CT14qed_inc_proton + Member 8 of sets CT14qed_inc_proton + Member 9 of sets CT14qed_inc_proton + Member 10 of sets CT14qed_inc_proton + Member 11 of sets CT14qed_inc_proton + Member 12 of sets CT14qed_inc_proton + Member 13 of sets CT14qed_inc_proton + Member 14 of sets CT14qed_inc_proton + Member 15 of sets CT14qed_inc_proton + Member 16 of sets CT14qed_inc_proton + Member 17 of sets CT14qed_inc_proton + Member 18 of sets CT14qed_inc_proton + Member 19 of sets CT14qed_inc_proton + Member 20 of sets CT14qed_inc_proton + Member 21 of sets CT14qed_inc_proton + Member 22 of sets CT14qed_inc_proton + Member 23 of sets CT14qed_inc_proton + Member 24 of sets CT14qed_inc_proton + Member 25 of sets CT14qed_inc_proton + Member 26 of sets CT14qed_inc_proton + Member 27 of sets CT14qed_inc_proton + Member 28 of sets CT14qed_inc_proton + Member 29 of sets CT14qed_inc_proton + Member 30 of sets CT14qed_inc_proton + + + Member 0 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 1 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 2 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 3 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 4 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 5 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 6 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 7 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 8 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 9 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 10 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 11 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 12 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 13 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 14 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 15 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 16 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 17 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 18 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 19 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 20 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 21 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 22 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 23 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 24 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 25 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 26 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 27 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 28 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 29 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 30 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 31 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 32 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 33 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 34 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 35 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 36 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 37 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 38 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 39 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 40 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 41 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 42 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 43 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 44 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 45 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 46 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 47 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 48 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 49 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 50 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 51 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 52 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 53 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 54 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 55 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 56 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 57 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 58 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 59 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 60 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 61 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 62 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 63 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 64 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 65 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 66 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 67 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 68 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 69 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 70 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 71 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 72 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 73 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 74 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 75 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 76 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 77 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 78 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 79 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 80 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 81 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 82 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 83 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 84 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 85 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 86 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 87 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 88 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 89 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 90 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 91 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 92 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 93 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 94 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 95 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 96 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 97 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 98 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 99 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 100 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 101 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 102 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 103 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 104 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 105 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 106 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + Member 107 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 + + + Member 0 of sets NNPDF30_nlo_nf_5_pdfas + Member 1 of sets NNPDF30_nlo_nf_5_pdfas + Member 2 of sets NNPDF30_nlo_nf_5_pdfas + Member 3 of sets NNPDF30_nlo_nf_5_pdfas + Member 4 of sets NNPDF30_nlo_nf_5_pdfas + Member 5 of sets NNPDF30_nlo_nf_5_pdfas + Member 6 of sets NNPDF30_nlo_nf_5_pdfas + Member 7 of sets NNPDF30_nlo_nf_5_pdfas + Member 8 of sets NNPDF30_nlo_nf_5_pdfas + Member 9 of sets NNPDF30_nlo_nf_5_pdfas + Member 10 of sets NNPDF30_nlo_nf_5_pdfas + Member 11 of sets NNPDF30_nlo_nf_5_pdfas + Member 12 of sets NNPDF30_nlo_nf_5_pdfas + Member 13 of sets NNPDF30_nlo_nf_5_pdfas + Member 14 of sets NNPDF30_nlo_nf_5_pdfas + Member 15 of sets NNPDF30_nlo_nf_5_pdfas + Member 16 of sets NNPDF30_nlo_nf_5_pdfas + Member 17 of sets NNPDF30_nlo_nf_5_pdfas + Member 18 of sets NNPDF30_nlo_nf_5_pdfas + Member 19 of sets NNPDF30_nlo_nf_5_pdfas + Member 20 of sets NNPDF30_nlo_nf_5_pdfas + Member 21 of sets NNPDF30_nlo_nf_5_pdfas + Member 22 of sets NNPDF30_nlo_nf_5_pdfas + Member 23 of sets NNPDF30_nlo_nf_5_pdfas + Member 24 of sets NNPDF30_nlo_nf_5_pdfas + Member 25 of sets NNPDF30_nlo_nf_5_pdfas + Member 26 of sets NNPDF30_nlo_nf_5_pdfas + Member 27 of sets NNPDF30_nlo_nf_5_pdfas + Member 28 of sets NNPDF30_nlo_nf_5_pdfas + Member 29 of sets NNPDF30_nlo_nf_5_pdfas + Member 30 of sets NNPDF30_nlo_nf_5_pdfas + Member 31 of sets NNPDF30_nlo_nf_5_pdfas + Member 32 of sets NNPDF30_nlo_nf_5_pdfas + Member 33 of sets NNPDF30_nlo_nf_5_pdfas + Member 34 of sets NNPDF30_nlo_nf_5_pdfas + Member 35 of sets NNPDF30_nlo_nf_5_pdfas + Member 36 of sets NNPDF30_nlo_nf_5_pdfas + Member 37 of sets NNPDF30_nlo_nf_5_pdfas + Member 38 of sets NNPDF30_nlo_nf_5_pdfas + Member 39 of sets NNPDF30_nlo_nf_5_pdfas + Member 40 of sets NNPDF30_nlo_nf_5_pdfas + Member 41 of sets NNPDF30_nlo_nf_5_pdfas + Member 42 of sets NNPDF30_nlo_nf_5_pdfas + Member 43 of sets NNPDF30_nlo_nf_5_pdfas + Member 44 of sets NNPDF30_nlo_nf_5_pdfas + Member 45 of sets NNPDF30_nlo_nf_5_pdfas + Member 46 of sets NNPDF30_nlo_nf_5_pdfas + Member 47 of sets NNPDF30_nlo_nf_5_pdfas + Member 48 of sets NNPDF30_nlo_nf_5_pdfas + Member 49 of sets NNPDF30_nlo_nf_5_pdfas + Member 50 of sets NNPDF30_nlo_nf_5_pdfas + Member 51 of sets NNPDF30_nlo_nf_5_pdfas + Member 52 of sets NNPDF30_nlo_nf_5_pdfas + Member 53 of sets NNPDF30_nlo_nf_5_pdfas + Member 54 of sets NNPDF30_nlo_nf_5_pdfas + Member 55 of sets NNPDF30_nlo_nf_5_pdfas + Member 56 of sets NNPDF30_nlo_nf_5_pdfas + Member 57 of sets NNPDF30_nlo_nf_5_pdfas + Member 58 of sets NNPDF30_nlo_nf_5_pdfas + Member 59 of sets NNPDF30_nlo_nf_5_pdfas + Member 60 of sets NNPDF30_nlo_nf_5_pdfas + Member 61 of sets NNPDF30_nlo_nf_5_pdfas + Member 62 of sets NNPDF30_nlo_nf_5_pdfas + Member 63 of sets NNPDF30_nlo_nf_5_pdfas + Member 64 of sets NNPDF30_nlo_nf_5_pdfas + Member 65 of sets NNPDF30_nlo_nf_5_pdfas + Member 66 of sets NNPDF30_nlo_nf_5_pdfas + Member 67 of sets NNPDF30_nlo_nf_5_pdfas + Member 68 of sets NNPDF30_nlo_nf_5_pdfas + Member 69 of sets NNPDF30_nlo_nf_5_pdfas + Member 70 of sets NNPDF30_nlo_nf_5_pdfas + Member 71 of sets NNPDF30_nlo_nf_5_pdfas + Member 72 of sets NNPDF30_nlo_nf_5_pdfas + Member 73 of sets NNPDF30_nlo_nf_5_pdfas + Member 74 of sets NNPDF30_nlo_nf_5_pdfas + Member 75 of sets NNPDF30_nlo_nf_5_pdfas + Member 76 of sets NNPDF30_nlo_nf_5_pdfas + Member 77 of sets NNPDF30_nlo_nf_5_pdfas + Member 78 of sets NNPDF30_nlo_nf_5_pdfas + Member 79 of sets NNPDF30_nlo_nf_5_pdfas + Member 80 of sets NNPDF30_nlo_nf_5_pdfas + Member 81 of sets NNPDF30_nlo_nf_5_pdfas + Member 82 of sets NNPDF30_nlo_nf_5_pdfas + Member 83 of sets NNPDF30_nlo_nf_5_pdfas + Member 84 of sets NNPDF30_nlo_nf_5_pdfas + Member 85 of sets NNPDF30_nlo_nf_5_pdfas + Member 86 of sets NNPDF30_nlo_nf_5_pdfas + Member 87 of sets NNPDF30_nlo_nf_5_pdfas + Member 88 of sets NNPDF30_nlo_nf_5_pdfas + Member 89 of sets NNPDF30_nlo_nf_5_pdfas + Member 90 of sets NNPDF30_nlo_nf_5_pdfas + Member 91 of sets NNPDF30_nlo_nf_5_pdfas + Member 92 of sets NNPDF30_nlo_nf_5_pdfas + Member 93 of sets NNPDF30_nlo_nf_5_pdfas + Member 94 of sets NNPDF30_nlo_nf_5_pdfas + Member 95 of sets NNPDF30_nlo_nf_5_pdfas + Member 96 of sets NNPDF30_nlo_nf_5_pdfas + Member 97 of sets NNPDF30_nlo_nf_5_pdfas + Member 98 of sets NNPDF30_nlo_nf_5_pdfas + Member 99 of sets NNPDF30_nlo_nf_5_pdfas + Member 100 of sets NNPDF30_nlo_nf_5_pdfas + Member 101 of sets NNPDF30_nlo_nf_5_pdfas + Member 102 of sets NNPDF30_nlo_nf_5_pdfas + + + Member 0 of sets NNPDF30_nnlo_nf_5_pdfas + + + Member 0 of sets NNPDF31_lo_as_0118 + + + Member 0 of sets NNPDF31_lo_as_0130 + + + Member 0 of sets NNPDF30_lo_as_0118 + + + Member 0 of sets NNPDF30_lo_as_0130 + + diff --git a/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt b/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt new file mode 100644 index 0000000000000..5058c004a78c3 --- /dev/null +++ b/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt @@ -0,0 +1,117 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/PUMoriond17_plus5percentMaterial_94X_mcRun2_asymptotic_v3-v2/70000/860C654F-633D-E911-8316-0CC47A2B03A2.root + + muR=0.10000E+01 muF=0.10000E+01 + muR=0.10000E+01 muF=0.20000E+01 + muR=0.10000E+01 muF=0.50000E+00 + muR=0.20000E+01 muF=0.10000E+01 + muR=0.20000E+01 muF=0.20000E+01 + muR=0.20000E+01 muF=0.50000E+00 + muR=0.50000E+00 muF=0.10000E+01 + muR=0.50000E+00 muF=0.20000E+01 + muR=0.50000E+00 muF=0.50000E+00 + + + pdfset=292201 + pdfset=292202 + pdfset=292203 + pdfset=292204 + pdfset=292205 + pdfset=292206 + pdfset=292207 + pdfset=292208 + pdfset=292209 + pdfset=292210 + pdfset=292211 + pdfset=292212 + pdfset=292213 + pdfset=292214 + pdfset=292215 + pdfset=292216 + pdfset=292217 + pdfset=292218 + pdfset=292219 + pdfset=292220 + pdfset=292221 + pdfset=292222 + pdfset=292223 + pdfset=292224 + pdfset=292225 + pdfset=292226 + pdfset=292227 + pdfset=292228 + pdfset=292229 + pdfset=292230 + pdfset=292231 + pdfset=292232 + pdfset=292233 + pdfset=292234 + pdfset=292235 + pdfset=292236 + pdfset=292237 + pdfset=292238 + pdfset=292239 + pdfset=292240 + pdfset=292241 + pdfset=292242 + pdfset=292243 + pdfset=292244 + pdfset=292245 + pdfset=292246 + pdfset=292247 + pdfset=292248 + pdfset=292249 + pdfset=292250 + pdfset=292251 + pdfset=292252 + pdfset=292253 + pdfset=292254 + pdfset=292255 + pdfset=292256 + pdfset=292257 + pdfset=292258 + pdfset=292259 + pdfset=292260 + pdfset=292261 + pdfset=292262 + pdfset=292263 + pdfset=292264 + pdfset=292265 + pdfset=292266 + pdfset=292267 + pdfset=292268 + pdfset=292269 + pdfset=292270 + pdfset=292271 + pdfset=292272 + pdfset=292273 + pdfset=292274 + pdfset=292275 + pdfset=292276 + pdfset=292277 + pdfset=292278 + pdfset=292279 + pdfset=292280 + pdfset=292281 + pdfset=292282 + pdfset=292283 + pdfset=292284 + pdfset=292285 + pdfset=292286 + pdfset=292287 + pdfset=292288 + pdfset=292289 + pdfset=292290 + pdfset=292291 + pdfset=292292 + pdfset=292293 + pdfset=292294 + pdfset=292295 + pdfset=292296 + pdfset=292297 + pdfset=292298 + pdfset=292299 + pdfset=292300 + pdfset=292301 + pdfset=292302 + + diff --git a/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt b/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt new file mode 100644 index 0000000000000..db48284ba64bc --- /dev/null +++ b/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt @@ -0,0 +1,1158 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15_ext2-v1/260000/61CD1B34-65BD-DF42-812C-87CEF2E9AD1A.root + + dyn= -1 muR=0.10000E+01 muF=0.10000E+01 + dyn= -1 muR=0.20000E+01 muF=0.10000E+01 + dyn= -1 muR=0.50000E+00 muF=0.10000E+01 + dyn= -1 muR=0.10000E+01 muF=0.20000E+01 + dyn= -1 muR=0.20000E+01 muF=0.20000E+01 + dyn= -1 muR=0.50000E+00 muF=0.20000E+01 + dyn= -1 muR=0.10000E+01 muF=0.50000E+00 + dyn= -1 muR=0.20000E+01 muF=0.50000E+00 + dyn= -1 muR=0.50000E+00 muF=0.50000E+00 + + + PDF= 306000 NNPDF31_nnlo_hessian_pdfas + PDF= 306001 NNPDF31_nnlo_hessian_pdfas + PDF= 306002 NNPDF31_nnlo_hessian_pdfas + PDF= 306003 NNPDF31_nnlo_hessian_pdfas + PDF= 306004 NNPDF31_nnlo_hessian_pdfas + PDF= 306005 NNPDF31_nnlo_hessian_pdfas + PDF= 306006 NNPDF31_nnlo_hessian_pdfas + PDF= 306007 NNPDF31_nnlo_hessian_pdfas + PDF= 306008 NNPDF31_nnlo_hessian_pdfas + PDF= 306009 NNPDF31_nnlo_hessian_pdfas + PDF= 306010 NNPDF31_nnlo_hessian_pdfas + PDF= 306011 NNPDF31_nnlo_hessian_pdfas + PDF= 306012 NNPDF31_nnlo_hessian_pdfas + PDF= 306013 NNPDF31_nnlo_hessian_pdfas + PDF= 306014 NNPDF31_nnlo_hessian_pdfas + PDF= 306015 NNPDF31_nnlo_hessian_pdfas + PDF= 306016 NNPDF31_nnlo_hessian_pdfas + PDF= 306017 NNPDF31_nnlo_hessian_pdfas + PDF= 306018 NNPDF31_nnlo_hessian_pdfas + PDF= 306019 NNPDF31_nnlo_hessian_pdfas + PDF= 306020 NNPDF31_nnlo_hessian_pdfas + PDF= 306021 NNPDF31_nnlo_hessian_pdfas + PDF= 306022 NNPDF31_nnlo_hessian_pdfas + PDF= 306023 NNPDF31_nnlo_hessian_pdfas + PDF= 306024 NNPDF31_nnlo_hessian_pdfas + PDF= 306025 NNPDF31_nnlo_hessian_pdfas + PDF= 306026 NNPDF31_nnlo_hessian_pdfas + PDF= 306027 NNPDF31_nnlo_hessian_pdfas + PDF= 306028 NNPDF31_nnlo_hessian_pdfas + PDF= 306029 NNPDF31_nnlo_hessian_pdfas + PDF= 306030 NNPDF31_nnlo_hessian_pdfas + PDF= 306031 NNPDF31_nnlo_hessian_pdfas + PDF= 306032 NNPDF31_nnlo_hessian_pdfas + PDF= 306033 NNPDF31_nnlo_hessian_pdfas + PDF= 306034 NNPDF31_nnlo_hessian_pdfas + PDF= 306035 NNPDF31_nnlo_hessian_pdfas + PDF= 306036 NNPDF31_nnlo_hessian_pdfas + PDF= 306037 NNPDF31_nnlo_hessian_pdfas + PDF= 306038 NNPDF31_nnlo_hessian_pdfas + PDF= 306039 NNPDF31_nnlo_hessian_pdfas + PDF= 306040 NNPDF31_nnlo_hessian_pdfas + PDF= 306041 NNPDF31_nnlo_hessian_pdfas + PDF= 306042 NNPDF31_nnlo_hessian_pdfas + PDF= 306043 NNPDF31_nnlo_hessian_pdfas + PDF= 306044 NNPDF31_nnlo_hessian_pdfas + PDF= 306045 NNPDF31_nnlo_hessian_pdfas + PDF= 306046 NNPDF31_nnlo_hessian_pdfas + PDF= 306047 NNPDF31_nnlo_hessian_pdfas + PDF= 306048 NNPDF31_nnlo_hessian_pdfas + PDF= 306049 NNPDF31_nnlo_hessian_pdfas + PDF= 306050 NNPDF31_nnlo_hessian_pdfas + PDF= 306051 NNPDF31_nnlo_hessian_pdfas + PDF= 306052 NNPDF31_nnlo_hessian_pdfas + PDF= 306053 NNPDF31_nnlo_hessian_pdfas + PDF= 306054 NNPDF31_nnlo_hessian_pdfas + PDF= 306055 NNPDF31_nnlo_hessian_pdfas + PDF= 306056 NNPDF31_nnlo_hessian_pdfas + PDF= 306057 NNPDF31_nnlo_hessian_pdfas + PDF= 306058 NNPDF31_nnlo_hessian_pdfas + PDF= 306059 NNPDF31_nnlo_hessian_pdfas + PDF= 306060 NNPDF31_nnlo_hessian_pdfas + PDF= 306061 NNPDF31_nnlo_hessian_pdfas + PDF= 306062 NNPDF31_nnlo_hessian_pdfas + PDF= 306063 NNPDF31_nnlo_hessian_pdfas + PDF= 306064 NNPDF31_nnlo_hessian_pdfas + PDF= 306065 NNPDF31_nnlo_hessian_pdfas + PDF= 306066 NNPDF31_nnlo_hessian_pdfas + PDF= 306067 NNPDF31_nnlo_hessian_pdfas + PDF= 306068 NNPDF31_nnlo_hessian_pdfas + PDF= 306069 NNPDF31_nnlo_hessian_pdfas + PDF= 306070 NNPDF31_nnlo_hessian_pdfas + PDF= 306071 NNPDF31_nnlo_hessian_pdfas + PDF= 306072 NNPDF31_nnlo_hessian_pdfas + PDF= 306073 NNPDF31_nnlo_hessian_pdfas + PDF= 306074 NNPDF31_nnlo_hessian_pdfas + PDF= 306075 NNPDF31_nnlo_hessian_pdfas + PDF= 306076 NNPDF31_nnlo_hessian_pdfas + PDF= 306077 NNPDF31_nnlo_hessian_pdfas + PDF= 306078 NNPDF31_nnlo_hessian_pdfas + PDF= 306079 NNPDF31_nnlo_hessian_pdfas + PDF= 306080 NNPDF31_nnlo_hessian_pdfas + PDF= 306081 NNPDF31_nnlo_hessian_pdfas + PDF= 306082 NNPDF31_nnlo_hessian_pdfas + PDF= 306083 NNPDF31_nnlo_hessian_pdfas + PDF= 306084 NNPDF31_nnlo_hessian_pdfas + PDF= 306085 NNPDF31_nnlo_hessian_pdfas + PDF= 306086 NNPDF31_nnlo_hessian_pdfas + PDF= 306087 NNPDF31_nnlo_hessian_pdfas + PDF= 306088 NNPDF31_nnlo_hessian_pdfas + PDF= 306089 NNPDF31_nnlo_hessian_pdfas + PDF= 306090 NNPDF31_nnlo_hessian_pdfas + PDF= 306091 NNPDF31_nnlo_hessian_pdfas + PDF= 306092 NNPDF31_nnlo_hessian_pdfas + PDF= 306093 NNPDF31_nnlo_hessian_pdfas + PDF= 306094 NNPDF31_nnlo_hessian_pdfas + PDF= 306095 NNPDF31_nnlo_hessian_pdfas + PDF= 306096 NNPDF31_nnlo_hessian_pdfas + PDF= 306097 NNPDF31_nnlo_hessian_pdfas + PDF= 306098 NNPDF31_nnlo_hessian_pdfas + PDF= 306099 NNPDF31_nnlo_hessian_pdfas + PDF= 306100 NNPDF31_nnlo_hessian_pdfas + PDF= 306101 NNPDF31_nnlo_hessian_pdfas + PDF= 306102 NNPDF31_nnlo_hessian_pdfas + + + PDF= 322500 NNPDF31_nnlo_as_0108 + + + PDF= 322700 NNPDF31_nnlo_as_0110 + + + PDF= 322900 NNPDF31_nnlo_as_0112 + + + PDF= 323100 NNPDF31_nnlo_as_0114 + + + PDF= 323300 NNPDF31_nnlo_as_0117 + + + PDF= 323500 NNPDF31_nnlo_as_0119 + + + PDF= 323700 NNPDF31_nnlo_as_0122 + + + PDF= 323900 NNPDF31_nnlo_as_0124 + + + PDF= 305800 NNPDF31_nlo_hessian_pdfas + PDF= 305801 NNPDF31_nlo_hessian_pdfas + PDF= 305802 NNPDF31_nlo_hessian_pdfas + PDF= 305803 NNPDF31_nlo_hessian_pdfas + PDF= 305804 NNPDF31_nlo_hessian_pdfas + PDF= 305805 NNPDF31_nlo_hessian_pdfas + PDF= 305806 NNPDF31_nlo_hessian_pdfas + PDF= 305807 NNPDF31_nlo_hessian_pdfas + PDF= 305808 NNPDF31_nlo_hessian_pdfas + PDF= 305809 NNPDF31_nlo_hessian_pdfas + PDF= 305810 NNPDF31_nlo_hessian_pdfas + PDF= 305811 NNPDF31_nlo_hessian_pdfas + PDF= 305812 NNPDF31_nlo_hessian_pdfas + PDF= 305813 NNPDF31_nlo_hessian_pdfas + PDF= 305814 NNPDF31_nlo_hessian_pdfas + PDF= 305815 NNPDF31_nlo_hessian_pdfas + PDF= 305816 NNPDF31_nlo_hessian_pdfas + PDF= 305817 NNPDF31_nlo_hessian_pdfas + PDF= 305818 NNPDF31_nlo_hessian_pdfas + PDF= 305819 NNPDF31_nlo_hessian_pdfas + PDF= 305820 NNPDF31_nlo_hessian_pdfas + PDF= 305821 NNPDF31_nlo_hessian_pdfas + PDF= 305822 NNPDF31_nlo_hessian_pdfas + PDF= 305823 NNPDF31_nlo_hessian_pdfas + PDF= 305824 NNPDF31_nlo_hessian_pdfas + PDF= 305825 NNPDF31_nlo_hessian_pdfas + PDF= 305826 NNPDF31_nlo_hessian_pdfas + PDF= 305827 NNPDF31_nlo_hessian_pdfas + PDF= 305828 NNPDF31_nlo_hessian_pdfas + PDF= 305829 NNPDF31_nlo_hessian_pdfas + PDF= 305830 NNPDF31_nlo_hessian_pdfas + PDF= 305831 NNPDF31_nlo_hessian_pdfas + PDF= 305832 NNPDF31_nlo_hessian_pdfas + PDF= 305833 NNPDF31_nlo_hessian_pdfas + PDF= 305834 NNPDF31_nlo_hessian_pdfas + PDF= 305835 NNPDF31_nlo_hessian_pdfas + PDF= 305836 NNPDF31_nlo_hessian_pdfas + PDF= 305837 NNPDF31_nlo_hessian_pdfas + PDF= 305838 NNPDF31_nlo_hessian_pdfas + PDF= 305839 NNPDF31_nlo_hessian_pdfas + PDF= 305840 NNPDF31_nlo_hessian_pdfas + PDF= 305841 NNPDF31_nlo_hessian_pdfas + PDF= 305842 NNPDF31_nlo_hessian_pdfas + PDF= 305843 NNPDF31_nlo_hessian_pdfas + PDF= 305844 NNPDF31_nlo_hessian_pdfas + PDF= 305845 NNPDF31_nlo_hessian_pdfas + PDF= 305846 NNPDF31_nlo_hessian_pdfas + PDF= 305847 NNPDF31_nlo_hessian_pdfas + PDF= 305848 NNPDF31_nlo_hessian_pdfas + PDF= 305849 NNPDF31_nlo_hessian_pdfas + PDF= 305850 NNPDF31_nlo_hessian_pdfas + PDF= 305851 NNPDF31_nlo_hessian_pdfas + PDF= 305852 NNPDF31_nlo_hessian_pdfas + PDF= 305853 NNPDF31_nlo_hessian_pdfas + PDF= 305854 NNPDF31_nlo_hessian_pdfas + PDF= 305855 NNPDF31_nlo_hessian_pdfas + PDF= 305856 NNPDF31_nlo_hessian_pdfas + PDF= 305857 NNPDF31_nlo_hessian_pdfas + PDF= 305858 NNPDF31_nlo_hessian_pdfas + PDF= 305859 NNPDF31_nlo_hessian_pdfas + PDF= 305860 NNPDF31_nlo_hessian_pdfas + PDF= 305861 NNPDF31_nlo_hessian_pdfas + PDF= 305862 NNPDF31_nlo_hessian_pdfas + PDF= 305863 NNPDF31_nlo_hessian_pdfas + PDF= 305864 NNPDF31_nlo_hessian_pdfas + PDF= 305865 NNPDF31_nlo_hessian_pdfas + PDF= 305866 NNPDF31_nlo_hessian_pdfas + PDF= 305867 NNPDF31_nlo_hessian_pdfas + PDF= 305868 NNPDF31_nlo_hessian_pdfas + PDF= 305869 NNPDF31_nlo_hessian_pdfas + PDF= 305870 NNPDF31_nlo_hessian_pdfas + PDF= 305871 NNPDF31_nlo_hessian_pdfas + PDF= 305872 NNPDF31_nlo_hessian_pdfas + PDF= 305873 NNPDF31_nlo_hessian_pdfas + PDF= 305874 NNPDF31_nlo_hessian_pdfas + PDF= 305875 NNPDF31_nlo_hessian_pdfas + PDF= 305876 NNPDF31_nlo_hessian_pdfas + PDF= 305877 NNPDF31_nlo_hessian_pdfas + PDF= 305878 NNPDF31_nlo_hessian_pdfas + PDF= 305879 NNPDF31_nlo_hessian_pdfas + PDF= 305880 NNPDF31_nlo_hessian_pdfas + PDF= 305881 NNPDF31_nlo_hessian_pdfas + PDF= 305882 NNPDF31_nlo_hessian_pdfas + PDF= 305883 NNPDF31_nlo_hessian_pdfas + PDF= 305884 NNPDF31_nlo_hessian_pdfas + PDF= 305885 NNPDF31_nlo_hessian_pdfas + PDF= 305886 NNPDF31_nlo_hessian_pdfas + PDF= 305887 NNPDF31_nlo_hessian_pdfas + PDF= 305888 NNPDF31_nlo_hessian_pdfas + PDF= 305889 NNPDF31_nlo_hessian_pdfas + PDF= 305890 NNPDF31_nlo_hessian_pdfas + PDF= 305891 NNPDF31_nlo_hessian_pdfas + PDF= 305892 NNPDF31_nlo_hessian_pdfas + PDF= 305893 NNPDF31_nlo_hessian_pdfas + PDF= 305894 NNPDF31_nlo_hessian_pdfas + PDF= 305895 NNPDF31_nlo_hessian_pdfas + PDF= 305896 NNPDF31_nlo_hessian_pdfas + PDF= 305897 NNPDF31_nlo_hessian_pdfas + PDF= 305898 NNPDF31_nlo_hessian_pdfas + PDF= 305899 NNPDF31_nlo_hessian_pdfas + PDF= 305900 NNPDF31_nlo_hessian_pdfas + PDF= 305901 NNPDF31_nlo_hessian_pdfas + PDF= 305902 NNPDF31_nlo_hessian_pdfas + + + PDF= 13000 CT14nnlo + PDF= 13001 CT14nnlo + PDF= 13002 CT14nnlo + PDF= 13003 CT14nnlo + PDF= 13004 CT14nnlo + PDF= 13005 CT14nnlo + PDF= 13006 CT14nnlo + PDF= 13007 CT14nnlo + PDF= 13008 CT14nnlo + PDF= 13009 CT14nnlo + PDF= 13010 CT14nnlo + PDF= 13011 CT14nnlo + PDF= 13012 CT14nnlo + PDF= 13013 CT14nnlo + PDF= 13014 CT14nnlo + PDF= 13015 CT14nnlo + PDF= 13016 CT14nnlo + PDF= 13017 CT14nnlo + PDF= 13018 CT14nnlo + PDF= 13019 CT14nnlo + PDF= 13020 CT14nnlo + PDF= 13021 CT14nnlo + PDF= 13022 CT14nnlo + PDF= 13023 CT14nnlo + PDF= 13024 CT14nnlo + PDF= 13025 CT14nnlo + PDF= 13026 CT14nnlo + PDF= 13027 CT14nnlo + PDF= 13028 CT14nnlo + PDF= 13029 CT14nnlo + PDF= 13030 CT14nnlo + PDF= 13031 CT14nnlo + PDF= 13032 CT14nnlo + PDF= 13033 CT14nnlo + PDF= 13034 CT14nnlo + PDF= 13035 CT14nnlo + PDF= 13036 CT14nnlo + PDF= 13037 CT14nnlo + PDF= 13038 CT14nnlo + PDF= 13039 CT14nnlo + PDF= 13040 CT14nnlo + PDF= 13041 CT14nnlo + PDF= 13042 CT14nnlo + PDF= 13043 CT14nnlo + PDF= 13044 CT14nnlo + PDF= 13045 CT14nnlo + PDF= 13046 CT14nnlo + PDF= 13047 CT14nnlo + PDF= 13048 CT14nnlo + PDF= 13049 CT14nnlo + PDF= 13050 CT14nnlo + PDF= 13051 CT14nnlo + PDF= 13052 CT14nnlo + PDF= 13053 CT14nnlo + PDF= 13054 CT14nnlo + PDF= 13055 CT14nnlo + PDF= 13056 CT14nnlo + + + PDF= 13065 CT14nnlo_as_0116 + + + PDF= 13069 CT14nnlo_as_0120 + + + PDF= 13100 CT14nlo + PDF= 13101 CT14nlo + PDF= 13102 CT14nlo + PDF= 13103 CT14nlo + PDF= 13104 CT14nlo + PDF= 13105 CT14nlo + PDF= 13106 CT14nlo + PDF= 13107 CT14nlo + PDF= 13108 CT14nlo + PDF= 13109 CT14nlo + PDF= 13110 CT14nlo + PDF= 13111 CT14nlo + PDF= 13112 CT14nlo + PDF= 13113 CT14nlo + PDF= 13114 CT14nlo + PDF= 13115 CT14nlo + PDF= 13116 CT14nlo + PDF= 13117 CT14nlo + PDF= 13118 CT14nlo + PDF= 13119 CT14nlo + PDF= 13120 CT14nlo + PDF= 13121 CT14nlo + PDF= 13122 CT14nlo + PDF= 13123 CT14nlo + PDF= 13124 CT14nlo + PDF= 13125 CT14nlo + PDF= 13126 CT14nlo + PDF= 13127 CT14nlo + PDF= 13128 CT14nlo + PDF= 13129 CT14nlo + PDF= 13130 CT14nlo + PDF= 13131 CT14nlo + PDF= 13132 CT14nlo + PDF= 13133 CT14nlo + PDF= 13134 CT14nlo + PDF= 13135 CT14nlo + PDF= 13136 CT14nlo + PDF= 13137 CT14nlo + PDF= 13138 CT14nlo + PDF= 13139 CT14nlo + PDF= 13140 CT14nlo + PDF= 13141 CT14nlo + PDF= 13142 CT14nlo + PDF= 13143 CT14nlo + PDF= 13144 CT14nlo + PDF= 13145 CT14nlo + PDF= 13146 CT14nlo + PDF= 13147 CT14nlo + PDF= 13148 CT14nlo + PDF= 13149 CT14nlo + PDF= 13150 CT14nlo + PDF= 13151 CT14nlo + PDF= 13152 CT14nlo + PDF= 13153 CT14nlo + PDF= 13154 CT14nlo + PDF= 13155 CT14nlo + PDF= 13156 CT14nlo + + + PDF= 13163 CT14nlo_as_0116 + + + PDF= 13167 CT14nlo_as_0120 + + + PDF= 13200 CT14lo + + + PDF= 25200 MMHT2014nlo68clas118 + PDF= 25201 MMHT2014nlo68clas118 + PDF= 25202 MMHT2014nlo68clas118 + PDF= 25203 MMHT2014nlo68clas118 + PDF= 25204 MMHT2014nlo68clas118 + PDF= 25205 MMHT2014nlo68clas118 + PDF= 25206 MMHT2014nlo68clas118 + PDF= 25207 MMHT2014nlo68clas118 + PDF= 25208 MMHT2014nlo68clas118 + PDF= 25209 MMHT2014nlo68clas118 + PDF= 25210 MMHT2014nlo68clas118 + PDF= 25211 MMHT2014nlo68clas118 + PDF= 25212 MMHT2014nlo68clas118 + PDF= 25213 MMHT2014nlo68clas118 + PDF= 25214 MMHT2014nlo68clas118 + PDF= 25215 MMHT2014nlo68clas118 + PDF= 25216 MMHT2014nlo68clas118 + PDF= 25217 MMHT2014nlo68clas118 + PDF= 25218 MMHT2014nlo68clas118 + PDF= 25219 MMHT2014nlo68clas118 + PDF= 25220 MMHT2014nlo68clas118 + PDF= 25221 MMHT2014nlo68clas118 + PDF= 25222 MMHT2014nlo68clas118 + PDF= 25223 MMHT2014nlo68clas118 + PDF= 25224 MMHT2014nlo68clas118 + PDF= 25225 MMHT2014nlo68clas118 + PDF= 25226 MMHT2014nlo68clas118 + PDF= 25227 MMHT2014nlo68clas118 + PDF= 25228 MMHT2014nlo68clas118 + PDF= 25229 MMHT2014nlo68clas118 + PDF= 25230 MMHT2014nlo68clas118 + PDF= 25231 MMHT2014nlo68clas118 + PDF= 25232 MMHT2014nlo68clas118 + PDF= 25233 MMHT2014nlo68clas118 + PDF= 25234 MMHT2014nlo68clas118 + PDF= 25235 MMHT2014nlo68clas118 + PDF= 25236 MMHT2014nlo68clas118 + PDF= 25237 MMHT2014nlo68clas118 + PDF= 25238 MMHT2014nlo68clas118 + PDF= 25239 MMHT2014nlo68clas118 + PDF= 25240 MMHT2014nlo68clas118 + PDF= 25241 MMHT2014nlo68clas118 + PDF= 25242 MMHT2014nlo68clas118 + PDF= 25243 MMHT2014nlo68clas118 + PDF= 25244 MMHT2014nlo68clas118 + PDF= 25245 MMHT2014nlo68clas118 + PDF= 25246 MMHT2014nlo68clas118 + PDF= 25247 MMHT2014nlo68clas118 + PDF= 25248 MMHT2014nlo68clas118 + PDF= 25249 MMHT2014nlo68clas118 + PDF= 25250 MMHT2014nlo68clas118 + + + PDF= 25300 MMHT2014nnlo68cl + PDF= 25301 MMHT2014nnlo68cl + PDF= 25302 MMHT2014nnlo68cl + PDF= 25303 MMHT2014nnlo68cl + PDF= 25304 MMHT2014nnlo68cl + PDF= 25305 MMHT2014nnlo68cl + PDF= 25306 MMHT2014nnlo68cl + PDF= 25307 MMHT2014nnlo68cl + PDF= 25308 MMHT2014nnlo68cl + PDF= 25309 MMHT2014nnlo68cl + PDF= 25310 MMHT2014nnlo68cl + PDF= 25311 MMHT2014nnlo68cl + PDF= 25312 MMHT2014nnlo68cl + PDF= 25313 MMHT2014nnlo68cl + PDF= 25314 MMHT2014nnlo68cl + PDF= 25315 MMHT2014nnlo68cl + PDF= 25316 MMHT2014nnlo68cl + PDF= 25317 MMHT2014nnlo68cl + PDF= 25318 MMHT2014nnlo68cl + PDF= 25319 MMHT2014nnlo68cl + PDF= 25320 MMHT2014nnlo68cl + PDF= 25321 MMHT2014nnlo68cl + PDF= 25322 MMHT2014nnlo68cl + PDF= 25323 MMHT2014nnlo68cl + PDF= 25324 MMHT2014nnlo68cl + PDF= 25325 MMHT2014nnlo68cl + PDF= 25326 MMHT2014nnlo68cl + PDF= 25327 MMHT2014nnlo68cl + PDF= 25328 MMHT2014nnlo68cl + PDF= 25329 MMHT2014nnlo68cl + PDF= 25330 MMHT2014nnlo68cl + PDF= 25331 MMHT2014nnlo68cl + PDF= 25332 MMHT2014nnlo68cl + PDF= 25333 MMHT2014nnlo68cl + PDF= 25334 MMHT2014nnlo68cl + PDF= 25335 MMHT2014nnlo68cl + PDF= 25336 MMHT2014nnlo68cl + PDF= 25337 MMHT2014nnlo68cl + PDF= 25338 MMHT2014nnlo68cl + PDF= 25339 MMHT2014nnlo68cl + PDF= 25340 MMHT2014nnlo68cl + PDF= 25341 MMHT2014nnlo68cl + PDF= 25342 MMHT2014nnlo68cl + PDF= 25343 MMHT2014nnlo68cl + PDF= 25344 MMHT2014nnlo68cl + PDF= 25345 MMHT2014nnlo68cl + PDF= 25346 MMHT2014nnlo68cl + PDF= 25347 MMHT2014nnlo68cl + PDF= 25348 MMHT2014nnlo68cl + PDF= 25349 MMHT2014nnlo68cl + PDF= 25350 MMHT2014nnlo68cl + + + PDF= 25000 MMHT2014lo68cl + + + PDF= 42780 ABMP16als118_5_nnlo + PDF= 42781 ABMP16als118_5_nnlo + PDF= 42782 ABMP16als118_5_nnlo + PDF= 42783 ABMP16als118_5_nnlo + PDF= 42784 ABMP16als118_5_nnlo + PDF= 42785 ABMP16als118_5_nnlo + PDF= 42786 ABMP16als118_5_nnlo + PDF= 42787 ABMP16als118_5_nnlo + PDF= 42788 ABMP16als118_5_nnlo + PDF= 42789 ABMP16als118_5_nnlo + PDF= 42790 ABMP16als118_5_nnlo + PDF= 42791 ABMP16als118_5_nnlo + PDF= 42792 ABMP16als118_5_nnlo + PDF= 42793 ABMP16als118_5_nnlo + PDF= 42794 ABMP16als118_5_nnlo + PDF= 42795 ABMP16als118_5_nnlo + PDF= 42796 ABMP16als118_5_nnlo + PDF= 42797 ABMP16als118_5_nnlo + PDF= 42798 ABMP16als118_5_nnlo + PDF= 42799 ABMP16als118_5_nnlo + PDF= 42800 ABMP16als118_5_nnlo + PDF= 42801 ABMP16als118_5_nnlo + PDF= 42802 ABMP16als118_5_nnlo + PDF= 42803 ABMP16als118_5_nnlo + PDF= 42804 ABMP16als118_5_nnlo + PDF= 42805 ABMP16als118_5_nnlo + PDF= 42806 ABMP16als118_5_nnlo + PDF= 42807 ABMP16als118_5_nnlo + PDF= 42808 ABMP16als118_5_nnlo + PDF= 42809 ABMP16als118_5_nnlo + + + PDF= 90200 PDF4LHC15_nlo_100_pdfas + PDF= 90201 PDF4LHC15_nlo_100_pdfas + PDF= 90202 PDF4LHC15_nlo_100_pdfas + PDF= 90203 PDF4LHC15_nlo_100_pdfas + PDF= 90204 PDF4LHC15_nlo_100_pdfas + PDF= 90205 PDF4LHC15_nlo_100_pdfas + PDF= 90206 PDF4LHC15_nlo_100_pdfas + PDF= 90207 PDF4LHC15_nlo_100_pdfas + PDF= 90208 PDF4LHC15_nlo_100_pdfas + PDF= 90209 PDF4LHC15_nlo_100_pdfas + PDF= 90210 PDF4LHC15_nlo_100_pdfas + PDF= 90211 PDF4LHC15_nlo_100_pdfas + PDF= 90212 PDF4LHC15_nlo_100_pdfas + PDF= 90213 PDF4LHC15_nlo_100_pdfas + PDF= 90214 PDF4LHC15_nlo_100_pdfas + PDF= 90215 PDF4LHC15_nlo_100_pdfas + PDF= 90216 PDF4LHC15_nlo_100_pdfas + PDF= 90217 PDF4LHC15_nlo_100_pdfas + PDF= 90218 PDF4LHC15_nlo_100_pdfas + PDF= 90219 PDF4LHC15_nlo_100_pdfas + PDF= 90220 PDF4LHC15_nlo_100_pdfas + PDF= 90221 PDF4LHC15_nlo_100_pdfas + PDF= 90222 PDF4LHC15_nlo_100_pdfas + PDF= 90223 PDF4LHC15_nlo_100_pdfas + PDF= 90224 PDF4LHC15_nlo_100_pdfas + PDF= 90225 PDF4LHC15_nlo_100_pdfas + PDF= 90226 PDF4LHC15_nlo_100_pdfas + PDF= 90227 PDF4LHC15_nlo_100_pdfas + PDF= 90228 PDF4LHC15_nlo_100_pdfas + PDF= 90229 PDF4LHC15_nlo_100_pdfas + PDF= 90230 PDF4LHC15_nlo_100_pdfas + PDF= 90231 PDF4LHC15_nlo_100_pdfas + PDF= 90232 PDF4LHC15_nlo_100_pdfas + PDF= 90233 PDF4LHC15_nlo_100_pdfas + PDF= 90234 PDF4LHC15_nlo_100_pdfas + PDF= 90235 PDF4LHC15_nlo_100_pdfas + PDF= 90236 PDF4LHC15_nlo_100_pdfas + PDF= 90237 PDF4LHC15_nlo_100_pdfas + PDF= 90238 PDF4LHC15_nlo_100_pdfas + PDF= 90239 PDF4LHC15_nlo_100_pdfas + PDF= 90240 PDF4LHC15_nlo_100_pdfas + PDF= 90241 PDF4LHC15_nlo_100_pdfas + PDF= 90242 PDF4LHC15_nlo_100_pdfas + PDF= 90243 PDF4LHC15_nlo_100_pdfas + PDF= 90244 PDF4LHC15_nlo_100_pdfas + PDF= 90245 PDF4LHC15_nlo_100_pdfas + PDF= 90246 PDF4LHC15_nlo_100_pdfas + PDF= 90247 PDF4LHC15_nlo_100_pdfas + PDF= 90248 PDF4LHC15_nlo_100_pdfas + PDF= 90249 PDF4LHC15_nlo_100_pdfas + PDF= 90250 PDF4LHC15_nlo_100_pdfas + PDF= 90251 PDF4LHC15_nlo_100_pdfas + PDF= 90252 PDF4LHC15_nlo_100_pdfas + PDF= 90253 PDF4LHC15_nlo_100_pdfas + PDF= 90254 PDF4LHC15_nlo_100_pdfas + PDF= 90255 PDF4LHC15_nlo_100_pdfas + PDF= 90256 PDF4LHC15_nlo_100_pdfas + PDF= 90257 PDF4LHC15_nlo_100_pdfas + PDF= 90258 PDF4LHC15_nlo_100_pdfas + PDF= 90259 PDF4LHC15_nlo_100_pdfas + PDF= 90260 PDF4LHC15_nlo_100_pdfas + PDF= 90261 PDF4LHC15_nlo_100_pdfas + PDF= 90262 PDF4LHC15_nlo_100_pdfas + PDF= 90263 PDF4LHC15_nlo_100_pdfas + PDF= 90264 PDF4LHC15_nlo_100_pdfas + PDF= 90265 PDF4LHC15_nlo_100_pdfas + PDF= 90266 PDF4LHC15_nlo_100_pdfas + PDF= 90267 PDF4LHC15_nlo_100_pdfas + PDF= 90268 PDF4LHC15_nlo_100_pdfas + PDF= 90269 PDF4LHC15_nlo_100_pdfas + PDF= 90270 PDF4LHC15_nlo_100_pdfas + PDF= 90271 PDF4LHC15_nlo_100_pdfas + PDF= 90272 PDF4LHC15_nlo_100_pdfas + PDF= 90273 PDF4LHC15_nlo_100_pdfas + PDF= 90274 PDF4LHC15_nlo_100_pdfas + PDF= 90275 PDF4LHC15_nlo_100_pdfas + PDF= 90276 PDF4LHC15_nlo_100_pdfas + PDF= 90277 PDF4LHC15_nlo_100_pdfas + PDF= 90278 PDF4LHC15_nlo_100_pdfas + PDF= 90279 PDF4LHC15_nlo_100_pdfas + PDF= 90280 PDF4LHC15_nlo_100_pdfas + PDF= 90281 PDF4LHC15_nlo_100_pdfas + PDF= 90282 PDF4LHC15_nlo_100_pdfas + PDF= 90283 PDF4LHC15_nlo_100_pdfas + PDF= 90284 PDF4LHC15_nlo_100_pdfas + PDF= 90285 PDF4LHC15_nlo_100_pdfas + PDF= 90286 PDF4LHC15_nlo_100_pdfas + PDF= 90287 PDF4LHC15_nlo_100_pdfas + PDF= 90288 PDF4LHC15_nlo_100_pdfas + PDF= 90289 PDF4LHC15_nlo_100_pdfas + PDF= 90290 PDF4LHC15_nlo_100_pdfas + PDF= 90291 PDF4LHC15_nlo_100_pdfas + PDF= 90292 PDF4LHC15_nlo_100_pdfas + PDF= 90293 PDF4LHC15_nlo_100_pdfas + PDF= 90294 PDF4LHC15_nlo_100_pdfas + PDF= 90295 PDF4LHC15_nlo_100_pdfas + PDF= 90296 PDF4LHC15_nlo_100_pdfas + PDF= 90297 PDF4LHC15_nlo_100_pdfas + PDF= 90298 PDF4LHC15_nlo_100_pdfas + PDF= 90299 PDF4LHC15_nlo_100_pdfas + PDF= 90300 PDF4LHC15_nlo_100_pdfas + PDF= 90301 PDF4LHC15_nlo_100_pdfas + PDF= 90302 PDF4LHC15_nlo_100_pdfas + + + PDF= 91200 PDF4LHC15_nnlo_100_pdfas + PDF= 91201 PDF4LHC15_nnlo_100_pdfas + PDF= 91202 PDF4LHC15_nnlo_100_pdfas + PDF= 91203 PDF4LHC15_nnlo_100_pdfas + PDF= 91204 PDF4LHC15_nnlo_100_pdfas + PDF= 91205 PDF4LHC15_nnlo_100_pdfas + PDF= 91206 PDF4LHC15_nnlo_100_pdfas + PDF= 91207 PDF4LHC15_nnlo_100_pdfas + PDF= 91208 PDF4LHC15_nnlo_100_pdfas + PDF= 91209 PDF4LHC15_nnlo_100_pdfas + PDF= 91210 PDF4LHC15_nnlo_100_pdfas + PDF= 91211 PDF4LHC15_nnlo_100_pdfas + PDF= 91212 PDF4LHC15_nnlo_100_pdfas + PDF= 91213 PDF4LHC15_nnlo_100_pdfas + PDF= 91214 PDF4LHC15_nnlo_100_pdfas + PDF= 91215 PDF4LHC15_nnlo_100_pdfas + PDF= 91216 PDF4LHC15_nnlo_100_pdfas + PDF= 91217 PDF4LHC15_nnlo_100_pdfas + PDF= 91218 PDF4LHC15_nnlo_100_pdfas + PDF= 91219 PDF4LHC15_nnlo_100_pdfas + PDF= 91220 PDF4LHC15_nnlo_100_pdfas + PDF= 91221 PDF4LHC15_nnlo_100_pdfas + PDF= 91222 PDF4LHC15_nnlo_100_pdfas + PDF= 91223 PDF4LHC15_nnlo_100_pdfas + PDF= 91224 PDF4LHC15_nnlo_100_pdfas + PDF= 91225 PDF4LHC15_nnlo_100_pdfas + PDF= 91226 PDF4LHC15_nnlo_100_pdfas + PDF= 91227 PDF4LHC15_nnlo_100_pdfas + PDF= 91228 PDF4LHC15_nnlo_100_pdfas + PDF= 91229 PDF4LHC15_nnlo_100_pdfas + PDF= 91230 PDF4LHC15_nnlo_100_pdfas + PDF= 91231 PDF4LHC15_nnlo_100_pdfas + PDF= 91232 PDF4LHC15_nnlo_100_pdfas + PDF= 91233 PDF4LHC15_nnlo_100_pdfas + PDF= 91234 PDF4LHC15_nnlo_100_pdfas + PDF= 91235 PDF4LHC15_nnlo_100_pdfas + PDF= 91236 PDF4LHC15_nnlo_100_pdfas + PDF= 91237 PDF4LHC15_nnlo_100_pdfas + PDF= 91238 PDF4LHC15_nnlo_100_pdfas + PDF= 91239 PDF4LHC15_nnlo_100_pdfas + PDF= 91240 PDF4LHC15_nnlo_100_pdfas + PDF= 91241 PDF4LHC15_nnlo_100_pdfas + PDF= 91242 PDF4LHC15_nnlo_100_pdfas + PDF= 91243 PDF4LHC15_nnlo_100_pdfas + PDF= 91244 PDF4LHC15_nnlo_100_pdfas + PDF= 91245 PDF4LHC15_nnlo_100_pdfas + PDF= 91246 PDF4LHC15_nnlo_100_pdfas + PDF= 91247 PDF4LHC15_nnlo_100_pdfas + PDF= 91248 PDF4LHC15_nnlo_100_pdfas + PDF= 91249 PDF4LHC15_nnlo_100_pdfas + PDF= 91250 PDF4LHC15_nnlo_100_pdfas + PDF= 91251 PDF4LHC15_nnlo_100_pdfas + PDF= 91252 PDF4LHC15_nnlo_100_pdfas + PDF= 91253 PDF4LHC15_nnlo_100_pdfas + PDF= 91254 PDF4LHC15_nnlo_100_pdfas + PDF= 91255 PDF4LHC15_nnlo_100_pdfas + PDF= 91256 PDF4LHC15_nnlo_100_pdfas + PDF= 91257 PDF4LHC15_nnlo_100_pdfas + PDF= 91258 PDF4LHC15_nnlo_100_pdfas + PDF= 91259 PDF4LHC15_nnlo_100_pdfas + PDF= 91260 PDF4LHC15_nnlo_100_pdfas + PDF= 91261 PDF4LHC15_nnlo_100_pdfas + PDF= 91262 PDF4LHC15_nnlo_100_pdfas + PDF= 91263 PDF4LHC15_nnlo_100_pdfas + PDF= 91264 PDF4LHC15_nnlo_100_pdfas + PDF= 91265 PDF4LHC15_nnlo_100_pdfas + PDF= 91266 PDF4LHC15_nnlo_100_pdfas + PDF= 91267 PDF4LHC15_nnlo_100_pdfas + PDF= 91268 PDF4LHC15_nnlo_100_pdfas + PDF= 91269 PDF4LHC15_nnlo_100_pdfas + PDF= 91270 PDF4LHC15_nnlo_100_pdfas + PDF= 91271 PDF4LHC15_nnlo_100_pdfas + PDF= 91272 PDF4LHC15_nnlo_100_pdfas + PDF= 91273 PDF4LHC15_nnlo_100_pdfas + PDF= 91274 PDF4LHC15_nnlo_100_pdfas + PDF= 91275 PDF4LHC15_nnlo_100_pdfas + PDF= 91276 PDF4LHC15_nnlo_100_pdfas + PDF= 91277 PDF4LHC15_nnlo_100_pdfas + PDF= 91278 PDF4LHC15_nnlo_100_pdfas + PDF= 91279 PDF4LHC15_nnlo_100_pdfas + PDF= 91280 PDF4LHC15_nnlo_100_pdfas + PDF= 91281 PDF4LHC15_nnlo_100_pdfas + PDF= 91282 PDF4LHC15_nnlo_100_pdfas + PDF= 91283 PDF4LHC15_nnlo_100_pdfas + PDF= 91284 PDF4LHC15_nnlo_100_pdfas + PDF= 91285 PDF4LHC15_nnlo_100_pdfas + PDF= 91286 PDF4LHC15_nnlo_100_pdfas + PDF= 91287 PDF4LHC15_nnlo_100_pdfas + PDF= 91288 PDF4LHC15_nnlo_100_pdfas + PDF= 91289 PDF4LHC15_nnlo_100_pdfas + PDF= 91290 PDF4LHC15_nnlo_100_pdfas + PDF= 91291 PDF4LHC15_nnlo_100_pdfas + PDF= 91292 PDF4LHC15_nnlo_100_pdfas + PDF= 91293 PDF4LHC15_nnlo_100_pdfas + PDF= 91294 PDF4LHC15_nnlo_100_pdfas + PDF= 91295 PDF4LHC15_nnlo_100_pdfas + PDF= 91296 PDF4LHC15_nnlo_100_pdfas + PDF= 91297 PDF4LHC15_nnlo_100_pdfas + PDF= 91298 PDF4LHC15_nnlo_100_pdfas + PDF= 91299 PDF4LHC15_nnlo_100_pdfas + PDF= 91300 PDF4LHC15_nnlo_100_pdfas + PDF= 91301 PDF4LHC15_nnlo_100_pdfas + PDF= 91302 PDF4LHC15_nnlo_100_pdfas + + + PDF= 90400 PDF4LHC15_nlo_30_pdfas + PDF= 90401 PDF4LHC15_nlo_30_pdfas + PDF= 90402 PDF4LHC15_nlo_30_pdfas + PDF= 90403 PDF4LHC15_nlo_30_pdfas + PDF= 90404 PDF4LHC15_nlo_30_pdfas + PDF= 90405 PDF4LHC15_nlo_30_pdfas + PDF= 90406 PDF4LHC15_nlo_30_pdfas + PDF= 90407 PDF4LHC15_nlo_30_pdfas + PDF= 90408 PDF4LHC15_nlo_30_pdfas + PDF= 90409 PDF4LHC15_nlo_30_pdfas + PDF= 90410 PDF4LHC15_nlo_30_pdfas + PDF= 90411 PDF4LHC15_nlo_30_pdfas + PDF= 90412 PDF4LHC15_nlo_30_pdfas + PDF= 90413 PDF4LHC15_nlo_30_pdfas + PDF= 90414 PDF4LHC15_nlo_30_pdfas + PDF= 90415 PDF4LHC15_nlo_30_pdfas + PDF= 90416 PDF4LHC15_nlo_30_pdfas + PDF= 90417 PDF4LHC15_nlo_30_pdfas + PDF= 90418 PDF4LHC15_nlo_30_pdfas + PDF= 90419 PDF4LHC15_nlo_30_pdfas + PDF= 90420 PDF4LHC15_nlo_30_pdfas + PDF= 90421 PDF4LHC15_nlo_30_pdfas + PDF= 90422 PDF4LHC15_nlo_30_pdfas + PDF= 90423 PDF4LHC15_nlo_30_pdfas + PDF= 90424 PDF4LHC15_nlo_30_pdfas + PDF= 90425 PDF4LHC15_nlo_30_pdfas + PDF= 90426 PDF4LHC15_nlo_30_pdfas + PDF= 90427 PDF4LHC15_nlo_30_pdfas + PDF= 90428 PDF4LHC15_nlo_30_pdfas + PDF= 90429 PDF4LHC15_nlo_30_pdfas + PDF= 90430 PDF4LHC15_nlo_30_pdfas + PDF= 90431 PDF4LHC15_nlo_30_pdfas + PDF= 90432 PDF4LHC15_nlo_30_pdfas + + + PDF= 91400 PDF4LHC15_nnlo_30_pdfas + PDF= 91401 PDF4LHC15_nnlo_30_pdfas + PDF= 91402 PDF4LHC15_nnlo_30_pdfas + PDF= 91403 PDF4LHC15_nnlo_30_pdfas + PDF= 91404 PDF4LHC15_nnlo_30_pdfas + PDF= 91405 PDF4LHC15_nnlo_30_pdfas + PDF= 91406 PDF4LHC15_nnlo_30_pdfas + PDF= 91407 PDF4LHC15_nnlo_30_pdfas + PDF= 91408 PDF4LHC15_nnlo_30_pdfas + PDF= 91409 PDF4LHC15_nnlo_30_pdfas + PDF= 91410 PDF4LHC15_nnlo_30_pdfas + PDF= 91411 PDF4LHC15_nnlo_30_pdfas + PDF= 91412 PDF4LHC15_nnlo_30_pdfas + PDF= 91413 PDF4LHC15_nnlo_30_pdfas + PDF= 91414 PDF4LHC15_nnlo_30_pdfas + PDF= 91415 PDF4LHC15_nnlo_30_pdfas + PDF= 91416 PDF4LHC15_nnlo_30_pdfas + PDF= 91417 PDF4LHC15_nnlo_30_pdfas + PDF= 91418 PDF4LHC15_nnlo_30_pdfas + PDF= 91419 PDF4LHC15_nnlo_30_pdfas + PDF= 91420 PDF4LHC15_nnlo_30_pdfas + PDF= 91421 PDF4LHC15_nnlo_30_pdfas + PDF= 91422 PDF4LHC15_nnlo_30_pdfas + PDF= 91423 PDF4LHC15_nnlo_30_pdfas + PDF= 91424 PDF4LHC15_nnlo_30_pdfas + PDF= 91425 PDF4LHC15_nnlo_30_pdfas + PDF= 91426 PDF4LHC15_nnlo_30_pdfas + PDF= 91427 PDF4LHC15_nnlo_30_pdfas + PDF= 91428 PDF4LHC15_nnlo_30_pdfas + PDF= 91429 PDF4LHC15_nnlo_30_pdfas + PDF= 91430 PDF4LHC15_nnlo_30_pdfas + PDF= 91431 PDF4LHC15_nnlo_30_pdfas + PDF= 91432 PDF4LHC15_nnlo_30_pdfas + + + PDF= 61100 HERAPDF20_NLO_EIG + PDF= 61101 HERAPDF20_NLO_EIG + PDF= 61102 HERAPDF20_NLO_EIG + PDF= 61103 HERAPDF20_NLO_EIG + PDF= 61104 HERAPDF20_NLO_EIG + PDF= 61105 HERAPDF20_NLO_EIG + PDF= 61106 HERAPDF20_NLO_EIG + PDF= 61107 HERAPDF20_NLO_EIG + PDF= 61108 HERAPDF20_NLO_EIG + PDF= 61109 HERAPDF20_NLO_EIG + PDF= 61110 HERAPDF20_NLO_EIG + PDF= 61111 HERAPDF20_NLO_EIG + PDF= 61112 HERAPDF20_NLO_EIG + PDF= 61113 HERAPDF20_NLO_EIG + PDF= 61114 HERAPDF20_NLO_EIG + PDF= 61115 HERAPDF20_NLO_EIG + PDF= 61116 HERAPDF20_NLO_EIG + PDF= 61117 HERAPDF20_NLO_EIG + PDF= 61118 HERAPDF20_NLO_EIG + PDF= 61119 HERAPDF20_NLO_EIG + PDF= 61120 HERAPDF20_NLO_EIG + PDF= 61121 HERAPDF20_NLO_EIG + PDF= 61122 HERAPDF20_NLO_EIG + PDF= 61123 HERAPDF20_NLO_EIG + PDF= 61124 HERAPDF20_NLO_EIG + PDF= 61125 HERAPDF20_NLO_EIG + PDF= 61126 HERAPDF20_NLO_EIG + PDF= 61127 HERAPDF20_NLO_EIG + PDF= 61128 HERAPDF20_NLO_EIG + + + PDF= 61130 HERAPDF20_NLO_VAR + PDF= 61131 HERAPDF20_NLO_VAR + PDF= 61132 HERAPDF20_NLO_VAR + PDF= 61133 HERAPDF20_NLO_VAR + PDF= 61134 HERAPDF20_NLO_VAR + PDF= 61135 HERAPDF20_NLO_VAR + PDF= 61136 HERAPDF20_NLO_VAR + PDF= 61137 HERAPDF20_NLO_VAR + PDF= 61138 HERAPDF20_NLO_VAR + PDF= 61139 HERAPDF20_NLO_VAR + PDF= 61140 HERAPDF20_NLO_VAR + PDF= 61141 HERAPDF20_NLO_VAR + PDF= 61142 HERAPDF20_NLO_VAR + PDF= 61143 HERAPDF20_NLO_VAR + + + PDF= 61200 HERAPDF20_NNLO_EIG + PDF= 61201 HERAPDF20_NNLO_EIG + PDF= 61202 HERAPDF20_NNLO_EIG + PDF= 61203 HERAPDF20_NNLO_EIG + PDF= 61204 HERAPDF20_NNLO_EIG + PDF= 61205 HERAPDF20_NNLO_EIG + PDF= 61206 HERAPDF20_NNLO_EIG + PDF= 61207 HERAPDF20_NNLO_EIG + PDF= 61208 HERAPDF20_NNLO_EIG + PDF= 61209 HERAPDF20_NNLO_EIG + PDF= 61210 HERAPDF20_NNLO_EIG + PDF= 61211 HERAPDF20_NNLO_EIG + PDF= 61212 HERAPDF20_NNLO_EIG + PDF= 61213 HERAPDF20_NNLO_EIG + PDF= 61214 HERAPDF20_NNLO_EIG + PDF= 61215 HERAPDF20_NNLO_EIG + PDF= 61216 HERAPDF20_NNLO_EIG + PDF= 61217 HERAPDF20_NNLO_EIG + PDF= 61218 HERAPDF20_NNLO_EIG + PDF= 61219 HERAPDF20_NNLO_EIG + PDF= 61220 HERAPDF20_NNLO_EIG + PDF= 61221 HERAPDF20_NNLO_EIG + PDF= 61222 HERAPDF20_NNLO_EIG + PDF= 61223 HERAPDF20_NNLO_EIG + PDF= 61224 HERAPDF20_NNLO_EIG + PDF= 61225 HERAPDF20_NNLO_EIG + PDF= 61226 HERAPDF20_NNLO_EIG + PDF= 61227 HERAPDF20_NNLO_EIG + PDF= 61228 HERAPDF20_NNLO_EIG + + + PDF= 61230 HERAPDF20_NNLO_VAR + PDF= 61231 HERAPDF20_NNLO_VAR + PDF= 61232 HERAPDF20_NNLO_VAR + PDF= 61233 HERAPDF20_NNLO_VAR + PDF= 61234 HERAPDF20_NNLO_VAR + PDF= 61235 HERAPDF20_NNLO_VAR + PDF= 61236 HERAPDF20_NNLO_VAR + PDF= 61237 HERAPDF20_NNLO_VAR + PDF= 61238 HERAPDF20_NNLO_VAR + PDF= 61239 HERAPDF20_NNLO_VAR + PDF= 61240 HERAPDF20_NNLO_VAR + PDF= 61241 HERAPDF20_NNLO_VAR + PDF= 61242 HERAPDF20_NNLO_VAR + PDF= 61243 HERAPDF20_NNLO_VAR + + + PDF= 13400 CT14qed_inc_proton + PDF= 13401 CT14qed_inc_proton + PDF= 13402 CT14qed_inc_proton + PDF= 13403 CT14qed_inc_proton + PDF= 13404 CT14qed_inc_proton + PDF= 13405 CT14qed_inc_proton + PDF= 13406 CT14qed_inc_proton + PDF= 13407 CT14qed_inc_proton + PDF= 13408 CT14qed_inc_proton + PDF= 13409 CT14qed_inc_proton + PDF= 13410 CT14qed_inc_proton + PDF= 13411 CT14qed_inc_proton + PDF= 13412 CT14qed_inc_proton + PDF= 13413 CT14qed_inc_proton + PDF= 13414 CT14qed_inc_proton + PDF= 13415 CT14qed_inc_proton + PDF= 13416 CT14qed_inc_proton + PDF= 13417 CT14qed_inc_proton + PDF= 13418 CT14qed_inc_proton + PDF= 13419 CT14qed_inc_proton + PDF= 13420 CT14qed_inc_proton + PDF= 13421 CT14qed_inc_proton + PDF= 13422 CT14qed_inc_proton + PDF= 13423 CT14qed_inc_proton + PDF= 13424 CT14qed_inc_proton + PDF= 13425 CT14qed_inc_proton + PDF= 13426 CT14qed_inc_proton + PDF= 13427 CT14qed_inc_proton + PDF= 13428 CT14qed_inc_proton + PDF= 13429 CT14qed_inc_proton + PDF= 13430 CT14qed_inc_proton + + + PDF= 82200 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82201 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82202 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82203 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82204 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82205 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82206 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82207 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82208 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82209 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82210 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82211 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82212 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82213 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82214 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82215 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82216 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82217 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82218 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82219 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82220 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82221 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82222 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82223 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82224 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82225 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82226 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82227 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82228 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82229 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82230 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82231 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82232 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82233 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82234 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82235 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82236 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82237 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82238 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82239 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82240 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82241 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82242 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82243 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82244 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82245 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82246 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82247 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82248 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82249 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82250 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82251 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82252 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82253 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82254 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82255 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82256 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82257 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82258 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82259 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82260 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82261 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82262 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82263 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82264 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82265 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82266 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82267 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82268 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82269 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82270 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82271 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82272 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82273 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82274 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82275 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82276 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82277 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82278 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82279 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82280 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82281 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82282 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82283 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82284 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82285 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82286 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82287 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82288 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82289 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82290 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82291 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82292 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82293 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82294 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82295 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82296 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82297 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82298 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82299 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82300 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82301 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82302 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82303 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82304 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82305 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82306 LUXqed17_plus_PDF4LHC15_nnlo_100 + PDF= 82307 LUXqed17_plus_PDF4LHC15_nnlo_100 + + + PDF= 292200 NNPDF30_nlo_nf_5_pdfas + PDF= 292201 NNPDF30_nlo_nf_5_pdfas + PDF= 292202 NNPDF30_nlo_nf_5_pdfas + PDF= 292203 NNPDF30_nlo_nf_5_pdfas + PDF= 292204 NNPDF30_nlo_nf_5_pdfas + PDF= 292205 NNPDF30_nlo_nf_5_pdfas + PDF= 292206 NNPDF30_nlo_nf_5_pdfas + PDF= 292207 NNPDF30_nlo_nf_5_pdfas + PDF= 292208 NNPDF30_nlo_nf_5_pdfas + PDF= 292209 NNPDF30_nlo_nf_5_pdfas + PDF= 292210 NNPDF30_nlo_nf_5_pdfas + PDF= 292211 NNPDF30_nlo_nf_5_pdfas + PDF= 292212 NNPDF30_nlo_nf_5_pdfas + PDF= 292213 NNPDF30_nlo_nf_5_pdfas + PDF= 292214 NNPDF30_nlo_nf_5_pdfas + PDF= 292215 NNPDF30_nlo_nf_5_pdfas + PDF= 292216 NNPDF30_nlo_nf_5_pdfas + PDF= 292217 NNPDF30_nlo_nf_5_pdfas + PDF= 292218 NNPDF30_nlo_nf_5_pdfas + PDF= 292219 NNPDF30_nlo_nf_5_pdfas + PDF= 292220 NNPDF30_nlo_nf_5_pdfas + PDF= 292221 NNPDF30_nlo_nf_5_pdfas + PDF= 292222 NNPDF30_nlo_nf_5_pdfas + PDF= 292223 NNPDF30_nlo_nf_5_pdfas + PDF= 292224 NNPDF30_nlo_nf_5_pdfas + PDF= 292225 NNPDF30_nlo_nf_5_pdfas + PDF= 292226 NNPDF30_nlo_nf_5_pdfas + PDF= 292227 NNPDF30_nlo_nf_5_pdfas + PDF= 292228 NNPDF30_nlo_nf_5_pdfas + PDF= 292229 NNPDF30_nlo_nf_5_pdfas + PDF= 292230 NNPDF30_nlo_nf_5_pdfas + PDF= 292231 NNPDF30_nlo_nf_5_pdfas + PDF= 292232 NNPDF30_nlo_nf_5_pdfas + PDF= 292233 NNPDF30_nlo_nf_5_pdfas + PDF= 292234 NNPDF30_nlo_nf_5_pdfas + PDF= 292235 NNPDF30_nlo_nf_5_pdfas + PDF= 292236 NNPDF30_nlo_nf_5_pdfas + PDF= 292237 NNPDF30_nlo_nf_5_pdfas + PDF= 292238 NNPDF30_nlo_nf_5_pdfas + PDF= 292239 NNPDF30_nlo_nf_5_pdfas + PDF= 292240 NNPDF30_nlo_nf_5_pdfas + PDF= 292241 NNPDF30_nlo_nf_5_pdfas + PDF= 292242 NNPDF30_nlo_nf_5_pdfas + PDF= 292243 NNPDF30_nlo_nf_5_pdfas + PDF= 292244 NNPDF30_nlo_nf_5_pdfas + PDF= 292245 NNPDF30_nlo_nf_5_pdfas + PDF= 292246 NNPDF30_nlo_nf_5_pdfas + PDF= 292247 NNPDF30_nlo_nf_5_pdfas + PDF= 292248 NNPDF30_nlo_nf_5_pdfas + PDF= 292249 NNPDF30_nlo_nf_5_pdfas + PDF= 292250 NNPDF30_nlo_nf_5_pdfas + PDF= 292251 NNPDF30_nlo_nf_5_pdfas + PDF= 292252 NNPDF30_nlo_nf_5_pdfas + PDF= 292253 NNPDF30_nlo_nf_5_pdfas + PDF= 292254 NNPDF30_nlo_nf_5_pdfas + PDF= 292255 NNPDF30_nlo_nf_5_pdfas + PDF= 292256 NNPDF30_nlo_nf_5_pdfas + PDF= 292257 NNPDF30_nlo_nf_5_pdfas + PDF= 292258 NNPDF30_nlo_nf_5_pdfas + PDF= 292259 NNPDF30_nlo_nf_5_pdfas + PDF= 292260 NNPDF30_nlo_nf_5_pdfas + PDF= 292261 NNPDF30_nlo_nf_5_pdfas + PDF= 292262 NNPDF30_nlo_nf_5_pdfas + PDF= 292263 NNPDF30_nlo_nf_5_pdfas + PDF= 292264 NNPDF30_nlo_nf_5_pdfas + PDF= 292265 NNPDF30_nlo_nf_5_pdfas + PDF= 292266 NNPDF30_nlo_nf_5_pdfas + PDF= 292267 NNPDF30_nlo_nf_5_pdfas + PDF= 292268 NNPDF30_nlo_nf_5_pdfas + PDF= 292269 NNPDF30_nlo_nf_5_pdfas + PDF= 292270 NNPDF30_nlo_nf_5_pdfas + PDF= 292271 NNPDF30_nlo_nf_5_pdfas + PDF= 292272 NNPDF30_nlo_nf_5_pdfas + PDF= 292273 NNPDF30_nlo_nf_5_pdfas + PDF= 292274 NNPDF30_nlo_nf_5_pdfas + PDF= 292275 NNPDF30_nlo_nf_5_pdfas + PDF= 292276 NNPDF30_nlo_nf_5_pdfas + PDF= 292277 NNPDF30_nlo_nf_5_pdfas + PDF= 292278 NNPDF30_nlo_nf_5_pdfas + PDF= 292279 NNPDF30_nlo_nf_5_pdfas + PDF= 292280 NNPDF30_nlo_nf_5_pdfas + PDF= 292281 NNPDF30_nlo_nf_5_pdfas + PDF= 292282 NNPDF30_nlo_nf_5_pdfas + PDF= 292283 NNPDF30_nlo_nf_5_pdfas + PDF= 292284 NNPDF30_nlo_nf_5_pdfas + PDF= 292285 NNPDF30_nlo_nf_5_pdfas + PDF= 292286 NNPDF30_nlo_nf_5_pdfas + PDF= 292287 NNPDF30_nlo_nf_5_pdfas + PDF= 292288 NNPDF30_nlo_nf_5_pdfas + PDF= 292289 NNPDF30_nlo_nf_5_pdfas + PDF= 292290 NNPDF30_nlo_nf_5_pdfas + PDF= 292291 NNPDF30_nlo_nf_5_pdfas + PDF= 292292 NNPDF30_nlo_nf_5_pdfas + PDF= 292293 NNPDF30_nlo_nf_5_pdfas + PDF= 292294 NNPDF30_nlo_nf_5_pdfas + PDF= 292295 NNPDF30_nlo_nf_5_pdfas + PDF= 292296 NNPDF30_nlo_nf_5_pdfas + PDF= 292297 NNPDF30_nlo_nf_5_pdfas + PDF= 292298 NNPDF30_nlo_nf_5_pdfas + PDF= 292299 NNPDF30_nlo_nf_5_pdfas + PDF= 292300 NNPDF30_nlo_nf_5_pdfas + PDF= 292301 NNPDF30_nlo_nf_5_pdfas + PDF= 292302 NNPDF30_nlo_nf_5_pdfas + + + PDF= 292600 NNPDF30_nnlo_nf_5_pdfas + + + PDF= 315000 NNPDF31_lo_as_0118 + + + PDF= 315200 NNPDF31_lo_as_0130 + + + PDF= 262000 NNPDF30_lo_as_0118 + + + PDF= 263000 NNPDF30_lo_as_0130 + + diff --git a/testFiles/VVV_2017_weight_info.txt b/testFiles/VVV_2017_weight_info.txt new file mode 100644 index 0000000000000..2e242bafc6b5c --- /dev/null +++ b/testFiles/VVV_2017_weight_info.txt @@ -0,0 +1,1358 @@ + + + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + # scale + # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian + + PDF=325500 MemberID=1 + PDF=325500 MemberID=2 + PDF=325500 MemberID=3 + PDF=325500 MemberID=4 + PDF=325500 MemberID=5 + PDF=325500 MemberID=6 + PDF=325500 MemberID=7 + PDF=325500 MemberID=8 + PDF=325500 MemberID=9 + PDF=325500 MemberID=10 + PDF=325500 MemberID=11 + PDF=325500 MemberID=12 + PDF=325500 MemberID=13 + PDF=325500 MemberID=14 + PDF=325500 MemberID=15 + PDF=325500 MemberID=16 + PDF=325500 MemberID=17 + PDF=325500 MemberID=18 + PDF=325500 MemberID=19 + PDF=325500 MemberID=20 + PDF=325500 MemberID=21 + PDF=325500 MemberID=22 + PDF=325500 MemberID=23 + PDF=325500 MemberID=24 + PDF=325500 MemberID=25 + PDF=325500 MemberID=26 + PDF=325500 MemberID=27 + PDF=325500 MemberID=28 + PDF=325500 MemberID=29 + PDF=325500 MemberID=30 + PDF=325500 MemberID=31 + PDF=325500 MemberID=32 + PDF=325500 MemberID=33 + PDF=325500 MemberID=34 + PDF=325500 MemberID=35 + PDF=325500 MemberID=36 + PDF=325500 MemberID=37 + PDF=325500 MemberID=38 + PDF=325500 MemberID=39 + PDF=325500 MemberID=40 + PDF=325500 MemberID=41 + PDF=325500 MemberID=42 + PDF=325500 MemberID=43 + PDF=325500 MemberID=44 + PDF=325500 MemberID=45 + PDF=325500 MemberID=46 + PDF=325500 MemberID=47 + PDF=325500 MemberID=48 + PDF=325500 MemberID=49 + PDF=325500 MemberID=50 + PDF=325500 MemberID=51 + PDF=325500 MemberID=52 + PDF=325500 MemberID=53 + PDF=325500 MemberID=54 + PDF=325500 MemberID=55 + PDF=325500 MemberID=56 + PDF=325500 MemberID=57 + PDF=325500 MemberID=58 + PDF=325500 MemberID=59 + PDF=325500 MemberID=60 + PDF=325500 MemberID=61 + PDF=325500 MemberID=62 + PDF=325500 MemberID=63 + PDF=325500 MemberID=64 + PDF=325500 MemberID=65 + PDF=325500 MemberID=66 + PDF=325500 MemberID=67 + PDF=325500 MemberID=68 + PDF=325500 MemberID=69 + PDF=325500 MemberID=70 + PDF=325500 MemberID=71 + PDF=325500 MemberID=72 + PDF=325500 MemberID=73 + PDF=325500 MemberID=74 + PDF=325500 MemberID=75 + PDF=325500 MemberID=76 + PDF=325500 MemberID=77 + PDF=325500 MemberID=78 + PDF=325500 MemberID=79 + PDF=325500 MemberID=80 + PDF=325500 MemberID=81 + PDF=325500 MemberID=82 + PDF=325500 MemberID=83 + PDF=325500 MemberID=84 + PDF=325500 MemberID=85 + PDF=325500 MemberID=86 + PDF=325500 MemberID=87 + PDF=325500 MemberID=88 + PDF=325500 MemberID=89 + PDF=325500 MemberID=90 + PDF=325500 MemberID=91 + PDF=325500 MemberID=92 + PDF=325500 MemberID=93 + PDF=325500 MemberID=94 + PDF=325500 MemberID=95 + PDF=325500 MemberID=96 + PDF=325500 MemberID=97 + PDF=325500 MemberID=98 + PDF=325500 MemberID=99 + PDF=325500 MemberID=100 + + + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 0.0 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 8e-12 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -3.2e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 -8e-12 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 8e-12 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 1.6e-11 # orig: 0.0 + +set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 +set param_card anoinputs 2 3.2e-11 # orig: 0.0 + + + # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian + + + PDF + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + # scale + + alpsfact=0.5 + alpsfact=2.0 + # ALPS + # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian + + PDF=325500 MemberID=1 + PDF=325500 MemberID=2 + PDF=325500 MemberID=3 + PDF=325500 MemberID=4 + PDF=325500 MemberID=5 + PDF=325500 MemberID=6 + PDF=325500 MemberID=7 + PDF=325500 MemberID=8 + PDF=325500 MemberID=9 + PDF=325500 MemberID=10 + PDF=325500 MemberID=11 + PDF=325500 MemberID=12 + PDF=325500 MemberID=13 + PDF=325500 MemberID=14 + PDF=325500 MemberID=15 + PDF=325500 MemberID=16 + PDF=325500 MemberID=17 + PDF=325500 MemberID=18 + PDF=325500 MemberID=19 + PDF=325500 MemberID=20 + PDF=325500 MemberID=21 + PDF=325500 MemberID=22 + PDF=325500 MemberID=23 + PDF=325500 MemberID=24 + PDF=325500 MemberID=25 + PDF=325500 MemberID=26 + PDF=325500 MemberID=27 + PDF=325500 MemberID=28 + PDF=325500 MemberID=29 + PDF=325500 MemberID=30 + PDF=325500 MemberID=31 + PDF=325500 MemberID=32 + PDF=325500 MemberID=33 + PDF=325500 MemberID=34 + PDF=325500 MemberID=35 + PDF=325500 MemberID=36 + PDF=325500 MemberID=37 + PDF=325500 MemberID=38 + PDF=325500 MemberID=39 + PDF=325500 MemberID=40 + PDF=325500 MemberID=41 + PDF=325500 MemberID=42 + PDF=325500 MemberID=43 + PDF=325500 MemberID=44 + PDF=325500 MemberID=45 + PDF=325500 MemberID=46 + PDF=325500 MemberID=47 + PDF=325500 MemberID=48 + PDF=325500 MemberID=49 + PDF=325500 MemberID=50 + PDF=325500 MemberID=51 + PDF=325500 MemberID=52 + PDF=325500 MemberID=53 + PDF=325500 MemberID=54 + PDF=325500 MemberID=55 + PDF=325500 MemberID=56 + PDF=325500 MemberID=57 + PDF=325500 MemberID=58 + PDF=325500 MemberID=59 + PDF=325500 MemberID=60 + PDF=325500 MemberID=61 + PDF=325500 MemberID=62 + PDF=325500 MemberID=63 + PDF=325500 MemberID=64 + PDF=325500 MemberID=65 + PDF=325500 MemberID=66 + PDF=325500 MemberID=67 + PDF=325500 MemberID=68 + PDF=325500 MemberID=69 + PDF=325500 MemberID=70 + PDF=325500 MemberID=71 + PDF=325500 MemberID=72 + PDF=325500 MemberID=73 + PDF=325500 MemberID=74 + PDF=325500 MemberID=75 + PDF=325500 MemberID=76 + PDF=325500 MemberID=77 + PDF=325500 MemberID=78 + PDF=325500 MemberID=79 + PDF=325500 MemberID=80 + PDF=325500 MemberID=81 + PDF=325500 MemberID=82 + PDF=325500 MemberID=83 + PDF=325500 MemberID=84 + PDF=325500 MemberID=85 + PDF=325500 MemberID=86 + PDF=325500 MemberID=87 + PDF=325500 MemberID=88 + PDF=325500 MemberID=89 + PDF=325500 MemberID=90 + PDF=325500 MemberID=91 + PDF=325500 MemberID=92 + PDF=325500 MemberID=93 + PDF=325500 MemberID=94 + PDF=325500 MemberID=95 + PDF=325500 MemberID=96 + PDF=325500 MemberID=97 + PDF=325500 MemberID=98 + PDF=325500 MemberID=99 + PDF=325500 MemberID=100 + # PDFSET -> PDFSET + # 320900: NNPDF3.1 NNLO global fit, nf=4. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + PDF=320900 MemberID=0 + PDF=320900 MemberID=1 + PDF=320900 MemberID=2 + PDF=320900 MemberID=3 + PDF=320900 MemberID=4 + PDF=320900 MemberID=5 + PDF=320900 MemberID=6 + PDF=320900 MemberID=7 + PDF=320900 MemberID=8 + PDF=320900 MemberID=9 + PDF=320900 MemberID=10 + PDF=320900 MemberID=11 + PDF=320900 MemberID=12 + PDF=320900 MemberID=13 + PDF=320900 MemberID=14 + PDF=320900 MemberID=15 + PDF=320900 MemberID=16 + PDF=320900 MemberID=17 + PDF=320900 MemberID=18 + PDF=320900 MemberID=19 + PDF=320900 MemberID=20 + PDF=320900 MemberID=21 + PDF=320900 MemberID=22 + PDF=320900 MemberID=23 + PDF=320900 MemberID=24 + PDF=320900 MemberID=25 + PDF=320900 MemberID=26 + PDF=320900 MemberID=27 + PDF=320900 MemberID=28 + PDF=320900 MemberID=29 + PDF=320900 MemberID=30 + PDF=320900 MemberID=31 + PDF=320900 MemberID=32 + PDF=320900 MemberID=33 + PDF=320900 MemberID=34 + PDF=320900 MemberID=35 + PDF=320900 MemberID=36 + PDF=320900 MemberID=37 + PDF=320900 MemberID=38 + PDF=320900 MemberID=39 + PDF=320900 MemberID=40 + PDF=320900 MemberID=41 + PDF=320900 MemberID=42 + PDF=320900 MemberID=43 + PDF=320900 MemberID=44 + PDF=320900 MemberID=45 + PDF=320900 MemberID=46 + PDF=320900 MemberID=47 + PDF=320900 MemberID=48 + PDF=320900 MemberID=49 + PDF=320900 MemberID=50 + PDF=320900 MemberID=51 + PDF=320900 MemberID=52 + PDF=320900 MemberID=53 + PDF=320900 MemberID=54 + PDF=320900 MemberID=55 + PDF=320900 MemberID=56 + PDF=320900 MemberID=57 + PDF=320900 MemberID=58 + PDF=320900 MemberID=59 + PDF=320900 MemberID=60 + PDF=320900 MemberID=61 + PDF=320900 MemberID=62 + PDF=320900 MemberID=63 + PDF=320900 MemberID=64 + PDF=320900 MemberID=65 + PDF=320900 MemberID=66 + PDF=320900 MemberID=67 + PDF=320900 MemberID=68 + PDF=320900 MemberID=69 + PDF=320900 MemberID=70 + PDF=320900 MemberID=71 + PDF=320900 MemberID=72 + PDF=320900 MemberID=73 + PDF=320900 MemberID=74 + PDF=320900 MemberID=75 + PDF=320900 MemberID=76 + PDF=320900 MemberID=77 + PDF=320900 MemberID=78 + PDF=320900 MemberID=79 + PDF=320900 MemberID=80 + PDF=320900 MemberID=81 + PDF=320900 MemberID=82 + PDF=320900 MemberID=83 + PDF=320900 MemberID=84 + PDF=320900 MemberID=85 + PDF=320900 MemberID=86 + PDF=320900 MemberID=87 + PDF=320900 MemberID=88 + PDF=320900 MemberID=89 + PDF=320900 MemberID=90 + PDF=320900 MemberID=91 + PDF=320900 MemberID=92 + PDF=320900 MemberID=93 + PDF=320900 MemberID=94 + PDF=320900 MemberID=95 + PDF=320900 MemberID=96 + PDF=320900 MemberID=97 + PDF=320900 MemberID=98 + PDF=320900 MemberID=99 + PDF=320900 MemberID=100 + # PDFSET -> PDFSET + # 11082: CT10 NLO PDF fixed 4-flavour fits using the standard CTEQ PDF evolution but using the HOPPET alphas_s running solution. NEW CT12 grid type. Excluding the D0 Run-II W asymmetry data. mem=0 ; mem=0 ; NF4 high scale Q=m_Z=91.190 GeV; mem=1 ; NF4 low scale Q=m_tau=1.778 GeV + PDF=11082 MemberID=0 + PDF=11082 MemberID=1 + # PDFSET -> PDF + PDF=13091 MemberID=0 + PDF=13191 MemberID=0 + PDF=13202 MemberID=0 + # 23100: MSTW 2008 LO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org + PDF=23100 MemberID=0 + PDF=23100 MemberID=1 + PDF=23100 MemberID=2 + PDF=23100 MemberID=3 + PDF=23100 MemberID=4 + PDF=23100 MemberID=5 + PDF=23100 MemberID=6 + PDF=23100 MemberID=7 + PDF=23100 MemberID=8 + PDF=23100 MemberID=9 + PDF=23100 MemberID=10 + PDF=23100 MemberID=11 + PDF=23100 MemberID=12 + PDF=23100 MemberID=13 + PDF=23100 MemberID=14 + PDF=23100 MemberID=15 + PDF=23100 MemberID=16 + PDF=23100 MemberID=17 + PDF=23100 MemberID=18 + PDF=23100 MemberID=19 + PDF=23100 MemberID=20 + PDF=23100 MemberID=21 + PDF=23100 MemberID=22 + PDF=23100 MemberID=23 + PDF=23100 MemberID=24 + PDF=23100 MemberID=25 + PDF=23100 MemberID=26 + PDF=23100 MemberID=27 + PDF=23100 MemberID=28 + PDF=23100 MemberID=29 + PDF=23100 MemberID=30 + PDF=23100 MemberID=31 + PDF=23100 MemberID=32 + PDF=23100 MemberID=33 + PDF=23100 MemberID=34 + PDF=23100 MemberID=35 + PDF=23100 MemberID=36 + PDF=23100 MemberID=37 + PDF=23100 MemberID=38 + PDF=23100 MemberID=39 + PDF=23100 MemberID=40 + # PDFSET -> PDFSET + # 23300: MSTW 2008 NLO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org + PDF=23300 MemberID=0 + PDF=23300 MemberID=1 + PDF=23300 MemberID=2 + PDF=23300 MemberID=3 + PDF=23300 MemberID=4 + PDF=23300 MemberID=5 + PDF=23300 MemberID=6 + PDF=23300 MemberID=7 + PDF=23300 MemberID=8 + PDF=23300 MemberID=9 + PDF=23300 MemberID=10 + PDF=23300 MemberID=11 + PDF=23300 MemberID=12 + PDF=23300 MemberID=13 + PDF=23300 MemberID=14 + PDF=23300 MemberID=15 + PDF=23300 MemberID=16 + PDF=23300 MemberID=17 + PDF=23300 MemberID=18 + PDF=23300 MemberID=19 + PDF=23300 MemberID=20 + PDF=23300 MemberID=21 + PDF=23300 MemberID=22 + PDF=23300 MemberID=23 + PDF=23300 MemberID=24 + PDF=23300 MemberID=25 + PDF=23300 MemberID=26 + PDF=23300 MemberID=27 + PDF=23300 MemberID=28 + PDF=23300 MemberID=29 + PDF=23300 MemberID=30 + PDF=23300 MemberID=31 + PDF=23300 MemberID=32 + PDF=23300 MemberID=33 + PDF=23300 MemberID=34 + PDF=23300 MemberID=35 + PDF=23300 MemberID=36 + PDF=23300 MemberID=37 + PDF=23300 MemberID=38 + PDF=23300 MemberID=39 + PDF=23300 MemberID=40 + # PDFSET -> PDFSET + # 23490: MSTW 2008 NLO (fits for range of m_b values, evolve with 4 flavours maximum). This set has 7 member PDFs. mem=0 ; default m_b = 4.75 GeV; mem=1-6 ; m_b = 4.00, 4.25, 4.50, 5.00, 5.25, 5.50 GeV. http://mstwpdf.hepforge.org + PDF=23490 MemberID=0 + PDF=23490 MemberID=1 + PDF=23490 MemberID=2 + PDF=23490 MemberID=3 + PDF=23490 MemberID=4 + PDF=23490 MemberID=5 + PDF=23490 MemberID=6 + # PDFSET -> PDFSET + # 23600: MSTW 2008 NNLO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org + PDF=23600 MemberID=0 + PDF=23600 MemberID=1 + PDF=23600 MemberID=2 + PDF=23600 MemberID=3 + PDF=23600 MemberID=4 + PDF=23600 MemberID=5 + PDF=23600 MemberID=6 + PDF=23600 MemberID=7 + PDF=23600 MemberID=8 + PDF=23600 MemberID=9 + PDF=23600 MemberID=10 + PDF=23600 MemberID=11 + PDF=23600 MemberID=12 + PDF=23600 MemberID=13 + PDF=23600 MemberID=14 + PDF=23600 MemberID=15 + PDF=23600 MemberID=16 + PDF=23600 MemberID=17 + PDF=23600 MemberID=18 + PDF=23600 MemberID=19 + PDF=23600 MemberID=20 + PDF=23600 MemberID=21 + PDF=23600 MemberID=22 + PDF=23600 MemberID=23 + PDF=23600 MemberID=24 + PDF=23600 MemberID=25 + PDF=23600 MemberID=26 + PDF=23600 MemberID=27 + PDF=23600 MemberID=28 + PDF=23600 MemberID=29 + PDF=23600 MemberID=30 + PDF=23600 MemberID=31 + PDF=23600 MemberID=32 + PDF=23600 MemberID=33 + PDF=23600 MemberID=34 + PDF=23600 MemberID=35 + PDF=23600 MemberID=36 + PDF=23600 MemberID=37 + PDF=23600 MemberID=38 + PDF=23600 MemberID=39 + PDF=23600 MemberID=40 + # PDFSET -> PDFSET + # 23790: MSTW 2008 NNLO (fits for range of m_b values, evolve with 4 flavours maximum). This set has 7 member PDFs. mem=0 ; default m_b = 4.75 GeV; mem=1-6 ; m_b = 4.00, 4.25, 4.50, 5.00, 5.25, 5.50 GeV. http://mstwpdf.hepforge.org + PDF=23790 MemberID=0 + PDF=23790 MemberID=1 + PDF=23790 MemberID=2 + PDF=23790 MemberID=3 + PDF=23790 MemberID=4 + PDF=23790 MemberID=5 + PDF=23790 MemberID=6 + # PDFSET -> PDFSET + # 25410: MMHT 2014 NLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht + PDF=25410 MemberID=0 + PDF=25410 MemberID=1 + PDF=25410 MemberID=2 + PDF=25410 MemberID=3 + PDF=25410 MemberID=4 + PDF=25410 MemberID=5 + PDF=25410 MemberID=6 + PDF=25410 MemberID=7 + PDF=25410 MemberID=8 + PDF=25410 MemberID=9 + PDF=25410 MemberID=10 + PDF=25410 MemberID=11 + PDF=25410 MemberID=12 + PDF=25410 MemberID=13 + PDF=25410 MemberID=14 + PDF=25410 MemberID=15 + PDF=25410 MemberID=16 + PDF=25410 MemberID=17 + PDF=25410 MemberID=18 + PDF=25410 MemberID=19 + PDF=25410 MemberID=20 + PDF=25410 MemberID=21 + PDF=25410 MemberID=22 + PDF=25410 MemberID=23 + PDF=25410 MemberID=24 + PDF=25410 MemberID=25 + PDF=25410 MemberID=26 + PDF=25410 MemberID=27 + PDF=25410 MemberID=28 + PDF=25410 MemberID=29 + PDF=25410 MemberID=30 + PDF=25410 MemberID=31 + PDF=25410 MemberID=32 + PDF=25410 MemberID=33 + PDF=25410 MemberID=34 + PDF=25410 MemberID=35 + PDF=25410 MemberID=36 + PDF=25410 MemberID=37 + PDF=25410 MemberID=38 + PDF=25410 MemberID=39 + PDF=25410 MemberID=40 + PDF=25410 MemberID=41 + PDF=25410 MemberID=42 + PDF=25410 MemberID=43 + PDF=25410 MemberID=44 + PDF=25410 MemberID=45 + PDF=25410 MemberID=46 + PDF=25410 MemberID=47 + PDF=25410 MemberID=48 + PDF=25410 MemberID=49 + PDF=25410 MemberID=50 + # PDFSET -> PDFSET + # 25510: MMHT 2014 NLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht + PDF=25510 MemberID=0 + PDF=25510 MemberID=1 + PDF=25510 MemberID=2 + PDF=25510 MemberID=3 + PDF=25510 MemberID=4 + PDF=25510 MemberID=5 + PDF=25510 MemberID=6 + PDF=25510 MemberID=7 + PDF=25510 MemberID=8 + PDF=25510 MemberID=9 + PDF=25510 MemberID=10 + PDF=25510 MemberID=11 + PDF=25510 MemberID=12 + PDF=25510 MemberID=13 + PDF=25510 MemberID=14 + PDF=25510 MemberID=15 + PDF=25510 MemberID=16 + PDF=25510 MemberID=17 + PDF=25510 MemberID=18 + PDF=25510 MemberID=19 + PDF=25510 MemberID=20 + PDF=25510 MemberID=21 + PDF=25510 MemberID=22 + PDF=25510 MemberID=23 + PDF=25510 MemberID=24 + PDF=25510 MemberID=25 + PDF=25510 MemberID=26 + PDF=25510 MemberID=27 + PDF=25510 MemberID=28 + PDF=25510 MemberID=29 + PDF=25510 MemberID=30 + PDF=25510 MemberID=31 + PDF=25510 MemberID=32 + PDF=25510 MemberID=33 + PDF=25510 MemberID=34 + PDF=25510 MemberID=35 + PDF=25510 MemberID=36 + PDF=25510 MemberID=37 + PDF=25510 MemberID=38 + PDF=25510 MemberID=39 + PDF=25510 MemberID=40 + PDF=25510 MemberID=41 + PDF=25510 MemberID=42 + PDF=25510 MemberID=43 + PDF=25510 MemberID=44 + PDF=25510 MemberID=45 + PDF=25510 MemberID=46 + PDF=25510 MemberID=47 + PDF=25510 MemberID=48 + PDF=25510 MemberID=49 + PDF=25510 MemberID=50 + # PDFSET -> PDFSET + # 25570: MMHT 2014 NLO (fits for range of alpha_S values, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. best-fit alpha_S(M_Z) = 0.120; mem=1-4 --.gt. alpha_S(M_Z) = 0.117,...,0.121. Website: www.hep.ucl.ac.uk/mmht + PDF=25570 MemberID=0 + PDF=25570 MemberID=1 + PDF=25570 MemberID=2 + PDF=25570 MemberID=3 + PDF=25570 MemberID=4 + # PDFSET -> PDFSET + # 25605: MMHT 2014 NLO (range of mc, evolve with 4 flavours maximum). This set has 9 member PDFs. mem=0 --.gt. default mc = 1.40 GeV; mem=1-8 --.gt. mc = 1.15 - 1.55 GeV in steps of 0.05 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25605 MemberID=0 + PDF=25605 MemberID=1 + PDF=25605 MemberID=2 + PDF=25605 MemberID=3 + PDF=25605 MemberID=4 + PDF=25605 MemberID=5 + PDF=25605 MemberID=6 + PDF=25605 MemberID=7 + PDF=25605 MemberID=8 + # PDFSET -> PDFSET + # 25620: MMHT 2014 NLO (range of mb, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. default mb = 4.75 GeV; mem=1-4 --.gt. mb = 4.25 - 5.25 GeV in steps of 0.25 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25620 MemberID=0 + PDF=25620 MemberID=1 + PDF=25620 MemberID=2 + PDF=25620 MemberID=3 + PDF=25620 MemberID=4 + # PDFSET -> PDFSET + # 25710: MMHT 2014 NNLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht + PDF=25710 MemberID=0 + PDF=25710 MemberID=1 + PDF=25710 MemberID=2 + PDF=25710 MemberID=3 + PDF=25710 MemberID=4 + PDF=25710 MemberID=5 + PDF=25710 MemberID=6 + PDF=25710 MemberID=7 + PDF=25710 MemberID=8 + PDF=25710 MemberID=9 + PDF=25710 MemberID=10 + PDF=25710 MemberID=11 + PDF=25710 MemberID=12 + PDF=25710 MemberID=13 + PDF=25710 MemberID=14 + PDF=25710 MemberID=15 + PDF=25710 MemberID=16 + PDF=25710 MemberID=17 + PDF=25710 MemberID=18 + PDF=25710 MemberID=19 + PDF=25710 MemberID=20 + PDF=25710 MemberID=21 + PDF=25710 MemberID=22 + PDF=25710 MemberID=23 + PDF=25710 MemberID=24 + PDF=25710 MemberID=25 + PDF=25710 MemberID=26 + PDF=25710 MemberID=27 + PDF=25710 MemberID=28 + PDF=25710 MemberID=29 + PDF=25710 MemberID=30 + PDF=25710 MemberID=31 + PDF=25710 MemberID=32 + PDF=25710 MemberID=33 + PDF=25710 MemberID=34 + PDF=25710 MemberID=35 + PDF=25710 MemberID=36 + PDF=25710 MemberID=37 + PDF=25710 MemberID=38 + PDF=25710 MemberID=39 + PDF=25710 MemberID=40 + PDF=25710 MemberID=41 + PDF=25710 MemberID=42 + PDF=25710 MemberID=43 + PDF=25710 MemberID=44 + PDF=25710 MemberID=45 + PDF=25710 MemberID=46 + PDF=25710 MemberID=47 + PDF=25710 MemberID=48 + PDF=25710 MemberID=49 + PDF=25710 MemberID=50 + # PDFSET -> PDFSET + # 25770: MMHT 2014 NNLO (fits for range of alpha_S values, evolve with 4 flavours maximum). This set has 3 member PDFs. mem=0 --.gt. best-fit alpha_S(M_Z) = 0.118; mem=1-2 --.gt. alpha_S(M_Z) = 0.117, 0.119. Website: www.hep.ucl.ac.uk/mmht + PDF=25770 MemberID=0 + PDF=25770 MemberID=1 + PDF=25770 MemberID=2 + # PDFSET -> PDFSET + # 25805: MMHT 2014 NNLO (range of mc, evolve with 4 flavours maximum). This set has 9 member PDFs. mem=0 --.gt. default mc = 1.40 GeV; mem=1-8 --.gt. mc = 1.15 - 1.55 GeV in steps of 0.05 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25805 MemberID=0 + PDF=25805 MemberID=1 + PDF=25805 MemberID=2 + PDF=25805 MemberID=3 + PDF=25805 MemberID=4 + PDF=25805 MemberID=5 + PDF=25805 MemberID=6 + PDF=25805 MemberID=7 + PDF=25805 MemberID=8 + # PDFSET -> PDFSET + # 25840: MMHT 2014 NNLO (range of mb, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. default mb = 4.75 GeV; mem=1-4 --.gt. mb = 4.25 - 5.25 GeV in steps of 0.25 GeV. Website: www.hep.ucl.ac.uk/mmht + PDF=25840 MemberID=0 + PDF=25840 MemberID=1 + PDF=25840 MemberID=2 + PDF=25840 MemberID=3 + PDF=25840 MemberID=4 + # PDFSET -> PDFSET + # 92000: PDF4LHC15_nlo_nf4_30, alphas(MZ)=0.1126, mem=0 ; central value; mem=1-30 ; PDF symmetric eigenvectors + PDF=92000 MemberID=0 + PDF=92000 MemberID=1 + PDF=92000 MemberID=2 + PDF=92000 MemberID=3 + PDF=92000 MemberID=4 + PDF=92000 MemberID=5 + PDF=92000 MemberID=6 + PDF=92000 MemberID=7 + PDF=92000 MemberID=8 + PDF=92000 MemberID=9 + PDF=92000 MemberID=10 + PDF=92000 MemberID=11 + PDF=92000 MemberID=12 + PDF=92000 MemberID=13 + PDF=92000 MemberID=14 + PDF=92000 MemberID=15 + PDF=92000 MemberID=16 + PDF=92000 MemberID=17 + PDF=92000 MemberID=18 + PDF=92000 MemberID=19 + PDF=92000 MemberID=20 + PDF=92000 MemberID=21 + PDF=92000 MemberID=22 + PDF=92000 MemberID=23 + PDF=92000 MemberID=24 + PDF=92000 MemberID=25 + PDF=92000 MemberID=26 + PDF=92000 MemberID=27 + PDF=92000 MemberID=28 + PDF=92000 MemberID=29 + PDF=92000 MemberID=30 + # PDFSET -> PDFSET + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + PDF=306000 MemberID=0 + PDF=306000 MemberID=1 + PDF=306000 MemberID=2 + PDF=306000 MemberID=3 + PDF=306000 MemberID=4 + PDF=306000 MemberID=5 + PDF=306000 MemberID=6 + PDF=306000 MemberID=7 + PDF=306000 MemberID=8 + PDF=306000 MemberID=9 + PDF=306000 MemberID=10 + PDF=306000 MemberID=11 + PDF=306000 MemberID=12 + PDF=306000 MemberID=13 + PDF=306000 MemberID=14 + PDF=306000 MemberID=15 + PDF=306000 MemberID=16 + PDF=306000 MemberID=17 + PDF=306000 MemberID=18 + PDF=306000 MemberID=19 + PDF=306000 MemberID=20 + PDF=306000 MemberID=21 + PDF=306000 MemberID=22 + PDF=306000 MemberID=23 + PDF=306000 MemberID=24 + PDF=306000 MemberID=25 + PDF=306000 MemberID=26 + PDF=306000 MemberID=27 + PDF=306000 MemberID=28 + PDF=306000 MemberID=29 + PDF=306000 MemberID=30 + PDF=306000 MemberID=31 + PDF=306000 MemberID=32 + PDF=306000 MemberID=33 + PDF=306000 MemberID=34 + PDF=306000 MemberID=35 + PDF=306000 MemberID=36 + PDF=306000 MemberID=37 + PDF=306000 MemberID=38 + PDF=306000 MemberID=39 + PDF=306000 MemberID=40 + PDF=306000 MemberID=41 + PDF=306000 MemberID=42 + PDF=306000 MemberID=43 + PDF=306000 MemberID=44 + PDF=306000 MemberID=45 + PDF=306000 MemberID=46 + PDF=306000 MemberID=47 + PDF=306000 MemberID=48 + PDF=306000 MemberID=49 + PDF=306000 MemberID=50 + PDF=306000 MemberID=51 + PDF=306000 MemberID=52 + PDF=306000 MemberID=53 + PDF=306000 MemberID=54 + PDF=306000 MemberID=55 + PDF=306000 MemberID=56 + PDF=306000 MemberID=57 + PDF=306000 MemberID=58 + PDF=306000 MemberID=59 + PDF=306000 MemberID=60 + PDF=306000 MemberID=61 + PDF=306000 MemberID=62 + PDF=306000 MemberID=63 + PDF=306000 MemberID=64 + PDF=306000 MemberID=65 + PDF=306000 MemberID=66 + PDF=306000 MemberID=67 + PDF=306000 MemberID=68 + PDF=306000 MemberID=69 + PDF=306000 MemberID=70 + PDF=306000 MemberID=71 + PDF=306000 MemberID=72 + PDF=306000 MemberID=73 + PDF=306000 MemberID=74 + PDF=306000 MemberID=75 + PDF=306000 MemberID=76 + PDF=306000 MemberID=77 + PDF=306000 MemberID=78 + PDF=306000 MemberID=79 + PDF=306000 MemberID=80 + PDF=306000 MemberID=81 + PDF=306000 MemberID=82 + PDF=306000 MemberID=83 + PDF=306000 MemberID=84 + PDF=306000 MemberID=85 + PDF=306000 MemberID=86 + PDF=306000 MemberID=87 + PDF=306000 MemberID=88 + PDF=306000 MemberID=89 + PDF=306000 MemberID=90 + PDF=306000 MemberID=91 + PDF=306000 MemberID=92 + PDF=306000 MemberID=93 + PDF=306000 MemberID=94 + PDF=306000 MemberID=95 + PDF=306000 MemberID=96 + PDF=306000 MemberID=97 + PDF=306000 MemberID=98 + PDF=306000 MemberID=99 + PDF=306000 MemberID=100 + PDF=306000 MemberID=101 + PDF=306000 MemberID=102 + # PDFSET -> PDFSET + # 320500: NNPDF3.1 NLO global fit, nf=4. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + PDF=320500 MemberID=0 + PDF=320500 MemberID=1 + PDF=320500 MemberID=2 + PDF=320500 MemberID=3 + PDF=320500 MemberID=4 + PDF=320500 MemberID=5 + PDF=320500 MemberID=6 + PDF=320500 MemberID=7 + PDF=320500 MemberID=8 + PDF=320500 MemberID=9 + PDF=320500 MemberID=10 + PDF=320500 MemberID=11 + PDF=320500 MemberID=12 + PDF=320500 MemberID=13 + PDF=320500 MemberID=14 + PDF=320500 MemberID=15 + PDF=320500 MemberID=16 + PDF=320500 MemberID=17 + PDF=320500 MemberID=18 + PDF=320500 MemberID=19 + PDF=320500 MemberID=20 + PDF=320500 MemberID=21 + PDF=320500 MemberID=22 + PDF=320500 MemberID=23 + PDF=320500 MemberID=24 + PDF=320500 MemberID=25 + PDF=320500 MemberID=26 + PDF=320500 MemberID=27 + PDF=320500 MemberID=28 + PDF=320500 MemberID=29 + PDF=320500 MemberID=30 + PDF=320500 MemberID=31 + PDF=320500 MemberID=32 + PDF=320500 MemberID=33 + PDF=320500 MemberID=34 + PDF=320500 MemberID=35 + PDF=320500 MemberID=36 + PDF=320500 MemberID=37 + PDF=320500 MemberID=38 + PDF=320500 MemberID=39 + PDF=320500 MemberID=40 + PDF=320500 MemberID=41 + PDF=320500 MemberID=42 + PDF=320500 MemberID=43 + PDF=320500 MemberID=44 + PDF=320500 MemberID=45 + PDF=320500 MemberID=46 + PDF=320500 MemberID=47 + PDF=320500 MemberID=48 + PDF=320500 MemberID=49 + PDF=320500 MemberID=50 + PDF=320500 MemberID=51 + PDF=320500 MemberID=52 + PDF=320500 MemberID=53 + PDF=320500 MemberID=54 + PDF=320500 MemberID=55 + PDF=320500 MemberID=56 + PDF=320500 MemberID=57 + PDF=320500 MemberID=58 + PDF=320500 MemberID=59 + PDF=320500 MemberID=60 + PDF=320500 MemberID=61 + PDF=320500 MemberID=62 + PDF=320500 MemberID=63 + PDF=320500 MemberID=64 + PDF=320500 MemberID=65 + PDF=320500 MemberID=66 + PDF=320500 MemberID=67 + PDF=320500 MemberID=68 + PDF=320500 MemberID=69 + PDF=320500 MemberID=70 + PDF=320500 MemberID=71 + PDF=320500 MemberID=72 + PDF=320500 MemberID=73 + PDF=320500 MemberID=74 + PDF=320500 MemberID=75 + PDF=320500 MemberID=76 + PDF=320500 MemberID=77 + PDF=320500 MemberID=78 + PDF=320500 MemberID=79 + PDF=320500 MemberID=80 + PDF=320500 MemberID=81 + PDF=320500 MemberID=82 + PDF=320500 MemberID=83 + PDF=320500 MemberID=84 + PDF=320500 MemberID=85 + PDF=320500 MemberID=86 + PDF=320500 MemberID=87 + PDF=320500 MemberID=88 + PDF=320500 MemberID=89 + PDF=320500 MemberID=90 + PDF=320500 MemberID=91 + PDF=320500 MemberID=92 + PDF=320500 MemberID=93 + PDF=320500 MemberID=94 + PDF=320500 MemberID=95 + PDF=320500 MemberID=96 + PDF=320500 MemberID=97 + PDF=320500 MemberID=98 + PDF=320500 MemberID=99 + PDF=320500 MemberID=100 + # PDFSET -> PDFSET + # 260400: NNPDF3.0 NLO global fit, alphas(mb)=0.22278. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + PDF=260400 MemberID=0 + PDF=260400 MemberID=1 + PDF=260400 MemberID=2 + PDF=260400 MemberID=3 + PDF=260400 MemberID=4 + PDF=260400 MemberID=5 + PDF=260400 MemberID=6 + PDF=260400 MemberID=7 + PDF=260400 MemberID=8 + PDF=260400 MemberID=9 + PDF=260400 MemberID=10 + PDF=260400 MemberID=11 + PDF=260400 MemberID=12 + PDF=260400 MemberID=13 + PDF=260400 MemberID=14 + PDF=260400 MemberID=15 + PDF=260400 MemberID=16 + PDF=260400 MemberID=17 + PDF=260400 MemberID=18 + PDF=260400 MemberID=19 + PDF=260400 MemberID=20 + PDF=260400 MemberID=21 + PDF=260400 MemberID=22 + PDF=260400 MemberID=23 + PDF=260400 MemberID=24 + PDF=260400 MemberID=25 + PDF=260400 MemberID=26 + PDF=260400 MemberID=27 + PDF=260400 MemberID=28 + PDF=260400 MemberID=29 + PDF=260400 MemberID=30 + PDF=260400 MemberID=31 + PDF=260400 MemberID=32 + PDF=260400 MemberID=33 + PDF=260400 MemberID=34 + PDF=260400 MemberID=35 + PDF=260400 MemberID=36 + PDF=260400 MemberID=37 + PDF=260400 MemberID=38 + PDF=260400 MemberID=39 + PDF=260400 MemberID=40 + PDF=260400 MemberID=41 + PDF=260400 MemberID=42 + PDF=260400 MemberID=43 + PDF=260400 MemberID=44 + PDF=260400 MemberID=45 + PDF=260400 MemberID=46 + PDF=260400 MemberID=47 + PDF=260400 MemberID=48 + PDF=260400 MemberID=49 + PDF=260400 MemberID=50 + PDF=260400 MemberID=51 + PDF=260400 MemberID=52 + PDF=260400 MemberID=53 + PDF=260400 MemberID=54 + PDF=260400 MemberID=55 + PDF=260400 MemberID=56 + PDF=260400 MemberID=57 + PDF=260400 MemberID=58 + PDF=260400 MemberID=59 + PDF=260400 MemberID=60 + PDF=260400 MemberID=61 + PDF=260400 MemberID=62 + PDF=260400 MemberID=63 + PDF=260400 MemberID=64 + PDF=260400 MemberID=65 + PDF=260400 MemberID=66 + PDF=260400 MemberID=67 + PDF=260400 MemberID=68 + PDF=260400 MemberID=69 + PDF=260400 MemberID=70 + PDF=260400 MemberID=71 + PDF=260400 MemberID=72 + PDF=260400 MemberID=73 + PDF=260400 MemberID=74 + PDF=260400 MemberID=75 + PDF=260400 MemberID=76 + PDF=260400 MemberID=77 + PDF=260400 MemberID=78 + PDF=260400 MemberID=79 + PDF=260400 MemberID=80 + PDF=260400 MemberID=81 + PDF=260400 MemberID=82 + PDF=260400 MemberID=83 + PDF=260400 MemberID=84 + PDF=260400 MemberID=85 + PDF=260400 MemberID=86 + PDF=260400 MemberID=87 + PDF=260400 MemberID=88 + PDF=260400 MemberID=89 + PDF=260400 MemberID=90 + PDF=260400 MemberID=91 + PDF=260400 MemberID=92 + PDF=260400 MemberID=93 + PDF=260400 MemberID=94 + PDF=260400 MemberID=95 + PDF=260400 MemberID=96 + PDF=260400 MemberID=97 + PDF=260400 MemberID=98 + PDF=260400 MemberID=99 + PDF=260400 MemberID=100 + # PDFSET -> PDF + PDF=262400 MemberID=0 + PDF=263400 MemberID=0 + # 292000: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119; maximum number of active flavors NF=4 + PDF=292000 MemberID=0 + PDF=292000 MemberID=1 + PDF=292000 MemberID=2 + PDF=292000 MemberID=3 + PDF=292000 MemberID=4 + PDF=292000 MemberID=5 + PDF=292000 MemberID=6 + PDF=292000 MemberID=7 + PDF=292000 MemberID=8 + PDF=292000 MemberID=9 + PDF=292000 MemberID=10 + PDF=292000 MemberID=11 + PDF=292000 MemberID=12 + PDF=292000 MemberID=13 + PDF=292000 MemberID=14 + PDF=292000 MemberID=15 + PDF=292000 MemberID=16 + PDF=292000 MemberID=17 + PDF=292000 MemberID=18 + PDF=292000 MemberID=19 + PDF=292000 MemberID=20 + PDF=292000 MemberID=21 + PDF=292000 MemberID=22 + PDF=292000 MemberID=23 + PDF=292000 MemberID=24 + PDF=292000 MemberID=25 + PDF=292000 MemberID=26 + PDF=292000 MemberID=27 + PDF=292000 MemberID=28 + PDF=292000 MemberID=29 + PDF=292000 MemberID=30 + PDF=292000 MemberID=31 + PDF=292000 MemberID=32 + PDF=292000 MemberID=33 + PDF=292000 MemberID=34 + PDF=292000 MemberID=35 + PDF=292000 MemberID=36 + PDF=292000 MemberID=37 + PDF=292000 MemberID=38 + PDF=292000 MemberID=39 + PDF=292000 MemberID=40 + PDF=292000 MemberID=41 + PDF=292000 MemberID=42 + PDF=292000 MemberID=43 + PDF=292000 MemberID=44 + PDF=292000 MemberID=45 + PDF=292000 MemberID=46 + PDF=292000 MemberID=47 + PDF=292000 MemberID=48 + PDF=292000 MemberID=49 + PDF=292000 MemberID=50 + PDF=292000 MemberID=51 + PDF=292000 MemberID=52 + PDF=292000 MemberID=53 + PDF=292000 MemberID=54 + PDF=292000 MemberID=55 + PDF=292000 MemberID=56 + PDF=292000 MemberID=57 + PDF=292000 MemberID=58 + PDF=292000 MemberID=59 + PDF=292000 MemberID=60 + PDF=292000 MemberID=61 + PDF=292000 MemberID=62 + PDF=292000 MemberID=63 + PDF=292000 MemberID=64 + PDF=292000 MemberID=65 + PDF=292000 MemberID=66 + PDF=292000 MemberID=67 + PDF=292000 MemberID=68 + PDF=292000 MemberID=69 + PDF=292000 MemberID=70 + PDF=292000 MemberID=71 + PDF=292000 MemberID=72 + PDF=292000 MemberID=73 + PDF=292000 MemberID=74 + PDF=292000 MemberID=75 + PDF=292000 MemberID=76 + PDF=292000 MemberID=77 + PDF=292000 MemberID=78 + PDF=292000 MemberID=79 + PDF=292000 MemberID=80 + PDF=292000 MemberID=81 + PDF=292000 MemberID=82 + PDF=292000 MemberID=83 + PDF=292000 MemberID=84 + PDF=292000 MemberID=85 + PDF=292000 MemberID=86 + PDF=292000 MemberID=87 + PDF=292000 MemberID=88 + PDF=292000 MemberID=89 + PDF=292000 MemberID=90 + PDF=292000 MemberID=91 + PDF=292000 MemberID=92 + PDF=292000 MemberID=93 + PDF=292000 MemberID=94 + PDF=292000 MemberID=95 + PDF=292000 MemberID=96 + PDF=292000 MemberID=97 + PDF=292000 MemberID=98 + PDF=292000 MemberID=99 + PDF=292000 MemberID=100 + PDF=292000 MemberID=101 + PDF=292000 MemberID=102 + # PDFSET -> PDF + PDF=292400 MemberID=0 + diff --git a/testFiles/W1jet_260_simplescale_weight_info.txt b/testFiles/W1jet_260_simplescale_weight_info.txt new file mode 100644 index 0000000000000..ec48a9642f46c --- /dev/null +++ b/testFiles/W1jet_260_simplescale_weight_info.txt @@ -0,0 +1,1149 @@ + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + PDF + + MUR=2.0 + MUR=0.5 + MUF=2.0 + MUR=2.0 MUF=2.0 + MUR=0.5 MUF=2.0 + MUF=0.5 + MUR=2.0 MUF=0.5 + MUR=0.5 MUF=0.5 + # scale + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + PDF=306000 MemberID=1 + PDF=306000 MemberID=2 + PDF=306000 MemberID=3 + PDF=306000 MemberID=4 + PDF=306000 MemberID=5 + PDF=306000 MemberID=6 + PDF=306000 MemberID=7 + PDF=306000 MemberID=8 + PDF=306000 MemberID=9 + PDF=306000 MemberID=10 + PDF=306000 MemberID=11 + PDF=306000 MemberID=12 + PDF=306000 MemberID=13 + PDF=306000 MemberID=14 + PDF=306000 MemberID=15 + PDF=306000 MemberID=16 + PDF=306000 MemberID=17 + PDF=306000 MemberID=18 + PDF=306000 MemberID=19 + PDF=306000 MemberID=20 + PDF=306000 MemberID=21 + PDF=306000 MemberID=22 + PDF=306000 MemberID=23 + PDF=306000 MemberID=24 + PDF=306000 MemberID=25 + PDF=306000 MemberID=26 + PDF=306000 MemberID=27 + PDF=306000 MemberID=28 + PDF=306000 MemberID=29 + PDF=306000 MemberID=30 + PDF=306000 MemberID=31 + PDF=306000 MemberID=32 + PDF=306000 MemberID=33 + PDF=306000 MemberID=34 + PDF=306000 MemberID=35 + PDF=306000 MemberID=36 + PDF=306000 MemberID=37 + PDF=306000 MemberID=38 + PDF=306000 MemberID=39 + PDF=306000 MemberID=40 + PDF=306000 MemberID=41 + PDF=306000 MemberID=42 + PDF=306000 MemberID=43 + PDF=306000 MemberID=44 + PDF=306000 MemberID=45 + PDF=306000 MemberID=46 + PDF=306000 MemberID=47 + PDF=306000 MemberID=48 + PDF=306000 MemberID=49 + PDF=306000 MemberID=50 + PDF=306000 MemberID=51 + PDF=306000 MemberID=52 + PDF=306000 MemberID=53 + PDF=306000 MemberID=54 + PDF=306000 MemberID=55 + PDF=306000 MemberID=56 + PDF=306000 MemberID=57 + PDF=306000 MemberID=58 + PDF=306000 MemberID=59 + PDF=306000 MemberID=60 + PDF=306000 MemberID=61 + PDF=306000 MemberID=62 + PDF=306000 MemberID=63 + PDF=306000 MemberID=64 + PDF=306000 MemberID=65 + PDF=306000 MemberID=66 + PDF=306000 MemberID=67 + PDF=306000 MemberID=68 + PDF=306000 MemberID=69 + PDF=306000 MemberID=70 + PDF=306000 MemberID=71 + PDF=306000 MemberID=72 + PDF=306000 MemberID=73 + PDF=306000 MemberID=74 + PDF=306000 MemberID=75 + PDF=306000 MemberID=76 + PDF=306000 MemberID=77 + PDF=306000 MemberID=78 + PDF=306000 MemberID=79 + PDF=306000 MemberID=80 + PDF=306000 MemberID=81 + PDF=306000 MemberID=82 + PDF=306000 MemberID=83 + PDF=306000 MemberID=84 + PDF=306000 MemberID=85 + PDF=306000 MemberID=86 + PDF=306000 MemberID=87 + PDF=306000 MemberID=88 + PDF=306000 MemberID=89 + PDF=306000 MemberID=90 + PDF=306000 MemberID=91 + PDF=306000 MemberID=92 + PDF=306000 MemberID=93 + PDF=306000 MemberID=94 + PDF=306000 MemberID=95 + PDF=306000 MemberID=96 + PDF=306000 MemberID=97 + PDF=306000 MemberID=98 + PDF=306000 MemberID=99 + PDF=306000 MemberID=100 + PDF=306000 MemberID=101 + PDF=306000 MemberID=102 + # PDFSET -> PDF + PDF=322500 MemberID=0 + PDF=322700 MemberID=0 + PDF=322900 MemberID=0 + PDF=323100 MemberID=0 + PDF=323300 MemberID=0 + PDF=323500 MemberID=0 + PDF=323700 MemberID=0 + PDF=323900 MemberID=0 + # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + PDF=305800 MemberID=0 + PDF=305800 MemberID=1 + PDF=305800 MemberID=2 + PDF=305800 MemberID=3 + PDF=305800 MemberID=4 + PDF=305800 MemberID=5 + PDF=305800 MemberID=6 + PDF=305800 MemberID=7 + PDF=305800 MemberID=8 + PDF=305800 MemberID=9 + PDF=305800 MemberID=10 + PDF=305800 MemberID=11 + PDF=305800 MemberID=12 + PDF=305800 MemberID=13 + PDF=305800 MemberID=14 + PDF=305800 MemberID=15 + PDF=305800 MemberID=16 + PDF=305800 MemberID=17 + PDF=305800 MemberID=18 + PDF=305800 MemberID=19 + PDF=305800 MemberID=20 + PDF=305800 MemberID=21 + PDF=305800 MemberID=22 + PDF=305800 MemberID=23 + PDF=305800 MemberID=24 + PDF=305800 MemberID=25 + PDF=305800 MemberID=26 + PDF=305800 MemberID=27 + PDF=305800 MemberID=28 + PDF=305800 MemberID=29 + PDF=305800 MemberID=30 + PDF=305800 MemberID=31 + PDF=305800 MemberID=32 + PDF=305800 MemberID=33 + PDF=305800 MemberID=34 + PDF=305800 MemberID=35 + PDF=305800 MemberID=36 + PDF=305800 MemberID=37 + PDF=305800 MemberID=38 + PDF=305800 MemberID=39 + PDF=305800 MemberID=40 + PDF=305800 MemberID=41 + PDF=305800 MemberID=42 + PDF=305800 MemberID=43 + PDF=305800 MemberID=44 + PDF=305800 MemberID=45 + PDF=305800 MemberID=46 + PDF=305800 MemberID=47 + PDF=305800 MemberID=48 + PDF=305800 MemberID=49 + PDF=305800 MemberID=50 + PDF=305800 MemberID=51 + PDF=305800 MemberID=52 + PDF=305800 MemberID=53 + PDF=305800 MemberID=54 + PDF=305800 MemberID=55 + PDF=305800 MemberID=56 + PDF=305800 MemberID=57 + PDF=305800 MemberID=58 + PDF=305800 MemberID=59 + PDF=305800 MemberID=60 + PDF=305800 MemberID=61 + PDF=305800 MemberID=62 + PDF=305800 MemberID=63 + PDF=305800 MemberID=64 + PDF=305800 MemberID=65 + PDF=305800 MemberID=66 + PDF=305800 MemberID=67 + PDF=305800 MemberID=68 + PDF=305800 MemberID=69 + PDF=305800 MemberID=70 + PDF=305800 MemberID=71 + PDF=305800 MemberID=72 + PDF=305800 MemberID=73 + PDF=305800 MemberID=74 + PDF=305800 MemberID=75 + PDF=305800 MemberID=76 + PDF=305800 MemberID=77 + PDF=305800 MemberID=78 + PDF=305800 MemberID=79 + PDF=305800 MemberID=80 + PDF=305800 MemberID=81 + PDF=305800 MemberID=82 + PDF=305800 MemberID=83 + PDF=305800 MemberID=84 + PDF=305800 MemberID=85 + PDF=305800 MemberID=86 + PDF=305800 MemberID=87 + PDF=305800 MemberID=88 + PDF=305800 MemberID=89 + PDF=305800 MemberID=90 + PDF=305800 MemberID=91 + PDF=305800 MemberID=92 + PDF=305800 MemberID=93 + PDF=305800 MemberID=94 + PDF=305800 MemberID=95 + PDF=305800 MemberID=96 + PDF=305800 MemberID=97 + PDF=305800 MemberID=98 + PDF=305800 MemberID=99 + PDF=305800 MemberID=100 + PDF=305800 MemberID=101 + PDF=305800 MemberID=102 + # PDFSET -> PDFSET + # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13000 MemberID=0 + PDF=13000 MemberID=1 + PDF=13000 MemberID=2 + PDF=13000 MemberID=3 + PDF=13000 MemberID=4 + PDF=13000 MemberID=5 + PDF=13000 MemberID=6 + PDF=13000 MemberID=7 + PDF=13000 MemberID=8 + PDF=13000 MemberID=9 + PDF=13000 MemberID=10 + PDF=13000 MemberID=11 + PDF=13000 MemberID=12 + PDF=13000 MemberID=13 + PDF=13000 MemberID=14 + PDF=13000 MemberID=15 + PDF=13000 MemberID=16 + PDF=13000 MemberID=17 + PDF=13000 MemberID=18 + PDF=13000 MemberID=19 + PDF=13000 MemberID=20 + PDF=13000 MemberID=21 + PDF=13000 MemberID=22 + PDF=13000 MemberID=23 + PDF=13000 MemberID=24 + PDF=13000 MemberID=25 + PDF=13000 MemberID=26 + PDF=13000 MemberID=27 + PDF=13000 MemberID=28 + PDF=13000 MemberID=29 + PDF=13000 MemberID=30 + PDF=13000 MemberID=31 + PDF=13000 MemberID=32 + PDF=13000 MemberID=33 + PDF=13000 MemberID=34 + PDF=13000 MemberID=35 + PDF=13000 MemberID=36 + PDF=13000 MemberID=37 + PDF=13000 MemberID=38 + PDF=13000 MemberID=39 + PDF=13000 MemberID=40 + PDF=13000 MemberID=41 + PDF=13000 MemberID=42 + PDF=13000 MemberID=43 + PDF=13000 MemberID=44 + PDF=13000 MemberID=45 + PDF=13000 MemberID=46 + PDF=13000 MemberID=47 + PDF=13000 MemberID=48 + PDF=13000 MemberID=49 + PDF=13000 MemberID=50 + PDF=13000 MemberID=51 + PDF=13000 MemberID=52 + PDF=13000 MemberID=53 + PDF=13000 MemberID=54 + PDF=13000 MemberID=55 + PDF=13000 MemberID=56 + # PDFSET -> PDF + PDF=13065 MemberID=0 + PDF=13069 MemberID=0 + # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13100 MemberID=0 + PDF=13100 MemberID=1 + PDF=13100 MemberID=2 + PDF=13100 MemberID=3 + PDF=13100 MemberID=4 + PDF=13100 MemberID=5 + PDF=13100 MemberID=6 + PDF=13100 MemberID=7 + PDF=13100 MemberID=8 + PDF=13100 MemberID=9 + PDF=13100 MemberID=10 + PDF=13100 MemberID=11 + PDF=13100 MemberID=12 + PDF=13100 MemberID=13 + PDF=13100 MemberID=14 + PDF=13100 MemberID=15 + PDF=13100 MemberID=16 + PDF=13100 MemberID=17 + PDF=13100 MemberID=18 + PDF=13100 MemberID=19 + PDF=13100 MemberID=20 + PDF=13100 MemberID=21 + PDF=13100 MemberID=22 + PDF=13100 MemberID=23 + PDF=13100 MemberID=24 + PDF=13100 MemberID=25 + PDF=13100 MemberID=26 + PDF=13100 MemberID=27 + PDF=13100 MemberID=28 + PDF=13100 MemberID=29 + PDF=13100 MemberID=30 + PDF=13100 MemberID=31 + PDF=13100 MemberID=32 + PDF=13100 MemberID=33 + PDF=13100 MemberID=34 + PDF=13100 MemberID=35 + PDF=13100 MemberID=36 + PDF=13100 MemberID=37 + PDF=13100 MemberID=38 + PDF=13100 MemberID=39 + PDF=13100 MemberID=40 + PDF=13100 MemberID=41 + PDF=13100 MemberID=42 + PDF=13100 MemberID=43 + PDF=13100 MemberID=44 + PDF=13100 MemberID=45 + PDF=13100 MemberID=46 + PDF=13100 MemberID=47 + PDF=13100 MemberID=48 + PDF=13100 MemberID=49 + PDF=13100 MemberID=50 + PDF=13100 MemberID=51 + PDF=13100 MemberID=52 + PDF=13100 MemberID=53 + PDF=13100 MemberID=54 + PDF=13100 MemberID=55 + PDF=13100 MemberID=56 + # PDFSET -> PDF + PDF=13163 MemberID=0 + PDF=13167 MemberID=0 + PDF=13200 MemberID=0 + # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25200 MemberID=0 + PDF=25200 MemberID=1 + PDF=25200 MemberID=2 + PDF=25200 MemberID=3 + PDF=25200 MemberID=4 + PDF=25200 MemberID=5 + PDF=25200 MemberID=6 + PDF=25200 MemberID=7 + PDF=25200 MemberID=8 + PDF=25200 MemberID=9 + PDF=25200 MemberID=10 + PDF=25200 MemberID=11 + PDF=25200 MemberID=12 + PDF=25200 MemberID=13 + PDF=25200 MemberID=14 + PDF=25200 MemberID=15 + PDF=25200 MemberID=16 + PDF=25200 MemberID=17 + PDF=25200 MemberID=18 + PDF=25200 MemberID=19 + PDF=25200 MemberID=20 + PDF=25200 MemberID=21 + PDF=25200 MemberID=22 + PDF=25200 MemberID=23 + PDF=25200 MemberID=24 + PDF=25200 MemberID=25 + PDF=25200 MemberID=26 + PDF=25200 MemberID=27 + PDF=25200 MemberID=28 + PDF=25200 MemberID=29 + PDF=25200 MemberID=30 + PDF=25200 MemberID=31 + PDF=25200 MemberID=32 + PDF=25200 MemberID=33 + PDF=25200 MemberID=34 + PDF=25200 MemberID=35 + PDF=25200 MemberID=36 + PDF=25200 MemberID=37 + PDF=25200 MemberID=38 + PDF=25200 MemberID=39 + PDF=25200 MemberID=40 + PDF=25200 MemberID=41 + PDF=25200 MemberID=42 + PDF=25200 MemberID=43 + PDF=25200 MemberID=44 + PDF=25200 MemberID=45 + PDF=25200 MemberID=46 + PDF=25200 MemberID=47 + PDF=25200 MemberID=48 + PDF=25200 MemberID=49 + PDF=25200 MemberID=50 + # PDFSET -> PDFSET + # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25300 MemberID=0 + PDF=25300 MemberID=1 + PDF=25300 MemberID=2 + PDF=25300 MemberID=3 + PDF=25300 MemberID=4 + PDF=25300 MemberID=5 + PDF=25300 MemberID=6 + PDF=25300 MemberID=7 + PDF=25300 MemberID=8 + PDF=25300 MemberID=9 + PDF=25300 MemberID=10 + PDF=25300 MemberID=11 + PDF=25300 MemberID=12 + PDF=25300 MemberID=13 + PDF=25300 MemberID=14 + PDF=25300 MemberID=15 + PDF=25300 MemberID=16 + PDF=25300 MemberID=17 + PDF=25300 MemberID=18 + PDF=25300 MemberID=19 + PDF=25300 MemberID=20 + PDF=25300 MemberID=21 + PDF=25300 MemberID=22 + PDF=25300 MemberID=23 + PDF=25300 MemberID=24 + PDF=25300 MemberID=25 + PDF=25300 MemberID=26 + PDF=25300 MemberID=27 + PDF=25300 MemberID=28 + PDF=25300 MemberID=29 + PDF=25300 MemberID=30 + PDF=25300 MemberID=31 + PDF=25300 MemberID=32 + PDF=25300 MemberID=33 + PDF=25300 MemberID=34 + PDF=25300 MemberID=35 + PDF=25300 MemberID=36 + PDF=25300 MemberID=37 + PDF=25300 MemberID=38 + PDF=25300 MemberID=39 + PDF=25300 MemberID=40 + PDF=25300 MemberID=41 + PDF=25300 MemberID=42 + PDF=25300 MemberID=43 + PDF=25300 MemberID=44 + PDF=25300 MemberID=45 + PDF=25300 MemberID=46 + PDF=25300 MemberID=47 + PDF=25300 MemberID=48 + PDF=25300 MemberID=49 + PDF=25300 MemberID=50 + # PDFSET -> PDF + PDF=25000 MemberID=0 + # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set + PDF=42780 MemberID=0 + PDF=42780 MemberID=1 + PDF=42780 MemberID=2 + PDF=42780 MemberID=3 + PDF=42780 MemberID=4 + PDF=42780 MemberID=5 + PDF=42780 MemberID=6 + PDF=42780 MemberID=7 + PDF=42780 MemberID=8 + PDF=42780 MemberID=9 + PDF=42780 MemberID=10 + PDF=42780 MemberID=11 + PDF=42780 MemberID=12 + PDF=42780 MemberID=13 + PDF=42780 MemberID=14 + PDF=42780 MemberID=15 + PDF=42780 MemberID=16 + PDF=42780 MemberID=17 + PDF=42780 MemberID=18 + PDF=42780 MemberID=19 + PDF=42780 MemberID=20 + PDF=42780 MemberID=21 + PDF=42780 MemberID=22 + PDF=42780 MemberID=23 + PDF=42780 MemberID=24 + PDF=42780 MemberID=25 + PDF=42780 MemberID=26 + PDF=42780 MemberID=27 + PDF=42780 MemberID=28 + PDF=42780 MemberID=29 + # PDFSET -> PDFSET + # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=90200 MemberID=0 + PDF=90200 MemberID=1 + PDF=90200 MemberID=2 + PDF=90200 MemberID=3 + PDF=90200 MemberID=4 + PDF=90200 MemberID=5 + PDF=90200 MemberID=6 + PDF=90200 MemberID=7 + PDF=90200 MemberID=8 + PDF=90200 MemberID=9 + PDF=90200 MemberID=10 + PDF=90200 MemberID=11 + PDF=90200 MemberID=12 + PDF=90200 MemberID=13 + PDF=90200 MemberID=14 + PDF=90200 MemberID=15 + PDF=90200 MemberID=16 + PDF=90200 MemberID=17 + PDF=90200 MemberID=18 + PDF=90200 MemberID=19 + PDF=90200 MemberID=20 + PDF=90200 MemberID=21 + PDF=90200 MemberID=22 + PDF=90200 MemberID=23 + PDF=90200 MemberID=24 + PDF=90200 MemberID=25 + PDF=90200 MemberID=26 + PDF=90200 MemberID=27 + PDF=90200 MemberID=28 + PDF=90200 MemberID=29 + PDF=90200 MemberID=30 + PDF=90200 MemberID=31 + PDF=90200 MemberID=32 + PDF=90200 MemberID=33 + PDF=90200 MemberID=34 + PDF=90200 MemberID=35 + PDF=90200 MemberID=36 + PDF=90200 MemberID=37 + PDF=90200 MemberID=38 + PDF=90200 MemberID=39 + PDF=90200 MemberID=40 + PDF=90200 MemberID=41 + PDF=90200 MemberID=42 + PDF=90200 MemberID=43 + PDF=90200 MemberID=44 + PDF=90200 MemberID=45 + PDF=90200 MemberID=46 + PDF=90200 MemberID=47 + PDF=90200 MemberID=48 + PDF=90200 MemberID=49 + PDF=90200 MemberID=50 + PDF=90200 MemberID=51 + PDF=90200 MemberID=52 + PDF=90200 MemberID=53 + PDF=90200 MemberID=54 + PDF=90200 MemberID=55 + PDF=90200 MemberID=56 + PDF=90200 MemberID=57 + PDF=90200 MemberID=58 + PDF=90200 MemberID=59 + PDF=90200 MemberID=60 + PDF=90200 MemberID=61 + PDF=90200 MemberID=62 + PDF=90200 MemberID=63 + PDF=90200 MemberID=64 + PDF=90200 MemberID=65 + PDF=90200 MemberID=66 + PDF=90200 MemberID=67 + PDF=90200 MemberID=68 + PDF=90200 MemberID=69 + PDF=90200 MemberID=70 + PDF=90200 MemberID=71 + PDF=90200 MemberID=72 + PDF=90200 MemberID=73 + PDF=90200 MemberID=74 + PDF=90200 MemberID=75 + PDF=90200 MemberID=76 + PDF=90200 MemberID=77 + PDF=90200 MemberID=78 + PDF=90200 MemberID=79 + PDF=90200 MemberID=80 + PDF=90200 MemberID=81 + PDF=90200 MemberID=82 + PDF=90200 MemberID=83 + PDF=90200 MemberID=84 + PDF=90200 MemberID=85 + PDF=90200 MemberID=86 + PDF=90200 MemberID=87 + PDF=90200 MemberID=88 + PDF=90200 MemberID=89 + PDF=90200 MemberID=90 + PDF=90200 MemberID=91 + PDF=90200 MemberID=92 + PDF=90200 MemberID=93 + PDF=90200 MemberID=94 + PDF=90200 MemberID=95 + PDF=90200 MemberID=96 + PDF=90200 MemberID=97 + PDF=90200 MemberID=98 + PDF=90200 MemberID=99 + PDF=90200 MemberID=100 + PDF=90200 MemberID=101 + PDF=90200 MemberID=102 + # PDFSET -> PDFSET + # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=91200 MemberID=0 + PDF=91200 MemberID=1 + PDF=91200 MemberID=2 + PDF=91200 MemberID=3 + PDF=91200 MemberID=4 + PDF=91200 MemberID=5 + PDF=91200 MemberID=6 + PDF=91200 MemberID=7 + PDF=91200 MemberID=8 + PDF=91200 MemberID=9 + PDF=91200 MemberID=10 + PDF=91200 MemberID=11 + PDF=91200 MemberID=12 + PDF=91200 MemberID=13 + PDF=91200 MemberID=14 + PDF=91200 MemberID=15 + PDF=91200 MemberID=16 + PDF=91200 MemberID=17 + PDF=91200 MemberID=18 + PDF=91200 MemberID=19 + PDF=91200 MemberID=20 + PDF=91200 MemberID=21 + PDF=91200 MemberID=22 + PDF=91200 MemberID=23 + PDF=91200 MemberID=24 + PDF=91200 MemberID=25 + PDF=91200 MemberID=26 + PDF=91200 MemberID=27 + PDF=91200 MemberID=28 + PDF=91200 MemberID=29 + PDF=91200 MemberID=30 + PDF=91200 MemberID=31 + PDF=91200 MemberID=32 + PDF=91200 MemberID=33 + PDF=91200 MemberID=34 + PDF=91200 MemberID=35 + PDF=91200 MemberID=36 + PDF=91200 MemberID=37 + PDF=91200 MemberID=38 + PDF=91200 MemberID=39 + PDF=91200 MemberID=40 + PDF=91200 MemberID=41 + PDF=91200 MemberID=42 + PDF=91200 MemberID=43 + PDF=91200 MemberID=44 + PDF=91200 MemberID=45 + PDF=91200 MemberID=46 + PDF=91200 MemberID=47 + PDF=91200 MemberID=48 + PDF=91200 MemberID=49 + PDF=91200 MemberID=50 + PDF=91200 MemberID=51 + PDF=91200 MemberID=52 + PDF=91200 MemberID=53 + PDF=91200 MemberID=54 + PDF=91200 MemberID=55 + PDF=91200 MemberID=56 + PDF=91200 MemberID=57 + PDF=91200 MemberID=58 + PDF=91200 MemberID=59 + PDF=91200 MemberID=60 + PDF=91200 MemberID=61 + PDF=91200 MemberID=62 + PDF=91200 MemberID=63 + PDF=91200 MemberID=64 + PDF=91200 MemberID=65 + PDF=91200 MemberID=66 + PDF=91200 MemberID=67 + PDF=91200 MemberID=68 + PDF=91200 MemberID=69 + PDF=91200 MemberID=70 + PDF=91200 MemberID=71 + PDF=91200 MemberID=72 + PDF=91200 MemberID=73 + PDF=91200 MemberID=74 + PDF=91200 MemberID=75 + PDF=91200 MemberID=76 + PDF=91200 MemberID=77 + PDF=91200 MemberID=78 + PDF=91200 MemberID=79 + PDF=91200 MemberID=80 + PDF=91200 MemberID=81 + PDF=91200 MemberID=82 + PDF=91200 MemberID=83 + PDF=91200 MemberID=84 + PDF=91200 MemberID=85 + PDF=91200 MemberID=86 + PDF=91200 MemberID=87 + PDF=91200 MemberID=88 + PDF=91200 MemberID=89 + PDF=91200 MemberID=90 + PDF=91200 MemberID=91 + PDF=91200 MemberID=92 + PDF=91200 MemberID=93 + PDF=91200 MemberID=94 + PDF=91200 MemberID=95 + PDF=91200 MemberID=96 + PDF=91200 MemberID=97 + PDF=91200 MemberID=98 + PDF=91200 MemberID=99 + PDF=91200 MemberID=100 + PDF=91200 MemberID=101 + PDF=91200 MemberID=102 + # PDFSET -> PDFSET + # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=90400 MemberID=0 + PDF=90400 MemberID=1 + PDF=90400 MemberID=2 + PDF=90400 MemberID=3 + PDF=90400 MemberID=4 + PDF=90400 MemberID=5 + PDF=90400 MemberID=6 + PDF=90400 MemberID=7 + PDF=90400 MemberID=8 + PDF=90400 MemberID=9 + PDF=90400 MemberID=10 + PDF=90400 MemberID=11 + PDF=90400 MemberID=12 + PDF=90400 MemberID=13 + PDF=90400 MemberID=14 + PDF=90400 MemberID=15 + PDF=90400 MemberID=16 + PDF=90400 MemberID=17 + PDF=90400 MemberID=18 + PDF=90400 MemberID=19 + PDF=90400 MemberID=20 + PDF=90400 MemberID=21 + PDF=90400 MemberID=22 + PDF=90400 MemberID=23 + PDF=90400 MemberID=24 + PDF=90400 MemberID=25 + PDF=90400 MemberID=26 + PDF=90400 MemberID=27 + PDF=90400 MemberID=28 + PDF=90400 MemberID=29 + PDF=90400 MemberID=30 + PDF=90400 MemberID=31 + PDF=90400 MemberID=32 + # PDFSET -> PDFSET + # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=91400 MemberID=0 + PDF=91400 MemberID=1 + PDF=91400 MemberID=2 + PDF=91400 MemberID=3 + PDF=91400 MemberID=4 + PDF=91400 MemberID=5 + PDF=91400 MemberID=6 + PDF=91400 MemberID=7 + PDF=91400 MemberID=8 + PDF=91400 MemberID=9 + PDF=91400 MemberID=10 + PDF=91400 MemberID=11 + PDF=91400 MemberID=12 + PDF=91400 MemberID=13 + PDF=91400 MemberID=14 + PDF=91400 MemberID=15 + PDF=91400 MemberID=16 + PDF=91400 MemberID=17 + PDF=91400 MemberID=18 + PDF=91400 MemberID=19 + PDF=91400 MemberID=20 + PDF=91400 MemberID=21 + PDF=91400 MemberID=22 + PDF=91400 MemberID=23 + PDF=91400 MemberID=24 + PDF=91400 MemberID=25 + PDF=91400 MemberID=26 + PDF=91400 MemberID=27 + PDF=91400 MemberID=28 + PDF=91400 MemberID=29 + PDF=91400 MemberID=30 + PDF=91400 MemberID=31 + PDF=91400 MemberID=32 + # PDFSET -> PDFSET + # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61100 MemberID=0 + PDF=61100 MemberID=1 + PDF=61100 MemberID=2 + PDF=61100 MemberID=3 + PDF=61100 MemberID=4 + PDF=61100 MemberID=5 + PDF=61100 MemberID=6 + PDF=61100 MemberID=7 + PDF=61100 MemberID=8 + PDF=61100 MemberID=9 + PDF=61100 MemberID=10 + PDF=61100 MemberID=11 + PDF=61100 MemberID=12 + PDF=61100 MemberID=13 + PDF=61100 MemberID=14 + PDF=61100 MemberID=15 + PDF=61100 MemberID=16 + PDF=61100 MemberID=17 + PDF=61100 MemberID=18 + PDF=61100 MemberID=19 + PDF=61100 MemberID=20 + PDF=61100 MemberID=21 + PDF=61100 MemberID=22 + PDF=61100 MemberID=23 + PDF=61100 MemberID=24 + PDF=61100 MemberID=25 + PDF=61100 MemberID=26 + PDF=61100 MemberID=27 + PDF=61100 MemberID=28 + # PDFSET -> PDFSET + # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); + PDF=61130 MemberID=0 + PDF=61130 MemberID=1 + PDF=61130 MemberID=2 + PDF=61130 MemberID=3 + PDF=61130 MemberID=4 + PDF=61130 MemberID=5 + PDF=61130 MemberID=6 + PDF=61130 MemberID=7 + PDF=61130 MemberID=8 + PDF=61130 MemberID=9 + PDF=61130 MemberID=10 + PDF=61130 MemberID=11 + PDF=61130 MemberID=12 + PDF=61130 MemberID=13 + # PDFSET -> PDFSET + # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61200 MemberID=0 + PDF=61200 MemberID=1 + PDF=61200 MemberID=2 + PDF=61200 MemberID=3 + PDF=61200 MemberID=4 + PDF=61200 MemberID=5 + PDF=61200 MemberID=6 + PDF=61200 MemberID=7 + PDF=61200 MemberID=8 + PDF=61200 MemberID=9 + PDF=61200 MemberID=10 + PDF=61200 MemberID=11 + PDF=61200 MemberID=12 + PDF=61200 MemberID=13 + PDF=61200 MemberID=14 + PDF=61200 MemberID=15 + PDF=61200 MemberID=16 + PDF=61200 MemberID=17 + PDF=61200 MemberID=18 + PDF=61200 MemberID=19 + PDF=61200 MemberID=20 + PDF=61200 MemberID=21 + PDF=61200 MemberID=22 + PDF=61200 MemberID=23 + PDF=61200 MemberID=24 + PDF=61200 MemberID=25 + PDF=61200 MemberID=26 + PDF=61200 MemberID=27 + PDF=61200 MemberID=28 + # PDFSET -> PDFSET + # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); + PDF=61230 MemberID=0 + PDF=61230 MemberID=1 + PDF=61230 MemberID=2 + PDF=61230 MemberID=3 + PDF=61230 MemberID=4 + PDF=61230 MemberID=5 + PDF=61230 MemberID=6 + PDF=61230 MemberID=7 + PDF=61230 MemberID=8 + PDF=61230 MemberID=9 + PDF=61230 MemberID=10 + PDF=61230 MemberID=11 + PDF=61230 MemberID=12 + PDF=61230 MemberID=13 + # PDFSET -> PDFSET + # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference + PDF=13400 MemberID=0 + PDF=13400 MemberID=1 + PDF=13400 MemberID=2 + PDF=13400 MemberID=3 + PDF=13400 MemberID=4 + PDF=13400 MemberID=5 + PDF=13400 MemberID=6 + PDF=13400 MemberID=7 + PDF=13400 MemberID=8 + PDF=13400 MemberID=9 + PDF=13400 MemberID=10 + PDF=13400 MemberID=11 + PDF=13400 MemberID=12 + PDF=13400 MemberID=13 + PDF=13400 MemberID=14 + PDF=13400 MemberID=15 + PDF=13400 MemberID=16 + PDF=13400 MemberID=17 + PDF=13400 MemberID=18 + PDF=13400 MemberID=19 + PDF=13400 MemberID=20 + PDF=13400 MemberID=21 + PDF=13400 MemberID=22 + PDF=13400 MemberID=23 + PDF=13400 MemberID=24 + PDF=13400 MemberID=25 + PDF=13400 MemberID=26 + PDF=13400 MemberID=27 + PDF=13400 MemberID=28 + PDF=13400 MemberID=29 + PDF=13400 MemberID=30 + # PDFSET -> PDFSET + # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. +PDF4LHC15_nnlo_100 description: + PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 + ; PDF symmetric eigenvectors +LUXqed description: + Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P + fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. + Photon generated at scale 100.0 GeV, other partons matched at scale + 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - + 0.00699 * x^{0.000} g(x) at scale 10.0 GeV +Members: + 0 is central + 1-100 map to original PDF members + 101 replacement of CLAS resonance fit with Christy-Bosted fit + 102 rescale-R-0.5 + 103 rescale R in high-Q^2 region with a higher-twist component + 104 use the A1 elastic fit result without the two-photon exchange corrections + 105 use the lower edge of the elastic fit error band + 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 + 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) +Versioning info: + DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) +LUXqed version history for this PDF: + This version corresponds to the long LUXqed17 paper. + PDF=82200 MemberID=0 + PDF=82200 MemberID=1 + PDF=82200 MemberID=2 + PDF=82200 MemberID=3 + PDF=82200 MemberID=4 + PDF=82200 MemberID=5 + PDF=82200 MemberID=6 + PDF=82200 MemberID=7 + PDF=82200 MemberID=8 + PDF=82200 MemberID=9 + PDF=82200 MemberID=10 + PDF=82200 MemberID=11 + PDF=82200 MemberID=12 + PDF=82200 MemberID=13 + PDF=82200 MemberID=14 + PDF=82200 MemberID=15 + PDF=82200 MemberID=16 + PDF=82200 MemberID=17 + PDF=82200 MemberID=18 + PDF=82200 MemberID=19 + PDF=82200 MemberID=20 + PDF=82200 MemberID=21 + PDF=82200 MemberID=22 + PDF=82200 MemberID=23 + PDF=82200 MemberID=24 + PDF=82200 MemberID=25 + PDF=82200 MemberID=26 + PDF=82200 MemberID=27 + PDF=82200 MemberID=28 + PDF=82200 MemberID=29 + PDF=82200 MemberID=30 + PDF=82200 MemberID=31 + PDF=82200 MemberID=32 + PDF=82200 MemberID=33 + PDF=82200 MemberID=34 + PDF=82200 MemberID=35 + PDF=82200 MemberID=36 + PDF=82200 MemberID=37 + PDF=82200 MemberID=38 + PDF=82200 MemberID=39 + PDF=82200 MemberID=40 + PDF=82200 MemberID=41 + PDF=82200 MemberID=42 + PDF=82200 MemberID=43 + PDF=82200 MemberID=44 + PDF=82200 MemberID=45 + PDF=82200 MemberID=46 + PDF=82200 MemberID=47 + PDF=82200 MemberID=48 + PDF=82200 MemberID=49 + PDF=82200 MemberID=50 + PDF=82200 MemberID=51 + PDF=82200 MemberID=52 + PDF=82200 MemberID=53 + PDF=82200 MemberID=54 + PDF=82200 MemberID=55 + PDF=82200 MemberID=56 + PDF=82200 MemberID=57 + PDF=82200 MemberID=58 + PDF=82200 MemberID=59 + PDF=82200 MemberID=60 + PDF=82200 MemberID=61 + PDF=82200 MemberID=62 + PDF=82200 MemberID=63 + PDF=82200 MemberID=64 + PDF=82200 MemberID=65 + PDF=82200 MemberID=66 + PDF=82200 MemberID=67 + PDF=82200 MemberID=68 + PDF=82200 MemberID=69 + PDF=82200 MemberID=70 + PDF=82200 MemberID=71 + PDF=82200 MemberID=72 + PDF=82200 MemberID=73 + PDF=82200 MemberID=74 + PDF=82200 MemberID=75 + PDF=82200 MemberID=76 + PDF=82200 MemberID=77 + PDF=82200 MemberID=78 + PDF=82200 MemberID=79 + PDF=82200 MemberID=80 + PDF=82200 MemberID=81 + PDF=82200 MemberID=82 + PDF=82200 MemberID=83 + PDF=82200 MemberID=84 + PDF=82200 MemberID=85 + PDF=82200 MemberID=86 + PDF=82200 MemberID=87 + PDF=82200 MemberID=88 + PDF=82200 MemberID=89 + PDF=82200 MemberID=90 + PDF=82200 MemberID=91 + PDF=82200 MemberID=92 + PDF=82200 MemberID=93 + PDF=82200 MemberID=94 + PDF=82200 MemberID=95 + PDF=82200 MemberID=96 + PDF=82200 MemberID=97 + PDF=82200 MemberID=98 + PDF=82200 MemberID=99 + PDF=82200 MemberID=100 + PDF=82200 MemberID=101 + PDF=82200 MemberID=102 + PDF=82200 MemberID=103 + PDF=82200 MemberID=104 + PDF=82200 MemberID=105 + PDF=82200 MemberID=106 + PDF=82200 MemberID=107 + # PDFSET -> PDFSET + # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 + PDF=292200 MemberID=0 + PDF=292200 MemberID=1 + PDF=292200 MemberID=2 + PDF=292200 MemberID=3 + PDF=292200 MemberID=4 + PDF=292200 MemberID=5 + PDF=292200 MemberID=6 + PDF=292200 MemberID=7 + PDF=292200 MemberID=8 + PDF=292200 MemberID=9 + PDF=292200 MemberID=10 + PDF=292200 MemberID=11 + PDF=292200 MemberID=12 + PDF=292200 MemberID=13 + PDF=292200 MemberID=14 + PDF=292200 MemberID=15 + PDF=292200 MemberID=16 + PDF=292200 MemberID=17 + PDF=292200 MemberID=18 + PDF=292200 MemberID=19 + PDF=292200 MemberID=20 + PDF=292200 MemberID=21 + PDF=292200 MemberID=22 + PDF=292200 MemberID=23 + PDF=292200 MemberID=24 + PDF=292200 MemberID=25 + PDF=292200 MemberID=26 + PDF=292200 MemberID=27 + PDF=292200 MemberID=28 + PDF=292200 MemberID=29 + PDF=292200 MemberID=30 + PDF=292200 MemberID=31 + PDF=292200 MemberID=32 + PDF=292200 MemberID=33 + PDF=292200 MemberID=34 + PDF=292200 MemberID=35 + PDF=292200 MemberID=36 + PDF=292200 MemberID=37 + PDF=292200 MemberID=38 + PDF=292200 MemberID=39 + PDF=292200 MemberID=40 + PDF=292200 MemberID=41 + PDF=292200 MemberID=42 + PDF=292200 MemberID=43 + PDF=292200 MemberID=44 + PDF=292200 MemberID=45 + PDF=292200 MemberID=46 + PDF=292200 MemberID=47 + PDF=292200 MemberID=48 + PDF=292200 MemberID=49 + PDF=292200 MemberID=50 + PDF=292200 MemberID=51 + PDF=292200 MemberID=52 + PDF=292200 MemberID=53 + PDF=292200 MemberID=54 + PDF=292200 MemberID=55 + PDF=292200 MemberID=56 + PDF=292200 MemberID=57 + PDF=292200 MemberID=58 + PDF=292200 MemberID=59 + PDF=292200 MemberID=60 + PDF=292200 MemberID=61 + PDF=292200 MemberID=62 + PDF=292200 MemberID=63 + PDF=292200 MemberID=64 + PDF=292200 MemberID=65 + PDF=292200 MemberID=66 + PDF=292200 MemberID=67 + PDF=292200 MemberID=68 + PDF=292200 MemberID=69 + PDF=292200 MemberID=70 + PDF=292200 MemberID=71 + PDF=292200 MemberID=72 + PDF=292200 MemberID=73 + PDF=292200 MemberID=74 + PDF=292200 MemberID=75 + PDF=292200 MemberID=76 + PDF=292200 MemberID=77 + PDF=292200 MemberID=78 + PDF=292200 MemberID=79 + PDF=292200 MemberID=80 + PDF=292200 MemberID=81 + PDF=292200 MemberID=82 + PDF=292200 MemberID=83 + PDF=292200 MemberID=84 + PDF=292200 MemberID=85 + PDF=292200 MemberID=86 + PDF=292200 MemberID=87 + PDF=292200 MemberID=88 + PDF=292200 MemberID=89 + PDF=292200 MemberID=90 + PDF=292200 MemberID=91 + PDF=292200 MemberID=92 + PDF=292200 MemberID=93 + PDF=292200 MemberID=94 + PDF=292200 MemberID=95 + PDF=292200 MemberID=96 + PDF=292200 MemberID=97 + PDF=292200 MemberID=98 + PDF=292200 MemberID=99 + PDF=292200 MemberID=100 + PDF=292200 MemberID=101 + PDF=292200 MemberID=102 + # PDFSET -> PDF + PDF=292600 MemberID=0 + PDF=315000 MemberID=0 + PDF=315200 MemberID=0 + PDF=262000 MemberID=0 + PDF=263000 MemberID=0 + + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + diff --git a/testFiles/W1jet_260_weight_info.txt b/testFiles/W1jet_260_weight_info.txt new file mode 100644 index 0000000000000..d8b08d74060b4 --- /dev/null +++ b/testFiles/W1jet_260_weight_info.txt @@ -0,0 +1,1179 @@ + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + + PDF + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + # scale + # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + + PDF=306000 MemberID=1 + PDF=306000 MemberID=2 + PDF=306000 MemberID=3 + PDF=306000 MemberID=4 + PDF=306000 MemberID=5 + PDF=306000 MemberID=6 + PDF=306000 MemberID=7 + PDF=306000 MemberID=8 + PDF=306000 MemberID=9 + PDF=306000 MemberID=10 + PDF=306000 MemberID=11 + PDF=306000 MemberID=12 + PDF=306000 MemberID=13 + PDF=306000 MemberID=14 + PDF=306000 MemberID=15 + PDF=306000 MemberID=16 + PDF=306000 MemberID=17 + PDF=306000 MemberID=18 + PDF=306000 MemberID=19 + PDF=306000 MemberID=20 + PDF=306000 MemberID=21 + PDF=306000 MemberID=22 + PDF=306000 MemberID=23 + PDF=306000 MemberID=24 + PDF=306000 MemberID=25 + PDF=306000 MemberID=26 + PDF=306000 MemberID=27 + PDF=306000 MemberID=28 + PDF=306000 MemberID=29 + PDF=306000 MemberID=30 + PDF=306000 MemberID=31 + PDF=306000 MemberID=32 + PDF=306000 MemberID=33 + PDF=306000 MemberID=34 + PDF=306000 MemberID=35 + PDF=306000 MemberID=36 + PDF=306000 MemberID=37 + PDF=306000 MemberID=38 + PDF=306000 MemberID=39 + PDF=306000 MemberID=40 + PDF=306000 MemberID=41 + PDF=306000 MemberID=42 + PDF=306000 MemberID=43 + PDF=306000 MemberID=44 + PDF=306000 MemberID=45 + PDF=306000 MemberID=46 + PDF=306000 MemberID=47 + PDF=306000 MemberID=48 + PDF=306000 MemberID=49 + PDF=306000 MemberID=50 + PDF=306000 MemberID=51 + PDF=306000 MemberID=52 + PDF=306000 MemberID=53 + PDF=306000 MemberID=54 + PDF=306000 MemberID=55 + PDF=306000 MemberID=56 + PDF=306000 MemberID=57 + PDF=306000 MemberID=58 + PDF=306000 MemberID=59 + PDF=306000 MemberID=60 + PDF=306000 MemberID=61 + PDF=306000 MemberID=62 + PDF=306000 MemberID=63 + PDF=306000 MemberID=64 + PDF=306000 MemberID=65 + PDF=306000 MemberID=66 + PDF=306000 MemberID=67 + PDF=306000 MemberID=68 + PDF=306000 MemberID=69 + PDF=306000 MemberID=70 + PDF=306000 MemberID=71 + PDF=306000 MemberID=72 + PDF=306000 MemberID=73 + PDF=306000 MemberID=74 + PDF=306000 MemberID=75 + PDF=306000 MemberID=76 + PDF=306000 MemberID=77 + PDF=306000 MemberID=78 + PDF=306000 MemberID=79 + PDF=306000 MemberID=80 + PDF=306000 MemberID=81 + PDF=306000 MemberID=82 + PDF=306000 MemberID=83 + PDF=306000 MemberID=84 + PDF=306000 MemberID=85 + PDF=306000 MemberID=86 + PDF=306000 MemberID=87 + PDF=306000 MemberID=88 + PDF=306000 MemberID=89 + PDF=306000 MemberID=90 + PDF=306000 MemberID=91 + PDF=306000 MemberID=92 + PDF=306000 MemberID=93 + PDF=306000 MemberID=94 + PDF=306000 MemberID=95 + PDF=306000 MemberID=96 + PDF=306000 MemberID=97 + PDF=306000 MemberID=98 + PDF=306000 MemberID=99 + PDF=306000 MemberID=100 + PDF=306000 MemberID=101 + PDF=306000 MemberID=102 + # PDFSET -> PDF + PDF=322500 MemberID=0 + PDF=322700 MemberID=0 + PDF=322900 MemberID=0 + PDF=323100 MemberID=0 + PDF=323300 MemberID=0 + PDF=323500 MemberID=0 + PDF=323700 MemberID=0 + PDF=323900 MemberID=0 + # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 + PDF=305800 MemberID=0 + PDF=305800 MemberID=1 + PDF=305800 MemberID=2 + PDF=305800 MemberID=3 + PDF=305800 MemberID=4 + PDF=305800 MemberID=5 + PDF=305800 MemberID=6 + PDF=305800 MemberID=7 + PDF=305800 MemberID=8 + PDF=305800 MemberID=9 + PDF=305800 MemberID=10 + PDF=305800 MemberID=11 + PDF=305800 MemberID=12 + PDF=305800 MemberID=13 + PDF=305800 MemberID=14 + PDF=305800 MemberID=15 + PDF=305800 MemberID=16 + PDF=305800 MemberID=17 + PDF=305800 MemberID=18 + PDF=305800 MemberID=19 + PDF=305800 MemberID=20 + PDF=305800 MemberID=21 + PDF=305800 MemberID=22 + PDF=305800 MemberID=23 + PDF=305800 MemberID=24 + PDF=305800 MemberID=25 + PDF=305800 MemberID=26 + PDF=305800 MemberID=27 + PDF=305800 MemberID=28 + PDF=305800 MemberID=29 + PDF=305800 MemberID=30 + PDF=305800 MemberID=31 + PDF=305800 MemberID=32 + PDF=305800 MemberID=33 + PDF=305800 MemberID=34 + PDF=305800 MemberID=35 + PDF=305800 MemberID=36 + PDF=305800 MemberID=37 + PDF=305800 MemberID=38 + PDF=305800 MemberID=39 + PDF=305800 MemberID=40 + PDF=305800 MemberID=41 + PDF=305800 MemberID=42 + PDF=305800 MemberID=43 + PDF=305800 MemberID=44 + PDF=305800 MemberID=45 + PDF=305800 MemberID=46 + PDF=305800 MemberID=47 + PDF=305800 MemberID=48 + PDF=305800 MemberID=49 + PDF=305800 MemberID=50 + PDF=305800 MemberID=51 + PDF=305800 MemberID=52 + PDF=305800 MemberID=53 + PDF=305800 MemberID=54 + PDF=305800 MemberID=55 + PDF=305800 MemberID=56 + PDF=305800 MemberID=57 + PDF=305800 MemberID=58 + PDF=305800 MemberID=59 + PDF=305800 MemberID=60 + PDF=305800 MemberID=61 + PDF=305800 MemberID=62 + PDF=305800 MemberID=63 + PDF=305800 MemberID=64 + PDF=305800 MemberID=65 + PDF=305800 MemberID=66 + PDF=305800 MemberID=67 + PDF=305800 MemberID=68 + PDF=305800 MemberID=69 + PDF=305800 MemberID=70 + PDF=305800 MemberID=71 + PDF=305800 MemberID=72 + PDF=305800 MemberID=73 + PDF=305800 MemberID=74 + PDF=305800 MemberID=75 + PDF=305800 MemberID=76 + PDF=305800 MemberID=77 + PDF=305800 MemberID=78 + PDF=305800 MemberID=79 + PDF=305800 MemberID=80 + PDF=305800 MemberID=81 + PDF=305800 MemberID=82 + PDF=305800 MemberID=83 + PDF=305800 MemberID=84 + PDF=305800 MemberID=85 + PDF=305800 MemberID=86 + PDF=305800 MemberID=87 + PDF=305800 MemberID=88 + PDF=305800 MemberID=89 + PDF=305800 MemberID=90 + PDF=305800 MemberID=91 + PDF=305800 MemberID=92 + PDF=305800 MemberID=93 + PDF=305800 MemberID=94 + PDF=305800 MemberID=95 + PDF=305800 MemberID=96 + PDF=305800 MemberID=97 + PDF=305800 MemberID=98 + PDF=305800 MemberID=99 + PDF=305800 MemberID=100 + PDF=305800 MemberID=101 + PDF=305800 MemberID=102 + # PDFSET -> PDFSET + # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13000 MemberID=0 + PDF=13000 MemberID=1 + PDF=13000 MemberID=2 + PDF=13000 MemberID=3 + PDF=13000 MemberID=4 + PDF=13000 MemberID=5 + PDF=13000 MemberID=6 + PDF=13000 MemberID=7 + PDF=13000 MemberID=8 + PDF=13000 MemberID=9 + PDF=13000 MemberID=10 + PDF=13000 MemberID=11 + PDF=13000 MemberID=12 + PDF=13000 MemberID=13 + PDF=13000 MemberID=14 + PDF=13000 MemberID=15 + PDF=13000 MemberID=16 + PDF=13000 MemberID=17 + PDF=13000 MemberID=18 + PDF=13000 MemberID=19 + PDF=13000 MemberID=20 + PDF=13000 MemberID=21 + PDF=13000 MemberID=22 + PDF=13000 MemberID=23 + PDF=13000 MemberID=24 + PDF=13000 MemberID=25 + PDF=13000 MemberID=26 + PDF=13000 MemberID=27 + PDF=13000 MemberID=28 + PDF=13000 MemberID=29 + PDF=13000 MemberID=30 + PDF=13000 MemberID=31 + PDF=13000 MemberID=32 + PDF=13000 MemberID=33 + PDF=13000 MemberID=34 + PDF=13000 MemberID=35 + PDF=13000 MemberID=36 + PDF=13000 MemberID=37 + PDF=13000 MemberID=38 + PDF=13000 MemberID=39 + PDF=13000 MemberID=40 + PDF=13000 MemberID=41 + PDF=13000 MemberID=42 + PDF=13000 MemberID=43 + PDF=13000 MemberID=44 + PDF=13000 MemberID=45 + PDF=13000 MemberID=46 + PDF=13000 MemberID=47 + PDF=13000 MemberID=48 + PDF=13000 MemberID=49 + PDF=13000 MemberID=50 + PDF=13000 MemberID=51 + PDF=13000 MemberID=52 + PDF=13000 MemberID=53 + PDF=13000 MemberID=54 + PDF=13000 MemberID=55 + PDF=13000 MemberID=56 + # PDFSET -> PDF + PDF=13065 MemberID=0 + PDF=13069 MemberID=0 + # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% + PDF=13100 MemberID=0 + PDF=13100 MemberID=1 + PDF=13100 MemberID=2 + PDF=13100 MemberID=3 + PDF=13100 MemberID=4 + PDF=13100 MemberID=5 + PDF=13100 MemberID=6 + PDF=13100 MemberID=7 + PDF=13100 MemberID=8 + PDF=13100 MemberID=9 + PDF=13100 MemberID=10 + PDF=13100 MemberID=11 + PDF=13100 MemberID=12 + PDF=13100 MemberID=13 + PDF=13100 MemberID=14 + PDF=13100 MemberID=15 + PDF=13100 MemberID=16 + PDF=13100 MemberID=17 + PDF=13100 MemberID=18 + PDF=13100 MemberID=19 + PDF=13100 MemberID=20 + PDF=13100 MemberID=21 + PDF=13100 MemberID=22 + PDF=13100 MemberID=23 + PDF=13100 MemberID=24 + PDF=13100 MemberID=25 + PDF=13100 MemberID=26 + PDF=13100 MemberID=27 + PDF=13100 MemberID=28 + PDF=13100 MemberID=29 + PDF=13100 MemberID=30 + PDF=13100 MemberID=31 + PDF=13100 MemberID=32 + PDF=13100 MemberID=33 + PDF=13100 MemberID=34 + PDF=13100 MemberID=35 + PDF=13100 MemberID=36 + PDF=13100 MemberID=37 + PDF=13100 MemberID=38 + PDF=13100 MemberID=39 + PDF=13100 MemberID=40 + PDF=13100 MemberID=41 + PDF=13100 MemberID=42 + PDF=13100 MemberID=43 + PDF=13100 MemberID=44 + PDF=13100 MemberID=45 + PDF=13100 MemberID=46 + PDF=13100 MemberID=47 + PDF=13100 MemberID=48 + PDF=13100 MemberID=49 + PDF=13100 MemberID=50 + PDF=13100 MemberID=51 + PDF=13100 MemberID=52 + PDF=13100 MemberID=53 + PDF=13100 MemberID=54 + PDF=13100 MemberID=55 + PDF=13100 MemberID=56 + # PDFSET -> PDF + PDF=13163 MemberID=0 + PDF=13167 MemberID=0 + PDF=13200 MemberID=0 + # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25200 MemberID=0 + PDF=25200 MemberID=1 + PDF=25200 MemberID=2 + PDF=25200 MemberID=3 + PDF=25200 MemberID=4 + PDF=25200 MemberID=5 + PDF=25200 MemberID=6 + PDF=25200 MemberID=7 + PDF=25200 MemberID=8 + PDF=25200 MemberID=9 + PDF=25200 MemberID=10 + PDF=25200 MemberID=11 + PDF=25200 MemberID=12 + PDF=25200 MemberID=13 + PDF=25200 MemberID=14 + PDF=25200 MemberID=15 + PDF=25200 MemberID=16 + PDF=25200 MemberID=17 + PDF=25200 MemberID=18 + PDF=25200 MemberID=19 + PDF=25200 MemberID=20 + PDF=25200 MemberID=21 + PDF=25200 MemberID=22 + PDF=25200 MemberID=23 + PDF=25200 MemberID=24 + PDF=25200 MemberID=25 + PDF=25200 MemberID=26 + PDF=25200 MemberID=27 + PDF=25200 MemberID=28 + PDF=25200 MemberID=29 + PDF=25200 MemberID=30 + PDF=25200 MemberID=31 + PDF=25200 MemberID=32 + PDF=25200 MemberID=33 + PDF=25200 MemberID=34 + PDF=25200 MemberID=35 + PDF=25200 MemberID=36 + PDF=25200 MemberID=37 + PDF=25200 MemberID=38 + PDF=25200 MemberID=39 + PDF=25200 MemberID=40 + PDF=25200 MemberID=41 + PDF=25200 MemberID=42 + PDF=25200 MemberID=43 + PDF=25200 MemberID=44 + PDF=25200 MemberID=45 + PDF=25200 MemberID=46 + PDF=25200 MemberID=47 + PDF=25200 MemberID=48 + PDF=25200 MemberID=49 + PDF=25200 MemberID=50 + # PDFSET -> PDFSET + # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht + PDF=25300 MemberID=0 + PDF=25300 MemberID=1 + PDF=25300 MemberID=2 + PDF=25300 MemberID=3 + PDF=25300 MemberID=4 + PDF=25300 MemberID=5 + PDF=25300 MemberID=6 + PDF=25300 MemberID=7 + PDF=25300 MemberID=8 + PDF=25300 MemberID=9 + PDF=25300 MemberID=10 + PDF=25300 MemberID=11 + PDF=25300 MemberID=12 + PDF=25300 MemberID=13 + PDF=25300 MemberID=14 + PDF=25300 MemberID=15 + PDF=25300 MemberID=16 + PDF=25300 MemberID=17 + PDF=25300 MemberID=18 + PDF=25300 MemberID=19 + PDF=25300 MemberID=20 + PDF=25300 MemberID=21 + PDF=25300 MemberID=22 + PDF=25300 MemberID=23 + PDF=25300 MemberID=24 + PDF=25300 MemberID=25 + PDF=25300 MemberID=26 + PDF=25300 MemberID=27 + PDF=25300 MemberID=28 + PDF=25300 MemberID=29 + PDF=25300 MemberID=30 + PDF=25300 MemberID=31 + PDF=25300 MemberID=32 + PDF=25300 MemberID=33 + PDF=25300 MemberID=34 + PDF=25300 MemberID=35 + PDF=25300 MemberID=36 + PDF=25300 MemberID=37 + PDF=25300 MemberID=38 + PDF=25300 MemberID=39 + PDF=25300 MemberID=40 + PDF=25300 MemberID=41 + PDF=25300 MemberID=42 + PDF=25300 MemberID=43 + PDF=25300 MemberID=44 + PDF=25300 MemberID=45 + PDF=25300 MemberID=46 + PDF=25300 MemberID=47 + PDF=25300 MemberID=48 + PDF=25300 MemberID=49 + PDF=25300 MemberID=50 + # PDFSET -> PDF + PDF=25000 MemberID=0 + # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set + PDF=42780 MemberID=0 + PDF=42780 MemberID=1 + PDF=42780 MemberID=2 + PDF=42780 MemberID=3 + PDF=42780 MemberID=4 + PDF=42780 MemberID=5 + PDF=42780 MemberID=6 + PDF=42780 MemberID=7 + PDF=42780 MemberID=8 + PDF=42780 MemberID=9 + PDF=42780 MemberID=10 + PDF=42780 MemberID=11 + PDF=42780 MemberID=12 + PDF=42780 MemberID=13 + PDF=42780 MemberID=14 + PDF=42780 MemberID=15 + PDF=42780 MemberID=16 + PDF=42780 MemberID=17 + PDF=42780 MemberID=18 + PDF=42780 MemberID=19 + PDF=42780 MemberID=20 + PDF=42780 MemberID=21 + PDF=42780 MemberID=22 + PDF=42780 MemberID=23 + PDF=42780 MemberID=24 + PDF=42780 MemberID=25 + PDF=42780 MemberID=26 + PDF=42780 MemberID=27 + PDF=42780 MemberID=28 + PDF=42780 MemberID=29 + # PDFSET -> PDFSET + # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=90200 MemberID=0 + PDF=90200 MemberID=1 + PDF=90200 MemberID=2 + PDF=90200 MemberID=3 + PDF=90200 MemberID=4 + PDF=90200 MemberID=5 + PDF=90200 MemberID=6 + PDF=90200 MemberID=7 + PDF=90200 MemberID=8 + PDF=90200 MemberID=9 + PDF=90200 MemberID=10 + PDF=90200 MemberID=11 + PDF=90200 MemberID=12 + PDF=90200 MemberID=13 + PDF=90200 MemberID=14 + PDF=90200 MemberID=15 + PDF=90200 MemberID=16 + PDF=90200 MemberID=17 + PDF=90200 MemberID=18 + PDF=90200 MemberID=19 + PDF=90200 MemberID=20 + PDF=90200 MemberID=21 + PDF=90200 MemberID=22 + PDF=90200 MemberID=23 + PDF=90200 MemberID=24 + PDF=90200 MemberID=25 + PDF=90200 MemberID=26 + PDF=90200 MemberID=27 + PDF=90200 MemberID=28 + PDF=90200 MemberID=29 + PDF=90200 MemberID=30 + PDF=90200 MemberID=31 + PDF=90200 MemberID=32 + PDF=90200 MemberID=33 + PDF=90200 MemberID=34 + PDF=90200 MemberID=35 + PDF=90200 MemberID=36 + PDF=90200 MemberID=37 + PDF=90200 MemberID=38 + PDF=90200 MemberID=39 + PDF=90200 MemberID=40 + PDF=90200 MemberID=41 + PDF=90200 MemberID=42 + PDF=90200 MemberID=43 + PDF=90200 MemberID=44 + PDF=90200 MemberID=45 + PDF=90200 MemberID=46 + PDF=90200 MemberID=47 + PDF=90200 MemberID=48 + PDF=90200 MemberID=49 + PDF=90200 MemberID=50 + PDF=90200 MemberID=51 + PDF=90200 MemberID=52 + PDF=90200 MemberID=53 + PDF=90200 MemberID=54 + PDF=90200 MemberID=55 + PDF=90200 MemberID=56 + PDF=90200 MemberID=57 + PDF=90200 MemberID=58 + PDF=90200 MemberID=59 + PDF=90200 MemberID=60 + PDF=90200 MemberID=61 + PDF=90200 MemberID=62 + PDF=90200 MemberID=63 + PDF=90200 MemberID=64 + PDF=90200 MemberID=65 + PDF=90200 MemberID=66 + PDF=90200 MemberID=67 + PDF=90200 MemberID=68 + PDF=90200 MemberID=69 + PDF=90200 MemberID=70 + PDF=90200 MemberID=71 + PDF=90200 MemberID=72 + PDF=90200 MemberID=73 + PDF=90200 MemberID=74 + PDF=90200 MemberID=75 + PDF=90200 MemberID=76 + PDF=90200 MemberID=77 + PDF=90200 MemberID=78 + PDF=90200 MemberID=79 + PDF=90200 MemberID=80 + PDF=90200 MemberID=81 + PDF=90200 MemberID=82 + PDF=90200 MemberID=83 + PDF=90200 MemberID=84 + PDF=90200 MemberID=85 + PDF=90200 MemberID=86 + PDF=90200 MemberID=87 + PDF=90200 MemberID=88 + PDF=90200 MemberID=89 + PDF=90200 MemberID=90 + PDF=90200 MemberID=91 + PDF=90200 MemberID=92 + PDF=90200 MemberID=93 + PDF=90200 MemberID=94 + PDF=90200 MemberID=95 + PDF=90200 MemberID=96 + PDF=90200 MemberID=97 + PDF=90200 MemberID=98 + PDF=90200 MemberID=99 + PDF=90200 MemberID=100 + PDF=90200 MemberID=101 + PDF=90200 MemberID=102 + # PDFSET -> PDFSET + # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 + PDF=91200 MemberID=0 + PDF=91200 MemberID=1 + PDF=91200 MemberID=2 + PDF=91200 MemberID=3 + PDF=91200 MemberID=4 + PDF=91200 MemberID=5 + PDF=91200 MemberID=6 + PDF=91200 MemberID=7 + PDF=91200 MemberID=8 + PDF=91200 MemberID=9 + PDF=91200 MemberID=10 + PDF=91200 MemberID=11 + PDF=91200 MemberID=12 + PDF=91200 MemberID=13 + PDF=91200 MemberID=14 + PDF=91200 MemberID=15 + PDF=91200 MemberID=16 + PDF=91200 MemberID=17 + PDF=91200 MemberID=18 + PDF=91200 MemberID=19 + PDF=91200 MemberID=20 + PDF=91200 MemberID=21 + PDF=91200 MemberID=22 + PDF=91200 MemberID=23 + PDF=91200 MemberID=24 + PDF=91200 MemberID=25 + PDF=91200 MemberID=26 + PDF=91200 MemberID=27 + PDF=91200 MemberID=28 + PDF=91200 MemberID=29 + PDF=91200 MemberID=30 + PDF=91200 MemberID=31 + PDF=91200 MemberID=32 + PDF=91200 MemberID=33 + PDF=91200 MemberID=34 + PDF=91200 MemberID=35 + PDF=91200 MemberID=36 + PDF=91200 MemberID=37 + PDF=91200 MemberID=38 + PDF=91200 MemberID=39 + PDF=91200 MemberID=40 + PDF=91200 MemberID=41 + PDF=91200 MemberID=42 + PDF=91200 MemberID=43 + PDF=91200 MemberID=44 + PDF=91200 MemberID=45 + PDF=91200 MemberID=46 + PDF=91200 MemberID=47 + PDF=91200 MemberID=48 + PDF=91200 MemberID=49 + PDF=91200 MemberID=50 + PDF=91200 MemberID=51 + PDF=91200 MemberID=52 + PDF=91200 MemberID=53 + PDF=91200 MemberID=54 + PDF=91200 MemberID=55 + PDF=91200 MemberID=56 + PDF=91200 MemberID=57 + PDF=91200 MemberID=58 + PDF=91200 MemberID=59 + PDF=91200 MemberID=60 + PDF=91200 MemberID=61 + PDF=91200 MemberID=62 + PDF=91200 MemberID=63 + PDF=91200 MemberID=64 + PDF=91200 MemberID=65 + PDF=91200 MemberID=66 + PDF=91200 MemberID=67 + PDF=91200 MemberID=68 + PDF=91200 MemberID=69 + PDF=91200 MemberID=70 + PDF=91200 MemberID=71 + PDF=91200 MemberID=72 + PDF=91200 MemberID=73 + PDF=91200 MemberID=74 + PDF=91200 MemberID=75 + PDF=91200 MemberID=76 + PDF=91200 MemberID=77 + PDF=91200 MemberID=78 + PDF=91200 MemberID=79 + PDF=91200 MemberID=80 + PDF=91200 MemberID=81 + PDF=91200 MemberID=82 + PDF=91200 MemberID=83 + PDF=91200 MemberID=84 + PDF=91200 MemberID=85 + PDF=91200 MemberID=86 + PDF=91200 MemberID=87 + PDF=91200 MemberID=88 + PDF=91200 MemberID=89 + PDF=91200 MemberID=90 + PDF=91200 MemberID=91 + PDF=91200 MemberID=92 + PDF=91200 MemberID=93 + PDF=91200 MemberID=94 + PDF=91200 MemberID=95 + PDF=91200 MemberID=96 + PDF=91200 MemberID=97 + PDF=91200 MemberID=98 + PDF=91200 MemberID=99 + PDF=91200 MemberID=100 + PDF=91200 MemberID=101 + PDF=91200 MemberID=102 + # PDFSET -> PDFSET + # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=90400 MemberID=0 + PDF=90400 MemberID=1 + PDF=90400 MemberID=2 + PDF=90400 MemberID=3 + PDF=90400 MemberID=4 + PDF=90400 MemberID=5 + PDF=90400 MemberID=6 + PDF=90400 MemberID=7 + PDF=90400 MemberID=8 + PDF=90400 MemberID=9 + PDF=90400 MemberID=10 + PDF=90400 MemberID=11 + PDF=90400 MemberID=12 + PDF=90400 MemberID=13 + PDF=90400 MemberID=14 + PDF=90400 MemberID=15 + PDF=90400 MemberID=16 + PDF=90400 MemberID=17 + PDF=90400 MemberID=18 + PDF=90400 MemberID=19 + PDF=90400 MemberID=20 + PDF=90400 MemberID=21 + PDF=90400 MemberID=22 + PDF=90400 MemberID=23 + PDF=90400 MemberID=24 + PDF=90400 MemberID=25 + PDF=90400 MemberID=26 + PDF=90400 MemberID=27 + PDF=90400 MemberID=28 + PDF=90400 MemberID=29 + PDF=90400 MemberID=30 + PDF=90400 MemberID=31 + PDF=90400 MemberID=32 + # PDFSET -> PDFSET + # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 + PDF=91400 MemberID=0 + PDF=91400 MemberID=1 + PDF=91400 MemberID=2 + PDF=91400 MemberID=3 + PDF=91400 MemberID=4 + PDF=91400 MemberID=5 + PDF=91400 MemberID=6 + PDF=91400 MemberID=7 + PDF=91400 MemberID=8 + PDF=91400 MemberID=9 + PDF=91400 MemberID=10 + PDF=91400 MemberID=11 + PDF=91400 MemberID=12 + PDF=91400 MemberID=13 + PDF=91400 MemberID=14 + PDF=91400 MemberID=15 + PDF=91400 MemberID=16 + PDF=91400 MemberID=17 + PDF=91400 MemberID=18 + PDF=91400 MemberID=19 + PDF=91400 MemberID=20 + PDF=91400 MemberID=21 + PDF=91400 MemberID=22 + PDF=91400 MemberID=23 + PDF=91400 MemberID=24 + PDF=91400 MemberID=25 + PDF=91400 MemberID=26 + PDF=91400 MemberID=27 + PDF=91400 MemberID=28 + PDF=91400 MemberID=29 + PDF=91400 MemberID=30 + PDF=91400 MemberID=31 + PDF=91400 MemberID=32 + # PDFSET -> PDFSET + # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61100 MemberID=0 + PDF=61100 MemberID=1 + PDF=61100 MemberID=2 + PDF=61100 MemberID=3 + PDF=61100 MemberID=4 + PDF=61100 MemberID=5 + PDF=61100 MemberID=6 + PDF=61100 MemberID=7 + PDF=61100 MemberID=8 + PDF=61100 MemberID=9 + PDF=61100 MemberID=10 + PDF=61100 MemberID=11 + PDF=61100 MemberID=12 + PDF=61100 MemberID=13 + PDF=61100 MemberID=14 + PDF=61100 MemberID=15 + PDF=61100 MemberID=16 + PDF=61100 MemberID=17 + PDF=61100 MemberID=18 + PDF=61100 MemberID=19 + PDF=61100 MemberID=20 + PDF=61100 MemberID=21 + PDF=61100 MemberID=22 + PDF=61100 MemberID=23 + PDF=61100 MemberID=24 + PDF=61100 MemberID=25 + PDF=61100 MemberID=26 + PDF=61100 MemberID=27 + PDF=61100 MemberID=28 + # PDFSET -> PDFSET + # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); + PDF=61130 MemberID=0 + PDF=61130 MemberID=1 + PDF=61130 MemberID=2 + PDF=61130 MemberID=3 + PDF=61130 MemberID=4 + PDF=61130 MemberID=5 + PDF=61130 MemberID=6 + PDF=61130 MemberID=7 + PDF=61130 MemberID=8 + PDF=61130 MemberID=9 + PDF=61130 MemberID=10 + PDF=61130 MemberID=11 + PDF=61130 MemberID=12 + PDF=61130 MemberID=13 + # PDFSET -> PDFSET + # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. + PDF=61200 MemberID=0 + PDF=61200 MemberID=1 + PDF=61200 MemberID=2 + PDF=61200 MemberID=3 + PDF=61200 MemberID=4 + PDF=61200 MemberID=5 + PDF=61200 MemberID=6 + PDF=61200 MemberID=7 + PDF=61200 MemberID=8 + PDF=61200 MemberID=9 + PDF=61200 MemberID=10 + PDF=61200 MemberID=11 + PDF=61200 MemberID=12 + PDF=61200 MemberID=13 + PDF=61200 MemberID=14 + PDF=61200 MemberID=15 + PDF=61200 MemberID=16 + PDF=61200 MemberID=17 + PDF=61200 MemberID=18 + PDF=61200 MemberID=19 + PDF=61200 MemberID=20 + PDF=61200 MemberID=21 + PDF=61200 MemberID=22 + PDF=61200 MemberID=23 + PDF=61200 MemberID=24 + PDF=61200 MemberID=25 + PDF=61200 MemberID=26 + PDF=61200 MemberID=27 + PDF=61200 MemberID=28 + # PDFSET -> PDFSET + # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); + PDF=61230 MemberID=0 + PDF=61230 MemberID=1 + PDF=61230 MemberID=2 + PDF=61230 MemberID=3 + PDF=61230 MemberID=4 + PDF=61230 MemberID=5 + PDF=61230 MemberID=6 + PDF=61230 MemberID=7 + PDF=61230 MemberID=8 + PDF=61230 MemberID=9 + PDF=61230 MemberID=10 + PDF=61230 MemberID=11 + PDF=61230 MemberID=12 + PDF=61230 MemberID=13 + # PDFSET -> PDFSET + # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference + PDF=13400 MemberID=0 + PDF=13400 MemberID=1 + PDF=13400 MemberID=2 + PDF=13400 MemberID=3 + PDF=13400 MemberID=4 + PDF=13400 MemberID=5 + PDF=13400 MemberID=6 + PDF=13400 MemberID=7 + PDF=13400 MemberID=8 + PDF=13400 MemberID=9 + PDF=13400 MemberID=10 + PDF=13400 MemberID=11 + PDF=13400 MemberID=12 + PDF=13400 MemberID=13 + PDF=13400 MemberID=14 + PDF=13400 MemberID=15 + PDF=13400 MemberID=16 + PDF=13400 MemberID=17 + PDF=13400 MemberID=18 + PDF=13400 MemberID=19 + PDF=13400 MemberID=20 + PDF=13400 MemberID=21 + PDF=13400 MemberID=22 + PDF=13400 MemberID=23 + PDF=13400 MemberID=24 + PDF=13400 MemberID=25 + PDF=13400 MemberID=26 + PDF=13400 MemberID=27 + PDF=13400 MemberID=28 + PDF=13400 MemberID=29 + PDF=13400 MemberID=30 + # PDFSET -> PDFSET + # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. +PDF4LHC15_nnlo_100 description: + PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 + ; PDF symmetric eigenvectors +LUXqed description: + Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P + fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. + Photon generated at scale 100.0 GeV, other partons matched at scale + 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - + 0.00699 * x^{0.000} g(x) at scale 10.0 GeV +Members: + 0 is central + 1-100 map to original PDF members + 101 replacement of CLAS resonance fit with Christy-Bosted fit + 102 rescale-R-0.5 + 103 rescale R in high-Q^2 region with a higher-twist component + 104 use the A1 elastic fit result without the two-photon exchange corrections + 105 use the lower edge of the elastic fit error band + 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 + 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) +Versioning info: + DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) +LUXqed version history for this PDF: + This version corresponds to the long LUXqed17 paper. + PDF=82200 MemberID=0 + PDF=82200 MemberID=1 + PDF=82200 MemberID=2 + PDF=82200 MemberID=3 + PDF=82200 MemberID=4 + PDF=82200 MemberID=5 + PDF=82200 MemberID=6 + PDF=82200 MemberID=7 + PDF=82200 MemberID=8 + PDF=82200 MemberID=9 + PDF=82200 MemberID=10 + PDF=82200 MemberID=11 + PDF=82200 MemberID=12 + PDF=82200 MemberID=13 + PDF=82200 MemberID=14 + PDF=82200 MemberID=15 + PDF=82200 MemberID=16 + PDF=82200 MemberID=17 + PDF=82200 MemberID=18 + PDF=82200 MemberID=19 + PDF=82200 MemberID=20 + PDF=82200 MemberID=21 + PDF=82200 MemberID=22 + PDF=82200 MemberID=23 + PDF=82200 MemberID=24 + PDF=82200 MemberID=25 + PDF=82200 MemberID=26 + PDF=82200 MemberID=27 + PDF=82200 MemberID=28 + PDF=82200 MemberID=29 + PDF=82200 MemberID=30 + PDF=82200 MemberID=31 + PDF=82200 MemberID=32 + PDF=82200 MemberID=33 + PDF=82200 MemberID=34 + PDF=82200 MemberID=35 + PDF=82200 MemberID=36 + PDF=82200 MemberID=37 + PDF=82200 MemberID=38 + PDF=82200 MemberID=39 + PDF=82200 MemberID=40 + PDF=82200 MemberID=41 + PDF=82200 MemberID=42 + PDF=82200 MemberID=43 + PDF=82200 MemberID=44 + PDF=82200 MemberID=45 + PDF=82200 MemberID=46 + PDF=82200 MemberID=47 + PDF=82200 MemberID=48 + PDF=82200 MemberID=49 + PDF=82200 MemberID=50 + PDF=82200 MemberID=51 + PDF=82200 MemberID=52 + PDF=82200 MemberID=53 + PDF=82200 MemberID=54 + PDF=82200 MemberID=55 + PDF=82200 MemberID=56 + PDF=82200 MemberID=57 + PDF=82200 MemberID=58 + PDF=82200 MemberID=59 + PDF=82200 MemberID=60 + PDF=82200 MemberID=61 + PDF=82200 MemberID=62 + PDF=82200 MemberID=63 + PDF=82200 MemberID=64 + PDF=82200 MemberID=65 + PDF=82200 MemberID=66 + PDF=82200 MemberID=67 + PDF=82200 MemberID=68 + PDF=82200 MemberID=69 + PDF=82200 MemberID=70 + PDF=82200 MemberID=71 + PDF=82200 MemberID=72 + PDF=82200 MemberID=73 + PDF=82200 MemberID=74 + PDF=82200 MemberID=75 + PDF=82200 MemberID=76 + PDF=82200 MemberID=77 + PDF=82200 MemberID=78 + PDF=82200 MemberID=79 + PDF=82200 MemberID=80 + PDF=82200 MemberID=81 + PDF=82200 MemberID=82 + PDF=82200 MemberID=83 + PDF=82200 MemberID=84 + PDF=82200 MemberID=85 + PDF=82200 MemberID=86 + PDF=82200 MemberID=87 + PDF=82200 MemberID=88 + PDF=82200 MemberID=89 + PDF=82200 MemberID=90 + PDF=82200 MemberID=91 + PDF=82200 MemberID=92 + PDF=82200 MemberID=93 + PDF=82200 MemberID=94 + PDF=82200 MemberID=95 + PDF=82200 MemberID=96 + PDF=82200 MemberID=97 + PDF=82200 MemberID=98 + PDF=82200 MemberID=99 + PDF=82200 MemberID=100 + PDF=82200 MemberID=101 + PDF=82200 MemberID=102 + PDF=82200 MemberID=103 + PDF=82200 MemberID=104 + PDF=82200 MemberID=105 + PDF=82200 MemberID=106 + PDF=82200 MemberID=107 + # PDFSET -> PDFSET + # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 + PDF=292200 MemberID=0 + PDF=292200 MemberID=1 + PDF=292200 MemberID=2 + PDF=292200 MemberID=3 + PDF=292200 MemberID=4 + PDF=292200 MemberID=5 + PDF=292200 MemberID=6 + PDF=292200 MemberID=7 + PDF=292200 MemberID=8 + PDF=292200 MemberID=9 + PDF=292200 MemberID=10 + PDF=292200 MemberID=11 + PDF=292200 MemberID=12 + PDF=292200 MemberID=13 + PDF=292200 MemberID=14 + PDF=292200 MemberID=15 + PDF=292200 MemberID=16 + PDF=292200 MemberID=17 + PDF=292200 MemberID=18 + PDF=292200 MemberID=19 + PDF=292200 MemberID=20 + PDF=292200 MemberID=21 + PDF=292200 MemberID=22 + PDF=292200 MemberID=23 + PDF=292200 MemberID=24 + PDF=292200 MemberID=25 + PDF=292200 MemberID=26 + PDF=292200 MemberID=27 + PDF=292200 MemberID=28 + PDF=292200 MemberID=29 + PDF=292200 MemberID=30 + PDF=292200 MemberID=31 + PDF=292200 MemberID=32 + PDF=292200 MemberID=33 + PDF=292200 MemberID=34 + PDF=292200 MemberID=35 + PDF=292200 MemberID=36 + PDF=292200 MemberID=37 + PDF=292200 MemberID=38 + PDF=292200 MemberID=39 + PDF=292200 MemberID=40 + PDF=292200 MemberID=41 + PDF=292200 MemberID=42 + PDF=292200 MemberID=43 + PDF=292200 MemberID=44 + PDF=292200 MemberID=45 + PDF=292200 MemberID=46 + PDF=292200 MemberID=47 + PDF=292200 MemberID=48 + PDF=292200 MemberID=49 + PDF=292200 MemberID=50 + PDF=292200 MemberID=51 + PDF=292200 MemberID=52 + PDF=292200 MemberID=53 + PDF=292200 MemberID=54 + PDF=292200 MemberID=55 + PDF=292200 MemberID=56 + PDF=292200 MemberID=57 + PDF=292200 MemberID=58 + PDF=292200 MemberID=59 + PDF=292200 MemberID=60 + PDF=292200 MemberID=61 + PDF=292200 MemberID=62 + PDF=292200 MemberID=63 + PDF=292200 MemberID=64 + PDF=292200 MemberID=65 + PDF=292200 MemberID=66 + PDF=292200 MemberID=67 + PDF=292200 MemberID=68 + PDF=292200 MemberID=69 + PDF=292200 MemberID=70 + PDF=292200 MemberID=71 + PDF=292200 MemberID=72 + PDF=292200 MemberID=73 + PDF=292200 MemberID=74 + PDF=292200 MemberID=75 + PDF=292200 MemberID=76 + PDF=292200 MemberID=77 + PDF=292200 MemberID=78 + PDF=292200 MemberID=79 + PDF=292200 MemberID=80 + PDF=292200 MemberID=81 + PDF=292200 MemberID=82 + PDF=292200 MemberID=83 + PDF=292200 MemberID=84 + PDF=292200 MemberID=85 + PDF=292200 MemberID=86 + PDF=292200 MemberID=87 + PDF=292200 MemberID=88 + PDF=292200 MemberID=89 + PDF=292200 MemberID=90 + PDF=292200 MemberID=91 + PDF=292200 MemberID=92 + PDF=292200 MemberID=93 + PDF=292200 MemberID=94 + PDF=292200 MemberID=95 + PDF=292200 MemberID=96 + PDF=292200 MemberID=97 + PDF=292200 MemberID=98 + PDF=292200 MemberID=99 + PDF=292200 MemberID=100 + PDF=292200 MemberID=101 + PDF=292200 MemberID=102 + # PDFSET -> PDF + PDF=292600 MemberID=0 + PDF=315000 MemberID=0 + PDF=315200 MemberID=0 + PDF=262000 MemberID=0 + PDF=263000 MemberID=0 diff --git a/testFiles/WJ_MiNNLO_weightinfo.txt b/testFiles/WJ_MiNNLO_weightinfo.txt new file mode 100644 index 0000000000000..773c0d3c15e91 --- /dev/null +++ b/testFiles/WJ_MiNNLO_weightinfo.txt @@ -0,0 +1,1612 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W9-denom.top + + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W9-denom.top + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + lhapdf=306000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306057 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306058 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306059 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306060 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306061 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306062 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306063 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306064 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306066 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306067 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306068 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306070 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306071 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306072 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306073 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306074 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306075 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306076 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306077 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306078 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306079 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306080 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306081 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306082 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306083 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306084 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306085 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306086 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306087 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306088 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306089 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306090 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306091 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306092 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306093 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306094 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306095 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306096 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306097 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306098 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306099 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325701 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325702 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325703 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325704 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325705 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325706 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325707 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325708 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325709 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325710 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325711 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325712 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325713 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325714 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325715 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325716 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325717 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325718 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325719 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325720 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325721 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325722 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325723 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325724 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325725 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325726 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325727 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325728 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325729 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325730 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325731 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325732 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325733 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325734 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325735 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325736 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325737 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325738 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325739 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325761 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325762 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325763 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325764 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325765 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325766 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325767 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325768 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325769 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325770 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325771 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325772 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325773 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325774 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325775 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325776 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325777 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325778 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325779 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325780 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325781 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325782 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325783 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325784 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325785 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325786 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325787 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325788 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325789 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325790 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325791 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325792 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325793 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325794 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325795 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325796 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325797 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325798 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325799 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325800 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325901 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325902 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325903 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325904 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325905 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325906 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325907 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325908 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325909 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325910 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325911 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325912 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325913 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325914 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325915 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325916 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325917 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325918 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325919 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325920 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325921 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325922 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325923 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325924 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325925 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325926 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325927 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325928 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325929 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325930 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325931 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325932 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325933 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325934 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325935 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325936 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325937 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325938 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325939 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325940 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325941 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325942 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325943 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325944 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325945 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325946 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325947 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325948 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325949 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325950 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325951 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325952 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325953 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325954 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325955 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325956 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325957 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325958 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325959 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325960 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325961 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325962 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325963 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325964 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325965 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325966 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325967 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325968 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325969 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325970 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325971 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325972 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325973 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325974 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325975 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325976 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325977 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325978 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325979 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325980 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325981 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325982 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325983 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325984 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325985 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325986 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325987 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325988 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325989 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325990 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325991 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325992 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325993 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325994 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325995 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325996 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325997 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325998 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325999 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326103 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326104 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326105 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326106 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326107 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326108 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326109 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326110 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326111 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326112 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326113 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326114 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326115 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326116 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326117 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326118 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326119 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326120 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326121 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326122 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326123 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326124 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326125 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326126 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326127 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326128 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326129 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326130 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326131 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326132 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326133 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326134 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326135 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326136 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326137 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326138 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326139 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326140 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326141 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326142 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326143 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326144 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326145 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326146 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326147 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326148 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326149 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326150 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326151 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326152 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326153 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326154 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326155 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326156 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326157 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326158 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326159 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326160 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326161 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326162 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326163 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326164 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326165 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326166 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326167 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326168 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326169 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326170 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326171 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326172 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326173 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326174 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326175 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326176 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326177 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326178 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326179 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326180 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326181 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326182 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326183 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326184 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326185 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326186 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326187 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326188 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326189 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326190 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326191 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326192 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326193 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326194 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326195 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326196 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326197 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326198 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326199 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326351 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326352 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326353 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326354 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326355 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326356 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326357 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326358 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326359 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326363 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326364 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326365 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326366 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326367 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326368 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326369 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326370 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326371 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326372 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326373 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326374 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326375 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326376 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326377 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326378 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326379 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326380 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326381 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326382 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326383 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326384 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326385 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326386 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326387 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326388 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326389 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326390 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326391 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326392 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326393 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326394 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326395 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326396 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326397 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326398 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326399 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326400 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42560 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42561 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42562 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42563 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42564 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42565 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42566 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42567 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42568 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42569 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42570 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42571 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42572 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42573 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42574 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42575 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42576 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42577 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42578 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42579 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42580 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42581 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42582 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42583 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42584 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42585 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42586 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42587 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42588 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42589 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61201 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61202 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61203 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61204 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61205 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61206 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61207 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61208 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61209 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61210 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61211 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61212 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61213 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61214 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61215 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61216 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61217 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61218 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61219 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61220 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61221 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61222 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61223 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61224 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61225 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61226 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61227 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61228 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61230 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61231 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61232 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61233 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61234 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61235 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61236 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61237 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61238 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61239 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61240 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61241 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61242 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61243 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + diff --git a/testFiles/WJ_NNLOPS_weightinfo.txt b/testFiles/WJ_NNLOPS_weightinfo.txt new file mode 100644 index 0000000000000..773c0d3c15e91 --- /dev/null +++ b/testFiles/WJ_NNLOPS_weightinfo.txt @@ -0,0 +1,1612 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W9-denom.top + + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W9-denom.top + lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W1-denom.top + lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W2-denom.top + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W3-denom.top + lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W4-denom.top + lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W5-denom.top + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W6-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W7-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W8-denom.top + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W9-denom.top + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + lhapdf=306000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306057 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306058 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306059 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306060 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306061 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306062 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306063 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306064 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306066 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306067 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306068 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306070 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306071 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306072 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306073 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306074 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306075 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306076 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306077 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306078 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306079 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306080 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306081 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306082 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306083 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306084 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306085 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306086 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306087 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306088 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306089 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306090 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306091 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306092 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306093 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306094 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306095 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306096 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306097 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306098 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306099 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=306102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=322900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=323900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325701 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325702 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325703 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325704 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325705 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325706 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325707 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325708 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325709 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325710 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325711 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325712 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325713 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325714 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325715 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325716 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325717 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325718 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325719 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325720 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325721 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325722 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325723 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325724 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325725 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325726 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325727 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325728 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325729 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325730 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325731 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325732 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325733 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325734 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325735 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325736 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325737 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325738 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325739 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325761 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325762 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325763 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325764 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325765 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325766 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325767 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325768 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325769 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325770 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325771 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325772 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325773 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325774 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325775 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325776 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325777 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325778 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325779 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325780 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325781 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325782 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325783 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325784 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325785 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325786 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325787 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325788 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325789 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325790 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325791 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325792 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325793 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325794 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325795 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325796 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325797 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325798 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325799 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325800 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325901 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325902 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325903 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325904 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325905 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325906 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325907 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325908 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325909 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325910 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325911 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325912 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325913 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325914 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325915 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325916 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325917 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325918 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325919 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325920 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325921 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325922 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325923 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325924 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325925 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325926 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325927 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325928 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325929 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325930 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325931 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325932 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325933 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325934 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325935 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325936 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325937 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325938 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325939 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325940 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325941 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325942 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325943 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325944 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325945 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325946 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325947 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325948 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325949 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325950 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325951 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325952 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325953 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325954 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325955 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325956 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325957 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325958 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325959 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325960 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325961 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325962 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325963 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325964 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325965 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325966 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325967 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325968 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325969 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325970 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325971 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325972 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325973 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325974 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325975 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325976 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325977 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325978 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325979 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325980 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325981 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325982 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325983 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325984 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325985 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325986 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325987 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325988 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325989 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325990 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325991 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325992 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325993 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325994 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325995 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325996 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325997 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325998 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=325999 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326103 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326104 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326105 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326106 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326107 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326108 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326109 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326110 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326111 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326112 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326113 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326114 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326115 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326116 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326117 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326118 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326119 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326120 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326121 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326122 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326123 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326124 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326125 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326126 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326127 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326128 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326129 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326130 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326131 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326132 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326133 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326134 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326135 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326136 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326137 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326138 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326139 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326140 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326141 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326142 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326143 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326144 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326145 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326146 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326147 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326148 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326149 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326150 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326151 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326152 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326153 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326154 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326155 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326156 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326157 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326158 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326159 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326160 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326161 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326162 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326163 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326164 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326165 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326166 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326167 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326168 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326169 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326170 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326171 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326172 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326173 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326174 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326175 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326176 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326177 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326178 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326179 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326180 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326181 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326182 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326183 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326184 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326185 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326186 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326187 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326188 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326189 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326190 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326191 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326192 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326193 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326194 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326195 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326196 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326197 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326198 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326199 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326351 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326352 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326353 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326354 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326355 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326356 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326357 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326358 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326359 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326363 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326364 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326365 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326366 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326367 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326368 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326369 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326370 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326371 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326372 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326373 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326374 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326375 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326376 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326377 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326378 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326379 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326380 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326381 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326382 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326383 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326384 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326385 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326386 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326387 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326388 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326389 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326390 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326391 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326392 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326393 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326394 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326395 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326396 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326397 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326398 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326399 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=326400 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=13069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=25362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42560 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42561 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42562 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42563 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42564 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42565 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42566 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42567 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42568 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42569 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42570 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42571 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42572 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42573 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42574 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42575 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42576 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42577 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42578 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42579 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42580 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42581 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42582 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42583 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42584 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42585 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42586 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42587 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42588 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=42589 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61201 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61202 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61203 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61204 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61205 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61206 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61207 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61208 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61209 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61210 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61211 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61212 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61213 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61214 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61215 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61216 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61217 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61218 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61219 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61220 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61221 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61222 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61223 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61224 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61225 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61226 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61227 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61228 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61230 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61231 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61232 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61233 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61234 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61235 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61236 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61237 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61238 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61239 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61240 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61241 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61242 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61243 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + lhapdf=61760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top + diff --git a/testFiles/WZVBS_2017_weightInfo.txt b/testFiles/WZVBS_2017_weightInfo.txt new file mode 100644 index 0000000000000..79718529a993b --- /dev/null +++ b/testFiles/WZVBS_2017_weightInfo.txt @@ -0,0 +1,1180 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/WLLJJ_WToLNu_EWK_TuneCP5_13TeV_madgraph-madspin-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15-v1/50000/7E4F4321-598D-6A45-9681-8F8BA9817ECE.root + +<weight id="1001" MUR="1.0" MUF="1.0" PDF="320900" > </weight> +<weightgroup name="Central scale variation" combine="envelope"> +<weight id="1002" MUR="1.0" MUF="1.0" DYN_SCALE="1" PDF="320900" > dyn_scale_choice=sum pt </weight> +<weight id="1003" MUR="1.0" MUF="1.0" DYN_SCALE="2" PDF="320900" > dyn_scale_choice=HT </weight> +<weight id="1004" MUR="1.0" MUF="1.0" DYN_SCALE="3" PDF="320900" > dyn_scale_choice=HT/2 </weight> +<weight id="1005" MUR="1.0" MUF="1.0" DYN_SCALE="4" PDF="320900" > dyn_scale_choice=sqrts </weight> +<weight id="1006" MUR="2.0" MUF="1.0" PDF="320900" > MUR=2.0 </weight> +<weight id="1007" MUR="2.0" MUF="1.0" DYN_SCALE="1" PDF="320900" > MUR=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1008" MUR="2.0" MUF="1.0" DYN_SCALE="2" PDF="320900" > MUR=2.0 dyn_scale_choice=HT </weight> +<weight id="1009" MUR="2.0" MUF="1.0" DYN_SCALE="3" PDF="320900" > MUR=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1010" MUR="2.0" MUF="1.0" DYN_SCALE="4" PDF="320900" > MUR=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1011" MUR="0.5" MUF="1.0" PDF="320900" > MUR=0.5 </weight> +<weight id="1012" MUR="0.5" MUF="1.0" DYN_SCALE="1" PDF="320900" > MUR=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1013" MUR="0.5" MUF="1.0" DYN_SCALE="2" PDF="320900" > MUR=0.5 dyn_scale_choice=HT </weight> +<weight id="1014" MUR="0.5" MUF="1.0" DYN_SCALE="3" PDF="320900" > MUR=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1015" MUR="0.5" MUF="1.0" DYN_SCALE="4" PDF="320900" > MUR=0.5 dyn_scale_choice=sqrts </weight> +<weight id="1016" MUR="1.0" MUF="2.0" PDF="320900" > MUF=2.0 </weight> +<weight id="1017" MUR="1.0" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUF=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1018" MUR="1.0" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUF=2.0 dyn_scale_choice=HT </weight> +<weight id="1019" MUR="1.0" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUF=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1020" MUR="1.0" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUF=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1021" MUR="2.0" MUF="2.0" PDF="320900" > MUR=2.0 MUF=2.0 </weight> +<weight id="1022" MUR="2.0" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1023" MUR="2.0" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=HT </weight> +<weight id="1024" MUR="2.0" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1025" MUR="2.0" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1026" MUR="0.5" MUF="2.0" PDF="320900" > MUR=0.5 MUF=2.0 </weight> +<weight id="1027" MUR="0.5" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt </weight> +<weight id="1028" MUR="0.5" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=HT </weight> +<weight id="1029" MUR="0.5" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 </weight> +<weight id="1030" MUR="0.5" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts </weight> +<weight id="1031" MUR="1.0" MUF="0.5" PDF="320900" > MUF=0.5 </weight> +<weight id="1032" MUR="1.0" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUF=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1033" MUR="1.0" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUF=0.5 dyn_scale_choice=HT </weight> +<weight id="1034" MUR="1.0" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUF=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1035" MUR="1.0" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUF=0.5 dyn_scale_choice=sqrts </weight> +<weight id="1036" MUR="2.0" MUF="0.5" PDF="320900" > MUR=2.0 MUF=0.5 </weight> +<weight id="1037" MUR="2.0" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1038" MUR="2.0" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=HT </weight> +<weight id="1039" MUR="2.0" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1040" MUR="2.0" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts </weight> +<weight id="1041" MUR="0.5" MUF="0.5" PDF="320900" > MUR=0.5 MUF=0.5 </weight> +<weight id="1042" MUR="0.5" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt </weight> +<weight id="1043" MUR="0.5" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=HT </weight> +<weight id="1044" MUR="0.5" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 </weight> +<weight id="1045" MUR="0.5" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts </weight> +</weightgroup> # scale +<weightgroup name="NNPDF31_nnlo_hessian_pdfas" combine="symmhessian+as"> # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 +<weight id="1046" MUR="1.0" MUF="1.0" PDF="306000" > PDF=306000 MemberID=0 </weight> +<weight id="1047" MUR="1.0" MUF="1.0" PDF="306001" > PDF=306000 MemberID=1 </weight> +<weight id="1048" MUR="1.0" MUF="1.0" PDF="306002" > PDF=306000 MemberID=2 </weight> +<weight id="1049" MUR="1.0" MUF="1.0" PDF="306003" > PDF=306000 MemberID=3 </weight> +<weight id="1050" MUR="1.0" MUF="1.0" PDF="306004" > PDF=306000 MemberID=4 </weight> +<weight id="1051" MUR="1.0" MUF="1.0" PDF="306005" > PDF=306000 MemberID=5 </weight> +<weight id="1052" MUR="1.0" MUF="1.0" PDF="306006" > PDF=306000 MemberID=6 </weight> +<weight id="1053" MUR="1.0" MUF="1.0" PDF="306007" > PDF=306000 MemberID=7 </weight> +<weight id="1054" MUR="1.0" MUF="1.0" PDF="306008" > PDF=306000 MemberID=8 </weight> +<weight id="1055" MUR="1.0" MUF="1.0" PDF="306009" > PDF=306000 MemberID=9 </weight> +<weight id="1056" MUR="1.0" MUF="1.0" PDF="306010" > PDF=306000 MemberID=10 </weight> +<weight id="1057" MUR="1.0" MUF="1.0" PDF="306011" > PDF=306000 MemberID=11 </weight> +<weight id="1058" MUR="1.0" MUF="1.0" PDF="306012" > PDF=306000 MemberID=12 </weight> +<weight id="1059" MUR="1.0" MUF="1.0" PDF="306013" > PDF=306000 MemberID=13 </weight> +<weight id="1060" MUR="1.0" MUF="1.0" PDF="306014" > PDF=306000 MemberID=14 </weight> +<weight id="1061" MUR="1.0" MUF="1.0" PDF="306015" > PDF=306000 MemberID=15 </weight> +<weight id="1062" MUR="1.0" MUF="1.0" PDF="306016" > PDF=306000 MemberID=16 </weight> +<weight id="1063" MUR="1.0" MUF="1.0" PDF="306017" > PDF=306000 MemberID=17 </weight> +<weight id="1064" MUR="1.0" MUF="1.0" PDF="306018" > PDF=306000 MemberID=18 </weight> +<weight id="1065" MUR="1.0" MUF="1.0" PDF="306019" > PDF=306000 MemberID=19 </weight> +<weight id="1066" MUR="1.0" MUF="1.0" PDF="306020" > PDF=306000 MemberID=20 </weight> +<weight id="1067" MUR="1.0" MUF="1.0" PDF="306021" > PDF=306000 MemberID=21 </weight> +<weight id="1068" MUR="1.0" MUF="1.0" PDF="306022" > PDF=306000 MemberID=22 </weight> +<weight id="1069" MUR="1.0" MUF="1.0" PDF="306023" > PDF=306000 MemberID=23 </weight> +<weight id="1070" MUR="1.0" MUF="1.0" PDF="306024" > PDF=306000 MemberID=24 </weight> +<weight id="1071" MUR="1.0" MUF="1.0" PDF="306025" > PDF=306000 MemberID=25 </weight> +<weight id="1072" MUR="1.0" MUF="1.0" PDF="306026" > PDF=306000 MemberID=26 </weight> +<weight id="1073" MUR="1.0" MUF="1.0" PDF="306027" > PDF=306000 MemberID=27 </weight> +<weight id="1074" MUR="1.0" MUF="1.0" PDF="306028" > PDF=306000 MemberID=28 </weight> +<weight id="1075" MUR="1.0" MUF="1.0" PDF="306029" > PDF=306000 MemberID=29 </weight> +<weight id="1076" MUR="1.0" MUF="1.0" PDF="306030" > PDF=306000 MemberID=30 </weight> +<weight id="1077" MUR="1.0" MUF="1.0" PDF="306031" > PDF=306000 MemberID=31 </weight> +<weight id="1078" MUR="1.0" MUF="1.0" PDF="306032" > PDF=306000 MemberID=32 </weight> +<weight id="1079" MUR="1.0" MUF="1.0" PDF="306033" > PDF=306000 MemberID=33 </weight> +<weight id="1080" MUR="1.0" MUF="1.0" PDF="306034" > PDF=306000 MemberID=34 </weight> +<weight id="1081" MUR="1.0" MUF="1.0" PDF="306035" > PDF=306000 MemberID=35 </weight> +<weight id="1082" MUR="1.0" MUF="1.0" PDF="306036" > PDF=306000 MemberID=36 </weight> +<weight id="1083" MUR="1.0" MUF="1.0" PDF="306037" > PDF=306000 MemberID=37 </weight> +<weight id="1084" MUR="1.0" MUF="1.0" PDF="306038" > PDF=306000 MemberID=38 </weight> +<weight id="1085" MUR="1.0" MUF="1.0" PDF="306039" > PDF=306000 MemberID=39 </weight> +<weight id="1086" MUR="1.0" MUF="1.0" PDF="306040" > PDF=306000 MemberID=40 </weight> +<weight id="1087" MUR="1.0" MUF="1.0" PDF="306041" > PDF=306000 MemberID=41 </weight> +<weight id="1088" MUR="1.0" MUF="1.0" PDF="306042" > PDF=306000 MemberID=42 </weight> +<weight id="1089" MUR="1.0" MUF="1.0" PDF="306043" > PDF=306000 MemberID=43 </weight> +<weight id="1090" MUR="1.0" MUF="1.0" PDF="306044" > PDF=306000 MemberID=44 </weight> +<weight id="1091" MUR="1.0" MUF="1.0" PDF="306045" > PDF=306000 MemberID=45 </weight> +<weight id="1092" MUR="1.0" MUF="1.0" PDF="306046" > PDF=306000 MemberID=46 </weight> +<weight id="1093" MUR="1.0" MUF="1.0" PDF="306047" > PDF=306000 MemberID=47 </weight> +<weight id="1094" MUR="1.0" MUF="1.0" PDF="306048" > PDF=306000 MemberID=48 </weight> +<weight id="1095" MUR="1.0" MUF="1.0" PDF="306049" > PDF=306000 MemberID=49 </weight> +<weight id="1096" MUR="1.0" MUF="1.0" PDF="306050" > PDF=306000 MemberID=50 </weight> +<weight id="1097" MUR="1.0" MUF="1.0" PDF="306051" > PDF=306000 MemberID=51 </weight> +<weight id="1098" MUR="1.0" MUF="1.0" PDF="306052" > PDF=306000 MemberID=52 </weight> +<weight id="1099" MUR="1.0" MUF="1.0" PDF="306053" > PDF=306000 MemberID=53 </weight> +<weight id="1100" MUR="1.0" MUF="1.0" PDF="306054" > PDF=306000 MemberID=54 </weight> +<weight id="1101" MUR="1.0" MUF="1.0" PDF="306055" > PDF=306000 MemberID=55 </weight> +<weight id="1102" MUR="1.0" MUF="1.0" PDF="306056" > PDF=306000 MemberID=56 </weight> +<weight id="1103" MUR="1.0" MUF="1.0" PDF="306057" > PDF=306000 MemberID=57 </weight> +<weight id="1104" MUR="1.0" MUF="1.0" PDF="306058" > PDF=306000 MemberID=58 </weight> +<weight id="1105" MUR="1.0" MUF="1.0" PDF="306059" > PDF=306000 MemberID=59 </weight> +<weight id="1106" MUR="1.0" MUF="1.0" PDF="306060" > PDF=306000 MemberID=60 </weight> +<weight id="1107" MUR="1.0" MUF="1.0" PDF="306061" > PDF=306000 MemberID=61 </weight> +<weight id="1108" MUR="1.0" MUF="1.0" PDF="306062" > PDF=306000 MemberID=62 </weight> +<weight id="1109" MUR="1.0" MUF="1.0" PDF="306063" > PDF=306000 MemberID=63 </weight> +<weight id="1110" MUR="1.0" MUF="1.0" PDF="306064" > PDF=306000 MemberID=64 </weight> +<weight id="1111" MUR="1.0" MUF="1.0" PDF="306065" > PDF=306000 MemberID=65 </weight> +<weight id="1112" MUR="1.0" MUF="1.0" PDF="306066" > PDF=306000 MemberID=66 </weight> +<weight id="1113" MUR="1.0" MUF="1.0" PDF="306067" > PDF=306000 MemberID=67 </weight> +<weight id="1114" MUR="1.0" MUF="1.0" PDF="306068" > PDF=306000 MemberID=68 </weight> +<weight id="1115" MUR="1.0" MUF="1.0" PDF="306069" > PDF=306000 MemberID=69 </weight> +<weight id="1116" MUR="1.0" MUF="1.0" PDF="306070" > PDF=306000 MemberID=70 </weight> +<weight id="1117" MUR="1.0" MUF="1.0" PDF="306071" > PDF=306000 MemberID=71 </weight> +<weight id="1118" MUR="1.0" MUF="1.0" PDF="306072" > PDF=306000 MemberID=72 </weight> +<weight id="1119" MUR="1.0" MUF="1.0" PDF="306073" > PDF=306000 MemberID=73 </weight> +<weight id="1120" MUR="1.0" MUF="1.0" PDF="306074" > PDF=306000 MemberID=74 </weight> +<weight id="1121" MUR="1.0" MUF="1.0" PDF="306075" > PDF=306000 MemberID=75 </weight> +<weight id="1122" MUR="1.0" MUF="1.0" PDF="306076" > PDF=306000 MemberID=76 </weight> +<weight id="1123" MUR="1.0" MUF="1.0" PDF="306077" > PDF=306000 MemberID=77 </weight> +<weight id="1124" MUR="1.0" MUF="1.0" PDF="306078" > PDF=306000 MemberID=78 </weight> +<weight id="1125" MUR="1.0" MUF="1.0" PDF="306079" > PDF=306000 MemberID=79 </weight> +<weight id="1126" MUR="1.0" MUF="1.0" PDF="306080" > PDF=306000 MemberID=80 </weight> +<weight id="1127" MUR="1.0" MUF="1.0" PDF="306081" > PDF=306000 MemberID=81 </weight> +<weight id="1128" MUR="1.0" MUF="1.0" PDF="306082" > PDF=306000 MemberID=82 </weight> +<weight id="1129" MUR="1.0" MUF="1.0" PDF="306083" > PDF=306000 MemberID=83 </weight> +<weight id="1130" MUR="1.0" MUF="1.0" PDF="306084" > PDF=306000 MemberID=84 </weight> +<weight id="1131" MUR="1.0" MUF="1.0" PDF="306085" > PDF=306000 MemberID=85 </weight> +<weight id="1132" MUR="1.0" MUF="1.0" PDF="306086" > PDF=306000 MemberID=86 </weight> +<weight id="1133" MUR="1.0" MUF="1.0" PDF="306087" > PDF=306000 MemberID=87 </weight> +<weight id="1134" MUR="1.0" MUF="1.0" PDF="306088" > PDF=306000 MemberID=88 </weight> +<weight id="1135" MUR="1.0" MUF="1.0" PDF="306089" > PDF=306000 MemberID=89 </weight> +<weight id="1136" MUR="1.0" MUF="1.0" PDF="306090" > PDF=306000 MemberID=90 </weight> +<weight id="1137" MUR="1.0" MUF="1.0" PDF="306091" > PDF=306000 MemberID=91 </weight> +<weight id="1138" MUR="1.0" MUF="1.0" PDF="306092" > PDF=306000 MemberID=92 </weight> +<weight id="1139" MUR="1.0" MUF="1.0" PDF="306093" > PDF=306000 MemberID=93 </weight> +<weight id="1140" MUR="1.0" MUF="1.0" PDF="306094" > PDF=306000 MemberID=94 </weight> +<weight id="1141" MUR="1.0" MUF="1.0" PDF="306095" > PDF=306000 MemberID=95 </weight> +<weight id="1142" MUR="1.0" MUF="1.0" PDF="306096" > PDF=306000 MemberID=96 </weight> +<weight id="1143" MUR="1.0" MUF="1.0" PDF="306097" > PDF=306000 MemberID=97 </weight> +<weight id="1144" MUR="1.0" MUF="1.0" PDF="306098" > PDF=306000 MemberID=98 </weight> +<weight id="1145" MUR="1.0" MUF="1.0" PDF="306099" > PDF=306000 MemberID=99 </weight> +<weight id="1146" MUR="1.0" MUF="1.0" PDF="306100" > PDF=306000 MemberID=100 </weight> +<weight id="1147" MUR="1.0" MUF="1.0" PDF="306101" > PDF=306000 MemberID=101 </weight> +<weight id="1148" MUR="1.0" MUF="1.0" PDF="306102" > PDF=306000 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1149" MUR="1.0" MUF="1.0" PDF="322500" > PDF=322500 MemberID=0 </weight> +<weight id="1150" MUR="1.0" MUF="1.0" PDF="322700" > PDF=322700 MemberID=0 </weight> +<weight id="1151" MUR="1.0" MUF="1.0" PDF="322900" > PDF=322900 MemberID=0 </weight> +<weight id="1152" MUR="1.0" MUF="1.0" PDF="323100" > PDF=323100 MemberID=0 </weight> +<weight id="1153" MUR="1.0" MUF="1.0" PDF="323300" > PDF=323300 MemberID=0 </weight> +<weight id="1154" MUR="1.0" MUF="1.0" PDF="323500" > PDF=323500 MemberID=0 </weight> +<weight id="1155" MUR="1.0" MUF="1.0" PDF="323700" > PDF=323700 MemberID=0 </weight> +<weight id="1156" MUR="1.0" MUF="1.0" PDF="323900" > PDF=323900 MemberID=0 </weight> +<weightgroup name="NNPDF31_nlo_hessian_pdfas" combine="symmhessian+as"> # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 +<weight id="1157" MUR="1.0" MUF="1.0" PDF="305800" > PDF=305800 MemberID=0 </weight> +<weight id="1158" MUR="1.0" MUF="1.0" PDF="305801" > PDF=305800 MemberID=1 </weight> +<weight id="1159" MUR="1.0" MUF="1.0" PDF="305802" > PDF=305800 MemberID=2 </weight> +<weight id="1160" MUR="1.0" MUF="1.0" PDF="305803" > PDF=305800 MemberID=3 </weight> +<weight id="1161" MUR="1.0" MUF="1.0" PDF="305804" > PDF=305800 MemberID=4 </weight> +<weight id="1162" MUR="1.0" MUF="1.0" PDF="305805" > PDF=305800 MemberID=5 </weight> +<weight id="1163" MUR="1.0" MUF="1.0" PDF="305806" > PDF=305800 MemberID=6 </weight> +<weight id="1164" MUR="1.0" MUF="1.0" PDF="305807" > PDF=305800 MemberID=7 </weight> +<weight id="1165" MUR="1.0" MUF="1.0" PDF="305808" > PDF=305800 MemberID=8 </weight> +<weight id="1166" MUR="1.0" MUF="1.0" PDF="305809" > PDF=305800 MemberID=9 </weight> +<weight id="1167" MUR="1.0" MUF="1.0" PDF="305810" > PDF=305800 MemberID=10 </weight> +<weight id="1168" MUR="1.0" MUF="1.0" PDF="305811" > PDF=305800 MemberID=11 </weight> +<weight id="1169" MUR="1.0" MUF="1.0" PDF="305812" > PDF=305800 MemberID=12 </weight> +<weight id="1170" MUR="1.0" MUF="1.0" PDF="305813" > PDF=305800 MemberID=13 </weight> +<weight id="1171" MUR="1.0" MUF="1.0" PDF="305814" > PDF=305800 MemberID=14 </weight> +<weight id="1172" MUR="1.0" MUF="1.0" PDF="305815" > PDF=305800 MemberID=15 </weight> +<weight id="1173" MUR="1.0" MUF="1.0" PDF="305816" > PDF=305800 MemberID=16 </weight> +<weight id="1174" MUR="1.0" MUF="1.0" PDF="305817" > PDF=305800 MemberID=17 </weight> +<weight id="1175" MUR="1.0" MUF="1.0" PDF="305818" > PDF=305800 MemberID=18 </weight> +<weight id="1176" MUR="1.0" MUF="1.0" PDF="305819" > PDF=305800 MemberID=19 </weight> +<weight id="1177" MUR="1.0" MUF="1.0" PDF="305820" > PDF=305800 MemberID=20 </weight> +<weight id="1178" MUR="1.0" MUF="1.0" PDF="305821" > PDF=305800 MemberID=21 </weight> +<weight id="1179" MUR="1.0" MUF="1.0" PDF="305822" > PDF=305800 MemberID=22 </weight> +<weight id="1180" MUR="1.0" MUF="1.0" PDF="305823" > PDF=305800 MemberID=23 </weight> +<weight id="1181" MUR="1.0" MUF="1.0" PDF="305824" > PDF=305800 MemberID=24 </weight> +<weight id="1182" MUR="1.0" MUF="1.0" PDF="305825" > PDF=305800 MemberID=25 </weight> +<weight id="1183" MUR="1.0" MUF="1.0" PDF="305826" > PDF=305800 MemberID=26 </weight> +<weight id="1184" MUR="1.0" MUF="1.0" PDF="305827" > PDF=305800 MemberID=27 </weight> +<weight id="1185" MUR="1.0" MUF="1.0" PDF="305828" > PDF=305800 MemberID=28 </weight> +<weight id="1186" MUR="1.0" MUF="1.0" PDF="305829" > PDF=305800 MemberID=29 </weight> +<weight id="1187" MUR="1.0" MUF="1.0" PDF="305830" > PDF=305800 MemberID=30 </weight> +<weight id="1188" MUR="1.0" MUF="1.0" PDF="305831" > PDF=305800 MemberID=31 </weight> +<weight id="1189" MUR="1.0" MUF="1.0" PDF="305832" > PDF=305800 MemberID=32 </weight> +<weight id="1190" MUR="1.0" MUF="1.0" PDF="305833" > PDF=305800 MemberID=33 </weight> +<weight id="1191" MUR="1.0" MUF="1.0" PDF="305834" > PDF=305800 MemberID=34 </weight> +<weight id="1192" MUR="1.0" MUF="1.0" PDF="305835" > PDF=305800 MemberID=35 </weight> +<weight id="1193" MUR="1.0" MUF="1.0" PDF="305836" > PDF=305800 MemberID=36 </weight> +<weight id="1194" MUR="1.0" MUF="1.0" PDF="305837" > PDF=305800 MemberID=37 </weight> +<weight id="1195" MUR="1.0" MUF="1.0" PDF="305838" > PDF=305800 MemberID=38 </weight> +<weight id="1196" MUR="1.0" MUF="1.0" PDF="305839" > PDF=305800 MemberID=39 </weight> +<weight id="1197" MUR="1.0" MUF="1.0" PDF="305840" > PDF=305800 MemberID=40 </weight> +<weight id="1198" MUR="1.0" MUF="1.0" PDF="305841" > PDF=305800 MemberID=41 </weight> +<weight id="1199" MUR="1.0" MUF="1.0" PDF="305842" > PDF=305800 MemberID=42 </weight> +<weight id="1200" MUR="1.0" MUF="1.0" PDF="305843" > PDF=305800 MemberID=43 </weight> +<weight id="1201" MUR="1.0" MUF="1.0" PDF="305844" > PDF=305800 MemberID=44 </weight> +<weight id="1202" MUR="1.0" MUF="1.0" PDF="305845" > PDF=305800 MemberID=45 </weight> +<weight id="1203" MUR="1.0" MUF="1.0" PDF="305846" > PDF=305800 MemberID=46 </weight> +<weight id="1204" MUR="1.0" MUF="1.0" PDF="305847" > PDF=305800 MemberID=47 </weight> +<weight id="1205" MUR="1.0" MUF="1.0" PDF="305848" > PDF=305800 MemberID=48 </weight> +<weight id="1206" MUR="1.0" MUF="1.0" PDF="305849" > PDF=305800 MemberID=49 </weight> +<weight id="1207" MUR="1.0" MUF="1.0" PDF="305850" > PDF=305800 MemberID=50 </weight> +<weight id="1208" MUR="1.0" MUF="1.0" PDF="305851" > PDF=305800 MemberID=51 </weight> +<weight id="1209" MUR="1.0" MUF="1.0" PDF="305852" > PDF=305800 MemberID=52 </weight> +<weight id="1210" MUR="1.0" MUF="1.0" PDF="305853" > PDF=305800 MemberID=53 </weight> +<weight id="1211" MUR="1.0" MUF="1.0" PDF="305854" > PDF=305800 MemberID=54 </weight> +<weight id="1212" MUR="1.0" MUF="1.0" PDF="305855" > PDF=305800 MemberID=55 </weight> +<weight id="1213" MUR="1.0" MUF="1.0" PDF="305856" > PDF=305800 MemberID=56 </weight> +<weight id="1214" MUR="1.0" MUF="1.0" PDF="305857" > PDF=305800 MemberID=57 </weight> +<weight id="1215" MUR="1.0" MUF="1.0" PDF="305858" > PDF=305800 MemberID=58 </weight> +<weight id="1216" MUR="1.0" MUF="1.0" PDF="305859" > PDF=305800 MemberID=59 </weight> +<weight id="1217" MUR="1.0" MUF="1.0" PDF="305860" > PDF=305800 MemberID=60 </weight> +<weight id="1218" MUR="1.0" MUF="1.0" PDF="305861" > PDF=305800 MemberID=61 </weight> +<weight id="1219" MUR="1.0" MUF="1.0" PDF="305862" > PDF=305800 MemberID=62 </weight> +<weight id="1220" MUR="1.0" MUF="1.0" PDF="305863" > PDF=305800 MemberID=63 </weight> +<weight id="1221" MUR="1.0" MUF="1.0" PDF="305864" > PDF=305800 MemberID=64 </weight> +<weight id="1222" MUR="1.0" MUF="1.0" PDF="305865" > PDF=305800 MemberID=65 </weight> +<weight id="1223" MUR="1.0" MUF="1.0" PDF="305866" > PDF=305800 MemberID=66 </weight> +<weight id="1224" MUR="1.0" MUF="1.0" PDF="305867" > PDF=305800 MemberID=67 </weight> +<weight id="1225" MUR="1.0" MUF="1.0" PDF="305868" > PDF=305800 MemberID=68 </weight> +<weight id="1226" MUR="1.0" MUF="1.0" PDF="305869" > PDF=305800 MemberID=69 </weight> +<weight id="1227" MUR="1.0" MUF="1.0" PDF="305870" > PDF=305800 MemberID=70 </weight> +<weight id="1228" MUR="1.0" MUF="1.0" PDF="305871" > PDF=305800 MemberID=71 </weight> +<weight id="1229" MUR="1.0" MUF="1.0" PDF="305872" > PDF=305800 MemberID=72 </weight> +<weight id="1230" MUR="1.0" MUF="1.0" PDF="305873" > PDF=305800 MemberID=73 </weight> +<weight id="1231" MUR="1.0" MUF="1.0" PDF="305874" > PDF=305800 MemberID=74 </weight> +<weight id="1232" MUR="1.0" MUF="1.0" PDF="305875" > PDF=305800 MemberID=75 </weight> +<weight id="1233" MUR="1.0" MUF="1.0" PDF="305876" > PDF=305800 MemberID=76 </weight> +<weight id="1234" MUR="1.0" MUF="1.0" PDF="305877" > PDF=305800 MemberID=77 </weight> +<weight id="1235" MUR="1.0" MUF="1.0" PDF="305878" > PDF=305800 MemberID=78 </weight> +<weight id="1236" MUR="1.0" MUF="1.0" PDF="305879" > PDF=305800 MemberID=79 </weight> +<weight id="1237" MUR="1.0" MUF="1.0" PDF="305880" > PDF=305800 MemberID=80 </weight> +<weight id="1238" MUR="1.0" MUF="1.0" PDF="305881" > PDF=305800 MemberID=81 </weight> +<weight id="1239" MUR="1.0" MUF="1.0" PDF="305882" > PDF=305800 MemberID=82 </weight> +<weight id="1240" MUR="1.0" MUF="1.0" PDF="305883" > PDF=305800 MemberID=83 </weight> +<weight id="1241" MUR="1.0" MUF="1.0" PDF="305884" > PDF=305800 MemberID=84 </weight> +<weight id="1242" MUR="1.0" MUF="1.0" PDF="305885" > PDF=305800 MemberID=85 </weight> +<weight id="1243" MUR="1.0" MUF="1.0" PDF="305886" > PDF=305800 MemberID=86 </weight> +<weight id="1244" MUR="1.0" MUF="1.0" PDF="305887" > PDF=305800 MemberID=87 </weight> +<weight id="1245" MUR="1.0" MUF="1.0" PDF="305888" > PDF=305800 MemberID=88 </weight> +<weight id="1246" MUR="1.0" MUF="1.0" PDF="305889" > PDF=305800 MemberID=89 </weight> +<weight id="1247" MUR="1.0" MUF="1.0" PDF="305890" > PDF=305800 MemberID=90 </weight> +<weight id="1248" MUR="1.0" MUF="1.0" PDF="305891" > PDF=305800 MemberID=91 </weight> +<weight id="1249" MUR="1.0" MUF="1.0" PDF="305892" > PDF=305800 MemberID=92 </weight> +<weight id="1250" MUR="1.0" MUF="1.0" PDF="305893" > PDF=305800 MemberID=93 </weight> +<weight id="1251" MUR="1.0" MUF="1.0" PDF="305894" > PDF=305800 MemberID=94 </weight> +<weight id="1252" MUR="1.0" MUF="1.0" PDF="305895" > PDF=305800 MemberID=95 </weight> +<weight id="1253" MUR="1.0" MUF="1.0" PDF="305896" > PDF=305800 MemberID=96 </weight> +<weight id="1254" MUR="1.0" MUF="1.0" PDF="305897" > PDF=305800 MemberID=97 </weight> +<weight id="1255" MUR="1.0" MUF="1.0" PDF="305898" > PDF=305800 MemberID=98 </weight> +<weight id="1256" MUR="1.0" MUF="1.0" PDF="305899" > PDF=305800 MemberID=99 </weight> +<weight id="1257" MUR="1.0" MUF="1.0" PDF="305900" > PDF=305800 MemberID=100 </weight> +<weight id="1258" MUR="1.0" MUF="1.0" PDF="305901" > PDF=305800 MemberID=101 </weight> +<weight id="1259" MUR="1.0" MUF="1.0" PDF="305902" > PDF=305800 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="CT14nnlo" combine="hessian"> # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% +<weight id="1260" MUR="1.0" MUF="1.0" PDF="13000" > PDF=13000 MemberID=0 </weight> +<weight id="1261" MUR="1.0" MUF="1.0" PDF="13001" > PDF=13000 MemberID=1 </weight> +<weight id="1262" MUR="1.0" MUF="1.0" PDF="13002" > PDF=13000 MemberID=2 </weight> +<weight id="1263" MUR="1.0" MUF="1.0" PDF="13003" > PDF=13000 MemberID=3 </weight> +<weight id="1264" MUR="1.0" MUF="1.0" PDF="13004" > PDF=13000 MemberID=4 </weight> +<weight id="1265" MUR="1.0" MUF="1.0" PDF="13005" > PDF=13000 MemberID=5 </weight> +<weight id="1266" MUR="1.0" MUF="1.0" PDF="13006" > PDF=13000 MemberID=6 </weight> +<weight id="1267" MUR="1.0" MUF="1.0" PDF="13007" > PDF=13000 MemberID=7 </weight> +<weight id="1268" MUR="1.0" MUF="1.0" PDF="13008" > PDF=13000 MemberID=8 </weight> +<weight id="1269" MUR="1.0" MUF="1.0" PDF="13009" > PDF=13000 MemberID=9 </weight> +<weight id="1270" MUR="1.0" MUF="1.0" PDF="13010" > PDF=13000 MemberID=10 </weight> +<weight id="1271" MUR="1.0" MUF="1.0" PDF="13011" > PDF=13000 MemberID=11 </weight> +<weight id="1272" MUR="1.0" MUF="1.0" PDF="13012" > PDF=13000 MemberID=12 </weight> +<weight id="1273" MUR="1.0" MUF="1.0" PDF="13013" > PDF=13000 MemberID=13 </weight> +<weight id="1274" MUR="1.0" MUF="1.0" PDF="13014" > PDF=13000 MemberID=14 </weight> +<weight id="1275" MUR="1.0" MUF="1.0" PDF="13015" > PDF=13000 MemberID=15 </weight> +<weight id="1276" MUR="1.0" MUF="1.0" PDF="13016" > PDF=13000 MemberID=16 </weight> +<weight id="1277" MUR="1.0" MUF="1.0" PDF="13017" > PDF=13000 MemberID=17 </weight> +<weight id="1278" MUR="1.0" MUF="1.0" PDF="13018" > PDF=13000 MemberID=18 </weight> +<weight id="1279" MUR="1.0" MUF="1.0" PDF="13019" > PDF=13000 MemberID=19 </weight> +<weight id="1280" MUR="1.0" MUF="1.0" PDF="13020" > PDF=13000 MemberID=20 </weight> +<weight id="1281" MUR="1.0" MUF="1.0" PDF="13021" > PDF=13000 MemberID=21 </weight> +<weight id="1282" MUR="1.0" MUF="1.0" PDF="13022" > PDF=13000 MemberID=22 </weight> +<weight id="1283" MUR="1.0" MUF="1.0" PDF="13023" > PDF=13000 MemberID=23 </weight> +<weight id="1284" MUR="1.0" MUF="1.0" PDF="13024" > PDF=13000 MemberID=24 </weight> +<weight id="1285" MUR="1.0" MUF="1.0" PDF="13025" > PDF=13000 MemberID=25 </weight> +<weight id="1286" MUR="1.0" MUF="1.0" PDF="13026" > PDF=13000 MemberID=26 </weight> +<weight id="1287" MUR="1.0" MUF="1.0" PDF="13027" > PDF=13000 MemberID=27 </weight> +<weight id="1288" MUR="1.0" MUF="1.0" PDF="13028" > PDF=13000 MemberID=28 </weight> +<weight id="1289" MUR="1.0" MUF="1.0" PDF="13029" > PDF=13000 MemberID=29 </weight> +<weight id="1290" MUR="1.0" MUF="1.0" PDF="13030" > PDF=13000 MemberID=30 </weight> +<weight id="1291" MUR="1.0" MUF="1.0" PDF="13031" > PDF=13000 MemberID=31 </weight> +<weight id="1292" MUR="1.0" MUF="1.0" PDF="13032" > PDF=13000 MemberID=32 </weight> +<weight id="1293" MUR="1.0" MUF="1.0" PDF="13033" > PDF=13000 MemberID=33 </weight> +<weight id="1294" MUR="1.0" MUF="1.0" PDF="13034" > PDF=13000 MemberID=34 </weight> +<weight id="1295" MUR="1.0" MUF="1.0" PDF="13035" > PDF=13000 MemberID=35 </weight> +<weight id="1296" MUR="1.0" MUF="1.0" PDF="13036" > PDF=13000 MemberID=36 </weight> +<weight id="1297" MUR="1.0" MUF="1.0" PDF="13037" > PDF=13000 MemberID=37 </weight> +<weight id="1298" MUR="1.0" MUF="1.0" PDF="13038" > PDF=13000 MemberID=38 </weight> +<weight id="1299" MUR="1.0" MUF="1.0" PDF="13039" > PDF=13000 MemberID=39 </weight> +<weight id="1300" MUR="1.0" MUF="1.0" PDF="13040" > PDF=13000 MemberID=40 </weight> +<weight id="1301" MUR="1.0" MUF="1.0" PDF="13041" > PDF=13000 MemberID=41 </weight> +<weight id="1302" MUR="1.0" MUF="1.0" PDF="13042" > PDF=13000 MemberID=42 </weight> +<weight id="1303" MUR="1.0" MUF="1.0" PDF="13043" > PDF=13000 MemberID=43 </weight> +<weight id="1304" MUR="1.0" MUF="1.0" PDF="13044" > PDF=13000 MemberID=44 </weight> +<weight id="1305" MUR="1.0" MUF="1.0" PDF="13045" > PDF=13000 MemberID=45 </weight> +<weight id="1306" MUR="1.0" MUF="1.0" PDF="13046" > PDF=13000 MemberID=46 </weight> +<weight id="1307" MUR="1.0" MUF="1.0" PDF="13047" > PDF=13000 MemberID=47 </weight> +<weight id="1308" MUR="1.0" MUF="1.0" PDF="13048" > PDF=13000 MemberID=48 </weight> +<weight id="1309" MUR="1.0" MUF="1.0" PDF="13049" > PDF=13000 MemberID=49 </weight> +<weight id="1310" MUR="1.0" MUF="1.0" PDF="13050" > PDF=13000 MemberID=50 </weight> +<weight id="1311" MUR="1.0" MUF="1.0" PDF="13051" > PDF=13000 MemberID=51 </weight> +<weight id="1312" MUR="1.0" MUF="1.0" PDF="13052" > PDF=13000 MemberID=52 </weight> +<weight id="1313" MUR="1.0" MUF="1.0" PDF="13053" > PDF=13000 MemberID=53 </weight> +<weight id="1314" MUR="1.0" MUF="1.0" PDF="13054" > PDF=13000 MemberID=54 </weight> +<weight id="1315" MUR="1.0" MUF="1.0" PDF="13055" > PDF=13000 MemberID=55 </weight> +<weight id="1316" MUR="1.0" MUF="1.0" PDF="13056" > PDF=13000 MemberID=56 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1317" MUR="1.0" MUF="1.0" PDF="13065" > PDF=13065 MemberID=0 </weight> +<weight id="1318" MUR="1.0" MUF="1.0" PDF="13069" > PDF=13069 MemberID=0 </weight> +<weightgroup name="CT14nlo" combine="hessian"> # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% +<weight id="1319" MUR="1.0" MUF="1.0" PDF="13100" > PDF=13100 MemberID=0 </weight> +<weight id="1320" MUR="1.0" MUF="1.0" PDF="13101" > PDF=13100 MemberID=1 </weight> +<weight id="1321" MUR="1.0" MUF="1.0" PDF="13102" > PDF=13100 MemberID=2 </weight> +<weight id="1322" MUR="1.0" MUF="1.0" PDF="13103" > PDF=13100 MemberID=3 </weight> +<weight id="1323" MUR="1.0" MUF="1.0" PDF="13104" > PDF=13100 MemberID=4 </weight> +<weight id="1324" MUR="1.0" MUF="1.0" PDF="13105" > PDF=13100 MemberID=5 </weight> +<weight id="1325" MUR="1.0" MUF="1.0" PDF="13106" > PDF=13100 MemberID=6 </weight> +<weight id="1326" MUR="1.0" MUF="1.0" PDF="13107" > PDF=13100 MemberID=7 </weight> +<weight id="1327" MUR="1.0" MUF="1.0" PDF="13108" > PDF=13100 MemberID=8 </weight> +<weight id="1328" MUR="1.0" MUF="1.0" PDF="13109" > PDF=13100 MemberID=9 </weight> +<weight id="1329" MUR="1.0" MUF="1.0" PDF="13110" > PDF=13100 MemberID=10 </weight> +<weight id="1330" MUR="1.0" MUF="1.0" PDF="13111" > PDF=13100 MemberID=11 </weight> +<weight id="1331" MUR="1.0" MUF="1.0" PDF="13112" > PDF=13100 MemberID=12 </weight> +<weight id="1332" MUR="1.0" MUF="1.0" PDF="13113" > PDF=13100 MemberID=13 </weight> +<weight id="1333" MUR="1.0" MUF="1.0" PDF="13114" > PDF=13100 MemberID=14 </weight> +<weight id="1334" MUR="1.0" MUF="1.0" PDF="13115" > PDF=13100 MemberID=15 </weight> +<weight id="1335" MUR="1.0" MUF="1.0" PDF="13116" > PDF=13100 MemberID=16 </weight> +<weight id="1336" MUR="1.0" MUF="1.0" PDF="13117" > PDF=13100 MemberID=17 </weight> +<weight id="1337" MUR="1.0" MUF="1.0" PDF="13118" > PDF=13100 MemberID=18 </weight> +<weight id="1338" MUR="1.0" MUF="1.0" PDF="13119" > PDF=13100 MemberID=19 </weight> +<weight id="1339" MUR="1.0" MUF="1.0" PDF="13120" > PDF=13100 MemberID=20 </weight> +<weight id="1340" MUR="1.0" MUF="1.0" PDF="13121" > PDF=13100 MemberID=21 </weight> +<weight id="1341" MUR="1.0" MUF="1.0" PDF="13122" > PDF=13100 MemberID=22 </weight> +<weight id="1342" MUR="1.0" MUF="1.0" PDF="13123" > PDF=13100 MemberID=23 </weight> +<weight id="1343" MUR="1.0" MUF="1.0" PDF="13124" > PDF=13100 MemberID=24 </weight> +<weight id="1344" MUR="1.0" MUF="1.0" PDF="13125" > PDF=13100 MemberID=25 </weight> +<weight id="1345" MUR="1.0" MUF="1.0" PDF="13126" > PDF=13100 MemberID=26 </weight> +<weight id="1346" MUR="1.0" MUF="1.0" PDF="13127" > PDF=13100 MemberID=27 </weight> +<weight id="1347" MUR="1.0" MUF="1.0" PDF="13128" > PDF=13100 MemberID=28 </weight> +<weight id="1348" MUR="1.0" MUF="1.0" PDF="13129" > PDF=13100 MemberID=29 </weight> +<weight id="1349" MUR="1.0" MUF="1.0" PDF="13130" > PDF=13100 MemberID=30 </weight> +<weight id="1350" MUR="1.0" MUF="1.0" PDF="13131" > PDF=13100 MemberID=31 </weight> +<weight id="1351" MUR="1.0" MUF="1.0" PDF="13132" > PDF=13100 MemberID=32 </weight> +<weight id="1352" MUR="1.0" MUF="1.0" PDF="13133" > PDF=13100 MemberID=33 </weight> +<weight id="1353" MUR="1.0" MUF="1.0" PDF="13134" > PDF=13100 MemberID=34 </weight> +<weight id="1354" MUR="1.0" MUF="1.0" PDF="13135" > PDF=13100 MemberID=35 </weight> +<weight id="1355" MUR="1.0" MUF="1.0" PDF="13136" > PDF=13100 MemberID=36 </weight> +<weight id="1356" MUR="1.0" MUF="1.0" PDF="13137" > PDF=13100 MemberID=37 </weight> +<weight id="1357" MUR="1.0" MUF="1.0" PDF="13138" > PDF=13100 MemberID=38 </weight> +<weight id="1358" MUR="1.0" MUF="1.0" PDF="13139" > PDF=13100 MemberID=39 </weight> +<weight id="1359" MUR="1.0" MUF="1.0" PDF="13140" > PDF=13100 MemberID=40 </weight> +<weight id="1360" MUR="1.0" MUF="1.0" PDF="13141" > PDF=13100 MemberID=41 </weight> +<weight id="1361" MUR="1.0" MUF="1.0" PDF="13142" > PDF=13100 MemberID=42 </weight> +<weight id="1362" MUR="1.0" MUF="1.0" PDF="13143" > PDF=13100 MemberID=43 </weight> +<weight id="1363" MUR="1.0" MUF="1.0" PDF="13144" > PDF=13100 MemberID=44 </weight> +<weight id="1364" MUR="1.0" MUF="1.0" PDF="13145" > PDF=13100 MemberID=45 </weight> +<weight id="1365" MUR="1.0" MUF="1.0" PDF="13146" > PDF=13100 MemberID=46 </weight> +<weight id="1366" MUR="1.0" MUF="1.0" PDF="13147" > PDF=13100 MemberID=47 </weight> +<weight id="1367" MUR="1.0" MUF="1.0" PDF="13148" > PDF=13100 MemberID=48 </weight> +<weight id="1368" MUR="1.0" MUF="1.0" PDF="13149" > PDF=13100 MemberID=49 </weight> +<weight id="1369" MUR="1.0" MUF="1.0" PDF="13150" > PDF=13100 MemberID=50 </weight> +<weight id="1370" MUR="1.0" MUF="1.0" PDF="13151" > PDF=13100 MemberID=51 </weight> +<weight id="1371" MUR="1.0" MUF="1.0" PDF="13152" > PDF=13100 MemberID=52 </weight> +<weight id="1372" MUR="1.0" MUF="1.0" PDF="13153" > PDF=13100 MemberID=53 </weight> +<weight id="1373" MUR="1.0" MUF="1.0" PDF="13154" > PDF=13100 MemberID=54 </weight> +<weight id="1374" MUR="1.0" MUF="1.0" PDF="13155" > PDF=13100 MemberID=55 </weight> +<weight id="1375" MUR="1.0" MUF="1.0" PDF="13156" > PDF=13100 MemberID=56 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1376" MUR="1.0" MUF="1.0" PDF="13163" > PDF=13163 MemberID=0 </weight> +<weight id="1377" MUR="1.0" MUF="1.0" PDF="13167" > PDF=13167 MemberID=0 </weight> +<weight id="1378" MUR="1.0" MUF="1.0" PDF="13200" > PDF=13200 MemberID=0 </weight> +<weightgroup name="MMHT2014nlo68clas118" combine="hessian"> # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht +<weight id="1379" MUR="1.0" MUF="1.0" PDF="25200" > PDF=25200 MemberID=0 </weight> +<weight id="1380" MUR="1.0" MUF="1.0" PDF="25201" > PDF=25200 MemberID=1 </weight> +<weight id="1381" MUR="1.0" MUF="1.0" PDF="25202" > PDF=25200 MemberID=2 </weight> +<weight id="1382" MUR="1.0" MUF="1.0" PDF="25203" > PDF=25200 MemberID=3 </weight> +<weight id="1383" MUR="1.0" MUF="1.0" PDF="25204" > PDF=25200 MemberID=4 </weight> +<weight id="1384" MUR="1.0" MUF="1.0" PDF="25205" > PDF=25200 MemberID=5 </weight> +<weight id="1385" MUR="1.0" MUF="1.0" PDF="25206" > PDF=25200 MemberID=6 </weight> +<weight id="1386" MUR="1.0" MUF="1.0" PDF="25207" > PDF=25200 MemberID=7 </weight> +<weight id="1387" MUR="1.0" MUF="1.0" PDF="25208" > PDF=25200 MemberID=8 </weight> +<weight id="1388" MUR="1.0" MUF="1.0" PDF="25209" > PDF=25200 MemberID=9 </weight> +<weight id="1389" MUR="1.0" MUF="1.0" PDF="25210" > PDF=25200 MemberID=10 </weight> +<weight id="1390" MUR="1.0" MUF="1.0" PDF="25211" > PDF=25200 MemberID=11 </weight> +<weight id="1391" MUR="1.0" MUF="1.0" PDF="25212" > PDF=25200 MemberID=12 </weight> +<weight id="1392" MUR="1.0" MUF="1.0" PDF="25213" > PDF=25200 MemberID=13 </weight> +<weight id="1393" MUR="1.0" MUF="1.0" PDF="25214" > PDF=25200 MemberID=14 </weight> +<weight id="1394" MUR="1.0" MUF="1.0" PDF="25215" > PDF=25200 MemberID=15 </weight> +<weight id="1395" MUR="1.0" MUF="1.0" PDF="25216" > PDF=25200 MemberID=16 </weight> +<weight id="1396" MUR="1.0" MUF="1.0" PDF="25217" > PDF=25200 MemberID=17 </weight> +<weight id="1397" MUR="1.0" MUF="1.0" PDF="25218" > PDF=25200 MemberID=18 </weight> +<weight id="1398" MUR="1.0" MUF="1.0" PDF="25219" > PDF=25200 MemberID=19 </weight> +<weight id="1399" MUR="1.0" MUF="1.0" PDF="25220" > PDF=25200 MemberID=20 </weight> +<weight id="1400" MUR="1.0" MUF="1.0" PDF="25221" > PDF=25200 MemberID=21 </weight> +<weight id="1401" MUR="1.0" MUF="1.0" PDF="25222" > PDF=25200 MemberID=22 </weight> +<weight id="1402" MUR="1.0" MUF="1.0" PDF="25223" > PDF=25200 MemberID=23 </weight> +<weight id="1403" MUR="1.0" MUF="1.0" PDF="25224" > PDF=25200 MemberID=24 </weight> +<weight id="1404" MUR="1.0" MUF="1.0" PDF="25225" > PDF=25200 MemberID=25 </weight> +<weight id="1405" MUR="1.0" MUF="1.0" PDF="25226" > PDF=25200 MemberID=26 </weight> +<weight id="1406" MUR="1.0" MUF="1.0" PDF="25227" > PDF=25200 MemberID=27 </weight> +<weight id="1407" MUR="1.0" MUF="1.0" PDF="25228" > PDF=25200 MemberID=28 </weight> +<weight id="1408" MUR="1.0" MUF="1.0" PDF="25229" > PDF=25200 MemberID=29 </weight> +<weight id="1409" MUR="1.0" MUF="1.0" PDF="25230" > PDF=25200 MemberID=30 </weight> +<weight id="1410" MUR="1.0" MUF="1.0" PDF="25231" > PDF=25200 MemberID=31 </weight> +<weight id="1411" MUR="1.0" MUF="1.0" PDF="25232" > PDF=25200 MemberID=32 </weight> +<weight id="1412" MUR="1.0" MUF="1.0" PDF="25233" > PDF=25200 MemberID=33 </weight> +<weight id="1413" MUR="1.0" MUF="1.0" PDF="25234" > PDF=25200 MemberID=34 </weight> +<weight id="1414" MUR="1.0" MUF="1.0" PDF="25235" > PDF=25200 MemberID=35 </weight> +<weight id="1415" MUR="1.0" MUF="1.0" PDF="25236" > PDF=25200 MemberID=36 </weight> +<weight id="1416" MUR="1.0" MUF="1.0" PDF="25237" > PDF=25200 MemberID=37 </weight> +<weight id="1417" MUR="1.0" MUF="1.0" PDF="25238" > PDF=25200 MemberID=38 </weight> +<weight id="1418" MUR="1.0" MUF="1.0" PDF="25239" > PDF=25200 MemberID=39 </weight> +<weight id="1419" MUR="1.0" MUF="1.0" PDF="25240" > PDF=25200 MemberID=40 </weight> +<weight id="1420" MUR="1.0" MUF="1.0" PDF="25241" > PDF=25200 MemberID=41 </weight> +<weight id="1421" MUR="1.0" MUF="1.0" PDF="25242" > PDF=25200 MemberID=42 </weight> +<weight id="1422" MUR="1.0" MUF="1.0" PDF="25243" > PDF=25200 MemberID=43 </weight> +<weight id="1423" MUR="1.0" MUF="1.0" PDF="25244" > PDF=25200 MemberID=44 </weight> +<weight id="1424" MUR="1.0" MUF="1.0" PDF="25245" > PDF=25200 MemberID=45 </weight> +<weight id="1425" MUR="1.0" MUF="1.0" PDF="25246" > PDF=25200 MemberID=46 </weight> +<weight id="1426" MUR="1.0" MUF="1.0" PDF="25247" > PDF=25200 MemberID=47 </weight> +<weight id="1427" MUR="1.0" MUF="1.0" PDF="25248" > PDF=25200 MemberID=48 </weight> +<weight id="1428" MUR="1.0" MUF="1.0" PDF="25249" > PDF=25200 MemberID=49 </weight> +<weight id="1429" MUR="1.0" MUF="1.0" PDF="25250" > PDF=25200 MemberID=50 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="MMHT2014nnlo68cl" combine="hessian"> # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht +<weight id="1430" MUR="1.0" MUF="1.0" PDF="25300" > PDF=25300 MemberID=0 </weight> +<weight id="1431" MUR="1.0" MUF="1.0" PDF="25301" > PDF=25300 MemberID=1 </weight> +<weight id="1432" MUR="1.0" MUF="1.0" PDF="25302" > PDF=25300 MemberID=2 </weight> +<weight id="1433" MUR="1.0" MUF="1.0" PDF="25303" > PDF=25300 MemberID=3 </weight> +<weight id="1434" MUR="1.0" MUF="1.0" PDF="25304" > PDF=25300 MemberID=4 </weight> +<weight id="1435" MUR="1.0" MUF="1.0" PDF="25305" > PDF=25300 MemberID=5 </weight> +<weight id="1436" MUR="1.0" MUF="1.0" PDF="25306" > PDF=25300 MemberID=6 </weight> +<weight id="1437" MUR="1.0" MUF="1.0" PDF="25307" > PDF=25300 MemberID=7 </weight> +<weight id="1438" MUR="1.0" MUF="1.0" PDF="25308" > PDF=25300 MemberID=8 </weight> +<weight id="1439" MUR="1.0" MUF="1.0" PDF="25309" > PDF=25300 MemberID=9 </weight> +<weight id="1440" MUR="1.0" MUF="1.0" PDF="25310" > PDF=25300 MemberID=10 </weight> +<weight id="1441" MUR="1.0" MUF="1.0" PDF="25311" > PDF=25300 MemberID=11 </weight> +<weight id="1442" MUR="1.0" MUF="1.0" PDF="25312" > PDF=25300 MemberID=12 </weight> +<weight id="1443" MUR="1.0" MUF="1.0" PDF="25313" > PDF=25300 MemberID=13 </weight> +<weight id="1444" MUR="1.0" MUF="1.0" PDF="25314" > PDF=25300 MemberID=14 </weight> +<weight id="1445" MUR="1.0" MUF="1.0" PDF="25315" > PDF=25300 MemberID=15 </weight> +<weight id="1446" MUR="1.0" MUF="1.0" PDF="25316" > PDF=25300 MemberID=16 </weight> +<weight id="1447" MUR="1.0" MUF="1.0" PDF="25317" > PDF=25300 MemberID=17 </weight> +<weight id="1448" MUR="1.0" MUF="1.0" PDF="25318" > PDF=25300 MemberID=18 </weight> +<weight id="1449" MUR="1.0" MUF="1.0" PDF="25319" > PDF=25300 MemberID=19 </weight> +<weight id="1450" MUR="1.0" MUF="1.0" PDF="25320" > PDF=25300 MemberID=20 </weight> +<weight id="1451" MUR="1.0" MUF="1.0" PDF="25321" > PDF=25300 MemberID=21 </weight> +<weight id="1452" MUR="1.0" MUF="1.0" PDF="25322" > PDF=25300 MemberID=22 </weight> +<weight id="1453" MUR="1.0" MUF="1.0" PDF="25323" > PDF=25300 MemberID=23 </weight> +<weight id="1454" MUR="1.0" MUF="1.0" PDF="25324" > PDF=25300 MemberID=24 </weight> +<weight id="1455" MUR="1.0" MUF="1.0" PDF="25325" > PDF=25300 MemberID=25 </weight> +<weight id="1456" MUR="1.0" MUF="1.0" PDF="25326" > PDF=25300 MemberID=26 </weight> +<weight id="1457" MUR="1.0" MUF="1.0" PDF="25327" > PDF=25300 MemberID=27 </weight> +<weight id="1458" MUR="1.0" MUF="1.0" PDF="25328" > PDF=25300 MemberID=28 </weight> +<weight id="1459" MUR="1.0" MUF="1.0" PDF="25329" > PDF=25300 MemberID=29 </weight> +<weight id="1460" MUR="1.0" MUF="1.0" PDF="25330" > PDF=25300 MemberID=30 </weight> +<weight id="1461" MUR="1.0" MUF="1.0" PDF="25331" > PDF=25300 MemberID=31 </weight> +<weight id="1462" MUR="1.0" MUF="1.0" PDF="25332" > PDF=25300 MemberID=32 </weight> +<weight id="1463" MUR="1.0" MUF="1.0" PDF="25333" > PDF=25300 MemberID=33 </weight> +<weight id="1464" MUR="1.0" MUF="1.0" PDF="25334" > PDF=25300 MemberID=34 </weight> +<weight id="1465" MUR="1.0" MUF="1.0" PDF="25335" > PDF=25300 MemberID=35 </weight> +<weight id="1466" MUR="1.0" MUF="1.0" PDF="25336" > PDF=25300 MemberID=36 </weight> +<weight id="1467" MUR="1.0" MUF="1.0" PDF="25337" > PDF=25300 MemberID=37 </weight> +<weight id="1468" MUR="1.0" MUF="1.0" PDF="25338" > PDF=25300 MemberID=38 </weight> +<weight id="1469" MUR="1.0" MUF="1.0" PDF="25339" > PDF=25300 MemberID=39 </weight> +<weight id="1470" MUR="1.0" MUF="1.0" PDF="25340" > PDF=25300 MemberID=40 </weight> +<weight id="1471" MUR="1.0" MUF="1.0" PDF="25341" > PDF=25300 MemberID=41 </weight> +<weight id="1472" MUR="1.0" MUF="1.0" PDF="25342" > PDF=25300 MemberID=42 </weight> +<weight id="1473" MUR="1.0" MUF="1.0" PDF="25343" > PDF=25300 MemberID=43 </weight> +<weight id="1474" MUR="1.0" MUF="1.0" PDF="25344" > PDF=25300 MemberID=44 </weight> +<weight id="1475" MUR="1.0" MUF="1.0" PDF="25345" > PDF=25300 MemberID=45 </weight> +<weight id="1476" MUR="1.0" MUF="1.0" PDF="25346" > PDF=25300 MemberID=46 </weight> +<weight id="1477" MUR="1.0" MUF="1.0" PDF="25347" > PDF=25300 MemberID=47 </weight> +<weight id="1478" MUR="1.0" MUF="1.0" PDF="25348" > PDF=25300 MemberID=48 </weight> +<weight id="1479" MUR="1.0" MUF="1.0" PDF="25349" > PDF=25300 MemberID=49 </weight> +<weight id="1480" MUR="1.0" MUF="1.0" PDF="25350" > PDF=25300 MemberID=50 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="1481" MUR="1.0" MUF="1.0" PDF="25000" > PDF=25000 MemberID=0 </weight> +<weightgroup name="ABMP16als118_5_nnlo" combine="symmhessian"> # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set +<weight id="1482" MUR="1.0" MUF="1.0" PDF="42780" > PDF=42780 MemberID=0 </weight> +<weight id="1483" MUR="1.0" MUF="1.0" PDF="42781" > PDF=42780 MemberID=1 </weight> +<weight id="1484" MUR="1.0" MUF="1.0" PDF="42782" > PDF=42780 MemberID=2 </weight> +<weight id="1485" MUR="1.0" MUF="1.0" PDF="42783" > PDF=42780 MemberID=3 </weight> +<weight id="1486" MUR="1.0" MUF="1.0" PDF="42784" > PDF=42780 MemberID=4 </weight> +<weight id="1487" MUR="1.0" MUF="1.0" PDF="42785" > PDF=42780 MemberID=5 </weight> +<weight id="1488" MUR="1.0" MUF="1.0" PDF="42786" > PDF=42780 MemberID=6 </weight> +<weight id="1489" MUR="1.0" MUF="1.0" PDF="42787" > PDF=42780 MemberID=7 </weight> +<weight id="1490" MUR="1.0" MUF="1.0" PDF="42788" > PDF=42780 MemberID=8 </weight> +<weight id="1491" MUR="1.0" MUF="1.0" PDF="42789" > PDF=42780 MemberID=9 </weight> +<weight id="1492" MUR="1.0" MUF="1.0" PDF="42790" > PDF=42780 MemberID=10 </weight> +<weight id="1493" MUR="1.0" MUF="1.0" PDF="42791" > PDF=42780 MemberID=11 </weight> +<weight id="1494" MUR="1.0" MUF="1.0" PDF="42792" > PDF=42780 MemberID=12 </weight> +<weight id="1495" MUR="1.0" MUF="1.0" PDF="42793" > PDF=42780 MemberID=13 </weight> +<weight id="1496" MUR="1.0" MUF="1.0" PDF="42794" > PDF=42780 MemberID=14 </weight> +<weight id="1497" MUR="1.0" MUF="1.0" PDF="42795" > PDF=42780 MemberID=15 </weight> +<weight id="1498" MUR="1.0" MUF="1.0" PDF="42796" > PDF=42780 MemberID=16 </weight> +<weight id="1499" MUR="1.0" MUF="1.0" PDF="42797" > PDF=42780 MemberID=17 </weight> +<weight id="1500" MUR="1.0" MUF="1.0" PDF="42798" > PDF=42780 MemberID=18 </weight> +<weight id="1501" MUR="1.0" MUF="1.0" PDF="42799" > PDF=42780 MemberID=19 </weight> +<weight id="1502" MUR="1.0" MUF="1.0" PDF="42800" > PDF=42780 MemberID=20 </weight> +<weight id="1503" MUR="1.0" MUF="1.0" PDF="42801" > PDF=42780 MemberID=21 </weight> +<weight id="1504" MUR="1.0" MUF="1.0" PDF="42802" > PDF=42780 MemberID=22 </weight> +<weight id="1505" MUR="1.0" MUF="1.0" PDF="42803" > PDF=42780 MemberID=23 </weight> +<weight id="1506" MUR="1.0" MUF="1.0" PDF="42804" > PDF=42780 MemberID=24 </weight> +<weight id="1507" MUR="1.0" MUF="1.0" PDF="42805" > PDF=42780 MemberID=25 </weight> +<weight id="1508" MUR="1.0" MUF="1.0" PDF="42806" > PDF=42780 MemberID=26 </weight> +<weight id="1509" MUR="1.0" MUF="1.0" PDF="42807" > PDF=42780 MemberID=27 </weight> +<weight id="1510" MUR="1.0" MUF="1.0" PDF="42808" > PDF=42780 MemberID=28 </weight> +<weight id="1511" MUR="1.0" MUF="1.0" PDF="42809" > PDF=42780 MemberID=29 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nlo_100_pdfas" combine="symmhessian+as"> # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 +<weight id="1512" MUR="1.0" MUF="1.0" PDF="90200" > PDF=90200 MemberID=0 </weight> +<weight id="1513" MUR="1.0" MUF="1.0" PDF="90201" > PDF=90200 MemberID=1 </weight> +<weight id="1514" MUR="1.0" MUF="1.0" PDF="90202" > PDF=90200 MemberID=2 </weight> +<weight id="1515" MUR="1.0" MUF="1.0" PDF="90203" > PDF=90200 MemberID=3 </weight> +<weight id="1516" MUR="1.0" MUF="1.0" PDF="90204" > PDF=90200 MemberID=4 </weight> +<weight id="1517" MUR="1.0" MUF="1.0" PDF="90205" > PDF=90200 MemberID=5 </weight> +<weight id="1518" MUR="1.0" MUF="1.0" PDF="90206" > PDF=90200 MemberID=6 </weight> +<weight id="1519" MUR="1.0" MUF="1.0" PDF="90207" > PDF=90200 MemberID=7 </weight> +<weight id="1520" MUR="1.0" MUF="1.0" PDF="90208" > PDF=90200 MemberID=8 </weight> +<weight id="1521" MUR="1.0" MUF="1.0" PDF="90209" > PDF=90200 MemberID=9 </weight> +<weight id="1522" MUR="1.0" MUF="1.0" PDF="90210" > PDF=90200 MemberID=10 </weight> +<weight id="1523" MUR="1.0" MUF="1.0" PDF="90211" > PDF=90200 MemberID=11 </weight> +<weight id="1524" MUR="1.0" MUF="1.0" PDF="90212" > PDF=90200 MemberID=12 </weight> +<weight id="1525" MUR="1.0" MUF="1.0" PDF="90213" > PDF=90200 MemberID=13 </weight> +<weight id="1526" MUR="1.0" MUF="1.0" PDF="90214" > PDF=90200 MemberID=14 </weight> +<weight id="1527" MUR="1.0" MUF="1.0" PDF="90215" > PDF=90200 MemberID=15 </weight> +<weight id="1528" MUR="1.0" MUF="1.0" PDF="90216" > PDF=90200 MemberID=16 </weight> +<weight id="1529" MUR="1.0" MUF="1.0" PDF="90217" > PDF=90200 MemberID=17 </weight> +<weight id="1530" MUR="1.0" MUF="1.0" PDF="90218" > PDF=90200 MemberID=18 </weight> +<weight id="1531" MUR="1.0" MUF="1.0" PDF="90219" > PDF=90200 MemberID=19 </weight> +<weight id="1532" MUR="1.0" MUF="1.0" PDF="90220" > PDF=90200 MemberID=20 </weight> +<weight id="1533" MUR="1.0" MUF="1.0" PDF="90221" > PDF=90200 MemberID=21 </weight> +<weight id="1534" MUR="1.0" MUF="1.0" PDF="90222" > PDF=90200 MemberID=22 </weight> +<weight id="1535" MUR="1.0" MUF="1.0" PDF="90223" > PDF=90200 MemberID=23 </weight> +<weight id="1536" MUR="1.0" MUF="1.0" PDF="90224" > PDF=90200 MemberID=24 </weight> +<weight id="1537" MUR="1.0" MUF="1.0" PDF="90225" > PDF=90200 MemberID=25 </weight> +<weight id="1538" MUR="1.0" MUF="1.0" PDF="90226" > PDF=90200 MemberID=26 </weight> +<weight id="1539" MUR="1.0" MUF="1.0" PDF="90227" > PDF=90200 MemberID=27 </weight> +<weight id="1540" MUR="1.0" MUF="1.0" PDF="90228" > PDF=90200 MemberID=28 </weight> +<weight id="1541" MUR="1.0" MUF="1.0" PDF="90229" > PDF=90200 MemberID=29 </weight> +<weight id="1542" MUR="1.0" MUF="1.0" PDF="90230" > PDF=90200 MemberID=30 </weight> +<weight id="1543" MUR="1.0" MUF="1.0" PDF="90231" > PDF=90200 MemberID=31 </weight> +<weight id="1544" MUR="1.0" MUF="1.0" PDF="90232" > PDF=90200 MemberID=32 </weight> +<weight id="1545" MUR="1.0" MUF="1.0" PDF="90233" > PDF=90200 MemberID=33 </weight> +<weight id="1546" MUR="1.0" MUF="1.0" PDF="90234" > PDF=90200 MemberID=34 </weight> +<weight id="1547" MUR="1.0" MUF="1.0" PDF="90235" > PDF=90200 MemberID=35 </weight> +<weight id="1548" MUR="1.0" MUF="1.0" PDF="90236" > PDF=90200 MemberID=36 </weight> +<weight id="1549" MUR="1.0" MUF="1.0" PDF="90237" > PDF=90200 MemberID=37 </weight> +<weight id="1550" MUR="1.0" MUF="1.0" PDF="90238" > PDF=90200 MemberID=38 </weight> +<weight id="1551" MUR="1.0" MUF="1.0" PDF="90239" > PDF=90200 MemberID=39 </weight> +<weight id="1552" MUR="1.0" MUF="1.0" PDF="90240" > PDF=90200 MemberID=40 </weight> +<weight id="1553" MUR="1.0" MUF="1.0" PDF="90241" > PDF=90200 MemberID=41 </weight> +<weight id="1554" MUR="1.0" MUF="1.0" PDF="90242" > PDF=90200 MemberID=42 </weight> +<weight id="1555" MUR="1.0" MUF="1.0" PDF="90243" > PDF=90200 MemberID=43 </weight> +<weight id="1556" MUR="1.0" MUF="1.0" PDF="90244" > PDF=90200 MemberID=44 </weight> +<weight id="1557" MUR="1.0" MUF="1.0" PDF="90245" > PDF=90200 MemberID=45 </weight> +<weight id="1558" MUR="1.0" MUF="1.0" PDF="90246" > PDF=90200 MemberID=46 </weight> +<weight id="1559" MUR="1.0" MUF="1.0" PDF="90247" > PDF=90200 MemberID=47 </weight> +<weight id="1560" MUR="1.0" MUF="1.0" PDF="90248" > PDF=90200 MemberID=48 </weight> +<weight id="1561" MUR="1.0" MUF="1.0" PDF="90249" > PDF=90200 MemberID=49 </weight> +<weight id="1562" MUR="1.0" MUF="1.0" PDF="90250" > PDF=90200 MemberID=50 </weight> +<weight id="1563" MUR="1.0" MUF="1.0" PDF="90251" > PDF=90200 MemberID=51 </weight> +<weight id="1564" MUR="1.0" MUF="1.0" PDF="90252" > PDF=90200 MemberID=52 </weight> +<weight id="1565" MUR="1.0" MUF="1.0" PDF="90253" > PDF=90200 MemberID=53 </weight> +<weight id="1566" MUR="1.0" MUF="1.0" PDF="90254" > PDF=90200 MemberID=54 </weight> +<weight id="1567" MUR="1.0" MUF="1.0" PDF="90255" > PDF=90200 MemberID=55 </weight> +<weight id="1568" MUR="1.0" MUF="1.0" PDF="90256" > PDF=90200 MemberID=56 </weight> +<weight id="1569" MUR="1.0" MUF="1.0" PDF="90257" > PDF=90200 MemberID=57 </weight> +<weight id="1570" MUR="1.0" MUF="1.0" PDF="90258" > PDF=90200 MemberID=58 </weight> +<weight id="1571" MUR="1.0" MUF="1.0" PDF="90259" > PDF=90200 MemberID=59 </weight> +<weight id="1572" MUR="1.0" MUF="1.0" PDF="90260" > PDF=90200 MemberID=60 </weight> +<weight id="1573" MUR="1.0" MUF="1.0" PDF="90261" > PDF=90200 MemberID=61 </weight> +<weight id="1574" MUR="1.0" MUF="1.0" PDF="90262" > PDF=90200 MemberID=62 </weight> +<weight id="1575" MUR="1.0" MUF="1.0" PDF="90263" > PDF=90200 MemberID=63 </weight> +<weight id="1576" MUR="1.0" MUF="1.0" PDF="90264" > PDF=90200 MemberID=64 </weight> +<weight id="1577" MUR="1.0" MUF="1.0" PDF="90265" > PDF=90200 MemberID=65 </weight> +<weight id="1578" MUR="1.0" MUF="1.0" PDF="90266" > PDF=90200 MemberID=66 </weight> +<weight id="1579" MUR="1.0" MUF="1.0" PDF="90267" > PDF=90200 MemberID=67 </weight> +<weight id="1580" MUR="1.0" MUF="1.0" PDF="90268" > PDF=90200 MemberID=68 </weight> +<weight id="1581" MUR="1.0" MUF="1.0" PDF="90269" > PDF=90200 MemberID=69 </weight> +<weight id="1582" MUR="1.0" MUF="1.0" PDF="90270" > PDF=90200 MemberID=70 </weight> +<weight id="1583" MUR="1.0" MUF="1.0" PDF="90271" > PDF=90200 MemberID=71 </weight> +<weight id="1584" MUR="1.0" MUF="1.0" PDF="90272" > PDF=90200 MemberID=72 </weight> +<weight id="1585" MUR="1.0" MUF="1.0" PDF="90273" > PDF=90200 MemberID=73 </weight> +<weight id="1586" MUR="1.0" MUF="1.0" PDF="90274" > PDF=90200 MemberID=74 </weight> +<weight id="1587" MUR="1.0" MUF="1.0" PDF="90275" > PDF=90200 MemberID=75 </weight> +<weight id="1588" MUR="1.0" MUF="1.0" PDF="90276" > PDF=90200 MemberID=76 </weight> +<weight id="1589" MUR="1.0" MUF="1.0" PDF="90277" > PDF=90200 MemberID=77 </weight> +<weight id="1590" MUR="1.0" MUF="1.0" PDF="90278" > PDF=90200 MemberID=78 </weight> +<weight id="1591" MUR="1.0" MUF="1.0" PDF="90279" > PDF=90200 MemberID=79 </weight> +<weight id="1592" MUR="1.0" MUF="1.0" PDF="90280" > PDF=90200 MemberID=80 </weight> +<weight id="1593" MUR="1.0" MUF="1.0" PDF="90281" > PDF=90200 MemberID=81 </weight> +<weight id="1594" MUR="1.0" MUF="1.0" PDF="90282" > PDF=90200 MemberID=82 </weight> +<weight id="1595" MUR="1.0" MUF="1.0" PDF="90283" > PDF=90200 MemberID=83 </weight> +<weight id="1596" MUR="1.0" MUF="1.0" PDF="90284" > PDF=90200 MemberID=84 </weight> +<weight id="1597" MUR="1.0" MUF="1.0" PDF="90285" > PDF=90200 MemberID=85 </weight> +<weight id="1598" MUR="1.0" MUF="1.0" PDF="90286" > PDF=90200 MemberID=86 </weight> +<weight id="1599" MUR="1.0" MUF="1.0" PDF="90287" > PDF=90200 MemberID=87 </weight> +<weight id="1600" MUR="1.0" MUF="1.0" PDF="90288" > PDF=90200 MemberID=88 </weight> +<weight id="1601" MUR="1.0" MUF="1.0" PDF="90289" > PDF=90200 MemberID=89 </weight> +<weight id="1602" MUR="1.0" MUF="1.0" PDF="90290" > PDF=90200 MemberID=90 </weight> +<weight id="1603" MUR="1.0" MUF="1.0" PDF="90291" > PDF=90200 MemberID=91 </weight> +<weight id="1604" MUR="1.0" MUF="1.0" PDF="90292" > PDF=90200 MemberID=92 </weight> +<weight id="1605" MUR="1.0" MUF="1.0" PDF="90293" > PDF=90200 MemberID=93 </weight> +<weight id="1606" MUR="1.0" MUF="1.0" PDF="90294" > PDF=90200 MemberID=94 </weight> +<weight id="1607" MUR="1.0" MUF="1.0" PDF="90295" > PDF=90200 MemberID=95 </weight> +<weight id="1608" MUR="1.0" MUF="1.0" PDF="90296" > PDF=90200 MemberID=96 </weight> +<weight id="1609" MUR="1.0" MUF="1.0" PDF="90297" > PDF=90200 MemberID=97 </weight> +<weight id="1610" MUR="1.0" MUF="1.0" PDF="90298" > PDF=90200 MemberID=98 </weight> +<weight id="1611" MUR="1.0" MUF="1.0" PDF="90299" > PDF=90200 MemberID=99 </weight> +<weight id="1612" MUR="1.0" MUF="1.0" PDF="90300" > PDF=90200 MemberID=100 </weight> +<weight id="1613" MUR="1.0" MUF="1.0" PDF="90301" > PDF=90200 MemberID=101 </weight> +<weight id="1614" MUR="1.0" MUF="1.0" PDF="90302" > PDF=90200 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nnlo_100_pdfas" combine="symmhessian+as"> # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 +<weight id="1615" MUR="1.0" MUF="1.0" PDF="91200" > PDF=91200 MemberID=0 </weight> +<weight id="1616" MUR="1.0" MUF="1.0" PDF="91201" > PDF=91200 MemberID=1 </weight> +<weight id="1617" MUR="1.0" MUF="1.0" PDF="91202" > PDF=91200 MemberID=2 </weight> +<weight id="1618" MUR="1.0" MUF="1.0" PDF="91203" > PDF=91200 MemberID=3 </weight> +<weight id="1619" MUR="1.0" MUF="1.0" PDF="91204" > PDF=91200 MemberID=4 </weight> +<weight id="1620" MUR="1.0" MUF="1.0" PDF="91205" > PDF=91200 MemberID=5 </weight> +<weight id="1621" MUR="1.0" MUF="1.0" PDF="91206" > PDF=91200 MemberID=6 </weight> +<weight id="1622" MUR="1.0" MUF="1.0" PDF="91207" > PDF=91200 MemberID=7 </weight> +<weight id="1623" MUR="1.0" MUF="1.0" PDF="91208" > PDF=91200 MemberID=8 </weight> +<weight id="1624" MUR="1.0" MUF="1.0" PDF="91209" > PDF=91200 MemberID=9 </weight> +<weight id="1625" MUR="1.0" MUF="1.0" PDF="91210" > PDF=91200 MemberID=10 </weight> +<weight id="1626" MUR="1.0" MUF="1.0" PDF="91211" > PDF=91200 MemberID=11 </weight> +<weight id="1627" MUR="1.0" MUF="1.0" PDF="91212" > PDF=91200 MemberID=12 </weight> +<weight id="1628" MUR="1.0" MUF="1.0" PDF="91213" > PDF=91200 MemberID=13 </weight> +<weight id="1629" MUR="1.0" MUF="1.0" PDF="91214" > PDF=91200 MemberID=14 </weight> +<weight id="1630" MUR="1.0" MUF="1.0" PDF="91215" > PDF=91200 MemberID=15 </weight> +<weight id="1631" MUR="1.0" MUF="1.0" PDF="91216" > PDF=91200 MemberID=16 </weight> +<weight id="1632" MUR="1.0" MUF="1.0" PDF="91217" > PDF=91200 MemberID=17 </weight> +<weight id="1633" MUR="1.0" MUF="1.0" PDF="91218" > PDF=91200 MemberID=18 </weight> +<weight id="1634" MUR="1.0" MUF="1.0" PDF="91219" > PDF=91200 MemberID=19 </weight> +<weight id="1635" MUR="1.0" MUF="1.0" PDF="91220" > PDF=91200 MemberID=20 </weight> +<weight id="1636" MUR="1.0" MUF="1.0" PDF="91221" > PDF=91200 MemberID=21 </weight> +<weight id="1637" MUR="1.0" MUF="1.0" PDF="91222" > PDF=91200 MemberID=22 </weight> +<weight id="1638" MUR="1.0" MUF="1.0" PDF="91223" > PDF=91200 MemberID=23 </weight> +<weight id="1639" MUR="1.0" MUF="1.0" PDF="91224" > PDF=91200 MemberID=24 </weight> +<weight id="1640" MUR="1.0" MUF="1.0" PDF="91225" > PDF=91200 MemberID=25 </weight> +<weight id="1641" MUR="1.0" MUF="1.0" PDF="91226" > PDF=91200 MemberID=26 </weight> +<weight id="1642" MUR="1.0" MUF="1.0" PDF="91227" > PDF=91200 MemberID=27 </weight> +<weight id="1643" MUR="1.0" MUF="1.0" PDF="91228" > PDF=91200 MemberID=28 </weight> +<weight id="1644" MUR="1.0" MUF="1.0" PDF="91229" > PDF=91200 MemberID=29 </weight> +<weight id="1645" MUR="1.0" MUF="1.0" PDF="91230" > PDF=91200 MemberID=30 </weight> +<weight id="1646" MUR="1.0" MUF="1.0" PDF="91231" > PDF=91200 MemberID=31 </weight> +<weight id="1647" MUR="1.0" MUF="1.0" PDF="91232" > PDF=91200 MemberID=32 </weight> +<weight id="1648" MUR="1.0" MUF="1.0" PDF="91233" > PDF=91200 MemberID=33 </weight> +<weight id="1649" MUR="1.0" MUF="1.0" PDF="91234" > PDF=91200 MemberID=34 </weight> +<weight id="1650" MUR="1.0" MUF="1.0" PDF="91235" > PDF=91200 MemberID=35 </weight> +<weight id="1651" MUR="1.0" MUF="1.0" PDF="91236" > PDF=91200 MemberID=36 </weight> +<weight id="1652" MUR="1.0" MUF="1.0" PDF="91237" > PDF=91200 MemberID=37 </weight> +<weight id="1653" MUR="1.0" MUF="1.0" PDF="91238" > PDF=91200 MemberID=38 </weight> +<weight id="1654" MUR="1.0" MUF="1.0" PDF="91239" > PDF=91200 MemberID=39 </weight> +<weight id="1655" MUR="1.0" MUF="1.0" PDF="91240" > PDF=91200 MemberID=40 </weight> +<weight id="1656" MUR="1.0" MUF="1.0" PDF="91241" > PDF=91200 MemberID=41 </weight> +<weight id="1657" MUR="1.0" MUF="1.0" PDF="91242" > PDF=91200 MemberID=42 </weight> +<weight id="1658" MUR="1.0" MUF="1.0" PDF="91243" > PDF=91200 MemberID=43 </weight> +<weight id="1659" MUR="1.0" MUF="1.0" PDF="91244" > PDF=91200 MemberID=44 </weight> +<weight id="1660" MUR="1.0" MUF="1.0" PDF="91245" > PDF=91200 MemberID=45 </weight> +<weight id="1661" MUR="1.0" MUF="1.0" PDF="91246" > PDF=91200 MemberID=46 </weight> +<weight id="1662" MUR="1.0" MUF="1.0" PDF="91247" > PDF=91200 MemberID=47 </weight> +<weight id="1663" MUR="1.0" MUF="1.0" PDF="91248" > PDF=91200 MemberID=48 </weight> +<weight id="1664" MUR="1.0" MUF="1.0" PDF="91249" > PDF=91200 MemberID=49 </weight> +<weight id="1665" MUR="1.0" MUF="1.0" PDF="91250" > PDF=91200 MemberID=50 </weight> +<weight id="1666" MUR="1.0" MUF="1.0" PDF="91251" > PDF=91200 MemberID=51 </weight> +<weight id="1667" MUR="1.0" MUF="1.0" PDF="91252" > PDF=91200 MemberID=52 </weight> +<weight id="1668" MUR="1.0" MUF="1.0" PDF="91253" > PDF=91200 MemberID=53 </weight> +<weight id="1669" MUR="1.0" MUF="1.0" PDF="91254" > PDF=91200 MemberID=54 </weight> +<weight id="1670" MUR="1.0" MUF="1.0" PDF="91255" > PDF=91200 MemberID=55 </weight> +<weight id="1671" MUR="1.0" MUF="1.0" PDF="91256" > PDF=91200 MemberID=56 </weight> +<weight id="1672" MUR="1.0" MUF="1.0" PDF="91257" > PDF=91200 MemberID=57 </weight> +<weight id="1673" MUR="1.0" MUF="1.0" PDF="91258" > PDF=91200 MemberID=58 </weight> +<weight id="1674" MUR="1.0" MUF="1.0" PDF="91259" > PDF=91200 MemberID=59 </weight> +<weight id="1675" MUR="1.0" MUF="1.0" PDF="91260" > PDF=91200 MemberID=60 </weight> +<weight id="1676" MUR="1.0" MUF="1.0" PDF="91261" > PDF=91200 MemberID=61 </weight> +<weight id="1677" MUR="1.0" MUF="1.0" PDF="91262" > PDF=91200 MemberID=62 </weight> +<weight id="1678" MUR="1.0" MUF="1.0" PDF="91263" > PDF=91200 MemberID=63 </weight> +<weight id="1679" MUR="1.0" MUF="1.0" PDF="91264" > PDF=91200 MemberID=64 </weight> +<weight id="1680" MUR="1.0" MUF="1.0" PDF="91265" > PDF=91200 MemberID=65 </weight> +<weight id="1681" MUR="1.0" MUF="1.0" PDF="91266" > PDF=91200 MemberID=66 </weight> +<weight id="1682" MUR="1.0" MUF="1.0" PDF="91267" > PDF=91200 MemberID=67 </weight> +<weight id="1683" MUR="1.0" MUF="1.0" PDF="91268" > PDF=91200 MemberID=68 </weight> +<weight id="1684" MUR="1.0" MUF="1.0" PDF="91269" > PDF=91200 MemberID=69 </weight> +<weight id="1685" MUR="1.0" MUF="1.0" PDF="91270" > PDF=91200 MemberID=70 </weight> +<weight id="1686" MUR="1.0" MUF="1.0" PDF="91271" > PDF=91200 MemberID=71 </weight> +<weight id="1687" MUR="1.0" MUF="1.0" PDF="91272" > PDF=91200 MemberID=72 </weight> +<weight id="1688" MUR="1.0" MUF="1.0" PDF="91273" > PDF=91200 MemberID=73 </weight> +<weight id="1689" MUR="1.0" MUF="1.0" PDF="91274" > PDF=91200 MemberID=74 </weight> +<weight id="1690" MUR="1.0" MUF="1.0" PDF="91275" > PDF=91200 MemberID=75 </weight> +<weight id="1691" MUR="1.0" MUF="1.0" PDF="91276" > PDF=91200 MemberID=76 </weight> +<weight id="1692" MUR="1.0" MUF="1.0" PDF="91277" > PDF=91200 MemberID=77 </weight> +<weight id="1693" MUR="1.0" MUF="1.0" PDF="91278" > PDF=91200 MemberID=78 </weight> +<weight id="1694" MUR="1.0" MUF="1.0" PDF="91279" > PDF=91200 MemberID=79 </weight> +<weight id="1695" MUR="1.0" MUF="1.0" PDF="91280" > PDF=91200 MemberID=80 </weight> +<weight id="1696" MUR="1.0" MUF="1.0" PDF="91281" > PDF=91200 MemberID=81 </weight> +<weight id="1697" MUR="1.0" MUF="1.0" PDF="91282" > PDF=91200 MemberID=82 </weight> +<weight id="1698" MUR="1.0" MUF="1.0" PDF="91283" > PDF=91200 MemberID=83 </weight> +<weight id="1699" MUR="1.0" MUF="1.0" PDF="91284" > PDF=91200 MemberID=84 </weight> +<weight id="1700" MUR="1.0" MUF="1.0" PDF="91285" > PDF=91200 MemberID=85 </weight> +<weight id="1701" MUR="1.0" MUF="1.0" PDF="91286" > PDF=91200 MemberID=86 </weight> +<weight id="1702" MUR="1.0" MUF="1.0" PDF="91287" > PDF=91200 MemberID=87 </weight> +<weight id="1703" MUR="1.0" MUF="1.0" PDF="91288" > PDF=91200 MemberID=88 </weight> +<weight id="1704" MUR="1.0" MUF="1.0" PDF="91289" > PDF=91200 MemberID=89 </weight> +<weight id="1705" MUR="1.0" MUF="1.0" PDF="91290" > PDF=91200 MemberID=90 </weight> +<weight id="1706" MUR="1.0" MUF="1.0" PDF="91291" > PDF=91200 MemberID=91 </weight> +<weight id="1707" MUR="1.0" MUF="1.0" PDF="91292" > PDF=91200 MemberID=92 </weight> +<weight id="1708" MUR="1.0" MUF="1.0" PDF="91293" > PDF=91200 MemberID=93 </weight> +<weight id="1709" MUR="1.0" MUF="1.0" PDF="91294" > PDF=91200 MemberID=94 </weight> +<weight id="1710" MUR="1.0" MUF="1.0" PDF="91295" > PDF=91200 MemberID=95 </weight> +<weight id="1711" MUR="1.0" MUF="1.0" PDF="91296" > PDF=91200 MemberID=96 </weight> +<weight id="1712" MUR="1.0" MUF="1.0" PDF="91297" > PDF=91200 MemberID=97 </weight> +<weight id="1713" MUR="1.0" MUF="1.0" PDF="91298" > PDF=91200 MemberID=98 </weight> +<weight id="1714" MUR="1.0" MUF="1.0" PDF="91299" > PDF=91200 MemberID=99 </weight> +<weight id="1715" MUR="1.0" MUF="1.0" PDF="91300" > PDF=91200 MemberID=100 </weight> +<weight id="1716" MUR="1.0" MUF="1.0" PDF="91301" > PDF=91200 MemberID=101 </weight> +<weight id="1717" MUR="1.0" MUF="1.0" PDF="91302" > PDF=91200 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nlo_30_pdfas" combine="symmhessian+as"> # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 +<weight id="1718" MUR="1.0" MUF="1.0" PDF="90400" > PDF=90400 MemberID=0 </weight> +<weight id="1719" MUR="1.0" MUF="1.0" PDF="90401" > PDF=90400 MemberID=1 </weight> +<weight id="1720" MUR="1.0" MUF="1.0" PDF="90402" > PDF=90400 MemberID=2 </weight> +<weight id="1721" MUR="1.0" MUF="1.0" PDF="90403" > PDF=90400 MemberID=3 </weight> +<weight id="1722" MUR="1.0" MUF="1.0" PDF="90404" > PDF=90400 MemberID=4 </weight> +<weight id="1723" MUR="1.0" MUF="1.0" PDF="90405" > PDF=90400 MemberID=5 </weight> +<weight id="1724" MUR="1.0" MUF="1.0" PDF="90406" > PDF=90400 MemberID=6 </weight> +<weight id="1725" MUR="1.0" MUF="1.0" PDF="90407" > PDF=90400 MemberID=7 </weight> +<weight id="1726" MUR="1.0" MUF="1.0" PDF="90408" > PDF=90400 MemberID=8 </weight> +<weight id="1727" MUR="1.0" MUF="1.0" PDF="90409" > PDF=90400 MemberID=9 </weight> +<weight id="1728" MUR="1.0" MUF="1.0" PDF="90410" > PDF=90400 MemberID=10 </weight> +<weight id="1729" MUR="1.0" MUF="1.0" PDF="90411" > PDF=90400 MemberID=11 </weight> +<weight id="1730" MUR="1.0" MUF="1.0" PDF="90412" > PDF=90400 MemberID=12 </weight> +<weight id="1731" MUR="1.0" MUF="1.0" PDF="90413" > PDF=90400 MemberID=13 </weight> +<weight id="1732" MUR="1.0" MUF="1.0" PDF="90414" > PDF=90400 MemberID=14 </weight> +<weight id="1733" MUR="1.0" MUF="1.0" PDF="90415" > PDF=90400 MemberID=15 </weight> +<weight id="1734" MUR="1.0" MUF="1.0" PDF="90416" > PDF=90400 MemberID=16 </weight> +<weight id="1735" MUR="1.0" MUF="1.0" PDF="90417" > PDF=90400 MemberID=17 </weight> +<weight id="1736" MUR="1.0" MUF="1.0" PDF="90418" > PDF=90400 MemberID=18 </weight> +<weight id="1737" MUR="1.0" MUF="1.0" PDF="90419" > PDF=90400 MemberID=19 </weight> +<weight id="1738" MUR="1.0" MUF="1.0" PDF="90420" > PDF=90400 MemberID=20 </weight> +<weight id="1739" MUR="1.0" MUF="1.0" PDF="90421" > PDF=90400 MemberID=21 </weight> +<weight id="1740" MUR="1.0" MUF="1.0" PDF="90422" > PDF=90400 MemberID=22 </weight> +<weight id="1741" MUR="1.0" MUF="1.0" PDF="90423" > PDF=90400 MemberID=23 </weight> +<weight id="1742" MUR="1.0" MUF="1.0" PDF="90424" > PDF=90400 MemberID=24 </weight> +<weight id="1743" MUR="1.0" MUF="1.0" PDF="90425" > PDF=90400 MemberID=25 </weight> +<weight id="1744" MUR="1.0" MUF="1.0" PDF="90426" > PDF=90400 MemberID=26 </weight> +<weight id="1745" MUR="1.0" MUF="1.0" PDF="90427" > PDF=90400 MemberID=27 </weight> +<weight id="1746" MUR="1.0" MUF="1.0" PDF="90428" > PDF=90400 MemberID=28 </weight> +<weight id="1747" MUR="1.0" MUF="1.0" PDF="90429" > PDF=90400 MemberID=29 </weight> +<weight id="1748" MUR="1.0" MUF="1.0" PDF="90430" > PDF=90400 MemberID=30 </weight> +<weight id="1749" MUR="1.0" MUF="1.0" PDF="90431" > PDF=90400 MemberID=31 </weight> +<weight id="1750" MUR="1.0" MUF="1.0" PDF="90432" > PDF=90400 MemberID=32 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="PDF4LHC15_nnlo_30_pdfas" combine="symmhessian+as"> # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 +<weight id="1751" MUR="1.0" MUF="1.0" PDF="91400" > PDF=91400 MemberID=0 </weight> +<weight id="1752" MUR="1.0" MUF="1.0" PDF="91401" > PDF=91400 MemberID=1 </weight> +<weight id="1753" MUR="1.0" MUF="1.0" PDF="91402" > PDF=91400 MemberID=2 </weight> +<weight id="1754" MUR="1.0" MUF="1.0" PDF="91403" > PDF=91400 MemberID=3 </weight> +<weight id="1755" MUR="1.0" MUF="1.0" PDF="91404" > PDF=91400 MemberID=4 </weight> +<weight id="1756" MUR="1.0" MUF="1.0" PDF="91405" > PDF=91400 MemberID=5 </weight> +<weight id="1757" MUR="1.0" MUF="1.0" PDF="91406" > PDF=91400 MemberID=6 </weight> +<weight id="1758" MUR="1.0" MUF="1.0" PDF="91407" > PDF=91400 MemberID=7 </weight> +<weight id="1759" MUR="1.0" MUF="1.0" PDF="91408" > PDF=91400 MemberID=8 </weight> +<weight id="1760" MUR="1.0" MUF="1.0" PDF="91409" > PDF=91400 MemberID=9 </weight> +<weight id="1761" MUR="1.0" MUF="1.0" PDF="91410" > PDF=91400 MemberID=10 </weight> +<weight id="1762" MUR="1.0" MUF="1.0" PDF="91411" > PDF=91400 MemberID=11 </weight> +<weight id="1763" MUR="1.0" MUF="1.0" PDF="91412" > PDF=91400 MemberID=12 </weight> +<weight id="1764" MUR="1.0" MUF="1.0" PDF="91413" > PDF=91400 MemberID=13 </weight> +<weight id="1765" MUR="1.0" MUF="1.0" PDF="91414" > PDF=91400 MemberID=14 </weight> +<weight id="1766" MUR="1.0" MUF="1.0" PDF="91415" > PDF=91400 MemberID=15 </weight> +<weight id="1767" MUR="1.0" MUF="1.0" PDF="91416" > PDF=91400 MemberID=16 </weight> +<weight id="1768" MUR="1.0" MUF="1.0" PDF="91417" > PDF=91400 MemberID=17 </weight> +<weight id="1769" MUR="1.0" MUF="1.0" PDF="91418" > PDF=91400 MemberID=18 </weight> +<weight id="1770" MUR="1.0" MUF="1.0" PDF="91419" > PDF=91400 MemberID=19 </weight> +<weight id="1771" MUR="1.0" MUF="1.0" PDF="91420" > PDF=91400 MemberID=20 </weight> +<weight id="1772" MUR="1.0" MUF="1.0" PDF="91421" > PDF=91400 MemberID=21 </weight> +<weight id="1773" MUR="1.0" MUF="1.0" PDF="91422" > PDF=91400 MemberID=22 </weight> +<weight id="1774" MUR="1.0" MUF="1.0" PDF="91423" > PDF=91400 MemberID=23 </weight> +<weight id="1775" MUR="1.0" MUF="1.0" PDF="91424" > PDF=91400 MemberID=24 </weight> +<weight id="1776" MUR="1.0" MUF="1.0" PDF="91425" > PDF=91400 MemberID=25 </weight> +<weight id="1777" MUR="1.0" MUF="1.0" PDF="91426" > PDF=91400 MemberID=26 </weight> +<weight id="1778" MUR="1.0" MUF="1.0" PDF="91427" > PDF=91400 MemberID=27 </weight> +<weight id="1779" MUR="1.0" MUF="1.0" PDF="91428" > PDF=91400 MemberID=28 </weight> +<weight id="1780" MUR="1.0" MUF="1.0" PDF="91429" > PDF=91400 MemberID=29 </weight> +<weight id="1781" MUR="1.0" MUF="1.0" PDF="91430" > PDF=91400 MemberID=30 </weight> +<weight id="1782" MUR="1.0" MUF="1.0" PDF="91431" > PDF=91400 MemberID=31 </weight> +<weight id="1783" MUR="1.0" MUF="1.0" PDF="91432" > PDF=91400 MemberID=32 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NLO_EIG" combine="hessian"> # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. +<weight id="1784" MUR="1.0" MUF="1.0" PDF="61100" > PDF=61100 MemberID=0 </weight> +<weight id="1785" MUR="1.0" MUF="1.0" PDF="61101" > PDF=61100 MemberID=1 </weight> +<weight id="1786" MUR="1.0" MUF="1.0" PDF="61102" > PDF=61100 MemberID=2 </weight> +<weight id="1787" MUR="1.0" MUF="1.0" PDF="61103" > PDF=61100 MemberID=3 </weight> +<weight id="1788" MUR="1.0" MUF="1.0" PDF="61104" > PDF=61100 MemberID=4 </weight> +<weight id="1789" MUR="1.0" MUF="1.0" PDF="61105" > PDF=61100 MemberID=5 </weight> +<weight id="1790" MUR="1.0" MUF="1.0" PDF="61106" > PDF=61100 MemberID=6 </weight> +<weight id="1791" MUR="1.0" MUF="1.0" PDF="61107" > PDF=61100 MemberID=7 </weight> +<weight id="1792" MUR="1.0" MUF="1.0" PDF="61108" > PDF=61100 MemberID=8 </weight> +<weight id="1793" MUR="1.0" MUF="1.0" PDF="61109" > PDF=61100 MemberID=9 </weight> +<weight id="1794" MUR="1.0" MUF="1.0" PDF="61110" > PDF=61100 MemberID=10 </weight> +<weight id="1795" MUR="1.0" MUF="1.0" PDF="61111" > PDF=61100 MemberID=11 </weight> +<weight id="1796" MUR="1.0" MUF="1.0" PDF="61112" > PDF=61100 MemberID=12 </weight> +<weight id="1797" MUR="1.0" MUF="1.0" PDF="61113" > PDF=61100 MemberID=13 </weight> +<weight id="1798" MUR="1.0" MUF="1.0" PDF="61114" > PDF=61100 MemberID=14 </weight> +<weight id="1799" MUR="1.0" MUF="1.0" PDF="61115" > PDF=61100 MemberID=15 </weight> +<weight id="1800" MUR="1.0" MUF="1.0" PDF="61116" > PDF=61100 MemberID=16 </weight> +<weight id="1801" MUR="1.0" MUF="1.0" PDF="61117" > PDF=61100 MemberID=17 </weight> +<weight id="1802" MUR="1.0" MUF="1.0" PDF="61118" > PDF=61100 MemberID=18 </weight> +<weight id="1803" MUR="1.0" MUF="1.0" PDF="61119" > PDF=61100 MemberID=19 </weight> +<weight id="1804" MUR="1.0" MUF="1.0" PDF="61120" > PDF=61100 MemberID=20 </weight> +<weight id="1805" MUR="1.0" MUF="1.0" PDF="61121" > PDF=61100 MemberID=21 </weight> +<weight id="1806" MUR="1.0" MUF="1.0" PDF="61122" > PDF=61100 MemberID=22 </weight> +<weight id="1807" MUR="1.0" MUF="1.0" PDF="61123" > PDF=61100 MemberID=23 </weight> +<weight id="1808" MUR="1.0" MUF="1.0" PDF="61124" > PDF=61100 MemberID=24 </weight> +<weight id="1809" MUR="1.0" MUF="1.0" PDF="61125" > PDF=61100 MemberID=25 </weight> +<weight id="1810" MUR="1.0" MUF="1.0" PDF="61126" > PDF=61100 MemberID=26 </weight> +<weight id="1811" MUR="1.0" MUF="1.0" PDF="61127" > PDF=61100 MemberID=27 </weight> +<weight id="1812" MUR="1.0" MUF="1.0" PDF="61128" > PDF=61100 MemberID=28 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NLO_VAR" combine="custom"> # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); +<weight id="1813" MUR="1.0" MUF="1.0" PDF="61130" > PDF=61130 MemberID=0 </weight> +<weight id="1814" MUR="1.0" MUF="1.0" PDF="61131" > PDF=61130 MemberID=1 </weight> +<weight id="1815" MUR="1.0" MUF="1.0" PDF="61132" > PDF=61130 MemberID=2 </weight> +<weight id="1816" MUR="1.0" MUF="1.0" PDF="61133" > PDF=61130 MemberID=3 </weight> +<weight id="1817" MUR="1.0" MUF="1.0" PDF="61134" > PDF=61130 MemberID=4 </weight> +<weight id="1818" MUR="1.0" MUF="1.0" PDF="61135" > PDF=61130 MemberID=5 </weight> +<weight id="1819" MUR="1.0" MUF="1.0" PDF="61136" > PDF=61130 MemberID=6 </weight> +<weight id="1820" MUR="1.0" MUF="1.0" PDF="61137" > PDF=61130 MemberID=7 </weight> +<weight id="1821" MUR="1.0" MUF="1.0" PDF="61138" > PDF=61130 MemberID=8 </weight> +<weight id="1822" MUR="1.0" MUF="1.0" PDF="61139" > PDF=61130 MemberID=9 </weight> +<weight id="1823" MUR="1.0" MUF="1.0" PDF="61140" > PDF=61130 MemberID=10 </weight> +<weight id="1824" MUR="1.0" MUF="1.0" PDF="61141" > PDF=61130 MemberID=11 </weight> +<weight id="1825" MUR="1.0" MUF="1.0" PDF="61142" > PDF=61130 MemberID=12 </weight> +<weight id="1826" MUR="1.0" MUF="1.0" PDF="61143" > PDF=61130 MemberID=13 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NNLO_EIG" combine="hessian"> # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. +<weight id="1827" MUR="1.0" MUF="1.0" PDF="61200" > PDF=61200 MemberID=0 </weight> +<weight id="1828" MUR="1.0" MUF="1.0" PDF="61201" > PDF=61200 MemberID=1 </weight> +<weight id="1829" MUR="1.0" MUF="1.0" PDF="61202" > PDF=61200 MemberID=2 </weight> +<weight id="1830" MUR="1.0" MUF="1.0" PDF="61203" > PDF=61200 MemberID=3 </weight> +<weight id="1831" MUR="1.0" MUF="1.0" PDF="61204" > PDF=61200 MemberID=4 </weight> +<weight id="1832" MUR="1.0" MUF="1.0" PDF="61205" > PDF=61200 MemberID=5 </weight> +<weight id="1833" MUR="1.0" MUF="1.0" PDF="61206" > PDF=61200 MemberID=6 </weight> +<weight id="1834" MUR="1.0" MUF="1.0" PDF="61207" > PDF=61200 MemberID=7 </weight> +<weight id="1835" MUR="1.0" MUF="1.0" PDF="61208" > PDF=61200 MemberID=8 </weight> +<weight id="1836" MUR="1.0" MUF="1.0" PDF="61209" > PDF=61200 MemberID=9 </weight> +<weight id="1837" MUR="1.0" MUF="1.0" PDF="61210" > PDF=61200 MemberID=10 </weight> +<weight id="1838" MUR="1.0" MUF="1.0" PDF="61211" > PDF=61200 MemberID=11 </weight> +<weight id="1839" MUR="1.0" MUF="1.0" PDF="61212" > PDF=61200 MemberID=12 </weight> +<weight id="1840" MUR="1.0" MUF="1.0" PDF="61213" > PDF=61200 MemberID=13 </weight> +<weight id="1841" MUR="1.0" MUF="1.0" PDF="61214" > PDF=61200 MemberID=14 </weight> +<weight id="1842" MUR="1.0" MUF="1.0" PDF="61215" > PDF=61200 MemberID=15 </weight> +<weight id="1843" MUR="1.0" MUF="1.0" PDF="61216" > PDF=61200 MemberID=16 </weight> +<weight id="1844" MUR="1.0" MUF="1.0" PDF="61217" > PDF=61200 MemberID=17 </weight> +<weight id="1845" MUR="1.0" MUF="1.0" PDF="61218" > PDF=61200 MemberID=18 </weight> +<weight id="1846" MUR="1.0" MUF="1.0" PDF="61219" > PDF=61200 MemberID=19 </weight> +<weight id="1847" MUR="1.0" MUF="1.0" PDF="61220" > PDF=61200 MemberID=20 </weight> +<weight id="1848" MUR="1.0" MUF="1.0" PDF="61221" > PDF=61200 MemberID=21 </weight> +<weight id="1849" MUR="1.0" MUF="1.0" PDF="61222" > PDF=61200 MemberID=22 </weight> +<weight id="1850" MUR="1.0" MUF="1.0" PDF="61223" > PDF=61200 MemberID=23 </weight> +<weight id="1851" MUR="1.0" MUF="1.0" PDF="61224" > PDF=61200 MemberID=24 </weight> +<weight id="1852" MUR="1.0" MUF="1.0" PDF="61225" > PDF=61200 MemberID=25 </weight> +<weight id="1853" MUR="1.0" MUF="1.0" PDF="61226" > PDF=61200 MemberID=26 </weight> +<weight id="1854" MUR="1.0" MUF="1.0" PDF="61227" > PDF=61200 MemberID=27 </weight> +<weight id="1855" MUR="1.0" MUF="1.0" PDF="61228" > PDF=61200 MemberID=28 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="HERAPDF20_NNLO_VAR" combine="custom"> # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); +<weight id="1856" MUR="1.0" MUF="1.0" PDF="61230" > PDF=61230 MemberID=0 </weight> +<weight id="1857" MUR="1.0" MUF="1.0" PDF="61231" > PDF=61230 MemberID=1 </weight> +<weight id="1858" MUR="1.0" MUF="1.0" PDF="61232" > PDF=61230 MemberID=2 </weight> +<weight id="1859" MUR="1.0" MUF="1.0" PDF="61233" > PDF=61230 MemberID=3 </weight> +<weight id="1860" MUR="1.0" MUF="1.0" PDF="61234" > PDF=61230 MemberID=4 </weight> +<weight id="1861" MUR="1.0" MUF="1.0" PDF="61235" > PDF=61230 MemberID=5 </weight> +<weight id="1862" MUR="1.0" MUF="1.0" PDF="61236" > PDF=61230 MemberID=6 </weight> +<weight id="1863" MUR="1.0" MUF="1.0" PDF="61237" > PDF=61230 MemberID=7 </weight> +<weight id="1864" MUR="1.0" MUF="1.0" PDF="61238" > PDF=61230 MemberID=8 </weight> +<weight id="1865" MUR="1.0" MUF="1.0" PDF="61239" > PDF=61230 MemberID=9 </weight> +<weight id="1866" MUR="1.0" MUF="1.0" PDF="61240" > PDF=61230 MemberID=10 </weight> +<weight id="1867" MUR="1.0" MUF="1.0" PDF="61241" > PDF=61230 MemberID=11 </weight> +<weight id="1868" MUR="1.0" MUF="1.0" PDF="61242" > PDF=61230 MemberID=12 </weight> +<weight id="1869" MUR="1.0" MUF="1.0" PDF="61243" > PDF=61230 MemberID=13 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="CT14qed_inc_proton" combine="unknown"> # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference +<weight id="1870" MUR="1.0" MUF="1.0" PDF="13400" > PDF=13400 MemberID=0 </weight> +<weight id="1871" MUR="1.0" MUF="1.0" PDF="13401" > PDF=13400 MemberID=1 </weight> +<weight id="1872" MUR="1.0" MUF="1.0" PDF="13402" > PDF=13400 MemberID=2 </weight> +<weight id="1873" MUR="1.0" MUF="1.0" PDF="13403" > PDF=13400 MemberID=3 </weight> +<weight id="1874" MUR="1.0" MUF="1.0" PDF="13404" > PDF=13400 MemberID=4 </weight> +<weight id="1875" MUR="1.0" MUF="1.0" PDF="13405" > PDF=13400 MemberID=5 </weight> +<weight id="1876" MUR="1.0" MUF="1.0" PDF="13406" > PDF=13400 MemberID=6 </weight> +<weight id="1877" MUR="1.0" MUF="1.0" PDF="13407" > PDF=13400 MemberID=7 </weight> +<weight id="1878" MUR="1.0" MUF="1.0" PDF="13408" > PDF=13400 MemberID=8 </weight> +<weight id="1879" MUR="1.0" MUF="1.0" PDF="13409" > PDF=13400 MemberID=9 </weight> +<weight id="1880" MUR="1.0" MUF="1.0" PDF="13410" > PDF=13400 MemberID=10 </weight> +<weight id="1881" MUR="1.0" MUF="1.0" PDF="13411" > PDF=13400 MemberID=11 </weight> +<weight id="1882" MUR="1.0" MUF="1.0" PDF="13412" > PDF=13400 MemberID=12 </weight> +<weight id="1883" MUR="1.0" MUF="1.0" PDF="13413" > PDF=13400 MemberID=13 </weight> +<weight id="1884" MUR="1.0" MUF="1.0" PDF="13414" > PDF=13400 MemberID=14 </weight> +<weight id="1885" MUR="1.0" MUF="1.0" PDF="13415" > PDF=13400 MemberID=15 </weight> +<weight id="1886" MUR="1.0" MUF="1.0" PDF="13416" > PDF=13400 MemberID=16 </weight> +<weight id="1887" MUR="1.0" MUF="1.0" PDF="13417" > PDF=13400 MemberID=17 </weight> +<weight id="1888" MUR="1.0" MUF="1.0" PDF="13418" > PDF=13400 MemberID=18 </weight> +<weight id="1889" MUR="1.0" MUF="1.0" PDF="13419" > PDF=13400 MemberID=19 </weight> +<weight id="1890" MUR="1.0" MUF="1.0" PDF="13420" > PDF=13400 MemberID=20 </weight> +<weight id="1891" MUR="1.0" MUF="1.0" PDF="13421" > PDF=13400 MemberID=21 </weight> +<weight id="1892" MUR="1.0" MUF="1.0" PDF="13422" > PDF=13400 MemberID=22 </weight> +<weight id="1893" MUR="1.0" MUF="1.0" PDF="13423" > PDF=13400 MemberID=23 </weight> +<weight id="1894" MUR="1.0" MUF="1.0" PDF="13424" > PDF=13400 MemberID=24 </weight> +<weight id="1895" MUR="1.0" MUF="1.0" PDF="13425" > PDF=13400 MemberID=25 </weight> +<weight id="1896" MUR="1.0" MUF="1.0" PDF="13426" > PDF=13400 MemberID=26 </weight> +<weight id="1897" MUR="1.0" MUF="1.0" PDF="13427" > PDF=13400 MemberID=27 </weight> +<weight id="1898" MUR="1.0" MUF="1.0" PDF="13428" > PDF=13400 MemberID=28 </weight> +<weight id="1899" MUR="1.0" MUF="1.0" PDF="13429" > PDF=13400 MemberID=29 </weight> +<weight id="1900" MUR="1.0" MUF="1.0" PDF="13430" > PDF=13400 MemberID=30 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="LUXqed17_plus_PDF4LHC15_nnlo_100" combine="symmhessian"> # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. +PDF4LHC15_nnlo_100 description: + PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 + ; PDF symmetric eigenvectors +LUXqed description: + Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P + fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. + Photon generated at scale 100.0 GeV, other partons matched at scale + 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - + 0.00699 * x^{0.000} g(x) at scale 10.0 GeV +Members: + 0 is central + 1-100 map to original PDF members + 101 replacement of CLAS resonance fit with Christy-Bosted fit + 102 rescale-R-0.5 + 103 rescale R in high-Q^2 region with a higher-twist component + 104 use the A1 elastic fit result without the two-photon exchange corrections + 105 use the lower edge of the elastic fit error band + 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 + 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) +Versioning info: + DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) +LUXqed version history for this PDF: + This version corresponds to the long LUXqed17 paper. +<weight id="1901" MUR="1.0" MUF="1.0" PDF="82200" > PDF=82200 MemberID=0 </weight> +<weight id="1902" MUR="1.0" MUF="1.0" PDF="82201" > PDF=82200 MemberID=1 </weight> +<weight id="1903" MUR="1.0" MUF="1.0" PDF="82202" > PDF=82200 MemberID=2 </weight> +<weight id="1904" MUR="1.0" MUF="1.0" PDF="82203" > PDF=82200 MemberID=3 </weight> +<weight id="1905" MUR="1.0" MUF="1.0" PDF="82204" > PDF=82200 MemberID=4 </weight> +<weight id="1906" MUR="1.0" MUF="1.0" PDF="82205" > PDF=82200 MemberID=5 </weight> +<weight id="1907" MUR="1.0" MUF="1.0" PDF="82206" > PDF=82200 MemberID=6 </weight> +<weight id="1908" MUR="1.0" MUF="1.0" PDF="82207" > PDF=82200 MemberID=7 </weight> +<weight id="1909" MUR="1.0" MUF="1.0" PDF="82208" > PDF=82200 MemberID=8 </weight> +<weight id="1910" MUR="1.0" MUF="1.0" PDF="82209" > PDF=82200 MemberID=9 </weight> +<weight id="1911" MUR="1.0" MUF="1.0" PDF="82210" > PDF=82200 MemberID=10 </weight> +<weight id="1912" MUR="1.0" MUF="1.0" PDF="82211" > PDF=82200 MemberID=11 </weight> +<weight id="1913" MUR="1.0" MUF="1.0" PDF="82212" > PDF=82200 MemberID=12 </weight> +<weight id="1914" MUR="1.0" MUF="1.0" PDF="82213" > PDF=82200 MemberID=13 </weight> +<weight id="1915" MUR="1.0" MUF="1.0" PDF="82214" > PDF=82200 MemberID=14 </weight> +<weight id="1916" MUR="1.0" MUF="1.0" PDF="82215" > PDF=82200 MemberID=15 </weight> +<weight id="1917" MUR="1.0" MUF="1.0" PDF="82216" > PDF=82200 MemberID=16 </weight> +<weight id="1918" MUR="1.0" MUF="1.0" PDF="82217" > PDF=82200 MemberID=17 </weight> +<weight id="1919" MUR="1.0" MUF="1.0" PDF="82218" > PDF=82200 MemberID=18 </weight> +<weight id="1920" MUR="1.0" MUF="1.0" PDF="82219" > PDF=82200 MemberID=19 </weight> +<weight id="1921" MUR="1.0" MUF="1.0" PDF="82220" > PDF=82200 MemberID=20 </weight> +<weight id="1922" MUR="1.0" MUF="1.0" PDF="82221" > PDF=82200 MemberID=21 </weight> +<weight id="1923" MUR="1.0" MUF="1.0" PDF="82222" > PDF=82200 MemberID=22 </weight> +<weight id="1924" MUR="1.0" MUF="1.0" PDF="82223" > PDF=82200 MemberID=23 </weight> +<weight id="1925" MUR="1.0" MUF="1.0" PDF="82224" > PDF=82200 MemberID=24 </weight> +<weight id="1926" MUR="1.0" MUF="1.0" PDF="82225" > PDF=82200 MemberID=25 </weight> +<weight id="1927" MUR="1.0" MUF="1.0" PDF="82226" > PDF=82200 MemberID=26 </weight> +<weight id="1928" MUR="1.0" MUF="1.0" PDF="82227" > PDF=82200 MemberID=27 </weight> +<weight id="1929" MUR="1.0" MUF="1.0" PDF="82228" > PDF=82200 MemberID=28 </weight> +<weight id="1930" MUR="1.0" MUF="1.0" PDF="82229" > PDF=82200 MemberID=29 </weight> +<weight id="1931" MUR="1.0" MUF="1.0" PDF="82230" > PDF=82200 MemberID=30 </weight> +<weight id="1932" MUR="1.0" MUF="1.0" PDF="82231" > PDF=82200 MemberID=31 </weight> +<weight id="1933" MUR="1.0" MUF="1.0" PDF="82232" > PDF=82200 MemberID=32 </weight> +<weight id="1934" MUR="1.0" MUF="1.0" PDF="82233" > PDF=82200 MemberID=33 </weight> +<weight id="1935" MUR="1.0" MUF="1.0" PDF="82234" > PDF=82200 MemberID=34 </weight> +<weight id="1936" MUR="1.0" MUF="1.0" PDF="82235" > PDF=82200 MemberID=35 </weight> +<weight id="1937" MUR="1.0" MUF="1.0" PDF="82236" > PDF=82200 MemberID=36 </weight> +<weight id="1938" MUR="1.0" MUF="1.0" PDF="82237" > PDF=82200 MemberID=37 </weight> +<weight id="1939" MUR="1.0" MUF="1.0" PDF="82238" > PDF=82200 MemberID=38 </weight> +<weight id="1940" MUR="1.0" MUF="1.0" PDF="82239" > PDF=82200 MemberID=39 </weight> +<weight id="1941" MUR="1.0" MUF="1.0" PDF="82240" > PDF=82200 MemberID=40 </weight> +<weight id="1942" MUR="1.0" MUF="1.0" PDF="82241" > PDF=82200 MemberID=41 </weight> +<weight id="1943" MUR="1.0" MUF="1.0" PDF="82242" > PDF=82200 MemberID=42 </weight> +<weight id="1944" MUR="1.0" MUF="1.0" PDF="82243" > PDF=82200 MemberID=43 </weight> +<weight id="1945" MUR="1.0" MUF="1.0" PDF="82244" > PDF=82200 MemberID=44 </weight> +<weight id="1946" MUR="1.0" MUF="1.0" PDF="82245" > PDF=82200 MemberID=45 </weight> +<weight id="1947" MUR="1.0" MUF="1.0" PDF="82246" > PDF=82200 MemberID=46 </weight> +<weight id="1948" MUR="1.0" MUF="1.0" PDF="82247" > PDF=82200 MemberID=47 </weight> +<weight id="1949" MUR="1.0" MUF="1.0" PDF="82248" > PDF=82200 MemberID=48 </weight> +<weight id="1950" MUR="1.0" MUF="1.0" PDF="82249" > PDF=82200 MemberID=49 </weight> +<weight id="1951" MUR="1.0" MUF="1.0" PDF="82250" > PDF=82200 MemberID=50 </weight> +<weight id="1952" MUR="1.0" MUF="1.0" PDF="82251" > PDF=82200 MemberID=51 </weight> +<weight id="1953" MUR="1.0" MUF="1.0" PDF="82252" > PDF=82200 MemberID=52 </weight> +<weight id="1954" MUR="1.0" MUF="1.0" PDF="82253" > PDF=82200 MemberID=53 </weight> +<weight id="1955" MUR="1.0" MUF="1.0" PDF="82254" > PDF=82200 MemberID=54 </weight> +<weight id="1956" MUR="1.0" MUF="1.0" PDF="82255" > PDF=82200 MemberID=55 </weight> +<weight id="1957" MUR="1.0" MUF="1.0" PDF="82256" > PDF=82200 MemberID=56 </weight> +<weight id="1958" MUR="1.0" MUF="1.0" PDF="82257" > PDF=82200 MemberID=57 </weight> +<weight id="1959" MUR="1.0" MUF="1.0" PDF="82258" > PDF=82200 MemberID=58 </weight> +<weight id="1960" MUR="1.0" MUF="1.0" PDF="82259" > PDF=82200 MemberID=59 </weight> +<weight id="1961" MUR="1.0" MUF="1.0" PDF="82260" > PDF=82200 MemberID=60 </weight> +<weight id="1962" MUR="1.0" MUF="1.0" PDF="82261" > PDF=82200 MemberID=61 </weight> +<weight id="1963" MUR="1.0" MUF="1.0" PDF="82262" > PDF=82200 MemberID=62 </weight> +<weight id="1964" MUR="1.0" MUF="1.0" PDF="82263" > PDF=82200 MemberID=63 </weight> +<weight id="1965" MUR="1.0" MUF="1.0" PDF="82264" > PDF=82200 MemberID=64 </weight> +<weight id="1966" MUR="1.0" MUF="1.0" PDF="82265" > PDF=82200 MemberID=65 </weight> +<weight id="1967" MUR="1.0" MUF="1.0" PDF="82266" > PDF=82200 MemberID=66 </weight> +<weight id="1968" MUR="1.0" MUF="1.0" PDF="82267" > PDF=82200 MemberID=67 </weight> +<weight id="1969" MUR="1.0" MUF="1.0" PDF="82268" > PDF=82200 MemberID=68 </weight> +<weight id="1970" MUR="1.0" MUF="1.0" PDF="82269" > PDF=82200 MemberID=69 </weight> +<weight id="1971" MUR="1.0" MUF="1.0" PDF="82270" > PDF=82200 MemberID=70 </weight> +<weight id="1972" MUR="1.0" MUF="1.0" PDF="82271" > PDF=82200 MemberID=71 </weight> +<weight id="1973" MUR="1.0" MUF="1.0" PDF="82272" > PDF=82200 MemberID=72 </weight> +<weight id="1974" MUR="1.0" MUF="1.0" PDF="82273" > PDF=82200 MemberID=73 </weight> +<weight id="1975" MUR="1.0" MUF="1.0" PDF="82274" > PDF=82200 MemberID=74 </weight> +<weight id="1976" MUR="1.0" MUF="1.0" PDF="82275" > PDF=82200 MemberID=75 </weight> +<weight id="1977" MUR="1.0" MUF="1.0" PDF="82276" > PDF=82200 MemberID=76 </weight> +<weight id="1978" MUR="1.0" MUF="1.0" PDF="82277" > PDF=82200 MemberID=77 </weight> +<weight id="1979" MUR="1.0" MUF="1.0" PDF="82278" > PDF=82200 MemberID=78 </weight> +<weight id="1980" MUR="1.0" MUF="1.0" PDF="82279" > PDF=82200 MemberID=79 </weight> +<weight id="1981" MUR="1.0" MUF="1.0" PDF="82280" > PDF=82200 MemberID=80 </weight> +<weight id="1982" MUR="1.0" MUF="1.0" PDF="82281" > PDF=82200 MemberID=81 </weight> +<weight id="1983" MUR="1.0" MUF="1.0" PDF="82282" > PDF=82200 MemberID=82 </weight> +<weight id="1984" MUR="1.0" MUF="1.0" PDF="82283" > PDF=82200 MemberID=83 </weight> +<weight id="1985" MUR="1.0" MUF="1.0" PDF="82284" > PDF=82200 MemberID=84 </weight> +<weight id="1986" MUR="1.0" MUF="1.0" PDF="82285" > PDF=82200 MemberID=85 </weight> +<weight id="1987" MUR="1.0" MUF="1.0" PDF="82286" > PDF=82200 MemberID=86 </weight> +<weight id="1988" MUR="1.0" MUF="1.0" PDF="82287" > PDF=82200 MemberID=87 </weight> +<weight id="1989" MUR="1.0" MUF="1.0" PDF="82288" > PDF=82200 MemberID=88 </weight> +<weight id="1990" MUR="1.0" MUF="1.0" PDF="82289" > PDF=82200 MemberID=89 </weight> +<weight id="1991" MUR="1.0" MUF="1.0" PDF="82290" > PDF=82200 MemberID=90 </weight> +<weight id="1992" MUR="1.0" MUF="1.0" PDF="82291" > PDF=82200 MemberID=91 </weight> +<weight id="1993" MUR="1.0" MUF="1.0" PDF="82292" > PDF=82200 MemberID=92 </weight> +<weight id="1994" MUR="1.0" MUF="1.0" PDF="82293" > PDF=82200 MemberID=93 </weight> +<weight id="1995" MUR="1.0" MUF="1.0" PDF="82294" > PDF=82200 MemberID=94 </weight> +<weight id="1996" MUR="1.0" MUF="1.0" PDF="82295" > PDF=82200 MemberID=95 </weight> +<weight id="1997" MUR="1.0" MUF="1.0" PDF="82296" > PDF=82200 MemberID=96 </weight> +<weight id="1998" MUR="1.0" MUF="1.0" PDF="82297" > PDF=82200 MemberID=97 </weight> +<weight id="1999" MUR="1.0" MUF="1.0" PDF="82298" > PDF=82200 MemberID=98 </weight> +<weight id="2000" MUR="1.0" MUF="1.0" PDF="82299" > PDF=82200 MemberID=99 </weight> +<weight id="2001" MUR="1.0" MUF="1.0" PDF="82300" > PDF=82200 MemberID=100 </weight> +<weight id="2002" MUR="1.0" MUF="1.0" PDF="82301" > PDF=82200 MemberID=101 </weight> +<weight id="2003" MUR="1.0" MUF="1.0" PDF="82302" > PDF=82200 MemberID=102 </weight> +<weight id="2004" MUR="1.0" MUF="1.0" PDF="82303" > PDF=82200 MemberID=103 </weight> +<weight id="2005" MUR="1.0" MUF="1.0" PDF="82304" > PDF=82200 MemberID=104 </weight> +<weight id="2006" MUR="1.0" MUF="1.0" PDF="82305" > PDF=82200 MemberID=105 </weight> +<weight id="2007" MUR="1.0" MUF="1.0" PDF="82306" > PDF=82200 MemberID=106 </weight> +<weight id="2008" MUR="1.0" MUF="1.0" PDF="82307" > PDF=82200 MemberID=107 </weight> +</weightgroup> # PDFSET -> PDFSET +<weightgroup name="NNPDF30_nlo_nf_5_pdfas" combine="replicas+as"> # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 +<weight id="2009" MUR="1.0" MUF="1.0" PDF="292200" > PDF=292200 MemberID=0 </weight> +<weight id="2010" MUR="1.0" MUF="1.0" PDF="292201" > PDF=292200 MemberID=1 </weight> +<weight id="2011" MUR="1.0" MUF="1.0" PDF="292202" > PDF=292200 MemberID=2 </weight> +<weight id="2012" MUR="1.0" MUF="1.0" PDF="292203" > PDF=292200 MemberID=3 </weight> +<weight id="2013" MUR="1.0" MUF="1.0" PDF="292204" > PDF=292200 MemberID=4 </weight> +<weight id="2014" MUR="1.0" MUF="1.0" PDF="292205" > PDF=292200 MemberID=5 </weight> +<weight id="2015" MUR="1.0" MUF="1.0" PDF="292206" > PDF=292200 MemberID=6 </weight> +<weight id="2016" MUR="1.0" MUF="1.0" PDF="292207" > PDF=292200 MemberID=7 </weight> +<weight id="2017" MUR="1.0" MUF="1.0" PDF="292208" > PDF=292200 MemberID=8 </weight> +<weight id="2018" MUR="1.0" MUF="1.0" PDF="292209" > PDF=292200 MemberID=9 </weight> +<weight id="2019" MUR="1.0" MUF="1.0" PDF="292210" > PDF=292200 MemberID=10 </weight> +<weight id="2020" MUR="1.0" MUF="1.0" PDF="292211" > PDF=292200 MemberID=11 </weight> +<weight id="2021" MUR="1.0" MUF="1.0" PDF="292212" > PDF=292200 MemberID=12 </weight> +<weight id="2022" MUR="1.0" MUF="1.0" PDF="292213" > PDF=292200 MemberID=13 </weight> +<weight id="2023" MUR="1.0" MUF="1.0" PDF="292214" > PDF=292200 MemberID=14 </weight> +<weight id="2024" MUR="1.0" MUF="1.0" PDF="292215" > PDF=292200 MemberID=15 </weight> +<weight id="2025" MUR="1.0" MUF="1.0" PDF="292216" > PDF=292200 MemberID=16 </weight> +<weight id="2026" MUR="1.0" MUF="1.0" PDF="292217" > PDF=292200 MemberID=17 </weight> +<weight id="2027" MUR="1.0" MUF="1.0" PDF="292218" > PDF=292200 MemberID=18 </weight> +<weight id="2028" MUR="1.0" MUF="1.0" PDF="292219" > PDF=292200 MemberID=19 </weight> +<weight id="2029" MUR="1.0" MUF="1.0" PDF="292220" > PDF=292200 MemberID=20 </weight> +<weight id="2030" MUR="1.0" MUF="1.0" PDF="292221" > PDF=292200 MemberID=21 </weight> +<weight id="2031" MUR="1.0" MUF="1.0" PDF="292222" > PDF=292200 MemberID=22 </weight> +<weight id="2032" MUR="1.0" MUF="1.0" PDF="292223" > PDF=292200 MemberID=23 </weight> +<weight id="2033" MUR="1.0" MUF="1.0" PDF="292224" > PDF=292200 MemberID=24 </weight> +<weight id="2034" MUR="1.0" MUF="1.0" PDF="292225" > PDF=292200 MemberID=25 </weight> +<weight id="2035" MUR="1.0" MUF="1.0" PDF="292226" > PDF=292200 MemberID=26 </weight> +<weight id="2036" MUR="1.0" MUF="1.0" PDF="292227" > PDF=292200 MemberID=27 </weight> +<weight id="2037" MUR="1.0" MUF="1.0" PDF="292228" > PDF=292200 MemberID=28 </weight> +<weight id="2038" MUR="1.0" MUF="1.0" PDF="292229" > PDF=292200 MemberID=29 </weight> +<weight id="2039" MUR="1.0" MUF="1.0" PDF="292230" > PDF=292200 MemberID=30 </weight> +<weight id="2040" MUR="1.0" MUF="1.0" PDF="292231" > PDF=292200 MemberID=31 </weight> +<weight id="2041" MUR="1.0" MUF="1.0" PDF="292232" > PDF=292200 MemberID=32 </weight> +<weight id="2042" MUR="1.0" MUF="1.0" PDF="292233" > PDF=292200 MemberID=33 </weight> +<weight id="2043" MUR="1.0" MUF="1.0" PDF="292234" > PDF=292200 MemberID=34 </weight> +<weight id="2044" MUR="1.0" MUF="1.0" PDF="292235" > PDF=292200 MemberID=35 </weight> +<weight id="2045" MUR="1.0" MUF="1.0" PDF="292236" > PDF=292200 MemberID=36 </weight> +<weight id="2046" MUR="1.0" MUF="1.0" PDF="292237" > PDF=292200 MemberID=37 </weight> +<weight id="2047" MUR="1.0" MUF="1.0" PDF="292238" > PDF=292200 MemberID=38 </weight> +<weight id="2048" MUR="1.0" MUF="1.0" PDF="292239" > PDF=292200 MemberID=39 </weight> +<weight id="2049" MUR="1.0" MUF="1.0" PDF="292240" > PDF=292200 MemberID=40 </weight> +<weight id="2050" MUR="1.0" MUF="1.0" PDF="292241" > PDF=292200 MemberID=41 </weight> +<weight id="2051" MUR="1.0" MUF="1.0" PDF="292242" > PDF=292200 MemberID=42 </weight> +<weight id="2052" MUR="1.0" MUF="1.0" PDF="292243" > PDF=292200 MemberID=43 </weight> +<weight id="2053" MUR="1.0" MUF="1.0" PDF="292244" > PDF=292200 MemberID=44 </weight> +<weight id="2054" MUR="1.0" MUF="1.0" PDF="292245" > PDF=292200 MemberID=45 </weight> +<weight id="2055" MUR="1.0" MUF="1.0" PDF="292246" > PDF=292200 MemberID=46 </weight> +<weight id="2056" MUR="1.0" MUF="1.0" PDF="292247" > PDF=292200 MemberID=47 </weight> +<weight id="2057" MUR="1.0" MUF="1.0" PDF="292248" > PDF=292200 MemberID=48 </weight> +<weight id="2058" MUR="1.0" MUF="1.0" PDF="292249" > PDF=292200 MemberID=49 </weight> +<weight id="2059" MUR="1.0" MUF="1.0" PDF="292250" > PDF=292200 MemberID=50 </weight> +<weight id="2060" MUR="1.0" MUF="1.0" PDF="292251" > PDF=292200 MemberID=51 </weight> +<weight id="2061" MUR="1.0" MUF="1.0" PDF="292252" > PDF=292200 MemberID=52 </weight> +<weight id="2062" MUR="1.0" MUF="1.0" PDF="292253" > PDF=292200 MemberID=53 </weight> +<weight id="2063" MUR="1.0" MUF="1.0" PDF="292254" > PDF=292200 MemberID=54 </weight> +<weight id="2064" MUR="1.0" MUF="1.0" PDF="292255" > PDF=292200 MemberID=55 </weight> +<weight id="2065" MUR="1.0" MUF="1.0" PDF="292256" > PDF=292200 MemberID=56 </weight> +<weight id="2066" MUR="1.0" MUF="1.0" PDF="292257" > PDF=292200 MemberID=57 </weight> +<weight id="2067" MUR="1.0" MUF="1.0" PDF="292258" > PDF=292200 MemberID=58 </weight> +<weight id="2068" MUR="1.0" MUF="1.0" PDF="292259" > PDF=292200 MemberID=59 </weight> +<weight id="2069" MUR="1.0" MUF="1.0" PDF="292260" > PDF=292200 MemberID=60 </weight> +<weight id="2070" MUR="1.0" MUF="1.0" PDF="292261" > PDF=292200 MemberID=61 </weight> +<weight id="2071" MUR="1.0" MUF="1.0" PDF="292262" > PDF=292200 MemberID=62 </weight> +<weight id="2072" MUR="1.0" MUF="1.0" PDF="292263" > PDF=292200 MemberID=63 </weight> +<weight id="2073" MUR="1.0" MUF="1.0" PDF="292264" > PDF=292200 MemberID=64 </weight> +<weight id="2074" MUR="1.0" MUF="1.0" PDF="292265" > PDF=292200 MemberID=65 </weight> +<weight id="2075" MUR="1.0" MUF="1.0" PDF="292266" > PDF=292200 MemberID=66 </weight> +<weight id="2076" MUR="1.0" MUF="1.0" PDF="292267" > PDF=292200 MemberID=67 </weight> +<weight id="2077" MUR="1.0" MUF="1.0" PDF="292268" > PDF=292200 MemberID=68 </weight> +<weight id="2078" MUR="1.0" MUF="1.0" PDF="292269" > PDF=292200 MemberID=69 </weight> +<weight id="2079" MUR="1.0" MUF="1.0" PDF="292270" > PDF=292200 MemberID=70 </weight> +<weight id="2080" MUR="1.0" MUF="1.0" PDF="292271" > PDF=292200 MemberID=71 </weight> +<weight id="2081" MUR="1.0" MUF="1.0" PDF="292272" > PDF=292200 MemberID=72 </weight> +<weight id="2082" MUR="1.0" MUF="1.0" PDF="292273" > PDF=292200 MemberID=73 </weight> +<weight id="2083" MUR="1.0" MUF="1.0" PDF="292274" > PDF=292200 MemberID=74 </weight> +<weight id="2084" MUR="1.0" MUF="1.0" PDF="292275" > PDF=292200 MemberID=75 </weight> +<weight id="2085" MUR="1.0" MUF="1.0" PDF="292276" > PDF=292200 MemberID=76 </weight> +<weight id="2086" MUR="1.0" MUF="1.0" PDF="292277" > PDF=292200 MemberID=77 </weight> +<weight id="2087" MUR="1.0" MUF="1.0" PDF="292278" > PDF=292200 MemberID=78 </weight> +<weight id="2088" MUR="1.0" MUF="1.0" PDF="292279" > PDF=292200 MemberID=79 </weight> +<weight id="2089" MUR="1.0" MUF="1.0" PDF="292280" > PDF=292200 MemberID=80 </weight> +<weight id="2090" MUR="1.0" MUF="1.0" PDF="292281" > PDF=292200 MemberID=81 </weight> +<weight id="2091" MUR="1.0" MUF="1.0" PDF="292282" > PDF=292200 MemberID=82 </weight> +<weight id="2092" MUR="1.0" MUF="1.0" PDF="292283" > PDF=292200 MemberID=83 </weight> +<weight id="2093" MUR="1.0" MUF="1.0" PDF="292284" > PDF=292200 MemberID=84 </weight> +<weight id="2094" MUR="1.0" MUF="1.0" PDF="292285" > PDF=292200 MemberID=85 </weight> +<weight id="2095" MUR="1.0" MUF="1.0" PDF="292286" > PDF=292200 MemberID=86 </weight> +<weight id="2096" MUR="1.0" MUF="1.0" PDF="292287" > PDF=292200 MemberID=87 </weight> +<weight id="2097" MUR="1.0" MUF="1.0" PDF="292288" > PDF=292200 MemberID=88 </weight> +<weight id="2098" MUR="1.0" MUF="1.0" PDF="292289" > PDF=292200 MemberID=89 </weight> +<weight id="2099" MUR="1.0" MUF="1.0" PDF="292290" > PDF=292200 MemberID=90 </weight> +<weight id="2100" MUR="1.0" MUF="1.0" PDF="292291" > PDF=292200 MemberID=91 </weight> +<weight id="2101" MUR="1.0" MUF="1.0" PDF="292292" > PDF=292200 MemberID=92 </weight> +<weight id="2102" MUR="1.0" MUF="1.0" PDF="292293" > PDF=292200 MemberID=93 </weight> +<weight id="2103" MUR="1.0" MUF="1.0" PDF="292294" > PDF=292200 MemberID=94 </weight> +<weight id="2104" MUR="1.0" MUF="1.0" PDF="292295" > PDF=292200 MemberID=95 </weight> +<weight id="2105" MUR="1.0" MUF="1.0" PDF="292296" > PDF=292200 MemberID=96 </weight> +<weight id="2106" MUR="1.0" MUF="1.0" PDF="292297" > PDF=292200 MemberID=97 </weight> +<weight id="2107" MUR="1.0" MUF="1.0" PDF="292298" > PDF=292200 MemberID=98 </weight> +<weight id="2108" MUR="1.0" MUF="1.0" PDF="292299" > PDF=292200 MemberID=99 </weight> +<weight id="2109" MUR="1.0" MUF="1.0" PDF="292300" > PDF=292200 MemberID=100 </weight> +<weight id="2110" MUR="1.0" MUF="1.0" PDF="292301" > PDF=292200 MemberID=101 </weight> +<weight id="2111" MUR="1.0" MUF="1.0" PDF="292302" > PDF=292200 MemberID=102 </weight> +</weightgroup> # PDFSET -> PDF +<weight id="2112" MUR="1.0" MUF="1.0" PDF="292600" > PDF=292600 MemberID=0 </weight> +<weight id="2113" MUR="1.0" MUF="1.0" PDF="315000" > PDF=315000 MemberID=0 </weight> +<weight id="2114" MUR="1.0" MUF="1.0" PDF="315200" > PDF=315200 MemberID=0 </weight> +<weight id="2115" MUR="1.0" MUF="1.0" PDF="262000" > PDF=262000 MemberID=0 </weight> +<weight id="2116" MUR="1.0" MUF="1.0" PDF="263000" > PDF=263000 MemberID=0 </weight> + diff --git a/testFiles/WZVBS_private_weightInfo.txt b/testFiles/WZVBS_private_weightInfo.txt new file mode 100644 index 0000000000000..c3723d61f19b3 --- /dev/null +++ b/testFiles/WZVBS_private_weightInfo.txt @@ -0,0 +1,150 @@ +# ---> From file /afs/cern.ch/user/k/kelong/work/temp/testMG.root + + dyn_scale_choice=sum pt + dyn_scale_choice=HT + dyn_scale_choice=HT/2 + dyn_scale_choice=sqrts + MUF=2.0 + MUF=2.0 dyn_scale_choice=sum pt + MUF=2.0 dyn_scale_choice=HT + MUF=2.0 dyn_scale_choice=HT/2 + MUF=2.0 dyn_scale_choice=sqrts + MUF=0.5 + MUF=0.5 dyn_scale_choice=sum pt + MUF=0.5 dyn_scale_choice=HT + MUF=0.5 dyn_scale_choice=HT/2 + MUF=0.5 dyn_scale_choice=sqrts + MUR=2.0 + MUR=2.0 dyn_scale_choice=sum pt + MUR=2.0 dyn_scale_choice=HT + MUR=2.0 dyn_scale_choice=HT/2 + MUR=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=2.0 + MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt + MUR=2.0 MUF=2.0 dyn_scale_choice=HT + MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 + MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts + MUR=2.0 MUF=0.5 + MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt + MUR=2.0 MUF=0.5 dyn_scale_choice=HT + MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 + MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts + MUR=0.5 + MUR=0.5 dyn_scale_choice=sum pt + MUR=0.5 dyn_scale_choice=HT + MUR=0.5 dyn_scale_choice=HT/2 + MUR=0.5 dyn_scale_choice=sqrts + MUR=0.5 MUF=2.0 + MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt + MUR=0.5 MUF=2.0 dyn_scale_choice=HT + MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 + MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts + MUR=0.5 MUF=0.5 + MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt + MUR=0.5 MUF=0.5 dyn_scale_choice=HT + MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 + MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts + # scale + # 263400: NNPDF3.0 LO global fit, alphas(mb)=0.2544. mem=0 ; average on replicas; mem=1-100 ; PDF replicas + + PDF=263400 MemberID=1 + PDF=263400 MemberID=2 + PDF=263400 MemberID=3 + PDF=263400 MemberID=4 + PDF=263400 MemberID=5 + PDF=263400 MemberID=6 + PDF=263400 MemberID=7 + PDF=263400 MemberID=8 + PDF=263400 MemberID=9 + PDF=263400 MemberID=10 + PDF=263400 MemberID=11 + PDF=263400 MemberID=12 + PDF=263400 MemberID=13 + PDF=263400 MemberID=14 + PDF=263400 MemberID=15 + PDF=263400 MemberID=16 + PDF=263400 MemberID=17 + PDF=263400 MemberID=18 + PDF=263400 MemberID=19 + PDF=263400 MemberID=20 + PDF=263400 MemberID=21 + PDF=263400 MemberID=22 + PDF=263400 MemberID=23 + PDF=263400 MemberID=24 + PDF=263400 MemberID=25 + PDF=263400 MemberID=26 + PDF=263400 MemberID=27 + PDF=263400 MemberID=28 + PDF=263400 MemberID=29 + PDF=263400 MemberID=30 + PDF=263400 MemberID=31 + PDF=263400 MemberID=32 + PDF=263400 MemberID=33 + PDF=263400 MemberID=34 + PDF=263400 MemberID=35 + PDF=263400 MemberID=36 + PDF=263400 MemberID=37 + PDF=263400 MemberID=38 + PDF=263400 MemberID=39 + PDF=263400 MemberID=40 + PDF=263400 MemberID=41 + PDF=263400 MemberID=42 + PDF=263400 MemberID=43 + PDF=263400 MemberID=44 + PDF=263400 MemberID=45 + PDF=263400 MemberID=46 + PDF=263400 MemberID=47 + PDF=263400 MemberID=48 + PDF=263400 MemberID=49 + PDF=263400 MemberID=50 + PDF=263400 MemberID=51 + PDF=263400 MemberID=52 + PDF=263400 MemberID=53 + PDF=263400 MemberID=54 + PDF=263400 MemberID=55 + PDF=263400 MemberID=56 + PDF=263400 MemberID=57 + PDF=263400 MemberID=58 + PDF=263400 MemberID=59 + PDF=263400 MemberID=60 + PDF=263400 MemberID=61 + PDF=263400 MemberID=62 + PDF=263400 MemberID=63 + PDF=263400 MemberID=64 + PDF=263400 MemberID=65 + PDF=263400 MemberID=66 + PDF=263400 MemberID=67 + PDF=263400 MemberID=68 + PDF=263400 MemberID=69 + PDF=263400 MemberID=70 + PDF=263400 MemberID=71 + PDF=263400 MemberID=72 + PDF=263400 MemberID=73 + PDF=263400 MemberID=74 + PDF=263400 MemberID=75 + PDF=263400 MemberID=76 + PDF=263400 MemberID=77 + PDF=263400 MemberID=78 + PDF=263400 MemberID=79 + PDF=263400 MemberID=80 + PDF=263400 MemberID=81 + PDF=263400 MemberID=82 + PDF=263400 MemberID=83 + PDF=263400 MemberID=84 + PDF=263400 MemberID=85 + PDF=263400 MemberID=86 + PDF=263400 MemberID=87 + PDF=263400 MemberID=88 + PDF=263400 MemberID=89 + PDF=263400 MemberID=90 + PDF=263400 MemberID=91 + PDF=263400 MemberID=92 + PDF=263400 MemberID=93 + PDF=263400 MemberID=94 + PDF=263400 MemberID=95 + PDF=263400 MemberID=96 + PDF=263400 MemberID=97 + PDF=263400 MemberID=98 + PDF=263400 MemberID=99 + PDF=263400 MemberID=100 + diff --git a/testFiles/ZJ_MiNNLO_weightinfo.txt b/testFiles/ZJ_MiNNLO_weightinfo.txt new file mode 100644 index 0000000000000..217e23d31862a --- /dev/null +++ b/testFiles/ZJ_MiNNLO_weightinfo.txt @@ -0,0 +1,735 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + diff --git a/testFiles/ZMiNNLO.txt b/testFiles/ZMiNNLO.txt new file mode 100644 index 0000000000000..217e23d31862a --- /dev/null +++ b/testFiles/ZMiNNLO.txt @@ -0,0 +1,735 @@ + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=325700 + lhapdf=325701 + lhapdf=325702 + lhapdf=325703 + lhapdf=325704 + lhapdf=325705 + lhapdf=325706 + lhapdf=325707 + lhapdf=325708 + lhapdf=325709 + lhapdf=325710 + lhapdf=325711 + lhapdf=325712 + lhapdf=325713 + lhapdf=325714 + lhapdf=325715 + lhapdf=325716 + lhapdf=325717 + lhapdf=325718 + lhapdf=325719 + lhapdf=325720 + lhapdf=325721 + lhapdf=325722 + lhapdf=325723 + lhapdf=325724 + lhapdf=325725 + lhapdf=325726 + lhapdf=325727 + lhapdf=325728 + lhapdf=325729 + lhapdf=325730 + lhapdf=325731 + lhapdf=325732 + lhapdf=325733 + lhapdf=325734 + lhapdf=325735 + lhapdf=325736 + lhapdf=325737 + lhapdf=325738 + lhapdf=325739 + lhapdf=325740 + lhapdf=325741 + lhapdf=325742 + lhapdf=325743 + lhapdf=325744 + lhapdf=325745 + lhapdf=325746 + lhapdf=325747 + lhapdf=325748 + lhapdf=325749 + lhapdf=325750 + lhapdf=325751 + lhapdf=325752 + lhapdf=325753 + lhapdf=325754 + lhapdf=325755 + lhapdf=325756 + lhapdf=325757 + lhapdf=325758 + lhapdf=325759 + lhapdf=325760 + lhapdf=325761 + lhapdf=325762 + lhapdf=325763 + lhapdf=325764 + lhapdf=325765 + lhapdf=325766 + lhapdf=325767 + lhapdf=325768 + lhapdf=325769 + lhapdf=325770 + lhapdf=325771 + lhapdf=325772 + lhapdf=325773 + lhapdf=325774 + lhapdf=325775 + lhapdf=325776 + lhapdf=325777 + lhapdf=325778 + lhapdf=325779 + lhapdf=325780 + lhapdf=325781 + lhapdf=325782 + lhapdf=325783 + lhapdf=325784 + lhapdf=325785 + lhapdf=325786 + lhapdf=325787 + lhapdf=325788 + lhapdf=325789 + lhapdf=325790 + lhapdf=325791 + lhapdf=325792 + lhapdf=325793 + lhapdf=325794 + lhapdf=325795 + lhapdf=325796 + lhapdf=325797 + lhapdf=325798 + lhapdf=325799 + lhapdf=325800 + lhapdf=325900 + lhapdf=325901 + lhapdf=325902 + lhapdf=325903 + lhapdf=325904 + lhapdf=325905 + lhapdf=325906 + lhapdf=325907 + lhapdf=325908 + lhapdf=325909 + lhapdf=325910 + lhapdf=325911 + lhapdf=325912 + lhapdf=325913 + lhapdf=325914 + lhapdf=325915 + lhapdf=325916 + lhapdf=325917 + lhapdf=325918 + lhapdf=325919 + lhapdf=325920 + lhapdf=325921 + lhapdf=325922 + lhapdf=325923 + lhapdf=325924 + lhapdf=325925 + lhapdf=325926 + lhapdf=325927 + lhapdf=325928 + lhapdf=325929 + lhapdf=325930 + lhapdf=325931 + lhapdf=325932 + lhapdf=325933 + lhapdf=325934 + lhapdf=325935 + lhapdf=325936 + lhapdf=325937 + lhapdf=325938 + lhapdf=325939 + lhapdf=325940 + lhapdf=325941 + lhapdf=325942 + lhapdf=325943 + lhapdf=325944 + lhapdf=325945 + lhapdf=325946 + lhapdf=325947 + lhapdf=325948 + lhapdf=325949 + lhapdf=325950 + lhapdf=325951 + lhapdf=325952 + lhapdf=325953 + lhapdf=325954 + lhapdf=325955 + lhapdf=325956 + lhapdf=325957 + lhapdf=325958 + lhapdf=325959 + lhapdf=325960 + lhapdf=325961 + lhapdf=325962 + lhapdf=325963 + lhapdf=325964 + lhapdf=325965 + lhapdf=325966 + lhapdf=325967 + lhapdf=325968 + lhapdf=325969 + lhapdf=325970 + lhapdf=325971 + lhapdf=325972 + lhapdf=325973 + lhapdf=325974 + lhapdf=325975 + lhapdf=325976 + lhapdf=325977 + lhapdf=325978 + lhapdf=325979 + lhapdf=325980 + lhapdf=325981 + lhapdf=325982 + lhapdf=325983 + lhapdf=325984 + lhapdf=325985 + lhapdf=325986 + lhapdf=325987 + lhapdf=325988 + lhapdf=325989 + lhapdf=325990 + lhapdf=325991 + lhapdf=325992 + lhapdf=325993 + lhapdf=325994 + lhapdf=325995 + lhapdf=325996 + lhapdf=325997 + lhapdf=325998 + lhapdf=325999 + lhapdf=326000 + lhapdf=326100 + lhapdf=326101 + lhapdf=326102 + lhapdf=326103 + lhapdf=326104 + lhapdf=326105 + lhapdf=326106 + lhapdf=326107 + lhapdf=326108 + lhapdf=326109 + lhapdf=326110 + lhapdf=326111 + lhapdf=326112 + lhapdf=326113 + lhapdf=326114 + lhapdf=326115 + lhapdf=326116 + lhapdf=326117 + lhapdf=326118 + lhapdf=326119 + lhapdf=326120 + lhapdf=326121 + lhapdf=326122 + lhapdf=326123 + lhapdf=326124 + lhapdf=326125 + lhapdf=326126 + lhapdf=326127 + lhapdf=326128 + lhapdf=326129 + lhapdf=326130 + lhapdf=326131 + lhapdf=326132 + lhapdf=326133 + lhapdf=326134 + lhapdf=326135 + lhapdf=326136 + lhapdf=326137 + lhapdf=326138 + lhapdf=326139 + lhapdf=326140 + lhapdf=326141 + lhapdf=326142 + lhapdf=326143 + lhapdf=326144 + lhapdf=326145 + lhapdf=326146 + lhapdf=326147 + lhapdf=326148 + lhapdf=326149 + lhapdf=326150 + lhapdf=326151 + lhapdf=326152 + lhapdf=326153 + lhapdf=326154 + lhapdf=326155 + lhapdf=326156 + lhapdf=326157 + lhapdf=326158 + lhapdf=326159 + lhapdf=326160 + lhapdf=326161 + lhapdf=326162 + lhapdf=326163 + lhapdf=326164 + lhapdf=326165 + lhapdf=326166 + lhapdf=326167 + lhapdf=326168 + lhapdf=326169 + lhapdf=326170 + lhapdf=326171 + lhapdf=326172 + lhapdf=326173 + lhapdf=326174 + lhapdf=326175 + lhapdf=326176 + lhapdf=326177 + lhapdf=326178 + lhapdf=326179 + lhapdf=326180 + lhapdf=326181 + lhapdf=326182 + lhapdf=326183 + lhapdf=326184 + lhapdf=326185 + lhapdf=326186 + lhapdf=326187 + lhapdf=326188 + lhapdf=326189 + lhapdf=326190 + lhapdf=326191 + lhapdf=326192 + lhapdf=326193 + lhapdf=326194 + lhapdf=326195 + lhapdf=326196 + lhapdf=326197 + lhapdf=326198 + lhapdf=326199 + lhapdf=326200 + lhapdf=326300 + lhapdf=326301 + lhapdf=326302 + lhapdf=326303 + lhapdf=326304 + lhapdf=326305 + lhapdf=326306 + lhapdf=326307 + lhapdf=326308 + lhapdf=326309 + lhapdf=326310 + lhapdf=326311 + lhapdf=326312 + lhapdf=326313 + lhapdf=326314 + lhapdf=326315 + lhapdf=326316 + lhapdf=326317 + lhapdf=326318 + lhapdf=326319 + lhapdf=326320 + lhapdf=326321 + lhapdf=326322 + lhapdf=326323 + lhapdf=326324 + lhapdf=326325 + lhapdf=326326 + lhapdf=326327 + lhapdf=326328 + lhapdf=326329 + lhapdf=326330 + lhapdf=326331 + lhapdf=326332 + lhapdf=326333 + lhapdf=326334 + lhapdf=326335 + lhapdf=326336 + lhapdf=326337 + lhapdf=326338 + lhapdf=326339 + lhapdf=326340 + lhapdf=326341 + lhapdf=326342 + lhapdf=326343 + lhapdf=326344 + lhapdf=326345 + lhapdf=326346 + lhapdf=326347 + lhapdf=326348 + lhapdf=326349 + lhapdf=326350 + lhapdf=326351 + lhapdf=326352 + lhapdf=326353 + lhapdf=326354 + lhapdf=326355 + lhapdf=326356 + lhapdf=326357 + lhapdf=326358 + lhapdf=326359 + lhapdf=326360 + lhapdf=326361 + lhapdf=326362 + lhapdf=326363 + lhapdf=326364 + lhapdf=326365 + lhapdf=326366 + lhapdf=326367 + lhapdf=326368 + lhapdf=326369 + lhapdf=326370 + lhapdf=326371 + lhapdf=326372 + lhapdf=326373 + lhapdf=326374 + lhapdf=326375 + lhapdf=326376 + lhapdf=326377 + lhapdf=326378 + lhapdf=326379 + lhapdf=326380 + lhapdf=326381 + lhapdf=326382 + lhapdf=326383 + lhapdf=326384 + lhapdf=326385 + lhapdf=326386 + lhapdf=326387 + lhapdf=326388 + lhapdf=326389 + lhapdf=326390 + lhapdf=326391 + lhapdf=326392 + lhapdf=326393 + lhapdf=326394 + lhapdf=326395 + lhapdf=326396 + lhapdf=326397 + lhapdf=326398 + lhapdf=326399 + lhapdf=326400 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25360 + lhapdf=25361 + lhapdf=25362 + lhapdf=42560 + lhapdf=42561 + lhapdf=42562 + lhapdf=42563 + lhapdf=42564 + lhapdf=42565 + lhapdf=42566 + lhapdf=42567 + lhapdf=42568 + lhapdf=42569 + lhapdf=42570 + lhapdf=42571 + lhapdf=42572 + lhapdf=42573 + lhapdf=42574 + lhapdf=42575 + lhapdf=42576 + lhapdf=42577 + lhapdf=42578 + lhapdf=42579 + lhapdf=42580 + lhapdf=42581 + lhapdf=42582 + lhapdf=42583 + lhapdf=42584 + lhapdf=42585 + lhapdf=42586 + lhapdf=42587 + lhapdf=42588 + lhapdf=42589 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=61740 + lhapdf=61741 + lhapdf=61742 + lhapdf=61743 + lhapdf=61744 + lhapdf=61745 + lhapdf=61746 + lhapdf=61747 + lhapdf=61748 + lhapdf=61749 + lhapdf=61750 + lhapdf=61751 + lhapdf=61752 + lhapdf=61753 + lhapdf=61754 + lhapdf=61755 + lhapdf=61756 + lhapdf=61757 + lhapdf=61758 + lhapdf=61759 + lhapdf=61760 + diff --git a/testFiles/ZZTo4L_powheg_2016_weightInfo.txt b/testFiles/ZZTo4L_powheg_2016_weightInfo.txt new file mode 100644 index 0000000000000..a9f90131365a7 --- /dev/null +++ b/testFiles/ZZTo4L_powheg_2016_weightInfo.txt @@ -0,0 +1,227 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/ZZTo4L_13TeV_powheg_pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v1/270000/B84CB0F2-E2C6-E811-BC6F-001A649D4631.root + + muR=1 muF=1 + muR=1 muF=2 + muR=1 muF=0.5 + muR=2 muF=1 + muR=2 muF=2 + muR=2 muF=0.5 + muR=0.5 muF=1 + muR=0.5 muF=2 + muR=0.5 muF=0.5 + + + PDF set = 260001 + PDF set = 260002 + PDF set = 260003 + PDF set = 260004 + PDF set = 260005 + PDF set = 260006 + PDF set = 260007 + PDF set = 260008 + PDF set = 260009 + PDF set = 260010 + PDF set = 260011 + PDF set = 260012 + PDF set = 260013 + PDF set = 260014 + PDF set = 260015 + PDF set = 260016 + PDF set = 260017 + PDF set = 260018 + PDF set = 260019 + PDF set = 260020 + PDF set = 260021 + PDF set = 260022 + PDF set = 260023 + PDF set = 260024 + PDF set = 260025 + PDF set = 260026 + PDF set = 260027 + PDF set = 260028 + PDF set = 260029 + PDF set = 260030 + PDF set = 260031 + PDF set = 260032 + PDF set = 260033 + PDF set = 260034 + PDF set = 260035 + PDF set = 260036 + PDF set = 260037 + PDF set = 260038 + PDF set = 260039 + PDF set = 260040 + PDF set = 260041 + PDF set = 260042 + PDF set = 260043 + PDF set = 260044 + PDF set = 260045 + PDF set = 260046 + PDF set = 260047 + PDF set = 260048 + PDF set = 260049 + PDF set = 260050 + PDF set = 260051 + PDF set = 260052 + PDF set = 260053 + PDF set = 260054 + PDF set = 260055 + PDF set = 260056 + PDF set = 260057 + PDF set = 260058 + PDF set = 260059 + PDF set = 260060 + PDF set = 260061 + PDF set = 260062 + PDF set = 260063 + PDF set = 260064 + PDF set = 260065 + PDF set = 260066 + PDF set = 260067 + PDF set = 260068 + PDF set = 260069 + PDF set = 260070 + PDF set = 260071 + PDF set = 260072 + PDF set = 260073 + PDF set = 260074 + PDF set = 260075 + PDF set = 260076 + PDF set = 260077 + PDF set = 260078 + PDF set = 260079 + PDF set = 260080 + PDF set = 260081 + PDF set = 260082 + PDF set = 260083 + PDF set = 260084 + PDF set = 260085 + PDF set = 260086 + PDF set = 260087 + PDF set = 260088 + PDF set = 260089 + PDF set = 260090 + PDF set = 260091 + PDF set = 260092 + PDF set = 260093 + PDF set = 260094 + PDF set = 260095 + PDF set = 260096 + PDF set = 260097 + PDF set = 260098 + PDF set = 260099 + PDF set = 260100 + PDF set = 265000 + PDF set = 266000 + PDF set = 11000 + PDF set = 11001 + PDF set = 11002 + PDF set = 11003 + PDF set = 11004 + PDF set = 11005 + PDF set = 11006 + PDF set = 11007 + PDF set = 11008 + PDF set = 11009 + PDF set = 11010 + PDF set = 11011 + PDF set = 11012 + PDF set = 11013 + PDF set = 11014 + PDF set = 11015 + PDF set = 11016 + PDF set = 11017 + PDF set = 11018 + PDF set = 11019 + PDF set = 11020 + PDF set = 11021 + PDF set = 11022 + PDF set = 11023 + PDF set = 11024 + PDF set = 11025 + PDF set = 11026 + PDF set = 11027 + PDF set = 11028 + PDF set = 11029 + PDF set = 11030 + PDF set = 11031 + PDF set = 11032 + PDF set = 11033 + PDF set = 11034 + PDF set = 11035 + PDF set = 11036 + PDF set = 11037 + PDF set = 11038 + PDF set = 11039 + PDF set = 11040 + PDF set = 11041 + PDF set = 11042 + PDF set = 11043 + PDF set = 11044 + PDF set = 11045 + PDF set = 11046 + PDF set = 11047 + PDF set = 11048 + PDF set = 11049 + PDF set = 11050 + PDF set = 11051 + PDF set = 11052 + PDF set = 11067 + PDF set = 11069 + PDF set = 25200 + PDF set = 25201 + PDF set = 25202 + PDF set = 25203 + PDF set = 25204 + PDF set = 25205 + PDF set = 25206 + PDF set = 25207 + PDF set = 25208 + PDF set = 25209 + PDF set = 25210 + PDF set = 25211 + PDF set = 25212 + PDF set = 25213 + PDF set = 25214 + PDF set = 25215 + PDF set = 25216 + PDF set = 25217 + PDF set = 25218 + PDF set = 25219 + PDF set = 25220 + PDF set = 25221 + PDF set = 25222 + PDF set = 25223 + PDF set = 25224 + PDF set = 25225 + PDF set = 25226 + PDF set = 25227 + PDF set = 25228 + PDF set = 25229 + PDF set = 25230 + PDF set = 25231 + PDF set = 25232 + PDF set = 25233 + PDF set = 25234 + PDF set = 25235 + PDF set = 25236 + PDF set = 25237 + PDF set = 25238 + PDF set = 25239 + PDF set = 25240 + PDF set = 25241 + PDF set = 25242 + PDF set = 25243 + PDF set = 25244 + PDF set = 25245 + PDF set = 25246 + PDF set = 25247 + PDF set = 25248 + PDF set = 25249 + PDF set = 25250 + PDF set = 25260 + PDF set = 25261 + PDF set = 25262 + PDF set = 25263 + PDF set = 25264 + diff --git a/testFiles/ZZTo4L_powheg_2017_weightInfo.txt b/testFiles/ZZTo4L_powheg_2017_weightInfo.txt new file mode 100644 index 0000000000000..eba77245d4473 --- /dev/null +++ b/testFiles/ZZTo4L_powheg_2017_weightInfo.txt @@ -0,0 +1,1087 @@ +# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/ZZTo4L_TuneCP5_13TeV_powheg_pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15_ext1-v2/10000/A3FB9D9C-6F10-6349-8345-BC3068E2E75A.root + + lhapdf=306000 renscfact=1d0 facscfact=1d0 + lhapdf=306000 renscfact=1d0 facscfact=2d0 + lhapdf=306000 renscfact=1d0 facscfact=0.5d0 + lhapdf=306000 renscfact=2d0 facscfact=1d0 + lhapdf=306000 renscfact=2d0 facscfact=2d0 + lhapdf=306000 renscfact=2d0 facscfact=0.5d0 + lhapdf=306000 renscfact=0.5d0 facscfact=1d0 + lhapdf=306000 renscfact=0.5d0 facscfact=2d0 + lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 + + + lhapdf=306000 + lhapdf=306001 + lhapdf=306002 + lhapdf=306003 + lhapdf=306004 + lhapdf=306005 + lhapdf=306006 + lhapdf=306007 + lhapdf=306008 + lhapdf=306009 + lhapdf=306010 + lhapdf=306011 + lhapdf=306012 + lhapdf=306013 + lhapdf=306014 + lhapdf=306015 + lhapdf=306016 + lhapdf=306017 + lhapdf=306018 + lhapdf=306019 + lhapdf=306020 + lhapdf=306021 + lhapdf=306022 + lhapdf=306023 + lhapdf=306024 + lhapdf=306025 + lhapdf=306026 + lhapdf=306027 + lhapdf=306028 + lhapdf=306029 + lhapdf=306030 + lhapdf=306031 + lhapdf=306032 + lhapdf=306033 + lhapdf=306034 + lhapdf=306035 + lhapdf=306036 + lhapdf=306037 + lhapdf=306038 + lhapdf=306039 + lhapdf=306040 + lhapdf=306041 + lhapdf=306042 + lhapdf=306043 + lhapdf=306044 + lhapdf=306045 + lhapdf=306046 + lhapdf=306047 + lhapdf=306048 + lhapdf=306049 + lhapdf=306050 + lhapdf=306051 + lhapdf=306052 + lhapdf=306053 + lhapdf=306054 + lhapdf=306055 + lhapdf=306056 + lhapdf=306057 + lhapdf=306058 + lhapdf=306059 + lhapdf=306060 + lhapdf=306061 + lhapdf=306062 + lhapdf=306063 + lhapdf=306064 + lhapdf=306065 + lhapdf=306066 + lhapdf=306067 + lhapdf=306068 + lhapdf=306069 + lhapdf=306070 + lhapdf=306071 + lhapdf=306072 + lhapdf=306073 + lhapdf=306074 + lhapdf=306075 + lhapdf=306076 + lhapdf=306077 + lhapdf=306078 + lhapdf=306079 + lhapdf=306080 + lhapdf=306081 + lhapdf=306082 + lhapdf=306083 + lhapdf=306084 + lhapdf=306085 + lhapdf=306086 + lhapdf=306087 + lhapdf=306088 + lhapdf=306089 + lhapdf=306090 + lhapdf=306091 + lhapdf=306092 + lhapdf=306093 + lhapdf=306094 + lhapdf=306095 + lhapdf=306096 + lhapdf=306097 + lhapdf=306098 + lhapdf=306099 + lhapdf=306100 + lhapdf=306101 + lhapdf=306102 + lhapdf=322500 + lhapdf=322700 + lhapdf=322900 + lhapdf=323100 + lhapdf=323300 + lhapdf=323500 + lhapdf=323700 + lhapdf=323900 + lhapdf=305800 + lhapdf=305801 + lhapdf=305802 + lhapdf=305803 + lhapdf=305804 + lhapdf=305805 + lhapdf=305806 + lhapdf=305807 + lhapdf=305808 + lhapdf=305809 + lhapdf=305810 + lhapdf=305811 + lhapdf=305812 + lhapdf=305813 + lhapdf=305814 + lhapdf=305815 + lhapdf=305816 + lhapdf=305817 + lhapdf=305818 + lhapdf=305819 + lhapdf=305820 + lhapdf=305821 + lhapdf=305822 + lhapdf=305823 + lhapdf=305824 + lhapdf=305825 + lhapdf=305826 + lhapdf=305827 + lhapdf=305828 + lhapdf=305829 + lhapdf=305830 + lhapdf=305831 + lhapdf=305832 + lhapdf=305833 + lhapdf=305834 + lhapdf=305835 + lhapdf=305836 + lhapdf=305837 + lhapdf=305838 + lhapdf=305839 + lhapdf=305840 + lhapdf=305841 + lhapdf=305842 + lhapdf=305843 + lhapdf=305844 + lhapdf=305845 + lhapdf=305846 + lhapdf=305847 + lhapdf=305848 + lhapdf=305849 + lhapdf=305850 + lhapdf=305851 + lhapdf=305852 + lhapdf=305853 + lhapdf=305854 + lhapdf=305855 + lhapdf=305856 + lhapdf=305857 + lhapdf=305858 + lhapdf=305859 + lhapdf=305860 + lhapdf=305861 + lhapdf=305862 + lhapdf=305863 + lhapdf=305864 + lhapdf=305865 + lhapdf=305866 + lhapdf=305867 + lhapdf=305868 + lhapdf=305869 + lhapdf=305870 + lhapdf=305871 + lhapdf=305872 + lhapdf=305873 + lhapdf=305874 + lhapdf=305875 + lhapdf=305876 + lhapdf=305877 + lhapdf=305878 + lhapdf=305879 + lhapdf=305880 + lhapdf=305881 + lhapdf=305882 + lhapdf=305883 + lhapdf=305884 + lhapdf=305885 + lhapdf=305886 + lhapdf=305887 + lhapdf=305888 + lhapdf=305889 + lhapdf=305890 + lhapdf=305891 + lhapdf=305892 + lhapdf=305893 + lhapdf=305894 + lhapdf=305895 + lhapdf=305896 + lhapdf=305897 + lhapdf=305898 + lhapdf=305899 + lhapdf=305900 + lhapdf=305901 + lhapdf=305902 + lhapdf=13000 + lhapdf=13001 + lhapdf=13002 + lhapdf=13003 + lhapdf=13004 + lhapdf=13005 + lhapdf=13006 + lhapdf=13007 + lhapdf=13008 + lhapdf=13009 + lhapdf=13010 + lhapdf=13011 + lhapdf=13012 + lhapdf=13013 + lhapdf=13014 + lhapdf=13015 + lhapdf=13016 + lhapdf=13017 + lhapdf=13018 + lhapdf=13019 + lhapdf=13020 + lhapdf=13021 + lhapdf=13022 + lhapdf=13023 + lhapdf=13024 + lhapdf=13025 + lhapdf=13026 + lhapdf=13027 + lhapdf=13028 + lhapdf=13029 + lhapdf=13030 + lhapdf=13031 + lhapdf=13032 + lhapdf=13033 + lhapdf=13034 + lhapdf=13035 + lhapdf=13036 + lhapdf=13037 + lhapdf=13038 + lhapdf=13039 + lhapdf=13040 + lhapdf=13041 + lhapdf=13042 + lhapdf=13043 + lhapdf=13044 + lhapdf=13045 + lhapdf=13046 + lhapdf=13047 + lhapdf=13048 + lhapdf=13049 + lhapdf=13050 + lhapdf=13051 + lhapdf=13052 + lhapdf=13053 + lhapdf=13054 + lhapdf=13055 + lhapdf=13056 + lhapdf=13065 + lhapdf=13069 + lhapdf=13100 + lhapdf=13101 + lhapdf=13102 + lhapdf=13103 + lhapdf=13104 + lhapdf=13105 + lhapdf=13106 + lhapdf=13107 + lhapdf=13108 + lhapdf=13109 + lhapdf=13110 + lhapdf=13111 + lhapdf=13112 + lhapdf=13113 + lhapdf=13114 + lhapdf=13115 + lhapdf=13116 + lhapdf=13117 + lhapdf=13118 + lhapdf=13119 + lhapdf=13120 + lhapdf=13121 + lhapdf=13122 + lhapdf=13123 + lhapdf=13124 + lhapdf=13125 + lhapdf=13126 + lhapdf=13127 + lhapdf=13128 + lhapdf=13129 + lhapdf=13130 + lhapdf=13131 + lhapdf=13132 + lhapdf=13133 + lhapdf=13134 + lhapdf=13135 + lhapdf=13136 + lhapdf=13137 + lhapdf=13138 + lhapdf=13139 + lhapdf=13140 + lhapdf=13141 + lhapdf=13142 + lhapdf=13143 + lhapdf=13144 + lhapdf=13145 + lhapdf=13146 + lhapdf=13147 + lhapdf=13148 + lhapdf=13149 + lhapdf=13150 + lhapdf=13151 + lhapdf=13152 + lhapdf=13153 + lhapdf=13154 + lhapdf=13155 + lhapdf=13156 + lhapdf=13163 + lhapdf=13167 + lhapdf=13200 + lhapdf=25200 + lhapdf=25201 + lhapdf=25202 + lhapdf=25203 + lhapdf=25204 + lhapdf=25205 + lhapdf=25206 + lhapdf=25207 + lhapdf=25208 + lhapdf=25209 + lhapdf=25210 + lhapdf=25211 + lhapdf=25212 + lhapdf=25213 + lhapdf=25214 + lhapdf=25215 + lhapdf=25216 + lhapdf=25217 + lhapdf=25218 + lhapdf=25219 + lhapdf=25220 + lhapdf=25221 + lhapdf=25222 + lhapdf=25223 + lhapdf=25224 + lhapdf=25225 + lhapdf=25226 + lhapdf=25227 + lhapdf=25228 + lhapdf=25229 + lhapdf=25230 + lhapdf=25231 + lhapdf=25232 + lhapdf=25233 + lhapdf=25234 + lhapdf=25235 + lhapdf=25236 + lhapdf=25237 + lhapdf=25238 + lhapdf=25239 + lhapdf=25240 + lhapdf=25241 + lhapdf=25242 + lhapdf=25243 + lhapdf=25244 + lhapdf=25245 + lhapdf=25246 + lhapdf=25247 + lhapdf=25248 + lhapdf=25249 + lhapdf=25250 + lhapdf=25300 + lhapdf=25301 + lhapdf=25302 + lhapdf=25303 + lhapdf=25304 + lhapdf=25305 + lhapdf=25306 + lhapdf=25307 + lhapdf=25308 + lhapdf=25309 + lhapdf=25310 + lhapdf=25311 + lhapdf=25312 + lhapdf=25313 + lhapdf=25314 + lhapdf=25315 + lhapdf=25316 + lhapdf=25317 + lhapdf=25318 + lhapdf=25319 + lhapdf=25320 + lhapdf=25321 + lhapdf=25322 + lhapdf=25323 + lhapdf=25324 + lhapdf=25325 + lhapdf=25326 + lhapdf=25327 + lhapdf=25328 + lhapdf=25329 + lhapdf=25330 + lhapdf=25331 + lhapdf=25332 + lhapdf=25333 + lhapdf=25334 + lhapdf=25335 + lhapdf=25336 + lhapdf=25337 + lhapdf=25338 + lhapdf=25339 + lhapdf=25340 + lhapdf=25341 + lhapdf=25342 + lhapdf=25343 + lhapdf=25344 + lhapdf=25345 + lhapdf=25346 + lhapdf=25347 + lhapdf=25348 + lhapdf=25349 + lhapdf=25350 + lhapdf=25000 + lhapdf=42780 + lhapdf=42781 + lhapdf=42782 + lhapdf=42783 + lhapdf=42784 + lhapdf=42785 + lhapdf=42786 + lhapdf=42787 + lhapdf=42788 + lhapdf=42789 + lhapdf=42790 + lhapdf=42791 + lhapdf=42792 + lhapdf=42793 + lhapdf=42794 + lhapdf=42795 + lhapdf=42796 + lhapdf=42797 + lhapdf=42798 + lhapdf=42799 + lhapdf=42800 + lhapdf=42801 + lhapdf=42802 + lhapdf=42803 + lhapdf=42804 + lhapdf=42805 + lhapdf=42806 + lhapdf=42807 + lhapdf=42808 + lhapdf=42809 + lhapdf=90200 + lhapdf=90201 + lhapdf=90202 + lhapdf=90203 + lhapdf=90204 + lhapdf=90205 + lhapdf=90206 + lhapdf=90207 + lhapdf=90208 + lhapdf=90209 + lhapdf=90210 + lhapdf=90211 + lhapdf=90212 + lhapdf=90213 + lhapdf=90214 + lhapdf=90215 + lhapdf=90216 + lhapdf=90217 + lhapdf=90218 + lhapdf=90219 + lhapdf=90220 + lhapdf=90221 + lhapdf=90222 + lhapdf=90223 + lhapdf=90224 + lhapdf=90225 + lhapdf=90226 + lhapdf=90227 + lhapdf=90228 + lhapdf=90229 + lhapdf=90230 + lhapdf=90231 + lhapdf=90232 + lhapdf=90233 + lhapdf=90234 + lhapdf=90235 + lhapdf=90236 + lhapdf=90237 + lhapdf=90238 + lhapdf=90239 + lhapdf=90240 + lhapdf=90241 + lhapdf=90242 + lhapdf=90243 + lhapdf=90244 + lhapdf=90245 + lhapdf=90246 + lhapdf=90247 + lhapdf=90248 + lhapdf=90249 + lhapdf=90250 + lhapdf=90251 + lhapdf=90252 + lhapdf=90253 + lhapdf=90254 + lhapdf=90255 + lhapdf=90256 + lhapdf=90257 + lhapdf=90258 + lhapdf=90259 + lhapdf=90260 + lhapdf=90261 + lhapdf=90262 + lhapdf=90263 + lhapdf=90264 + lhapdf=90265 + lhapdf=90266 + lhapdf=90267 + lhapdf=90268 + lhapdf=90269 + lhapdf=90270 + lhapdf=90271 + lhapdf=90272 + lhapdf=90273 + lhapdf=90274 + lhapdf=90275 + lhapdf=90276 + lhapdf=90277 + lhapdf=90278 + lhapdf=90279 + lhapdf=90280 + lhapdf=90281 + lhapdf=90282 + lhapdf=90283 + lhapdf=90284 + lhapdf=90285 + lhapdf=90286 + lhapdf=90287 + lhapdf=90288 + lhapdf=90289 + lhapdf=90290 + lhapdf=90291 + lhapdf=90292 + lhapdf=90293 + lhapdf=90294 + lhapdf=90295 + lhapdf=90296 + lhapdf=90297 + lhapdf=90298 + lhapdf=90299 + lhapdf=90300 + lhapdf=90301 + lhapdf=90302 + lhapdf=91200 + lhapdf=91201 + lhapdf=91202 + lhapdf=91203 + lhapdf=91204 + lhapdf=91205 + lhapdf=91206 + lhapdf=91207 + lhapdf=91208 + lhapdf=91209 + lhapdf=91210 + lhapdf=91211 + lhapdf=91212 + lhapdf=91213 + lhapdf=91214 + lhapdf=91215 + lhapdf=91216 + lhapdf=91217 + lhapdf=91218 + lhapdf=91219 + lhapdf=91220 + lhapdf=91221 + lhapdf=91222 + lhapdf=91223 + lhapdf=91224 + lhapdf=91225 + lhapdf=91226 + lhapdf=91227 + lhapdf=91228 + lhapdf=91229 + lhapdf=91230 + lhapdf=91231 + lhapdf=91232 + lhapdf=91233 + lhapdf=91234 + lhapdf=91235 + lhapdf=91236 + lhapdf=91237 + lhapdf=91238 + lhapdf=91239 + lhapdf=91240 + lhapdf=91241 + lhapdf=91242 + lhapdf=91243 + lhapdf=91244 + lhapdf=91245 + lhapdf=91246 + lhapdf=91247 + lhapdf=91248 + lhapdf=91249 + lhapdf=91250 + lhapdf=91251 + lhapdf=91252 + lhapdf=91253 + lhapdf=91254 + lhapdf=91255 + lhapdf=91256 + lhapdf=91257 + lhapdf=91258 + lhapdf=91259 + lhapdf=91260 + lhapdf=91261 + lhapdf=91262 + lhapdf=91263 + lhapdf=91264 + lhapdf=91265 + lhapdf=91266 + lhapdf=91267 + lhapdf=91268 + lhapdf=91269 + lhapdf=91270 + lhapdf=91271 + lhapdf=91272 + lhapdf=91273 + lhapdf=91274 + lhapdf=91275 + lhapdf=91276 + lhapdf=91277 + lhapdf=91278 + lhapdf=91279 + lhapdf=91280 + lhapdf=91281 + lhapdf=91282 + lhapdf=91283 + lhapdf=91284 + lhapdf=91285 + lhapdf=91286 + lhapdf=91287 + lhapdf=91288 + lhapdf=91289 + lhapdf=91290 + lhapdf=91291 + lhapdf=91292 + lhapdf=91293 + lhapdf=91294 + lhapdf=91295 + lhapdf=91296 + lhapdf=91297 + lhapdf=91298 + lhapdf=91299 + lhapdf=91300 + lhapdf=91301 + lhapdf=91302 + lhapdf=90400 + lhapdf=90401 + lhapdf=90402 + lhapdf=90403 + lhapdf=90404 + lhapdf=90405 + lhapdf=90406 + lhapdf=90407 + lhapdf=90408 + lhapdf=90409 + lhapdf=90410 + lhapdf=90411 + lhapdf=90412 + lhapdf=90413 + lhapdf=90414 + lhapdf=90415 + lhapdf=90416 + lhapdf=90417 + lhapdf=90418 + lhapdf=90419 + lhapdf=90420 + lhapdf=90421 + lhapdf=90422 + lhapdf=90423 + lhapdf=90424 + lhapdf=90425 + lhapdf=90426 + lhapdf=90427 + lhapdf=90428 + lhapdf=90429 + lhapdf=90430 + lhapdf=90431 + lhapdf=90432 + lhapdf=91400 + lhapdf=91401 + lhapdf=91402 + lhapdf=91403 + lhapdf=91404 + lhapdf=91405 + lhapdf=91406 + lhapdf=91407 + lhapdf=91408 + lhapdf=91409 + lhapdf=91410 + lhapdf=91411 + lhapdf=91412 + lhapdf=91413 + lhapdf=91414 + lhapdf=91415 + lhapdf=91416 + lhapdf=91417 + lhapdf=91418 + lhapdf=91419 + lhapdf=91420 + lhapdf=91421 + lhapdf=91422 + lhapdf=91423 + lhapdf=91424 + lhapdf=91425 + lhapdf=91426 + lhapdf=91427 + lhapdf=91428 + lhapdf=91429 + lhapdf=91430 + lhapdf=91431 + lhapdf=91432 + lhapdf=61100 + lhapdf=61101 + lhapdf=61102 + lhapdf=61103 + lhapdf=61104 + lhapdf=61105 + lhapdf=61106 + lhapdf=61107 + lhapdf=61108 + lhapdf=61109 + lhapdf=61110 + lhapdf=61111 + lhapdf=61112 + lhapdf=61113 + lhapdf=61114 + lhapdf=61115 + lhapdf=61116 + lhapdf=61117 + lhapdf=61118 + lhapdf=61119 + lhapdf=61120 + lhapdf=61121 + lhapdf=61122 + lhapdf=61123 + lhapdf=61124 + lhapdf=61125 + lhapdf=61126 + lhapdf=61127 + lhapdf=61128 + lhapdf=61130 + lhapdf=61131 + lhapdf=61132 + lhapdf=61133 + lhapdf=61134 + lhapdf=61135 + lhapdf=61136 + lhapdf=61137 + lhapdf=61138 + lhapdf=61139 + lhapdf=61140 + lhapdf=61141 + lhapdf=61142 + lhapdf=61143 + lhapdf=61200 + lhapdf=61201 + lhapdf=61202 + lhapdf=61203 + lhapdf=61204 + lhapdf=61205 + lhapdf=61206 + lhapdf=61207 + lhapdf=61208 + lhapdf=61209 + lhapdf=61210 + lhapdf=61211 + lhapdf=61212 + lhapdf=61213 + lhapdf=61214 + lhapdf=61215 + lhapdf=61216 + lhapdf=61217 + lhapdf=61218 + lhapdf=61219 + lhapdf=61220 + lhapdf=61221 + lhapdf=61222 + lhapdf=61223 + lhapdf=61224 + lhapdf=61225 + lhapdf=61226 + lhapdf=61227 + lhapdf=61228 + lhapdf=61230 + lhapdf=61231 + lhapdf=61232 + lhapdf=61233 + lhapdf=61234 + lhapdf=61235 + lhapdf=61236 + lhapdf=61237 + lhapdf=61238 + lhapdf=61239 + lhapdf=61240 + lhapdf=61241 + lhapdf=61242 + lhapdf=61243 + lhapdf=13400 + lhapdf=13401 + lhapdf=13402 + lhapdf=13403 + lhapdf=13404 + lhapdf=13405 + lhapdf=13406 + lhapdf=13407 + lhapdf=13408 + lhapdf=13409 + lhapdf=13410 + lhapdf=13411 + lhapdf=13412 + lhapdf=13413 + lhapdf=13414 + lhapdf=13415 + lhapdf=13416 + lhapdf=13417 + lhapdf=13418 + lhapdf=13419 + lhapdf=13420 + lhapdf=13421 + lhapdf=13422 + lhapdf=13423 + lhapdf=13424 + lhapdf=13425 + lhapdf=13426 + lhapdf=13427 + lhapdf=13428 + lhapdf=13429 + lhapdf=13430 + lhapdf=82200 + lhapdf=82201 + lhapdf=82202 + lhapdf=82203 + lhapdf=82204 + lhapdf=82205 + lhapdf=82206 + lhapdf=82207 + lhapdf=82208 + lhapdf=82209 + lhapdf=82210 + lhapdf=82211 + lhapdf=82212 + lhapdf=82213 + lhapdf=82214 + lhapdf=82215 + lhapdf=82216 + lhapdf=82217 + lhapdf=82218 + lhapdf=82219 + lhapdf=82220 + lhapdf=82221 + lhapdf=82222 + lhapdf=82223 + lhapdf=82224 + lhapdf=82225 + lhapdf=82226 + lhapdf=82227 + lhapdf=82228 + lhapdf=82229 + lhapdf=82230 + lhapdf=82231 + lhapdf=82232 + lhapdf=82233 + lhapdf=82234 + lhapdf=82235 + lhapdf=82236 + lhapdf=82237 + lhapdf=82238 + lhapdf=82239 + lhapdf=82240 + lhapdf=82241 + lhapdf=82242 + lhapdf=82243 + lhapdf=82244 + lhapdf=82245 + lhapdf=82246 + lhapdf=82247 + lhapdf=82248 + lhapdf=82249 + lhapdf=82250 + lhapdf=82251 + lhapdf=82252 + lhapdf=82253 + lhapdf=82254 + lhapdf=82255 + lhapdf=82256 + lhapdf=82257 + lhapdf=82258 + lhapdf=82259 + lhapdf=82260 + lhapdf=82261 + lhapdf=82262 + lhapdf=82263 + lhapdf=82264 + lhapdf=82265 + lhapdf=82266 + lhapdf=82267 + lhapdf=82268 + lhapdf=82269 + lhapdf=82270 + lhapdf=82271 + lhapdf=82272 + lhapdf=82273 + lhapdf=82274 + lhapdf=82275 + lhapdf=82276 + lhapdf=82277 + lhapdf=82278 + lhapdf=82279 + lhapdf=82280 + lhapdf=82281 + lhapdf=82282 + lhapdf=82283 + lhapdf=82284 + lhapdf=82285 + lhapdf=82286 + lhapdf=82287 + lhapdf=82288 + lhapdf=82289 + lhapdf=82290 + lhapdf=82291 + lhapdf=82292 + lhapdf=82293 + lhapdf=82294 + lhapdf=82295 + lhapdf=82296 + lhapdf=82297 + lhapdf=82298 + lhapdf=82299 + lhapdf=82300 + lhapdf=82301 + lhapdf=82302 + lhapdf=82303 + lhapdf=82304 + lhapdf=82305 + lhapdf=82306 + lhapdf=82307 + + + lhapdf=292200 + lhapdf=292201 + lhapdf=292202 + lhapdf=292203 + lhapdf=292204 + lhapdf=292205 + lhapdf=292206 + lhapdf=292207 + lhapdf=292208 + lhapdf=292209 + lhapdf=292210 + lhapdf=292211 + lhapdf=292212 + lhapdf=292213 + lhapdf=292214 + lhapdf=292215 + lhapdf=292216 + lhapdf=292217 + lhapdf=292218 + lhapdf=292219 + lhapdf=292220 + lhapdf=292221 + lhapdf=292222 + lhapdf=292223 + lhapdf=292224 + lhapdf=292225 + lhapdf=292226 + lhapdf=292227 + lhapdf=292228 + lhapdf=292229 + lhapdf=292230 + lhapdf=292231 + lhapdf=292232 + lhapdf=292233 + lhapdf=292234 + lhapdf=292235 + lhapdf=292236 + lhapdf=292237 + lhapdf=292238 + lhapdf=292239 + lhapdf=292240 + lhapdf=292241 + lhapdf=292242 + lhapdf=292243 + lhapdf=292244 + lhapdf=292245 + lhapdf=292246 + lhapdf=292247 + lhapdf=292248 + lhapdf=292249 + lhapdf=292250 + lhapdf=292251 + lhapdf=292252 + lhapdf=292253 + lhapdf=292254 + lhapdf=292255 + lhapdf=292256 + lhapdf=292257 + lhapdf=292258 + lhapdf=292259 + lhapdf=292260 + lhapdf=292261 + lhapdf=292262 + lhapdf=292263 + lhapdf=292264 + lhapdf=292265 + lhapdf=292266 + lhapdf=292267 + lhapdf=292268 + lhapdf=292269 + lhapdf=292270 + lhapdf=292271 + lhapdf=292272 + lhapdf=292273 + lhapdf=292274 + lhapdf=292275 + lhapdf=292276 + lhapdf=292277 + lhapdf=292278 + lhapdf=292279 + lhapdf=292280 + lhapdf=292281 + lhapdf=292282 + lhapdf=292283 + lhapdf=292284 + lhapdf=292285 + lhapdf=292286 + lhapdf=292287 + lhapdf=292288 + lhapdf=292289 + lhapdf=292290 + lhapdf=292291 + lhapdf=292292 + lhapdf=292293 + lhapdf=292294 + lhapdf=292295 + lhapdf=292296 + lhapdf=292297 + lhapdf=292298 + lhapdf=292299 + lhapdf=292300 + lhapdf=292301 + lhapdf=292302 + lhapdf=292600 + lhapdf=315000 + lhapdf=315200 + lhapdf=262000 + lhapdf=263000 + diff --git a/testFiles/overview.txt b/testFiles/overview.txt new file mode 100644 index 0000000000000..65cffa71130b3 --- /dev/null +++ b/testFiles/overview.txt @@ -0,0 +1,12 @@ +MadGraph no systematics program + - LO + - NLO +MadGraph + systematics program + - Standard + - with dynamic scale +MadGraph + reweight + +POWHEG 2016 +POWHEG 2017 + +?? diff --git a/testFiles/susyweights.txt b/testFiles/susyweights.txt new file mode 100644 index 0000000000000..8d997605fcaa0 --- /dev/null +++ b/testFiles/susyweights.txt @@ -0,0 +1,1227 @@ +# From file /store/mc/RunIIAutumn18MiniAOD/SMS-TChiWZ_ZToLL_mZMin-0p1_mC1-325to1000_TuneCP2_13TeV-madgraphMLM-pythia8/MINIAODSIM/GridpackScan_102X_upgrade2018_realistic_v15-v1/260000/E535B34E-AE47-1F41-88CC-676F1D975A12.root +nominal +LHE, id = 1, group = Central scale variation, mur=1 muf=1 +LHE, id = 2, group = Central scale variation, mur=1 muf=2 +LHE, id = 3, group = Central scale variation, mur=1 muf=0.5 +LHE, id = 4, group = Central scale variation, mur=2 muf=1 +LHE, id = 5, group = Central scale variation, mur=2 muf=2 +LHE, id = 6, group = Central scale variation, mur=2 muf=0.5 +LHE, id = 7, group = Central scale variation, mur=0.5 muf=1 +LHE, id = 8, group = Central scale variation, mur=0.5 muf=2 +LHE, id = 9, group = Central scale variation, mur=0.5 muf=0.5 +LHE, id = 10, group = NNPDF31_lo_as_0130, Member 0 of sets NNPDF31_lo_as_0130 +LHE, id = 11, group = NNPDF31_lo_as_0130, Member 1 of sets NNPDF31_lo_as_0130 +LHE, id = 12, group = NNPDF31_lo_as_0130, Member 2 of sets NNPDF31_lo_as_0130 +LHE, id = 13, group = NNPDF31_lo_as_0130, Member 3 of sets NNPDF31_lo_as_0130 +LHE, id = 14, group = NNPDF31_lo_as_0130, Member 4 of sets NNPDF31_lo_as_0130 +LHE, id = 15, group = NNPDF31_lo_as_0130, Member 5 of sets NNPDF31_lo_as_0130 +LHE, id = 16, group = NNPDF31_lo_as_0130, Member 6 of sets NNPDF31_lo_as_0130 +LHE, id = 17, group = NNPDF31_lo_as_0130, Member 7 of sets NNPDF31_lo_as_0130 +LHE, id = 18, group = NNPDF31_lo_as_0130, Member 8 of sets NNPDF31_lo_as_0130 +LHE, id = 19, group = NNPDF31_lo_as_0130, Member 9 of sets NNPDF31_lo_as_0130 +LHE, id = 20, group = NNPDF31_lo_as_0130, Member 10 of sets NNPDF31_lo_as_0130 +LHE, id = 21, group = NNPDF31_lo_as_0130, Member 11 of sets NNPDF31_lo_as_0130 +LHE, id = 22, group = NNPDF31_lo_as_0130, Member 12 of sets NNPDF31_lo_as_0130 +LHE, id = 23, group = NNPDF31_lo_as_0130, Member 13 of sets NNPDF31_lo_as_0130 +LHE, id = 24, group = NNPDF31_lo_as_0130, Member 14 of sets NNPDF31_lo_as_0130 +LHE, id = 25, group = NNPDF31_lo_as_0130, Member 15 of sets NNPDF31_lo_as_0130 +LHE, id = 26, group = NNPDF31_lo_as_0130, Member 16 of sets NNPDF31_lo_as_0130 +LHE, id = 27, group = NNPDF31_lo_as_0130, Member 17 of sets NNPDF31_lo_as_0130 +LHE, id = 28, group = NNPDF31_lo_as_0130, Member 18 of sets NNPDF31_lo_as_0130 +LHE, id = 29, group = NNPDF31_lo_as_0130, Member 19 of sets NNPDF31_lo_as_0130 +LHE, id = 30, group = NNPDF31_lo_as_0130, Member 20 of sets NNPDF31_lo_as_0130 +LHE, id = 31, group = NNPDF31_lo_as_0130, Member 21 of sets NNPDF31_lo_as_0130 +LHE, id = 32, group = NNPDF31_lo_as_0130, Member 22 of sets NNPDF31_lo_as_0130 +LHE, id = 33, group = NNPDF31_lo_as_0130, Member 23 of sets NNPDF31_lo_as_0130 +LHE, id = 34, group = NNPDF31_lo_as_0130, Member 24 of sets NNPDF31_lo_as_0130 +LHE, id = 35, group = NNPDF31_lo_as_0130, Member 25 of sets NNPDF31_lo_as_0130 +LHE, id = 36, group = NNPDF31_lo_as_0130, Member 26 of sets NNPDF31_lo_as_0130 +LHE, id = 37, group = NNPDF31_lo_as_0130, Member 27 of sets NNPDF31_lo_as_0130 +LHE, id = 38, group = NNPDF31_lo_as_0130, Member 28 of sets NNPDF31_lo_as_0130 +LHE, id = 39, group = NNPDF31_lo_as_0130, Member 29 of sets NNPDF31_lo_as_0130 +LHE, id = 40, group = NNPDF31_lo_as_0130, Member 30 of sets NNPDF31_lo_as_0130 +LHE, id = 41, group = NNPDF31_lo_as_0130, Member 31 of sets NNPDF31_lo_as_0130 +LHE, id = 42, group = NNPDF31_lo_as_0130, Member 32 of sets NNPDF31_lo_as_0130 +LHE, id = 43, group = NNPDF31_lo_as_0130, Member 33 of sets NNPDF31_lo_as_0130 +LHE, id = 44, group = NNPDF31_lo_as_0130, Member 34 of sets NNPDF31_lo_as_0130 +LHE, id = 45, group = NNPDF31_lo_as_0130, Member 35 of sets NNPDF31_lo_as_0130 +LHE, id = 46, group = NNPDF31_lo_as_0130, Member 36 of sets NNPDF31_lo_as_0130 +LHE, id = 47, group = NNPDF31_lo_as_0130, Member 37 of sets NNPDF31_lo_as_0130 +LHE, id = 48, group = NNPDF31_lo_as_0130, Member 38 of sets NNPDF31_lo_as_0130 +LHE, id = 49, group = NNPDF31_lo_as_0130, Member 39 of sets NNPDF31_lo_as_0130 +LHE, id = 50, group = NNPDF31_lo_as_0130, Member 40 of sets NNPDF31_lo_as_0130 +LHE, id = 51, group = NNPDF31_lo_as_0130, Member 41 of sets NNPDF31_lo_as_0130 +LHE, id = 52, group = NNPDF31_lo_as_0130, Member 42 of sets NNPDF31_lo_as_0130 +LHE, id = 53, group = NNPDF31_lo_as_0130, Member 43 of sets NNPDF31_lo_as_0130 +LHE, id = 54, group = NNPDF31_lo_as_0130, Member 44 of sets NNPDF31_lo_as_0130 +LHE, id = 55, group = NNPDF31_lo_as_0130, Member 45 of sets NNPDF31_lo_as_0130 +LHE, id = 56, group = NNPDF31_lo_as_0130, Member 46 of sets NNPDF31_lo_as_0130 +LHE, id = 57, group = NNPDF31_lo_as_0130, Member 47 of sets NNPDF31_lo_as_0130 +LHE, id = 58, group = NNPDF31_lo_as_0130, Member 48 of sets NNPDF31_lo_as_0130 +LHE, id = 59, group = NNPDF31_lo_as_0130, Member 49 of sets NNPDF31_lo_as_0130 +LHE, id = 60, group = NNPDF31_lo_as_0130, Member 50 of sets NNPDF31_lo_as_0130 +LHE, id = 61, group = NNPDF31_lo_as_0130, Member 51 of sets NNPDF31_lo_as_0130 +LHE, id = 62, group = NNPDF31_lo_as_0130, Member 52 of sets NNPDF31_lo_as_0130 +LHE, id = 63, group = NNPDF31_lo_as_0130, Member 53 of sets NNPDF31_lo_as_0130 +LHE, id = 64, group = NNPDF31_lo_as_0130, Member 54 of sets NNPDF31_lo_as_0130 +LHE, id = 65, group = NNPDF31_lo_as_0130, Member 55 of sets NNPDF31_lo_as_0130 +LHE, id = 66, group = NNPDF31_lo_as_0130, Member 56 of sets NNPDF31_lo_as_0130 +LHE, id = 67, group = NNPDF31_lo_as_0130, Member 57 of sets NNPDF31_lo_as_0130 +LHE, id = 68, group = NNPDF31_lo_as_0130, Member 58 of sets NNPDF31_lo_as_0130 +LHE, id = 69, group = NNPDF31_lo_as_0130, Member 59 of sets NNPDF31_lo_as_0130 +LHE, id = 70, group = NNPDF31_lo_as_0130, Member 60 of sets NNPDF31_lo_as_0130 +LHE, id = 71, group = NNPDF31_lo_as_0130, Member 61 of sets NNPDF31_lo_as_0130 +LHE, id = 72, group = NNPDF31_lo_as_0130, Member 62 of sets NNPDF31_lo_as_0130 +LHE, id = 73, group = NNPDF31_lo_as_0130, Member 63 of sets NNPDF31_lo_as_0130 +LHE, id = 74, group = NNPDF31_lo_as_0130, Member 64 of sets NNPDF31_lo_as_0130 +LHE, id = 75, group = NNPDF31_lo_as_0130, Member 65 of sets NNPDF31_lo_as_0130 +LHE, id = 76, group = NNPDF31_lo_as_0130, Member 66 of sets NNPDF31_lo_as_0130 +LHE, id = 77, group = NNPDF31_lo_as_0130, Member 67 of sets NNPDF31_lo_as_0130 +LHE, id = 78, group = NNPDF31_lo_as_0130, Member 68 of sets NNPDF31_lo_as_0130 +LHE, id = 79, group = NNPDF31_lo_as_0130, Member 69 of sets NNPDF31_lo_as_0130 +LHE, id = 80, group = NNPDF31_lo_as_0130, Member 70 of sets NNPDF31_lo_as_0130 +LHE, id = 81, group = NNPDF31_lo_as_0130, Member 71 of sets NNPDF31_lo_as_0130 +LHE, id = 82, group = NNPDF31_lo_as_0130, Member 72 of sets NNPDF31_lo_as_0130 +LHE, id = 83, group = NNPDF31_lo_as_0130, Member 73 of sets NNPDF31_lo_as_0130 +LHE, id = 84, group = NNPDF31_lo_as_0130, Member 74 of sets NNPDF31_lo_as_0130 +LHE, id = 85, group = NNPDF31_lo_as_0130, Member 75 of sets NNPDF31_lo_as_0130 +LHE, id = 86, group = NNPDF31_lo_as_0130, Member 76 of sets NNPDF31_lo_as_0130 +LHE, id = 87, group = NNPDF31_lo_as_0130, Member 77 of sets NNPDF31_lo_as_0130 +LHE, id = 88, group = NNPDF31_lo_as_0130, Member 78 of sets NNPDF31_lo_as_0130 +LHE, id = 89, group = NNPDF31_lo_as_0130, Member 79 of sets NNPDF31_lo_as_0130 +LHE, id = 90, group = NNPDF31_lo_as_0130, Member 80 of sets NNPDF31_lo_as_0130 +LHE, id = 91, group = NNPDF31_lo_as_0130, Member 81 of sets NNPDF31_lo_as_0130 +LHE, id = 92, group = NNPDF31_lo_as_0130, Member 82 of sets NNPDF31_lo_as_0130 +LHE, id = 93, group = NNPDF31_lo_as_0130, Member 83 of sets NNPDF31_lo_as_0130 +LHE, id = 94, group = NNPDF31_lo_as_0130, Member 84 of sets NNPDF31_lo_as_0130 +LHE, id = 95, group = NNPDF31_lo_as_0130, Member 85 of sets NNPDF31_lo_as_0130 +LHE, id = 96, group = NNPDF31_lo_as_0130, Member 86 of sets NNPDF31_lo_as_0130 +LHE, id = 97, group = NNPDF31_lo_as_0130, Member 87 of sets NNPDF31_lo_as_0130 +LHE, id = 98, group = NNPDF31_lo_as_0130, Member 88 of sets NNPDF31_lo_as_0130 +LHE, id = 99, group = NNPDF31_lo_as_0130, Member 89 of sets NNPDF31_lo_as_0130 +LHE, id = 100, group = NNPDF31_lo_as_0130, Member 90 of sets NNPDF31_lo_as_0130 +LHE, id = 101, group = NNPDF31_lo_as_0130, Member 91 of sets NNPDF31_lo_as_0130 +LHE, id = 102, group = NNPDF31_lo_as_0130, Member 92 of sets NNPDF31_lo_as_0130 +LHE, id = 103, group = NNPDF31_lo_as_0130, Member 93 of sets NNPDF31_lo_as_0130 +LHE, id = 104, group = NNPDF31_lo_as_0130, Member 94 of sets NNPDF31_lo_as_0130 +LHE, id = 105, group = NNPDF31_lo_as_0130, Member 95 of sets NNPDF31_lo_as_0130 +LHE, id = 106, group = NNPDF31_lo_as_0130, Member 96 of sets NNPDF31_lo_as_0130 +LHE, id = 107, group = NNPDF31_lo_as_0130, Member 97 of sets NNPDF31_lo_as_0130 +LHE, id = 108, group = NNPDF31_lo_as_0130, Member 98 of sets NNPDF31_lo_as_0130 +LHE, id = 109, group = NNPDF31_lo_as_0130, Member 99 of sets NNPDF31_lo_as_0130 +LHE, id = 110, group = NNPDF31_lo_as_0130, Member 100 of sets NNPDF31_lo_as_0130 +LHE, id = 111, group = NNPDF31_nnlo_hessian_pdfas, Member 0 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 112, group = NNPDF31_nnlo_hessian_pdfas, Member 1 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 113, group = NNPDF31_nnlo_hessian_pdfas, Member 2 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 114, group = NNPDF31_nnlo_hessian_pdfas, Member 3 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 115, group = NNPDF31_nnlo_hessian_pdfas, Member 4 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 116, group = NNPDF31_nnlo_hessian_pdfas, Member 5 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 117, group = NNPDF31_nnlo_hessian_pdfas, Member 6 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 118, group = NNPDF31_nnlo_hessian_pdfas, Member 7 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 119, group = NNPDF31_nnlo_hessian_pdfas, Member 8 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 120, group = NNPDF31_nnlo_hessian_pdfas, Member 9 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 121, group = NNPDF31_nnlo_hessian_pdfas, Member 10 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 122, group = NNPDF31_nnlo_hessian_pdfas, Member 11 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 123, group = NNPDF31_nnlo_hessian_pdfas, Member 12 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 124, group = NNPDF31_nnlo_hessian_pdfas, Member 13 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 125, group = NNPDF31_nnlo_hessian_pdfas, Member 14 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 126, group = NNPDF31_nnlo_hessian_pdfas, Member 15 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 127, group = NNPDF31_nnlo_hessian_pdfas, Member 16 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 128, group = NNPDF31_nnlo_hessian_pdfas, Member 17 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 129, group = NNPDF31_nnlo_hessian_pdfas, Member 18 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 130, group = NNPDF31_nnlo_hessian_pdfas, Member 19 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 131, group = NNPDF31_nnlo_hessian_pdfas, Member 20 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 132, group = NNPDF31_nnlo_hessian_pdfas, Member 21 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 133, group = NNPDF31_nnlo_hessian_pdfas, Member 22 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 134, group = NNPDF31_nnlo_hessian_pdfas, Member 23 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 135, group = NNPDF31_nnlo_hessian_pdfas, Member 24 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 136, group = NNPDF31_nnlo_hessian_pdfas, Member 25 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 137, group = NNPDF31_nnlo_hessian_pdfas, Member 26 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 138, group = NNPDF31_nnlo_hessian_pdfas, Member 27 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 139, group = NNPDF31_nnlo_hessian_pdfas, Member 28 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 140, group = NNPDF31_nnlo_hessian_pdfas, Member 29 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 141, group = NNPDF31_nnlo_hessian_pdfas, Member 30 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 142, group = NNPDF31_nnlo_hessian_pdfas, Member 31 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 143, group = NNPDF31_nnlo_hessian_pdfas, Member 32 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 144, group = NNPDF31_nnlo_hessian_pdfas, Member 33 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 145, group = NNPDF31_nnlo_hessian_pdfas, Member 34 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 146, group = NNPDF31_nnlo_hessian_pdfas, Member 35 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 147, group = NNPDF31_nnlo_hessian_pdfas, Member 36 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 148, group = NNPDF31_nnlo_hessian_pdfas, Member 37 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 149, group = NNPDF31_nnlo_hessian_pdfas, Member 38 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 150, group = NNPDF31_nnlo_hessian_pdfas, Member 39 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 151, group = NNPDF31_nnlo_hessian_pdfas, Member 40 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 152, group = NNPDF31_nnlo_hessian_pdfas, Member 41 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 153, group = NNPDF31_nnlo_hessian_pdfas, Member 42 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 154, group = NNPDF31_nnlo_hessian_pdfas, Member 43 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 155, group = NNPDF31_nnlo_hessian_pdfas, Member 44 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 156, group = NNPDF31_nnlo_hessian_pdfas, Member 45 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 157, group = NNPDF31_nnlo_hessian_pdfas, Member 46 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 158, group = NNPDF31_nnlo_hessian_pdfas, Member 47 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 159, group = NNPDF31_nnlo_hessian_pdfas, Member 48 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 160, group = NNPDF31_nnlo_hessian_pdfas, Member 49 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 161, group = NNPDF31_nnlo_hessian_pdfas, Member 50 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 162, group = NNPDF31_nnlo_hessian_pdfas, Member 51 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 163, group = NNPDF31_nnlo_hessian_pdfas, Member 52 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 164, group = NNPDF31_nnlo_hessian_pdfas, Member 53 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 165, group = NNPDF31_nnlo_hessian_pdfas, Member 54 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 166, group = NNPDF31_nnlo_hessian_pdfas, Member 55 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 167, group = NNPDF31_nnlo_hessian_pdfas, Member 56 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 168, group = NNPDF31_nnlo_hessian_pdfas, Member 57 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 169, group = NNPDF31_nnlo_hessian_pdfas, Member 58 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 170, group = NNPDF31_nnlo_hessian_pdfas, Member 59 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 171, group = NNPDF31_nnlo_hessian_pdfas, Member 60 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 172, group = NNPDF31_nnlo_hessian_pdfas, Member 61 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 173, group = NNPDF31_nnlo_hessian_pdfas, Member 62 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 174, group = NNPDF31_nnlo_hessian_pdfas, Member 63 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 175, group = NNPDF31_nnlo_hessian_pdfas, Member 64 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 176, group = NNPDF31_nnlo_hessian_pdfas, Member 65 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 177, group = NNPDF31_nnlo_hessian_pdfas, Member 66 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 178, group = NNPDF31_nnlo_hessian_pdfas, Member 67 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 179, group = NNPDF31_nnlo_hessian_pdfas, Member 68 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 180, group = NNPDF31_nnlo_hessian_pdfas, Member 69 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 181, group = NNPDF31_nnlo_hessian_pdfas, Member 70 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 182, group = NNPDF31_nnlo_hessian_pdfas, Member 71 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 183, group = NNPDF31_nnlo_hessian_pdfas, Member 72 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 184, group = NNPDF31_nnlo_hessian_pdfas, Member 73 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 185, group = NNPDF31_nnlo_hessian_pdfas, Member 74 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 186, group = NNPDF31_nnlo_hessian_pdfas, Member 75 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 187, group = NNPDF31_nnlo_hessian_pdfas, Member 76 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 188, group = NNPDF31_nnlo_hessian_pdfas, Member 77 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 189, group = NNPDF31_nnlo_hessian_pdfas, Member 78 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 190, group = NNPDF31_nnlo_hessian_pdfas, Member 79 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 191, group = NNPDF31_nnlo_hessian_pdfas, Member 80 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 192, group = NNPDF31_nnlo_hessian_pdfas, Member 81 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 193, group = NNPDF31_nnlo_hessian_pdfas, Member 82 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 194, group = NNPDF31_nnlo_hessian_pdfas, Member 83 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 195, group = NNPDF31_nnlo_hessian_pdfas, Member 84 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 196, group = NNPDF31_nnlo_hessian_pdfas, Member 85 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 197, group = NNPDF31_nnlo_hessian_pdfas, Member 86 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 198, group = NNPDF31_nnlo_hessian_pdfas, Member 87 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 199, group = NNPDF31_nnlo_hessian_pdfas, Member 88 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 200, group = NNPDF31_nnlo_hessian_pdfas, Member 89 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 201, group = NNPDF31_nnlo_hessian_pdfas, Member 90 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 202, group = NNPDF31_nnlo_hessian_pdfas, Member 91 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 203, group = NNPDF31_nnlo_hessian_pdfas, Member 92 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 204, group = NNPDF31_nnlo_hessian_pdfas, Member 93 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 205, group = NNPDF31_nnlo_hessian_pdfas, Member 94 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 206, group = NNPDF31_nnlo_hessian_pdfas, Member 95 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 207, group = NNPDF31_nnlo_hessian_pdfas, Member 96 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 208, group = NNPDF31_nnlo_hessian_pdfas, Member 97 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 209, group = NNPDF31_nnlo_hessian_pdfas, Member 98 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 210, group = NNPDF31_nnlo_hessian_pdfas, Member 99 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 211, group = NNPDF31_nnlo_hessian_pdfas, Member 100 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 212, group = NNPDF31_nnlo_hessian_pdfas, Member 101 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 213, group = NNPDF31_nnlo_hessian_pdfas, Member 102 of sets NNPDF31_nnlo_hessian_pdfas +LHE, id = 214, group = NNPDF31_nnlo_as_0108, Member 0 of sets NNPDF31_nnlo_as_0108 +LHE, id = 215, group = NNPDF31_nnlo_as_0110, Member 0 of sets NNPDF31_nnlo_as_0110 +LHE, id = 216, group = NNPDF31_nnlo_as_0112, Member 0 of sets NNPDF31_nnlo_as_0112 +LHE, id = 217, group = NNPDF31_nnlo_as_0114, Member 0 of sets NNPDF31_nnlo_as_0114 +LHE, id = 218, group = NNPDF31_nnlo_as_0117, Member 0 of sets NNPDF31_nnlo_as_0117 +LHE, id = 219, group = NNPDF31_nnlo_as_0119, Member 0 of sets NNPDF31_nnlo_as_0119 +LHE, id = 220, group = NNPDF31_nnlo_as_0122, Member 0 of sets NNPDF31_nnlo_as_0122 +LHE, id = 221, group = NNPDF31_nnlo_as_0124, Member 0 of sets NNPDF31_nnlo_as_0124 +LHE, id = 222, group = NNPDF31_nlo_hessian_pdfas, Member 0 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 223, group = NNPDF31_nlo_hessian_pdfas, Member 1 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 224, group = NNPDF31_nlo_hessian_pdfas, Member 2 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 225, group = NNPDF31_nlo_hessian_pdfas, Member 3 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 226, group = NNPDF31_nlo_hessian_pdfas, Member 4 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 227, group = NNPDF31_nlo_hessian_pdfas, Member 5 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 228, group = NNPDF31_nlo_hessian_pdfas, Member 6 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 229, group = NNPDF31_nlo_hessian_pdfas, Member 7 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 230, group = NNPDF31_nlo_hessian_pdfas, Member 8 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 231, group = NNPDF31_nlo_hessian_pdfas, Member 9 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 232, group = NNPDF31_nlo_hessian_pdfas, Member 10 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 233, group = NNPDF31_nlo_hessian_pdfas, Member 11 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 234, group = NNPDF31_nlo_hessian_pdfas, Member 12 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 235, group = NNPDF31_nlo_hessian_pdfas, Member 13 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 236, group = NNPDF31_nlo_hessian_pdfas, Member 14 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 237, group = NNPDF31_nlo_hessian_pdfas, Member 15 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 238, group = NNPDF31_nlo_hessian_pdfas, Member 16 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 239, group = NNPDF31_nlo_hessian_pdfas, Member 17 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 240, group = NNPDF31_nlo_hessian_pdfas, Member 18 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 241, group = NNPDF31_nlo_hessian_pdfas, Member 19 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 242, group = NNPDF31_nlo_hessian_pdfas, Member 20 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 243, group = NNPDF31_nlo_hessian_pdfas, Member 21 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 244, group = NNPDF31_nlo_hessian_pdfas, Member 22 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 245, group = NNPDF31_nlo_hessian_pdfas, Member 23 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 246, group = NNPDF31_nlo_hessian_pdfas, Member 24 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 247, group = NNPDF31_nlo_hessian_pdfas, Member 25 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 248, group = NNPDF31_nlo_hessian_pdfas, Member 26 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 249, group = NNPDF31_nlo_hessian_pdfas, Member 27 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 250, group = NNPDF31_nlo_hessian_pdfas, Member 28 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 251, group = NNPDF31_nlo_hessian_pdfas, Member 29 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 252, group = NNPDF31_nlo_hessian_pdfas, Member 30 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 253, group = NNPDF31_nlo_hessian_pdfas, Member 31 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 254, group = NNPDF31_nlo_hessian_pdfas, Member 32 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 255, group = NNPDF31_nlo_hessian_pdfas, Member 33 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 256, group = NNPDF31_nlo_hessian_pdfas, Member 34 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 257, group = NNPDF31_nlo_hessian_pdfas, Member 35 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 258, group = NNPDF31_nlo_hessian_pdfas, Member 36 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 259, group = NNPDF31_nlo_hessian_pdfas, Member 37 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 260, group = NNPDF31_nlo_hessian_pdfas, Member 38 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 261, group = NNPDF31_nlo_hessian_pdfas, Member 39 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 262, group = NNPDF31_nlo_hessian_pdfas, Member 40 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 263, group = NNPDF31_nlo_hessian_pdfas, Member 41 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 264, group = NNPDF31_nlo_hessian_pdfas, Member 42 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 265, group = NNPDF31_nlo_hessian_pdfas, Member 43 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 266, group = NNPDF31_nlo_hessian_pdfas, Member 44 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 267, group = NNPDF31_nlo_hessian_pdfas, Member 45 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 268, group = NNPDF31_nlo_hessian_pdfas, Member 46 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 269, group = NNPDF31_nlo_hessian_pdfas, Member 47 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 270, group = NNPDF31_nlo_hessian_pdfas, Member 48 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 271, group = NNPDF31_nlo_hessian_pdfas, Member 49 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 272, group = NNPDF31_nlo_hessian_pdfas, Member 50 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 273, group = NNPDF31_nlo_hessian_pdfas, Member 51 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 274, group = NNPDF31_nlo_hessian_pdfas, Member 52 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 275, group = NNPDF31_nlo_hessian_pdfas, Member 53 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 276, group = NNPDF31_nlo_hessian_pdfas, Member 54 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 277, group = NNPDF31_nlo_hessian_pdfas, Member 55 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 278, group = NNPDF31_nlo_hessian_pdfas, Member 56 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 279, group = NNPDF31_nlo_hessian_pdfas, Member 57 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 280, group = NNPDF31_nlo_hessian_pdfas, Member 58 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 281, group = NNPDF31_nlo_hessian_pdfas, Member 59 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 282, group = NNPDF31_nlo_hessian_pdfas, Member 60 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 283, group = NNPDF31_nlo_hessian_pdfas, Member 61 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 284, group = NNPDF31_nlo_hessian_pdfas, Member 62 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 285, group = NNPDF31_nlo_hessian_pdfas, Member 63 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 286, group = NNPDF31_nlo_hessian_pdfas, Member 64 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 287, group = NNPDF31_nlo_hessian_pdfas, Member 65 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 288, group = NNPDF31_nlo_hessian_pdfas, Member 66 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 289, group = NNPDF31_nlo_hessian_pdfas, Member 67 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 290, group = NNPDF31_nlo_hessian_pdfas, Member 68 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 291, group = NNPDF31_nlo_hessian_pdfas, Member 69 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 292, group = NNPDF31_nlo_hessian_pdfas, Member 70 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 293, group = NNPDF31_nlo_hessian_pdfas, Member 71 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 294, group = NNPDF31_nlo_hessian_pdfas, Member 72 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 295, group = NNPDF31_nlo_hessian_pdfas, Member 73 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 296, group = NNPDF31_nlo_hessian_pdfas, Member 74 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 297, group = NNPDF31_nlo_hessian_pdfas, Member 75 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 298, group = NNPDF31_nlo_hessian_pdfas, Member 76 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 299, group = NNPDF31_nlo_hessian_pdfas, Member 77 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 300, group = NNPDF31_nlo_hessian_pdfas, Member 78 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 301, group = NNPDF31_nlo_hessian_pdfas, Member 79 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 302, group = NNPDF31_nlo_hessian_pdfas, Member 80 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 303, group = NNPDF31_nlo_hessian_pdfas, Member 81 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 304, group = NNPDF31_nlo_hessian_pdfas, Member 82 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 305, group = NNPDF31_nlo_hessian_pdfas, Member 83 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 306, group = NNPDF31_nlo_hessian_pdfas, Member 84 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 307, group = NNPDF31_nlo_hessian_pdfas, Member 85 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 308, group = NNPDF31_nlo_hessian_pdfas, Member 86 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 309, group = NNPDF31_nlo_hessian_pdfas, Member 87 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 310, group = NNPDF31_nlo_hessian_pdfas, Member 88 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 311, group = NNPDF31_nlo_hessian_pdfas, Member 89 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 312, group = NNPDF31_nlo_hessian_pdfas, Member 90 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 313, group = NNPDF31_nlo_hessian_pdfas, Member 91 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 314, group = NNPDF31_nlo_hessian_pdfas, Member 92 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 315, group = NNPDF31_nlo_hessian_pdfas, Member 93 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 316, group = NNPDF31_nlo_hessian_pdfas, Member 94 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 317, group = NNPDF31_nlo_hessian_pdfas, Member 95 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 318, group = NNPDF31_nlo_hessian_pdfas, Member 96 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 319, group = NNPDF31_nlo_hessian_pdfas, Member 97 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 320, group = NNPDF31_nlo_hessian_pdfas, Member 98 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 321, group = NNPDF31_nlo_hessian_pdfas, Member 99 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 322, group = NNPDF31_nlo_hessian_pdfas, Member 100 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 323, group = NNPDF31_nlo_hessian_pdfas, Member 101 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 324, group = NNPDF31_nlo_hessian_pdfas, Member 102 of sets NNPDF31_nlo_hessian_pdfas +LHE, id = 325, group = CT14nnlo, Member 0 of sets CT14nnlo +LHE, id = 326, group = CT14nnlo, Member 1 of sets CT14nnlo +LHE, id = 327, group = CT14nnlo, Member 2 of sets CT14nnlo +LHE, id = 328, group = CT14nnlo, Member 3 of sets CT14nnlo +LHE, id = 329, group = CT14nnlo, Member 4 of sets CT14nnlo +LHE, id = 330, group = CT14nnlo, Member 5 of sets CT14nnlo +LHE, id = 331, group = CT14nnlo, Member 6 of sets CT14nnlo +LHE, id = 332, group = CT14nnlo, Member 7 of sets CT14nnlo +LHE, id = 333, group = CT14nnlo, Member 8 of sets CT14nnlo +LHE, id = 334, group = CT14nnlo, Member 9 of sets CT14nnlo +LHE, id = 335, group = CT14nnlo, Member 10 of sets CT14nnlo +LHE, id = 336, group = CT14nnlo, Member 11 of sets CT14nnlo +LHE, id = 337, group = CT14nnlo, Member 12 of sets CT14nnlo +LHE, id = 338, group = CT14nnlo, Member 13 of sets CT14nnlo +LHE, id = 339, group = CT14nnlo, Member 14 of sets CT14nnlo +LHE, id = 340, group = CT14nnlo, Member 15 of sets CT14nnlo +LHE, id = 341, group = CT14nnlo, Member 16 of sets CT14nnlo +LHE, id = 342, group = CT14nnlo, Member 17 of sets CT14nnlo +LHE, id = 343, group = CT14nnlo, Member 18 of sets CT14nnlo +LHE, id = 344, group = CT14nnlo, Member 19 of sets CT14nnlo +LHE, id = 345, group = CT14nnlo, Member 20 of sets CT14nnlo +LHE, id = 346, group = CT14nnlo, Member 21 of sets CT14nnlo +LHE, id = 347, group = CT14nnlo, Member 22 of sets CT14nnlo +LHE, id = 348, group = CT14nnlo, Member 23 of sets CT14nnlo +LHE, id = 349, group = CT14nnlo, Member 24 of sets CT14nnlo +LHE, id = 350, group = CT14nnlo, Member 25 of sets CT14nnlo +LHE, id = 351, group = CT14nnlo, Member 26 of sets CT14nnlo +LHE, id = 352, group = CT14nnlo, Member 27 of sets CT14nnlo +LHE, id = 353, group = CT14nnlo, Member 28 of sets CT14nnlo +LHE, id = 354, group = CT14nnlo, Member 29 of sets CT14nnlo +LHE, id = 355, group = CT14nnlo, Member 30 of sets CT14nnlo +LHE, id = 356, group = CT14nnlo, Member 31 of sets CT14nnlo +LHE, id = 357, group = CT14nnlo, Member 32 of sets CT14nnlo +LHE, id = 358, group = CT14nnlo, Member 33 of sets CT14nnlo +LHE, id = 359, group = CT14nnlo, Member 34 of sets CT14nnlo +LHE, id = 360, group = CT14nnlo, Member 35 of sets CT14nnlo +LHE, id = 361, group = CT14nnlo, Member 36 of sets CT14nnlo +LHE, id = 362, group = CT14nnlo, Member 37 of sets CT14nnlo +LHE, id = 363, group = CT14nnlo, Member 38 of sets CT14nnlo +LHE, id = 364, group = CT14nnlo, Member 39 of sets CT14nnlo +LHE, id = 365, group = CT14nnlo, Member 40 of sets CT14nnlo +LHE, id = 366, group = CT14nnlo, Member 41 of sets CT14nnlo +LHE, id = 367, group = CT14nnlo, Member 42 of sets CT14nnlo +LHE, id = 368, group = CT14nnlo, Member 43 of sets CT14nnlo +LHE, id = 369, group = CT14nnlo, Member 44 of sets CT14nnlo +LHE, id = 370, group = CT14nnlo, Member 45 of sets CT14nnlo +LHE, id = 371, group = CT14nnlo, Member 46 of sets CT14nnlo +LHE, id = 372, group = CT14nnlo, Member 47 of sets CT14nnlo +LHE, id = 373, group = CT14nnlo, Member 48 of sets CT14nnlo +LHE, id = 374, group = CT14nnlo, Member 49 of sets CT14nnlo +LHE, id = 375, group = CT14nnlo, Member 50 of sets CT14nnlo +LHE, id = 376, group = CT14nnlo, Member 51 of sets CT14nnlo +LHE, id = 377, group = CT14nnlo, Member 52 of sets CT14nnlo +LHE, id = 378, group = CT14nnlo, Member 53 of sets CT14nnlo +LHE, id = 379, group = CT14nnlo, Member 54 of sets CT14nnlo +LHE, id = 380, group = CT14nnlo, Member 55 of sets CT14nnlo +LHE, id = 381, group = CT14nnlo, Member 56 of sets CT14nnlo +LHE, id = 382, group = CT14nnlo_as_0116, Member 0 of sets CT14nnlo_as_0116 +LHE, id = 383, group = CT14nnlo_as_0120, Member 0 of sets CT14nnlo_as_0120 +LHE, id = 384, group = CT14nlo, Member 0 of sets CT14nlo +LHE, id = 385, group = CT14nlo, Member 1 of sets CT14nlo +LHE, id = 386, group = CT14nlo, Member 2 of sets CT14nlo +LHE, id = 387, group = CT14nlo, Member 3 of sets CT14nlo +LHE, id = 388, group = CT14nlo, Member 4 of sets CT14nlo +LHE, id = 389, group = CT14nlo, Member 5 of sets CT14nlo +LHE, id = 390, group = CT14nlo, Member 6 of sets CT14nlo +LHE, id = 391, group = CT14nlo, Member 7 of sets CT14nlo +LHE, id = 392, group = CT14nlo, Member 8 of sets CT14nlo +LHE, id = 393, group = CT14nlo, Member 9 of sets CT14nlo +LHE, id = 394, group = CT14nlo, Member 10 of sets CT14nlo +LHE, id = 395, group = CT14nlo, Member 11 of sets CT14nlo +LHE, id = 396, group = CT14nlo, Member 12 of sets CT14nlo +LHE, id = 397, group = CT14nlo, Member 13 of sets CT14nlo +LHE, id = 398, group = CT14nlo, Member 14 of sets CT14nlo +LHE, id = 399, group = CT14nlo, Member 15 of sets CT14nlo +LHE, id = 400, group = CT14nlo, Member 16 of sets CT14nlo +LHE, id = 401, group = CT14nlo, Member 17 of sets CT14nlo +LHE, id = 402, group = CT14nlo, Member 18 of sets CT14nlo +LHE, id = 403, group = CT14nlo, Member 19 of sets CT14nlo +LHE, id = 404, group = CT14nlo, Member 20 of sets CT14nlo +LHE, id = 405, group = CT14nlo, Member 21 of sets CT14nlo +LHE, id = 406, group = CT14nlo, Member 22 of sets CT14nlo +LHE, id = 407, group = CT14nlo, Member 23 of sets CT14nlo +LHE, id = 408, group = CT14nlo, Member 24 of sets CT14nlo +LHE, id = 409, group = CT14nlo, Member 25 of sets CT14nlo +LHE, id = 410, group = CT14nlo, Member 26 of sets CT14nlo +LHE, id = 411, group = CT14nlo, Member 27 of sets CT14nlo +LHE, id = 412, group = CT14nlo, Member 28 of sets CT14nlo +LHE, id = 413, group = CT14nlo, Member 29 of sets CT14nlo +LHE, id = 414, group = CT14nlo, Member 30 of sets CT14nlo +LHE, id = 415, group = CT14nlo, Member 31 of sets CT14nlo +LHE, id = 416, group = CT14nlo, Member 32 of sets CT14nlo +LHE, id = 417, group = CT14nlo, Member 33 of sets CT14nlo +LHE, id = 418, group = CT14nlo, Member 34 of sets CT14nlo +LHE, id = 419, group = CT14nlo, Member 35 of sets CT14nlo +LHE, id = 420, group = CT14nlo, Member 36 of sets CT14nlo +LHE, id = 421, group = CT14nlo, Member 37 of sets CT14nlo +LHE, id = 422, group = CT14nlo, Member 38 of sets CT14nlo +LHE, id = 423, group = CT14nlo, Member 39 of sets CT14nlo +LHE, id = 424, group = CT14nlo, Member 40 of sets CT14nlo +LHE, id = 425, group = CT14nlo, Member 41 of sets CT14nlo +LHE, id = 426, group = CT14nlo, Member 42 of sets CT14nlo +LHE, id = 427, group = CT14nlo, Member 43 of sets CT14nlo +LHE, id = 428, group = CT14nlo, Member 44 of sets CT14nlo +LHE, id = 429, group = CT14nlo, Member 45 of sets CT14nlo +LHE, id = 430, group = CT14nlo, Member 46 of sets CT14nlo +LHE, id = 431, group = CT14nlo, Member 47 of sets CT14nlo +LHE, id = 432, group = CT14nlo, Member 48 of sets CT14nlo +LHE, id = 433, group = CT14nlo, Member 49 of sets CT14nlo +LHE, id = 434, group = CT14nlo, Member 50 of sets CT14nlo +LHE, id = 435, group = CT14nlo, Member 51 of sets CT14nlo +LHE, id = 436, group = CT14nlo, Member 52 of sets CT14nlo +LHE, id = 437, group = CT14nlo, Member 53 of sets CT14nlo +LHE, id = 438, group = CT14nlo, Member 54 of sets CT14nlo +LHE, id = 439, group = CT14nlo, Member 55 of sets CT14nlo +LHE, id = 440, group = CT14nlo, Member 56 of sets CT14nlo +LHE, id = 441, group = CT14nlo_as_0116, Member 0 of sets CT14nlo_as_0116 +LHE, id = 442, group = CT14nlo_as_0120, Member 0 of sets CT14nlo_as_0120 +LHE, id = 443, group = CT14lo, Member 0 of sets CT14lo +LHE, id = 444, group = MMHT2014nlo68clas118, Member 0 of sets MMHT2014nlo68clas118 +LHE, id = 445, group = MMHT2014nlo68clas118, Member 1 of sets MMHT2014nlo68clas118 +LHE, id = 446, group = MMHT2014nlo68clas118, Member 2 of sets MMHT2014nlo68clas118 +LHE, id = 447, group = MMHT2014nlo68clas118, Member 3 of sets MMHT2014nlo68clas118 +LHE, id = 448, group = MMHT2014nlo68clas118, Member 4 of sets MMHT2014nlo68clas118 +LHE, id = 449, group = MMHT2014nlo68clas118, Member 5 of sets MMHT2014nlo68clas118 +LHE, id = 450, group = MMHT2014nlo68clas118, Member 6 of sets MMHT2014nlo68clas118 +LHE, id = 451, group = MMHT2014nlo68clas118, Member 7 of sets MMHT2014nlo68clas118 +LHE, id = 452, group = MMHT2014nlo68clas118, Member 8 of sets MMHT2014nlo68clas118 +LHE, id = 453, group = MMHT2014nlo68clas118, Member 9 of sets MMHT2014nlo68clas118 +LHE, id = 454, group = MMHT2014nlo68clas118, Member 10 of sets MMHT2014nlo68clas118 +LHE, id = 455, group = MMHT2014nlo68clas118, Member 11 of sets MMHT2014nlo68clas118 +LHE, id = 456, group = MMHT2014nlo68clas118, Member 12 of sets MMHT2014nlo68clas118 +LHE, id = 457, group = MMHT2014nlo68clas118, Member 13 of sets MMHT2014nlo68clas118 +LHE, id = 458, group = MMHT2014nlo68clas118, Member 14 of sets MMHT2014nlo68clas118 +LHE, id = 459, group = MMHT2014nlo68clas118, Member 15 of sets MMHT2014nlo68clas118 +LHE, id = 460, group = MMHT2014nlo68clas118, Member 16 of sets MMHT2014nlo68clas118 +LHE, id = 461, group = MMHT2014nlo68clas118, Member 17 of sets MMHT2014nlo68clas118 +LHE, id = 462, group = MMHT2014nlo68clas118, Member 18 of sets MMHT2014nlo68clas118 +LHE, id = 463, group = MMHT2014nlo68clas118, Member 19 of sets MMHT2014nlo68clas118 +LHE, id = 464, group = MMHT2014nlo68clas118, Member 20 of sets MMHT2014nlo68clas118 +LHE, id = 465, group = MMHT2014nlo68clas118, Member 21 of sets MMHT2014nlo68clas118 +LHE, id = 466, group = MMHT2014nlo68clas118, Member 22 of sets MMHT2014nlo68clas118 +LHE, id = 467, group = MMHT2014nlo68clas118, Member 23 of sets MMHT2014nlo68clas118 +LHE, id = 468, group = MMHT2014nlo68clas118, Member 24 of sets MMHT2014nlo68clas118 +LHE, id = 469, group = MMHT2014nlo68clas118, Member 25 of sets MMHT2014nlo68clas118 +LHE, id = 470, group = MMHT2014nlo68clas118, Member 26 of sets MMHT2014nlo68clas118 +LHE, id = 471, group = MMHT2014nlo68clas118, Member 27 of sets MMHT2014nlo68clas118 +LHE, id = 472, group = MMHT2014nlo68clas118, Member 28 of sets MMHT2014nlo68clas118 +LHE, id = 473, group = MMHT2014nlo68clas118, Member 29 of sets MMHT2014nlo68clas118 +LHE, id = 474, group = MMHT2014nlo68clas118, Member 30 of sets MMHT2014nlo68clas118 +LHE, id = 475, group = MMHT2014nlo68clas118, Member 31 of sets MMHT2014nlo68clas118 +LHE, id = 476, group = MMHT2014nlo68clas118, Member 32 of sets MMHT2014nlo68clas118 +LHE, id = 477, group = MMHT2014nlo68clas118, Member 33 of sets MMHT2014nlo68clas118 +LHE, id = 478, group = MMHT2014nlo68clas118, Member 34 of sets MMHT2014nlo68clas118 +LHE, id = 479, group = MMHT2014nlo68clas118, Member 35 of sets MMHT2014nlo68clas118 +LHE, id = 480, group = MMHT2014nlo68clas118, Member 36 of sets MMHT2014nlo68clas118 +LHE, id = 481, group = MMHT2014nlo68clas118, Member 37 of sets MMHT2014nlo68clas118 +LHE, id = 482, group = MMHT2014nlo68clas118, Member 38 of sets MMHT2014nlo68clas118 +LHE, id = 483, group = MMHT2014nlo68clas118, Member 39 of sets MMHT2014nlo68clas118 +LHE, id = 484, group = MMHT2014nlo68clas118, Member 40 of sets MMHT2014nlo68clas118 +LHE, id = 485, group = MMHT2014nlo68clas118, Member 41 of sets MMHT2014nlo68clas118 +LHE, id = 486, group = MMHT2014nlo68clas118, Member 42 of sets MMHT2014nlo68clas118 +LHE, id = 487, group = MMHT2014nlo68clas118, Member 43 of sets MMHT2014nlo68clas118 +LHE, id = 488, group = MMHT2014nlo68clas118, Member 44 of sets MMHT2014nlo68clas118 +LHE, id = 489, group = MMHT2014nlo68clas118, Member 45 of sets MMHT2014nlo68clas118 +LHE, id = 490, group = MMHT2014nlo68clas118, Member 46 of sets MMHT2014nlo68clas118 +LHE, id = 491, group = MMHT2014nlo68clas118, Member 47 of sets MMHT2014nlo68clas118 +LHE, id = 492, group = MMHT2014nlo68clas118, Member 48 of sets MMHT2014nlo68clas118 +LHE, id = 493, group = MMHT2014nlo68clas118, Member 49 of sets MMHT2014nlo68clas118 +LHE, id = 494, group = MMHT2014nlo68clas118, Member 50 of sets MMHT2014nlo68clas118 +LHE, id = 495, group = MMHT2014nnlo68cl, Member 0 of sets MMHT2014nnlo68cl +LHE, id = 496, group = MMHT2014nnlo68cl, Member 1 of sets MMHT2014nnlo68cl +LHE, id = 497, group = MMHT2014nnlo68cl, Member 2 of sets MMHT2014nnlo68cl +LHE, id = 498, group = MMHT2014nnlo68cl, Member 3 of sets MMHT2014nnlo68cl +LHE, id = 499, group = MMHT2014nnlo68cl, Member 4 of sets MMHT2014nnlo68cl +LHE, id = 500, group = MMHT2014nnlo68cl, Member 5 of sets MMHT2014nnlo68cl +LHE, id = 501, group = MMHT2014nnlo68cl, Member 6 of sets MMHT2014nnlo68cl +LHE, id = 502, group = MMHT2014nnlo68cl, Member 7 of sets MMHT2014nnlo68cl +LHE, id = 503, group = MMHT2014nnlo68cl, Member 8 of sets MMHT2014nnlo68cl +LHE, id = 504, group = MMHT2014nnlo68cl, Member 9 of sets MMHT2014nnlo68cl +LHE, id = 505, group = MMHT2014nnlo68cl, Member 10 of sets MMHT2014nnlo68cl +LHE, id = 506, group = MMHT2014nnlo68cl, Member 11 of sets MMHT2014nnlo68cl +LHE, id = 507, group = MMHT2014nnlo68cl, Member 12 of sets MMHT2014nnlo68cl +LHE, id = 508, group = MMHT2014nnlo68cl, Member 13 of sets MMHT2014nnlo68cl +LHE, id = 509, group = MMHT2014nnlo68cl, Member 14 of sets MMHT2014nnlo68cl +LHE, id = 510, group = MMHT2014nnlo68cl, Member 15 of sets MMHT2014nnlo68cl +LHE, id = 511, group = MMHT2014nnlo68cl, Member 16 of sets MMHT2014nnlo68cl +LHE, id = 512, group = MMHT2014nnlo68cl, Member 17 of sets MMHT2014nnlo68cl +LHE, id = 513, group = MMHT2014nnlo68cl, Member 18 of sets MMHT2014nnlo68cl +LHE, id = 514, group = MMHT2014nnlo68cl, Member 19 of sets MMHT2014nnlo68cl +LHE, id = 515, group = MMHT2014nnlo68cl, Member 20 of sets MMHT2014nnlo68cl +LHE, id = 516, group = MMHT2014nnlo68cl, Member 21 of sets MMHT2014nnlo68cl +LHE, id = 517, group = MMHT2014nnlo68cl, Member 22 of sets MMHT2014nnlo68cl +LHE, id = 518, group = MMHT2014nnlo68cl, Member 23 of sets MMHT2014nnlo68cl +LHE, id = 519, group = MMHT2014nnlo68cl, Member 24 of sets MMHT2014nnlo68cl +LHE, id = 520, group = MMHT2014nnlo68cl, Member 25 of sets MMHT2014nnlo68cl +LHE, id = 521, group = MMHT2014nnlo68cl, Member 26 of sets MMHT2014nnlo68cl +LHE, id = 522, group = MMHT2014nnlo68cl, Member 27 of sets MMHT2014nnlo68cl +LHE, id = 523, group = MMHT2014nnlo68cl, Member 28 of sets MMHT2014nnlo68cl +LHE, id = 524, group = MMHT2014nnlo68cl, Member 29 of sets MMHT2014nnlo68cl +LHE, id = 525, group = MMHT2014nnlo68cl, Member 30 of sets MMHT2014nnlo68cl +LHE, id = 526, group = MMHT2014nnlo68cl, Member 31 of sets MMHT2014nnlo68cl +LHE, id = 527, group = MMHT2014nnlo68cl, Member 32 of sets MMHT2014nnlo68cl +LHE, id = 528, group = MMHT2014nnlo68cl, Member 33 of sets MMHT2014nnlo68cl +LHE, id = 529, group = MMHT2014nnlo68cl, Member 34 of sets MMHT2014nnlo68cl +LHE, id = 530, group = MMHT2014nnlo68cl, Member 35 of sets MMHT2014nnlo68cl +LHE, id = 531, group = MMHT2014nnlo68cl, Member 36 of sets MMHT2014nnlo68cl +LHE, id = 532, group = MMHT2014nnlo68cl, Member 37 of sets MMHT2014nnlo68cl +LHE, id = 533, group = MMHT2014nnlo68cl, Member 38 of sets MMHT2014nnlo68cl +LHE, id = 534, group = MMHT2014nnlo68cl, Member 39 of sets MMHT2014nnlo68cl +LHE, id = 535, group = MMHT2014nnlo68cl, Member 40 of sets MMHT2014nnlo68cl +LHE, id = 536, group = MMHT2014nnlo68cl, Member 41 of sets MMHT2014nnlo68cl +LHE, id = 537, group = MMHT2014nnlo68cl, Member 42 of sets MMHT2014nnlo68cl +LHE, id = 538, group = MMHT2014nnlo68cl, Member 43 of sets MMHT2014nnlo68cl +LHE, id = 539, group = MMHT2014nnlo68cl, Member 44 of sets MMHT2014nnlo68cl +LHE, id = 540, group = MMHT2014nnlo68cl, Member 45 of sets MMHT2014nnlo68cl +LHE, id = 541, group = MMHT2014nnlo68cl, Member 46 of sets MMHT2014nnlo68cl +LHE, id = 542, group = MMHT2014nnlo68cl, Member 47 of sets MMHT2014nnlo68cl +LHE, id = 543, group = MMHT2014nnlo68cl, Member 48 of sets MMHT2014nnlo68cl +LHE, id = 544, group = MMHT2014nnlo68cl, Member 49 of sets MMHT2014nnlo68cl +LHE, id = 545, group = MMHT2014nnlo68cl, Member 50 of sets MMHT2014nnlo68cl +LHE, id = 546, group = MMHT2014lo68cl, Member 0 of sets MMHT2014lo68cl +LHE, id = 547, group = ABMP16als118_5_nnlo, Member 0 of sets ABMP16als118_5_nnlo +LHE, id = 548, group = ABMP16als118_5_nnlo, Member 1 of sets ABMP16als118_5_nnlo +LHE, id = 549, group = ABMP16als118_5_nnlo, Member 2 of sets ABMP16als118_5_nnlo +LHE, id = 550, group = ABMP16als118_5_nnlo, Member 3 of sets ABMP16als118_5_nnlo +LHE, id = 551, group = ABMP16als118_5_nnlo, Member 4 of sets ABMP16als118_5_nnlo +LHE, id = 552, group = ABMP16als118_5_nnlo, Member 5 of sets ABMP16als118_5_nnlo +LHE, id = 553, group = ABMP16als118_5_nnlo, Member 6 of sets ABMP16als118_5_nnlo +LHE, id = 554, group = ABMP16als118_5_nnlo, Member 7 of sets ABMP16als118_5_nnlo +LHE, id = 555, group = ABMP16als118_5_nnlo, Member 8 of sets ABMP16als118_5_nnlo +LHE, id = 556, group = ABMP16als118_5_nnlo, Member 9 of sets ABMP16als118_5_nnlo +LHE, id = 557, group = ABMP16als118_5_nnlo, Member 10 of sets ABMP16als118_5_nnlo +LHE, id = 558, group = ABMP16als118_5_nnlo, Member 11 of sets ABMP16als118_5_nnlo +LHE, id = 559, group = ABMP16als118_5_nnlo, Member 12 of sets ABMP16als118_5_nnlo +LHE, id = 560, group = ABMP16als118_5_nnlo, Member 13 of sets ABMP16als118_5_nnlo +LHE, id = 561, group = ABMP16als118_5_nnlo, Member 14 of sets ABMP16als118_5_nnlo +LHE, id = 562, group = ABMP16als118_5_nnlo, Member 15 of sets ABMP16als118_5_nnlo +LHE, id = 563, group = ABMP16als118_5_nnlo, Member 16 of sets ABMP16als118_5_nnlo +LHE, id = 564, group = ABMP16als118_5_nnlo, Member 17 of sets ABMP16als118_5_nnlo +LHE, id = 565, group = ABMP16als118_5_nnlo, Member 18 of sets ABMP16als118_5_nnlo +LHE, id = 566, group = ABMP16als118_5_nnlo, Member 19 of sets ABMP16als118_5_nnlo +LHE, id = 567, group = ABMP16als118_5_nnlo, Member 20 of sets ABMP16als118_5_nnlo +LHE, id = 568, group = ABMP16als118_5_nnlo, Member 21 of sets ABMP16als118_5_nnlo +LHE, id = 569, group = ABMP16als118_5_nnlo, Member 22 of sets ABMP16als118_5_nnlo +LHE, id = 570, group = ABMP16als118_5_nnlo, Member 23 of sets ABMP16als118_5_nnlo +LHE, id = 571, group = ABMP16als118_5_nnlo, Member 24 of sets ABMP16als118_5_nnlo +LHE, id = 572, group = ABMP16als118_5_nnlo, Member 25 of sets ABMP16als118_5_nnlo +LHE, id = 573, group = ABMP16als118_5_nnlo, Member 26 of sets ABMP16als118_5_nnlo +LHE, id = 574, group = ABMP16als118_5_nnlo, Member 27 of sets ABMP16als118_5_nnlo +LHE, id = 575, group = ABMP16als118_5_nnlo, Member 28 of sets ABMP16als118_5_nnlo +LHE, id = 576, group = ABMP16als118_5_nnlo, Member 29 of sets ABMP16als118_5_nnlo +LHE, id = 577, group = PDF4LHC15_nlo_100_pdfas, Member 0 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 578, group = PDF4LHC15_nlo_100_pdfas, Member 1 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 579, group = PDF4LHC15_nlo_100_pdfas, Member 2 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 580, group = PDF4LHC15_nlo_100_pdfas, Member 3 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 581, group = PDF4LHC15_nlo_100_pdfas, Member 4 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 582, group = PDF4LHC15_nlo_100_pdfas, Member 5 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 583, group = PDF4LHC15_nlo_100_pdfas, Member 6 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 584, group = PDF4LHC15_nlo_100_pdfas, Member 7 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 585, group = PDF4LHC15_nlo_100_pdfas, Member 8 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 586, group = PDF4LHC15_nlo_100_pdfas, Member 9 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 587, group = PDF4LHC15_nlo_100_pdfas, Member 10 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 588, group = PDF4LHC15_nlo_100_pdfas, Member 11 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 589, group = PDF4LHC15_nlo_100_pdfas, Member 12 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 590, group = PDF4LHC15_nlo_100_pdfas, Member 13 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 591, group = PDF4LHC15_nlo_100_pdfas, Member 14 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 592, group = PDF4LHC15_nlo_100_pdfas, Member 15 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 593, group = PDF4LHC15_nlo_100_pdfas, Member 16 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 594, group = PDF4LHC15_nlo_100_pdfas, Member 17 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 595, group = PDF4LHC15_nlo_100_pdfas, Member 18 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 596, group = PDF4LHC15_nlo_100_pdfas, Member 19 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 597, group = PDF4LHC15_nlo_100_pdfas, Member 20 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 598, group = PDF4LHC15_nlo_100_pdfas, Member 21 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 599, group = PDF4LHC15_nlo_100_pdfas, Member 22 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 600, group = PDF4LHC15_nlo_100_pdfas, Member 23 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 601, group = PDF4LHC15_nlo_100_pdfas, Member 24 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 602, group = PDF4LHC15_nlo_100_pdfas, Member 25 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 603, group = PDF4LHC15_nlo_100_pdfas, Member 26 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 604, group = PDF4LHC15_nlo_100_pdfas, Member 27 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 605, group = PDF4LHC15_nlo_100_pdfas, Member 28 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 606, group = PDF4LHC15_nlo_100_pdfas, Member 29 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 607, group = PDF4LHC15_nlo_100_pdfas, Member 30 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 608, group = PDF4LHC15_nlo_100_pdfas, Member 31 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 609, group = PDF4LHC15_nlo_100_pdfas, Member 32 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 610, group = PDF4LHC15_nlo_100_pdfas, Member 33 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 611, group = PDF4LHC15_nlo_100_pdfas, Member 34 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 612, group = PDF4LHC15_nlo_100_pdfas, Member 35 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 613, group = PDF4LHC15_nlo_100_pdfas, Member 36 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 614, group = PDF4LHC15_nlo_100_pdfas, Member 37 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 615, group = PDF4LHC15_nlo_100_pdfas, Member 38 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 616, group = PDF4LHC15_nlo_100_pdfas, Member 39 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 617, group = PDF4LHC15_nlo_100_pdfas, Member 40 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 618, group = PDF4LHC15_nlo_100_pdfas, Member 41 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 619, group = PDF4LHC15_nlo_100_pdfas, Member 42 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 620, group = PDF4LHC15_nlo_100_pdfas, Member 43 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 621, group = PDF4LHC15_nlo_100_pdfas, Member 44 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 622, group = PDF4LHC15_nlo_100_pdfas, Member 45 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 623, group = PDF4LHC15_nlo_100_pdfas, Member 46 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 624, group = PDF4LHC15_nlo_100_pdfas, Member 47 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 625, group = PDF4LHC15_nlo_100_pdfas, Member 48 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 626, group = PDF4LHC15_nlo_100_pdfas, Member 49 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 627, group = PDF4LHC15_nlo_100_pdfas, Member 50 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 628, group = PDF4LHC15_nlo_100_pdfas, Member 51 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 629, group = PDF4LHC15_nlo_100_pdfas, Member 52 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 630, group = PDF4LHC15_nlo_100_pdfas, Member 53 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 631, group = PDF4LHC15_nlo_100_pdfas, Member 54 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 632, group = PDF4LHC15_nlo_100_pdfas, Member 55 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 633, group = PDF4LHC15_nlo_100_pdfas, Member 56 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 634, group = PDF4LHC15_nlo_100_pdfas, Member 57 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 635, group = PDF4LHC15_nlo_100_pdfas, Member 58 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 636, group = PDF4LHC15_nlo_100_pdfas, Member 59 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 637, group = PDF4LHC15_nlo_100_pdfas, Member 60 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 638, group = PDF4LHC15_nlo_100_pdfas, Member 61 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 639, group = PDF4LHC15_nlo_100_pdfas, Member 62 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 640, group = PDF4LHC15_nlo_100_pdfas, Member 63 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 641, group = PDF4LHC15_nlo_100_pdfas, Member 64 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 642, group = PDF4LHC15_nlo_100_pdfas, Member 65 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 643, group = PDF4LHC15_nlo_100_pdfas, Member 66 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 644, group = PDF4LHC15_nlo_100_pdfas, Member 67 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 645, group = PDF4LHC15_nlo_100_pdfas, Member 68 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 646, group = PDF4LHC15_nlo_100_pdfas, Member 69 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 647, group = PDF4LHC15_nlo_100_pdfas, Member 70 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 648, group = PDF4LHC15_nlo_100_pdfas, Member 71 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 649, group = PDF4LHC15_nlo_100_pdfas, Member 72 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 650, group = PDF4LHC15_nlo_100_pdfas, Member 73 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 651, group = PDF4LHC15_nlo_100_pdfas, Member 74 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 652, group = PDF4LHC15_nlo_100_pdfas, Member 75 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 653, group = PDF4LHC15_nlo_100_pdfas, Member 76 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 654, group = PDF4LHC15_nlo_100_pdfas, Member 77 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 655, group = PDF4LHC15_nlo_100_pdfas, Member 78 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 656, group = PDF4LHC15_nlo_100_pdfas, Member 79 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 657, group = PDF4LHC15_nlo_100_pdfas, Member 80 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 658, group = PDF4LHC15_nlo_100_pdfas, Member 81 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 659, group = PDF4LHC15_nlo_100_pdfas, Member 82 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 660, group = PDF4LHC15_nlo_100_pdfas, Member 83 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 661, group = PDF4LHC15_nlo_100_pdfas, Member 84 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 662, group = PDF4LHC15_nlo_100_pdfas, Member 85 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 663, group = PDF4LHC15_nlo_100_pdfas, Member 86 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 664, group = PDF4LHC15_nlo_100_pdfas, Member 87 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 665, group = PDF4LHC15_nlo_100_pdfas, Member 88 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 666, group = PDF4LHC15_nlo_100_pdfas, Member 89 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 667, group = PDF4LHC15_nlo_100_pdfas, Member 90 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 668, group = PDF4LHC15_nlo_100_pdfas, Member 91 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 669, group = PDF4LHC15_nlo_100_pdfas, Member 92 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 670, group = PDF4LHC15_nlo_100_pdfas, Member 93 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 671, group = PDF4LHC15_nlo_100_pdfas, Member 94 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 672, group = PDF4LHC15_nlo_100_pdfas, Member 95 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 673, group = PDF4LHC15_nlo_100_pdfas, Member 96 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 674, group = PDF4LHC15_nlo_100_pdfas, Member 97 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 675, group = PDF4LHC15_nlo_100_pdfas, Member 98 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 676, group = PDF4LHC15_nlo_100_pdfas, Member 99 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 677, group = PDF4LHC15_nlo_100_pdfas, Member 100 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 678, group = PDF4LHC15_nlo_100_pdfas, Member 101 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 679, group = PDF4LHC15_nlo_100_pdfas, Member 102 of sets PDF4LHC15_nlo_100_pdfas +LHE, id = 680, group = PDF4LHC15_nnlo_100_pdfas, Member 0 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 681, group = PDF4LHC15_nnlo_100_pdfas, Member 1 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 682, group = PDF4LHC15_nnlo_100_pdfas, Member 2 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 683, group = PDF4LHC15_nnlo_100_pdfas, Member 3 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 684, group = PDF4LHC15_nnlo_100_pdfas, Member 4 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 685, group = PDF4LHC15_nnlo_100_pdfas, Member 5 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 686, group = PDF4LHC15_nnlo_100_pdfas, Member 6 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 687, group = PDF4LHC15_nnlo_100_pdfas, Member 7 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 688, group = PDF4LHC15_nnlo_100_pdfas, Member 8 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 689, group = PDF4LHC15_nnlo_100_pdfas, Member 9 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 690, group = PDF4LHC15_nnlo_100_pdfas, Member 10 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 691, group = PDF4LHC15_nnlo_100_pdfas, Member 11 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 692, group = PDF4LHC15_nnlo_100_pdfas, Member 12 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 693, group = PDF4LHC15_nnlo_100_pdfas, Member 13 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 694, group = PDF4LHC15_nnlo_100_pdfas, Member 14 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 695, group = PDF4LHC15_nnlo_100_pdfas, Member 15 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 696, group = PDF4LHC15_nnlo_100_pdfas, Member 16 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 697, group = PDF4LHC15_nnlo_100_pdfas, Member 17 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 698, group = PDF4LHC15_nnlo_100_pdfas, Member 18 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 699, group = PDF4LHC15_nnlo_100_pdfas, Member 19 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 700, group = PDF4LHC15_nnlo_100_pdfas, Member 20 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 701, group = PDF4LHC15_nnlo_100_pdfas, Member 21 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 702, group = PDF4LHC15_nnlo_100_pdfas, Member 22 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 703, group = PDF4LHC15_nnlo_100_pdfas, Member 23 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 704, group = PDF4LHC15_nnlo_100_pdfas, Member 24 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 705, group = PDF4LHC15_nnlo_100_pdfas, Member 25 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 706, group = PDF4LHC15_nnlo_100_pdfas, Member 26 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 707, group = PDF4LHC15_nnlo_100_pdfas, Member 27 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 708, group = PDF4LHC15_nnlo_100_pdfas, Member 28 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 709, group = PDF4LHC15_nnlo_100_pdfas, Member 29 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 710, group = PDF4LHC15_nnlo_100_pdfas, Member 30 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 711, group = PDF4LHC15_nnlo_100_pdfas, Member 31 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 712, group = PDF4LHC15_nnlo_100_pdfas, Member 32 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 713, group = PDF4LHC15_nnlo_100_pdfas, Member 33 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 714, group = PDF4LHC15_nnlo_100_pdfas, Member 34 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 715, group = PDF4LHC15_nnlo_100_pdfas, Member 35 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 716, group = PDF4LHC15_nnlo_100_pdfas, Member 36 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 717, group = PDF4LHC15_nnlo_100_pdfas, Member 37 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 718, group = PDF4LHC15_nnlo_100_pdfas, Member 38 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 719, group = PDF4LHC15_nnlo_100_pdfas, Member 39 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 720, group = PDF4LHC15_nnlo_100_pdfas, Member 40 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 721, group = PDF4LHC15_nnlo_100_pdfas, Member 41 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 722, group = PDF4LHC15_nnlo_100_pdfas, Member 42 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 723, group = PDF4LHC15_nnlo_100_pdfas, Member 43 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 724, group = PDF4LHC15_nnlo_100_pdfas, Member 44 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 725, group = PDF4LHC15_nnlo_100_pdfas, Member 45 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 726, group = PDF4LHC15_nnlo_100_pdfas, Member 46 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 727, group = PDF4LHC15_nnlo_100_pdfas, Member 47 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 728, group = PDF4LHC15_nnlo_100_pdfas, Member 48 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 729, group = PDF4LHC15_nnlo_100_pdfas, Member 49 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 730, group = PDF4LHC15_nnlo_100_pdfas, Member 50 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 731, group = PDF4LHC15_nnlo_100_pdfas, Member 51 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 732, group = PDF4LHC15_nnlo_100_pdfas, Member 52 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 733, group = PDF4LHC15_nnlo_100_pdfas, Member 53 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 734, group = PDF4LHC15_nnlo_100_pdfas, Member 54 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 735, group = PDF4LHC15_nnlo_100_pdfas, Member 55 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 736, group = PDF4LHC15_nnlo_100_pdfas, Member 56 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 737, group = PDF4LHC15_nnlo_100_pdfas, Member 57 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 738, group = PDF4LHC15_nnlo_100_pdfas, Member 58 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 739, group = PDF4LHC15_nnlo_100_pdfas, Member 59 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 740, group = PDF4LHC15_nnlo_100_pdfas, Member 60 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 741, group = PDF4LHC15_nnlo_100_pdfas, Member 61 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 742, group = PDF4LHC15_nnlo_100_pdfas, Member 62 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 743, group = PDF4LHC15_nnlo_100_pdfas, Member 63 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 744, group = PDF4LHC15_nnlo_100_pdfas, Member 64 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 745, group = PDF4LHC15_nnlo_100_pdfas, Member 65 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 746, group = PDF4LHC15_nnlo_100_pdfas, Member 66 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 747, group = PDF4LHC15_nnlo_100_pdfas, Member 67 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 748, group = PDF4LHC15_nnlo_100_pdfas, Member 68 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 749, group = PDF4LHC15_nnlo_100_pdfas, Member 69 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 750, group = PDF4LHC15_nnlo_100_pdfas, Member 70 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 751, group = PDF4LHC15_nnlo_100_pdfas, Member 71 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 752, group = PDF4LHC15_nnlo_100_pdfas, Member 72 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 753, group = PDF4LHC15_nnlo_100_pdfas, Member 73 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 754, group = PDF4LHC15_nnlo_100_pdfas, Member 74 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 755, group = PDF4LHC15_nnlo_100_pdfas, Member 75 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 756, group = PDF4LHC15_nnlo_100_pdfas, Member 76 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 757, group = PDF4LHC15_nnlo_100_pdfas, Member 77 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 758, group = PDF4LHC15_nnlo_100_pdfas, Member 78 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 759, group = PDF4LHC15_nnlo_100_pdfas, Member 79 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 760, group = PDF4LHC15_nnlo_100_pdfas, Member 80 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 761, group = PDF4LHC15_nnlo_100_pdfas, Member 81 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 762, group = PDF4LHC15_nnlo_100_pdfas, Member 82 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 763, group = PDF4LHC15_nnlo_100_pdfas, Member 83 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 764, group = PDF4LHC15_nnlo_100_pdfas, Member 84 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 765, group = PDF4LHC15_nnlo_100_pdfas, Member 85 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 766, group = PDF4LHC15_nnlo_100_pdfas, Member 86 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 767, group = PDF4LHC15_nnlo_100_pdfas, Member 87 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 768, group = PDF4LHC15_nnlo_100_pdfas, Member 88 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 769, group = PDF4LHC15_nnlo_100_pdfas, Member 89 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 770, group = PDF4LHC15_nnlo_100_pdfas, Member 90 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 771, group = PDF4LHC15_nnlo_100_pdfas, Member 91 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 772, group = PDF4LHC15_nnlo_100_pdfas, Member 92 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 773, group = PDF4LHC15_nnlo_100_pdfas, Member 93 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 774, group = PDF4LHC15_nnlo_100_pdfas, Member 94 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 775, group = PDF4LHC15_nnlo_100_pdfas, Member 95 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 776, group = PDF4LHC15_nnlo_100_pdfas, Member 96 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 777, group = PDF4LHC15_nnlo_100_pdfas, Member 97 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 778, group = PDF4LHC15_nnlo_100_pdfas, Member 98 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 779, group = PDF4LHC15_nnlo_100_pdfas, Member 99 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 780, group = PDF4LHC15_nnlo_100_pdfas, Member 100 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 781, group = PDF4LHC15_nnlo_100_pdfas, Member 101 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 782, group = PDF4LHC15_nnlo_100_pdfas, Member 102 of sets PDF4LHC15_nnlo_100_pdfas +LHE, id = 783, group = PDF4LHC15_nlo_30_pdfas, Member 0 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 784, group = PDF4LHC15_nlo_30_pdfas, Member 1 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 785, group = PDF4LHC15_nlo_30_pdfas, Member 2 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 786, group = PDF4LHC15_nlo_30_pdfas, Member 3 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 787, group = PDF4LHC15_nlo_30_pdfas, Member 4 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 788, group = PDF4LHC15_nlo_30_pdfas, Member 5 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 789, group = PDF4LHC15_nlo_30_pdfas, Member 6 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 790, group = PDF4LHC15_nlo_30_pdfas, Member 7 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 791, group = PDF4LHC15_nlo_30_pdfas, Member 8 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 792, group = PDF4LHC15_nlo_30_pdfas, Member 9 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 793, group = PDF4LHC15_nlo_30_pdfas, Member 10 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 794, group = PDF4LHC15_nlo_30_pdfas, Member 11 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 795, group = PDF4LHC15_nlo_30_pdfas, Member 12 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 796, group = PDF4LHC15_nlo_30_pdfas, Member 13 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 797, group = PDF4LHC15_nlo_30_pdfas, Member 14 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 798, group = PDF4LHC15_nlo_30_pdfas, Member 15 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 799, group = PDF4LHC15_nlo_30_pdfas, Member 16 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 800, group = PDF4LHC15_nlo_30_pdfas, Member 17 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 801, group = PDF4LHC15_nlo_30_pdfas, Member 18 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 802, group = PDF4LHC15_nlo_30_pdfas, Member 19 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 803, group = PDF4LHC15_nlo_30_pdfas, Member 20 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 804, group = PDF4LHC15_nlo_30_pdfas, Member 21 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 805, group = PDF4LHC15_nlo_30_pdfas, Member 22 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 806, group = PDF4LHC15_nlo_30_pdfas, Member 23 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 807, group = PDF4LHC15_nlo_30_pdfas, Member 24 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 808, group = PDF4LHC15_nlo_30_pdfas, Member 25 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 809, group = PDF4LHC15_nlo_30_pdfas, Member 26 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 810, group = PDF4LHC15_nlo_30_pdfas, Member 27 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 811, group = PDF4LHC15_nlo_30_pdfas, Member 28 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 812, group = PDF4LHC15_nlo_30_pdfas, Member 29 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 813, group = PDF4LHC15_nlo_30_pdfas, Member 30 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 814, group = PDF4LHC15_nlo_30_pdfas, Member 31 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 815, group = PDF4LHC15_nlo_30_pdfas, Member 32 of sets PDF4LHC15_nlo_30_pdfas +LHE, id = 816, group = PDF4LHC15_nnlo_30_pdfas, Member 0 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 817, group = PDF4LHC15_nnlo_30_pdfas, Member 1 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 818, group = PDF4LHC15_nnlo_30_pdfas, Member 2 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 819, group = PDF4LHC15_nnlo_30_pdfas, Member 3 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 820, group = PDF4LHC15_nnlo_30_pdfas, Member 4 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 821, group = PDF4LHC15_nnlo_30_pdfas, Member 5 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 822, group = PDF4LHC15_nnlo_30_pdfas, Member 6 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 823, group = PDF4LHC15_nnlo_30_pdfas, Member 7 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 824, group = PDF4LHC15_nnlo_30_pdfas, Member 8 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 825, group = PDF4LHC15_nnlo_30_pdfas, Member 9 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 826, group = PDF4LHC15_nnlo_30_pdfas, Member 10 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 827, group = PDF4LHC15_nnlo_30_pdfas, Member 11 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 828, group = PDF4LHC15_nnlo_30_pdfas, Member 12 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 829, group = PDF4LHC15_nnlo_30_pdfas, Member 13 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 830, group = PDF4LHC15_nnlo_30_pdfas, Member 14 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 831, group = PDF4LHC15_nnlo_30_pdfas, Member 15 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 832, group = PDF4LHC15_nnlo_30_pdfas, Member 16 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 833, group = PDF4LHC15_nnlo_30_pdfas, Member 17 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 834, group = PDF4LHC15_nnlo_30_pdfas, Member 18 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 835, group = PDF4LHC15_nnlo_30_pdfas, Member 19 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 836, group = PDF4LHC15_nnlo_30_pdfas, Member 20 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 837, group = PDF4LHC15_nnlo_30_pdfas, Member 21 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 838, group = PDF4LHC15_nnlo_30_pdfas, Member 22 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 839, group = PDF4LHC15_nnlo_30_pdfas, Member 23 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 840, group = PDF4LHC15_nnlo_30_pdfas, Member 24 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 841, group = PDF4LHC15_nnlo_30_pdfas, Member 25 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 842, group = PDF4LHC15_nnlo_30_pdfas, Member 26 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 843, group = PDF4LHC15_nnlo_30_pdfas, Member 27 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 844, group = PDF4LHC15_nnlo_30_pdfas, Member 28 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 845, group = PDF4LHC15_nnlo_30_pdfas, Member 29 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 846, group = PDF4LHC15_nnlo_30_pdfas, Member 30 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 847, group = PDF4LHC15_nnlo_30_pdfas, Member 31 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 848, group = PDF4LHC15_nnlo_30_pdfas, Member 32 of sets PDF4LHC15_nnlo_30_pdfas +LHE, id = 849, group = HERAPDF20_NLO_EIG, Member 0 of sets HERAPDF20_NLO_EIG +LHE, id = 850, group = HERAPDF20_NLO_EIG, Member 1 of sets HERAPDF20_NLO_EIG +LHE, id = 851, group = HERAPDF20_NLO_EIG, Member 2 of sets HERAPDF20_NLO_EIG +LHE, id = 852, group = HERAPDF20_NLO_EIG, Member 3 of sets HERAPDF20_NLO_EIG +LHE, id = 853, group = HERAPDF20_NLO_EIG, Member 4 of sets HERAPDF20_NLO_EIG +LHE, id = 854, group = HERAPDF20_NLO_EIG, Member 5 of sets HERAPDF20_NLO_EIG +LHE, id = 855, group = HERAPDF20_NLO_EIG, Member 6 of sets HERAPDF20_NLO_EIG +LHE, id = 856, group = HERAPDF20_NLO_EIG, Member 7 of sets HERAPDF20_NLO_EIG +LHE, id = 857, group = HERAPDF20_NLO_EIG, Member 8 of sets HERAPDF20_NLO_EIG +LHE, id = 858, group = HERAPDF20_NLO_EIG, Member 9 of sets HERAPDF20_NLO_EIG +LHE, id = 859, group = HERAPDF20_NLO_EIG, Member 10 of sets HERAPDF20_NLO_EIG +LHE, id = 860, group = HERAPDF20_NLO_EIG, Member 11 of sets HERAPDF20_NLO_EIG +LHE, id = 861, group = HERAPDF20_NLO_EIG, Member 12 of sets HERAPDF20_NLO_EIG +LHE, id = 862, group = HERAPDF20_NLO_EIG, Member 13 of sets HERAPDF20_NLO_EIG +LHE, id = 863, group = HERAPDF20_NLO_EIG, Member 14 of sets HERAPDF20_NLO_EIG +LHE, id = 864, group = HERAPDF20_NLO_EIG, Member 15 of sets HERAPDF20_NLO_EIG +LHE, id = 865, group = HERAPDF20_NLO_EIG, Member 16 of sets HERAPDF20_NLO_EIG +LHE, id = 866, group = HERAPDF20_NLO_EIG, Member 17 of sets HERAPDF20_NLO_EIG +LHE, id = 867, group = HERAPDF20_NLO_EIG, Member 18 of sets HERAPDF20_NLO_EIG +LHE, id = 868, group = HERAPDF20_NLO_EIG, Member 19 of sets HERAPDF20_NLO_EIG +LHE, id = 869, group = HERAPDF20_NLO_EIG, Member 20 of sets HERAPDF20_NLO_EIG +LHE, id = 870, group = HERAPDF20_NLO_EIG, Member 21 of sets HERAPDF20_NLO_EIG +LHE, id = 871, group = HERAPDF20_NLO_EIG, Member 22 of sets HERAPDF20_NLO_EIG +LHE, id = 872, group = HERAPDF20_NLO_EIG, Member 23 of sets HERAPDF20_NLO_EIG +LHE, id = 873, group = HERAPDF20_NLO_EIG, Member 24 of sets HERAPDF20_NLO_EIG +LHE, id = 874, group = HERAPDF20_NLO_EIG, Member 25 of sets HERAPDF20_NLO_EIG +LHE, id = 875, group = HERAPDF20_NLO_EIG, Member 26 of sets HERAPDF20_NLO_EIG +LHE, id = 876, group = HERAPDF20_NLO_EIG, Member 27 of sets HERAPDF20_NLO_EIG +LHE, id = 877, group = HERAPDF20_NLO_EIG, Member 28 of sets HERAPDF20_NLO_EIG +LHE, id = 878, group = HERAPDF20_NLO_VAR, Member 0 of sets HERAPDF20_NLO_VAR +LHE, id = 879, group = HERAPDF20_NLO_VAR, Member 1 of sets HERAPDF20_NLO_VAR +LHE, id = 880, group = HERAPDF20_NLO_VAR, Member 2 of sets HERAPDF20_NLO_VAR +LHE, id = 881, group = HERAPDF20_NLO_VAR, Member 3 of sets HERAPDF20_NLO_VAR +LHE, id = 882, group = HERAPDF20_NLO_VAR, Member 4 of sets HERAPDF20_NLO_VAR +LHE, id = 883, group = HERAPDF20_NLO_VAR, Member 5 of sets HERAPDF20_NLO_VAR +LHE, id = 884, group = HERAPDF20_NLO_VAR, Member 6 of sets HERAPDF20_NLO_VAR +LHE, id = 885, group = HERAPDF20_NLO_VAR, Member 7 of sets HERAPDF20_NLO_VAR +LHE, id = 886, group = HERAPDF20_NLO_VAR, Member 8 of sets HERAPDF20_NLO_VAR +LHE, id = 887, group = HERAPDF20_NLO_VAR, Member 9 of sets HERAPDF20_NLO_VAR +LHE, id = 888, group = HERAPDF20_NLO_VAR, Member 10 of sets HERAPDF20_NLO_VAR +LHE, id = 889, group = HERAPDF20_NLO_VAR, Member 11 of sets HERAPDF20_NLO_VAR +LHE, id = 890, group = HERAPDF20_NLO_VAR, Member 12 of sets HERAPDF20_NLO_VAR +LHE, id = 891, group = HERAPDF20_NLO_VAR, Member 13 of sets HERAPDF20_NLO_VAR +LHE, id = 892, group = HERAPDF20_NNLO_EIG, Member 0 of sets HERAPDF20_NNLO_EIG +LHE, id = 893, group = HERAPDF20_NNLO_EIG, Member 1 of sets HERAPDF20_NNLO_EIG +LHE, id = 894, group = HERAPDF20_NNLO_EIG, Member 2 of sets HERAPDF20_NNLO_EIG +LHE, id = 895, group = HERAPDF20_NNLO_EIG, Member 3 of sets HERAPDF20_NNLO_EIG +LHE, id = 896, group = HERAPDF20_NNLO_EIG, Member 4 of sets HERAPDF20_NNLO_EIG +LHE, id = 897, group = HERAPDF20_NNLO_EIG, Member 5 of sets HERAPDF20_NNLO_EIG +LHE, id = 898, group = HERAPDF20_NNLO_EIG, Member 6 of sets HERAPDF20_NNLO_EIG +LHE, id = 899, group = HERAPDF20_NNLO_EIG, Member 7 of sets HERAPDF20_NNLO_EIG +LHE, id = 900, group = HERAPDF20_NNLO_EIG, Member 8 of sets HERAPDF20_NNLO_EIG +LHE, id = 901, group = HERAPDF20_NNLO_EIG, Member 9 of sets HERAPDF20_NNLO_EIG +LHE, id = 902, group = HERAPDF20_NNLO_EIG, Member 10 of sets HERAPDF20_NNLO_EIG +LHE, id = 903, group = HERAPDF20_NNLO_EIG, Member 11 of sets HERAPDF20_NNLO_EIG +LHE, id = 904, group = HERAPDF20_NNLO_EIG, Member 12 of sets HERAPDF20_NNLO_EIG +LHE, id = 905, group = HERAPDF20_NNLO_EIG, Member 13 of sets HERAPDF20_NNLO_EIG +LHE, id = 906, group = HERAPDF20_NNLO_EIG, Member 14 of sets HERAPDF20_NNLO_EIG +LHE, id = 907, group = HERAPDF20_NNLO_EIG, Member 15 of sets HERAPDF20_NNLO_EIG +LHE, id = 908, group = HERAPDF20_NNLO_EIG, Member 16 of sets HERAPDF20_NNLO_EIG +LHE, id = 909, group = HERAPDF20_NNLO_EIG, Member 17 of sets HERAPDF20_NNLO_EIG +LHE, id = 910, group = HERAPDF20_NNLO_EIG, Member 18 of sets HERAPDF20_NNLO_EIG +LHE, id = 911, group = HERAPDF20_NNLO_EIG, Member 19 of sets HERAPDF20_NNLO_EIG +LHE, id = 912, group = HERAPDF20_NNLO_EIG, Member 20 of sets HERAPDF20_NNLO_EIG +LHE, id = 913, group = HERAPDF20_NNLO_EIG, Member 21 of sets HERAPDF20_NNLO_EIG +LHE, id = 914, group = HERAPDF20_NNLO_EIG, Member 22 of sets HERAPDF20_NNLO_EIG +LHE, id = 915, group = HERAPDF20_NNLO_EIG, Member 23 of sets HERAPDF20_NNLO_EIG +LHE, id = 916, group = HERAPDF20_NNLO_EIG, Member 24 of sets HERAPDF20_NNLO_EIG +LHE, id = 917, group = HERAPDF20_NNLO_EIG, Member 25 of sets HERAPDF20_NNLO_EIG +LHE, id = 918, group = HERAPDF20_NNLO_EIG, Member 26 of sets HERAPDF20_NNLO_EIG +LHE, id = 919, group = HERAPDF20_NNLO_EIG, Member 27 of sets HERAPDF20_NNLO_EIG +LHE, id = 920, group = HERAPDF20_NNLO_EIG, Member 28 of sets HERAPDF20_NNLO_EIG +LHE, id = 921, group = HERAPDF20_NNLO_VAR, Member 0 of sets HERAPDF20_NNLO_VAR +LHE, id = 922, group = HERAPDF20_NNLO_VAR, Member 1 of sets HERAPDF20_NNLO_VAR +LHE, id = 923, group = HERAPDF20_NNLO_VAR, Member 2 of sets HERAPDF20_NNLO_VAR +LHE, id = 924, group = HERAPDF20_NNLO_VAR, Member 3 of sets HERAPDF20_NNLO_VAR +LHE, id = 925, group = HERAPDF20_NNLO_VAR, Member 4 of sets HERAPDF20_NNLO_VAR +LHE, id = 926, group = HERAPDF20_NNLO_VAR, Member 5 of sets HERAPDF20_NNLO_VAR +LHE, id = 927, group = HERAPDF20_NNLO_VAR, Member 6 of sets HERAPDF20_NNLO_VAR +LHE, id = 928, group = HERAPDF20_NNLO_VAR, Member 7 of sets HERAPDF20_NNLO_VAR +LHE, id = 929, group = HERAPDF20_NNLO_VAR, Member 8 of sets HERAPDF20_NNLO_VAR +LHE, id = 930, group = HERAPDF20_NNLO_VAR, Member 9 of sets HERAPDF20_NNLO_VAR +LHE, id = 931, group = HERAPDF20_NNLO_VAR, Member 10 of sets HERAPDF20_NNLO_VAR +LHE, id = 932, group = HERAPDF20_NNLO_VAR, Member 11 of sets HERAPDF20_NNLO_VAR +LHE, id = 933, group = HERAPDF20_NNLO_VAR, Member 12 of sets HERAPDF20_NNLO_VAR +LHE, id = 934, group = HERAPDF20_NNLO_VAR, Member 13 of sets HERAPDF20_NNLO_VAR +LHE, id = 935, group = CT14qed_inc_proton, Member 0 of sets CT14qed_inc_proton +LHE, id = 936, group = CT14qed_inc_proton, Member 1 of sets CT14qed_inc_proton +LHE, id = 937, group = CT14qed_inc_proton, Member 2 of sets CT14qed_inc_proton +LHE, id = 938, group = CT14qed_inc_proton, Member 3 of sets CT14qed_inc_proton +LHE, id = 939, group = CT14qed_inc_proton, Member 4 of sets CT14qed_inc_proton +LHE, id = 940, group = CT14qed_inc_proton, Member 5 of sets CT14qed_inc_proton +LHE, id = 941, group = CT14qed_inc_proton, Member 6 of sets CT14qed_inc_proton +LHE, id = 942, group = CT14qed_inc_proton, Member 7 of sets CT14qed_inc_proton +LHE, id = 943, group = CT14qed_inc_proton, Member 8 of sets CT14qed_inc_proton +LHE, id = 944, group = CT14qed_inc_proton, Member 9 of sets CT14qed_inc_proton +LHE, id = 945, group = CT14qed_inc_proton, Member 10 of sets CT14qed_inc_proton +LHE, id = 946, group = CT14qed_inc_proton, Member 11 of sets CT14qed_inc_proton +LHE, id = 947, group = CT14qed_inc_proton, Member 12 of sets CT14qed_inc_proton +LHE, id = 948, group = CT14qed_inc_proton, Member 13 of sets CT14qed_inc_proton +LHE, id = 949, group = CT14qed_inc_proton, Member 14 of sets CT14qed_inc_proton +LHE, id = 950, group = CT14qed_inc_proton, Member 15 of sets CT14qed_inc_proton +LHE, id = 951, group = CT14qed_inc_proton, Member 16 of sets CT14qed_inc_proton +LHE, id = 952, group = CT14qed_inc_proton, Member 17 of sets CT14qed_inc_proton +LHE, id = 953, group = CT14qed_inc_proton, Member 18 of sets CT14qed_inc_proton +LHE, id = 954, group = CT14qed_inc_proton, Member 19 of sets CT14qed_inc_proton +LHE, id = 955, group = CT14qed_inc_proton, Member 20 of sets CT14qed_inc_proton +LHE, id = 956, group = CT14qed_inc_proton, Member 21 of sets CT14qed_inc_proton +LHE, id = 957, group = CT14qed_inc_proton, Member 22 of sets CT14qed_inc_proton +LHE, id = 958, group = CT14qed_inc_proton, Member 23 of sets CT14qed_inc_proton +LHE, id = 959, group = CT14qed_inc_proton, Member 24 of sets CT14qed_inc_proton +LHE, id = 960, group = CT14qed_inc_proton, Member 25 of sets CT14qed_inc_proton +LHE, id = 961, group = CT14qed_inc_proton, Member 26 of sets CT14qed_inc_proton +LHE, id = 962, group = CT14qed_inc_proton, Member 27 of sets CT14qed_inc_proton +LHE, id = 963, group = CT14qed_inc_proton, Member 28 of sets CT14qed_inc_proton +LHE, id = 964, group = CT14qed_inc_proton, Member 29 of sets CT14qed_inc_proton +LHE, id = 965, group = CT14qed_inc_proton, Member 30 of sets CT14qed_inc_proton +LHE, id = 966, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 0 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 967, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 1 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 968, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 2 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 969, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 3 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 970, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 4 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 971, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 5 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 972, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 6 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 973, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 7 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 974, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 8 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 975, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 9 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 976, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 10 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 977, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 11 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 978, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 12 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 979, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 13 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 980, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 14 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 981, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 15 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 982, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 16 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 983, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 17 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 984, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 18 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 985, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 19 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 986, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 20 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 987, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 21 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 988, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 22 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 989, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 23 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 990, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 24 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 991, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 25 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 992, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 26 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 993, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 27 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 994, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 28 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 995, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 29 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 996, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 30 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 997, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 31 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 998, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 32 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 999, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 33 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1000, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 34 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1001, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 35 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1002, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 36 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1003, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 37 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1004, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 38 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1005, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 39 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1006, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 40 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1007, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 41 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1008, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 42 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1009, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 43 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1010, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 44 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1011, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 45 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1012, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 46 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1013, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 47 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1014, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 48 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1015, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 49 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1016, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 50 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1017, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 51 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1018, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 52 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1019, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 53 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1020, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 54 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1021, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 55 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1022, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 56 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1023, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 57 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1024, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 58 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1025, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 59 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1026, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 60 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1027, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 61 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1028, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 62 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1029, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 63 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1030, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 64 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1031, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 65 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1032, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 66 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1033, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 67 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1034, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 68 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1035, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 69 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1036, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 70 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1037, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 71 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1038, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 72 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1039, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 73 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1040, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 74 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1041, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 75 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1042, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 76 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1043, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 77 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1044, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 78 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1045, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 79 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1046, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 80 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1047, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 81 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1048, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 82 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1049, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 83 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1050, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 84 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1051, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 85 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1052, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 86 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1053, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 87 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1054, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 88 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1055, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 89 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1056, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 90 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1057, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 91 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1058, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 92 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1059, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 93 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1060, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 94 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1061, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 95 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1062, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 96 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1063, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 97 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1064, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 98 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1065, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 99 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1066, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 100 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1067, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 101 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1068, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 102 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1069, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 103 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1070, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 104 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1071, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 105 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1072, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 106 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1073, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 107 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 +LHE, id = 1074, group = NNPDF30_nlo_nf_5_pdfas, Member 0 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1075, group = NNPDF30_nlo_nf_5_pdfas, Member 1 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1076, group = NNPDF30_nlo_nf_5_pdfas, Member 2 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1077, group = NNPDF30_nlo_nf_5_pdfas, Member 3 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1078, group = NNPDF30_nlo_nf_5_pdfas, Member 4 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1079, group = NNPDF30_nlo_nf_5_pdfas, Member 5 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1080, group = NNPDF30_nlo_nf_5_pdfas, Member 6 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1081, group = NNPDF30_nlo_nf_5_pdfas, Member 7 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1082, group = NNPDF30_nlo_nf_5_pdfas, Member 8 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1083, group = NNPDF30_nlo_nf_5_pdfas, Member 9 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1084, group = NNPDF30_nlo_nf_5_pdfas, Member 10 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1085, group = NNPDF30_nlo_nf_5_pdfas, Member 11 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1086, group = NNPDF30_nlo_nf_5_pdfas, Member 12 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1087, group = NNPDF30_nlo_nf_5_pdfas, Member 13 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1088, group = NNPDF30_nlo_nf_5_pdfas, Member 14 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1089, group = NNPDF30_nlo_nf_5_pdfas, Member 15 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1090, group = NNPDF30_nlo_nf_5_pdfas, Member 16 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1091, group = NNPDF30_nlo_nf_5_pdfas, Member 17 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1092, group = NNPDF30_nlo_nf_5_pdfas, Member 18 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1093, group = NNPDF30_nlo_nf_5_pdfas, Member 19 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1094, group = NNPDF30_nlo_nf_5_pdfas, Member 20 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1095, group = NNPDF30_nlo_nf_5_pdfas, Member 21 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1096, group = NNPDF30_nlo_nf_5_pdfas, Member 22 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1097, group = NNPDF30_nlo_nf_5_pdfas, Member 23 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1098, group = NNPDF30_nlo_nf_5_pdfas, Member 24 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1099, group = NNPDF30_nlo_nf_5_pdfas, Member 25 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1100, group = NNPDF30_nlo_nf_5_pdfas, Member 26 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1101, group = NNPDF30_nlo_nf_5_pdfas, Member 27 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1102, group = NNPDF30_nlo_nf_5_pdfas, Member 28 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1103, group = NNPDF30_nlo_nf_5_pdfas, Member 29 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1104, group = NNPDF30_nlo_nf_5_pdfas, Member 30 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1105, group = NNPDF30_nlo_nf_5_pdfas, Member 31 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1106, group = NNPDF30_nlo_nf_5_pdfas, Member 32 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1107, group = NNPDF30_nlo_nf_5_pdfas, Member 33 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1108, group = NNPDF30_nlo_nf_5_pdfas, Member 34 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1109, group = NNPDF30_nlo_nf_5_pdfas, Member 35 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1110, group = NNPDF30_nlo_nf_5_pdfas, Member 36 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1111, group = NNPDF30_nlo_nf_5_pdfas, Member 37 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1112, group = NNPDF30_nlo_nf_5_pdfas, Member 38 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1113, group = NNPDF30_nlo_nf_5_pdfas, Member 39 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1114, group = NNPDF30_nlo_nf_5_pdfas, Member 40 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1115, group = NNPDF30_nlo_nf_5_pdfas, Member 41 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1116, group = NNPDF30_nlo_nf_5_pdfas, Member 42 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1117, group = NNPDF30_nlo_nf_5_pdfas, Member 43 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1118, group = NNPDF30_nlo_nf_5_pdfas, Member 44 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1119, group = NNPDF30_nlo_nf_5_pdfas, Member 45 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1120, group = NNPDF30_nlo_nf_5_pdfas, Member 46 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1121, group = NNPDF30_nlo_nf_5_pdfas, Member 47 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1122, group = NNPDF30_nlo_nf_5_pdfas, Member 48 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1123, group = NNPDF30_nlo_nf_5_pdfas, Member 49 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1124, group = NNPDF30_nlo_nf_5_pdfas, Member 50 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1125, group = NNPDF30_nlo_nf_5_pdfas, Member 51 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1126, group = NNPDF30_nlo_nf_5_pdfas, Member 52 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1127, group = NNPDF30_nlo_nf_5_pdfas, Member 53 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1128, group = NNPDF30_nlo_nf_5_pdfas, Member 54 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1129, group = NNPDF30_nlo_nf_5_pdfas, Member 55 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1130, group = NNPDF30_nlo_nf_5_pdfas, Member 56 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1131, group = NNPDF30_nlo_nf_5_pdfas, Member 57 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1132, group = NNPDF30_nlo_nf_5_pdfas, Member 58 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1133, group = NNPDF30_nlo_nf_5_pdfas, Member 59 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1134, group = NNPDF30_nlo_nf_5_pdfas, Member 60 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1135, group = NNPDF30_nlo_nf_5_pdfas, Member 61 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1136, group = NNPDF30_nlo_nf_5_pdfas, Member 62 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1137, group = NNPDF30_nlo_nf_5_pdfas, Member 63 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1138, group = NNPDF30_nlo_nf_5_pdfas, Member 64 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1139, group = NNPDF30_nlo_nf_5_pdfas, Member 65 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1140, group = NNPDF30_nlo_nf_5_pdfas, Member 66 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1141, group = NNPDF30_nlo_nf_5_pdfas, Member 67 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1142, group = NNPDF30_nlo_nf_5_pdfas, Member 68 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1143, group = NNPDF30_nlo_nf_5_pdfas, Member 69 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1144, group = NNPDF30_nlo_nf_5_pdfas, Member 70 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1145, group = NNPDF30_nlo_nf_5_pdfas, Member 71 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1146, group = NNPDF30_nlo_nf_5_pdfas, Member 72 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1147, group = NNPDF30_nlo_nf_5_pdfas, Member 73 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1148, group = NNPDF30_nlo_nf_5_pdfas, Member 74 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1149, group = NNPDF30_nlo_nf_5_pdfas, Member 75 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1150, group = NNPDF30_nlo_nf_5_pdfas, Member 76 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1151, group = NNPDF30_nlo_nf_5_pdfas, Member 77 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1152, group = NNPDF30_nlo_nf_5_pdfas, Member 78 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1153, group = NNPDF30_nlo_nf_5_pdfas, Member 79 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1154, group = NNPDF30_nlo_nf_5_pdfas, Member 80 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1155, group = NNPDF30_nlo_nf_5_pdfas, Member 81 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1156, group = NNPDF30_nlo_nf_5_pdfas, Member 82 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1157, group = NNPDF30_nlo_nf_5_pdfas, Member 83 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1158, group = NNPDF30_nlo_nf_5_pdfas, Member 84 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1159, group = NNPDF30_nlo_nf_5_pdfas, Member 85 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1160, group = NNPDF30_nlo_nf_5_pdfas, Member 86 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1161, group = NNPDF30_nlo_nf_5_pdfas, Member 87 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1162, group = NNPDF30_nlo_nf_5_pdfas, Member 88 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1163, group = NNPDF30_nlo_nf_5_pdfas, Member 89 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1164, group = NNPDF30_nlo_nf_5_pdfas, Member 90 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1165, group = NNPDF30_nlo_nf_5_pdfas, Member 91 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1166, group = NNPDF30_nlo_nf_5_pdfas, Member 92 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1167, group = NNPDF30_nlo_nf_5_pdfas, Member 93 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1168, group = NNPDF30_nlo_nf_5_pdfas, Member 94 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1169, group = NNPDF30_nlo_nf_5_pdfas, Member 95 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1170, group = NNPDF30_nlo_nf_5_pdfas, Member 96 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1171, group = NNPDF30_nlo_nf_5_pdfas, Member 97 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1172, group = NNPDF30_nlo_nf_5_pdfas, Member 98 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1173, group = NNPDF30_nlo_nf_5_pdfas, Member 99 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1174, group = NNPDF30_nlo_nf_5_pdfas, Member 100 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1175, group = NNPDF30_nlo_nf_5_pdfas, Member 101 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1176, group = NNPDF30_nlo_nf_5_pdfas, Member 102 of sets NNPDF30_nlo_nf_5_pdfas +LHE, id = 1177, group = NNPDF30_nnlo_nf_5_pdfas, Member 0 of sets NNPDF30_nnlo_nf_5_pdfas +LHE, id = 1178, group = NNPDF31_lo_as_0118, Member 0 of sets NNPDF31_lo_as_0118 +LHE, id = 1179, group = NNPDF30_lo_as_0118, Member 0 of sets NNPDF30_lo_as_0118 +LHE, id = 1180, group = NNPDF30_lo_as_0130, Member 0 of sets NNPDF30_lo_as_0130 +Baseline +isrRedHi +fsrRedHi +isrRedLo +fsrRedLo +isrDefHi +fsrDefHi +isrDefLo +fsrDefLo +isrConHi +fsrConHi +isrConLo +fsrConLo +fsr_G2GG_muR_dn +fsr_G2GG_muR_up +fsr_G2QQ_muR_dn +fsr_G2QQ_muR_up +fsr_Q2QG_muR_dn +fsr_Q2QG_muR_up +fsr_X2XG_muR_dn +fsr_X2XG_muR_up +fsr_G2GG_cNS_dn +fsr_G2GG_cNS_up +fsr_G2QQ_cNS_dn +fsr_G2QQ_cNS_up +fsr_Q2QG_cNS_dn +fsr_Q2QG_cNS_up +fsr_X2XG_cNS_dn +fsr_X2XG_cNS_up +isr_G2GG_muR_dn +isr_G2GG_muR_up +isr_G2QQ_muR_dn +isr_G2QQ_muR_up +isr_Q2QG_muR_dn +isr_Q2QG_muR_up +isr_X2XG_muR_dn +isr_X2XG_muR_up +isr_G2GG_cNS_dn +isr_G2GG_cNS_up +isr_G2QQ_cNS_dn +isr_G2QQ_cNS_up +isr_Q2QG_cNS_dn +isr_Q2QG_cNS_up +isr_X2XG_cNS_dn +isr_X2XG_cNS_up From 10d5cec23e5e849e15d7288bc1ada8cdef89e770 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 20 May 2020 20:05:31 +0200 Subject: [PATCH 085/186] Add script to test which weights are in Nano --- PhysicsTools/NanoAOD/test/testNanoWeights.py | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 PhysicsTools/NanoAOD/test/testNanoWeights.py diff --git a/PhysicsTools/NanoAOD/test/testNanoWeights.py b/PhysicsTools/NanoAOD/test/testNanoWeights.py new file mode 100644 index 0000000000000..b6f5f209f4fa2 --- /dev/null +++ b/PhysicsTools/NanoAOD/test/testNanoWeights.py @@ -0,0 +1,29 @@ +import ROOT +import argparse + +def variableAndNumber(varName, tree): + countVar = "n"+varName + if not hasattr(tree, varName): + print("No variable %s found in file" % varName) + else: + count = getattr(tree, countVar) + var = getattr(tree, varName) + print("Found %i entries of %s in file" % (count, varName)) + +parser = argparse.ArgumentParser() +parser.add_argument('inputFile', type=str, help='NanoAOD file to process') +args = parser.parse_args() + +rtfile = ROOT.TFile(args.inputFile) +tree = rtfile.Get("Events") +tree.GetEntry(0) +variables = ["LHEScaleWeight", "LHEPdfWeight", "LHEUnknownWeight", "GENPartonShower", "LHEMEParamWeight"] + +for varName in variables: + variableAndNumber(varName, tree) + i = 1 + altName = varName + "AltSet%i" % i + while hasattr(tree, altName): + variableAndNumber(altName, tree) + i = i+1 + altName = varName + "AltSet%i" % i From 07b777dce2d7dcdb1089b394e4079f104fc72d9c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 20 May 2020 20:09:18 +0200 Subject: [PATCH 086/186] Fix PS weight name in test script --- PhysicsTools/NanoAOD/test/testNanoWeights.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/test/testNanoWeights.py b/PhysicsTools/NanoAOD/test/testNanoWeights.py index b6f5f209f4fa2..ac4c3375300fa 100644 --- a/PhysicsTools/NanoAOD/test/testNanoWeights.py +++ b/PhysicsTools/NanoAOD/test/testNanoWeights.py @@ -17,7 +17,7 @@ def variableAndNumber(varName, tree): rtfile = ROOT.TFile(args.inputFile) tree = rtfile.Get("Events") tree.GetEntry(0) -variables = ["LHEScaleWeight", "LHEPdfWeight", "LHEUnknownWeight", "GENPartonShower", "LHEMEParamWeight"] +variables = ["LHEScaleWeight", "LHEPdfWeight", "LHEUnknownWeight", "GenPartonShowerWeight", "LHEMEParamWeight"] for varName in variables: variableAndNumber(varName, tree) From e663e72aed93df39cae312e38141570d2a8b5c9b Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 21 May 2020 13:03:34 +0200 Subject: [PATCH 087/186] Fix parsing issue with pdfweights in certain files those files being "DrellYan_LO_MGMLMv233_2016_weightInfo.txt" and "DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt", --- GeneratorInterface/Core/src/LHEWeightHelper.cc | 4 ++++ GeneratorInterface/Core/src/WeightHelper.cc | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 7d24fa34cdfbd..95200d90be852 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -60,6 +60,10 @@ namespace gen { if (groupName.empty()) { throw std::runtime_error("couldn't find groupname"); } + // May remove this, very specific error + if (groupName.find(".") != std::string::npos) + groupName.erase(groupName.find("."), groupName.size()); + for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; inner = inner->NextSiblingElement("weight")) { // we are here if there is a weight in a weightgroup diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index b5f6692b8e57a..c484ee7debe20 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -43,6 +43,7 @@ namespace gen { return true; } } catch (...) { + return false; } return false; } @@ -71,7 +72,7 @@ namespace gen { auto& content = weight.content; std::smatch match; for (const auto& lab : attributeNames_.at(label)) { - std::regex expr(lab + "\\s?=\\s?([0-9.]+(?:[eE][+-]?[0-9]+)?)"); + std::regex expr(lab + "\\s?=\\s*([0-9.]+(?:[eE][+-]?[0-9]+)?)"); if (std::regex_search(content, match, expr)) { return boost::algorithm::trim_copy(match.str(1)); } @@ -116,8 +117,17 @@ namespace gen { return; } updatePdfInfo(lhaid, weight.index); - } else + } else { + //auto& pdfGroup = dynamic_cast(group); + std::string groupName = group.headerEntry(); + auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [groupName](const PdfSetInfo& setInfo) { + return setInfo.name == groupName; + }); + lhaid = pdfInfo->lhapdfId + weight.index - group.firstId(); + updatePdfInfo(lhaid, weight.index); + // debateable if we want to call it "wellformed" group.setIsWellFormed(false); + } } void WeightHelper::updatePdfInfo(int lhaid, int index) { From b3a0c6c5d84b36e3dfa86567fff2989a61f12879 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 21 May 2020 15:59:54 +0200 Subject: [PATCH 088/186] Remove PdfSetInfo in favor of LHAPDF library --- .../Core/interface/WeightHelper.h | 8 ---- GeneratorInterface/Core/src/WeightHelper.cc | 47 +++++-------------- .../interface/WeightGroupInfo.h | 5 +- 3 files changed, 15 insertions(+), 45 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 5a162121148a2..f445cacac24e4 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -16,12 +16,6 @@ #include namespace gen { - struct PdfSetInfo { - std::string name; - int lhapdfId; - PdfUncertaintyType uncertaintyType; - }; - struct ParsedWeight { std::string id; size_t index; @@ -45,7 +39,6 @@ namespace gen { protected: std::string model_; std::vector parsedWeights_; - const std::vector pdfSetsInfo; std::map currWeightAttributeMap_; std::map currGroupAttributeMap_; edm::OwnVector weightGroups_; @@ -58,7 +51,6 @@ namespace gen { void updatePdfInfo(const ParsedWeight& weight); void updatePdfInfo(int lhaid, int index); void splitPdfGroups(); - std::vector setupPdfSetsInfo(); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index c484ee7debe20..dcd57462160f9 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -2,20 +2,7 @@ #include namespace gen { - WeightHelper::WeightHelper() : pdfSetsInfo(setupPdfSetsInfo()) { model_ = ""; } - - std::vector WeightHelper::setupPdfSetsInfo() { - std::vector tmpSetsInfo; - std::string lhapdf_path = std::getenv("LHAPDF_DATA_PATH"); - std::ifstream pdf_file; - pdf_file.open(lhapdf_path + "/pdfsets.index"); - int lha_set, dummy; - std::string lha_name; - while (pdf_file >> lha_set >> lha_name >> dummy) { - tmpSetsInfo.push_back({lha_name, lha_set, kUnknownUnc}); - } - return tmpSetsInfo; - } + WeightHelper::WeightHelper() { model_ = ""; } bool WeightHelper::isScaleWeightGroup(const ParsedWeight& weight) { return (weight.groupname.find("scale_variation") != std::string::npos || @@ -24,12 +11,10 @@ namespace gen { bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { const std::string& name = weight.groupname; + if (name.find("PDF_variation") != std::string::npos) return true; - - return std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [name](const PdfSetInfo& setInfo) { - return setInfo.name == name; - }) != pdfSetsInfo.end(); + return LHAPDF::lookupLHAPDFID(name) != -1; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { @@ -120,10 +105,7 @@ namespace gen { } else { //auto& pdfGroup = dynamic_cast(group); std::string groupName = group.headerEntry(); - auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [groupName](const PdfSetInfo& setInfo) { - return setInfo.name == groupName; - }); - lhaid = pdfInfo->lhapdfId + weight.index - group.firstId(); + lhaid = LHAPDF::lookupLHAPDFID(groupName) + weight.index - group.firstId(); updatePdfInfo(lhaid, weight.index); // debateable if we want to call it "wellformed" group.setIsWellFormed(false); @@ -134,19 +116,14 @@ namespace gen { auto& pdfGroup = dynamic_cast(weightGroups_.back()); if (!pdfGroup.containsParentLhapdfId(lhaid)) { std::string description = ""; - auto pdfInfo = std::find_if(pdfSetsInfo.begin(), pdfSetsInfo.end(), [lhaid](const PdfSetInfo& setInfo) { - return setInfo.lhapdfId == lhaid; - }); - if (pdfInfo != pdfSetsInfo.end()) { - pdfGroup.setUncertaintyType(pdfInfo->uncertaintyType); - if (pdfInfo->uncertaintyType == gen::kHessianUnc) - description += "Hessian "; - else if (pdfInfo->uncertaintyType == gen::kMonteCarloUnc) - description += "Monte Carlo "; - description += "Uncertainty sets for LHAPDF set " + pdfInfo->name; - description += " with LHAID = " + std::to_string(lhaid); - description += "; "; - } + pdfGroup.setUncertaintyType(gen::kUnknownUnc); + if (pdfGroup.uncertaintyType() == gen::kHessianUnc) + description += "Hessian "; + else if (pdfGroup.uncertaintyType() == gen::kMonteCarloUnc) + description += "Monte Carlo "; + description += "Uncertainty sets for LHAPDF set " + LHAPDF::lookupPDF(lhaid).first; + description += " with LHAID = " + std::to_string(lhaid); + description += "; "; //else // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); pdfGroup.addLhapdfId(lhaid, index); diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index f404a87926585..1c9eb2c2c1ab7 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -42,8 +42,9 @@ namespace gen { public: WeightGroupInfo() : WeightGroupInfo("") {} WeightGroupInfo(std::string header, std::string name) - : headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(std::string header) : headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} + : isWellFormed_(true), headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} + WeightGroupInfo(std::string header) + : isWellFormed_(true), headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} WeightGroupInfo(const WeightGroupInfo& other) { copy(other); } WeightGroupInfo& operator=(const WeightGroupInfo& other) { copy(other); From f8a67effd8866d1ba875093b71f8285c9447150b Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 21 May 2020 22:56:53 +0200 Subject: [PATCH 089/186] Refactor pdfweight so pdfweights are always split May put flags needed for the splitting. Only impliemented in LHEWeightHelper --- .../Core/interface/WeightHelper.h | 3 +- .../Core/src/LHEWeightHelper.cc | 11 ++- GeneratorInterface/Core/src/WeightHelper.cc | 87 +++++-------------- .../interface/PdfWeightGroupInfo.h | 73 +++------------- .../src/PdfWeightGroupInfo.cc | 2 +- 5 files changed, 44 insertions(+), 132 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index f445cacac24e4..fc5653db71de0 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -46,11 +46,10 @@ namespace gen { bool isMEParamWeightGroup(const ParsedWeight& weight); bool isPdfWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); - bool isMultiSetPdfGroup(WeightGroupInfo& group); void updateScaleInfo(const ParsedWeight& weight); void updatePdfInfo(const ParsedWeight& weight); - void updatePdfInfo(int lhaid, int index); void splitPdfGroups(); + int getLhapdfId(const ParsedWeight& weight); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 95200d90be852..5e9e4306cb825 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -134,15 +134,22 @@ namespace gen { currentGroupIdx = weight.wgtGroup_idx; } + // split PDF groups + if (weightGroups_.back().weightType() == gen::WeightType::kPdfWeights) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); + int lhaid = getLhapdfId(weight); + if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { + weightGroups_.push_back(*buildGroup(weight)); + } + } WeightGroupInfo& group = weightGroups_.back(); - group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) updateScaleInfo(weight); else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(weight); } - splitPdfGroups(); + //splitPdfGroups(); // checks for (auto& wgt : weightGroups_) { if (!wgt.isWellFormed()) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index dcd57462160f9..f7d588b23f931 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -90,43 +90,42 @@ namespace gen { } } - void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { - auto& group = weightGroups_.back(); + int WeightHelper::getLhapdfId(const ParsedWeight& weight) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); std::string lhaidText = searchAttributes("pdf", weight); - int lhaid = 0; if (!lhaidText.empty()) { try { - lhaid = std::stoi(lhaidText); + return std::stoi(lhaidText); } catch (std::invalid_argument& e) { - group.setIsWellFormed(false); - return; + pdfGroup.setIsWellFormed(false); } - updatePdfInfo(lhaid, weight.index); + } else if (pdfGroup.getLhaIds().size() > 0) { + return pdfGroup.getLhaIds().back() + 1; } else { - //auto& pdfGroup = dynamic_cast(group); - std::string groupName = group.headerEntry(); - lhaid = LHAPDF::lookupLHAPDFID(groupName) + weight.index - group.firstId(); - updatePdfInfo(lhaid, weight.index); - // debateable if we want to call it "wellformed" - group.setIsWellFormed(false); + return LHAPDF::lookupLHAPDFID(weight.groupname); } + return -1; } - - void WeightHelper::updatePdfInfo(int lhaid, int index) { + void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { auto& pdfGroup = dynamic_cast(weightGroups_.back()); - if (!pdfGroup.containsParentLhapdfId(lhaid)) { - std::string description = ""; + int lhaid = getLhapdfId(weight); + pdfGroup.addLhaid(lhaid); + + if (pdfGroup.getParentLhapdfId() < 0) { + int parentId = lhaid - LHAPDF::lookupPDF(lhaid).second; + pdfGroup.setParentLhapdfId(parentId); pdfGroup.setUncertaintyType(gen::kUnknownUnc); + //pdfGroup.setName(LHAPDF::lookupPDF(parentId).first); + + std::string description = ""; if (pdfGroup.uncertaintyType() == gen::kHessianUnc) description += "Hessian "; else if (pdfGroup.uncertaintyType() == gen::kMonteCarloUnc) description += "Monte Carlo "; - description += "Uncertainty sets for LHAPDF set " + LHAPDF::lookupPDF(lhaid).first; - description += " with LHAID = " + std::to_string(lhaid); + description += "Uncertainty sets for LHAPDF set " + LHAPDF::lookupPDF(parentId).first; + description += " with LHAID = " + std::to_string(parentId); description += "; "; - //else - // description += "Uncertainty sets for LHAPDF set with LHAID = " + std::to_string(lhaid); - pdfGroup.addLhapdfId(lhaid, index); + pdfGroup.appendDescription(description); } } @@ -142,50 +141,6 @@ namespace gen { return std::move(weightProduct); } - bool WeightHelper::isMultiSetPdfGroup(WeightGroupInfo& group) { - if (group.weightType() == gen::WeightType::kPdfWeights) { - gen::PdfWeightGroupInfo& pdfGroup = dynamic_cast(group); - if (pdfGroup.containsMultipleSets()) { - return true; - } - } - return false; - } - - void WeightHelper::splitPdfGroups() { - std::vector groupsToSplit; - for (auto& group : weightGroups_) { - if (isMultiSetPdfGroup(group)) { - groupsToSplit.push_back(dynamic_cast(group)); - } - } - weightGroups_.erase(std::remove_if(weightGroups_.begin(), - weightGroups_.end(), - [this](auto& group) { return this->isMultiSetPdfGroup(group); }), - weightGroups_.end()); - - // Actually split groups - for (auto parentGroup : groupsToSplit) { - int currentPdfParent = -1; - std::vector firstLhapdfIds = parentGroup.lhapdfIdsContained(); - std::sort(firstLhapdfIds.begin(), firstLhapdfIds.end(), std::greater()); - int parentFirstId = parentGroup.firstId(); - for (auto& metaInfo : parentGroup.containedIds()) { - if (firstLhapdfIds.back() == (int)(metaInfo.globalIndex - parentFirstId)) { - currentPdfParent = parentGroup.getLHAPDFidFromIdx(firstLhapdfIds.back()); - firstLhapdfIds.pop_back(); - std::string groupName = LHAPDF::lookupPDF(currentPdfParent).first; - weightGroups_.push_back(*std::make_unique(groupName)); - } - WeightGroupInfo& childGroup = weightGroups_.back(); - - childGroup.addContainedId(metaInfo.globalIndex, metaInfo.id, metaInfo.label); - int lhaid = currentPdfParent + (metaInfo.globalIndex - childGroup.firstId()); - updatePdfInfo(lhaid, metaInfo.globalIndex); - } - } - } - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); weightProduct->setNumWeightSets(weightGroups_.size()); diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 626f1ab2297b4..f2a414b0551ca 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -21,8 +21,9 @@ namespace gen { bool hasAlphasVars_; int alphasUpIndex_; int alphasDownIndex_; - // Map local index to lhaid - std::unordered_map lhapdfIdsContained_; + int parentLhapdfId_ = -1; + std::vector lhaids; + int parentLhapdfId(int lhaid) const { return lhaid - LHAPDF::lookupPDF(lhaid).second; } public: PdfWeightGroupInfo() : WeightGroupInfo() { weightType_ = WeightType::kPdfWeights; } @@ -35,74 +36,24 @@ namespace gen { void copy(const PdfWeightGroupInfo& other); virtual PdfWeightGroupInfo* clone() const override; - std::unordered_map getLHAPDFids() { return lhapdfIdsContained_; } - int getLHAPDFidFromIdx(int idx) const { return lhapdfIdsContained_.at(idx); } void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } void setAlphasUpIndex(int alphasUpIndex) { alphasUpIndex_ = alphasUpIndex; } void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } - std::vector idsContainedInPdfSet(int refLhaid) { - std::vector setIds; - int lhaid = refLhaid; - int index = indexOfLhapdfId(lhaid); - while (index <= lastId_ && parentLhapdfId(lhaid) == refLhaid) { - setIds.push_back(idsContained_.at(index)); - index++; - lhaid = lhapdfIdsContained_[index]; - } - return setIds; - } - bool containsMultipleSets() const { return lhapdfIdsContained_.size() > 1; } - int parentLhapdfId(int lhaid) const { return lhaid - LHAPDF::lookupPDF(lhaid).second; } - bool containsParentLhapdfId(int lhaid) const { - if (indexOfLhapdfId(lhaid) != -1) - return true; + void addLhaid(int lhaid) { lhaids.push_back(lhaid); } + std::vector& getLhaIds() { return lhaids; } + + bool isIdInParentSet(int lhaid) const { return parentLhapdfId_ == parentLhapdfId(lhaid); } + int getParentLhapdfId() const { return parentLhapdfId_; } + void setParentLhapdfId(int lhaid) { parentLhapdfId_ = lhaid; } + + // need to remove + bool containsLhapdfId(int lhaid) const { return isIdInParentSet(lhaid); } - return indexOfLhapdfId(parentLhapdfId(lhaid)) != -1; - } - bool containsLhapdfId(int lhaid) const { return indexOfLhapdfId(lhaid) != -1; } - int indexOfLhapdfId(int lhaid) const { - for (const auto& id : lhapdfIdsContained_) { - if (id.second == lhaid) - return id.first; - } - return -1; - } int alphasUpIndex() const { return alphasUpIndex_; } int alphasDownIndex() const { return alphasDownIndex_; } - void addLhapdfId(int lhaid, int globalIndex) { lhapdfIdsContained_[globalIndex - firstId_] = lhaid; } - std::vector lhapdfIdsContained() const { - std::vector lhaids; - for (const auto& id : lhapdfIdsContained_) { - lhaids.push_back(id.first); - } - return lhaids; - } - void removeIdsContained(std::vector metaInfos) { - for (auto& weight : metaInfos) { - auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); - if (info == weight) { - idsContained_.erase(idsContained_.begin() + weight.localIndex, idsContained_.begin() + weight.localIndex + 1); - lhapdfIdsContained_.erase(weight.localIndex); - } - } - } - void removeIdsContainedExcept(std::vector metaInfos) { - std::vector newContainedIds; - std::unordered_map newLhapdfIds; - for (auto& weight : metaInfos) { - auto info = weightMetaInfoByGlobalIndex(weight.id, weight.globalIndex); - if (info == weight) { - newContainedIds.push_back(weight); - if (lhapdfIdsContained_.find(weight.localIndex) != lhapdfIdsContained_.end()) - newLhapdfIds[weight.localIndex] = lhapdfIdsContained_[weight.localIndex]; - } - } - idsContained_ = newContainedIds; - lhapdfIdsContained_ = newLhapdfIds; - } }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 17a106b578932..206f3d0fe89fb 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -6,7 +6,7 @@ namespace gen { hasAlphasVars_ = other.hasAlphasVariations(); alphasUpIndex_ = other.alphasDownIndex(); alphasDownIndex_ = other.alphasDownIndex(); - lhapdfIdsContained_ = other.lhapdfIdsContained_; + parentLhapdfId_ = other.getParentLhapdfId(); WeightGroupInfo::copy(other); } From 41ede97e9f8b34ae99d31553edb297cb8570bcf9 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 21 May 2020 23:04:30 +0200 Subject: [PATCH 090/186] Print out desciption in test script --- PhysicsTools/NanoAOD/test/testNanoWeights.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/test/testNanoWeights.py b/PhysicsTools/NanoAOD/test/testNanoWeights.py index ac4c3375300fa..8f011be4fc854 100644 --- a/PhysicsTools/NanoAOD/test/testNanoWeights.py +++ b/PhysicsTools/NanoAOD/test/testNanoWeights.py @@ -9,6 +9,8 @@ def variableAndNumber(varName, tree): count = getattr(tree, countVar) var = getattr(tree, varName) print("Found %i entries of %s in file" % (count, varName)) + branch = tree.GetBranch(varName) + print(" --> Desciption:%s" % branch.GetTitle()) parser = argparse.ArgumentParser() parser.add_argument('inputFile', type=str, help='NanoAOD file to process') @@ -17,7 +19,7 @@ def variableAndNumber(varName, tree): rtfile = ROOT.TFile(args.inputFile) tree = rtfile.Get("Events") tree.GetEntry(0) -variables = ["LHEScaleWeight", "LHEPdfWeight", "LHEUnknownWeight", "GenPartonShowerWeight", "LHEMEParamWeight"] +variables = ["LHEScaleWeight", "LHEPdfWeight", "LHEMEParamWeight", "GenPartonShowerWeight", "LHEUnknownWeight", ] for varName in variables: variableAndNumber(varName, tree) From d81c38c28a3c7afe9fa47598c890ce90f810b11e Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 26 May 2020 11:32:33 +0200 Subject: [PATCH 091/186] Simplify ScaleWeight structure in anticipation of dyn weight changes --- .../interface/ScaleWeightGroupInfo.h | 46 +++++++------------ .../src/ScaleWeightGroupInfo.cc | 33 ++----------- 2 files changed, 21 insertions(+), 58 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 9c2c4a3fca9b6..17d80d4af1e14 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -3,40 +3,27 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include +#include namespace gen { class ScaleWeightGroupInfo : public WeightGroupInfo { private: bool isFunctionalFormVar_; - size_t centralIndex_; - size_t muR1muF2Index_; - size_t muR1muF05Index_; - size_t muR2muF05Index_; - size_t muR2muF1Index_; - size_t muR2muF2Index_; - size_t muR05muF05Index_; - size_t muR05muF1Index_; - size_t muR05muF2Index_; + std::vector muIndices_; + // Dyn_scale // bool hasDyn = false; // Maybe have mapping of [muR##muF##index] = vector // std::unordered_map> dynMap; + void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); + inline int getIndex(int muR, int muF) const { return 3 * muR + muF; } + inline bool isValidValue(float mu) const { return mu == 0.5 || mu == 1.0 || mu == 2.0; } public: ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} - ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { + ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name), muIndices_(9) { weightType_ = WeightType::kScaleWeights; isFunctionalFormVar_ = false; - centralIndex_ = 0; - muR1muF2Index_ = 0; - muR1muF05Index_ = 0; - muR2muF05Index_ = 0; - muR2muF1Index_ = 0; - muR2muF2Index_ = 0; - muR2muF05Index_ = 0; - muR05muF05Index_ = 0; - muR05muF1Index_ = 0; - muR05muF2Index_ = 0; } ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) {} ScaleWeightGroupInfo(const ScaleWeightGroupInfo& other) { copy(other); } @@ -44,22 +31,21 @@ namespace gen { void copy(const ScaleWeightGroupInfo& other); virtual ScaleWeightGroupInfo* clone() const override; - void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) { isFunctionalFormVar_ = functionalVar; } - size_t centralIndex() const { return centralIndex_; } - size_t muR1muF2Index() const { return muR1muF2Index_; } - size_t muR1muF05Index() const { return muR1muF05Index_; } - size_t muR2muF05Index() const { return muR2muF05Index_; } - size_t muR2muF1Index() const { return muR2muF1Index_; } - size_t muR2muF2Index() const { return muR2muF2Index_; } - size_t muR05muF05Index() const { return muR05muF05Index_; } - size_t muR05muF1Index() const { return muR05muF1Index_; } - size_t muR05muF2Index() const { return muR05muF2Index_; } + size_t centralIndex() const { return muIndices_.at(4); } + size_t muR1muF2Index() const { return muIndices_.at(5); } + size_t muR1muF05Index() const { return muIndices_.at(3); } + size_t muR2muF05Index() const { return muIndices_.at(6); } + size_t muR2muF1Index() const { return muIndices_.at(7); } + size_t muR2muF2Index() const { return muIndices_.at(8); } + size_t muR05muF05Index() const { return muIndices_.at(0); } + size_t muR05muF1Index() const { return muIndices_.at(1); } + size_t muR05muF2Index() const { return muIndices_.at(2); } }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 3919a22b57c94..bc824b2728405 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -4,15 +4,7 @@ namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo& other) { - centralIndex_ = other.centralIndex_; - muR1muF2Index_ = other.muR1muF2Index_; - muR1muF05Index_ = other.muR1muF05Index_; - muR2muF05Index_ = other.muR2muF05Index_; - muR2muF1Index_ = other.muR2muF1Index_; - muR2muF2Index_ = other.muR2muF2Index_; - muR05muF05Index_ = other.muR2muF05Index_; - muR05muF1Index_ = other.muR05muF1Index_; - muR05muF2Index_ = other.muR05muF2Index_; + muIndices_ = other.muIndices_; WeightGroupInfo::copy(other); } @@ -29,25 +21,10 @@ namespace gen { } void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { - if (muR == 0.5 && muF == 0.5) - muR05muF05Index_ = info.localIndex; - else if (muR == 0.5 && muF == 1.0) - muR05muF1Index_ = info.localIndex; - else if (muR == 0.5 && muF == 2.0) - muR05muF2Index_ = info.localIndex; - else if (muR == 1.0 && muF == 0.5) - muR1muF05Index_ = info.localIndex; - else if (muR == 1.0 && muF == 1.0) - centralIndex_ = info.localIndex; - else if (muR == 1.0 && muF == 2.0) - muR1muF2Index_ = info.localIndex; - else if (muR == 2.0 && muF == 0.5) - muR2muF05Index_ = info.localIndex; - else if (muR == 2.0 && muF == 1.0) - muR2muF1Index_ = info.localIndex; - else if (muR == 2.0 && muF == 2.0) - muR2muF2Index_ = info.localIndex; - else + int index = getIndex(muR, muF); + if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { isWellFormed_ = false; + } + muIndices_[index] = info.localIndex; } } // namespace gen From 5ddf52dc23dfc853af6b755da692a6ec64fffb53 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 26 May 2020 14:43:41 +0200 Subject: [PATCH 092/186] Add dynWeights to scaleWeightInfo. Can improve code (basic refactor) --- .../Core/interface/WeightHelper.h | 4 +- .../Core/src/LHEWeightHelper.cc | 13 ++++ GeneratorInterface/Core/src/WeightHelper.cc | 22 ++++-- .../interface/ScaleWeightGroupInfo.h | 31 ++++++-- .../src/ScaleWeightGroupInfo.cc | 72 ++++++++++++++++++- 5 files changed, 126 insertions(+), 16 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index fc5653db71de0..00d1c976e2d90 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -59,8 +59,8 @@ namespace gen { {"muf", {"muF", "MUF", "muf", "facscfact"}}, {"mur", {"muR", "MUR", "mur", "renscfact"}}, {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}, - //{"dyn", {"DYN_SCALE", "dyn_scale_choice"}}, - }; + {"dyn", {"DYN_SCALE"}}, + {"dyn_name", {"dyn_scale_choice"}}}; }; } // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 5e9e4306cb825..65f1698dfc77c 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -167,6 +167,19 @@ namespace gen { std::cout << wgtScale.muR05muF1Index() << " "; std::cout << wgtScale.muR05muF2Index() << " "; std::cout << wgtScale.muR05muF05Index() << " \n"; + for (auto name : wgtScale.getDynNames()) { + std::cout << name << ": "; + std::cout << wgtScale.getScaleIndex(1.0, 1.0, name) << " "; + std::cout << wgtScale.getScaleIndex(1.0, 2.0, name) << " "; + std::cout << wgtScale.getScaleIndex(1.0, 0.5, name) << " "; + std::cout << wgtScale.getScaleIndex(2.0, 1.0, name) << " "; + std::cout << wgtScale.getScaleIndex(2.0, 2.0, name) << " "; + std::cout << wgtScale.getScaleIndex(2.0, 0.5, name) << " "; + std::cout << wgtScale.getScaleIndex(0.5, 1.0, name) << " "; + std::cout << wgtScale.getScaleIndex(0.5, 2.0, name) << " "; + std::cout << wgtScale.getScaleIndex(0.5, 0.5, name) << "\n"; + } + } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { std::cout << wgt.description() << "\n"; } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index f7d588b23f931..5e7825617596f 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -57,8 +57,11 @@ namespace gen { auto& content = weight.content; std::smatch match; for (const auto& lab : attributeNames_.at(label)) { - std::regex expr(lab + "\\s?=\\s*([0-9.]+(?:[eE][+-]?[0-9]+)?)"); - if (std::regex_search(content, match, expr)) { + std::regex floatExpr(lab + "\\s*=\\s*([0-9.]+(?:[eE][+-]?[0-9]+)?)"); + std::regex strExpr(lab + "\\s*=\\s*([^=]+)"); + if (std::regex_search(content, match, floatExpr)) { + return boost::algorithm::trim_copy(match.str(1)); + } else if (std::regex_search(content, match, strExpr)) { return boost::algorithm::trim_copy(match.str(1)); } } @@ -70,21 +73,26 @@ namespace gen { auto& scaleGroup = dynamic_cast(group); std::string muRText = searchAttributes("mur", weight); std::string muFText = searchAttributes("muf", weight); + if (muRText.empty() || muFText.empty()) { scaleGroup.setIsWellFormed(false); return; } // currently skips events with a dynscale. May add back //size_t dyn = -1; - if (weight.attributes.find("DYN_SCALE") != weight.attributes.end()) { - // dyn = std::stoi(boost::algorithm::trim_copy_if(weight.attributes.at("DYN_SCALE"), boost::is_any_of("\""))); - return; - } try { float muR = std::stof(muRText); float muF = std::stof(muFText); - scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); + std::string dynNumText = searchAttributes("dyn", weight); + if (dynNumText.empty()) { + scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); + } else { + std::string dynType = searchAttributes("dyn_name", weight); + int dynNum = std::stoi(dynNumText); + scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF, dynNum, dynType); + } + } catch (std::invalid_argument& e) { scaleGroup.setIsWellFormed(false); } diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 17d80d4af1e14..67d7f290405bf 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -12,16 +12,18 @@ namespace gen { std::vector muIndices_; // Dyn_scale - // bool hasDyn = false; - // Maybe have mapping of [muR##muF##index] = vector - // std::unordered_map> dynMap; + std::vector dynNames_; + std::vector> dynVec_; + void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); + void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF, size_t dynNum, std::string dynName); inline int getIndex(int muR, int muF) const { return 3 * muR + muF; } inline bool isValidValue(float mu) const { return mu == 0.5 || mu == 1.0 || mu == 2.0; } public: ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} - ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name), muIndices_(9) { + ScaleWeightGroupInfo(std::string header, std::string name) + : WeightGroupInfo(header, name), muIndices_(9, -1), dynVec_(9) { weightType_ = WeightType::kScaleWeights; isFunctionalFormVar_ = false; } @@ -31,7 +33,8 @@ namespace gen { void copy(const ScaleWeightGroupInfo& other); virtual ScaleWeightGroupInfo* clone() const override; - void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); + void setMuRMuFIndex( + int globalIndex, std::string id, float muR, float muF, size_t dynNum = -1, std::string dynName = ""); void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); // Is a variation of the functional form of the dynamic scale @@ -46,6 +49,24 @@ namespace gen { size_t muR05muF05Index() const { return muIndices_.at(0); } size_t muR05muF1Index() const { return muIndices_.at(1); } size_t muR05muF2Index() const { return muIndices_.at(2); } + // dynweight version + size_t centralIndex(std::string& dynName) const { return getScaleIndex(4, dynName); } + size_t muR1muF2Index(std::string& dynName) const { return getScaleIndex(5, dynName); } + size_t muR1muF05Index(std::string& dynName) const { return getScaleIndex(3, dynName); } + size_t muR2muF05Index(std::string& dynName) const { return getScaleIndex(6, dynName); } + size_t muR2muF1Index(std::string& dynName) const { return getScaleIndex(7, dynName); } + size_t muR2muF2Index(std::string& dynName) const { return getScaleIndex(8, dynName); } + size_t muR05muF05Index(std::string& dynName) const { return getScaleIndex(0, dynName); } + size_t muR05muF1Index(std::string& dynName) const { return getScaleIndex(1, dynName); } + size_t muR05muF2Index(std::string& dynName) const { return getScaleIndex(2, dynName); } + + size_t getScaleIndex(float muR, float muF, size_t dynNum) const; + size_t getScaleIndex(float muR, float muF, std::string& dynName) const; + size_t getScaleIndex(int index, std::string& dynName) const; + size_t getScaleIndex(float muR, float muF) const; + + size_t getScaleIndex(int index, size_t dynNum) const { return dynVec_.at(index).at(dynNum); } + std::vector getDynNames() const; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index bc824b2728405..94a11ca0977f9 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -5,6 +5,8 @@ namespace gen { void ScaleWeightGroupInfo::copy(const ScaleWeightGroupInfo& other) { muIndices_ = other.muIndices_; + dynVec_ = other.dynVec_; + dynNames_ = other.dynNames_; WeightGroupInfo::copy(other); } @@ -15,16 +17,82 @@ namespace gen { setMuRMuFIndex(globalIndex, id, muR, muF); } - void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { + void ScaleWeightGroupInfo::setMuRMuFIndex( + int globalIndex, std::string id, float muR, float muF, size_t dynNum, std::string dynName) { auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); - setMuRMuFIndex(metaInfo, muR, muF); + if ((int)dynNum == -1) + setMuRMuFIndex(metaInfo, muR, muF); + else + setMuRMuFIndex(metaInfo, muR, muF, dynNum, dynName); } void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { int index = getIndex(muR, muF); if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { isWellFormed_ = false; + return; } muIndices_[index] = info.localIndex; } + + void ScaleWeightGroupInfo::setMuRMuFIndex( + WeightMetaInfo& info, float muR, float muF, size_t dynNum, std::string dynName) { + int index = getIndex(muR, muF); + if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { + isWellFormed_ = false; + return; + } + // resize if too small + if (dynVec_.at(index).size() < dynNum + 1) { + for (auto& dynIt : dynVec_) + dynIt.resize(dynNum + 1); + dynNames_.resize(dynNum + 1); + } + + if (dynNames_.at(dynNum).empty()) + dynNames_[dynNum] = dynName; + dynVec_[index][dynNum] = info.localIndex; + } + + size_t ScaleWeightGroupInfo::getScaleIndex(float muR, float muF, std::string& dynName) const { + auto it = std::find(dynNames_.begin(), dynNames_.end(), dynName); + if (it == dynNames_.end()) + return -1; + else + return getScaleIndex(muR, muF, it - dynNames_.begin()); + } + size_t ScaleWeightGroupInfo::getScaleIndex(int index, std::string& dynName) const { + auto it = std::find(dynNames_.begin(), dynNames_.end(), dynName); + if (it == dynNames_.end()) + return -1; + else + return getScaleIndex(index, it - dynNames_.begin()); + } + + size_t ScaleWeightGroupInfo::getScaleIndex(float muR, float muF, size_t dynNum) const { + int index = getIndex(muR, muF); + if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF)) || dynNum + 1 > dynNames_.size()) { + // Bad access! + return -1; + } + return getScaleIndex(index, dynNum); + } + size_t ScaleWeightGroupInfo::getScaleIndex(float muR, float muF) const { + int index = getIndex(muR, muF); + if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { + // Bad access! + return -1; + } + return muIndices_.at(index); + } + + std::vector ScaleWeightGroupInfo::getDynNames() const { + std::vector returnVec; + for (auto item : dynNames_) { + if (!item.empty()) + returnVec.push_back(item); + } + return returnVec; + } + } // namespace gen From 4e333a2243c4f16ac67bb6623a1bbb171599893d Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 26 May 2020 15:42:39 +0200 Subject: [PATCH 093/186] Add Pdf info to pdfWeights (size, type) & check of size consistency --- GeneratorInterface/Core/interface/WeightHelper.h | 2 +- GeneratorInterface/Core/src/LHEWeightHelper.cc | 1 - GeneratorInterface/Core/src/WeightHelper.cc | 7 +++---- .../interface/PdfWeightGroupInfo.h | 10 ++++++---- .../GeneratorProducts/src/PdfWeightGroupInfo.cc | 15 +++++++++++++++ 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 00d1c976e2d90..63b90acc8395c 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -48,7 +48,7 @@ namespace gen { bool isOrphanPdfWeightGroup(ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight); void updatePdfInfo(const ParsedWeight& weight); - void splitPdfGroups(); + int getLhapdfId(const ParsedWeight& weight); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 65f1698dfc77c..b15fae4d88061 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -149,7 +149,6 @@ namespace gen { else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(weight); } - //splitPdfGroups(); // checks for (auto& wgt : weightGroups_) { if (!wgt.isWellFormed()) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 5e7825617596f..f1acc3edae741 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -117,13 +117,10 @@ namespace gen { void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { auto& pdfGroup = dynamic_cast(weightGroups_.back()); int lhaid = getLhapdfId(weight); - pdfGroup.addLhaid(lhaid); - if (pdfGroup.getParentLhapdfId() < 0) { int parentId = lhaid - LHAPDF::lookupPDF(lhaid).second; - pdfGroup.setParentLhapdfId(parentId); + pdfGroup.setParentLhapdfInfo(parentId); pdfGroup.setUncertaintyType(gen::kUnknownUnc); - //pdfGroup.setName(LHAPDF::lookupPDF(parentId).first); std::string description = ""; if (pdfGroup.uncertaintyType() == gen::kHessianUnc) @@ -136,6 +133,8 @@ namespace gen { pdfGroup.appendDescription(description); } + // after setup parent info, add lhaid + pdfGroup.addLhaid(lhaid); } // TODO: Could probably recycle this code better diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index f2a414b0551ca..43925d3ef0c0c 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -22,7 +22,9 @@ namespace gen { int alphasUpIndex_; int alphasDownIndex_; int parentLhapdfId_ = -1; - std::vector lhaids; + size_t parentLhapdfSize_ = -1; + std::string parentLhapdfError_; + std::vector lhaids_; int parentLhapdfId(int lhaid) const { return lhaid - LHAPDF::lookupPDF(lhaid).second; } public: @@ -42,12 +44,12 @@ namespace gen { void setAlphasDownIndex(int alphasDownIndex) { alphasDownIndex_ = alphasDownIndex; } PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } - void addLhaid(int lhaid) { lhaids.push_back(lhaid); } - std::vector& getLhaIds() { return lhaids; } + void addLhaid(int lhaid); + std::vector& getLhaIds() { return lhaids_; } bool isIdInParentSet(int lhaid) const { return parentLhapdfId_ == parentLhapdfId(lhaid); } int getParentLhapdfId() const { return parentLhapdfId_; } - void setParentLhapdfId(int lhaid) { parentLhapdfId_ = lhaid; } + void setParentLhapdfInfo(int lhaid); // need to remove bool containsLhapdfId(int lhaid) const { return isIdInParentSet(lhaid); } diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 206f3d0fe89fb..489b3174aeebe 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -11,4 +11,19 @@ namespace gen { } PdfWeightGroupInfo* PdfWeightGroupInfo::clone() const { return new PdfWeightGroupInfo(*this); } + void PdfWeightGroupInfo::addLhaid(int lhaid) { + lhaids_.push_back(lhaid); + if (lhaids_.size() == parentLhapdfSize_) + setIsWellFormed(true); + else + setIsWellFormed(false); + } + + void PdfWeightGroupInfo::setParentLhapdfInfo(int lhaid) { + parentLhapdfId_ = lhaid; + LHAPDF::PDFSet pdfSet(LHAPDF::lookupPDF(lhaid).first); + parentLhapdfSize_ = pdfSet.size(); + parentLhapdfError_ = pdfSet.errorType(); + } + } // namespace gen From f9b8222897466797a6548027e0b716a77d746d60 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 26 May 2020 20:31:11 +0200 Subject: [PATCH 094/186] Add orphaned pdf weight into scale weight missing central index not my finest work. Definitely could have improvements, but technically works --- .../Core/interface/WeightHelper.h | 1 + .../Core/src/LHEWeightHelper.cc | 1 + GeneratorInterface/Core/src/WeightHelper.cc | 37 +++++++++++++++++-- .../interface/ScaleWeightGroupInfo.h | 7 +++- .../src/ScaleWeightGroupInfo.cc | 13 +++++++ 5 files changed, 54 insertions(+), 5 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 63b90acc8395c..df29226684364 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -48,6 +48,7 @@ namespace gen { bool isOrphanPdfWeightGroup(ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight); void updatePdfInfo(const ParsedWeight& weight); + void cleanupOrphanCentralWeight(); int getLhapdfId(const ParsedWeight& weight); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index b15fae4d88061..a92efe1dbeac3 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -149,6 +149,7 @@ namespace gen { else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(weight); } + cleanupOrphanCentralWeight(); // checks for (auto& wgt : weightGroups_) { if (!wgt.isWellFormed()) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index f1acc3edae741..700bc49a8b80f 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -78,8 +78,6 @@ namespace gen { scaleGroup.setIsWellFormed(false); return; } - // currently skips events with a dynscale. May add back - //size_t dyn = -1; try { float muR = std::stof(muRText); @@ -92,10 +90,17 @@ namespace gen { int dynNum = std::stoi(dynNumText); scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF, dynNum, dynType); } - } catch (std::invalid_argument& e) { scaleGroup.setIsWellFormed(false); } + if (scaleGroup.getLhaid() == -1) { + std::string lhaidText = searchAttributes("pdf", weight); + try { + scaleGroup.setLhaid(std::stoi(lhaidText)); + } catch (std::invalid_argument& e) { + scaleGroup.setLhaid(-2); + } + } } int WeightHelper::getLhapdfId(const ParsedWeight& weight) { @@ -114,6 +119,7 @@ namespace gen { } return -1; } + void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { auto& pdfGroup = dynamic_cast(weightGroups_.back()); int lhaid = getLhapdfId(weight); @@ -148,6 +154,31 @@ namespace gen { return std::move(weightProduct); } + void WeightHelper::cleanupOrphanCentralWeight() { + std::vector removeList; + for (auto it = weightGroups_.begin(); it < weightGroups_.end(); it++) { + if (it->weightType() != WeightType::kScaleWeights) + continue; + auto& baseWeight = dynamic_cast(*it); + if (baseWeight.containsCentralWeight()) + continue; + for (auto subIt = weightGroups_.begin(); subIt < it; subIt++) { + if (subIt->weightType() != WeightType::kPdfWeights) + continue; + auto& subWeight = dynamic_cast(*subIt); + if (subWeight.nIdsContained() == 1 && subWeight.getParentLhapdfId() == baseWeight.getLhaid()) { + removeList.push_back(subIt - weightGroups_.begin()); + auto info = subWeight.idsContained().at(0); + baseWeight.addContainedId(info.globalIndex, info.id, info.label, 1, 1); + } + } + } + std::sort(removeList.begin(), removeList.end(), std::greater()); + for (auto idx : removeList) { + weightGroups_.erase(weightGroups_.begin() + idx); + } + } + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); weightProduct->setNumWeightSets(weightGroups_.size()); diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 67d7f290405bf..55c0e97756218 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -10,7 +10,8 @@ namespace gen { private: bool isFunctionalFormVar_; std::vector muIndices_; - + bool containsCentral_ = false; + int lhaid_ = -1; // Dyn_scale std::vector dynNames_; std::vector> dynVec_; @@ -32,11 +33,13 @@ namespace gen { virtual ~ScaleWeightGroupInfo() override {} void copy(const ScaleWeightGroupInfo& other); virtual ScaleWeightGroupInfo* clone() const override; + bool containsCentralWeight() const { return containsCentral_; } void setMuRMuFIndex( int globalIndex, std::string id, float muR, float muF, size_t dynNum = -1, std::string dynName = ""); void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); - + int getLhaid() { return lhaid_; } + void setLhaid(int lhaid) { lhaid_ = lhaid; } // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) { isFunctionalFormVar_ = functionalVar; } diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 94a11ca0977f9..72dc7b6f48133 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -13,6 +13,17 @@ namespace gen { ScaleWeightGroupInfo* ScaleWeightGroupInfo::clone() const { return new ScaleWeightGroupInfo(*this); } void ScaleWeightGroupInfo::addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF) { + int idxDiff = firstId_ - globalIndex; + if (idxDiff > 0) { + for (auto& entry : muIndices_) { + entry += idxDiff; + } + for (auto& subVec : dynVec_) { + for (auto& entry : subVec) { + entry += idxDiff; + } + } + } WeightGroupInfo::addContainedId(globalIndex, id, label); setMuRMuFIndex(globalIndex, id, muR, muF); } @@ -32,6 +43,8 @@ namespace gen { isWellFormed_ = false; return; } + if (index == 4) + containsCentral_ = true; muIndices_[index] = info.localIndex; } From 217176137083746e389f4b2854796be8482f085e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 7 Jul 2020 01:16:52 +0200 Subject: [PATCH 095/186] Remove Test folder --- Test/Test/BuildFile.xml | 11 ----------- Test/Test/interface/test.h | 18 ------------------ Test/Test/src/classes.h | 1 - Test/Test/src/classes_def.xml | 3 --- Test/Test/src/test.cc | 22 ---------------------- 5 files changed, 55 deletions(-) delete mode 100644 Test/Test/BuildFile.xml delete mode 100644 Test/Test/interface/test.h delete mode 100644 Test/Test/src/classes.h delete mode 100644 Test/Test/src/classes_def.xml delete mode 100644 Test/Test/src/test.cc diff --git a/Test/Test/BuildFile.xml b/Test/Test/BuildFile.xml deleted file mode 100644 index a1b937c463f71..0000000000000 --- a/Test/Test/BuildFile.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Test/Test/interface/test.h b/Test/Test/interface/test.h deleted file mode 100644 index 22a0a4c2aa0f1..0000000000000 --- a/Test/Test/interface/test.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "GeneratorInterface/Core/interface/LHEWeightHelper.h" - -#include -#include -#include -#include - -namespace test { - class Test_LHEWeightHelper { - public: - Test_LHEWeightHelper(); - - void add_file(std::string infileName); - gen::LHEWeightHelper weight_; - - }; - -} diff --git a/Test/Test/src/classes.h b/Test/Test/src/classes.h deleted file mode 100644 index dae06b3522fb1..0000000000000 --- a/Test/Test/src/classes.h +++ /dev/null @@ -1 +0,0 @@ -#include "Test/Test/interface/test.h" diff --git a/Test/Test/src/classes_def.xml b/Test/Test/src/classes_def.xml deleted file mode 100644 index 47d60af8e4eae..0000000000000 --- a/Test/Test/src/classes_def.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Test/Test/src/test.cc b/Test/Test/src/test.cc deleted file mode 100644 index 5474e76f6dd18..0000000000000 --- a/Test/Test/src/test.cc +++ /dev/null @@ -1,22 +0,0 @@ -#include "Test/Test/interface/test.h" - -namespace test { - Test_LHEWeightHelper::Test_LHEWeightHelper() { - - } - - void Test_LHEWeightHelper::add_file(std::string infileName) { - std::ifstream myfile; - myfile.open(infileName); - std::vector lines; - std::string line; - while(getline(myfile, line)) { - lines.push_back(line); - } - weight_.setHeaderLines(lines); - myfile.close(); - } - - -} - From c025448b2b1c1d559acc4c8f5c3113e657ca4906 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 8 Jul 2020 00:07:37 +0200 Subject: [PATCH 096/186] Temporarily force foundProduct = false for lheWeights --- .../Core/plugins/LHEWeightProductProducer.cc | 11 ++++++----- PhysicsTools/NanoAOD/python/nanogen_cff.py | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index c36598cc3785b..1401198462006 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -36,7 +36,7 @@ class LHEWeightProductProducer : public edm::one::EDProducer lheRunInfoToken_; edm::EDGetTokenT lheEventToken_; const edm::EDGetTokenT lheWeightInfoToken_; - bool foundWeightProduct_; + bool foundWeightProduct_ = false; void produce(edm::Event&, const edm::EventSetup&) override; void beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) override; @@ -89,10 +89,11 @@ void LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { edm::Handle lheWeightInfoHandle; lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundWeightProduct_ = true; - return; - } + // Turn this off for now, not working properly in some of my private LHE prod + //if (lheWeightInfoHandle.isValid()) { + // foundWeightProduct_ = true; + // return; + //} weightHelper_.parseWeights(); auto weightInfoProduct = std::make_unique(); diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 9f689a6527d73..9fd816676164f 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -15,7 +15,8 @@ lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", - lheWeights = cms.VInputTag(["externalLHEProducer", "lheWeights"]), + #lheWeights = cms.VInputTag(["externalLHEProducer", "lheWeights"]), + lheWeights = cms.VInputTag(["lheWeights"]), lheWeightPrecision = cms.int32(14), genWeights = cms.InputTag("genWeights"), # Warning: you can use a full string, but only the first character is read. From 2c0719e3be915985ca3c222e08875825e72b95f7 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 9 Jul 2020 17:50:36 +0200 Subject: [PATCH 097/186] Avoid failure when there are no PS weights --- GeneratorInterface/Core/src/GenWeightHelper.cc | 1 + GeneratorInterface/Core/src/LHEWeightHelper.cc | 2 +- GeneratorInterface/Core/src/WeightHelper.cc | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 09373d83c4fd9..2c9f3b14dfcee 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -9,6 +9,7 @@ namespace gen { void GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { int index = 0; + // If size is 1, it's just the central weight if (weightNames.size() <= 1) return; diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index a92efe1dbeac3..989e42edad689 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -29,7 +29,7 @@ namespace gen { if (xmlError != 0) { std::cerr << "Error in lhe xml file" << std::endl; xmlDoc.PrintError(); - exit(1); + return; } std::vector nameAlts_ = {"name", "type"}; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 700bc49a8b80f..2f5bfacb71d5a 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -148,8 +148,12 @@ namespace gen { auto weightProduct = std::make_unique(w0); weightProduct->setNumWeightSets(weightGroups_.size()); int weightGroupIndex = 0; - for (unsigned int i = 0; i < weights.size(); i++) { - addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); + // This happens if there are no PS weights, so the weights vector contains only the central GEN weight. + // Just add an empty product + if (weightGroups_.size() > 1) { + for (unsigned int i = 0; i < weights.size(); i++) { + addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); + } } return std::move(weightProduct); } From 8eeaff3159d01d207cf8e43bb9b65e99c08b0092 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 9 Jul 2020 18:03:11 +0200 Subject: [PATCH 098/186] Add back check for weightproduct in file --- .../Core/plugins/LHEWeightProductProducer.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 1401198462006..2ad72d3c5e02a 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -90,10 +90,10 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& edm::Handle lheWeightInfoHandle; lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); // Turn this off for now, not working properly in some of my private LHE prod - //if (lheWeightInfoHandle.isValid()) { - // foundWeightProduct_ = true; - // return; - //} + if (lheWeightInfoHandle.isValid()) { + foundWeightProduct_ = true; + return; + } weightHelper_.parseWeights(); auto weightInfoProduct = std::make_unique(); From 341cef715c69e12130308138f37ffc8dffba772f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 20 Jul 2020 23:52:10 +0200 Subject: [PATCH 099/186] Remove cuts on dressed leptons --- PhysicsTools/NanoAOD/python/nanogen_cff.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 9fd816676164f..51724c16bcc24 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -149,6 +149,9 @@ def customizeNanoGEN(process): process.genParticleTable.src = "genParticles" process.patJetPartons.particles = "genParticles" process.particleLevel.src = "generatorSmeared" + process.particleLevel.particleMaxEta = 999. + process.particleLevel.lepMinPt = 0. + process.particleLevel.lepMaxEta = 999. process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" process.genJetTable.src = "ak4GenJets" From fbccb5fc649d01d270b2a054f0f8fcebbfcf0253 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 22 Jul 2020 09:23:07 +0200 Subject: [PATCH 100/186] Update ouptut modules --- .../NanoAOD/plugins/NanoAODOutputModule.cc | 260 +++++++++--------- .../NanoAOD/plugins/TableOutputBranches.cc | 107 +++---- .../NanoAOD/plugins/TableOutputBranches.h | 1 + PhysicsTools/NanoAOD/python/nanogen_cff.py | 18 -- 4 files changed, 188 insertions(+), 198 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc index 8f6464c095d6b..7f95a50c0348f 100644 --- a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc +++ b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc @@ -2,7 +2,7 @@ // // Package: PhysicsTools/NanoAODOutput // Class : NanoAODOutputModule -// +// // Implementation: // [Notes on implementation] // @@ -63,7 +63,7 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { int m_eventsSinceFlush{0}; std::string m_compressionAlgorithm; bool m_writeProvenance; - bool m_fakeName; //crab workaround, remove after crab is fixed + bool m_fakeName; //crab workaround, remove after crab is fixed int m_autoFlush; edm::ProcessHistoryRegistry m_processHistoryRegistry; edm::JobReport::Token m_jrToken; @@ -73,49 +73,46 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { static constexpr int m_firstFlush{1000}; class CommonEventBranches { - public: - void branch(TTree& tree) { - tree.Branch("run", &m_run, "run/i"); - tree.Branch("luminosityBlock", &m_luminosityBlock, "luminosityBlock/i"); - tree.Branch("event", &m_event, "event/l"); - } - void fill(const edm::EventID& id) { - m_run = id.run(); - m_luminosityBlock = id.luminosityBlock(); - m_event = id.event(); - } - - private: - UInt_t m_run; - UInt_t m_luminosityBlock; - ULong64_t m_event; + public: + void branch(TTree &tree) { + tree.Branch("run", & m_run, "run/i"); + tree.Branch("luminosityBlock", & m_luminosityBlock, "luminosityBlock/i"); + tree.Branch("event", & m_event, "event/l"); + } + void fill(const edm::EventID & id) { + m_run = id.run(); m_luminosityBlock = id.luminosityBlock(); m_event = id.event(); + } + private: + UInt_t m_run; UInt_t m_luminosityBlock; ULong64_t m_event; } m_commonBranches; class CommonLumiBranches { - public: - void branch(TTree& tree) { - tree.Branch("run", &m_run, "run/i"); - tree.Branch("luminosityBlock", &m_luminosityBlock, "luminosityBlock/i"); - } - void fill(const edm::LuminosityBlockID& id) { - m_run = id.run(); - m_luminosityBlock = id.value(); - } - - private: - UInt_t m_run; - UInt_t m_luminosityBlock; + public: + void branch(TTree &tree) { + tree.Branch("run", & m_run, "run/i"); + tree.Branch("luminosityBlock", & m_luminosityBlock, "luminosityBlock/i"); + } + void fill(const edm::LuminosityBlockID & id) { + m_run = id.run(); + m_luminosityBlock = id.value(); + } + private: + UInt_t m_run; UInt_t m_luminosityBlock; } m_commonLumiBranches; class CommonRunBranches { - public: - void branch(TTree& tree) { tree.Branch("run", &m_run, "run/i"); } - void fill(const edm::RunID& id) { m_run = id.run(); } - - private: - UInt_t m_run; + public: + void branch(TTree &tree) { + tree.Branch("run", & m_run, "run/i"); + } + void fill(const edm::RunID & id) { + m_run = id.run(); + } + private: + UInt_t m_run; } m_commonRunBranches; + std::vector m_tables; std::vector m_tableTokens; std::vector m_tableVectorTokens; @@ -124,9 +121,11 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { std::vector m_runTables; - std::vector> m_nanoMetadata; + std::vector> m_nanoMetadata; + }; + // // constants, enums and typedefs // @@ -138,19 +137,22 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { // // constructors and destructor // -NanoAODOutputModule::NanoAODOutputModule(edm::ParameterSet const& pset) - : edm::one::OutputModuleBase::OutputModuleBase(pset), - edm::one::OutputModule<>(pset), - m_fileName(pset.getUntrackedParameter("fileName")), - m_logicalFileName(pset.getUntrackedParameter("logicalFileName")), - m_compressionLevel(pset.getUntrackedParameter("compressionLevel")), - m_compressionAlgorithm(pset.getUntrackedParameter("compressionAlgorithm")), - m_writeProvenance(pset.getUntrackedParameter("saveProvenance", true)), - m_fakeName(pset.getUntrackedParameter("fakeNameForCrab", false)), - m_autoFlush(pset.getUntrackedParameter("autoFlush", -10000000)), - m_processHistoryRegistry() {} - -void NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { +NanoAODOutputModule::NanoAODOutputModule(edm::ParameterSet const& pset): + edm::one::OutputModuleBase::OutputModuleBase(pset), + edm::one::OutputModule<>(pset), + m_fileName(pset.getUntrackedParameter("fileName")), + m_logicalFileName(pset.getUntrackedParameter("logicalFileName")), + m_compressionLevel(pset.getUntrackedParameter("compressionLevel")), + m_compressionAlgorithm(pset.getUntrackedParameter("compressionAlgorithm")), + m_writeProvenance(pset.getUntrackedParameter("saveProvenance", true)), + m_fakeName(pset.getUntrackedParameter("fakeNameForCrab", false)), + m_autoFlush(pset.getUntrackedParameter("autoFlush", -10000000)), + m_processHistoryRegistry() +{ +} + +void +NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { //Get data from 'e' and write it to the file edm::Service jr; jr->eventWrittenToFile(m_jrToken, iEvent.id().run(), iEvent.id().event()); @@ -166,7 +168,7 @@ void NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { float percentClusterDone = m_firstFlush / static_cast(m_autoFlush); maxMemory = static_cast(m_tree->GetTotBytes()) / percentClusterDone; } else if (m_tree->GetZipBytes() == 0) { - maxMemory = 100 * 1024 * 1024; // Degenerate case of no information in the tree; arbitrary value + maxMemory = 100*1024*1024; // Degenerate case of no information in the tree; arbitrary value } else { // Estimate the memory we'll be using by scaling the current compression ratio. float cxnRatio = m_tree->GetTotBytes() / static_cast(m_tree->GetZipBytes()); @@ -215,17 +217,16 @@ void NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { } } // fill triggers - for (auto& t : m_triggers) - t.fill(iEvent, *m_tree); + for (auto & t : m_triggers) t.fill(iEvent,*m_tree); // fill event branches - for (auto& t : m_evstrings) - t.fill(iEvent, *m_tree); + for (auto & t : m_evstrings) t.fill(iEvent,*m_tree); m_tree->Fill(); m_processHistoryRegistry.registerProcessHistory(iEvent.processHistory()); } -void NanoAODOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput const& iLumi) { +void +NanoAODOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput const& iLumi) { edm::Service jr; jr->reportLumiSection(m_jrToken, iLumi.id().run(), iLumi.id().value()); @@ -235,25 +236,24 @@ void NanoAODOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput con m_processHistoryRegistry.registerProcessHistory(iLumi.processHistory()); } -void NanoAODOutputModule::writeRun(edm::RunForOutput const& iRun) { +void +NanoAODOutputModule::writeRun(edm::RunForOutput const& iRun) { edm::Service jr; jr->reportRunNumber(m_jrToken, iRun.id().run()); m_commonRunBranches.fill(iRun.id()); - for (auto& t : m_runTables) - t.fill(iRun, *m_runTree); + for (auto & t : m_runTables) t.fill(iRun,*m_runTree); edm::Handle hstring; - for (const auto& p : m_nanoMetadata) { + for (const auto & p : m_nanoMetadata) { iRun.getByToken(p.second, hstring); - TObjString* tos = dynamic_cast(m_file->Get(p.first.c_str())); + TObjString *tos = dynamic_cast(m_file->Get(p.first.c_str())); if (tos) { - if (hstring->str() != tos->GetString()) - throw cms::Exception("LogicError", "Inconsistent nanoMetadata " + p.first + " (" + hstring->str() + ")"); + if (hstring->str() != tos->GetString()) throw cms::Exception("LogicError", "Inconsistent nanoMetadata " + p.first + " (" + hstring->str() +")"); } else { - auto ostr = std::make_unique(hstring->str().c_str()); - m_file->WriteTObject(ostr.release(), p.first.c_str()); + auto ostr = std::make_unique(hstring->str().c_str()); + m_file->WriteTObject(ostr.release(), p.first.c_str()); } } @@ -262,31 +262,35 @@ void NanoAODOutputModule::writeRun(edm::RunForOutput const& iRun) { m_processHistoryRegistry.registerProcessHistory(iRun.processHistory()); } -bool NanoAODOutputModule::isFileOpen() const { return nullptr != m_file.get(); } +bool +NanoAODOutputModule::isFileOpen() const { + return nullptr != m_file.get(); +} -void NanoAODOutputModule::openFile(edm::FileBlock const&) { - m_file = std::make_unique(m_fileName.c_str(), "RECREATE", "", m_compressionLevel); +void +NanoAODOutputModule::openFile(edm::FileBlock const&) { + m_file = std::make_unique(m_fileName.c_str(),"RECREATE","",m_compressionLevel); edm::Service jr; cms::Digest branchHash; m_jrToken = jr->outputFileOpened(m_fileName, m_logicalFileName, std::string(), - m_fakeName ? "PoolOutputModule" : "NanoAODOutputModule", + m_fakeName?"PoolOutputModule":"NanoAODOutputModule", description().moduleLabel(), edm::createGlobalIdentifier(), std::string(), branchHash.digest().toString(), - std::vector()); + std::vector() + ); if (m_compressionAlgorithm == std::string("ZLIB")) { - m_file->SetCompressionAlgorithm(ROOT::kZLIB); - } else if (m_compressionAlgorithm == std::string("LZMA")) { - m_file->SetCompressionAlgorithm(ROOT::kLZMA); - } else { - throw cms::Exception("Configuration") - << "NanoAODOutputModule configured with unknown compression algorithm '" << m_compressionAlgorithm << "'\n" - << "Allowed compression algorithms are ZLIB and LZMA\n"; - } + m_file->SetCompressionAlgorithm(ROOT::kZLIB); + } else if (m_compressionAlgorithm == std::string("LZMA")) { + m_file->SetCompressionAlgorithm(ROOT::kLZMA); + } else { + throw cms::Exception("Configuration") << "NanoAODOutputModule configured with unknown compression algorithm '" << m_compressionAlgorithm << "'\n" + << "Allowed compression algorithms are ZLIB and LZMA\n"; + } /* Setup file structure here */ m_tables.clear(); m_tableTokens.clear(); @@ -295,6 +299,7 @@ void NanoAODOutputModule::openFile(edm::FileBlock const&) { m_runTables.clear(); const auto& keeps = keptProducts(); for (const auto& keep : keeps[edm::InEvent]) { + std::cout << keep.first->className() << std::endl; if (keep.first->className() == "nanoaod::FlatTable") { m_tableTokens.emplace_back(keep.second); } else if (keep.first->className() == "std::vector") { @@ -308,98 +313,97 @@ void NanoAODOutputModule::openFile(edm::FileBlock const&) { throw cms::Exception("Configuration", "NanoAODOutputModule cannot handle class " + keep.first->className()); } - for (const auto& keep : keeps[edm::InRun]) { - if (keep.first->className() == "nanoaod::MergeableCounterTable") - m_runTables.push_back(SummaryTableOutputBranches(keep.first, keep.second)); - else if (keep.first->className() == "nanoaod::UniqueString" && keep.first->moduleLabel() == "nanoMetadata") - m_nanoMetadata.emplace_back(keep.first->productInstanceName(), keep.second); - else - throw cms::Exception("Configuration", - "NanoAODOutputModule cannot handle class " + keep.first->className() + " in Run branch"); + for (const auto & keep : keeps[edm::InRun]) { + if(keep.first->className() == "nanoaod::MergeableCounterTable" ) + m_runTables.push_back(SummaryTableOutputBranches(keep.first, keep.second)); + else if(keep.first->className() == "nanoaod::UniqueString" && keep.first->moduleLabel() == "nanoMetadata") + m_nanoMetadata.emplace_back(keep.first->productInstanceName(), keep.second); + else throw cms::Exception("Configuration", "NanoAODOutputModule cannot handle class " + keep.first->className() + " in Run branch"); } + // create the trees - m_tree.reset(new TTree("Events", "Events")); + m_tree.reset(new TTree("Events","Events")); m_tree->SetAutoSave(0); m_tree->SetAutoFlush(0); m_commonBranches.branch(*m_tree); - m_lumiTree.reset(new TTree("LuminosityBlocks", "LuminosityBlocks")); + m_lumiTree.reset(new TTree("LuminosityBlocks","LuminosityBlocks")); m_lumiTree->SetAutoSave(0); m_commonLumiBranches.branch(*m_lumiTree); - m_runTree.reset(new TTree("Runs", "Runs")); + m_runTree.reset(new TTree("Runs","Runs")); m_runTree->SetAutoSave(0); m_commonRunBranches.branch(*m_runTree); - + if (m_writeProvenance) { - m_metaDataTree.reset(new TTree(edm::poolNames::metaDataTreeName().c_str(), "Job metadata")); - m_metaDataTree->SetAutoSave(0); - m_parameterSetsTree.reset(new TTree(edm::poolNames::parameterSetsTreeName().c_str(), "Parameter sets")); - m_parameterSetsTree->SetAutoSave(0); + m_metaDataTree.reset(new TTree(edm::poolNames::metaDataTreeName().c_str(),"Job metadata")); + m_metaDataTree->SetAutoSave(0); + m_parameterSetsTree.reset(new TTree(edm::poolNames::parameterSetsTreeName().c_str(),"Parameter sets")); + m_parameterSetsTree->SetAutoSave(0); } } -void NanoAODOutputModule::reallyCloseFile() { +void +NanoAODOutputModule::reallyCloseFile() { if (m_writeProvenance) { - int basketSize = 16384; // fixme configurable? - edm::fillParameterSetBranch(m_parameterSetsTree.get(), basketSize); - edm::fillProcessHistoryBranch(m_metaDataTree.get(), basketSize, m_processHistoryRegistry); - if (m_metaDataTree->GetNbranches() != 0) { - m_metaDataTree->SetEntries(-1); - } - if (m_parameterSetsTree->GetNbranches() != 0) { - m_parameterSetsTree->SetEntries(-1); - } + int basketSize = 16384; // fixme configurable? + edm::fillParameterSetBranch(m_parameterSetsTree.get(), basketSize); + edm::fillProcessHistoryBranch(m_metaDataTree.get(), basketSize, m_processHistoryRegistry); + if (m_metaDataTree->GetNbranches() != 0) { + m_metaDataTree->SetEntries(-1); + } + if (m_parameterSetsTree->GetNbranches() != 0) { + m_parameterSetsTree->SetEntries(-1); + } } m_file->Write(); m_file->Close(); m_file.reset(); - m_tree.release(); // apparently root has ownership - m_lumiTree.release(); // - m_runTree.release(); // - m_metaDataTree.release(); // - m_parameterSetsTree.release(); // + m_tree.release(); // apparently root has ownership + m_lumiTree.release(); // + m_runTree.release(); // + m_metaDataTree.release(); // + m_parameterSetsTree.release(); // edm::Service jr; jr->outputFileClosed(m_jrToken); } -void NanoAODOutputModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +void +NanoAODOutputModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.addUntracked("fileName"); - desc.addUntracked("logicalFileName", ""); + desc.addUntracked("logicalFileName",""); - desc.addUntracked("compressionLevel", 9)->setComment("ROOT compression level of output file."); + desc.addUntracked("compressionLevel", 9) + ->setComment("ROOT compression level of output file."); desc.addUntracked("compressionAlgorithm", "ZLIB") - ->setComment("Algorithm used to compress data in the ROOT output file, allowed values are ZLIB and LZMA"); + ->setComment("Algorithm used to compress data in the ROOT output file, allowed values are ZLIB and LZMA"); desc.addUntracked("saveProvenance", true) - ->setComment("Save process provenance information, e.g. for edmProvDump"); + ->setComment("Save process provenance information, e.g. for edmProvDump"); desc.addUntracked("fakeNameForCrab", false) - ->setComment( - "Change the OutputModule name in the fwk job report to fake PoolOutputModule. This is needed to run on cran " - "(and publish) till crab is fixed"); - desc.addUntracked("autoFlush", -10000000)->setComment("Autoflush parameter for ROOT file"); + ->setComment("Change the OutputModule name in the fwk job report to fake PoolOutputModule. This is needed to run on cran (and publish) till crab is fixed"); + desc.addUntracked("autoFlush", -10000000) + ->setComment("Autoflush parameter for ROOT file"); //replace with whatever you want to get from the EDM by default - const std::vector keep = {"drop *", - "keep nanoaodFlatTable_*Table_*_*", - "keep edmTriggerResults_*_*_*", - "keep String_*_genModel_*", - "keep nanoaodMergeableCounterTable_*Table_*_*", - "keep nanoaodUniqueString_nanoMetadata_*_*"}; + const std::vector keep = {"drop *", "keep nanoaodFlatTable_*Table_*_*", "keep edmTriggerResults_*_*_*", "keep String_*_genModel_*", "keep nanoaodMergeableCounterTable_*Table_*_*", "keep nanoaodUniqueString_nanoMetadata_*_*"}; edm::OutputModule::fillDescription(desc, keep); - + //Used by Workflow management for their own meta data edm::ParameterSetDescription dataSet; dataSet.setAllowAnything(); desc.addUntracked("dataset", dataSet) - ->setComment("PSet is only used by Data Operations and not by this module."); - + ->setComment("PSet is only used by Data Operations and not by this module."); + edm::ParameterSetDescription branchSet; branchSet.setAllowAnything(); desc.add("branches", branchSet); + + descriptions.addDefault(desc); + } DEFINE_FWK_MODULE(NanoAODOutputModule); diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc index 4f411b12dfe55..3ceab440164f9 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc @@ -3,58 +3,62 @@ #include namespace { - std::string makeBranchName(const std::string &baseName, const std::string &leafName) { - return baseName.empty() ? leafName : (leafName.empty() ? baseName : baseName + "_" + leafName); - } -} // namespace + std::string makeBranchName(const std::string & baseName, const std::string & leafName) { + return baseName.empty() ? leafName : + ( leafName.empty() ? baseName : + baseName + "_" + leafName); + } +} -void TableOutputBranches::defineBranchesFromFirstEvent(const nanoaod::FlatTable &tab) { - m_baseName = tab.name(); - for (size_t i = 0; i < tab.nColumns(); i++) { - const std::string &var = tab.columnName(i); - switch (tab.columnType(i)) { - case (nanoaod::FlatTable::FloatColumn): - m_floatBranches.emplace_back(var, tab.columnDoc(i), "F"); - break; - case (nanoaod::FlatTable::IntColumn): - m_intBranches.emplace_back(var, tab.columnDoc(i), "I"); - break; - case (nanoaod::FlatTable::UInt8Column): - m_uint8Branches.emplace_back(var, tab.columnDoc(i), "b"); - break; - case (nanoaod::FlatTable::BoolColumn): - m_uint8Branches.emplace_back(var, tab.columnDoc(i), "O"); - break; +void +TableOutputBranches::defineBranchesFromFirstEvent(const nanoaod::FlatTable & tab) +{ + m_baseName=tab.name(); + for(size_t i=0;iSetTitle(m_doc.c_str()); +void +TableOutputBranches::branch(TTree &tree) +{ + if (!m_singleton) { + if (m_extension == IsExtension) { + m_counterBranch = tree.FindBranch(("n"+m_baseName).c_str()); + if (!m_counterBranch) { + throw cms::Exception("LogicError", + "Trying to save an extension table for " + m_baseName + " before having saved the corresponding main table\n"); + } + } else { + if (tree.FindBranch(("n"+m_baseName).c_str()) != nullptr) { + throw cms::Exception("LogicError", "Trying to save multiple main tables for " + m_baseName + "\n"); + } + m_counterBranch = tree.Branch(("n"+m_baseName).c_str(), & m_counter, ("n"+m_baseName + "/i").c_str()); + m_counterBranch->SetTitle(m_doc.c_str()); + } } - } - std::string varsize = m_singleton ? "" : "[n" + m_baseName + "]"; - for (std::vector *branches : {&m_floatBranches, &m_intBranches, &m_uint8Branches}) { - for (auto &pair : *branches) { - std::string branchName = makeBranchName(m_baseName, pair.name); - pair.branch = - tree.Branch(branchName.c_str(), (void *)nullptr, (branchName + varsize + "/" + pair.rootTypeCode).c_str()); - pair.branch->SetTitle(pair.title.c_str()); + std::string varsize = m_singleton ? "" : "[n" + m_baseName + "]"; + for ( std::vector * branches : { & m_floatBranches, & m_intBranches, & m_uint8Branches } ) { + for (auto & pair : *branches) { + std::string branchName = makeBranchName(m_baseName, pair.name); + pair.branch = tree.Branch(branchName.c_str(), (void*)nullptr, (branchName + varsize + "/" + pair.rootTypeCode).c_str()); + pair.branch->SetTitle(pair.title.c_str()); + } } - } } void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool extensions) { @@ -79,11 +83,10 @@ void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool throw cms::Exception("LogicError", "Mismatch in number of entries between extension and main table for " + tab.name()); } + for (auto & pair : m_floatBranches) fillColumn(pair, tab); + for (auto & pair : m_intBranches) fillColumn(pair, tab); + for (auto & pair : m_uint8Branches) fillColumn(pair, tab); } - for (auto &pair : m_floatBranches) - fillColumn(pair, tab); - for (auto &pair : m_intBranches) - fillColumn(pair, tab); - for (auto &pair : m_uint8Branches) - fillColumn(pair, tab); } + + diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h index c8e4366e48539..33b6d8d9fd68e 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h @@ -48,3 +48,4 @@ class TableOutputBranches { }; #endif + diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 51724c16bcc24..c3234fc2d69f4 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -106,24 +106,6 @@ lheInfoTable ) -NANOAODGENoutput = cms.OutputModule("NanoAODOutputModule", - compressionAlgorithm = cms.untracked.string('LZMA'), - compressionLevel = cms.untracked.int32(9), - dataset = cms.untracked.PSet( - dataTier = cms.untracked.string('NANOAODSIM'), - filterName = cms.untracked.string('') - ), - fileName = cms.untracked.string('nanogen.root'), - outputCommands = cms.untracked.vstring( - 'drop *', - "keep *_lheWeightsTable_*_*", # event data - "keep nanoaodFlatTable_*Table_*_*", # event data - "keep String_*_genModel_*", # generator model data - "keep nanoaodMergeableCounterTable_*Table_*_*", # accumulated per/run or per/lumi data - "keep nanoaodUniqueString_nanoMetadata_*_*", # basic metadata - ) -) - def customizeNanoGENFromMini(process): # Why is this false by default?! process.lheInfoTable.storeLHEParticles = True From 80ad1d0e16081cdd02b412d012a869f343b99c70 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 22 Jul 2020 11:02:36 +0200 Subject: [PATCH 101/186] Fix bug breaking parton shower weights Remove some needless output --- .../Core/plugins/GenWeightProductProducer.cc | 11 ++- .../Core/plugins/LHEWeightProductProducer.cc | 1 - .../Core/src/GenWeightHelper.cc | 4 +- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- .../Core/test/dumpWeightInfo.py | 79 +++++++++---------- .../NanoAOD/plugins/NanoAODOutputModule.cc | 1 - PhysicsTools/NanoAOD/python/nanogen_cff.py | 4 +- 7 files changed, 49 insertions(+), 53 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index c4256bdfc3b5d..a69756f2b2aea 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -74,13 +74,12 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.setModel(label); } - if (weightNames_.size() == 0) { - edm::Handle genLumiInfoHandle; - iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); + edm::Handle genLumiInfoHandle; + iLumi.getByToken(genLumiInfoToken_, genLumiInfoHandle); + + weightNames_ = genLumiInfoHandle->weightNames(); + weightHelper_.parseWeightGroupsFromNames(weightNames_); - weightNames_ = genLumiInfoHandle->weightNames(); - weightHelper_.parseWeightGroupsFromNames(weightNames_); - } auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 2ad72d3c5e02a..3a32117fc3cc0 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -89,7 +89,6 @@ void LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { edm::Handle lheWeightInfoHandle; lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - // Turn this off for now, not working properly in some of my private LHE prod if (lheWeightInfoHandle.isValid()) { foundWeightProduct_ = true; return; diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 2c9f3b14dfcee..c6110ff544756 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -10,8 +10,8 @@ namespace gen { int index = 0; // If size is 1, it's just the central weight - if (weightNames.size() <= 1) - return; + //if (weightNames.size() <= 1) + // return; for (std::string weightName : weightNames) { if (weightName.find("LHE") != std::string::npos) { diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 2f5bfacb71d5a..e0dfbf3cb86a1 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -150,7 +150,7 @@ namespace gen { int weightGroupIndex = 0; // This happens if there are no PS weights, so the weights vector contains only the central GEN weight. // Just add an empty product - if (weightGroups_.size() > 1) { + if (weights.size() > 1) { for (unsigned int i = 0; i < weights.size(); i++) { addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); } diff --git a/GeneratorInterface/Core/test/dumpWeightInfo.py b/GeneratorInterface/Core/test/dumpWeightInfo.py index 2ee498c9fb383..b7231c6945a33 100644 --- a/GeneratorInterface/Core/test/dumpWeightInfo.py +++ b/GeneratorInterface/Core/test/dumpWeightInfo.py @@ -1,45 +1,44 @@ +from __future__ import print_function from DataFormats.FWLite import Events,Handle,Runs,Lumis import ROOT -sources = ["externalLHEProducer"] -#sources = ["testLHEWeights", "testGenWeights"] - -#for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"," HIG-RunIIFall18wmLHEGS-00509_ordered.root","HIG-RunIIFall18wmLHEGS-00509_unordered.root"]: -for filename in ["HIG-RunIIFall18wmLHEGS-00509.root"]: -#for filename in ["test.root"]: - for source in sources: - lumis = Lumis(filename) - lumi = lumis.__iter__().next() - weightInfoHandle = Handle("GenWeightInfoProduct") - lumi.getByLabel(source, weightInfoHandle) - weightInfoProd = weightInfoHandle.product() - - events = Events(filename) - event = events.__iter__().next() - weightHandle = Handle("GenWeightProduct") - event.getByLabel(source, weightHandle) - weightInfo = weightHandle.product() - print weightInfoProd.allWeightGroupsInfo(), len(weightInfoProd.allWeightGroupsInfo()) - for j, weights in enumerate(weightInfo.weights()): - print "-"*10, "Looking at entry", j, "length is", len(weights),"-"*10 - matching = weightInfoProd.orderedWeightGroupInfo(j) - print "Group is", matching, "name is", matching.name(), "well formed?", matching.isWellFormed() - print "Group description", matching.description() - print type(matching.weightType()), matching.weightType() - if matching.weightType() == 's': - for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: - name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" - print name, getattr(matching, name)() - elif matching.weightType() == 'P': - print "uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC" - print "contains LHAPDFIds", len(matching.lhapdfIdsContained()), [i for i in matching.lhapdfIdsContained()], - print "Has alphas? ", matching.hasAlphasVariations() - print "Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds()) - print "-"*80 - for i,weight in enumerate(weights): - print i, weight - info = matching.weightMetaInfo(i) - print " ID, localIndex, globalIndex, label, set:", info.id, info.localIndex, info.globalIndex, info.label, matching.name() - print "-"*80 +import argparse +parser = argparse.ArgumentParser() +parser.add_argument("infile", type=str, help="Input EDM file") +parser.add_argument("--source", type=str, help="product ID of weight product", default="externalLHEProducer") +args = parser.parse_args() +lumis = Lumis(args.infile) +lumi = lumis.__iter__().next() +weightInfoHandle = Handle("GenWeightInfoProduct") +print("Trying to get weightInfo from lumi") +lumi.getByLabel(args.source, weightInfoHandle) +weightInfoProd = weightInfoHandle.product() +events = Events(args.infile) +event = events.__iter__().next() +weightHandle = Handle("GenWeightProduct") +print("Trying to get weightProduct from event") +event.getByLabel(args.source, weightHandle) +weightInfo = weightHandle.product() +print("Number of weight groups in weightInfo is", len(weightInfo.weights())) +for j, weights in enumerate(weightInfo.weights()): + print("-"*10, "Looking at entry", j, "length is", len(weights),"-"*10) + matching = weightInfoProd.orderedWeightGroupInfo(j) + print("Group is", matching, "name is", matching.name(), "well formed?", matching.isWellFormed()) + print("Group description", matching.description()) + print(type(matching.weightType()), matching.weightType()) + if matching.weightType() == 's': + for var in [(x, y) for x in ["05", "1", "2"] for y in ["05", "1", "2"]]: + name = "muR%smuF%sIndex" % (var[0], var[1]) if not (var[0] == "1" and var[1] == "1") else "centralIndex" + print(name, getattr(matching, name)()) + elif matching.weightType() == 'P': + print("uncertaintyType", "Hessian" if matching.uncertaintyType() == ROOT.gen.kHessianUnc else "MC") + print("Has alphas? ", matching.hasAlphasVariations()) + print("Weights length?", len(weights), "Contained ids lenths?", len(matching.containedIds())) + print("-"*80) + for i,weight in enumerate(weights): + print(i, weight) + info = matching.weightMetaInfo(i) + print(" ID, localIndex, globalIndex, label, set:", info.id, info.localIndex, info.globalIndex, info.label, matching.name()) + print("-"*80) diff --git a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc index 7f95a50c0348f..b942db79bcd1f 100644 --- a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc +++ b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc @@ -299,7 +299,6 @@ NanoAODOutputModule::openFile(edm::FileBlock const&) { m_runTables.clear(); const auto& keeps = keptProducts(); for (const auto& keep : keeps[edm::InEvent]) { - std::cout << keep.first->className() << std::endl; if (keep.first->className() == "nanoaod::FlatTable") { m_tableTokens.emplace_back(keep.second); } else if (keep.first->className() == "std::vector") { diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index c3234fc2d69f4..4af206bcaa5c9 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -11,12 +11,12 @@ genLumiInfoHeader = cms.InputTag("generator")) lheWeights = cms.EDProducer("LHEWeightProductProducer", + # TODO: Should take a vstring of inputs lheSourceLabel = cms.string("externalLHEProducer")) lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", - #lheWeights = cms.VInputTag(["externalLHEProducer", "lheWeights"]), - lheWeights = cms.VInputTag(["lheWeights"]), + lheWeights = cms.VInputTag(["externalLHEProducer", "source", "lheWeights"]), lheWeightPrecision = cms.int32(14), genWeights = cms.InputTag("genWeights"), # Warning: you can use a full string, but only the first character is read. From 808d586ca313469a53aa07a5c96afed98058d0a5 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 22 Jul 2020 13:40:22 +0200 Subject: [PATCH 102/186] Restore check on weightNames for gen weights --- GeneratorInterface/Core/src/GenWeightHelper.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index c6110ff544756..2c9f3b14dfcee 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -10,8 +10,8 @@ namespace gen { int index = 0; // If size is 1, it's just the central weight - //if (weightNames.size() <= 1) - // return; + if (weightNames.size() <= 1) + return; for (std::string weightName : weightNames) { if (weightName.find("LHE") != std::string::npos) { From d69abebd0c354dbb06d56ca2625ae016c8a7d55e Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Wed, 29 Jul 2020 19:42:04 +0200 Subject: [PATCH 103/186] Fix orphaned central scale problem. was resizing to 1 (not great) --- SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 4a775456dc4c2..7e5529ee886cb 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -72,8 +72,8 @@ namespace gen { info.id = id; info.label = label; - if (idsContained_.size() < info.localIndex) { - idsContained_.resize(info.localIndex); + if (idsContained_.size() > info.localIndex) { + idsContained_.resize(lastId_ - firstId_); idsContained_.insert(idsContained_.begin() + info.localIndex, info); } else if (idsContained_.size() == info.localIndex) { idsContained_.push_back(info); From 31043ca9e046b7ae5efc58bf4d4eef0fa44ffda8 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Wed, 29 Jul 2020 21:51:38 +0200 Subject: [PATCH 104/186] Simplify logic of adding to make less opaque --- .../GeneratorProducts/src/WeightGroupInfo.cc | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 7e5529ee886cb..ecc3e3625ef1e 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -59,28 +59,17 @@ namespace gen { void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label = "") { if (firstId_ == -1 || weightEntry < firstId_) { firstId_ = weightEntry; - // Reset to reflect that indices will be shifted - for (auto& entry : idsContained_) + for (auto& entry : idsContained_) // Reset if indices need to be shifted entry.localIndex = entry.globalIndex - firstId_; } if (weightEntry > lastId_) lastId_ = weightEntry; - WeightMetaInfo info; - info.globalIndex = weightEntry; - info.localIndex = weightEntry - firstId_; - info.id = id; - info.label = label; - - if (idsContained_.size() > info.localIndex) { - idsContained_.resize(lastId_ - firstId_); - idsContained_.insert(idsContained_.begin() + info.localIndex, info); - } else if (idsContained_.size() == info.localIndex) { - idsContained_.push_back(info); - } else { - idsContained_.resize(info.localIndex + 1); - idsContained_[info.localIndex] = info; - } + size_t localIndex = weightEntry - firstId_; + WeightMetaInfo info = {static_cast(weightEntry), localIndex, id, label}; + // logic to insert for all cases e.g. inserting in the middle of the vector + idsContained_.resize(lastId_ - firstId_); + idsContained_.insert(idsContained_.begin() + localIndex, info); } std::vector WeightGroupInfo::containedIds() const { return idsContained_; } From 8db5166f4a3ba98da124d43e05e4c781c1094811 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 30 Jul 2020 16:20:03 +0200 Subject: [PATCH 105/186] Move weight building logic to WeightHelper so GEN can use it --- .../Core/interface/LHEWeightHelper.h | 2 - .../Core/interface/WeightHelper.h | 3 + .../Core/src/LHEWeightHelper.cc | 76 ------------------ GeneratorInterface/Core/src/WeightHelper.cc | 80 +++++++++++++++++++ 4 files changed, 83 insertions(+), 78 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 89f1e1c610923..ef3371c4095d6 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -22,10 +22,8 @@ namespace gen { LHEWeightHelper() : WeightHelper(){}; void setHeaderLines(std::vector headerLines); void parseWeights(); - void buildGroups(); bool isConsistent(); void swapHeaders(); - std::unique_ptr buildGroup(ParsedWeight& weight); private: std::vector headerLines_; diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index df29226684364..bef4ceda8f7cd 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -62,6 +62,9 @@ namespace gen { {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}, {"dyn", {"DYN_SCALE"}}, {"dyn_name", {"dyn_scale_choice"}}}; + void printWeights(); + std::unique_ptr buildGroup(ParsedWeight& weight); + void buildGroups(); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 989e42edad689..8e21136707ad7 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -124,80 +124,4 @@ namespace gen { } } } - - void LHEWeightHelper::buildGroups() { - weightGroups_.clear(); - size_t currentGroupIdx = -1; - for (auto& weight : parsedWeights_) { - if (currentGroupIdx != weight.wgtGroup_idx) { - weightGroups_.push_back(*buildGroup(weight)); - currentGroupIdx = weight.wgtGroup_idx; - } - - // split PDF groups - if (weightGroups_.back().weightType() == gen::WeightType::kPdfWeights) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - int lhaid = getLhapdfId(weight); - if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { - weightGroups_.push_back(*buildGroup(weight)); - } - } - WeightGroupInfo& group = weightGroups_.back(); - group.addContainedId(weight.index, weight.id, weight.content); - if (group.weightType() == gen::WeightType::kScaleWeights) - updateScaleInfo(weight); - else if (group.weightType() == gen::WeightType::kPdfWeights) - updatePdfInfo(weight); - } - cleanupOrphanCentralWeight(); - // checks - for (auto& wgt : weightGroups_) { - if (!wgt.isWellFormed()) - std::cout << "\033[1;31m"; - std::cout << std::boolalpha << wgt.name() << " (" << wgt.firstId() << "-" << wgt.lastId() - << "): " << wgt.isWellFormed() << std::endl; - if (wgt.weightType() == gen::WeightType::kScaleWeights) { - auto& wgtScale = dynamic_cast(wgt); - std::cout << wgtScale.centralIndex() << " "; - std::cout << wgtScale.muR1muF2Index() << " "; - std::cout << wgtScale.muR1muF05Index() << " "; - std::cout << wgtScale.muR2muF1Index() << " "; - std::cout << wgtScale.muR2muF2Index() << " "; - std::cout << wgtScale.muR2muF05Index() << " "; - std::cout << wgtScale.muR05muF1Index() << " "; - std::cout << wgtScale.muR05muF2Index() << " "; - std::cout << wgtScale.muR05muF05Index() << " \n"; - for (auto name : wgtScale.getDynNames()) { - std::cout << name << ": "; - std::cout << wgtScale.getScaleIndex(1.0, 1.0, name) << " "; - std::cout << wgtScale.getScaleIndex(1.0, 2.0, name) << " "; - std::cout << wgtScale.getScaleIndex(1.0, 0.5, name) << " "; - std::cout << wgtScale.getScaleIndex(2.0, 1.0, name) << " "; - std::cout << wgtScale.getScaleIndex(2.0, 2.0, name) << " "; - std::cout << wgtScale.getScaleIndex(2.0, 0.5, name) << " "; - std::cout << wgtScale.getScaleIndex(0.5, 1.0, name) << " "; - std::cout << wgtScale.getScaleIndex(0.5, 2.0, name) << " "; - std::cout << wgtScale.getScaleIndex(0.5, 0.5, name) << "\n"; - } - - } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { - std::cout << wgt.description() << "\n"; - } - if (!wgt.isWellFormed()) - std::cout << "\033[0m"; - } - } - - std::unique_ptr LHEWeightHelper::buildGroup(ParsedWeight& weight) { - if (isScaleWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isPdfWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isMEParamWeightGroup(weight)) - return std::make_unique(weight.groupname); - else if (isOrphanPdfWeightGroup(weight)) - return std::make_unique(weight.groupname); - - return std::make_unique(weight.groupname); - } } // namespace gen diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index e0dfbf3cb86a1..bb9f248cc55a1 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -224,4 +224,84 @@ namespace gen { throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); } + + void WeightHelper::printWeights() { + // checks + for (auto& wgt : weightGroups_) { + if (!wgt.isWellFormed()) + std::cout << "\033[1;31m"; + std::cout << std::boolalpha << wgt.name() << " (" << wgt.firstId() << "-" << wgt.lastId() + << "): " << wgt.isWellFormed() << std::endl; + if (wgt.weightType() == gen::WeightType::kScaleWeights) { + auto& wgtScale = dynamic_cast(wgt); + std::cout << wgtScale.centralIndex() << " "; + std::cout << wgtScale.muR1muF2Index() << " "; + std::cout << wgtScale.muR1muF05Index() << " "; + std::cout << wgtScale.muR2muF1Index() << " "; + std::cout << wgtScale.muR2muF2Index() << " "; + std::cout << wgtScale.muR2muF05Index() << " "; + std::cout << wgtScale.muR05muF1Index() << " "; + std::cout << wgtScale.muR05muF2Index() << " "; + std::cout << wgtScale.muR05muF05Index() << " \n"; + for (auto name : wgtScale.getDynNames()) { + std::cout << name << ": "; + std::cout << wgtScale.getScaleIndex(1.0, 1.0, name) << " "; + std::cout << wgtScale.getScaleIndex(1.0, 2.0, name) << " "; + std::cout << wgtScale.getScaleIndex(1.0, 0.5, name) << " "; + std::cout << wgtScale.getScaleIndex(2.0, 1.0, name) << " "; + std::cout << wgtScale.getScaleIndex(2.0, 2.0, name) << " "; + std::cout << wgtScale.getScaleIndex(2.0, 0.5, name) << " "; + std::cout << wgtScale.getScaleIndex(0.5, 1.0, name) << " "; + std::cout << wgtScale.getScaleIndex(0.5, 2.0, name) << " "; + std::cout << wgtScale.getScaleIndex(0.5, 0.5, name) << "\n"; + } + + } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { + std::cout << wgt.description() << "\n"; + } + if (!wgt.isWellFormed()) + std::cout << "\033[0m"; + } + } + + std::unique_ptr WeightHelper::buildGroup(ParsedWeight& weight) { + if (isScaleWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isMEParamWeightGroup(weight)) + return std::make_unique(weight.groupname); + else if (isOrphanPdfWeightGroup(weight)) + return std::make_unique(weight.groupname); + + return std::make_unique(weight.groupname); + } + + void WeightHelper::buildGroups() { + weightGroups_.clear(); + size_t currentGroupIdx = -1; + for (auto& weight : parsedWeights_) { + if (currentGroupIdx != weight.wgtGroup_idx) { + weightGroups_.push_back(*buildGroup(weight)); + currentGroupIdx = weight.wgtGroup_idx; + } + + // split PDF groups + if (weightGroups_.back().weightType() == gen::WeightType::kPdfWeights) { + auto& pdfGroup = dynamic_cast(weightGroups_.back()); + int lhaid = getLhapdfId(weight); + if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { + weightGroups_.push_back(*buildGroup(weight)); + } + } + WeightGroupInfo& group = weightGroups_.back(); + group.addContainedId(weight.index, weight.id, weight.content); + if (group.weightType() == gen::WeightType::kScaleWeights) + updateScaleInfo(weight); + else if (group.weightType() == gen::WeightType::kPdfWeights) + updatePdfInfo(weight); + } + cleanupOrphanCentralWeight(); + } + } // namespace gen From 3bbd4de12c95f2087594952440cf7123787b7fe6 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 30 Jul 2020 16:23:20 +0200 Subject: [PATCH 106/186] Add basic GenLevel parsing. Works on ZGTo2NuG test file --- .../Core/interface/GenWeightHelper.h | 1 + .../Core/src/GenWeightHelper.cc | 49 ++++++++++++++----- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/GeneratorInterface/Core/interface/GenWeightHelper.h b/GeneratorInterface/Core/interface/GenWeightHelper.h index 8797b4654d204..23a337cd7abc3 100644 --- a/GeneratorInterface/Core/interface/GenWeightHelper.h +++ b/GeneratorInterface/Core/interface/GenWeightHelper.h @@ -23,6 +23,7 @@ namespace gen { void parseWeightGroupsFromNames(std::vector weightNames); private: + static inline std::string trim(std::string &s); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 2c9f3b14dfcee..a5cdc269222be 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -7,26 +7,53 @@ namespace gen { GenWeightHelper::GenWeightHelper() {} void GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { - int index = 0; - + parsedWeights_.clear(); + size_t index = 0; + size_t groupIndex = 0; + std::string curGroup = ""; // If size is 1, it's just the central weight if (weightNames.size() <= 1) return; + for (std::string weightName : weightNames) { + std::cout << weightName << std::endl; + } for (std::string weightName : weightNames) { if (weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow - // std::vector info; - // boost::split(info, weightName, boost::is_any_of(",")); - weightGroups_.push_back(new gen::UnknownWeightGroupInfo("inGen")); + std::vector info; + boost::split(info, weightName, boost::is_any_of(",")); + std::unordered_map attributes; + std::string text = info.back(); + info.pop_back(); + for (auto i : info) { + std::vector subInfo; + boost::split(subInfo, i, boost::is_any_of("=")); + if (subInfo.size() == 2) { + attributes[trim(subInfo[0])] = trim(subInfo[1]); + } + } + if (attributes["group"] != curGroup) { + curGroup = attributes["group"]; + groupIndex++; + } + parsedWeights_.push_back({attributes["id"], index++, curGroup, text, attributes, groupIndex}); + } else { + parsedWeights_.push_back( + {"", index++, weightName, weightName, std::unordered_map(), groupIndex++}); } // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights - else if (weightGroups_.size() == 0) { - weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); - } - auto& group = weightGroups_.back(); - // No IDs for Gen weights - group.addContainedId(index++, "", weightName); + // else if (weightGroups_.size() == 0) { + // weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); + // } } + buildGroups(); + //printWeights(); + } + + inline std::string GenWeightHelper::trim(std::string &s) { + s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace)))); + s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()); + return s; } } // namespace gen From f2952870deb48565f39f1b36b7357747f1f68bc8 Mon Sep 17 00:00:00 2001 From: Carlos Erice Date: Thu, 30 Jul 2020 22:44:07 +0200 Subject: [PATCH 107/186] Modified nanoAOD modules to produce the whole LHE info (optionally, currently inactive). Added standalone script to reproduce LHE event using this information --- .../test/createLHEFormatFromROOTFile.py | 107 ++++++++++++++++++ .../NanoAOD/plugins/LHETablesProducer.cc | 70 ++++++++++-- PhysicsTools/NanoAOD/python/nano_cff.py | 9 +- 3 files changed, 173 insertions(+), 13 deletions(-) create mode 100644 GeneratorInterface/LHEInterface/test/createLHEFormatFromROOTFile.py diff --git a/GeneratorInterface/LHEInterface/test/createLHEFormatFromROOTFile.py b/GeneratorInterface/LHEInterface/test/createLHEFormatFromROOTFile.py new file mode 100644 index 0000000000000..33c60dbff7ca4 --- /dev/null +++ b/GeneratorInterface/LHEInterface/test/createLHEFormatFromROOTFile.py @@ -0,0 +1,107 @@ +import ROOT +import sys + + +""" +Usage +python createLHEFormatFromROOTFile.py inputfile outputfile pdgId_particle_to_undo_decay1 pdgId_particle_to_undo_decay2 pdgId_particle_to_undo_decay3 ... +""" + +args = sys.argv[:] + +class HEPPart(object): + def __init__(self,event, idx): + """ + Class to organize the description of a particle in the LHE event + event : whole event information (usually a entry in the input TTree) + idx : the index of the particle inside the LHE file + """ + for att in ["pt","eta","phi", "mass","lifetime","pdgId","status","spin","color1", "color2","mother1","mother2","incomingpz"]: + setattr(self, att, getattr(event, "LHEPart_"+att)[idx]) + self.setP4() + + def setP4(self): + self.p4 = ROOT.TLorentzVector() + if self.status != -1: + self.p4.SetPtEtaPhiM(self.pt, self.eta, self.phi, self.mass) + else: + self.p4.SetPxPyPzE(0.,0.,self.incomingpz, abs(self.incomingpz)) + def printPart(self): + """ Just to print it pretty """ + return " {pdg:d} {status:d} {mother1:d} {mother2:d} {color1:d} {color2:d} {px:e} {py:e} {pz:e} {energy:e} {mass:e} {time:e} {spin:e}\n".format(pdg=self.pdgId,status=self.status, mother1=self.mother1, mother2=self.mother2, color1=self.color1, color2=self.color2, px=self.p4.Px(), py=self.p4.Py(), pz=self.p4.Pz(), energy=self.p4.E(), mass=self.mass, time=self.lifetime, spin=self.spin) + + +class LHEPrinter(object): + def __init__(self,theFile,theTree,outputLHE,undoDecays=[], chunkers=-1, prDict={}): + """ + theFile : path to input root file with the whole LHEinformation + theTree : number of ttree inside the file, usually "Events" + outputLHE: name of output .lhe file + undoDecays: pdgId of particles whose decays we want to undo (i.e. W that are decayed with madspin, as the reweighting is called before madspin) + chunkers: process by chunks in case we want to later multithread the jobs. Argument is max size (in events) of the chunks + prDict : a dictionary indicating possible mismatchings between the ProcessID in the new gridpack and the old (matching the numbers at generate p p > x y z @0 in the run card) + """ + + self.prDict = prDict + self.outputLHE = outputLHE + self.fil = ROOT.TFile(theFile,"OPEN") + self.tree = self.fil.Get(theTree) + self.undoDecays = undoDecays + self.baseheader = "\n" + self.baseline1 = " {nparts} {prid} {weight} {scale} {aqed} {aqcd}\n" + self.baseender = "\n\n\n" + self.chunkers = chunkers + + def insideLoop(self): + """ Loop over all events and process the root file into a plain text LHE file""" + totalEvents = self.tree.GetEntries() + if self.chunkers == -1 or self.chunkers > totalEvents: + self.output = open(self.outputLHE,"w") + self.chunkers = totalEvents + 1 + else: + self.output = open(self.outputLHE+"chunk0","w") + chunk = 0 + + print "Processing %i events, please wait..."%totalEvents + iEv = 0 + pEv = 0 + chunk = 0 + for ev in self.tree: + iEv += 1 + pEv += 1 + if pEv >= self.chunkers: + pEv = 0 + chunk += 1 + self.output.close() + self.output = open(self.outputLHE+"chunk%i"%chunk,"w") + print "...Event %i/%i"%(iEv, totalEvents) + self.process(ev) + + def process(self, ev): + """First produce the global line like """ + self.output.write(self.baseheader.format(nplo = ord(str(ev.LHE_NpLO)) if ord(str(ev.LHE_NpLO)) != 255 else -1, npnlo = ord(str(ev.LHE_NpNLO)) if ord(str(ev.LHE_NpNLO)) != 255 else -1)) + + """Then we need to treat the whole thing to undo the madspin decays, update statuses and rewrite particle order""" + lhepart = [] + deletedIndexes = [] + for i in range(getattr(ev, "nLHEPart")): + testPart = HEPPart(ev,i) + testPart.mother1 = testPart.mother1 - sum([1*(testPart.mother1 > d) for d in deletedIndexes]) + testPart.mother2 = testPart.mother2 - sum([1*(testPart.mother2 > d) for d in deletedIndexes]) + if testPart.mother1 != 0: + if abs(lhepart[testPart.mother1-1].pdgId) in self.undoDecays: #If from something that decays after weighting just skip it and update particle indexes + deletedIndexes.append(i) + continue + if abs(testPart.pdgId) in self.undoDecays: + testPart.status = 1 + lhepart.append(testPart) + + """ Now we can compute properly the number of particles at LHE """ + self.output.write(self.baseline1.format(nparts=len(lhepart), prid=self.prDict[str(ord(str(ev.LHE_ProcessID)))], weight=ev.LHEWeight_originalXWGTUP, scale=ev.LHE_Scale,aqed=ev.LHE_AlphaQED,aqcd=ev.LHE_AlphaS)) + """ And save each particle information """ + for part in lhepart: + self.output.write(part.printPart()) + self.output.write(self.baseender) + +theP = LHEPrinter(args[1],"Events",args[2],undoDecays=[int(i) for i in args[4:]],chunkers=int(args[3]), prDict={str(i):i for i in range(1000)}) #PRDict by default set to not change anything as it is rare to use it +theP.insideLoop() diff --git a/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc b/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc index 06fbf3ba48438..11d09cc5b9fc7 100644 --- a/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc @@ -17,7 +17,8 @@ class LHETablesProducer : public edm::global::EDProducer<> { : lheTag_(edm::vector_transform(params.getParameter>("lheInfo"), [this](const edm::InputTag& tag) { return mayConsume(tag); })), precision_(params.getParameter("precision")), - storeLHEParticles_(params.getParameter("storeLHEParticles")) { + storeLHEParticles_(params.getParameter("storeLHEParticles")), + storeAllLHEInfo_(params.getParameter("storeAllLHEInfo")){ produces("LHE"); if (storeLHEParticles_) produces("LHEPart"); @@ -53,7 +54,10 @@ class LHETablesProducer : public edm::global::EDProducer<> { double lheHT = 0, lheHTIncoming = 0; unsigned int lheNj = 0, lheNb = 0, lheNc = 0, lheNuds = 0, lheNglu = 0; double lheVpt = 0; - + double alphaS = 0; + double alphaQED=0; + double scale = 0; + int idproc = 0; const auto& hepeup = lheProd.hepeup(); const auto& pup = hepeup.PUP; int lep = -1, lepBar = -1, nu = -1, nuBar = -1; @@ -61,17 +65,47 @@ class LHETablesProducer : public edm::global::EDProducer<> { std::vector vals_eta; std::vector vals_phi; std::vector vals_mass; + std::vector vals_pz; + std::vector vals_time; std::vector vals_pid; + std::vector vals_status; + std::vector vals_spin; + std::vector vals_col1; + std::vector vals_col2; + std::vector vals_mother1; + std::vector vals_mother2; + alphaS = hepeup.AQCDUP; + alphaQED = hepeup.AQEDUP; + scale = hepeup.SCALUP; + idproc = hepeup.IDPRUP; for (unsigned int i = 0, n = pup.size(); i < n; ++i) { int status = hepeup.ISTUP[i]; int idabs = std::abs(hepeup.IDUP[i]); - if (status == 1) { + if (status == 1 || status == -1 || storeAllLHEInfo_) { TLorentzVector p4(pup[i][0], pup[i][1], pup[i][2], pup[i][3]); // x,y,z,t - vals_pt.push_back(p4.Pt()); - vals_eta.push_back(p4.Eta()); - vals_phi.push_back(p4.Phi()); - vals_mass.push_back(p4.M()); vals_pid.push_back(hepeup.IDUP[i]); + vals_spin.push_back(hepeup.SPINUP[i]); + vals_status.push_back(status); + if (storeAllLHEInfo_){ + vals_col1.push_back(hepeup.ICOLUP[i].first); + vals_col2.push_back(hepeup.ICOLUP[i].second); + vals_mother1.push_back(hepeup.MOTHUP[i].first); + vals_mother2.push_back(hepeup.MOTHUP[i].second); + vals_time.push_back(hepeup.VTIMUP[i]); + } + if (status == -1) { + vals_pt.push_back(0); + vals_eta.push_back(0); + vals_phi.push_back(0); + vals_mass.push_back(0); + vals_pz.push_back(p4.Pz()); + } else { + vals_pt.push_back(p4.Pt()); + vals_eta.push_back(p4.Eta()); + vals_phi.push_back(p4.Phi()); + vals_mass.push_back(p4.M()); + vals_pz.push_back(0); + } } if ((status == 1) && ((idabs == 21) || (idabs > 0 && idabs < 7))) { //# gluons and quarks // object counters @@ -131,7 +165,12 @@ class LHETablesProducer : public edm::global::EDProducer<> { out.addColumnValue("Vpt", lheVpt, "pT of the W or Z boson at LHE step", nanoaod::FlatTable::FloatColumn); out.addColumnValue("NpNLO", lheProd.npNLO(), "number of partons at NLO", nanoaod::FlatTable::UInt8Column); out.addColumnValue("NpLO", lheProd.npLO(), "number of partons at LO", nanoaod::FlatTable::UInt8Column); - + out.addColumnValue("AlphaS", alphaS, "Per-event alphaS", nanoaod::FlatTable::FloatColumn); + if (storeAllLHEInfo_){ + out.addColumnValue("AlphaQED", alphaQED, "Per-event alphaQED", nanoaod::FlatTable::FloatColumn); + out.addColumnValue("Scale", scale, "Per-event scale", nanoaod::FlatTable::FloatColumn); + out.addColumnValue("ProcessID", idproc, "Process id (as in the card ordering)", nanoaod::FlatTable::UInt8Column); + } auto outPart = std::make_unique(vals_pt.size(), "LHEPart", false); outPart->addColumn("pt", vals_pt, "Pt of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); outPart->addColumn( @@ -140,8 +179,19 @@ class LHETablesProducer : public edm::global::EDProducer<> { "phi", vals_phi, "Phi of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); outPart->addColumn( "mass", vals_mass, "Mass of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + outPart->addColumn( + "incomingpz", vals_pz, "Pz of incoming LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); outPart->addColumn("pdgId", vals_pid, "PDG ID of LHE particles", nanoaod::FlatTable::IntColumn); - + outPart->addColumn( + "status", vals_status, "LHE particle status; -1:incoming, 1:outgoing", nanoaod::FlatTable::IntColumn); + outPart->addColumn("spin", vals_spin, "Spin of LHE particles", nanoaod::FlatTable::IntColumn); + if (storeAllLHEInfo_){ + outPart->addColumn("color1", vals_col1, "First color index of LHE particles", nanoaod::FlatTable::IntColumn); + outPart->addColumn("color2", vals_col2, "Second color index of LHE particles", nanoaod::FlatTable::IntColumn); + outPart->addColumn("mother1", vals_mother1, "First mother index of LHE particles", nanoaod::FlatTable::IntColumn); + outPart->addColumn("mother2", vals_mother2, "Second mother index of LHE particles", nanoaod::FlatTable::IntColumn); + outPart->addColumn("lifetime", vals_time, "Own lifetime of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + } return outPart; } @@ -152,6 +202,7 @@ class LHETablesProducer : public edm::global::EDProducer<> { desc.add("precision", -1)->setComment("precision on the 4-momenta of the LHE particles"); desc.add("storeLHEParticles", false) ->setComment("Whether we want to store the 4-momenta of the status 1 particles at LHE level"); + desc.add("storeAllLHEInfo", false)->setComment("Whether to store the whole set of intermediate LHE particles, not only the status +/-1 ones"); descriptions.add("lheInfoTable", desc); } @@ -159,6 +210,7 @@ class LHETablesProducer : public edm::global::EDProducer<> { const std::vector> lheTag_; const unsigned int precision_; const bool storeLHEParticles_; + const bool storeAllLHEInfo_; }; #include "FWCore/Framework/interface/MakerMacros.h" diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 15f911ebf6ad6..5dccb1ba051e3 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -16,7 +16,6 @@ from PhysicsTools.NanoAOD.triggerObjects_cff import * from PhysicsTools.NanoAOD.isotracks_cff import * from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * -from PhysicsTools.NanoAOD.genWeightsTable_cfi import * from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff import run2_nanoAOD_94X2016 @@ -105,6 +104,7 @@ cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) + cms.PSet( name = cms.string("NNPDF31_lo_as_0130"), lhaid = cms.uint32(315200) ), # SUSY signal samples use this ), namedWeightIDs = cms.vstring(), namedWeightLabels = cms.vstring(), @@ -115,7 +115,8 @@ lheInfoTable = cms.EDProducer("LHETablesProducer", lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), precision = cms.int32(14), - storeLHEParticles = cms.bool(True) + storeLHEParticles = cms.bool(True), + storeAllLHEInfo = cms.bool(False), ) l1bits=cms.EDProducer("L1TriggerResultsConverter", src=cms.InputTag("gtStage2Digis"), legacyL1=cms.bool(False), @@ -124,7 +125,7 @@ nanoSequenceCommon = cms.Sequence( nanoMetadata + jetSequence + muonSequence + tauSequence + electronSequence+photonSequence+vertexSequence+ - isoTrackSequence + # must be after all the leptons + isoTrackSequence + jetLepSequence + # must be after all the leptons linkedObjects + jetTables + muonTables + tauTables + electronTables + photonTables + globalTables +vertexTables+ metTables+simpleCleanerTable + isoTrackTables ) @@ -146,7 +147,7 @@ import RecoTauTag.RecoTau.tools.runTauIdMVA as tauIdConfig def nanoAOD_addTauIds(process): updatedTauName = "slimmedTausUpdated" - tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, cms, debug = False, updatedTauName = updatedTauName, + tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug = False, updatedTauName = updatedTauName, toKeep = [ "deepTau2017v2p1" ]) tauIdEmbedder.runTauID() process.patTauMVAIDsSeq.insert(process.patTauMVAIDsSeq.index(getattr(process, updatedTauName)), From 74c66a604c1b3999c803fc46a118b993f37983e4 Mon Sep 17 00:00:00 2001 From: Carlos Erice Date: Fri, 31 Jul 2020 01:14:06 +0200 Subject: [PATCH 108/186] Undo several changes introduced when porting the cfg --- PhysicsTools/NanoAOD/python/nano_cff.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 5dccb1ba051e3..b7371144e1f22 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -104,7 +104,6 @@ cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) - cms.PSet( name = cms.string("NNPDF31_lo_as_0130"), lhaid = cms.uint32(315200) ), # SUSY signal samples use this ), namedWeightIDs = cms.vstring(), namedWeightLabels = cms.vstring(), @@ -125,7 +124,7 @@ nanoSequenceCommon = cms.Sequence( nanoMetadata + jetSequence + muonSequence + tauSequence + electronSequence+photonSequence+vertexSequence+ - isoTrackSequence + jetLepSequence + # must be after all the leptons + isoTrackSequence + # must be after all the leptons linkedObjects + jetTables + muonTables + tauTables + electronTables + photonTables + globalTables +vertexTables+ metTables+simpleCleanerTable + isoTrackTables ) @@ -147,7 +146,7 @@ import RecoTauTag.RecoTau.tools.runTauIdMVA as tauIdConfig def nanoAOD_addTauIds(process): updatedTauName = "slimmedTausUpdated" - tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug = False, updatedTauName = updatedTauName, + tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, cms, debug = False, updatedTauName = updatedTauName, toKeep = [ "deepTau2017v2p1" ]) tauIdEmbedder.runTauID() process.patTauMVAIDsSeq.insert(process.patTauMVAIDsSeq.index(getattr(process, updatedTauName)), From 4b2d18c33456fe10de2cdb1d9cb34d20033026d1 Mon Sep 17 00:00:00 2001 From: Carlos Erice Date: Fri, 31 Jul 2020 01:22:30 +0200 Subject: [PATCH 109/186] And add a missing import --- PhysicsTools/NanoAOD/python/nano_cff.py | 1 + 1 file changed, 1 insertion(+) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index b7371144e1f22..8a13b7dda4d11 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -16,6 +16,7 @@ from PhysicsTools.NanoAOD.triggerObjects_cff import * from PhysicsTools.NanoAOD.isotracks_cff import * from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * +from PhysicsTools.NanoAOD.genWeightsTable_cfi import * from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff import run2_nanoAOD_94X2016 From ba5be6c63b9506d23357404c5e532af3ff00ad50 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 31 Jul 2020 17:55:17 +0200 Subject: [PATCH 110/186] Add PartonShower parsing for GenWeights --- .../Core/interface/WeightHelper.h | 8 ++++- .../Core/src/GenWeightHelper.cc | 6 ++-- GeneratorInterface/Core/src/WeightHelper.cc | 35 +++++++++++++++++++ .../interface/PartonShowerWeightGroupInfo.h | 10 ++++++ .../src/PartonShowerWeights.cc | 13 +++++++ 5 files changed, 69 insertions(+), 3 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index bef4ceda8f7cd..ba1cbc9609102 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -8,6 +8,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" #include "SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" #include "LHAPDF/LHAPDF.h" @@ -45,9 +46,11 @@ namespace gen { bool isScaleWeightGroup(const ParsedWeight& weight); bool isMEParamWeightGroup(const ParsedWeight& weight); bool isPdfWeightGroup(const ParsedWeight& weight); + bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight); void updatePdfInfo(const ParsedWeight& weight); + void updatePartonShowerInfo(const ParsedWeight& weight); void cleanupOrphanCentralWeight(); int getLhapdfId(const ParsedWeight& weight); @@ -61,10 +64,13 @@ namespace gen { {"mur", {"muR", "MUR", "mur", "renscfact"}}, {"pdf", {"PDF", "PDF set", "lhapdf", "pdf", "pdf set", "pdfset"}}, {"dyn", {"DYN_SCALE"}}, - {"dyn_name", {"dyn_scale_choice"}}}; + {"dyn_name", {"dyn_scale_choice"}}, + {"up", {"_up", "Hi"}}, + {"down", {"_dn", "Lo"}}}; void printWeights(); std::unique_ptr buildGroup(ParsedWeight& weight); void buildGroups(); + std::string searchString(const std::string& label, const std::string& name); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index a5cdc269222be..92113a15007a3 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -40,7 +40,9 @@ namespace gen { parsedWeights_.push_back({attributes["id"], index++, curGroup, text, attributes, groupIndex}); } else { parsedWeights_.push_back( - {"", index++, weightName, weightName, std::unordered_map(), groupIndex++}); + {weightName, index++, weightName, weightName, std::unordered_map(), groupIndex++}); + if (isPartonShowerWeightGroup(parsedWeights_.back())) + parsedWeights_.back().wgtGroup_idx = -1; // all parton showers are grouped together } // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights // else if (weightGroups_.size() == 0) { @@ -48,7 +50,7 @@ namespace gen { // } } buildGroups(); - //printWeights(); + printWeights(); } inline std::string GenWeightHelper::trim(std::string &s) { diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index bb9f248cc55a1..4b99f4083700b 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -17,6 +17,12 @@ namespace gen { return LHAPDF::lookupLHAPDFID(name) != -1; } + bool WeightHelper::isPartonShowerWeightGroup(const ParsedWeight& weight) { + // In case of mixed case (or is this necessary?) + const std::string& name = boost::to_lower_copy(weight.groupname); + return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos; + } + bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { std::string lhaidText = searchAttributes("pdf", weight); try { @@ -53,6 +59,14 @@ namespace gen { return ""; } + std::string WeightHelper::searchString(const std::string& label, const std::string& name) { + for (const auto& lab : attributeNames_.at(label)) { + if (name.find(lab) != std::string::npos) + return name.substr(0, name.find(lab)); + } + return ""; + } + std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { auto& content = weight.content; std::smatch match; @@ -143,6 +157,17 @@ namespace gen { pdfGroup.addLhaid(lhaid); } + void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight) { + auto& psGroup = dynamic_cast(weightGroups_.back()); + bool isUp = true; + std::string subName = searchString("up", weight.id); + if (subName.empty()) { + isUp = false; + subName = searchString("down", weight.id); + } + psGroup.updateWeight(weight.index, weight.id, subName, isUp); + } + // TODO: Could probably recycle this code better std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); @@ -258,6 +283,12 @@ namespace gen { } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { std::cout << wgt.description() << "\n"; + } else if (wgt.weightType() == gen::WeightType::kPartonShowerWeights) { + auto& wgtPS = dynamic_cast(wgt); + for (auto group : wgtPS.getWeightNames()) { + std::cout << group << ": up " << wgtPS.getUpIndex(group); + std::cout << " - down " << wgtPS.getDownIndex(group) << std::endl; + } } if (!wgt.isWellFormed()) std::cout << "\033[0m"; @@ -271,6 +302,8 @@ namespace gen { return std::make_unique(weight.groupname); else if (isMEParamWeightGroup(weight)) return std::make_unique(weight.groupname); + else if (isPartonShowerWeightGroup(weight)) + return std::make_unique("shower"); else if (isOrphanPdfWeightGroup(weight)) return std::make_unique(weight.groupname); @@ -300,6 +333,8 @@ namespace gen { updateScaleInfo(weight); else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(weight); + else if (group.weightType() == gen::WeightType::kPartonShowerWeights) + updatePartonShowerInfo(weight); } cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index 2634a6e327c3e..3bd861b0d507e 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -1,6 +1,8 @@ #ifndef SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h #define SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h +#include + #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { @@ -15,7 +17,15 @@ namespace gen { virtual ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); virtual PartonShowerWeightGroupInfo *clone() const override; + void updateWeight(int globalIndex, std::string id, std::string subName, bool isUp); + + size_t getUpIndex(std::string weightName) { return weightNameToUpDown[weightName].first; } + size_t getDownIndex(std::string weightName) { return weightNameToUpDown[weightName].second; } + std::vector getWeightNames() const { return weightNames; } + private: + std::unordered_map> weightNameToUpDown; + std::vector weightNames; // Is a variation of the functional form of the dynamic scale }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc index eaa004686f281..46bd94298a06c 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc @@ -6,4 +6,17 @@ namespace gen { PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { return new PartonShowerWeightGroupInfo(*this); } + + void PartonShowerWeightGroupInfo::updateWeight(int globalIndex, std::string id, std::string subName, bool isUp) { + size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; + if (weightNameToUpDown.find(subName) == weightNameToUpDown.end()) { + weightNames.push_back(subName); + weightNameToUpDown[subName] = std::pair(); + } + if (isUp) + weightNameToUpDown[subName].first = localIndex; + else + weightNameToUpDown[subName].second = localIndex; + } + } // namespace gen From 21e251a44c9fe184bab891e81b101ce763f92494 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 31 Jul 2020 17:56:53 +0200 Subject: [PATCH 111/186] Change PartonShower filename to match h file --- .../{PartonShowerWeights.cc => PartonShowerWeightGroupInfo.cc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename SimDataFormats/GeneratorProducts/src/{PartonShowerWeights.cc => PartonShowerWeightGroupInfo.cc} (100%) diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc similarity index 100% rename from SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc rename to SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc From 3180b59bfee7660535dce9e9142ba890c1319b33 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 1 Aug 2020 23:36:20 +0200 Subject: [PATCH 112/186] Don't fail if there are no LHE weights --- .../plugins/LHEWeightsTableProducer.cc | 45 +++++++++++-------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 2 +- PhysicsTools/NanoAOD/test/testNanoWeights.py | 5 ++- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 9f6bd55db7bca..58c883ee00995 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -48,25 +48,32 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; - for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - break; + bool foundLheWeights = false; + if (foundLheWeights) { + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + break; + } } } - const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); - WeightsContainer lheWeights = lheWeightProduct->weights(); + WeightsContainer lheWeights; + if (foundLheWeights) { + const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); + lheWeights = lheWeightProduct->weights(); + } edm::Handle genWeightHandle; iEvent.getByToken(genWeightToken_, genWeightHandle); const GenWeightProduct* genWeightProduct = genWeightHandle.product(); WeightsContainer genWeights = genWeightProduct->weights(); - auto lheWeightTables = std::make_unique>(); auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); + auto lheWeightTables = std::make_unique>(); + if (foundLheWeights) + addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); iEvent.put(std::move(lheWeightTables)); @@ -76,14 +83,13 @@ class LHEWeightsTableProducer : public edm::global::EDProducer typeCount = {}; + for (auto& type : gen::allWeightTypes) + typeCount[type] = 0; for (const auto& groupInfo : weightInfos) { std::string entryName = typeName; gen::WeightType weightType = groupInfo.group->weightType(); - if (previousType != weightType) - typeCount = 0; std::string name = weightTypeNames_.at(weightType); std::string label = groupInfo.group->name(); @@ -102,17 +108,16 @@ class LHEWeightsTableProducer : public edm::global::EDProducer 0) { + if (typeCount[weightType] > 0) { entryName.append("AltSet"); - entryName.append(std::to_string(typeCount)); + entryName.append(std::to_string(typeCount[weightType])); } lheWeightTables->emplace_back(weights.size(), entryName, false); lheWeightTables->back().addColumn( "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - typeCount++; - previousType = weightType; + typeCount[weightType]++; } } @@ -120,10 +125,12 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightInfoHandle; for (auto& token : lheWeightInfoTokens_) { iLumi.getByToken(token, lheWeightInfoHandle); if (lheWeightInfoHandle.isValid()) { + foundLheWeights = true; break; } } @@ -137,8 +144,10 @@ class LHEWeightsTableProducer : public edm::global::EDProducer Date: Mon, 3 Aug 2020 21:28:58 +0200 Subject: [PATCH 113/186] Fix mistake in making LHE weights optional --- .../plugins/LHEWeightsTableProducer.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 58c883ee00995..a9a7fa26a4683 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -49,12 +49,11 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; bool foundLheWeights = false; - if (foundLheWeights) { - for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - break; - } + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + foundLheWeights = true; + break; } } @@ -72,8 +71,10 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>(); - if (foundLheWeights) + if (foundLheWeights) { + std::cout << "Adding LHEweights\n"; addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); + } addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); iEvent.put(std::move(lheWeightTables)); @@ -87,6 +88,8 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightType(); @@ -96,7 +99,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducerisWellFormed() && + if (false && weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && groupInfo.group->nIdsContained() < 10) { weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); label.append( From 4d2496343c16bbb8e9fbbba7082aec85e527e0e0 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 3 Aug 2020 21:56:56 +0200 Subject: [PATCH 114/186] Fix mistake in TableOutputBranches port --- .../NanoAOD/plugins/TableOutputBranches.cc | 107 +++++++++--------- .../NanoAOD/plugins/TableOutputBranches.h | 1 - 2 files changed, 52 insertions(+), 56 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc index 3ceab440164f9..4f411b12dfe55 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc @@ -3,62 +3,58 @@ #include namespace { - std::string makeBranchName(const std::string & baseName, const std::string & leafName) { - return baseName.empty() ? leafName : - ( leafName.empty() ? baseName : - baseName + "_" + leafName); - } -} + std::string makeBranchName(const std::string &baseName, const std::string &leafName) { + return baseName.empty() ? leafName : (leafName.empty() ? baseName : baseName + "_" + leafName); + } +} // namespace -void -TableOutputBranches::defineBranchesFromFirstEvent(const nanoaod::FlatTable & tab) -{ - m_baseName=tab.name(); - for(size_t i=0;iSetTitle(m_doc.c_str()); - } +void TableOutputBranches::branch(TTree &tree) { + if (!m_singleton) { + if (m_extension == IsExtension) { + m_counterBranch = tree.FindBranch(("n" + m_baseName).c_str()); + if (!m_counterBranch) { + throw cms::Exception("LogicError", + "Trying to save an extension table for " + m_baseName + + " before having saved the corresponding main table\n"); + } + } else { + if (tree.FindBranch(("n" + m_baseName).c_str()) != nullptr) { + throw cms::Exception("LogicError", "Trying to save multiple main tables for " + m_baseName + "\n"); + } + m_counterBranch = tree.Branch(("n" + m_baseName).c_str(), &m_counter, ("n" + m_baseName + "/i").c_str()); + m_counterBranch->SetTitle(m_doc.c_str()); } - std::string varsize = m_singleton ? "" : "[n" + m_baseName + "]"; - for ( std::vector * branches : { & m_floatBranches, & m_intBranches, & m_uint8Branches } ) { - for (auto & pair : *branches) { - std::string branchName = makeBranchName(m_baseName, pair.name); - pair.branch = tree.Branch(branchName.c_str(), (void*)nullptr, (branchName + varsize + "/" + pair.rootTypeCode).c_str()); - pair.branch->SetTitle(pair.title.c_str()); - } + } + std::string varsize = m_singleton ? "" : "[n" + m_baseName + "]"; + for (std::vector *branches : {&m_floatBranches, &m_intBranches, &m_uint8Branches}) { + for (auto &pair : *branches) { + std::string branchName = makeBranchName(m_baseName, pair.name); + pair.branch = + tree.Branch(branchName.c_str(), (void *)nullptr, (branchName + varsize + "/" + pair.rootTypeCode).c_str()); + pair.branch->SetTitle(pair.title.c_str()); } + } } void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool extensions) { @@ -83,10 +79,11 @@ void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool throw cms::Exception("LogicError", "Mismatch in number of entries between extension and main table for " + tab.name()); } - for (auto & pair : m_floatBranches) fillColumn(pair, tab); - for (auto & pair : m_intBranches) fillColumn(pair, tab); - for (auto & pair : m_uint8Branches) fillColumn(pair, tab); } + for (auto &pair : m_floatBranches) + fillColumn(pair, tab); + for (auto &pair : m_intBranches) + fillColumn(pair, tab); + for (auto &pair : m_uint8Branches) + fillColumn(pair, tab); } - - diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h index 33b6d8d9fd68e..c8e4366e48539 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h @@ -48,4 +48,3 @@ class TableOutputBranches { }; #endif - From c5fa5ed42a1d3c6d2383e654e573c5cf540dd745 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 3 Aug 2020 22:31:50 +0200 Subject: [PATCH 115/186] Allow weights out of order to be added to same group --- .../Core/interface/WeightHelper.h | 12 ++--- .../Core/src/GenWeightHelper.cc | 26 +++++----- .../Core/src/LHEWeightHelper.cc | 4 +- GeneratorInterface/Core/src/WeightHelper.cc | 50 +++++++++++-------- .../interface/WeightGroupInfo.h | 6 +-- .../GeneratorProducts/src/WeightGroupInfo.cc | 34 ++++++++----- 6 files changed, 73 insertions(+), 59 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index ba1cbc9609102..38523dfb91504 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -19,11 +19,11 @@ namespace gen { struct ParsedWeight { std::string id; - size_t index; + int index; std::string groupname; std::string content; std::unordered_map attributes; - size_t wgtGroup_idx; + int wgtGroup_idx; }; class WeightHelper { @@ -48,12 +48,12 @@ namespace gen { bool isPdfWeightGroup(const ParsedWeight& weight); bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); - void updateScaleInfo(const ParsedWeight& weight); - void updatePdfInfo(const ParsedWeight& weight); - void updatePartonShowerInfo(const ParsedWeight& weight); + void updateScaleInfo(const ParsedWeight& weight, int index); + void updatePdfInfo(const ParsedWeight& weight, int index); + void updatePartonShowerInfo(const ParsedWeight& weight, int index); void cleanupOrphanCentralWeight(); - int getLhapdfId(const ParsedWeight& weight); + int getLhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 92113a15007a3..7c64c11d7f15a 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -8,16 +8,14 @@ namespace gen { void GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { parsedWeights_.clear(); - size_t index = 0; - size_t groupIndex = 0; + int index = 0; + int groupIndex = -1; + int showerGroupIndex = -1; std::string curGroup = ""; // If size is 1, it's just the central weight if (weightNames.size() <= 1) return; - for (std::string weightName : weightNames) { - std::cout << weightName << std::endl; - } for (std::string weightName : weightNames) { if (weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow @@ -37,17 +35,19 @@ namespace gen { curGroup = attributes["group"]; groupIndex++; } - parsedWeights_.push_back({attributes["id"], index++, curGroup, text, attributes, groupIndex}); + // Gen Weights can't have an ID, because they are just a std::vector in the event + attributes["id"] = ""; + parsedWeights_.push_back({attributes["id"], index, curGroup, text, attributes, groupIndex}); } else { parsedWeights_.push_back( - {weightName, index++, weightName, weightName, std::unordered_map(), groupIndex++}); - if (isPartonShowerWeightGroup(parsedWeights_.back())) - parsedWeights_.back().wgtGroup_idx = -1; // all parton showers are grouped together + {"", index, weightName, weightName, std::unordered_map(), groupIndex}); + if (isPartonShowerWeightGroup(parsedWeights_.back())) { + if (showerGroupIndex < 0) + showerGroupIndex = ++groupIndex; + parsedWeights_.back().wgtGroup_idx = showerGroupIndex; // all parton showers are grouped together + } } - // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights - // else if (weightGroups_.size() == 0) { - // weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); - // } + index++; } buildGroups(); printWeights(); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 8e21136707ad7..5f51c6658e75c 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -34,8 +34,8 @@ namespace gen { std::vector nameAlts_ = {"name", "type"}; - size_t weightIndex = 0; - size_t groupIndex = 0; + int weightIndex = 0; + int groupIndex = 0; //for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { std::string groupName = ""; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 4b99f4083700b..790b5f8f84b8c 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -18,9 +18,10 @@ namespace gen { } bool WeightHelper::isPartonShowerWeightGroup(const ParsedWeight& weight) { - // In case of mixed case (or is this necessary?) const std::string& name = boost::to_lower_copy(weight.groupname); - return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos; + // But "Nominal" and "Baseline" weights in the PS group + return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos || + name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { @@ -29,7 +30,7 @@ namespace gen { auto pairLHA = LHAPDF::lookupPDF(stoi(lhaidText)); // require pdf set to exist and it to be the first entry (ie 0) // possibly change this requirement - if (pairLHA.first != "" && pairLHA.second == 0) { + if (!pairLHA.first.empty() && pairLHA.second == 0) { weight.groupname = std::string(pairLHA.first); return true; } @@ -82,8 +83,8 @@ namespace gen { return ""; } - void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { - auto& group = weightGroups_.back(); + void WeightHelper::updateScaleInfo(const ParsedWeight& weight, int index) { + auto& group = weightGroups_[index]; auto& scaleGroup = dynamic_cast(group); std::string muRText = searchAttributes("mur", weight); std::string muFText = searchAttributes("muf", weight); @@ -117,8 +118,7 @@ namespace gen { } } - int WeightHelper::getLhapdfId(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); + int WeightHelper::getLhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup) { std::string lhaidText = searchAttributes("pdf", weight); if (!lhaidText.empty()) { try { @@ -134,9 +134,9 @@ namespace gen { return -1; } - void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - int lhaid = getLhapdfId(weight); + void WeightHelper::updatePdfInfo(const ParsedWeight& weight, int index) { + auto& pdfGroup = dynamic_cast(weightGroups_[index]); + int lhaid = getLhapdfId(weight, pdfGroup); if (pdfGroup.getParentLhapdfId() < 0) { int parentId = lhaid - LHAPDF::lookupPDF(lhaid).second; pdfGroup.setParentLhapdfInfo(parentId); @@ -157,8 +157,8 @@ namespace gen { pdfGroup.addLhaid(lhaid); } - void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight) { - auto& psGroup = dynamic_cast(weightGroups_.back()); + void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight, int index) { + auto& psGroup = dynamic_cast(weightGroups_[index]); bool isUp = true; std::string subName = searchString("up", weight.id); if (subName.empty()) { @@ -177,7 +177,8 @@ namespace gen { // Just add an empty product if (weights.size() > 1) { for (unsigned int i = 0; i < weights.size(); i++) { - addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); + std::string id = std::to_string(i); + addWeightToProduct(weightProduct, weights.at(i), id, i, weightGroupIndex); } } return std::move(weightProduct); @@ -312,29 +313,34 @@ namespace gen { void WeightHelper::buildGroups() { weightGroups_.clear(); - size_t currentGroupIdx = -1; + int currentGroupIdx = -1; for (auto& weight : parsedWeights_) { - if (currentGroupIdx != weight.wgtGroup_idx) { + if (weight.wgtGroup_idx < static_cast(weightGroups_.size())) { + currentGroupIdx = weight.wgtGroup_idx; + } + else if ((currentGroupIdx+1) == weight.wgtGroup_idx) { weightGroups_.push_back(*buildGroup(weight)); currentGroupIdx = weight.wgtGroup_idx; } + else + throw std::range_error("Invalid group index " + currentGroupIdx); // split PDF groups - if (weightGroups_.back().weightType() == gen::WeightType::kPdfWeights) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - int lhaid = getLhapdfId(weight); + if (weightGroups_[currentGroupIdx].weightType() == gen::WeightType::kPdfWeights) { + auto& pdfGroup = dynamic_cast(weightGroups_[currentGroupIdx]); + int lhaid = getLhapdfId(weight, pdfGroup); if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { weightGroups_.push_back(*buildGroup(weight)); } } - WeightGroupInfo& group = weightGroups_.back(); + WeightGroupInfo& group = weightGroups_[currentGroupIdx]; group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) - updateScaleInfo(weight); + updateScaleInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPdfWeights) - updatePdfInfo(weight); + updatePdfInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPartonShowerWeights) - updatePartonShowerInfo(weight); + updatePartonShowerInfo(weight, currentGroupIdx); } cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 1c9eb2c2c1ab7..2589366d6c2f8 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -55,9 +55,9 @@ namespace gen { virtual WeightGroupInfo* clone() const; WeightMetaInfo weightMetaInfo(int weightEntry) const; WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId) const; - bool containsWeight(const std::string& wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId) const; + bool containsWeight(std::string& wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId, int weightEntry) const; void addContainedId(int weightEntry, std::string id, std::string label); std::vector containedIds() const; bool indexInRange(int index) const; diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index ecc3e3625ef1e..57d1d481dcdf3 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -24,6 +24,8 @@ namespace gen { WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { + if (wgtId.empty()) + wgtId = std::to_string(weightEntry); int entry = weightVectorEntry(wgtId, weightEntry); if (entry < 0 || entry >= static_cast(idsContained_.size())) throw std::range_error("Weight entry " + std::to_string(weightEntry) + " is not a member of group " + name_ + @@ -31,20 +33,21 @@ namespace gen { return idsContained_.at(entry); } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } + int WeightGroupInfo::weightVectorEntry(std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } - bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { + bool WeightGroupInfo::containsWeight(std::string& wgtId, int weightEntry) const { return weightVectorEntry(wgtId, weightEntry) != -1; } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { + int WeightGroupInfo::weightVectorEntry(std::string& wgtId, int weightEntry) const { + if (wgtId.empty()) + wgtId = std::to_string(weightEntry); // First try ordered search - if (indexInRange(weightEntry)) { - size_t orderedEntry = weightEntry - firstId_; - if (orderedEntry < idsContained_.size()) - if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { - return orderedEntry; - } + size_t orderedEntry = weightEntry - firstId_; + if (indexInRange(weightEntry) && orderedEntry < idsContained_.size()) { + if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { + return orderedEntry; + } } // Fall back to search on ID else if (!wgtId.empty()) { @@ -57,19 +60,24 @@ namespace gen { } void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label = "") { + if (id.empty()) + id = std::to_string(weightEntry); + if (firstId_ == -1 || weightEntry < firstId_) { firstId_ = weightEntry; for (auto& entry : idsContained_) // Reset if indices need to be shifted - entry.localIndex = entry.globalIndex - firstId_; + entry.localIndex++; } if (weightEntry > lastId_) lastId_ = weightEntry; - size_t localIndex = weightEntry - firstId_; + size_t localIndex = std::min(weightEntry - firstId_, static_cast(idsContained_.size())); WeightMetaInfo info = {static_cast(weightEntry), localIndex, id, label}; // logic to insert for all cases e.g. inserting in the middle of the vector - idsContained_.resize(lastId_ - firstId_); - idsContained_.insert(idsContained_.begin() + localIndex, info); + if (localIndex == idsContained_.size()) + idsContained_.emplace_back(info); + else + idsContained_.insert(idsContained_.begin() + localIndex, info); } std::vector WeightGroupInfo::containedIds() const { return idsContained_; } From d057424e79f0cd65fe4aa2df693f8abcda5bc521 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 4 Aug 2020 01:43:31 +0200 Subject: [PATCH 116/186] LHEWeightsProducer doesn't fail if no LHE weights --- .../Core/plugins/LHEWeightProductProducer.cc | 58 ++++++++++++++----- .../Core/src/GenWeightHelper.cc | 2 +- .../plugins/LHEWeightsTableProducer.cc | 3 - PhysicsTools/NanoAOD/python/nanogen_cff.py | 7 ++- 4 files changed, 47 insertions(+), 23 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 3a32117fc3cc0..6b25ac35c4ae0 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -24,6 +24,7 @@ #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/Utilities/interface/transform.h" class LHEWeightProductProducer : public edm::one::EDProducer { public: @@ -32,11 +33,12 @@ class LHEWeightProductProducer : public edm::one::EDProducer lheRunInfoToken_; - edm::EDGetTokenT lheEventToken_; - const edm::EDGetTokenT lheWeightInfoToken_; + std::vector lheLabels_; + std::vector> lheEventTokens_; + std::vector> lheRunInfoTokens_; + std::vector> lheWeightInfoTokens_; bool foundWeightProduct_ = false; + bool hasLhe_ = false; void produce(edm::Event&, const edm::EventSetup&) override; void beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) override; @@ -46,10 +48,13 @@ class LHEWeightProductProducer : public edm::one::EDProducer("lheSourceLabel")), - lheRunInfoToken_(consumes(lheLabel_)), - lheEventToken_(consumes(lheLabel_)), - lheWeightInfoToken_(consumes(lheLabel_)) { + : lheLabels_(iConfig.getParameter>("lheSourceLabels")), + lheEventTokens_(edm::vector_transform(lheLabels_, + [this](const std::string& tag) { return mayConsume(tag); })), + lheRunInfoTokens_(edm::vector_transform(lheLabels_, + [this](const std::string& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform(lheLabels_, + [this](const std::string& tag) { return mayConsume(tag); })) { produces(); produces(); } @@ -58,19 +63,33 @@ LHEWeightProductProducer::~LHEWeightProductProducer() {} // ------------ method called to produce the data ------------ void LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { - if (foundWeightProduct_) + if (foundWeightProduct_ || !hasLhe_) return; edm::Handle lheEventInfo; - iEvent.getByToken(lheEventToken_, lheEventInfo); - // Read weights from LHEEventProduct + for (auto& token : lheEventTokens_) { + iEvent.getByToken(token, lheEventInfo); + if (lheEventInfo.isValid()) { + break; + } + } + auto weightProduct = weightHelper_.weightProduct(lheEventInfo->weights(), lheEventInfo->originalXWGTUP()); iEvent.put(std::move(weightProduct)); } void LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { edm::Handle lheRunInfoHandle; - run.getByLabel(lheLabel_, lheRunInfoHandle); + for (auto& label : lheLabels_) { + run.getByLabel(label, lheRunInfoHandle); + if (lheRunInfoHandle.isValid()) { + hasLhe_ = true; + break; + } + } + if (!hasLhe_) + return; + typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; @@ -88,11 +107,18 @@ void LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { edm::Handle lheWeightInfoHandle; - lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundWeightProduct_ = true; - return; + + for (auto& token : lheWeightInfoTokens_) { + lumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundWeightProduct_ = true; + return; + } } + + if (!hasLhe_) + return; + weightHelper_.parseWeights(); auto weightInfoProduct = std::make_unique(); diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 7c64c11d7f15a..50c01434e67b0 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -28,7 +28,7 @@ namespace gen { std::vector subInfo; boost::split(subInfo, i, boost::is_any_of("=")); if (subInfo.size() == 2) { - attributes[trim(subInfo[0])] = trim(subInfo[1]); + attributes[boost::algorithm::trim_copy(subInfo[0])] = boost::algorithm::trim_copy(subInfo[1]); } } if (attributes["group"] != curGroup) { diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index a9a7fa26a4683..56ff5f4f66ada 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -72,7 +72,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>(); if (foundLheWeights) { - std::cout << "Adding LHEweights\n"; addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); } addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); @@ -88,8 +87,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightType(); diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index cc80c1d402a0b..ffd7a82c2b324 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -11,8 +11,9 @@ genLumiInfoHeader = cms.InputTag("generator")) lheWeights = cms.EDProducer("LHEWeightProductProducer", - # TODO: Should take a vstring of inputs - lheSourceLabel = cms.string("externalLHEProducer")) + lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]) + #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) +) lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", @@ -78,7 +79,7 @@ nanogenMiniSequence = cms.Sequence( genWeights+ - #lheWeights+ + lheWeights+ nanoMetadata+ mergedGenParticles+ genParticles2HepMC+ From 801700a7f54d8cac036951c386be0803b3772b5e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 4 Aug 2020 01:47:34 +0200 Subject: [PATCH 117/186] Use boost trim --- GeneratorInterface/Core/interface/GenWeightHelper.h | 4 ---- GeneratorInterface/Core/src/GenWeightHelper.cc | 6 ------ 2 files changed, 10 deletions(-) diff --git a/GeneratorInterface/Core/interface/GenWeightHelper.h b/GeneratorInterface/Core/interface/GenWeightHelper.h index 23a337cd7abc3..1a1724b36792e 100644 --- a/GeneratorInterface/Core/interface/GenWeightHelper.h +++ b/GeneratorInterface/Core/interface/GenWeightHelper.h @@ -19,11 +19,7 @@ namespace gen { class GenWeightHelper : public WeightHelper { public: GenWeightHelper(); - void parseWeightGroupsFromNames(std::vector weightNames); - - private: - static inline std::string trim(std::string &s); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 50c01434e67b0..ccc7f0b99b1a3 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -52,10 +52,4 @@ namespace gen { buildGroups(); printWeights(); } - - inline std::string GenWeightHelper::trim(std::string &s) { - s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace)))); - s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()); - return s; - } } // namespace gen From 0f1a1ac5e9a4226e4c2de24ea7ed5450e8f59fdf Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sat, 1 Aug 2020 23:36:20 +0200 Subject: [PATCH 118/186] Don't fail if there are no LHE weights --- .../plugins/LHEWeightsTableProducer.cc | 45 +++++++++++-------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 2 +- PhysicsTools/NanoAOD/test/testNanoWeights.py | 5 ++- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 9f6bd55db7bca..58c883ee00995 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -48,25 +48,32 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; - for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - break; + bool foundLheWeights = false; + if (foundLheWeights) { + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + break; + } } } - const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); - WeightsContainer lheWeights = lheWeightProduct->weights(); + WeightsContainer lheWeights; + if (foundLheWeights) { + const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); + lheWeights = lheWeightProduct->weights(); + } edm::Handle genWeightHandle; iEvent.getByToken(genWeightToken_, genWeightHandle); const GenWeightProduct* genWeightProduct = genWeightHandle.product(); WeightsContainer genWeights = genWeightProduct->weights(); - auto lheWeightTables = std::make_unique>(); auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); + auto lheWeightTables = std::make_unique>(); + if (foundLheWeights) + addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); iEvent.put(std::move(lheWeightTables)); @@ -76,14 +83,13 @@ class LHEWeightsTableProducer : public edm::global::EDProducer typeCount = {}; + for (auto& type : gen::allWeightTypes) + typeCount[type] = 0; for (const auto& groupInfo : weightInfos) { std::string entryName = typeName; gen::WeightType weightType = groupInfo.group->weightType(); - if (previousType != weightType) - typeCount = 0; std::string name = weightTypeNames_.at(weightType); std::string label = groupInfo.group->name(); @@ -102,17 +108,16 @@ class LHEWeightsTableProducer : public edm::global::EDProducer 0) { + if (typeCount[weightType] > 0) { entryName.append("AltSet"); - entryName.append(std::to_string(typeCount)); + entryName.append(std::to_string(typeCount[weightType])); } lheWeightTables->emplace_back(weights.size(), entryName, false); lheWeightTables->back().addColumn( "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - typeCount++; - previousType = weightType; + typeCount[weightType]++; } } @@ -120,10 +125,12 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightInfoHandle; for (auto& token : lheWeightInfoTokens_) { iLumi.getByToken(token, lheWeightInfoHandle); if (lheWeightInfoHandle.isValid()) { + foundLheWeights = true; break; } } @@ -137,8 +144,10 @@ class LHEWeightsTableProducer : public edm::global::EDProducer Date: Mon, 3 Aug 2020 21:28:58 +0200 Subject: [PATCH 119/186] Fix mistake in making LHE weights optional --- .../plugins/LHEWeightsTableProducer.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 58c883ee00995..a9a7fa26a4683 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -49,12 +49,11 @@ class LHEWeightsTableProducer : public edm::global::EDProducer lheWeightHandle; bool foundLheWeights = false; - if (foundLheWeights) { - for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - break; - } + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + foundLheWeights = true; + break; } } @@ -72,8 +71,10 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>(); - if (foundLheWeights) + if (foundLheWeights) { + std::cout << "Adding LHEweights\n"; addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); + } addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); iEvent.put(std::move(lheWeightTables)); @@ -87,6 +88,8 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightType(); @@ -96,7 +99,7 @@ class LHEWeightsTableProducer : public edm::global::EDProducerisWellFormed() && + if (false && weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && groupInfo.group->nIdsContained() < 10) { weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); label.append( From 1e647bc3af4df7af3c65d0bd54060a0da68c812f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 3 Aug 2020 21:56:56 +0200 Subject: [PATCH 120/186] Fix mistake in TableOutputBranches port --- .../NanoAOD/plugins/TableOutputBranches.cc | 107 +++++++++--------- .../NanoAOD/plugins/TableOutputBranches.h | 1 - 2 files changed, 52 insertions(+), 56 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc index 3ceab440164f9..4f411b12dfe55 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc @@ -3,62 +3,58 @@ #include namespace { - std::string makeBranchName(const std::string & baseName, const std::string & leafName) { - return baseName.empty() ? leafName : - ( leafName.empty() ? baseName : - baseName + "_" + leafName); - } -} + std::string makeBranchName(const std::string &baseName, const std::string &leafName) { + return baseName.empty() ? leafName : (leafName.empty() ? baseName : baseName + "_" + leafName); + } +} // namespace -void -TableOutputBranches::defineBranchesFromFirstEvent(const nanoaod::FlatTable & tab) -{ - m_baseName=tab.name(); - for(size_t i=0;iSetTitle(m_doc.c_str()); - } +void TableOutputBranches::branch(TTree &tree) { + if (!m_singleton) { + if (m_extension == IsExtension) { + m_counterBranch = tree.FindBranch(("n" + m_baseName).c_str()); + if (!m_counterBranch) { + throw cms::Exception("LogicError", + "Trying to save an extension table for " + m_baseName + + " before having saved the corresponding main table\n"); + } + } else { + if (tree.FindBranch(("n" + m_baseName).c_str()) != nullptr) { + throw cms::Exception("LogicError", "Trying to save multiple main tables for " + m_baseName + "\n"); + } + m_counterBranch = tree.Branch(("n" + m_baseName).c_str(), &m_counter, ("n" + m_baseName + "/i").c_str()); + m_counterBranch->SetTitle(m_doc.c_str()); } - std::string varsize = m_singleton ? "" : "[n" + m_baseName + "]"; - for ( std::vector * branches : { & m_floatBranches, & m_intBranches, & m_uint8Branches } ) { - for (auto & pair : *branches) { - std::string branchName = makeBranchName(m_baseName, pair.name); - pair.branch = tree.Branch(branchName.c_str(), (void*)nullptr, (branchName + varsize + "/" + pair.rootTypeCode).c_str()); - pair.branch->SetTitle(pair.title.c_str()); - } + } + std::string varsize = m_singleton ? "" : "[n" + m_baseName + "]"; + for (std::vector *branches : {&m_floatBranches, &m_intBranches, &m_uint8Branches}) { + for (auto &pair : *branches) { + std::string branchName = makeBranchName(m_baseName, pair.name); + pair.branch = + tree.Branch(branchName.c_str(), (void *)nullptr, (branchName + varsize + "/" + pair.rootTypeCode).c_str()); + pair.branch->SetTitle(pair.title.c_str()); } + } } void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool extensions) { @@ -83,10 +79,11 @@ void TableOutputBranches::fill(const nanoaod::FlatTable &tab, TTree &tree, bool throw cms::Exception("LogicError", "Mismatch in number of entries between extension and main table for " + tab.name()); } - for (auto & pair : m_floatBranches) fillColumn(pair, tab); - for (auto & pair : m_intBranches) fillColumn(pair, tab); - for (auto & pair : m_uint8Branches) fillColumn(pair, tab); } + for (auto &pair : m_floatBranches) + fillColumn(pair, tab); + for (auto &pair : m_intBranches) + fillColumn(pair, tab); + for (auto &pair : m_uint8Branches) + fillColumn(pair, tab); } - - diff --git a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h index 33b6d8d9fd68e..c8e4366e48539 100644 --- a/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h +++ b/PhysicsTools/NanoAOD/plugins/TableOutputBranches.h @@ -48,4 +48,3 @@ class TableOutputBranches { }; #endif - From d3c6755e2b5da61db6bff8f6acadb0cf62e6d1db Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 3 Aug 2020 22:31:50 +0200 Subject: [PATCH 121/186] Allow weights out of order to be added to same group --- .../Core/interface/WeightHelper.h | 12 ++--- .../Core/src/GenWeightHelper.cc | 26 +++++----- .../Core/src/LHEWeightHelper.cc | 4 +- GeneratorInterface/Core/src/WeightHelper.cc | 50 +++++++++++-------- .../interface/WeightGroupInfo.h | 6 +-- .../GeneratorProducts/src/WeightGroupInfo.cc | 34 ++++++++----- 6 files changed, 73 insertions(+), 59 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index ba1cbc9609102..38523dfb91504 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -19,11 +19,11 @@ namespace gen { struct ParsedWeight { std::string id; - size_t index; + int index; std::string groupname; std::string content; std::unordered_map attributes; - size_t wgtGroup_idx; + int wgtGroup_idx; }; class WeightHelper { @@ -48,12 +48,12 @@ namespace gen { bool isPdfWeightGroup(const ParsedWeight& weight); bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); - void updateScaleInfo(const ParsedWeight& weight); - void updatePdfInfo(const ParsedWeight& weight); - void updatePartonShowerInfo(const ParsedWeight& weight); + void updateScaleInfo(const ParsedWeight& weight, int index); + void updatePdfInfo(const ParsedWeight& weight, int index); + void updatePartonShowerInfo(const ParsedWeight& weight, int index); void cleanupOrphanCentralWeight(); - int getLhapdfId(const ParsedWeight& weight); + int getLhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 92113a15007a3..7c64c11d7f15a 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -8,16 +8,14 @@ namespace gen { void GenWeightHelper::parseWeightGroupsFromNames(std::vector weightNames) { parsedWeights_.clear(); - size_t index = 0; - size_t groupIndex = 0; + int index = 0; + int groupIndex = -1; + int showerGroupIndex = -1; std::string curGroup = ""; // If size is 1, it's just the central weight if (weightNames.size() <= 1) return; - for (std::string weightName : weightNames) { - std::cout << weightName << std::endl; - } for (std::string weightName : weightNames) { if (weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow @@ -37,17 +35,19 @@ namespace gen { curGroup = attributes["group"]; groupIndex++; } - parsedWeights_.push_back({attributes["id"], index++, curGroup, text, attributes, groupIndex}); + // Gen Weights can't have an ID, because they are just a std::vector in the event + attributes["id"] = ""; + parsedWeights_.push_back({attributes["id"], index, curGroup, text, attributes, groupIndex}); } else { parsedWeights_.push_back( - {weightName, index++, weightName, weightName, std::unordered_map(), groupIndex++}); - if (isPartonShowerWeightGroup(parsedWeights_.back())) - parsedWeights_.back().wgtGroup_idx = -1; // all parton showers are grouped together + {"", index, weightName, weightName, std::unordered_map(), groupIndex}); + if (isPartonShowerWeightGroup(parsedWeights_.back())) { + if (showerGroupIndex < 0) + showerGroupIndex = ++groupIndex; + parsedWeights_.back().wgtGroup_idx = showerGroupIndex; // all parton showers are grouped together + } } - // Working on the not-so-nice assumption that all non-LHE gen weights are PS weights - // else if (weightGroups_.size() == 0) { - // weightGroups_.push_back(new gen::PartonShowerWeightGroupInfo("shower")); - // } + index++; } buildGroups(); printWeights(); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 8e21136707ad7..5f51c6658e75c 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -34,8 +34,8 @@ namespace gen { std::vector nameAlts_ = {"name", "type"}; - size_t weightIndex = 0; - size_t groupIndex = 0; + int weightIndex = 0; + int groupIndex = 0; //for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { std::string groupName = ""; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 4b99f4083700b..790b5f8f84b8c 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -18,9 +18,10 @@ namespace gen { } bool WeightHelper::isPartonShowerWeightGroup(const ParsedWeight& weight) { - // In case of mixed case (or is this necessary?) const std::string& name = boost::to_lower_copy(weight.groupname); - return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos; + // But "Nominal" and "Baseline" weights in the PS group + return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos || + name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { @@ -29,7 +30,7 @@ namespace gen { auto pairLHA = LHAPDF::lookupPDF(stoi(lhaidText)); // require pdf set to exist and it to be the first entry (ie 0) // possibly change this requirement - if (pairLHA.first != "" && pairLHA.second == 0) { + if (!pairLHA.first.empty() && pairLHA.second == 0) { weight.groupname = std::string(pairLHA.first); return true; } @@ -82,8 +83,8 @@ namespace gen { return ""; } - void WeightHelper::updateScaleInfo(const ParsedWeight& weight) { - auto& group = weightGroups_.back(); + void WeightHelper::updateScaleInfo(const ParsedWeight& weight, int index) { + auto& group = weightGroups_[index]; auto& scaleGroup = dynamic_cast(group); std::string muRText = searchAttributes("mur", weight); std::string muFText = searchAttributes("muf", weight); @@ -117,8 +118,7 @@ namespace gen { } } - int WeightHelper::getLhapdfId(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); + int WeightHelper::getLhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup) { std::string lhaidText = searchAttributes("pdf", weight); if (!lhaidText.empty()) { try { @@ -134,9 +134,9 @@ namespace gen { return -1; } - void WeightHelper::updatePdfInfo(const ParsedWeight& weight) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - int lhaid = getLhapdfId(weight); + void WeightHelper::updatePdfInfo(const ParsedWeight& weight, int index) { + auto& pdfGroup = dynamic_cast(weightGroups_[index]); + int lhaid = getLhapdfId(weight, pdfGroup); if (pdfGroup.getParentLhapdfId() < 0) { int parentId = lhaid - LHAPDF::lookupPDF(lhaid).second; pdfGroup.setParentLhapdfInfo(parentId); @@ -157,8 +157,8 @@ namespace gen { pdfGroup.addLhaid(lhaid); } - void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight) { - auto& psGroup = dynamic_cast(weightGroups_.back()); + void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight, int index) { + auto& psGroup = dynamic_cast(weightGroups_[index]); bool isUp = true; std::string subName = searchString("up", weight.id); if (subName.empty()) { @@ -177,7 +177,8 @@ namespace gen { // Just add an empty product if (weights.size() > 1) { for (unsigned int i = 0; i < weights.size(); i++) { - addWeightToProduct(weightProduct, weights.at(i), "", i, weightGroupIndex); + std::string id = std::to_string(i); + addWeightToProduct(weightProduct, weights.at(i), id, i, weightGroupIndex); } } return std::move(weightProduct); @@ -312,29 +313,34 @@ namespace gen { void WeightHelper::buildGroups() { weightGroups_.clear(); - size_t currentGroupIdx = -1; + int currentGroupIdx = -1; for (auto& weight : parsedWeights_) { - if (currentGroupIdx != weight.wgtGroup_idx) { + if (weight.wgtGroup_idx < static_cast(weightGroups_.size())) { + currentGroupIdx = weight.wgtGroup_idx; + } + else if ((currentGroupIdx+1) == weight.wgtGroup_idx) { weightGroups_.push_back(*buildGroup(weight)); currentGroupIdx = weight.wgtGroup_idx; } + else + throw std::range_error("Invalid group index " + currentGroupIdx); // split PDF groups - if (weightGroups_.back().weightType() == gen::WeightType::kPdfWeights) { - auto& pdfGroup = dynamic_cast(weightGroups_.back()); - int lhaid = getLhapdfId(weight); + if (weightGroups_[currentGroupIdx].weightType() == gen::WeightType::kPdfWeights) { + auto& pdfGroup = dynamic_cast(weightGroups_[currentGroupIdx]); + int lhaid = getLhapdfId(weight, pdfGroup); if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { weightGroups_.push_back(*buildGroup(weight)); } } - WeightGroupInfo& group = weightGroups_.back(); + WeightGroupInfo& group = weightGroups_[currentGroupIdx]; group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) - updateScaleInfo(weight); + updateScaleInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPdfWeights) - updatePdfInfo(weight); + updatePdfInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPartonShowerWeights) - updatePartonShowerInfo(weight); + updatePartonShowerInfo(weight, currentGroupIdx); } cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 1c9eb2c2c1ab7..2589366d6c2f8 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -55,9 +55,9 @@ namespace gen { virtual WeightGroupInfo* clone() const; WeightMetaInfo weightMetaInfo(int weightEntry) const; WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId) const; - bool containsWeight(const std::string& wgtId, int weightEntry) const; - int weightVectorEntry(const std::string& wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId) const; + bool containsWeight(std::string& wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId, int weightEntry) const; void addContainedId(int weightEntry, std::string id, std::string label); std::vector containedIds() const; bool indexInRange(int index) const; diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index ecc3e3625ef1e..57d1d481dcdf3 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -24,6 +24,8 @@ namespace gen { WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { + if (wgtId.empty()) + wgtId = std::to_string(weightEntry); int entry = weightVectorEntry(wgtId, weightEntry); if (entry < 0 || entry >= static_cast(idsContained_.size())) throw std::range_error("Weight entry " + std::to_string(weightEntry) + " is not a member of group " + name_ + @@ -31,20 +33,21 @@ namespace gen { return idsContained_.at(entry); } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } + int WeightGroupInfo::weightVectorEntry(std::string& wgtId) const { return weightVectorEntry(wgtId, 0); } - bool WeightGroupInfo::containsWeight(const std::string& wgtId, int weightEntry) const { + bool WeightGroupInfo::containsWeight(std::string& wgtId, int weightEntry) const { return weightVectorEntry(wgtId, weightEntry) != -1; } - int WeightGroupInfo::weightVectorEntry(const std::string& wgtId, int weightEntry) const { + int WeightGroupInfo::weightVectorEntry(std::string& wgtId, int weightEntry) const { + if (wgtId.empty()) + wgtId = std::to_string(weightEntry); // First try ordered search - if (indexInRange(weightEntry)) { - size_t orderedEntry = weightEntry - firstId_; - if (orderedEntry < idsContained_.size()) - if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { - return orderedEntry; - } + size_t orderedEntry = weightEntry - firstId_; + if (indexInRange(weightEntry) && orderedEntry < idsContained_.size()) { + if (wgtId.empty() || idsContained_.at(orderedEntry).id == wgtId) { + return orderedEntry; + } } // Fall back to search on ID else if (!wgtId.empty()) { @@ -57,19 +60,24 @@ namespace gen { } void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label = "") { + if (id.empty()) + id = std::to_string(weightEntry); + if (firstId_ == -1 || weightEntry < firstId_) { firstId_ = weightEntry; for (auto& entry : idsContained_) // Reset if indices need to be shifted - entry.localIndex = entry.globalIndex - firstId_; + entry.localIndex++; } if (weightEntry > lastId_) lastId_ = weightEntry; - size_t localIndex = weightEntry - firstId_; + size_t localIndex = std::min(weightEntry - firstId_, static_cast(idsContained_.size())); WeightMetaInfo info = {static_cast(weightEntry), localIndex, id, label}; // logic to insert for all cases e.g. inserting in the middle of the vector - idsContained_.resize(lastId_ - firstId_); - idsContained_.insert(idsContained_.begin() + localIndex, info); + if (localIndex == idsContained_.size()) + idsContained_.emplace_back(info); + else + idsContained_.insert(idsContained_.begin() + localIndex, info); } std::vector WeightGroupInfo::containedIds() const { return idsContained_; } From 20f26343af75c5c1e11df57345c3ffb4c95a938d Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 4 Aug 2020 01:43:31 +0200 Subject: [PATCH 122/186] LHEWeightsProducer doesn't fail if no LHE weights --- .../Core/plugins/LHEWeightProductProducer.cc | 58 ++++++++++++++----- .../Core/src/GenWeightHelper.cc | 2 +- .../plugins/LHEWeightsTableProducer.cc | 3 - PhysicsTools/NanoAOD/python/nanogen_cff.py | 7 ++- 4 files changed, 47 insertions(+), 23 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 3a32117fc3cc0..6b25ac35c4ae0 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -24,6 +24,7 @@ #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/Utilities/interface/transform.h" class LHEWeightProductProducer : public edm::one::EDProducer { public: @@ -32,11 +33,12 @@ class LHEWeightProductProducer : public edm::one::EDProducer lheRunInfoToken_; - edm::EDGetTokenT lheEventToken_; - const edm::EDGetTokenT lheWeightInfoToken_; + std::vector lheLabels_; + std::vector> lheEventTokens_; + std::vector> lheRunInfoTokens_; + std::vector> lheWeightInfoTokens_; bool foundWeightProduct_ = false; + bool hasLhe_ = false; void produce(edm::Event&, const edm::EventSetup&) override; void beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) override; @@ -46,10 +48,13 @@ class LHEWeightProductProducer : public edm::one::EDProducer("lheSourceLabel")), - lheRunInfoToken_(consumes(lheLabel_)), - lheEventToken_(consumes(lheLabel_)), - lheWeightInfoToken_(consumes(lheLabel_)) { + : lheLabels_(iConfig.getParameter>("lheSourceLabels")), + lheEventTokens_(edm::vector_transform(lheLabels_, + [this](const std::string& tag) { return mayConsume(tag); })), + lheRunInfoTokens_(edm::vector_transform(lheLabels_, + [this](const std::string& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform(lheLabels_, + [this](const std::string& tag) { return mayConsume(tag); })) { produces(); produces(); } @@ -58,19 +63,33 @@ LHEWeightProductProducer::~LHEWeightProductProducer() {} // ------------ method called to produce the data ------------ void LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { - if (foundWeightProduct_) + if (foundWeightProduct_ || !hasLhe_) return; edm::Handle lheEventInfo; - iEvent.getByToken(lheEventToken_, lheEventInfo); - // Read weights from LHEEventProduct + for (auto& token : lheEventTokens_) { + iEvent.getByToken(token, lheEventInfo); + if (lheEventInfo.isValid()) { + break; + } + } + auto weightProduct = weightHelper_.weightProduct(lheEventInfo->weights(), lheEventInfo->originalXWGTUP()); iEvent.put(std::move(weightProduct)); } void LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup const& es) { edm::Handle lheRunInfoHandle; - run.getByLabel(lheLabel_, lheRunInfoHandle); + for (auto& label : lheLabels_) { + run.getByLabel(label, lheRunInfoHandle); + if (lheRunInfoHandle.isValid()) { + hasLhe_ = true; + break; + } + } + if (!hasLhe_) + return; + typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; @@ -88,11 +107,18 @@ void LHEWeightProductProducer::endRun(edm::Run const& run, edm::EventSetup const void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { edm::Handle lheWeightInfoHandle; - lumi.getByToken(lheWeightInfoToken_, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundWeightProduct_ = true; - return; + + for (auto& token : lheWeightInfoTokens_) { + lumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundWeightProduct_ = true; + return; + } } + + if (!hasLhe_) + return; + weightHelper_.parseWeights(); auto weightInfoProduct = std::make_unique(); diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 7c64c11d7f15a..50c01434e67b0 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -28,7 +28,7 @@ namespace gen { std::vector subInfo; boost::split(subInfo, i, boost::is_any_of("=")); if (subInfo.size() == 2) { - attributes[trim(subInfo[0])] = trim(subInfo[1]); + attributes[boost::algorithm::trim_copy(subInfo[0])] = boost::algorithm::trim_copy(subInfo[1]); } } if (attributes["group"] != curGroup) { diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index a9a7fa26a4683..56ff5f4f66ada 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -72,7 +72,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducer>(); if (foundLheWeights) { - std::cout << "Adding LHEweights\n"; addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); } addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); @@ -88,8 +87,6 @@ class LHEWeightsTableProducer : public edm::global::EDProducerweightType(); diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index cc80c1d402a0b..ffd7a82c2b324 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -11,8 +11,9 @@ genLumiInfoHeader = cms.InputTag("generator")) lheWeights = cms.EDProducer("LHEWeightProductProducer", - # TODO: Should take a vstring of inputs - lheSourceLabel = cms.string("externalLHEProducer")) + lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]) + #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) +) lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", @@ -78,7 +79,7 @@ nanogenMiniSequence = cms.Sequence( genWeights+ - #lheWeights+ + lheWeights+ nanoMetadata+ mergedGenParticles+ genParticles2HepMC+ From 70ef7d82ffa785d277578e0038d3843b2a047cf4 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 4 Aug 2020 01:47:34 +0200 Subject: [PATCH 123/186] Use boost trim --- GeneratorInterface/Core/interface/GenWeightHelper.h | 4 ---- GeneratorInterface/Core/src/GenWeightHelper.cc | 6 ------ 2 files changed, 10 deletions(-) diff --git a/GeneratorInterface/Core/interface/GenWeightHelper.h b/GeneratorInterface/Core/interface/GenWeightHelper.h index 23a337cd7abc3..1a1724b36792e 100644 --- a/GeneratorInterface/Core/interface/GenWeightHelper.h +++ b/GeneratorInterface/Core/interface/GenWeightHelper.h @@ -19,11 +19,7 @@ namespace gen { class GenWeightHelper : public WeightHelper { public: GenWeightHelper(); - void parseWeightGroupsFromNames(std::vector weightNames); - - private: - static inline std::string trim(std::string &s); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 50c01434e67b0..ccc7f0b99b1a3 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -52,10 +52,4 @@ namespace gen { buildGroups(); printWeights(); } - - inline std::string GenWeightHelper::trim(std::string &s) { - s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace)))); - s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()); - return s; - } } // namespace gen From 4ff6aa0bf905d62141cd23aad3a260b1f497f228 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 4 Aug 2020 10:12:12 +0200 Subject: [PATCH 124/186] Add option for raising expection if XML is not valid --- GeneratorInterface/Core/interface/LHEWeightHelper.h | 3 ++- .../Core/plugins/LHEWeightProductProducer.cc | 1 + GeneratorInterface/Core/src/LHEWeightHelper.cc | 12 ++++++++++-- .../Core/test/testGenWeightProducer_cfg.py | 5 +++-- PhysicsTools/NanoAOD/python/nanogen_cff.py | 3 ++- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index ef3371c4095d6..f29aaf5f2f7df 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -24,9 +24,10 @@ namespace gen { void parseWeights(); bool isConsistent(); void swapHeaders(); - + void setFailIfInvalidXML(bool value) { failIfInvalidXML_ = value; } private: std::vector headerLines_; + bool failIfInvalidXML_ = false; }; } // namespace gen diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 6b25ac35c4ae0..f06d68d5e81f4 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -57,6 +57,7 @@ LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iCon [this](const std::string& tag) { return mayConsume(tag); })) { produces(); produces(); + weightHelper_.setFailIfInvalidXML(iConfig.getUntrackedParameter("failIfInvalidXML", false)); } LHEWeightProductProducer::~LHEWeightProductProducer() {} diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 5f51c6658e75c..00cd7b2ad6e6b 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -2,6 +2,7 @@ #include #include #include +#include using namespace tinyxml2; @@ -11,7 +12,11 @@ namespace gen { void LHEWeightHelper::parseWeights() { parsedWeights_.clear(); - if (!isConsistent()) { + if (!isConsistent() && failIfInvalidXML_) { + throw std::runtime_error( "XML in LHE is not consistent: Most likely, tags were swapped.\n" \ + "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" \ + "WARNING: the tag swapping may lead to weights associated with the incorrect group"); + } else if (!isConsistent()) { swapHeaders(); } @@ -29,7 +34,10 @@ namespace gen { if (xmlError != 0) { std::cerr << "Error in lhe xml file" << std::endl; xmlDoc.PrintError(); - return; + if(failIfInvalidXML_) + throw std::runtime_error("XML is unreadable because of above error."); + else + return; } std::vector nameAlts_ = {"name", "type"}; diff --git a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py index 0c0925dc2e46e..cde648a77d08c 100644 --- a/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py +++ b/GeneratorInterface/Core/test/testGenWeightProducer_cfg.py @@ -26,8 +26,9 @@ 'keep GenWeightInfoProduct_test*Weights*_*_*',]) ) -#process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer", -# lheSourceLabel = cms.string("externalLHEProducer")) +# process.testLHEWeights = cms.EDProducer("LHEWeightProductProducer", +# lheSourceLabel = cms.string("externalLHEProducer"), +# failIfValidXML = cms.untracked.bool(True)) process.testGenWeights = cms.EDProducer("GenWeightProductProducer", genInfo = cms.InputTag("generator"), diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index ffd7a82c2b324..6e81ab1ce2023 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -11,7 +11,8 @@ genLumiInfoHeader = cms.InputTag("generator")) lheWeights = cms.EDProducer("LHEWeightProductProducer", - lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]) + lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]), + failIfInvalidXML = cms.untracked.bool(True) #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) ) From 5fffa1da66d7b68a375b45fb2f6d2d9a01a6d373 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 6 Aug 2020 14:23:27 +0200 Subject: [PATCH 125/186] Remove test files --- .../DrellYan_LO_MGMLMv233_2016_weightInfo.txt | 474 ----- .../DrellYan_LO_MGMLMv242_2017_weightInfo.txt | 1158 ------------ ...rellYan_NLO_MGFXFXv233_2016_weightInfo.txt | 117 -- ...rellYan_NLO_MGFXFXv242_2017_weightInfo.txt | 1158 ------------ testFiles/VVV_2017_weight_info.txt | 1358 -------------- .../W1jet_260_simplescale_weight_info.txt | 1149 ------------ testFiles/W1jet_260_weight_info.txt | 1179 ------------ testFiles/WJ_MiNNLO_weightinfo.txt | 1612 ----------------- testFiles/WJ_NNLOPS_weightinfo.txt | 1612 ----------------- testFiles/WZVBS_2017_weightInfo.txt | 1180 ------------ testFiles/WZVBS_private_weightInfo.txt | 150 -- testFiles/ZJ_MiNNLO_weightinfo.txt | 735 -------- testFiles/ZMiNNLO.txt | 735 -------- testFiles/ZZTo4L_powheg_2016_weightInfo.txt | 227 --- testFiles/ZZTo4L_powheg_2017_weightInfo.txt | 1087 ----------- testFiles/overview.txt | 12 - testFiles/susyweights.txt | 1227 ------------- 17 files changed, 15170 deletions(-) delete mode 100644 testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt delete mode 100644 testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt delete mode 100644 testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt delete mode 100644 testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt delete mode 100644 testFiles/VVV_2017_weight_info.txt delete mode 100644 testFiles/W1jet_260_simplescale_weight_info.txt delete mode 100644 testFiles/W1jet_260_weight_info.txt delete mode 100644 testFiles/WJ_MiNNLO_weightinfo.txt delete mode 100644 testFiles/WJ_NNLOPS_weightinfo.txt delete mode 100644 testFiles/WZVBS_2017_weightInfo.txt delete mode 100644 testFiles/WZVBS_private_weightInfo.txt delete mode 100644 testFiles/ZJ_MiNNLO_weightinfo.txt delete mode 100644 testFiles/ZMiNNLO.txt delete mode 100644 testFiles/ZZTo4L_powheg_2016_weightInfo.txt delete mode 100644 testFiles/ZZTo4L_powheg_2017_weightInfo.txt delete mode 100644 testFiles/overview.txt delete mode 100644 testFiles/susyweights.txt diff --git a/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt b/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt deleted file mode 100644 index 9042f45c4f47b..0000000000000 --- a/testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt +++ /dev/null @@ -1,474 +0,0 @@ - - mur=1 muf=1 - mur=1 muf=2 - mur=1 muf=0.5 - mur=2 muf=1 - mur=2 muf=2 - mur=2 muf=0.5 - mur=0.5 muf=1 - mur=0.5 muf=2 - mur=0.5 muf=0.5 - - - Member 0 - Member 1 - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 - Member 7 - Member 8 - Member 9 - Member 10 - Member 11 - Member 12 - Member 13 - Member 14 - Member 15 - Member 16 - Member 17 - Member 18 - Member 19 - Member 20 - Member 21 - Member 22 - Member 23 - Member 24 - Member 25 - Member 26 - Member 27 - Member 28 - Member 29 - Member 30 - Member 31 - Member 32 - Member 33 - Member 34 - Member 35 - Member 36 - Member 37 - Member 38 - Member 39 - Member 40 - Member 41 - Member 42 - Member 43 - Member 44 - Member 45 - Member 46 - Member 47 - Member 48 - Member 49 - Member 50 - Member 51 - Member 52 - Member 53 - Member 54 - Member 55 - Member 56 - Member 57 - Member 58 - Member 59 - Member 60 - Member 61 - Member 62 - Member 63 - Member 64 - Member 65 - Member 66 - Member 67 - Member 68 - Member 69 - Member 70 - Member 71 - Member 72 - Member 73 - Member 74 - Member 75 - Member 76 - Member 77 - Member 78 - Member 79 - Member 80 - Member 81 - Member 82 - Member 83 - Member 84 - Member 85 - Member 86 - Member 87 - Member 88 - Member 89 - Member 90 - Member 91 - Member 92 - Member 93 - Member 94 - Member 95 - Member 96 - Member 97 - Member 98 - Member 99 - Member 100 - - - Member 0 - Member 1 - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 - Member 7 - Member 8 - Member 9 - Member 10 - Member 11 - Member 12 - Member 13 - Member 14 - Member 15 - Member 16 - Member 17 - Member 18 - Member 19 - Member 20 - Member 21 - Member 22 - Member 23 - Member 24 - Member 25 - Member 26 - Member 27 - Member 28 - Member 29 - Member 30 - Member 31 - Member 32 - Member 33 - Member 34 - Member 35 - Member 36 - Member 37 - Member 38 - Member 39 - Member 40 - Member 41 - Member 42 - Member 43 - Member 44 - Member 45 - Member 46 - Member 47 - Member 48 - Member 49 - Member 50 - Member 51 - Member 52 - Member 53 - Member 54 - Member 55 - Member 56 - Member 57 - Member 58 - Member 59 - Member 60 - Member 61 - Member 62 - Member 63 - Member 64 - Member 65 - Member 66 - Member 67 - Member 68 - Member 69 - Member 70 - Member 71 - Member 72 - Member 73 - Member 74 - Member 75 - Member 76 - Member 77 - Member 78 - Member 79 - Member 80 - Member 81 - Member 82 - Member 83 - Member 84 - Member 85 - Member 86 - Member 87 - Member 88 - Member 89 - Member 90 - Member 91 - Member 92 - Member 93 - Member 94 - Member 95 - Member 96 - Member 97 - Member 98 - Member 99 - Member 100 - - - Member 0 - - - Member 0 - Member 1 - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 - Member 7 - Member 8 - Member 9 - Member 10 - Member 11 - Member 12 - Member 13 - Member 14 - Member 15 - Member 16 - Member 17 - Member 18 - Member 19 - Member 20 - Member 21 - Member 22 - Member 23 - Member 24 - Member 25 - Member 26 - Member 27 - Member 28 - Member 29 - Member 30 - Member 31 - Member 32 - Member 33 - Member 34 - Member 35 - Member 36 - Member 37 - Member 38 - Member 39 - Member 40 - Member 41 - Member 42 - Member 43 - Member 44 - Member 45 - Member 46 - Member 47 - Member 48 - Member 49 - Member 50 - Member 51 - Member 52 - Member 53 - Member 54 - Member 55 - Member 56 - Member 57 - Member 58 - Member 59 - Member 60 - Member 61 - Member 62 - Member 63 - Member 64 - Member 65 - Member 66 - Member 67 - Member 68 - Member 69 - Member 70 - Member 71 - Member 72 - Member 73 - Member 74 - Member 75 - Member 76 - Member 77 - Member 78 - Member 79 - Member 80 - Member 81 - Member 82 - Member 83 - Member 84 - Member 85 - Member 86 - Member 87 - Member 88 - Member 89 - Member 90 - Member 91 - Member 92 - Member 93 - Member 94 - Member 95 - Member 96 - Member 97 - Member 98 - Member 99 - Member 100 - - - Member 0 - - - Member 0 - - - Member 0 - Member 1 - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 - Member 7 - Member 8 - Member 9 - Member 10 - Member 11 - Member 12 - Member 13 - Member 14 - Member 15 - Member 16 - Member 17 - Member 18 - Member 19 - Member 20 - Member 21 - Member 22 - Member 23 - Member 24 - Member 25 - Member 26 - Member 27 - Member 28 - Member 29 - Member 30 - Member 31 - Member 32 - Member 33 - Member 34 - Member 35 - Member 36 - Member 37 - Member 38 - Member 39 - Member 40 - Member 41 - Member 42 - Member 43 - Member 44 - Member 45 - Member 46 - Member 47 - Member 48 - Member 49 - Member 50 - - - Member 0 - Member 1 - Member 2 - - - Member 0 - Member 1 - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 - Member 7 - Member 8 - Member 9 - Member 10 - Member 11 - Member 12 - Member 13 - Member 14 - Member 15 - Member 16 - Member 17 - Member 18 - Member 19 - Member 20 - - - Member 0 - - - Member 0 - - - Member 0 - Member 1 - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 - Member 7 - Member 8 - Member 9 - Member 10 - Member 11 - Member 12 - Member 13 - Member 14 - Member 15 - Member 16 - Member 17 - Member 18 - Member 19 - Member 20 - Member 21 - Member 22 - Member 23 - Member 24 - Member 25 - Member 26 - Member 27 - Member 28 - Member 29 - Member 30 - Member 31 - Member 32 - Member 33 - Member 34 - Member 35 - Member 36 - Member 37 - Member 38 - Member 39 - Member 40 - Member 41 - Member 42 - Member 43 - Member 44 - Member 45 - Member 46 - Member 47 - Member 48 - Member 49 - Member 50 - Member 51 - Member 52 - - - Member 0 - diff --git a/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt b/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt deleted file mode 100644 index a3754843fb97e..0000000000000 --- a/testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt +++ /dev/null @@ -1,1158 +0,0 @@ -# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/FlatPU28to62HcalNZSRAW_94X_mcRun2_asymptotic_v3-v1/260000/5436C913-046D-E911-B076-0025905A60BE.root - - mur=1 muf=1 - mur=1 muf=2 - mur=1 muf=0.5 - mur=2 muf=1 - mur=2 muf=2 - mur=2 muf=0.5 - mur=0.5 muf=1 - mur=0.5 muf=2 - mur=0.5 muf=0.5 - - - Member 0 of sets NNPDF31_nnlo_hessian_pdfas - Member 1 of sets NNPDF31_nnlo_hessian_pdfas - Member 2 of sets NNPDF31_nnlo_hessian_pdfas - Member 3 of sets NNPDF31_nnlo_hessian_pdfas - Member 4 of sets NNPDF31_nnlo_hessian_pdfas - Member 5 of sets NNPDF31_nnlo_hessian_pdfas - Member 6 of sets NNPDF31_nnlo_hessian_pdfas - Member 7 of sets NNPDF31_nnlo_hessian_pdfas - Member 8 of sets NNPDF31_nnlo_hessian_pdfas - Member 9 of sets NNPDF31_nnlo_hessian_pdfas - Member 10 of sets NNPDF31_nnlo_hessian_pdfas - Member 11 of sets NNPDF31_nnlo_hessian_pdfas - Member 12 of sets NNPDF31_nnlo_hessian_pdfas - Member 13 of sets NNPDF31_nnlo_hessian_pdfas - Member 14 of sets NNPDF31_nnlo_hessian_pdfas - Member 15 of sets NNPDF31_nnlo_hessian_pdfas - Member 16 of sets NNPDF31_nnlo_hessian_pdfas - Member 17 of sets NNPDF31_nnlo_hessian_pdfas - Member 18 of sets NNPDF31_nnlo_hessian_pdfas - Member 19 of sets NNPDF31_nnlo_hessian_pdfas - Member 20 of sets NNPDF31_nnlo_hessian_pdfas - Member 21 of sets NNPDF31_nnlo_hessian_pdfas - Member 22 of sets NNPDF31_nnlo_hessian_pdfas - Member 23 of sets NNPDF31_nnlo_hessian_pdfas - Member 24 of sets NNPDF31_nnlo_hessian_pdfas - Member 25 of sets NNPDF31_nnlo_hessian_pdfas - Member 26 of sets NNPDF31_nnlo_hessian_pdfas - Member 27 of sets NNPDF31_nnlo_hessian_pdfas - Member 28 of sets NNPDF31_nnlo_hessian_pdfas - Member 29 of sets NNPDF31_nnlo_hessian_pdfas - Member 30 of sets NNPDF31_nnlo_hessian_pdfas - Member 31 of sets NNPDF31_nnlo_hessian_pdfas - Member 32 of sets NNPDF31_nnlo_hessian_pdfas - Member 33 of sets NNPDF31_nnlo_hessian_pdfas - Member 34 of sets NNPDF31_nnlo_hessian_pdfas - Member 35 of sets NNPDF31_nnlo_hessian_pdfas - Member 36 of sets NNPDF31_nnlo_hessian_pdfas - Member 37 of sets NNPDF31_nnlo_hessian_pdfas - Member 38 of sets NNPDF31_nnlo_hessian_pdfas - Member 39 of sets NNPDF31_nnlo_hessian_pdfas - Member 40 of sets NNPDF31_nnlo_hessian_pdfas - Member 41 of sets NNPDF31_nnlo_hessian_pdfas - Member 42 of sets NNPDF31_nnlo_hessian_pdfas - Member 43 of sets NNPDF31_nnlo_hessian_pdfas - Member 44 of sets NNPDF31_nnlo_hessian_pdfas - Member 45 of sets NNPDF31_nnlo_hessian_pdfas - Member 46 of sets NNPDF31_nnlo_hessian_pdfas - Member 47 of sets NNPDF31_nnlo_hessian_pdfas - Member 48 of sets NNPDF31_nnlo_hessian_pdfas - Member 49 of sets NNPDF31_nnlo_hessian_pdfas - Member 50 of sets NNPDF31_nnlo_hessian_pdfas - Member 51 of sets NNPDF31_nnlo_hessian_pdfas - Member 52 of sets NNPDF31_nnlo_hessian_pdfas - Member 53 of sets NNPDF31_nnlo_hessian_pdfas - Member 54 of sets NNPDF31_nnlo_hessian_pdfas - Member 55 of sets NNPDF31_nnlo_hessian_pdfas - Member 56 of sets NNPDF31_nnlo_hessian_pdfas - Member 57 of sets NNPDF31_nnlo_hessian_pdfas - Member 58 of sets NNPDF31_nnlo_hessian_pdfas - Member 59 of sets NNPDF31_nnlo_hessian_pdfas - Member 60 of sets NNPDF31_nnlo_hessian_pdfas - Member 61 of sets NNPDF31_nnlo_hessian_pdfas - Member 62 of sets NNPDF31_nnlo_hessian_pdfas - Member 63 of sets NNPDF31_nnlo_hessian_pdfas - Member 64 of sets NNPDF31_nnlo_hessian_pdfas - Member 65 of sets NNPDF31_nnlo_hessian_pdfas - Member 66 of sets NNPDF31_nnlo_hessian_pdfas - Member 67 of sets NNPDF31_nnlo_hessian_pdfas - Member 68 of sets NNPDF31_nnlo_hessian_pdfas - Member 69 of sets NNPDF31_nnlo_hessian_pdfas - Member 70 of sets NNPDF31_nnlo_hessian_pdfas - Member 71 of sets NNPDF31_nnlo_hessian_pdfas - Member 72 of sets NNPDF31_nnlo_hessian_pdfas - Member 73 of sets NNPDF31_nnlo_hessian_pdfas - Member 74 of sets NNPDF31_nnlo_hessian_pdfas - Member 75 of sets NNPDF31_nnlo_hessian_pdfas - Member 76 of sets NNPDF31_nnlo_hessian_pdfas - Member 77 of sets NNPDF31_nnlo_hessian_pdfas - Member 78 of sets NNPDF31_nnlo_hessian_pdfas - Member 79 of sets NNPDF31_nnlo_hessian_pdfas - Member 80 of sets NNPDF31_nnlo_hessian_pdfas - Member 81 of sets NNPDF31_nnlo_hessian_pdfas - Member 82 of sets NNPDF31_nnlo_hessian_pdfas - Member 83 of sets NNPDF31_nnlo_hessian_pdfas - Member 84 of sets NNPDF31_nnlo_hessian_pdfas - Member 85 of sets NNPDF31_nnlo_hessian_pdfas - Member 86 of sets NNPDF31_nnlo_hessian_pdfas - Member 87 of sets NNPDF31_nnlo_hessian_pdfas - Member 88 of sets NNPDF31_nnlo_hessian_pdfas - Member 89 of sets NNPDF31_nnlo_hessian_pdfas - Member 90 of sets NNPDF31_nnlo_hessian_pdfas - Member 91 of sets NNPDF31_nnlo_hessian_pdfas - Member 92 of sets NNPDF31_nnlo_hessian_pdfas - Member 93 of sets NNPDF31_nnlo_hessian_pdfas - Member 94 of sets NNPDF31_nnlo_hessian_pdfas - Member 95 of sets NNPDF31_nnlo_hessian_pdfas - Member 96 of sets NNPDF31_nnlo_hessian_pdfas - Member 97 of sets NNPDF31_nnlo_hessian_pdfas - Member 98 of sets NNPDF31_nnlo_hessian_pdfas - Member 99 of sets NNPDF31_nnlo_hessian_pdfas - Member 100 of sets NNPDF31_nnlo_hessian_pdfas - Member 101 of sets NNPDF31_nnlo_hessian_pdfas - Member 102 of sets NNPDF31_nnlo_hessian_pdfas - - - Member 0 of sets NNPDF31_nnlo_as_0108 - - - Member 0 of sets NNPDF31_nnlo_as_0110 - - - Member 0 of sets NNPDF31_nnlo_as_0112 - - - Member 0 of sets NNPDF31_nnlo_as_0114 - - - Member 0 of sets NNPDF31_nnlo_as_0117 - - - Member 0 of sets NNPDF31_nnlo_as_0119 - - - Member 0 of sets NNPDF31_nnlo_as_0122 - - - Member 0 of sets NNPDF31_nnlo_as_0124 - - - Member 0 of sets NNPDF31_nlo_hessian_pdfas - Member 1 of sets NNPDF31_nlo_hessian_pdfas - Member 2 of sets NNPDF31_nlo_hessian_pdfas - Member 3 of sets NNPDF31_nlo_hessian_pdfas - Member 4 of sets NNPDF31_nlo_hessian_pdfas - Member 5 of sets NNPDF31_nlo_hessian_pdfas - Member 6 of sets NNPDF31_nlo_hessian_pdfas - Member 7 of sets NNPDF31_nlo_hessian_pdfas - Member 8 of sets NNPDF31_nlo_hessian_pdfas - Member 9 of sets NNPDF31_nlo_hessian_pdfas - Member 10 of sets NNPDF31_nlo_hessian_pdfas - Member 11 of sets NNPDF31_nlo_hessian_pdfas - Member 12 of sets NNPDF31_nlo_hessian_pdfas - Member 13 of sets NNPDF31_nlo_hessian_pdfas - Member 14 of sets NNPDF31_nlo_hessian_pdfas - Member 15 of sets NNPDF31_nlo_hessian_pdfas - Member 16 of sets NNPDF31_nlo_hessian_pdfas - Member 17 of sets NNPDF31_nlo_hessian_pdfas - Member 18 of sets NNPDF31_nlo_hessian_pdfas - Member 19 of sets NNPDF31_nlo_hessian_pdfas - Member 20 of sets NNPDF31_nlo_hessian_pdfas - Member 21 of sets NNPDF31_nlo_hessian_pdfas - Member 22 of sets NNPDF31_nlo_hessian_pdfas - Member 23 of sets NNPDF31_nlo_hessian_pdfas - Member 24 of sets NNPDF31_nlo_hessian_pdfas - Member 25 of sets NNPDF31_nlo_hessian_pdfas - Member 26 of sets NNPDF31_nlo_hessian_pdfas - Member 27 of sets NNPDF31_nlo_hessian_pdfas - Member 28 of sets NNPDF31_nlo_hessian_pdfas - Member 29 of sets NNPDF31_nlo_hessian_pdfas - Member 30 of sets NNPDF31_nlo_hessian_pdfas - Member 31 of sets NNPDF31_nlo_hessian_pdfas - Member 32 of sets NNPDF31_nlo_hessian_pdfas - Member 33 of sets NNPDF31_nlo_hessian_pdfas - Member 34 of sets NNPDF31_nlo_hessian_pdfas - Member 35 of sets NNPDF31_nlo_hessian_pdfas - Member 36 of sets NNPDF31_nlo_hessian_pdfas - Member 37 of sets NNPDF31_nlo_hessian_pdfas - Member 38 of sets NNPDF31_nlo_hessian_pdfas - Member 39 of sets NNPDF31_nlo_hessian_pdfas - Member 40 of sets NNPDF31_nlo_hessian_pdfas - Member 41 of sets NNPDF31_nlo_hessian_pdfas - Member 42 of sets NNPDF31_nlo_hessian_pdfas - Member 43 of sets NNPDF31_nlo_hessian_pdfas - Member 44 of sets NNPDF31_nlo_hessian_pdfas - Member 45 of sets NNPDF31_nlo_hessian_pdfas - Member 46 of sets NNPDF31_nlo_hessian_pdfas - Member 47 of sets NNPDF31_nlo_hessian_pdfas - Member 48 of sets NNPDF31_nlo_hessian_pdfas - Member 49 of sets NNPDF31_nlo_hessian_pdfas - Member 50 of sets NNPDF31_nlo_hessian_pdfas - Member 51 of sets NNPDF31_nlo_hessian_pdfas - Member 52 of sets NNPDF31_nlo_hessian_pdfas - Member 53 of sets NNPDF31_nlo_hessian_pdfas - Member 54 of sets NNPDF31_nlo_hessian_pdfas - Member 55 of sets NNPDF31_nlo_hessian_pdfas - Member 56 of sets NNPDF31_nlo_hessian_pdfas - Member 57 of sets NNPDF31_nlo_hessian_pdfas - Member 58 of sets NNPDF31_nlo_hessian_pdfas - Member 59 of sets NNPDF31_nlo_hessian_pdfas - Member 60 of sets NNPDF31_nlo_hessian_pdfas - Member 61 of sets NNPDF31_nlo_hessian_pdfas - Member 62 of sets NNPDF31_nlo_hessian_pdfas - Member 63 of sets NNPDF31_nlo_hessian_pdfas - Member 64 of sets NNPDF31_nlo_hessian_pdfas - Member 65 of sets NNPDF31_nlo_hessian_pdfas - Member 66 of sets NNPDF31_nlo_hessian_pdfas - Member 67 of sets NNPDF31_nlo_hessian_pdfas - Member 68 of sets NNPDF31_nlo_hessian_pdfas - Member 69 of sets NNPDF31_nlo_hessian_pdfas - Member 70 of sets NNPDF31_nlo_hessian_pdfas - Member 71 of sets NNPDF31_nlo_hessian_pdfas - Member 72 of sets NNPDF31_nlo_hessian_pdfas - Member 73 of sets NNPDF31_nlo_hessian_pdfas - Member 74 of sets NNPDF31_nlo_hessian_pdfas - Member 75 of sets NNPDF31_nlo_hessian_pdfas - Member 76 of sets NNPDF31_nlo_hessian_pdfas - Member 77 of sets NNPDF31_nlo_hessian_pdfas - Member 78 of sets NNPDF31_nlo_hessian_pdfas - Member 79 of sets NNPDF31_nlo_hessian_pdfas - Member 80 of sets NNPDF31_nlo_hessian_pdfas - Member 81 of sets NNPDF31_nlo_hessian_pdfas - Member 82 of sets NNPDF31_nlo_hessian_pdfas - Member 83 of sets NNPDF31_nlo_hessian_pdfas - Member 84 of sets NNPDF31_nlo_hessian_pdfas - Member 85 of sets NNPDF31_nlo_hessian_pdfas - Member 86 of sets NNPDF31_nlo_hessian_pdfas - Member 87 of sets NNPDF31_nlo_hessian_pdfas - Member 88 of sets NNPDF31_nlo_hessian_pdfas - Member 89 of sets NNPDF31_nlo_hessian_pdfas - Member 90 of sets NNPDF31_nlo_hessian_pdfas - Member 91 of sets NNPDF31_nlo_hessian_pdfas - Member 92 of sets NNPDF31_nlo_hessian_pdfas - Member 93 of sets NNPDF31_nlo_hessian_pdfas - Member 94 of sets NNPDF31_nlo_hessian_pdfas - Member 95 of sets NNPDF31_nlo_hessian_pdfas - Member 96 of sets NNPDF31_nlo_hessian_pdfas - Member 97 of sets NNPDF31_nlo_hessian_pdfas - Member 98 of sets NNPDF31_nlo_hessian_pdfas - Member 99 of sets NNPDF31_nlo_hessian_pdfas - Member 100 of sets NNPDF31_nlo_hessian_pdfas - Member 101 of sets NNPDF31_nlo_hessian_pdfas - Member 102 of sets NNPDF31_nlo_hessian_pdfas - - - Member 0 of sets CT14nnlo - Member 1 of sets CT14nnlo - Member 2 of sets CT14nnlo - Member 3 of sets CT14nnlo - Member 4 of sets CT14nnlo - Member 5 of sets CT14nnlo - Member 6 of sets CT14nnlo - Member 7 of sets CT14nnlo - Member 8 of sets CT14nnlo - Member 9 of sets CT14nnlo - Member 10 of sets CT14nnlo - Member 11 of sets CT14nnlo - Member 12 of sets CT14nnlo - Member 13 of sets CT14nnlo - Member 14 of sets CT14nnlo - Member 15 of sets CT14nnlo - Member 16 of sets CT14nnlo - Member 17 of sets CT14nnlo - Member 18 of sets CT14nnlo - Member 19 of sets CT14nnlo - Member 20 of sets CT14nnlo - Member 21 of sets CT14nnlo - Member 22 of sets CT14nnlo - Member 23 of sets CT14nnlo - Member 24 of sets CT14nnlo - Member 25 of sets CT14nnlo - Member 26 of sets CT14nnlo - Member 27 of sets CT14nnlo - Member 28 of sets CT14nnlo - Member 29 of sets CT14nnlo - Member 30 of sets CT14nnlo - Member 31 of sets CT14nnlo - Member 32 of sets CT14nnlo - Member 33 of sets CT14nnlo - Member 34 of sets CT14nnlo - Member 35 of sets CT14nnlo - Member 36 of sets CT14nnlo - Member 37 of sets CT14nnlo - Member 38 of sets CT14nnlo - Member 39 of sets CT14nnlo - Member 40 of sets CT14nnlo - Member 41 of sets CT14nnlo - Member 42 of sets CT14nnlo - Member 43 of sets CT14nnlo - Member 44 of sets CT14nnlo - Member 45 of sets CT14nnlo - Member 46 of sets CT14nnlo - Member 47 of sets CT14nnlo - Member 48 of sets CT14nnlo - Member 49 of sets CT14nnlo - Member 50 of sets CT14nnlo - Member 51 of sets CT14nnlo - Member 52 of sets CT14nnlo - Member 53 of sets CT14nnlo - Member 54 of sets CT14nnlo - Member 55 of sets CT14nnlo - Member 56 of sets CT14nnlo - - - Member 0 of sets CT14nnlo_as_0116 - - - Member 0 of sets CT14nnlo_as_0120 - - - Member 0 of sets CT14nlo - Member 1 of sets CT14nlo - Member 2 of sets CT14nlo - Member 3 of sets CT14nlo - Member 4 of sets CT14nlo - Member 5 of sets CT14nlo - Member 6 of sets CT14nlo - Member 7 of sets CT14nlo - Member 8 of sets CT14nlo - Member 9 of sets CT14nlo - Member 10 of sets CT14nlo - Member 11 of sets CT14nlo - Member 12 of sets CT14nlo - Member 13 of sets CT14nlo - Member 14 of sets CT14nlo - Member 15 of sets CT14nlo - Member 16 of sets CT14nlo - Member 17 of sets CT14nlo - Member 18 of sets CT14nlo - Member 19 of sets CT14nlo - Member 20 of sets CT14nlo - Member 21 of sets CT14nlo - Member 22 of sets CT14nlo - Member 23 of sets CT14nlo - Member 24 of sets CT14nlo - Member 25 of sets CT14nlo - Member 26 of sets CT14nlo - Member 27 of sets CT14nlo - Member 28 of sets CT14nlo - Member 29 of sets CT14nlo - Member 30 of sets CT14nlo - Member 31 of sets CT14nlo - Member 32 of sets CT14nlo - Member 33 of sets CT14nlo - Member 34 of sets CT14nlo - Member 35 of sets CT14nlo - Member 36 of sets CT14nlo - Member 37 of sets CT14nlo - Member 38 of sets CT14nlo - Member 39 of sets CT14nlo - Member 40 of sets CT14nlo - Member 41 of sets CT14nlo - Member 42 of sets CT14nlo - Member 43 of sets CT14nlo - Member 44 of sets CT14nlo - Member 45 of sets CT14nlo - Member 46 of sets CT14nlo - Member 47 of sets CT14nlo - Member 48 of sets CT14nlo - Member 49 of sets CT14nlo - Member 50 of sets CT14nlo - Member 51 of sets CT14nlo - Member 52 of sets CT14nlo - Member 53 of sets CT14nlo - Member 54 of sets CT14nlo - Member 55 of sets CT14nlo - Member 56 of sets CT14nlo - - - Member 0 of sets CT14nlo_as_0116 - - - Member 0 of sets CT14nlo_as_0120 - - - Member 0 of sets CT14lo - - - Member 0 of sets MMHT2014nlo68clas118 - Member 1 of sets MMHT2014nlo68clas118 - Member 2 of sets MMHT2014nlo68clas118 - Member 3 of sets MMHT2014nlo68clas118 - Member 4 of sets MMHT2014nlo68clas118 - Member 5 of sets MMHT2014nlo68clas118 - Member 6 of sets MMHT2014nlo68clas118 - Member 7 of sets MMHT2014nlo68clas118 - Member 8 of sets MMHT2014nlo68clas118 - Member 9 of sets MMHT2014nlo68clas118 - Member 10 of sets MMHT2014nlo68clas118 - Member 11 of sets MMHT2014nlo68clas118 - Member 12 of sets MMHT2014nlo68clas118 - Member 13 of sets MMHT2014nlo68clas118 - Member 14 of sets MMHT2014nlo68clas118 - Member 15 of sets MMHT2014nlo68clas118 - Member 16 of sets MMHT2014nlo68clas118 - Member 17 of sets MMHT2014nlo68clas118 - Member 18 of sets MMHT2014nlo68clas118 - Member 19 of sets MMHT2014nlo68clas118 - Member 20 of sets MMHT2014nlo68clas118 - Member 21 of sets MMHT2014nlo68clas118 - Member 22 of sets MMHT2014nlo68clas118 - Member 23 of sets MMHT2014nlo68clas118 - Member 24 of sets MMHT2014nlo68clas118 - Member 25 of sets MMHT2014nlo68clas118 - Member 26 of sets MMHT2014nlo68clas118 - Member 27 of sets MMHT2014nlo68clas118 - Member 28 of sets MMHT2014nlo68clas118 - Member 29 of sets MMHT2014nlo68clas118 - Member 30 of sets MMHT2014nlo68clas118 - Member 31 of sets MMHT2014nlo68clas118 - Member 32 of sets MMHT2014nlo68clas118 - Member 33 of sets MMHT2014nlo68clas118 - Member 34 of sets MMHT2014nlo68clas118 - Member 35 of sets MMHT2014nlo68clas118 - Member 36 of sets MMHT2014nlo68clas118 - Member 37 of sets MMHT2014nlo68clas118 - Member 38 of sets MMHT2014nlo68clas118 - Member 39 of sets MMHT2014nlo68clas118 - Member 40 of sets MMHT2014nlo68clas118 - Member 41 of sets MMHT2014nlo68clas118 - Member 42 of sets MMHT2014nlo68clas118 - Member 43 of sets MMHT2014nlo68clas118 - Member 44 of sets MMHT2014nlo68clas118 - Member 45 of sets MMHT2014nlo68clas118 - Member 46 of sets MMHT2014nlo68clas118 - Member 47 of sets MMHT2014nlo68clas118 - Member 48 of sets MMHT2014nlo68clas118 - Member 49 of sets MMHT2014nlo68clas118 - Member 50 of sets MMHT2014nlo68clas118 - - - Member 0 of sets MMHT2014nnlo68cl - Member 1 of sets MMHT2014nnlo68cl - Member 2 of sets MMHT2014nnlo68cl - Member 3 of sets MMHT2014nnlo68cl - Member 4 of sets MMHT2014nnlo68cl - Member 5 of sets MMHT2014nnlo68cl - Member 6 of sets MMHT2014nnlo68cl - Member 7 of sets MMHT2014nnlo68cl - Member 8 of sets MMHT2014nnlo68cl - Member 9 of sets MMHT2014nnlo68cl - Member 10 of sets MMHT2014nnlo68cl - Member 11 of sets MMHT2014nnlo68cl - Member 12 of sets MMHT2014nnlo68cl - Member 13 of sets MMHT2014nnlo68cl - Member 14 of sets MMHT2014nnlo68cl - Member 15 of sets MMHT2014nnlo68cl - Member 16 of sets MMHT2014nnlo68cl - Member 17 of sets MMHT2014nnlo68cl - Member 18 of sets MMHT2014nnlo68cl - Member 19 of sets MMHT2014nnlo68cl - Member 20 of sets MMHT2014nnlo68cl - Member 21 of sets MMHT2014nnlo68cl - Member 22 of sets MMHT2014nnlo68cl - Member 23 of sets MMHT2014nnlo68cl - Member 24 of sets MMHT2014nnlo68cl - Member 25 of sets MMHT2014nnlo68cl - Member 26 of sets MMHT2014nnlo68cl - Member 27 of sets MMHT2014nnlo68cl - Member 28 of sets MMHT2014nnlo68cl - Member 29 of sets MMHT2014nnlo68cl - Member 30 of sets MMHT2014nnlo68cl - Member 31 of sets MMHT2014nnlo68cl - Member 32 of sets MMHT2014nnlo68cl - Member 33 of sets MMHT2014nnlo68cl - Member 34 of sets MMHT2014nnlo68cl - Member 35 of sets MMHT2014nnlo68cl - Member 36 of sets MMHT2014nnlo68cl - Member 37 of sets MMHT2014nnlo68cl - Member 38 of sets MMHT2014nnlo68cl - Member 39 of sets MMHT2014nnlo68cl - Member 40 of sets MMHT2014nnlo68cl - Member 41 of sets MMHT2014nnlo68cl - Member 42 of sets MMHT2014nnlo68cl - Member 43 of sets MMHT2014nnlo68cl - Member 44 of sets MMHT2014nnlo68cl - Member 45 of sets MMHT2014nnlo68cl - Member 46 of sets MMHT2014nnlo68cl - Member 47 of sets MMHT2014nnlo68cl - Member 48 of sets MMHT2014nnlo68cl - Member 49 of sets MMHT2014nnlo68cl - Member 50 of sets MMHT2014nnlo68cl - - - Member 0 of sets MMHT2014lo68cl - - - Member 0 of sets ABMP16als118_5_nnlo - Member 1 of sets ABMP16als118_5_nnlo - Member 2 of sets ABMP16als118_5_nnlo - Member 3 of sets ABMP16als118_5_nnlo - Member 4 of sets ABMP16als118_5_nnlo - Member 5 of sets ABMP16als118_5_nnlo - Member 6 of sets ABMP16als118_5_nnlo - Member 7 of sets ABMP16als118_5_nnlo - Member 8 of sets ABMP16als118_5_nnlo - Member 9 of sets ABMP16als118_5_nnlo - Member 10 of sets ABMP16als118_5_nnlo - Member 11 of sets ABMP16als118_5_nnlo - Member 12 of sets ABMP16als118_5_nnlo - Member 13 of sets ABMP16als118_5_nnlo - Member 14 of sets ABMP16als118_5_nnlo - Member 15 of sets ABMP16als118_5_nnlo - Member 16 of sets ABMP16als118_5_nnlo - Member 17 of sets ABMP16als118_5_nnlo - Member 18 of sets ABMP16als118_5_nnlo - Member 19 of sets ABMP16als118_5_nnlo - Member 20 of sets ABMP16als118_5_nnlo - Member 21 of sets ABMP16als118_5_nnlo - Member 22 of sets ABMP16als118_5_nnlo - Member 23 of sets ABMP16als118_5_nnlo - Member 24 of sets ABMP16als118_5_nnlo - Member 25 of sets ABMP16als118_5_nnlo - Member 26 of sets ABMP16als118_5_nnlo - Member 27 of sets ABMP16als118_5_nnlo - Member 28 of sets ABMP16als118_5_nnlo - Member 29 of sets ABMP16als118_5_nnlo - - - Member 0 of sets PDF4LHC15_nlo_100_pdfas - Member 1 of sets PDF4LHC15_nlo_100_pdfas - Member 2 of sets PDF4LHC15_nlo_100_pdfas - Member 3 of sets PDF4LHC15_nlo_100_pdfas - Member 4 of sets PDF4LHC15_nlo_100_pdfas - Member 5 of sets PDF4LHC15_nlo_100_pdfas - Member 6 of sets PDF4LHC15_nlo_100_pdfas - Member 7 of sets PDF4LHC15_nlo_100_pdfas - Member 8 of sets PDF4LHC15_nlo_100_pdfas - Member 9 of sets PDF4LHC15_nlo_100_pdfas - Member 10 of sets PDF4LHC15_nlo_100_pdfas - Member 11 of sets PDF4LHC15_nlo_100_pdfas - Member 12 of sets PDF4LHC15_nlo_100_pdfas - Member 13 of sets PDF4LHC15_nlo_100_pdfas - Member 14 of sets PDF4LHC15_nlo_100_pdfas - Member 15 of sets PDF4LHC15_nlo_100_pdfas - Member 16 of sets PDF4LHC15_nlo_100_pdfas - Member 17 of sets PDF4LHC15_nlo_100_pdfas - Member 18 of sets PDF4LHC15_nlo_100_pdfas - Member 19 of sets PDF4LHC15_nlo_100_pdfas - Member 20 of sets PDF4LHC15_nlo_100_pdfas - Member 21 of sets PDF4LHC15_nlo_100_pdfas - Member 22 of sets PDF4LHC15_nlo_100_pdfas - Member 23 of sets PDF4LHC15_nlo_100_pdfas - Member 24 of sets PDF4LHC15_nlo_100_pdfas - Member 25 of sets PDF4LHC15_nlo_100_pdfas - Member 26 of sets PDF4LHC15_nlo_100_pdfas - Member 27 of sets PDF4LHC15_nlo_100_pdfas - Member 28 of sets PDF4LHC15_nlo_100_pdfas - Member 29 of sets PDF4LHC15_nlo_100_pdfas - Member 30 of sets PDF4LHC15_nlo_100_pdfas - Member 31 of sets PDF4LHC15_nlo_100_pdfas - Member 32 of sets PDF4LHC15_nlo_100_pdfas - Member 33 of sets PDF4LHC15_nlo_100_pdfas - Member 34 of sets PDF4LHC15_nlo_100_pdfas - Member 35 of sets PDF4LHC15_nlo_100_pdfas - Member 36 of sets PDF4LHC15_nlo_100_pdfas - Member 37 of sets PDF4LHC15_nlo_100_pdfas - Member 38 of sets PDF4LHC15_nlo_100_pdfas - Member 39 of sets PDF4LHC15_nlo_100_pdfas - Member 40 of sets PDF4LHC15_nlo_100_pdfas - Member 41 of sets PDF4LHC15_nlo_100_pdfas - Member 42 of sets PDF4LHC15_nlo_100_pdfas - Member 43 of sets PDF4LHC15_nlo_100_pdfas - Member 44 of sets PDF4LHC15_nlo_100_pdfas - Member 45 of sets PDF4LHC15_nlo_100_pdfas - Member 46 of sets PDF4LHC15_nlo_100_pdfas - Member 47 of sets PDF4LHC15_nlo_100_pdfas - Member 48 of sets PDF4LHC15_nlo_100_pdfas - Member 49 of sets PDF4LHC15_nlo_100_pdfas - Member 50 of sets PDF4LHC15_nlo_100_pdfas - Member 51 of sets PDF4LHC15_nlo_100_pdfas - Member 52 of sets PDF4LHC15_nlo_100_pdfas - Member 53 of sets PDF4LHC15_nlo_100_pdfas - Member 54 of sets PDF4LHC15_nlo_100_pdfas - Member 55 of sets PDF4LHC15_nlo_100_pdfas - Member 56 of sets PDF4LHC15_nlo_100_pdfas - Member 57 of sets PDF4LHC15_nlo_100_pdfas - Member 58 of sets PDF4LHC15_nlo_100_pdfas - Member 59 of sets PDF4LHC15_nlo_100_pdfas - Member 60 of sets PDF4LHC15_nlo_100_pdfas - Member 61 of sets PDF4LHC15_nlo_100_pdfas - Member 62 of sets PDF4LHC15_nlo_100_pdfas - Member 63 of sets PDF4LHC15_nlo_100_pdfas - Member 64 of sets PDF4LHC15_nlo_100_pdfas - Member 65 of sets PDF4LHC15_nlo_100_pdfas - Member 66 of sets PDF4LHC15_nlo_100_pdfas - Member 67 of sets PDF4LHC15_nlo_100_pdfas - Member 68 of sets PDF4LHC15_nlo_100_pdfas - Member 69 of sets PDF4LHC15_nlo_100_pdfas - Member 70 of sets PDF4LHC15_nlo_100_pdfas - Member 71 of sets PDF4LHC15_nlo_100_pdfas - Member 72 of sets PDF4LHC15_nlo_100_pdfas - Member 73 of sets PDF4LHC15_nlo_100_pdfas - Member 74 of sets PDF4LHC15_nlo_100_pdfas - Member 75 of sets PDF4LHC15_nlo_100_pdfas - Member 76 of sets PDF4LHC15_nlo_100_pdfas - Member 77 of sets PDF4LHC15_nlo_100_pdfas - Member 78 of sets PDF4LHC15_nlo_100_pdfas - Member 79 of sets PDF4LHC15_nlo_100_pdfas - Member 80 of sets PDF4LHC15_nlo_100_pdfas - Member 81 of sets PDF4LHC15_nlo_100_pdfas - Member 82 of sets PDF4LHC15_nlo_100_pdfas - Member 83 of sets PDF4LHC15_nlo_100_pdfas - Member 84 of sets PDF4LHC15_nlo_100_pdfas - Member 85 of sets PDF4LHC15_nlo_100_pdfas - Member 86 of sets PDF4LHC15_nlo_100_pdfas - Member 87 of sets PDF4LHC15_nlo_100_pdfas - Member 88 of sets PDF4LHC15_nlo_100_pdfas - Member 89 of sets PDF4LHC15_nlo_100_pdfas - Member 90 of sets PDF4LHC15_nlo_100_pdfas - Member 91 of sets PDF4LHC15_nlo_100_pdfas - Member 92 of sets PDF4LHC15_nlo_100_pdfas - Member 93 of sets PDF4LHC15_nlo_100_pdfas - Member 94 of sets PDF4LHC15_nlo_100_pdfas - Member 95 of sets PDF4LHC15_nlo_100_pdfas - Member 96 of sets PDF4LHC15_nlo_100_pdfas - Member 97 of sets PDF4LHC15_nlo_100_pdfas - Member 98 of sets PDF4LHC15_nlo_100_pdfas - Member 99 of sets PDF4LHC15_nlo_100_pdfas - Member 100 of sets PDF4LHC15_nlo_100_pdfas - Member 101 of sets PDF4LHC15_nlo_100_pdfas - Member 102 of sets PDF4LHC15_nlo_100_pdfas - - - Member 0 of sets PDF4LHC15_nnlo_100_pdfas - Member 1 of sets PDF4LHC15_nnlo_100_pdfas - Member 2 of sets PDF4LHC15_nnlo_100_pdfas - Member 3 of sets PDF4LHC15_nnlo_100_pdfas - Member 4 of sets PDF4LHC15_nnlo_100_pdfas - Member 5 of sets PDF4LHC15_nnlo_100_pdfas - Member 6 of sets PDF4LHC15_nnlo_100_pdfas - Member 7 of sets PDF4LHC15_nnlo_100_pdfas - Member 8 of sets PDF4LHC15_nnlo_100_pdfas - Member 9 of sets PDF4LHC15_nnlo_100_pdfas - Member 10 of sets PDF4LHC15_nnlo_100_pdfas - Member 11 of sets PDF4LHC15_nnlo_100_pdfas - Member 12 of sets PDF4LHC15_nnlo_100_pdfas - Member 13 of sets PDF4LHC15_nnlo_100_pdfas - Member 14 of sets PDF4LHC15_nnlo_100_pdfas - Member 15 of sets PDF4LHC15_nnlo_100_pdfas - Member 16 of sets PDF4LHC15_nnlo_100_pdfas - Member 17 of sets PDF4LHC15_nnlo_100_pdfas - Member 18 of sets PDF4LHC15_nnlo_100_pdfas - Member 19 of sets PDF4LHC15_nnlo_100_pdfas - Member 20 of sets PDF4LHC15_nnlo_100_pdfas - Member 21 of sets PDF4LHC15_nnlo_100_pdfas - Member 22 of sets PDF4LHC15_nnlo_100_pdfas - Member 23 of sets PDF4LHC15_nnlo_100_pdfas - Member 24 of sets PDF4LHC15_nnlo_100_pdfas - Member 25 of sets PDF4LHC15_nnlo_100_pdfas - Member 26 of sets PDF4LHC15_nnlo_100_pdfas - Member 27 of sets PDF4LHC15_nnlo_100_pdfas - Member 28 of sets PDF4LHC15_nnlo_100_pdfas - Member 29 of sets PDF4LHC15_nnlo_100_pdfas - Member 30 of sets PDF4LHC15_nnlo_100_pdfas - Member 31 of sets PDF4LHC15_nnlo_100_pdfas - Member 32 of sets PDF4LHC15_nnlo_100_pdfas - Member 33 of sets PDF4LHC15_nnlo_100_pdfas - Member 34 of sets PDF4LHC15_nnlo_100_pdfas - Member 35 of sets PDF4LHC15_nnlo_100_pdfas - Member 36 of sets PDF4LHC15_nnlo_100_pdfas - Member 37 of sets PDF4LHC15_nnlo_100_pdfas - Member 38 of sets PDF4LHC15_nnlo_100_pdfas - Member 39 of sets PDF4LHC15_nnlo_100_pdfas - Member 40 of sets PDF4LHC15_nnlo_100_pdfas - Member 41 of sets PDF4LHC15_nnlo_100_pdfas - Member 42 of sets PDF4LHC15_nnlo_100_pdfas - Member 43 of sets PDF4LHC15_nnlo_100_pdfas - Member 44 of sets PDF4LHC15_nnlo_100_pdfas - Member 45 of sets PDF4LHC15_nnlo_100_pdfas - Member 46 of sets PDF4LHC15_nnlo_100_pdfas - Member 47 of sets PDF4LHC15_nnlo_100_pdfas - Member 48 of sets PDF4LHC15_nnlo_100_pdfas - Member 49 of sets PDF4LHC15_nnlo_100_pdfas - Member 50 of sets PDF4LHC15_nnlo_100_pdfas - Member 51 of sets PDF4LHC15_nnlo_100_pdfas - Member 52 of sets PDF4LHC15_nnlo_100_pdfas - Member 53 of sets PDF4LHC15_nnlo_100_pdfas - Member 54 of sets PDF4LHC15_nnlo_100_pdfas - Member 55 of sets PDF4LHC15_nnlo_100_pdfas - Member 56 of sets PDF4LHC15_nnlo_100_pdfas - Member 57 of sets PDF4LHC15_nnlo_100_pdfas - Member 58 of sets PDF4LHC15_nnlo_100_pdfas - Member 59 of sets PDF4LHC15_nnlo_100_pdfas - Member 60 of sets PDF4LHC15_nnlo_100_pdfas - Member 61 of sets PDF4LHC15_nnlo_100_pdfas - Member 62 of sets PDF4LHC15_nnlo_100_pdfas - Member 63 of sets PDF4LHC15_nnlo_100_pdfas - Member 64 of sets PDF4LHC15_nnlo_100_pdfas - Member 65 of sets PDF4LHC15_nnlo_100_pdfas - Member 66 of sets PDF4LHC15_nnlo_100_pdfas - Member 67 of sets PDF4LHC15_nnlo_100_pdfas - Member 68 of sets PDF4LHC15_nnlo_100_pdfas - Member 69 of sets PDF4LHC15_nnlo_100_pdfas - Member 70 of sets PDF4LHC15_nnlo_100_pdfas - Member 71 of sets PDF4LHC15_nnlo_100_pdfas - Member 72 of sets PDF4LHC15_nnlo_100_pdfas - Member 73 of sets PDF4LHC15_nnlo_100_pdfas - Member 74 of sets PDF4LHC15_nnlo_100_pdfas - Member 75 of sets PDF4LHC15_nnlo_100_pdfas - Member 76 of sets PDF4LHC15_nnlo_100_pdfas - Member 77 of sets PDF4LHC15_nnlo_100_pdfas - Member 78 of sets PDF4LHC15_nnlo_100_pdfas - Member 79 of sets PDF4LHC15_nnlo_100_pdfas - Member 80 of sets PDF4LHC15_nnlo_100_pdfas - Member 81 of sets PDF4LHC15_nnlo_100_pdfas - Member 82 of sets PDF4LHC15_nnlo_100_pdfas - Member 83 of sets PDF4LHC15_nnlo_100_pdfas - Member 84 of sets PDF4LHC15_nnlo_100_pdfas - Member 85 of sets PDF4LHC15_nnlo_100_pdfas - Member 86 of sets PDF4LHC15_nnlo_100_pdfas - Member 87 of sets PDF4LHC15_nnlo_100_pdfas - Member 88 of sets PDF4LHC15_nnlo_100_pdfas - Member 89 of sets PDF4LHC15_nnlo_100_pdfas - Member 90 of sets PDF4LHC15_nnlo_100_pdfas - Member 91 of sets PDF4LHC15_nnlo_100_pdfas - Member 92 of sets PDF4LHC15_nnlo_100_pdfas - Member 93 of sets PDF4LHC15_nnlo_100_pdfas - Member 94 of sets PDF4LHC15_nnlo_100_pdfas - Member 95 of sets PDF4LHC15_nnlo_100_pdfas - Member 96 of sets PDF4LHC15_nnlo_100_pdfas - Member 97 of sets PDF4LHC15_nnlo_100_pdfas - Member 98 of sets PDF4LHC15_nnlo_100_pdfas - Member 99 of sets PDF4LHC15_nnlo_100_pdfas - Member 100 of sets PDF4LHC15_nnlo_100_pdfas - Member 101 of sets PDF4LHC15_nnlo_100_pdfas - Member 102 of sets PDF4LHC15_nnlo_100_pdfas - - - Member 0 of sets PDF4LHC15_nlo_30_pdfas - Member 1 of sets PDF4LHC15_nlo_30_pdfas - Member 2 of sets PDF4LHC15_nlo_30_pdfas - Member 3 of sets PDF4LHC15_nlo_30_pdfas - Member 4 of sets PDF4LHC15_nlo_30_pdfas - Member 5 of sets PDF4LHC15_nlo_30_pdfas - Member 6 of sets PDF4LHC15_nlo_30_pdfas - Member 7 of sets PDF4LHC15_nlo_30_pdfas - Member 8 of sets PDF4LHC15_nlo_30_pdfas - Member 9 of sets PDF4LHC15_nlo_30_pdfas - Member 10 of sets PDF4LHC15_nlo_30_pdfas - Member 11 of sets PDF4LHC15_nlo_30_pdfas - Member 12 of sets PDF4LHC15_nlo_30_pdfas - Member 13 of sets PDF4LHC15_nlo_30_pdfas - Member 14 of sets PDF4LHC15_nlo_30_pdfas - Member 15 of sets PDF4LHC15_nlo_30_pdfas - Member 16 of sets PDF4LHC15_nlo_30_pdfas - Member 17 of sets PDF4LHC15_nlo_30_pdfas - Member 18 of sets PDF4LHC15_nlo_30_pdfas - Member 19 of sets PDF4LHC15_nlo_30_pdfas - Member 20 of sets PDF4LHC15_nlo_30_pdfas - Member 21 of sets PDF4LHC15_nlo_30_pdfas - Member 22 of sets PDF4LHC15_nlo_30_pdfas - Member 23 of sets PDF4LHC15_nlo_30_pdfas - Member 24 of sets PDF4LHC15_nlo_30_pdfas - Member 25 of sets PDF4LHC15_nlo_30_pdfas - Member 26 of sets PDF4LHC15_nlo_30_pdfas - Member 27 of sets PDF4LHC15_nlo_30_pdfas - Member 28 of sets PDF4LHC15_nlo_30_pdfas - Member 29 of sets PDF4LHC15_nlo_30_pdfas - Member 30 of sets PDF4LHC15_nlo_30_pdfas - Member 31 of sets PDF4LHC15_nlo_30_pdfas - Member 32 of sets PDF4LHC15_nlo_30_pdfas - - - Member 0 of sets PDF4LHC15_nnlo_30_pdfas - Member 1 of sets PDF4LHC15_nnlo_30_pdfas - Member 2 of sets PDF4LHC15_nnlo_30_pdfas - Member 3 of sets PDF4LHC15_nnlo_30_pdfas - Member 4 of sets PDF4LHC15_nnlo_30_pdfas - Member 5 of sets PDF4LHC15_nnlo_30_pdfas - Member 6 of sets PDF4LHC15_nnlo_30_pdfas - Member 7 of sets PDF4LHC15_nnlo_30_pdfas - Member 8 of sets PDF4LHC15_nnlo_30_pdfas - Member 9 of sets PDF4LHC15_nnlo_30_pdfas - Member 10 of sets PDF4LHC15_nnlo_30_pdfas - Member 11 of sets PDF4LHC15_nnlo_30_pdfas - Member 12 of sets PDF4LHC15_nnlo_30_pdfas - Member 13 of sets PDF4LHC15_nnlo_30_pdfas - Member 14 of sets PDF4LHC15_nnlo_30_pdfas - Member 15 of sets PDF4LHC15_nnlo_30_pdfas - Member 16 of sets PDF4LHC15_nnlo_30_pdfas - Member 17 of sets PDF4LHC15_nnlo_30_pdfas - Member 18 of sets PDF4LHC15_nnlo_30_pdfas - Member 19 of sets PDF4LHC15_nnlo_30_pdfas - Member 20 of sets PDF4LHC15_nnlo_30_pdfas - Member 21 of sets PDF4LHC15_nnlo_30_pdfas - Member 22 of sets PDF4LHC15_nnlo_30_pdfas - Member 23 of sets PDF4LHC15_nnlo_30_pdfas - Member 24 of sets PDF4LHC15_nnlo_30_pdfas - Member 25 of sets PDF4LHC15_nnlo_30_pdfas - Member 26 of sets PDF4LHC15_nnlo_30_pdfas - Member 27 of sets PDF4LHC15_nnlo_30_pdfas - Member 28 of sets PDF4LHC15_nnlo_30_pdfas - Member 29 of sets PDF4LHC15_nnlo_30_pdfas - Member 30 of sets PDF4LHC15_nnlo_30_pdfas - Member 31 of sets PDF4LHC15_nnlo_30_pdfas - Member 32 of sets PDF4LHC15_nnlo_30_pdfas - - - Member 0 of sets HERAPDF20_NLO_EIG - Member 1 of sets HERAPDF20_NLO_EIG - Member 2 of sets HERAPDF20_NLO_EIG - Member 3 of sets HERAPDF20_NLO_EIG - Member 4 of sets HERAPDF20_NLO_EIG - Member 5 of sets HERAPDF20_NLO_EIG - Member 6 of sets HERAPDF20_NLO_EIG - Member 7 of sets HERAPDF20_NLO_EIG - Member 8 of sets HERAPDF20_NLO_EIG - Member 9 of sets HERAPDF20_NLO_EIG - Member 10 of sets HERAPDF20_NLO_EIG - Member 11 of sets HERAPDF20_NLO_EIG - Member 12 of sets HERAPDF20_NLO_EIG - Member 13 of sets HERAPDF20_NLO_EIG - Member 14 of sets HERAPDF20_NLO_EIG - Member 15 of sets HERAPDF20_NLO_EIG - Member 16 of sets HERAPDF20_NLO_EIG - Member 17 of sets HERAPDF20_NLO_EIG - Member 18 of sets HERAPDF20_NLO_EIG - Member 19 of sets HERAPDF20_NLO_EIG - Member 20 of sets HERAPDF20_NLO_EIG - Member 21 of sets HERAPDF20_NLO_EIG - Member 22 of sets HERAPDF20_NLO_EIG - Member 23 of sets HERAPDF20_NLO_EIG - Member 24 of sets HERAPDF20_NLO_EIG - Member 25 of sets HERAPDF20_NLO_EIG - Member 26 of sets HERAPDF20_NLO_EIG - Member 27 of sets HERAPDF20_NLO_EIG - Member 28 of sets HERAPDF20_NLO_EIG - - - Member 0 of sets HERAPDF20_NLO_VAR - Member 1 of sets HERAPDF20_NLO_VAR - Member 2 of sets HERAPDF20_NLO_VAR - Member 3 of sets HERAPDF20_NLO_VAR - Member 4 of sets HERAPDF20_NLO_VAR - Member 5 of sets HERAPDF20_NLO_VAR - Member 6 of sets HERAPDF20_NLO_VAR - Member 7 of sets HERAPDF20_NLO_VAR - Member 8 of sets HERAPDF20_NLO_VAR - Member 9 of sets HERAPDF20_NLO_VAR - Member 10 of sets HERAPDF20_NLO_VAR - Member 11 of sets HERAPDF20_NLO_VAR - Member 12 of sets HERAPDF20_NLO_VAR - Member 13 of sets HERAPDF20_NLO_VAR - - - Member 0 of sets HERAPDF20_NNLO_EIG - Member 1 of sets HERAPDF20_NNLO_EIG - Member 2 of sets HERAPDF20_NNLO_EIG - Member 3 of sets HERAPDF20_NNLO_EIG - Member 4 of sets HERAPDF20_NNLO_EIG - Member 5 of sets HERAPDF20_NNLO_EIG - Member 6 of sets HERAPDF20_NNLO_EIG - Member 7 of sets HERAPDF20_NNLO_EIG - Member 8 of sets HERAPDF20_NNLO_EIG - Member 9 of sets HERAPDF20_NNLO_EIG - Member 10 of sets HERAPDF20_NNLO_EIG - Member 11 of sets HERAPDF20_NNLO_EIG - Member 12 of sets HERAPDF20_NNLO_EIG - Member 13 of sets HERAPDF20_NNLO_EIG - Member 14 of sets HERAPDF20_NNLO_EIG - Member 15 of sets HERAPDF20_NNLO_EIG - Member 16 of sets HERAPDF20_NNLO_EIG - Member 17 of sets HERAPDF20_NNLO_EIG - Member 18 of sets HERAPDF20_NNLO_EIG - Member 19 of sets HERAPDF20_NNLO_EIG - Member 20 of sets HERAPDF20_NNLO_EIG - Member 21 of sets HERAPDF20_NNLO_EIG - Member 22 of sets HERAPDF20_NNLO_EIG - Member 23 of sets HERAPDF20_NNLO_EIG - Member 24 of sets HERAPDF20_NNLO_EIG - Member 25 of sets HERAPDF20_NNLO_EIG - Member 26 of sets HERAPDF20_NNLO_EIG - Member 27 of sets HERAPDF20_NNLO_EIG - Member 28 of sets HERAPDF20_NNLO_EIG - - - Member 0 of sets HERAPDF20_NNLO_VAR - Member 1 of sets HERAPDF20_NNLO_VAR - Member 2 of sets HERAPDF20_NNLO_VAR - Member 3 of sets HERAPDF20_NNLO_VAR - Member 4 of sets HERAPDF20_NNLO_VAR - Member 5 of sets HERAPDF20_NNLO_VAR - Member 6 of sets HERAPDF20_NNLO_VAR - Member 7 of sets HERAPDF20_NNLO_VAR - Member 8 of sets HERAPDF20_NNLO_VAR - Member 9 of sets HERAPDF20_NNLO_VAR - Member 10 of sets HERAPDF20_NNLO_VAR - Member 11 of sets HERAPDF20_NNLO_VAR - Member 12 of sets HERAPDF20_NNLO_VAR - Member 13 of sets HERAPDF20_NNLO_VAR - - - Member 0 of sets CT14qed_inc_proton - Member 1 of sets CT14qed_inc_proton - Member 2 of sets CT14qed_inc_proton - Member 3 of sets CT14qed_inc_proton - Member 4 of sets CT14qed_inc_proton - Member 5 of sets CT14qed_inc_proton - Member 6 of sets CT14qed_inc_proton - Member 7 of sets CT14qed_inc_proton - Member 8 of sets CT14qed_inc_proton - Member 9 of sets CT14qed_inc_proton - Member 10 of sets CT14qed_inc_proton - Member 11 of sets CT14qed_inc_proton - Member 12 of sets CT14qed_inc_proton - Member 13 of sets CT14qed_inc_proton - Member 14 of sets CT14qed_inc_proton - Member 15 of sets CT14qed_inc_proton - Member 16 of sets CT14qed_inc_proton - Member 17 of sets CT14qed_inc_proton - Member 18 of sets CT14qed_inc_proton - Member 19 of sets CT14qed_inc_proton - Member 20 of sets CT14qed_inc_proton - Member 21 of sets CT14qed_inc_proton - Member 22 of sets CT14qed_inc_proton - Member 23 of sets CT14qed_inc_proton - Member 24 of sets CT14qed_inc_proton - Member 25 of sets CT14qed_inc_proton - Member 26 of sets CT14qed_inc_proton - Member 27 of sets CT14qed_inc_proton - Member 28 of sets CT14qed_inc_proton - Member 29 of sets CT14qed_inc_proton - Member 30 of sets CT14qed_inc_proton - - - Member 0 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 1 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 2 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 3 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 4 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 5 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 6 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 7 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 8 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 9 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 10 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 11 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 12 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 13 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 14 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 15 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 16 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 17 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 18 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 19 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 20 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 21 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 22 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 23 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 24 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 25 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 26 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 27 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 28 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 29 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 30 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 31 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 32 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 33 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 34 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 35 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 36 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 37 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 38 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 39 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 40 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 41 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 42 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 43 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 44 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 45 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 46 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 47 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 48 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 49 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 50 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 51 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 52 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 53 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 54 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 55 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 56 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 57 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 58 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 59 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 60 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 61 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 62 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 63 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 64 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 65 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 66 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 67 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 68 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 69 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 70 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 71 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 72 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 73 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 74 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 75 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 76 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 77 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 78 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 79 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 80 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 81 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 82 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 83 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 84 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 85 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 86 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 87 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 88 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 89 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 90 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 91 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 92 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 93 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 94 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 95 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 96 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 97 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 98 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 99 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 100 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 101 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 102 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 103 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 104 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 105 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 106 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - Member 107 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 - - - Member 0 of sets NNPDF30_nlo_nf_5_pdfas - Member 1 of sets NNPDF30_nlo_nf_5_pdfas - Member 2 of sets NNPDF30_nlo_nf_5_pdfas - Member 3 of sets NNPDF30_nlo_nf_5_pdfas - Member 4 of sets NNPDF30_nlo_nf_5_pdfas - Member 5 of sets NNPDF30_nlo_nf_5_pdfas - Member 6 of sets NNPDF30_nlo_nf_5_pdfas - Member 7 of sets NNPDF30_nlo_nf_5_pdfas - Member 8 of sets NNPDF30_nlo_nf_5_pdfas - Member 9 of sets NNPDF30_nlo_nf_5_pdfas - Member 10 of sets NNPDF30_nlo_nf_5_pdfas - Member 11 of sets NNPDF30_nlo_nf_5_pdfas - Member 12 of sets NNPDF30_nlo_nf_5_pdfas - Member 13 of sets NNPDF30_nlo_nf_5_pdfas - Member 14 of sets NNPDF30_nlo_nf_5_pdfas - Member 15 of sets NNPDF30_nlo_nf_5_pdfas - Member 16 of sets NNPDF30_nlo_nf_5_pdfas - Member 17 of sets NNPDF30_nlo_nf_5_pdfas - Member 18 of sets NNPDF30_nlo_nf_5_pdfas - Member 19 of sets NNPDF30_nlo_nf_5_pdfas - Member 20 of sets NNPDF30_nlo_nf_5_pdfas - Member 21 of sets NNPDF30_nlo_nf_5_pdfas - Member 22 of sets NNPDF30_nlo_nf_5_pdfas - Member 23 of sets NNPDF30_nlo_nf_5_pdfas - Member 24 of sets NNPDF30_nlo_nf_5_pdfas - Member 25 of sets NNPDF30_nlo_nf_5_pdfas - Member 26 of sets NNPDF30_nlo_nf_5_pdfas - Member 27 of sets NNPDF30_nlo_nf_5_pdfas - Member 28 of sets NNPDF30_nlo_nf_5_pdfas - Member 29 of sets NNPDF30_nlo_nf_5_pdfas - Member 30 of sets NNPDF30_nlo_nf_5_pdfas - Member 31 of sets NNPDF30_nlo_nf_5_pdfas - Member 32 of sets NNPDF30_nlo_nf_5_pdfas - Member 33 of sets NNPDF30_nlo_nf_5_pdfas - Member 34 of sets NNPDF30_nlo_nf_5_pdfas - Member 35 of sets NNPDF30_nlo_nf_5_pdfas - Member 36 of sets NNPDF30_nlo_nf_5_pdfas - Member 37 of sets NNPDF30_nlo_nf_5_pdfas - Member 38 of sets NNPDF30_nlo_nf_5_pdfas - Member 39 of sets NNPDF30_nlo_nf_5_pdfas - Member 40 of sets NNPDF30_nlo_nf_5_pdfas - Member 41 of sets NNPDF30_nlo_nf_5_pdfas - Member 42 of sets NNPDF30_nlo_nf_5_pdfas - Member 43 of sets NNPDF30_nlo_nf_5_pdfas - Member 44 of sets NNPDF30_nlo_nf_5_pdfas - Member 45 of sets NNPDF30_nlo_nf_5_pdfas - Member 46 of sets NNPDF30_nlo_nf_5_pdfas - Member 47 of sets NNPDF30_nlo_nf_5_pdfas - Member 48 of sets NNPDF30_nlo_nf_5_pdfas - Member 49 of sets NNPDF30_nlo_nf_5_pdfas - Member 50 of sets NNPDF30_nlo_nf_5_pdfas - Member 51 of sets NNPDF30_nlo_nf_5_pdfas - Member 52 of sets NNPDF30_nlo_nf_5_pdfas - Member 53 of sets NNPDF30_nlo_nf_5_pdfas - Member 54 of sets NNPDF30_nlo_nf_5_pdfas - Member 55 of sets NNPDF30_nlo_nf_5_pdfas - Member 56 of sets NNPDF30_nlo_nf_5_pdfas - Member 57 of sets NNPDF30_nlo_nf_5_pdfas - Member 58 of sets NNPDF30_nlo_nf_5_pdfas - Member 59 of sets NNPDF30_nlo_nf_5_pdfas - Member 60 of sets NNPDF30_nlo_nf_5_pdfas - Member 61 of sets NNPDF30_nlo_nf_5_pdfas - Member 62 of sets NNPDF30_nlo_nf_5_pdfas - Member 63 of sets NNPDF30_nlo_nf_5_pdfas - Member 64 of sets NNPDF30_nlo_nf_5_pdfas - Member 65 of sets NNPDF30_nlo_nf_5_pdfas - Member 66 of sets NNPDF30_nlo_nf_5_pdfas - Member 67 of sets NNPDF30_nlo_nf_5_pdfas - Member 68 of sets NNPDF30_nlo_nf_5_pdfas - Member 69 of sets NNPDF30_nlo_nf_5_pdfas - Member 70 of sets NNPDF30_nlo_nf_5_pdfas - Member 71 of sets NNPDF30_nlo_nf_5_pdfas - Member 72 of sets NNPDF30_nlo_nf_5_pdfas - Member 73 of sets NNPDF30_nlo_nf_5_pdfas - Member 74 of sets NNPDF30_nlo_nf_5_pdfas - Member 75 of sets NNPDF30_nlo_nf_5_pdfas - Member 76 of sets NNPDF30_nlo_nf_5_pdfas - Member 77 of sets NNPDF30_nlo_nf_5_pdfas - Member 78 of sets NNPDF30_nlo_nf_5_pdfas - Member 79 of sets NNPDF30_nlo_nf_5_pdfas - Member 80 of sets NNPDF30_nlo_nf_5_pdfas - Member 81 of sets NNPDF30_nlo_nf_5_pdfas - Member 82 of sets NNPDF30_nlo_nf_5_pdfas - Member 83 of sets NNPDF30_nlo_nf_5_pdfas - Member 84 of sets NNPDF30_nlo_nf_5_pdfas - Member 85 of sets NNPDF30_nlo_nf_5_pdfas - Member 86 of sets NNPDF30_nlo_nf_5_pdfas - Member 87 of sets NNPDF30_nlo_nf_5_pdfas - Member 88 of sets NNPDF30_nlo_nf_5_pdfas - Member 89 of sets NNPDF30_nlo_nf_5_pdfas - Member 90 of sets NNPDF30_nlo_nf_5_pdfas - Member 91 of sets NNPDF30_nlo_nf_5_pdfas - Member 92 of sets NNPDF30_nlo_nf_5_pdfas - Member 93 of sets NNPDF30_nlo_nf_5_pdfas - Member 94 of sets NNPDF30_nlo_nf_5_pdfas - Member 95 of sets NNPDF30_nlo_nf_5_pdfas - Member 96 of sets NNPDF30_nlo_nf_5_pdfas - Member 97 of sets NNPDF30_nlo_nf_5_pdfas - Member 98 of sets NNPDF30_nlo_nf_5_pdfas - Member 99 of sets NNPDF30_nlo_nf_5_pdfas - Member 100 of sets NNPDF30_nlo_nf_5_pdfas - Member 101 of sets NNPDF30_nlo_nf_5_pdfas - Member 102 of sets NNPDF30_nlo_nf_5_pdfas - - - Member 0 of sets NNPDF30_nnlo_nf_5_pdfas - - - Member 0 of sets NNPDF31_lo_as_0118 - - - Member 0 of sets NNPDF31_lo_as_0130 - - - Member 0 of sets NNPDF30_lo_as_0118 - - - Member 0 of sets NNPDF30_lo_as_0130 - - diff --git a/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt b/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt deleted file mode 100644 index 5058c004a78c3..0000000000000 --- a/testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt +++ /dev/null @@ -1,117 +0,0 @@ -# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/PUMoriond17_plus5percentMaterial_94X_mcRun2_asymptotic_v3-v2/70000/860C654F-633D-E911-8316-0CC47A2B03A2.root - - muR=0.10000E+01 muF=0.10000E+01 - muR=0.10000E+01 muF=0.20000E+01 - muR=0.10000E+01 muF=0.50000E+00 - muR=0.20000E+01 muF=0.10000E+01 - muR=0.20000E+01 muF=0.20000E+01 - muR=0.20000E+01 muF=0.50000E+00 - muR=0.50000E+00 muF=0.10000E+01 - muR=0.50000E+00 muF=0.20000E+01 - muR=0.50000E+00 muF=0.50000E+00 - - - pdfset=292201 - pdfset=292202 - pdfset=292203 - pdfset=292204 - pdfset=292205 - pdfset=292206 - pdfset=292207 - pdfset=292208 - pdfset=292209 - pdfset=292210 - pdfset=292211 - pdfset=292212 - pdfset=292213 - pdfset=292214 - pdfset=292215 - pdfset=292216 - pdfset=292217 - pdfset=292218 - pdfset=292219 - pdfset=292220 - pdfset=292221 - pdfset=292222 - pdfset=292223 - pdfset=292224 - pdfset=292225 - pdfset=292226 - pdfset=292227 - pdfset=292228 - pdfset=292229 - pdfset=292230 - pdfset=292231 - pdfset=292232 - pdfset=292233 - pdfset=292234 - pdfset=292235 - pdfset=292236 - pdfset=292237 - pdfset=292238 - pdfset=292239 - pdfset=292240 - pdfset=292241 - pdfset=292242 - pdfset=292243 - pdfset=292244 - pdfset=292245 - pdfset=292246 - pdfset=292247 - pdfset=292248 - pdfset=292249 - pdfset=292250 - pdfset=292251 - pdfset=292252 - pdfset=292253 - pdfset=292254 - pdfset=292255 - pdfset=292256 - pdfset=292257 - pdfset=292258 - pdfset=292259 - pdfset=292260 - pdfset=292261 - pdfset=292262 - pdfset=292263 - pdfset=292264 - pdfset=292265 - pdfset=292266 - pdfset=292267 - pdfset=292268 - pdfset=292269 - pdfset=292270 - pdfset=292271 - pdfset=292272 - pdfset=292273 - pdfset=292274 - pdfset=292275 - pdfset=292276 - pdfset=292277 - pdfset=292278 - pdfset=292279 - pdfset=292280 - pdfset=292281 - pdfset=292282 - pdfset=292283 - pdfset=292284 - pdfset=292285 - pdfset=292286 - pdfset=292287 - pdfset=292288 - pdfset=292289 - pdfset=292290 - pdfset=292291 - pdfset=292292 - pdfset=292293 - pdfset=292294 - pdfset=292295 - pdfset=292296 - pdfset=292297 - pdfset=292298 - pdfset=292299 - pdfset=292300 - pdfset=292301 - pdfset=292302 - - diff --git a/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt b/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt deleted file mode 100644 index db48284ba64bc..0000000000000 --- a/testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt +++ /dev/null @@ -1,1158 +0,0 @@ -# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15_ext2-v1/260000/61CD1B34-65BD-DF42-812C-87CEF2E9AD1A.root - - dyn= -1 muR=0.10000E+01 muF=0.10000E+01 - dyn= -1 muR=0.20000E+01 muF=0.10000E+01 - dyn= -1 muR=0.50000E+00 muF=0.10000E+01 - dyn= -1 muR=0.10000E+01 muF=0.20000E+01 - dyn= -1 muR=0.20000E+01 muF=0.20000E+01 - dyn= -1 muR=0.50000E+00 muF=0.20000E+01 - dyn= -1 muR=0.10000E+01 muF=0.50000E+00 - dyn= -1 muR=0.20000E+01 muF=0.50000E+00 - dyn= -1 muR=0.50000E+00 muF=0.50000E+00 - - - PDF= 306000 NNPDF31_nnlo_hessian_pdfas - PDF= 306001 NNPDF31_nnlo_hessian_pdfas - PDF= 306002 NNPDF31_nnlo_hessian_pdfas - PDF= 306003 NNPDF31_nnlo_hessian_pdfas - PDF= 306004 NNPDF31_nnlo_hessian_pdfas - PDF= 306005 NNPDF31_nnlo_hessian_pdfas - PDF= 306006 NNPDF31_nnlo_hessian_pdfas - PDF= 306007 NNPDF31_nnlo_hessian_pdfas - PDF= 306008 NNPDF31_nnlo_hessian_pdfas - PDF= 306009 NNPDF31_nnlo_hessian_pdfas - PDF= 306010 NNPDF31_nnlo_hessian_pdfas - PDF= 306011 NNPDF31_nnlo_hessian_pdfas - PDF= 306012 NNPDF31_nnlo_hessian_pdfas - PDF= 306013 NNPDF31_nnlo_hessian_pdfas - PDF= 306014 NNPDF31_nnlo_hessian_pdfas - PDF= 306015 NNPDF31_nnlo_hessian_pdfas - PDF= 306016 NNPDF31_nnlo_hessian_pdfas - PDF= 306017 NNPDF31_nnlo_hessian_pdfas - PDF= 306018 NNPDF31_nnlo_hessian_pdfas - PDF= 306019 NNPDF31_nnlo_hessian_pdfas - PDF= 306020 NNPDF31_nnlo_hessian_pdfas - PDF= 306021 NNPDF31_nnlo_hessian_pdfas - PDF= 306022 NNPDF31_nnlo_hessian_pdfas - PDF= 306023 NNPDF31_nnlo_hessian_pdfas - PDF= 306024 NNPDF31_nnlo_hessian_pdfas - PDF= 306025 NNPDF31_nnlo_hessian_pdfas - PDF= 306026 NNPDF31_nnlo_hessian_pdfas - PDF= 306027 NNPDF31_nnlo_hessian_pdfas - PDF= 306028 NNPDF31_nnlo_hessian_pdfas - PDF= 306029 NNPDF31_nnlo_hessian_pdfas - PDF= 306030 NNPDF31_nnlo_hessian_pdfas - PDF= 306031 NNPDF31_nnlo_hessian_pdfas - PDF= 306032 NNPDF31_nnlo_hessian_pdfas - PDF= 306033 NNPDF31_nnlo_hessian_pdfas - PDF= 306034 NNPDF31_nnlo_hessian_pdfas - PDF= 306035 NNPDF31_nnlo_hessian_pdfas - PDF= 306036 NNPDF31_nnlo_hessian_pdfas - PDF= 306037 NNPDF31_nnlo_hessian_pdfas - PDF= 306038 NNPDF31_nnlo_hessian_pdfas - PDF= 306039 NNPDF31_nnlo_hessian_pdfas - PDF= 306040 NNPDF31_nnlo_hessian_pdfas - PDF= 306041 NNPDF31_nnlo_hessian_pdfas - PDF= 306042 NNPDF31_nnlo_hessian_pdfas - PDF= 306043 NNPDF31_nnlo_hessian_pdfas - PDF= 306044 NNPDF31_nnlo_hessian_pdfas - PDF= 306045 NNPDF31_nnlo_hessian_pdfas - PDF= 306046 NNPDF31_nnlo_hessian_pdfas - PDF= 306047 NNPDF31_nnlo_hessian_pdfas - PDF= 306048 NNPDF31_nnlo_hessian_pdfas - PDF= 306049 NNPDF31_nnlo_hessian_pdfas - PDF= 306050 NNPDF31_nnlo_hessian_pdfas - PDF= 306051 NNPDF31_nnlo_hessian_pdfas - PDF= 306052 NNPDF31_nnlo_hessian_pdfas - PDF= 306053 NNPDF31_nnlo_hessian_pdfas - PDF= 306054 NNPDF31_nnlo_hessian_pdfas - PDF= 306055 NNPDF31_nnlo_hessian_pdfas - PDF= 306056 NNPDF31_nnlo_hessian_pdfas - PDF= 306057 NNPDF31_nnlo_hessian_pdfas - PDF= 306058 NNPDF31_nnlo_hessian_pdfas - PDF= 306059 NNPDF31_nnlo_hessian_pdfas - PDF= 306060 NNPDF31_nnlo_hessian_pdfas - PDF= 306061 NNPDF31_nnlo_hessian_pdfas - PDF= 306062 NNPDF31_nnlo_hessian_pdfas - PDF= 306063 NNPDF31_nnlo_hessian_pdfas - PDF= 306064 NNPDF31_nnlo_hessian_pdfas - PDF= 306065 NNPDF31_nnlo_hessian_pdfas - PDF= 306066 NNPDF31_nnlo_hessian_pdfas - PDF= 306067 NNPDF31_nnlo_hessian_pdfas - PDF= 306068 NNPDF31_nnlo_hessian_pdfas - PDF= 306069 NNPDF31_nnlo_hessian_pdfas - PDF= 306070 NNPDF31_nnlo_hessian_pdfas - PDF= 306071 NNPDF31_nnlo_hessian_pdfas - PDF= 306072 NNPDF31_nnlo_hessian_pdfas - PDF= 306073 NNPDF31_nnlo_hessian_pdfas - PDF= 306074 NNPDF31_nnlo_hessian_pdfas - PDF= 306075 NNPDF31_nnlo_hessian_pdfas - PDF= 306076 NNPDF31_nnlo_hessian_pdfas - PDF= 306077 NNPDF31_nnlo_hessian_pdfas - PDF= 306078 NNPDF31_nnlo_hessian_pdfas - PDF= 306079 NNPDF31_nnlo_hessian_pdfas - PDF= 306080 NNPDF31_nnlo_hessian_pdfas - PDF= 306081 NNPDF31_nnlo_hessian_pdfas - PDF= 306082 NNPDF31_nnlo_hessian_pdfas - PDF= 306083 NNPDF31_nnlo_hessian_pdfas - PDF= 306084 NNPDF31_nnlo_hessian_pdfas - PDF= 306085 NNPDF31_nnlo_hessian_pdfas - PDF= 306086 NNPDF31_nnlo_hessian_pdfas - PDF= 306087 NNPDF31_nnlo_hessian_pdfas - PDF= 306088 NNPDF31_nnlo_hessian_pdfas - PDF= 306089 NNPDF31_nnlo_hessian_pdfas - PDF= 306090 NNPDF31_nnlo_hessian_pdfas - PDF= 306091 NNPDF31_nnlo_hessian_pdfas - PDF= 306092 NNPDF31_nnlo_hessian_pdfas - PDF= 306093 NNPDF31_nnlo_hessian_pdfas - PDF= 306094 NNPDF31_nnlo_hessian_pdfas - PDF= 306095 NNPDF31_nnlo_hessian_pdfas - PDF= 306096 NNPDF31_nnlo_hessian_pdfas - PDF= 306097 NNPDF31_nnlo_hessian_pdfas - PDF= 306098 NNPDF31_nnlo_hessian_pdfas - PDF= 306099 NNPDF31_nnlo_hessian_pdfas - PDF= 306100 NNPDF31_nnlo_hessian_pdfas - PDF= 306101 NNPDF31_nnlo_hessian_pdfas - PDF= 306102 NNPDF31_nnlo_hessian_pdfas - - - PDF= 322500 NNPDF31_nnlo_as_0108 - - - PDF= 322700 NNPDF31_nnlo_as_0110 - - - PDF= 322900 NNPDF31_nnlo_as_0112 - - - PDF= 323100 NNPDF31_nnlo_as_0114 - - - PDF= 323300 NNPDF31_nnlo_as_0117 - - - PDF= 323500 NNPDF31_nnlo_as_0119 - - - PDF= 323700 NNPDF31_nnlo_as_0122 - - - PDF= 323900 NNPDF31_nnlo_as_0124 - - - PDF= 305800 NNPDF31_nlo_hessian_pdfas - PDF= 305801 NNPDF31_nlo_hessian_pdfas - PDF= 305802 NNPDF31_nlo_hessian_pdfas - PDF= 305803 NNPDF31_nlo_hessian_pdfas - PDF= 305804 NNPDF31_nlo_hessian_pdfas - PDF= 305805 NNPDF31_nlo_hessian_pdfas - PDF= 305806 NNPDF31_nlo_hessian_pdfas - PDF= 305807 NNPDF31_nlo_hessian_pdfas - PDF= 305808 NNPDF31_nlo_hessian_pdfas - PDF= 305809 NNPDF31_nlo_hessian_pdfas - PDF= 305810 NNPDF31_nlo_hessian_pdfas - PDF= 305811 NNPDF31_nlo_hessian_pdfas - PDF= 305812 NNPDF31_nlo_hessian_pdfas - PDF= 305813 NNPDF31_nlo_hessian_pdfas - PDF= 305814 NNPDF31_nlo_hessian_pdfas - PDF= 305815 NNPDF31_nlo_hessian_pdfas - PDF= 305816 NNPDF31_nlo_hessian_pdfas - PDF= 305817 NNPDF31_nlo_hessian_pdfas - PDF= 305818 NNPDF31_nlo_hessian_pdfas - PDF= 305819 NNPDF31_nlo_hessian_pdfas - PDF= 305820 NNPDF31_nlo_hessian_pdfas - PDF= 305821 NNPDF31_nlo_hessian_pdfas - PDF= 305822 NNPDF31_nlo_hessian_pdfas - PDF= 305823 NNPDF31_nlo_hessian_pdfas - PDF= 305824 NNPDF31_nlo_hessian_pdfas - PDF= 305825 NNPDF31_nlo_hessian_pdfas - PDF= 305826 NNPDF31_nlo_hessian_pdfas - PDF= 305827 NNPDF31_nlo_hessian_pdfas - PDF= 305828 NNPDF31_nlo_hessian_pdfas - PDF= 305829 NNPDF31_nlo_hessian_pdfas - PDF= 305830 NNPDF31_nlo_hessian_pdfas - PDF= 305831 NNPDF31_nlo_hessian_pdfas - PDF= 305832 NNPDF31_nlo_hessian_pdfas - PDF= 305833 NNPDF31_nlo_hessian_pdfas - PDF= 305834 NNPDF31_nlo_hessian_pdfas - PDF= 305835 NNPDF31_nlo_hessian_pdfas - PDF= 305836 NNPDF31_nlo_hessian_pdfas - PDF= 305837 NNPDF31_nlo_hessian_pdfas - PDF= 305838 NNPDF31_nlo_hessian_pdfas - PDF= 305839 NNPDF31_nlo_hessian_pdfas - PDF= 305840 NNPDF31_nlo_hessian_pdfas - PDF= 305841 NNPDF31_nlo_hessian_pdfas - PDF= 305842 NNPDF31_nlo_hessian_pdfas - PDF= 305843 NNPDF31_nlo_hessian_pdfas - PDF= 305844 NNPDF31_nlo_hessian_pdfas - PDF= 305845 NNPDF31_nlo_hessian_pdfas - PDF= 305846 NNPDF31_nlo_hessian_pdfas - PDF= 305847 NNPDF31_nlo_hessian_pdfas - PDF= 305848 NNPDF31_nlo_hessian_pdfas - PDF= 305849 NNPDF31_nlo_hessian_pdfas - PDF= 305850 NNPDF31_nlo_hessian_pdfas - PDF= 305851 NNPDF31_nlo_hessian_pdfas - PDF= 305852 NNPDF31_nlo_hessian_pdfas - PDF= 305853 NNPDF31_nlo_hessian_pdfas - PDF= 305854 NNPDF31_nlo_hessian_pdfas - PDF= 305855 NNPDF31_nlo_hessian_pdfas - PDF= 305856 NNPDF31_nlo_hessian_pdfas - PDF= 305857 NNPDF31_nlo_hessian_pdfas - PDF= 305858 NNPDF31_nlo_hessian_pdfas - PDF= 305859 NNPDF31_nlo_hessian_pdfas - PDF= 305860 NNPDF31_nlo_hessian_pdfas - PDF= 305861 NNPDF31_nlo_hessian_pdfas - PDF= 305862 NNPDF31_nlo_hessian_pdfas - PDF= 305863 NNPDF31_nlo_hessian_pdfas - PDF= 305864 NNPDF31_nlo_hessian_pdfas - PDF= 305865 NNPDF31_nlo_hessian_pdfas - PDF= 305866 NNPDF31_nlo_hessian_pdfas - PDF= 305867 NNPDF31_nlo_hessian_pdfas - PDF= 305868 NNPDF31_nlo_hessian_pdfas - PDF= 305869 NNPDF31_nlo_hessian_pdfas - PDF= 305870 NNPDF31_nlo_hessian_pdfas - PDF= 305871 NNPDF31_nlo_hessian_pdfas - PDF= 305872 NNPDF31_nlo_hessian_pdfas - PDF= 305873 NNPDF31_nlo_hessian_pdfas - PDF= 305874 NNPDF31_nlo_hessian_pdfas - PDF= 305875 NNPDF31_nlo_hessian_pdfas - PDF= 305876 NNPDF31_nlo_hessian_pdfas - PDF= 305877 NNPDF31_nlo_hessian_pdfas - PDF= 305878 NNPDF31_nlo_hessian_pdfas - PDF= 305879 NNPDF31_nlo_hessian_pdfas - PDF= 305880 NNPDF31_nlo_hessian_pdfas - PDF= 305881 NNPDF31_nlo_hessian_pdfas - PDF= 305882 NNPDF31_nlo_hessian_pdfas - PDF= 305883 NNPDF31_nlo_hessian_pdfas - PDF= 305884 NNPDF31_nlo_hessian_pdfas - PDF= 305885 NNPDF31_nlo_hessian_pdfas - PDF= 305886 NNPDF31_nlo_hessian_pdfas - PDF= 305887 NNPDF31_nlo_hessian_pdfas - PDF= 305888 NNPDF31_nlo_hessian_pdfas - PDF= 305889 NNPDF31_nlo_hessian_pdfas - PDF= 305890 NNPDF31_nlo_hessian_pdfas - PDF= 305891 NNPDF31_nlo_hessian_pdfas - PDF= 305892 NNPDF31_nlo_hessian_pdfas - PDF= 305893 NNPDF31_nlo_hessian_pdfas - PDF= 305894 NNPDF31_nlo_hessian_pdfas - PDF= 305895 NNPDF31_nlo_hessian_pdfas - PDF= 305896 NNPDF31_nlo_hessian_pdfas - PDF= 305897 NNPDF31_nlo_hessian_pdfas - PDF= 305898 NNPDF31_nlo_hessian_pdfas - PDF= 305899 NNPDF31_nlo_hessian_pdfas - PDF= 305900 NNPDF31_nlo_hessian_pdfas - PDF= 305901 NNPDF31_nlo_hessian_pdfas - PDF= 305902 NNPDF31_nlo_hessian_pdfas - - - PDF= 13000 CT14nnlo - PDF= 13001 CT14nnlo - PDF= 13002 CT14nnlo - PDF= 13003 CT14nnlo - PDF= 13004 CT14nnlo - PDF= 13005 CT14nnlo - PDF= 13006 CT14nnlo - PDF= 13007 CT14nnlo - PDF= 13008 CT14nnlo - PDF= 13009 CT14nnlo - PDF= 13010 CT14nnlo - PDF= 13011 CT14nnlo - PDF= 13012 CT14nnlo - PDF= 13013 CT14nnlo - PDF= 13014 CT14nnlo - PDF= 13015 CT14nnlo - PDF= 13016 CT14nnlo - PDF= 13017 CT14nnlo - PDF= 13018 CT14nnlo - PDF= 13019 CT14nnlo - PDF= 13020 CT14nnlo - PDF= 13021 CT14nnlo - PDF= 13022 CT14nnlo - PDF= 13023 CT14nnlo - PDF= 13024 CT14nnlo - PDF= 13025 CT14nnlo - PDF= 13026 CT14nnlo - PDF= 13027 CT14nnlo - PDF= 13028 CT14nnlo - PDF= 13029 CT14nnlo - PDF= 13030 CT14nnlo - PDF= 13031 CT14nnlo - PDF= 13032 CT14nnlo - PDF= 13033 CT14nnlo - PDF= 13034 CT14nnlo - PDF= 13035 CT14nnlo - PDF= 13036 CT14nnlo - PDF= 13037 CT14nnlo - PDF= 13038 CT14nnlo - PDF= 13039 CT14nnlo - PDF= 13040 CT14nnlo - PDF= 13041 CT14nnlo - PDF= 13042 CT14nnlo - PDF= 13043 CT14nnlo - PDF= 13044 CT14nnlo - PDF= 13045 CT14nnlo - PDF= 13046 CT14nnlo - PDF= 13047 CT14nnlo - PDF= 13048 CT14nnlo - PDF= 13049 CT14nnlo - PDF= 13050 CT14nnlo - PDF= 13051 CT14nnlo - PDF= 13052 CT14nnlo - PDF= 13053 CT14nnlo - PDF= 13054 CT14nnlo - PDF= 13055 CT14nnlo - PDF= 13056 CT14nnlo - - - PDF= 13065 CT14nnlo_as_0116 - - - PDF= 13069 CT14nnlo_as_0120 - - - PDF= 13100 CT14nlo - PDF= 13101 CT14nlo - PDF= 13102 CT14nlo - PDF= 13103 CT14nlo - PDF= 13104 CT14nlo - PDF= 13105 CT14nlo - PDF= 13106 CT14nlo - PDF= 13107 CT14nlo - PDF= 13108 CT14nlo - PDF= 13109 CT14nlo - PDF= 13110 CT14nlo - PDF= 13111 CT14nlo - PDF= 13112 CT14nlo - PDF= 13113 CT14nlo - PDF= 13114 CT14nlo - PDF= 13115 CT14nlo - PDF= 13116 CT14nlo - PDF= 13117 CT14nlo - PDF= 13118 CT14nlo - PDF= 13119 CT14nlo - PDF= 13120 CT14nlo - PDF= 13121 CT14nlo - PDF= 13122 CT14nlo - PDF= 13123 CT14nlo - PDF= 13124 CT14nlo - PDF= 13125 CT14nlo - PDF= 13126 CT14nlo - PDF= 13127 CT14nlo - PDF= 13128 CT14nlo - PDF= 13129 CT14nlo - PDF= 13130 CT14nlo - PDF= 13131 CT14nlo - PDF= 13132 CT14nlo - PDF= 13133 CT14nlo - PDF= 13134 CT14nlo - PDF= 13135 CT14nlo - PDF= 13136 CT14nlo - PDF= 13137 CT14nlo - PDF= 13138 CT14nlo - PDF= 13139 CT14nlo - PDF= 13140 CT14nlo - PDF= 13141 CT14nlo - PDF= 13142 CT14nlo - PDF= 13143 CT14nlo - PDF= 13144 CT14nlo - PDF= 13145 CT14nlo - PDF= 13146 CT14nlo - PDF= 13147 CT14nlo - PDF= 13148 CT14nlo - PDF= 13149 CT14nlo - PDF= 13150 CT14nlo - PDF= 13151 CT14nlo - PDF= 13152 CT14nlo - PDF= 13153 CT14nlo - PDF= 13154 CT14nlo - PDF= 13155 CT14nlo - PDF= 13156 CT14nlo - - - PDF= 13163 CT14nlo_as_0116 - - - PDF= 13167 CT14nlo_as_0120 - - - PDF= 13200 CT14lo - - - PDF= 25200 MMHT2014nlo68clas118 - PDF= 25201 MMHT2014nlo68clas118 - PDF= 25202 MMHT2014nlo68clas118 - PDF= 25203 MMHT2014nlo68clas118 - PDF= 25204 MMHT2014nlo68clas118 - PDF= 25205 MMHT2014nlo68clas118 - PDF= 25206 MMHT2014nlo68clas118 - PDF= 25207 MMHT2014nlo68clas118 - PDF= 25208 MMHT2014nlo68clas118 - PDF= 25209 MMHT2014nlo68clas118 - PDF= 25210 MMHT2014nlo68clas118 - PDF= 25211 MMHT2014nlo68clas118 - PDF= 25212 MMHT2014nlo68clas118 - PDF= 25213 MMHT2014nlo68clas118 - PDF= 25214 MMHT2014nlo68clas118 - PDF= 25215 MMHT2014nlo68clas118 - PDF= 25216 MMHT2014nlo68clas118 - PDF= 25217 MMHT2014nlo68clas118 - PDF= 25218 MMHT2014nlo68clas118 - PDF= 25219 MMHT2014nlo68clas118 - PDF= 25220 MMHT2014nlo68clas118 - PDF= 25221 MMHT2014nlo68clas118 - PDF= 25222 MMHT2014nlo68clas118 - PDF= 25223 MMHT2014nlo68clas118 - PDF= 25224 MMHT2014nlo68clas118 - PDF= 25225 MMHT2014nlo68clas118 - PDF= 25226 MMHT2014nlo68clas118 - PDF= 25227 MMHT2014nlo68clas118 - PDF= 25228 MMHT2014nlo68clas118 - PDF= 25229 MMHT2014nlo68clas118 - PDF= 25230 MMHT2014nlo68clas118 - PDF= 25231 MMHT2014nlo68clas118 - PDF= 25232 MMHT2014nlo68clas118 - PDF= 25233 MMHT2014nlo68clas118 - PDF= 25234 MMHT2014nlo68clas118 - PDF= 25235 MMHT2014nlo68clas118 - PDF= 25236 MMHT2014nlo68clas118 - PDF= 25237 MMHT2014nlo68clas118 - PDF= 25238 MMHT2014nlo68clas118 - PDF= 25239 MMHT2014nlo68clas118 - PDF= 25240 MMHT2014nlo68clas118 - PDF= 25241 MMHT2014nlo68clas118 - PDF= 25242 MMHT2014nlo68clas118 - PDF= 25243 MMHT2014nlo68clas118 - PDF= 25244 MMHT2014nlo68clas118 - PDF= 25245 MMHT2014nlo68clas118 - PDF= 25246 MMHT2014nlo68clas118 - PDF= 25247 MMHT2014nlo68clas118 - PDF= 25248 MMHT2014nlo68clas118 - PDF= 25249 MMHT2014nlo68clas118 - PDF= 25250 MMHT2014nlo68clas118 - - - PDF= 25300 MMHT2014nnlo68cl - PDF= 25301 MMHT2014nnlo68cl - PDF= 25302 MMHT2014nnlo68cl - PDF= 25303 MMHT2014nnlo68cl - PDF= 25304 MMHT2014nnlo68cl - PDF= 25305 MMHT2014nnlo68cl - PDF= 25306 MMHT2014nnlo68cl - PDF= 25307 MMHT2014nnlo68cl - PDF= 25308 MMHT2014nnlo68cl - PDF= 25309 MMHT2014nnlo68cl - PDF= 25310 MMHT2014nnlo68cl - PDF= 25311 MMHT2014nnlo68cl - PDF= 25312 MMHT2014nnlo68cl - PDF= 25313 MMHT2014nnlo68cl - PDF= 25314 MMHT2014nnlo68cl - PDF= 25315 MMHT2014nnlo68cl - PDF= 25316 MMHT2014nnlo68cl - PDF= 25317 MMHT2014nnlo68cl - PDF= 25318 MMHT2014nnlo68cl - PDF= 25319 MMHT2014nnlo68cl - PDF= 25320 MMHT2014nnlo68cl - PDF= 25321 MMHT2014nnlo68cl - PDF= 25322 MMHT2014nnlo68cl - PDF= 25323 MMHT2014nnlo68cl - PDF= 25324 MMHT2014nnlo68cl - PDF= 25325 MMHT2014nnlo68cl - PDF= 25326 MMHT2014nnlo68cl - PDF= 25327 MMHT2014nnlo68cl - PDF= 25328 MMHT2014nnlo68cl - PDF= 25329 MMHT2014nnlo68cl - PDF= 25330 MMHT2014nnlo68cl - PDF= 25331 MMHT2014nnlo68cl - PDF= 25332 MMHT2014nnlo68cl - PDF= 25333 MMHT2014nnlo68cl - PDF= 25334 MMHT2014nnlo68cl - PDF= 25335 MMHT2014nnlo68cl - PDF= 25336 MMHT2014nnlo68cl - PDF= 25337 MMHT2014nnlo68cl - PDF= 25338 MMHT2014nnlo68cl - PDF= 25339 MMHT2014nnlo68cl - PDF= 25340 MMHT2014nnlo68cl - PDF= 25341 MMHT2014nnlo68cl - PDF= 25342 MMHT2014nnlo68cl - PDF= 25343 MMHT2014nnlo68cl - PDF= 25344 MMHT2014nnlo68cl - PDF= 25345 MMHT2014nnlo68cl - PDF= 25346 MMHT2014nnlo68cl - PDF= 25347 MMHT2014nnlo68cl - PDF= 25348 MMHT2014nnlo68cl - PDF= 25349 MMHT2014nnlo68cl - PDF= 25350 MMHT2014nnlo68cl - - - PDF= 25000 MMHT2014lo68cl - - - PDF= 42780 ABMP16als118_5_nnlo - PDF= 42781 ABMP16als118_5_nnlo - PDF= 42782 ABMP16als118_5_nnlo - PDF= 42783 ABMP16als118_5_nnlo - PDF= 42784 ABMP16als118_5_nnlo - PDF= 42785 ABMP16als118_5_nnlo - PDF= 42786 ABMP16als118_5_nnlo - PDF= 42787 ABMP16als118_5_nnlo - PDF= 42788 ABMP16als118_5_nnlo - PDF= 42789 ABMP16als118_5_nnlo - PDF= 42790 ABMP16als118_5_nnlo - PDF= 42791 ABMP16als118_5_nnlo - PDF= 42792 ABMP16als118_5_nnlo - PDF= 42793 ABMP16als118_5_nnlo - PDF= 42794 ABMP16als118_5_nnlo - PDF= 42795 ABMP16als118_5_nnlo - PDF= 42796 ABMP16als118_5_nnlo - PDF= 42797 ABMP16als118_5_nnlo - PDF= 42798 ABMP16als118_5_nnlo - PDF= 42799 ABMP16als118_5_nnlo - PDF= 42800 ABMP16als118_5_nnlo - PDF= 42801 ABMP16als118_5_nnlo - PDF= 42802 ABMP16als118_5_nnlo - PDF= 42803 ABMP16als118_5_nnlo - PDF= 42804 ABMP16als118_5_nnlo - PDF= 42805 ABMP16als118_5_nnlo - PDF= 42806 ABMP16als118_5_nnlo - PDF= 42807 ABMP16als118_5_nnlo - PDF= 42808 ABMP16als118_5_nnlo - PDF= 42809 ABMP16als118_5_nnlo - - - PDF= 90200 PDF4LHC15_nlo_100_pdfas - PDF= 90201 PDF4LHC15_nlo_100_pdfas - PDF= 90202 PDF4LHC15_nlo_100_pdfas - PDF= 90203 PDF4LHC15_nlo_100_pdfas - PDF= 90204 PDF4LHC15_nlo_100_pdfas - PDF= 90205 PDF4LHC15_nlo_100_pdfas - PDF= 90206 PDF4LHC15_nlo_100_pdfas - PDF= 90207 PDF4LHC15_nlo_100_pdfas - PDF= 90208 PDF4LHC15_nlo_100_pdfas - PDF= 90209 PDF4LHC15_nlo_100_pdfas - PDF= 90210 PDF4LHC15_nlo_100_pdfas - PDF= 90211 PDF4LHC15_nlo_100_pdfas - PDF= 90212 PDF4LHC15_nlo_100_pdfas - PDF= 90213 PDF4LHC15_nlo_100_pdfas - PDF= 90214 PDF4LHC15_nlo_100_pdfas - PDF= 90215 PDF4LHC15_nlo_100_pdfas - PDF= 90216 PDF4LHC15_nlo_100_pdfas - PDF= 90217 PDF4LHC15_nlo_100_pdfas - PDF= 90218 PDF4LHC15_nlo_100_pdfas - PDF= 90219 PDF4LHC15_nlo_100_pdfas - PDF= 90220 PDF4LHC15_nlo_100_pdfas - PDF= 90221 PDF4LHC15_nlo_100_pdfas - PDF= 90222 PDF4LHC15_nlo_100_pdfas - PDF= 90223 PDF4LHC15_nlo_100_pdfas - PDF= 90224 PDF4LHC15_nlo_100_pdfas - PDF= 90225 PDF4LHC15_nlo_100_pdfas - PDF= 90226 PDF4LHC15_nlo_100_pdfas - PDF= 90227 PDF4LHC15_nlo_100_pdfas - PDF= 90228 PDF4LHC15_nlo_100_pdfas - PDF= 90229 PDF4LHC15_nlo_100_pdfas - PDF= 90230 PDF4LHC15_nlo_100_pdfas - PDF= 90231 PDF4LHC15_nlo_100_pdfas - PDF= 90232 PDF4LHC15_nlo_100_pdfas - PDF= 90233 PDF4LHC15_nlo_100_pdfas - PDF= 90234 PDF4LHC15_nlo_100_pdfas - PDF= 90235 PDF4LHC15_nlo_100_pdfas - PDF= 90236 PDF4LHC15_nlo_100_pdfas - PDF= 90237 PDF4LHC15_nlo_100_pdfas - PDF= 90238 PDF4LHC15_nlo_100_pdfas - PDF= 90239 PDF4LHC15_nlo_100_pdfas - PDF= 90240 PDF4LHC15_nlo_100_pdfas - PDF= 90241 PDF4LHC15_nlo_100_pdfas - PDF= 90242 PDF4LHC15_nlo_100_pdfas - PDF= 90243 PDF4LHC15_nlo_100_pdfas - PDF= 90244 PDF4LHC15_nlo_100_pdfas - PDF= 90245 PDF4LHC15_nlo_100_pdfas - PDF= 90246 PDF4LHC15_nlo_100_pdfas - PDF= 90247 PDF4LHC15_nlo_100_pdfas - PDF= 90248 PDF4LHC15_nlo_100_pdfas - PDF= 90249 PDF4LHC15_nlo_100_pdfas - PDF= 90250 PDF4LHC15_nlo_100_pdfas - PDF= 90251 PDF4LHC15_nlo_100_pdfas - PDF= 90252 PDF4LHC15_nlo_100_pdfas - PDF= 90253 PDF4LHC15_nlo_100_pdfas - PDF= 90254 PDF4LHC15_nlo_100_pdfas - PDF= 90255 PDF4LHC15_nlo_100_pdfas - PDF= 90256 PDF4LHC15_nlo_100_pdfas - PDF= 90257 PDF4LHC15_nlo_100_pdfas - PDF= 90258 PDF4LHC15_nlo_100_pdfas - PDF= 90259 PDF4LHC15_nlo_100_pdfas - PDF= 90260 PDF4LHC15_nlo_100_pdfas - PDF= 90261 PDF4LHC15_nlo_100_pdfas - PDF= 90262 PDF4LHC15_nlo_100_pdfas - PDF= 90263 PDF4LHC15_nlo_100_pdfas - PDF= 90264 PDF4LHC15_nlo_100_pdfas - PDF= 90265 PDF4LHC15_nlo_100_pdfas - PDF= 90266 PDF4LHC15_nlo_100_pdfas - PDF= 90267 PDF4LHC15_nlo_100_pdfas - PDF= 90268 PDF4LHC15_nlo_100_pdfas - PDF= 90269 PDF4LHC15_nlo_100_pdfas - PDF= 90270 PDF4LHC15_nlo_100_pdfas - PDF= 90271 PDF4LHC15_nlo_100_pdfas - PDF= 90272 PDF4LHC15_nlo_100_pdfas - PDF= 90273 PDF4LHC15_nlo_100_pdfas - PDF= 90274 PDF4LHC15_nlo_100_pdfas - PDF= 90275 PDF4LHC15_nlo_100_pdfas - PDF= 90276 PDF4LHC15_nlo_100_pdfas - PDF= 90277 PDF4LHC15_nlo_100_pdfas - PDF= 90278 PDF4LHC15_nlo_100_pdfas - PDF= 90279 PDF4LHC15_nlo_100_pdfas - PDF= 90280 PDF4LHC15_nlo_100_pdfas - PDF= 90281 PDF4LHC15_nlo_100_pdfas - PDF= 90282 PDF4LHC15_nlo_100_pdfas - PDF= 90283 PDF4LHC15_nlo_100_pdfas - PDF= 90284 PDF4LHC15_nlo_100_pdfas - PDF= 90285 PDF4LHC15_nlo_100_pdfas - PDF= 90286 PDF4LHC15_nlo_100_pdfas - PDF= 90287 PDF4LHC15_nlo_100_pdfas - PDF= 90288 PDF4LHC15_nlo_100_pdfas - PDF= 90289 PDF4LHC15_nlo_100_pdfas - PDF= 90290 PDF4LHC15_nlo_100_pdfas - PDF= 90291 PDF4LHC15_nlo_100_pdfas - PDF= 90292 PDF4LHC15_nlo_100_pdfas - PDF= 90293 PDF4LHC15_nlo_100_pdfas - PDF= 90294 PDF4LHC15_nlo_100_pdfas - PDF= 90295 PDF4LHC15_nlo_100_pdfas - PDF= 90296 PDF4LHC15_nlo_100_pdfas - PDF= 90297 PDF4LHC15_nlo_100_pdfas - PDF= 90298 PDF4LHC15_nlo_100_pdfas - PDF= 90299 PDF4LHC15_nlo_100_pdfas - PDF= 90300 PDF4LHC15_nlo_100_pdfas - PDF= 90301 PDF4LHC15_nlo_100_pdfas - PDF= 90302 PDF4LHC15_nlo_100_pdfas - - - PDF= 91200 PDF4LHC15_nnlo_100_pdfas - PDF= 91201 PDF4LHC15_nnlo_100_pdfas - PDF= 91202 PDF4LHC15_nnlo_100_pdfas - PDF= 91203 PDF4LHC15_nnlo_100_pdfas - PDF= 91204 PDF4LHC15_nnlo_100_pdfas - PDF= 91205 PDF4LHC15_nnlo_100_pdfas - PDF= 91206 PDF4LHC15_nnlo_100_pdfas - PDF= 91207 PDF4LHC15_nnlo_100_pdfas - PDF= 91208 PDF4LHC15_nnlo_100_pdfas - PDF= 91209 PDF4LHC15_nnlo_100_pdfas - PDF= 91210 PDF4LHC15_nnlo_100_pdfas - PDF= 91211 PDF4LHC15_nnlo_100_pdfas - PDF= 91212 PDF4LHC15_nnlo_100_pdfas - PDF= 91213 PDF4LHC15_nnlo_100_pdfas - PDF= 91214 PDF4LHC15_nnlo_100_pdfas - PDF= 91215 PDF4LHC15_nnlo_100_pdfas - PDF= 91216 PDF4LHC15_nnlo_100_pdfas - PDF= 91217 PDF4LHC15_nnlo_100_pdfas - PDF= 91218 PDF4LHC15_nnlo_100_pdfas - PDF= 91219 PDF4LHC15_nnlo_100_pdfas - PDF= 91220 PDF4LHC15_nnlo_100_pdfas - PDF= 91221 PDF4LHC15_nnlo_100_pdfas - PDF= 91222 PDF4LHC15_nnlo_100_pdfas - PDF= 91223 PDF4LHC15_nnlo_100_pdfas - PDF= 91224 PDF4LHC15_nnlo_100_pdfas - PDF= 91225 PDF4LHC15_nnlo_100_pdfas - PDF= 91226 PDF4LHC15_nnlo_100_pdfas - PDF= 91227 PDF4LHC15_nnlo_100_pdfas - PDF= 91228 PDF4LHC15_nnlo_100_pdfas - PDF= 91229 PDF4LHC15_nnlo_100_pdfas - PDF= 91230 PDF4LHC15_nnlo_100_pdfas - PDF= 91231 PDF4LHC15_nnlo_100_pdfas - PDF= 91232 PDF4LHC15_nnlo_100_pdfas - PDF= 91233 PDF4LHC15_nnlo_100_pdfas - PDF= 91234 PDF4LHC15_nnlo_100_pdfas - PDF= 91235 PDF4LHC15_nnlo_100_pdfas - PDF= 91236 PDF4LHC15_nnlo_100_pdfas - PDF= 91237 PDF4LHC15_nnlo_100_pdfas - PDF= 91238 PDF4LHC15_nnlo_100_pdfas - PDF= 91239 PDF4LHC15_nnlo_100_pdfas - PDF= 91240 PDF4LHC15_nnlo_100_pdfas - PDF= 91241 PDF4LHC15_nnlo_100_pdfas - PDF= 91242 PDF4LHC15_nnlo_100_pdfas - PDF= 91243 PDF4LHC15_nnlo_100_pdfas - PDF= 91244 PDF4LHC15_nnlo_100_pdfas - PDF= 91245 PDF4LHC15_nnlo_100_pdfas - PDF= 91246 PDF4LHC15_nnlo_100_pdfas - PDF= 91247 PDF4LHC15_nnlo_100_pdfas - PDF= 91248 PDF4LHC15_nnlo_100_pdfas - PDF= 91249 PDF4LHC15_nnlo_100_pdfas - PDF= 91250 PDF4LHC15_nnlo_100_pdfas - PDF= 91251 PDF4LHC15_nnlo_100_pdfas - PDF= 91252 PDF4LHC15_nnlo_100_pdfas - PDF= 91253 PDF4LHC15_nnlo_100_pdfas - PDF= 91254 PDF4LHC15_nnlo_100_pdfas - PDF= 91255 PDF4LHC15_nnlo_100_pdfas - PDF= 91256 PDF4LHC15_nnlo_100_pdfas - PDF= 91257 PDF4LHC15_nnlo_100_pdfas - PDF= 91258 PDF4LHC15_nnlo_100_pdfas - PDF= 91259 PDF4LHC15_nnlo_100_pdfas - PDF= 91260 PDF4LHC15_nnlo_100_pdfas - PDF= 91261 PDF4LHC15_nnlo_100_pdfas - PDF= 91262 PDF4LHC15_nnlo_100_pdfas - PDF= 91263 PDF4LHC15_nnlo_100_pdfas - PDF= 91264 PDF4LHC15_nnlo_100_pdfas - PDF= 91265 PDF4LHC15_nnlo_100_pdfas - PDF= 91266 PDF4LHC15_nnlo_100_pdfas - PDF= 91267 PDF4LHC15_nnlo_100_pdfas - PDF= 91268 PDF4LHC15_nnlo_100_pdfas - PDF= 91269 PDF4LHC15_nnlo_100_pdfas - PDF= 91270 PDF4LHC15_nnlo_100_pdfas - PDF= 91271 PDF4LHC15_nnlo_100_pdfas - PDF= 91272 PDF4LHC15_nnlo_100_pdfas - PDF= 91273 PDF4LHC15_nnlo_100_pdfas - PDF= 91274 PDF4LHC15_nnlo_100_pdfas - PDF= 91275 PDF4LHC15_nnlo_100_pdfas - PDF= 91276 PDF4LHC15_nnlo_100_pdfas - PDF= 91277 PDF4LHC15_nnlo_100_pdfas - PDF= 91278 PDF4LHC15_nnlo_100_pdfas - PDF= 91279 PDF4LHC15_nnlo_100_pdfas - PDF= 91280 PDF4LHC15_nnlo_100_pdfas - PDF= 91281 PDF4LHC15_nnlo_100_pdfas - PDF= 91282 PDF4LHC15_nnlo_100_pdfas - PDF= 91283 PDF4LHC15_nnlo_100_pdfas - PDF= 91284 PDF4LHC15_nnlo_100_pdfas - PDF= 91285 PDF4LHC15_nnlo_100_pdfas - PDF= 91286 PDF4LHC15_nnlo_100_pdfas - PDF= 91287 PDF4LHC15_nnlo_100_pdfas - PDF= 91288 PDF4LHC15_nnlo_100_pdfas - PDF= 91289 PDF4LHC15_nnlo_100_pdfas - PDF= 91290 PDF4LHC15_nnlo_100_pdfas - PDF= 91291 PDF4LHC15_nnlo_100_pdfas - PDF= 91292 PDF4LHC15_nnlo_100_pdfas - PDF= 91293 PDF4LHC15_nnlo_100_pdfas - PDF= 91294 PDF4LHC15_nnlo_100_pdfas - PDF= 91295 PDF4LHC15_nnlo_100_pdfas - PDF= 91296 PDF4LHC15_nnlo_100_pdfas - PDF= 91297 PDF4LHC15_nnlo_100_pdfas - PDF= 91298 PDF4LHC15_nnlo_100_pdfas - PDF= 91299 PDF4LHC15_nnlo_100_pdfas - PDF= 91300 PDF4LHC15_nnlo_100_pdfas - PDF= 91301 PDF4LHC15_nnlo_100_pdfas - PDF= 91302 PDF4LHC15_nnlo_100_pdfas - - - PDF= 90400 PDF4LHC15_nlo_30_pdfas - PDF= 90401 PDF4LHC15_nlo_30_pdfas - PDF= 90402 PDF4LHC15_nlo_30_pdfas - PDF= 90403 PDF4LHC15_nlo_30_pdfas - PDF= 90404 PDF4LHC15_nlo_30_pdfas - PDF= 90405 PDF4LHC15_nlo_30_pdfas - PDF= 90406 PDF4LHC15_nlo_30_pdfas - PDF= 90407 PDF4LHC15_nlo_30_pdfas - PDF= 90408 PDF4LHC15_nlo_30_pdfas - PDF= 90409 PDF4LHC15_nlo_30_pdfas - PDF= 90410 PDF4LHC15_nlo_30_pdfas - PDF= 90411 PDF4LHC15_nlo_30_pdfas - PDF= 90412 PDF4LHC15_nlo_30_pdfas - PDF= 90413 PDF4LHC15_nlo_30_pdfas - PDF= 90414 PDF4LHC15_nlo_30_pdfas - PDF= 90415 PDF4LHC15_nlo_30_pdfas - PDF= 90416 PDF4LHC15_nlo_30_pdfas - PDF= 90417 PDF4LHC15_nlo_30_pdfas - PDF= 90418 PDF4LHC15_nlo_30_pdfas - PDF= 90419 PDF4LHC15_nlo_30_pdfas - PDF= 90420 PDF4LHC15_nlo_30_pdfas - PDF= 90421 PDF4LHC15_nlo_30_pdfas - PDF= 90422 PDF4LHC15_nlo_30_pdfas - PDF= 90423 PDF4LHC15_nlo_30_pdfas - PDF= 90424 PDF4LHC15_nlo_30_pdfas - PDF= 90425 PDF4LHC15_nlo_30_pdfas - PDF= 90426 PDF4LHC15_nlo_30_pdfas - PDF= 90427 PDF4LHC15_nlo_30_pdfas - PDF= 90428 PDF4LHC15_nlo_30_pdfas - PDF= 90429 PDF4LHC15_nlo_30_pdfas - PDF= 90430 PDF4LHC15_nlo_30_pdfas - PDF= 90431 PDF4LHC15_nlo_30_pdfas - PDF= 90432 PDF4LHC15_nlo_30_pdfas - - - PDF= 91400 PDF4LHC15_nnlo_30_pdfas - PDF= 91401 PDF4LHC15_nnlo_30_pdfas - PDF= 91402 PDF4LHC15_nnlo_30_pdfas - PDF= 91403 PDF4LHC15_nnlo_30_pdfas - PDF= 91404 PDF4LHC15_nnlo_30_pdfas - PDF= 91405 PDF4LHC15_nnlo_30_pdfas - PDF= 91406 PDF4LHC15_nnlo_30_pdfas - PDF= 91407 PDF4LHC15_nnlo_30_pdfas - PDF= 91408 PDF4LHC15_nnlo_30_pdfas - PDF= 91409 PDF4LHC15_nnlo_30_pdfas - PDF= 91410 PDF4LHC15_nnlo_30_pdfas - PDF= 91411 PDF4LHC15_nnlo_30_pdfas - PDF= 91412 PDF4LHC15_nnlo_30_pdfas - PDF= 91413 PDF4LHC15_nnlo_30_pdfas - PDF= 91414 PDF4LHC15_nnlo_30_pdfas - PDF= 91415 PDF4LHC15_nnlo_30_pdfas - PDF= 91416 PDF4LHC15_nnlo_30_pdfas - PDF= 91417 PDF4LHC15_nnlo_30_pdfas - PDF= 91418 PDF4LHC15_nnlo_30_pdfas - PDF= 91419 PDF4LHC15_nnlo_30_pdfas - PDF= 91420 PDF4LHC15_nnlo_30_pdfas - PDF= 91421 PDF4LHC15_nnlo_30_pdfas - PDF= 91422 PDF4LHC15_nnlo_30_pdfas - PDF= 91423 PDF4LHC15_nnlo_30_pdfas - PDF= 91424 PDF4LHC15_nnlo_30_pdfas - PDF= 91425 PDF4LHC15_nnlo_30_pdfas - PDF= 91426 PDF4LHC15_nnlo_30_pdfas - PDF= 91427 PDF4LHC15_nnlo_30_pdfas - PDF= 91428 PDF4LHC15_nnlo_30_pdfas - PDF= 91429 PDF4LHC15_nnlo_30_pdfas - PDF= 91430 PDF4LHC15_nnlo_30_pdfas - PDF= 91431 PDF4LHC15_nnlo_30_pdfas - PDF= 91432 PDF4LHC15_nnlo_30_pdfas - - - PDF= 61100 HERAPDF20_NLO_EIG - PDF= 61101 HERAPDF20_NLO_EIG - PDF= 61102 HERAPDF20_NLO_EIG - PDF= 61103 HERAPDF20_NLO_EIG - PDF= 61104 HERAPDF20_NLO_EIG - PDF= 61105 HERAPDF20_NLO_EIG - PDF= 61106 HERAPDF20_NLO_EIG - PDF= 61107 HERAPDF20_NLO_EIG - PDF= 61108 HERAPDF20_NLO_EIG - PDF= 61109 HERAPDF20_NLO_EIG - PDF= 61110 HERAPDF20_NLO_EIG - PDF= 61111 HERAPDF20_NLO_EIG - PDF= 61112 HERAPDF20_NLO_EIG - PDF= 61113 HERAPDF20_NLO_EIG - PDF= 61114 HERAPDF20_NLO_EIG - PDF= 61115 HERAPDF20_NLO_EIG - PDF= 61116 HERAPDF20_NLO_EIG - PDF= 61117 HERAPDF20_NLO_EIG - PDF= 61118 HERAPDF20_NLO_EIG - PDF= 61119 HERAPDF20_NLO_EIG - PDF= 61120 HERAPDF20_NLO_EIG - PDF= 61121 HERAPDF20_NLO_EIG - PDF= 61122 HERAPDF20_NLO_EIG - PDF= 61123 HERAPDF20_NLO_EIG - PDF= 61124 HERAPDF20_NLO_EIG - PDF= 61125 HERAPDF20_NLO_EIG - PDF= 61126 HERAPDF20_NLO_EIG - PDF= 61127 HERAPDF20_NLO_EIG - PDF= 61128 HERAPDF20_NLO_EIG - - - PDF= 61130 HERAPDF20_NLO_VAR - PDF= 61131 HERAPDF20_NLO_VAR - PDF= 61132 HERAPDF20_NLO_VAR - PDF= 61133 HERAPDF20_NLO_VAR - PDF= 61134 HERAPDF20_NLO_VAR - PDF= 61135 HERAPDF20_NLO_VAR - PDF= 61136 HERAPDF20_NLO_VAR - PDF= 61137 HERAPDF20_NLO_VAR - PDF= 61138 HERAPDF20_NLO_VAR - PDF= 61139 HERAPDF20_NLO_VAR - PDF= 61140 HERAPDF20_NLO_VAR - PDF= 61141 HERAPDF20_NLO_VAR - PDF= 61142 HERAPDF20_NLO_VAR - PDF= 61143 HERAPDF20_NLO_VAR - - - PDF= 61200 HERAPDF20_NNLO_EIG - PDF= 61201 HERAPDF20_NNLO_EIG - PDF= 61202 HERAPDF20_NNLO_EIG - PDF= 61203 HERAPDF20_NNLO_EIG - PDF= 61204 HERAPDF20_NNLO_EIG - PDF= 61205 HERAPDF20_NNLO_EIG - PDF= 61206 HERAPDF20_NNLO_EIG - PDF= 61207 HERAPDF20_NNLO_EIG - PDF= 61208 HERAPDF20_NNLO_EIG - PDF= 61209 HERAPDF20_NNLO_EIG - PDF= 61210 HERAPDF20_NNLO_EIG - PDF= 61211 HERAPDF20_NNLO_EIG - PDF= 61212 HERAPDF20_NNLO_EIG - PDF= 61213 HERAPDF20_NNLO_EIG - PDF= 61214 HERAPDF20_NNLO_EIG - PDF= 61215 HERAPDF20_NNLO_EIG - PDF= 61216 HERAPDF20_NNLO_EIG - PDF= 61217 HERAPDF20_NNLO_EIG - PDF= 61218 HERAPDF20_NNLO_EIG - PDF= 61219 HERAPDF20_NNLO_EIG - PDF= 61220 HERAPDF20_NNLO_EIG - PDF= 61221 HERAPDF20_NNLO_EIG - PDF= 61222 HERAPDF20_NNLO_EIG - PDF= 61223 HERAPDF20_NNLO_EIG - PDF= 61224 HERAPDF20_NNLO_EIG - PDF= 61225 HERAPDF20_NNLO_EIG - PDF= 61226 HERAPDF20_NNLO_EIG - PDF= 61227 HERAPDF20_NNLO_EIG - PDF= 61228 HERAPDF20_NNLO_EIG - - - PDF= 61230 HERAPDF20_NNLO_VAR - PDF= 61231 HERAPDF20_NNLO_VAR - PDF= 61232 HERAPDF20_NNLO_VAR - PDF= 61233 HERAPDF20_NNLO_VAR - PDF= 61234 HERAPDF20_NNLO_VAR - PDF= 61235 HERAPDF20_NNLO_VAR - PDF= 61236 HERAPDF20_NNLO_VAR - PDF= 61237 HERAPDF20_NNLO_VAR - PDF= 61238 HERAPDF20_NNLO_VAR - PDF= 61239 HERAPDF20_NNLO_VAR - PDF= 61240 HERAPDF20_NNLO_VAR - PDF= 61241 HERAPDF20_NNLO_VAR - PDF= 61242 HERAPDF20_NNLO_VAR - PDF= 61243 HERAPDF20_NNLO_VAR - - - PDF= 13400 CT14qed_inc_proton - PDF= 13401 CT14qed_inc_proton - PDF= 13402 CT14qed_inc_proton - PDF= 13403 CT14qed_inc_proton - PDF= 13404 CT14qed_inc_proton - PDF= 13405 CT14qed_inc_proton - PDF= 13406 CT14qed_inc_proton - PDF= 13407 CT14qed_inc_proton - PDF= 13408 CT14qed_inc_proton - PDF= 13409 CT14qed_inc_proton - PDF= 13410 CT14qed_inc_proton - PDF= 13411 CT14qed_inc_proton - PDF= 13412 CT14qed_inc_proton - PDF= 13413 CT14qed_inc_proton - PDF= 13414 CT14qed_inc_proton - PDF= 13415 CT14qed_inc_proton - PDF= 13416 CT14qed_inc_proton - PDF= 13417 CT14qed_inc_proton - PDF= 13418 CT14qed_inc_proton - PDF= 13419 CT14qed_inc_proton - PDF= 13420 CT14qed_inc_proton - PDF= 13421 CT14qed_inc_proton - PDF= 13422 CT14qed_inc_proton - PDF= 13423 CT14qed_inc_proton - PDF= 13424 CT14qed_inc_proton - PDF= 13425 CT14qed_inc_proton - PDF= 13426 CT14qed_inc_proton - PDF= 13427 CT14qed_inc_proton - PDF= 13428 CT14qed_inc_proton - PDF= 13429 CT14qed_inc_proton - PDF= 13430 CT14qed_inc_proton - - - PDF= 82200 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82201 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82202 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82203 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82204 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82205 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82206 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82207 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82208 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82209 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82210 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82211 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82212 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82213 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82214 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82215 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82216 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82217 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82218 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82219 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82220 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82221 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82222 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82223 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82224 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82225 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82226 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82227 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82228 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82229 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82230 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82231 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82232 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82233 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82234 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82235 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82236 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82237 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82238 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82239 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82240 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82241 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82242 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82243 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82244 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82245 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82246 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82247 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82248 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82249 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82250 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82251 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82252 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82253 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82254 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82255 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82256 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82257 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82258 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82259 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82260 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82261 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82262 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82263 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82264 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82265 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82266 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82267 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82268 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82269 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82270 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82271 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82272 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82273 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82274 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82275 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82276 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82277 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82278 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82279 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82280 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82281 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82282 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82283 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82284 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82285 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82286 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82287 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82288 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82289 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82290 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82291 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82292 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82293 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82294 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82295 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82296 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82297 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82298 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82299 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82300 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82301 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82302 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82303 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82304 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82305 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82306 LUXqed17_plus_PDF4LHC15_nnlo_100 - PDF= 82307 LUXqed17_plus_PDF4LHC15_nnlo_100 - - - PDF= 292200 NNPDF30_nlo_nf_5_pdfas - PDF= 292201 NNPDF30_nlo_nf_5_pdfas - PDF= 292202 NNPDF30_nlo_nf_5_pdfas - PDF= 292203 NNPDF30_nlo_nf_5_pdfas - PDF= 292204 NNPDF30_nlo_nf_5_pdfas - PDF= 292205 NNPDF30_nlo_nf_5_pdfas - PDF= 292206 NNPDF30_nlo_nf_5_pdfas - PDF= 292207 NNPDF30_nlo_nf_5_pdfas - PDF= 292208 NNPDF30_nlo_nf_5_pdfas - PDF= 292209 NNPDF30_nlo_nf_5_pdfas - PDF= 292210 NNPDF30_nlo_nf_5_pdfas - PDF= 292211 NNPDF30_nlo_nf_5_pdfas - PDF= 292212 NNPDF30_nlo_nf_5_pdfas - PDF= 292213 NNPDF30_nlo_nf_5_pdfas - PDF= 292214 NNPDF30_nlo_nf_5_pdfas - PDF= 292215 NNPDF30_nlo_nf_5_pdfas - PDF= 292216 NNPDF30_nlo_nf_5_pdfas - PDF= 292217 NNPDF30_nlo_nf_5_pdfas - PDF= 292218 NNPDF30_nlo_nf_5_pdfas - PDF= 292219 NNPDF30_nlo_nf_5_pdfas - PDF= 292220 NNPDF30_nlo_nf_5_pdfas - PDF= 292221 NNPDF30_nlo_nf_5_pdfas - PDF= 292222 NNPDF30_nlo_nf_5_pdfas - PDF= 292223 NNPDF30_nlo_nf_5_pdfas - PDF= 292224 NNPDF30_nlo_nf_5_pdfas - PDF= 292225 NNPDF30_nlo_nf_5_pdfas - PDF= 292226 NNPDF30_nlo_nf_5_pdfas - PDF= 292227 NNPDF30_nlo_nf_5_pdfas - PDF= 292228 NNPDF30_nlo_nf_5_pdfas - PDF= 292229 NNPDF30_nlo_nf_5_pdfas - PDF= 292230 NNPDF30_nlo_nf_5_pdfas - PDF= 292231 NNPDF30_nlo_nf_5_pdfas - PDF= 292232 NNPDF30_nlo_nf_5_pdfas - PDF= 292233 NNPDF30_nlo_nf_5_pdfas - PDF= 292234 NNPDF30_nlo_nf_5_pdfas - PDF= 292235 NNPDF30_nlo_nf_5_pdfas - PDF= 292236 NNPDF30_nlo_nf_5_pdfas - PDF= 292237 NNPDF30_nlo_nf_5_pdfas - PDF= 292238 NNPDF30_nlo_nf_5_pdfas - PDF= 292239 NNPDF30_nlo_nf_5_pdfas - PDF= 292240 NNPDF30_nlo_nf_5_pdfas - PDF= 292241 NNPDF30_nlo_nf_5_pdfas - PDF= 292242 NNPDF30_nlo_nf_5_pdfas - PDF= 292243 NNPDF30_nlo_nf_5_pdfas - PDF= 292244 NNPDF30_nlo_nf_5_pdfas - PDF= 292245 NNPDF30_nlo_nf_5_pdfas - PDF= 292246 NNPDF30_nlo_nf_5_pdfas - PDF= 292247 NNPDF30_nlo_nf_5_pdfas - PDF= 292248 NNPDF30_nlo_nf_5_pdfas - PDF= 292249 NNPDF30_nlo_nf_5_pdfas - PDF= 292250 NNPDF30_nlo_nf_5_pdfas - PDF= 292251 NNPDF30_nlo_nf_5_pdfas - PDF= 292252 NNPDF30_nlo_nf_5_pdfas - PDF= 292253 NNPDF30_nlo_nf_5_pdfas - PDF= 292254 NNPDF30_nlo_nf_5_pdfas - PDF= 292255 NNPDF30_nlo_nf_5_pdfas - PDF= 292256 NNPDF30_nlo_nf_5_pdfas - PDF= 292257 NNPDF30_nlo_nf_5_pdfas - PDF= 292258 NNPDF30_nlo_nf_5_pdfas - PDF= 292259 NNPDF30_nlo_nf_5_pdfas - PDF= 292260 NNPDF30_nlo_nf_5_pdfas - PDF= 292261 NNPDF30_nlo_nf_5_pdfas - PDF= 292262 NNPDF30_nlo_nf_5_pdfas - PDF= 292263 NNPDF30_nlo_nf_5_pdfas - PDF= 292264 NNPDF30_nlo_nf_5_pdfas - PDF= 292265 NNPDF30_nlo_nf_5_pdfas - PDF= 292266 NNPDF30_nlo_nf_5_pdfas - PDF= 292267 NNPDF30_nlo_nf_5_pdfas - PDF= 292268 NNPDF30_nlo_nf_5_pdfas - PDF= 292269 NNPDF30_nlo_nf_5_pdfas - PDF= 292270 NNPDF30_nlo_nf_5_pdfas - PDF= 292271 NNPDF30_nlo_nf_5_pdfas - PDF= 292272 NNPDF30_nlo_nf_5_pdfas - PDF= 292273 NNPDF30_nlo_nf_5_pdfas - PDF= 292274 NNPDF30_nlo_nf_5_pdfas - PDF= 292275 NNPDF30_nlo_nf_5_pdfas - PDF= 292276 NNPDF30_nlo_nf_5_pdfas - PDF= 292277 NNPDF30_nlo_nf_5_pdfas - PDF= 292278 NNPDF30_nlo_nf_5_pdfas - PDF= 292279 NNPDF30_nlo_nf_5_pdfas - PDF= 292280 NNPDF30_nlo_nf_5_pdfas - PDF= 292281 NNPDF30_nlo_nf_5_pdfas - PDF= 292282 NNPDF30_nlo_nf_5_pdfas - PDF= 292283 NNPDF30_nlo_nf_5_pdfas - PDF= 292284 NNPDF30_nlo_nf_5_pdfas - PDF= 292285 NNPDF30_nlo_nf_5_pdfas - PDF= 292286 NNPDF30_nlo_nf_5_pdfas - PDF= 292287 NNPDF30_nlo_nf_5_pdfas - PDF= 292288 NNPDF30_nlo_nf_5_pdfas - PDF= 292289 NNPDF30_nlo_nf_5_pdfas - PDF= 292290 NNPDF30_nlo_nf_5_pdfas - PDF= 292291 NNPDF30_nlo_nf_5_pdfas - PDF= 292292 NNPDF30_nlo_nf_5_pdfas - PDF= 292293 NNPDF30_nlo_nf_5_pdfas - PDF= 292294 NNPDF30_nlo_nf_5_pdfas - PDF= 292295 NNPDF30_nlo_nf_5_pdfas - PDF= 292296 NNPDF30_nlo_nf_5_pdfas - PDF= 292297 NNPDF30_nlo_nf_5_pdfas - PDF= 292298 NNPDF30_nlo_nf_5_pdfas - PDF= 292299 NNPDF30_nlo_nf_5_pdfas - PDF= 292300 NNPDF30_nlo_nf_5_pdfas - PDF= 292301 NNPDF30_nlo_nf_5_pdfas - PDF= 292302 NNPDF30_nlo_nf_5_pdfas - - - PDF= 292600 NNPDF30_nnlo_nf_5_pdfas - - - PDF= 315000 NNPDF31_lo_as_0118 - - - PDF= 315200 NNPDF31_lo_as_0130 - - - PDF= 262000 NNPDF30_lo_as_0118 - - - PDF= 263000 NNPDF30_lo_as_0130 - - diff --git a/testFiles/VVV_2017_weight_info.txt b/testFiles/VVV_2017_weight_info.txt deleted file mode 100644 index 2e242bafc6b5c..0000000000000 --- a/testFiles/VVV_2017_weight_info.txt +++ /dev/null @@ -1,1358 +0,0 @@ - - - MUR=0.5 MUF=0.5 - MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt - MUR=0.5 MUF=0.5 dyn_scale_choice=HT - MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 - MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts - MUR=0.5 - MUR=0.5 dyn_scale_choice=sum pt - MUR=0.5 dyn_scale_choice=HT - MUR=0.5 dyn_scale_choice=HT/2 - MUR=0.5 dyn_scale_choice=sqrts - MUR=0.5 MUF=2.0 - MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt - MUR=0.5 MUF=2.0 dyn_scale_choice=HT - MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 - MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts - MUF=0.5 - MUF=0.5 dyn_scale_choice=sum pt - MUF=0.5 dyn_scale_choice=HT - MUF=0.5 dyn_scale_choice=HT/2 - MUF=0.5 dyn_scale_choice=sqrts - dyn_scale_choice=sum pt - dyn_scale_choice=HT - dyn_scale_choice=HT/2 - dyn_scale_choice=sqrts - MUF=2.0 - MUF=2.0 dyn_scale_choice=sum pt - MUF=2.0 dyn_scale_choice=HT - MUF=2.0 dyn_scale_choice=HT/2 - MUF=2.0 dyn_scale_choice=sqrts - MUR=2.0 MUF=0.5 - MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt - MUR=2.0 MUF=0.5 dyn_scale_choice=HT - MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 - MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts - MUR=2.0 - MUR=2.0 dyn_scale_choice=sum pt - MUR=2.0 dyn_scale_choice=HT - MUR=2.0 dyn_scale_choice=HT/2 - MUR=2.0 dyn_scale_choice=sqrts - MUR=2.0 MUF=2.0 - MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt - MUR=2.0 MUF=2.0 dyn_scale_choice=HT - MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 - MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts - # scale - # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian - - PDF=325500 MemberID=1 - PDF=325500 MemberID=2 - PDF=325500 MemberID=3 - PDF=325500 MemberID=4 - PDF=325500 MemberID=5 - PDF=325500 MemberID=6 - PDF=325500 MemberID=7 - PDF=325500 MemberID=8 - PDF=325500 MemberID=9 - PDF=325500 MemberID=10 - PDF=325500 MemberID=11 - PDF=325500 MemberID=12 - PDF=325500 MemberID=13 - PDF=325500 MemberID=14 - PDF=325500 MemberID=15 - PDF=325500 MemberID=16 - PDF=325500 MemberID=17 - PDF=325500 MemberID=18 - PDF=325500 MemberID=19 - PDF=325500 MemberID=20 - PDF=325500 MemberID=21 - PDF=325500 MemberID=22 - PDF=325500 MemberID=23 - PDF=325500 MemberID=24 - PDF=325500 MemberID=25 - PDF=325500 MemberID=26 - PDF=325500 MemberID=27 - PDF=325500 MemberID=28 - PDF=325500 MemberID=29 - PDF=325500 MemberID=30 - PDF=325500 MemberID=31 - PDF=325500 MemberID=32 - PDF=325500 MemberID=33 - PDF=325500 MemberID=34 - PDF=325500 MemberID=35 - PDF=325500 MemberID=36 - PDF=325500 MemberID=37 - PDF=325500 MemberID=38 - PDF=325500 MemberID=39 - PDF=325500 MemberID=40 - PDF=325500 MemberID=41 - PDF=325500 MemberID=42 - PDF=325500 MemberID=43 - PDF=325500 MemberID=44 - PDF=325500 MemberID=45 - PDF=325500 MemberID=46 - PDF=325500 MemberID=47 - PDF=325500 MemberID=48 - PDF=325500 MemberID=49 - PDF=325500 MemberID=50 - PDF=325500 MemberID=51 - PDF=325500 MemberID=52 - PDF=325500 MemberID=53 - PDF=325500 MemberID=54 - PDF=325500 MemberID=55 - PDF=325500 MemberID=56 - PDF=325500 MemberID=57 - PDF=325500 MemberID=58 - PDF=325500 MemberID=59 - PDF=325500 MemberID=60 - PDF=325500 MemberID=61 - PDF=325500 MemberID=62 - PDF=325500 MemberID=63 - PDF=325500 MemberID=64 - PDF=325500 MemberID=65 - PDF=325500 MemberID=66 - PDF=325500 MemberID=67 - PDF=325500 MemberID=68 - PDF=325500 MemberID=69 - PDF=325500 MemberID=70 - PDF=325500 MemberID=71 - PDF=325500 MemberID=72 - PDF=325500 MemberID=73 - PDF=325500 MemberID=74 - PDF=325500 MemberID=75 - PDF=325500 MemberID=76 - PDF=325500 MemberID=77 - PDF=325500 MemberID=78 - PDF=325500 MemberID=79 - PDF=325500 MemberID=80 - PDF=325500 MemberID=81 - PDF=325500 MemberID=82 - PDF=325500 MemberID=83 - PDF=325500 MemberID=84 - PDF=325500 MemberID=85 - PDF=325500 MemberID=86 - PDF=325500 MemberID=87 - PDF=325500 MemberID=88 - PDF=325500 MemberID=89 - PDF=325500 MemberID=90 - PDF=325500 MemberID=91 - PDF=325500 MemberID=92 - PDF=325500 MemberID=93 - PDF=325500 MemberID=94 - PDF=325500 MemberID=95 - PDF=325500 MemberID=96 - PDF=325500 MemberID=97 - PDF=325500 MemberID=98 - PDF=325500 MemberID=99 - PDF=325500 MemberID=100 - - - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 0.0 # orig: 1.6e-11 -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 -3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 -1.6e-11 # orig: 1.6e-11 -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 -8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 8e-12 # orig: 1.6e-11 -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -3.2e-11 # orig: 0.0 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 -8e-12 # orig: 0.0 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 8e-12 # orig: 0.0 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 1.6e-11 # orig: 0.0 - -set param_card anoinputs 1 3.2e-11 # orig: 1.6e-11 -set param_card anoinputs 2 3.2e-11 # orig: 0.0 - - - # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian - - - PDF - dyn_scale_choice=sum pt - dyn_scale_choice=HT - dyn_scale_choice=HT/2 - dyn_scale_choice=sqrts - MUR=2.0 - MUR=2.0 dyn_scale_choice=sum pt - MUR=2.0 dyn_scale_choice=HT - MUR=2.0 dyn_scale_choice=HT/2 - MUR=2.0 dyn_scale_choice=sqrts - MUR=0.5 - MUR=0.5 dyn_scale_choice=sum pt - MUR=0.5 dyn_scale_choice=HT - MUR=0.5 dyn_scale_choice=HT/2 - MUR=0.5 dyn_scale_choice=sqrts - MUF=2.0 - MUF=2.0 dyn_scale_choice=sum pt - MUF=2.0 dyn_scale_choice=HT - MUF=2.0 dyn_scale_choice=HT/2 - MUF=2.0 dyn_scale_choice=sqrts - MUR=2.0 MUF=2.0 - MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt - MUR=2.0 MUF=2.0 dyn_scale_choice=HT - MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 - MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts - MUR=0.5 MUF=2.0 - MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt - MUR=0.5 MUF=2.0 dyn_scale_choice=HT - MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 - MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts - MUF=0.5 - MUF=0.5 dyn_scale_choice=sum pt - MUF=0.5 dyn_scale_choice=HT - MUF=0.5 dyn_scale_choice=HT/2 - MUF=0.5 dyn_scale_choice=sqrts - MUR=2.0 MUF=0.5 - MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt - MUR=2.0 MUF=0.5 dyn_scale_choice=HT - MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 - MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts - MUR=0.5 MUF=0.5 - MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt - MUR=0.5 MUF=0.5 dyn_scale_choice=HT - MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 - MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts - # scale - - alpsfact=0.5 - alpsfact=2.0 - # ALPS - # 325500: Hessian NNPDF31_nnlo_as_0118_nf_4_mc_hessian - - PDF=325500 MemberID=1 - PDF=325500 MemberID=2 - PDF=325500 MemberID=3 - PDF=325500 MemberID=4 - PDF=325500 MemberID=5 - PDF=325500 MemberID=6 - PDF=325500 MemberID=7 - PDF=325500 MemberID=8 - PDF=325500 MemberID=9 - PDF=325500 MemberID=10 - PDF=325500 MemberID=11 - PDF=325500 MemberID=12 - PDF=325500 MemberID=13 - PDF=325500 MemberID=14 - PDF=325500 MemberID=15 - PDF=325500 MemberID=16 - PDF=325500 MemberID=17 - PDF=325500 MemberID=18 - PDF=325500 MemberID=19 - PDF=325500 MemberID=20 - PDF=325500 MemberID=21 - PDF=325500 MemberID=22 - PDF=325500 MemberID=23 - PDF=325500 MemberID=24 - PDF=325500 MemberID=25 - PDF=325500 MemberID=26 - PDF=325500 MemberID=27 - PDF=325500 MemberID=28 - PDF=325500 MemberID=29 - PDF=325500 MemberID=30 - PDF=325500 MemberID=31 - PDF=325500 MemberID=32 - PDF=325500 MemberID=33 - PDF=325500 MemberID=34 - PDF=325500 MemberID=35 - PDF=325500 MemberID=36 - PDF=325500 MemberID=37 - PDF=325500 MemberID=38 - PDF=325500 MemberID=39 - PDF=325500 MemberID=40 - PDF=325500 MemberID=41 - PDF=325500 MemberID=42 - PDF=325500 MemberID=43 - PDF=325500 MemberID=44 - PDF=325500 MemberID=45 - PDF=325500 MemberID=46 - PDF=325500 MemberID=47 - PDF=325500 MemberID=48 - PDF=325500 MemberID=49 - PDF=325500 MemberID=50 - PDF=325500 MemberID=51 - PDF=325500 MemberID=52 - PDF=325500 MemberID=53 - PDF=325500 MemberID=54 - PDF=325500 MemberID=55 - PDF=325500 MemberID=56 - PDF=325500 MemberID=57 - PDF=325500 MemberID=58 - PDF=325500 MemberID=59 - PDF=325500 MemberID=60 - PDF=325500 MemberID=61 - PDF=325500 MemberID=62 - PDF=325500 MemberID=63 - PDF=325500 MemberID=64 - PDF=325500 MemberID=65 - PDF=325500 MemberID=66 - PDF=325500 MemberID=67 - PDF=325500 MemberID=68 - PDF=325500 MemberID=69 - PDF=325500 MemberID=70 - PDF=325500 MemberID=71 - PDF=325500 MemberID=72 - PDF=325500 MemberID=73 - PDF=325500 MemberID=74 - PDF=325500 MemberID=75 - PDF=325500 MemberID=76 - PDF=325500 MemberID=77 - PDF=325500 MemberID=78 - PDF=325500 MemberID=79 - PDF=325500 MemberID=80 - PDF=325500 MemberID=81 - PDF=325500 MemberID=82 - PDF=325500 MemberID=83 - PDF=325500 MemberID=84 - PDF=325500 MemberID=85 - PDF=325500 MemberID=86 - PDF=325500 MemberID=87 - PDF=325500 MemberID=88 - PDF=325500 MemberID=89 - PDF=325500 MemberID=90 - PDF=325500 MemberID=91 - PDF=325500 MemberID=92 - PDF=325500 MemberID=93 - PDF=325500 MemberID=94 - PDF=325500 MemberID=95 - PDF=325500 MemberID=96 - PDF=325500 MemberID=97 - PDF=325500 MemberID=98 - PDF=325500 MemberID=99 - PDF=325500 MemberID=100 - # PDFSET -> PDFSET - # 320900: NNPDF3.1 NNLO global fit, nf=4. mem=0 ; average on replicas; mem=1-100 ; PDF replicas - PDF=320900 MemberID=0 - PDF=320900 MemberID=1 - PDF=320900 MemberID=2 - PDF=320900 MemberID=3 - PDF=320900 MemberID=4 - PDF=320900 MemberID=5 - PDF=320900 MemberID=6 - PDF=320900 MemberID=7 - PDF=320900 MemberID=8 - PDF=320900 MemberID=9 - PDF=320900 MemberID=10 - PDF=320900 MemberID=11 - PDF=320900 MemberID=12 - PDF=320900 MemberID=13 - PDF=320900 MemberID=14 - PDF=320900 MemberID=15 - PDF=320900 MemberID=16 - PDF=320900 MemberID=17 - PDF=320900 MemberID=18 - PDF=320900 MemberID=19 - PDF=320900 MemberID=20 - PDF=320900 MemberID=21 - PDF=320900 MemberID=22 - PDF=320900 MemberID=23 - PDF=320900 MemberID=24 - PDF=320900 MemberID=25 - PDF=320900 MemberID=26 - PDF=320900 MemberID=27 - PDF=320900 MemberID=28 - PDF=320900 MemberID=29 - PDF=320900 MemberID=30 - PDF=320900 MemberID=31 - PDF=320900 MemberID=32 - PDF=320900 MemberID=33 - PDF=320900 MemberID=34 - PDF=320900 MemberID=35 - PDF=320900 MemberID=36 - PDF=320900 MemberID=37 - PDF=320900 MemberID=38 - PDF=320900 MemberID=39 - PDF=320900 MemberID=40 - PDF=320900 MemberID=41 - PDF=320900 MemberID=42 - PDF=320900 MemberID=43 - PDF=320900 MemberID=44 - PDF=320900 MemberID=45 - PDF=320900 MemberID=46 - PDF=320900 MemberID=47 - PDF=320900 MemberID=48 - PDF=320900 MemberID=49 - PDF=320900 MemberID=50 - PDF=320900 MemberID=51 - PDF=320900 MemberID=52 - PDF=320900 MemberID=53 - PDF=320900 MemberID=54 - PDF=320900 MemberID=55 - PDF=320900 MemberID=56 - PDF=320900 MemberID=57 - PDF=320900 MemberID=58 - PDF=320900 MemberID=59 - PDF=320900 MemberID=60 - PDF=320900 MemberID=61 - PDF=320900 MemberID=62 - PDF=320900 MemberID=63 - PDF=320900 MemberID=64 - PDF=320900 MemberID=65 - PDF=320900 MemberID=66 - PDF=320900 MemberID=67 - PDF=320900 MemberID=68 - PDF=320900 MemberID=69 - PDF=320900 MemberID=70 - PDF=320900 MemberID=71 - PDF=320900 MemberID=72 - PDF=320900 MemberID=73 - PDF=320900 MemberID=74 - PDF=320900 MemberID=75 - PDF=320900 MemberID=76 - PDF=320900 MemberID=77 - PDF=320900 MemberID=78 - PDF=320900 MemberID=79 - PDF=320900 MemberID=80 - PDF=320900 MemberID=81 - PDF=320900 MemberID=82 - PDF=320900 MemberID=83 - PDF=320900 MemberID=84 - PDF=320900 MemberID=85 - PDF=320900 MemberID=86 - PDF=320900 MemberID=87 - PDF=320900 MemberID=88 - PDF=320900 MemberID=89 - PDF=320900 MemberID=90 - PDF=320900 MemberID=91 - PDF=320900 MemberID=92 - PDF=320900 MemberID=93 - PDF=320900 MemberID=94 - PDF=320900 MemberID=95 - PDF=320900 MemberID=96 - PDF=320900 MemberID=97 - PDF=320900 MemberID=98 - PDF=320900 MemberID=99 - PDF=320900 MemberID=100 - # PDFSET -> PDFSET - # 11082: CT10 NLO PDF fixed 4-flavour fits using the standard CTEQ PDF evolution but using the HOPPET alphas_s running solution. NEW CT12 grid type. Excluding the D0 Run-II W asymmetry data. mem=0 ; mem=0 ; NF4 high scale Q=m_Z=91.190 GeV; mem=1 ; NF4 low scale Q=m_tau=1.778 GeV - PDF=11082 MemberID=0 - PDF=11082 MemberID=1 - # PDFSET -> PDF - PDF=13091 MemberID=0 - PDF=13191 MemberID=0 - PDF=13202 MemberID=0 - # 23100: MSTW 2008 LO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org - PDF=23100 MemberID=0 - PDF=23100 MemberID=1 - PDF=23100 MemberID=2 - PDF=23100 MemberID=3 - PDF=23100 MemberID=4 - PDF=23100 MemberID=5 - PDF=23100 MemberID=6 - PDF=23100 MemberID=7 - PDF=23100 MemberID=8 - PDF=23100 MemberID=9 - PDF=23100 MemberID=10 - PDF=23100 MemberID=11 - PDF=23100 MemberID=12 - PDF=23100 MemberID=13 - PDF=23100 MemberID=14 - PDF=23100 MemberID=15 - PDF=23100 MemberID=16 - PDF=23100 MemberID=17 - PDF=23100 MemberID=18 - PDF=23100 MemberID=19 - PDF=23100 MemberID=20 - PDF=23100 MemberID=21 - PDF=23100 MemberID=22 - PDF=23100 MemberID=23 - PDF=23100 MemberID=24 - PDF=23100 MemberID=25 - PDF=23100 MemberID=26 - PDF=23100 MemberID=27 - PDF=23100 MemberID=28 - PDF=23100 MemberID=29 - PDF=23100 MemberID=30 - PDF=23100 MemberID=31 - PDF=23100 MemberID=32 - PDF=23100 MemberID=33 - PDF=23100 MemberID=34 - PDF=23100 MemberID=35 - PDF=23100 MemberID=36 - PDF=23100 MemberID=37 - PDF=23100 MemberID=38 - PDF=23100 MemberID=39 - PDF=23100 MemberID=40 - # PDFSET -> PDFSET - # 23300: MSTW 2008 NLO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org - PDF=23300 MemberID=0 - PDF=23300 MemberID=1 - PDF=23300 MemberID=2 - PDF=23300 MemberID=3 - PDF=23300 MemberID=4 - PDF=23300 MemberID=5 - PDF=23300 MemberID=6 - PDF=23300 MemberID=7 - PDF=23300 MemberID=8 - PDF=23300 MemberID=9 - PDF=23300 MemberID=10 - PDF=23300 MemberID=11 - PDF=23300 MemberID=12 - PDF=23300 MemberID=13 - PDF=23300 MemberID=14 - PDF=23300 MemberID=15 - PDF=23300 MemberID=16 - PDF=23300 MemberID=17 - PDF=23300 MemberID=18 - PDF=23300 MemberID=19 - PDF=23300 MemberID=20 - PDF=23300 MemberID=21 - PDF=23300 MemberID=22 - PDF=23300 MemberID=23 - PDF=23300 MemberID=24 - PDF=23300 MemberID=25 - PDF=23300 MemberID=26 - PDF=23300 MemberID=27 - PDF=23300 MemberID=28 - PDF=23300 MemberID=29 - PDF=23300 MemberID=30 - PDF=23300 MemberID=31 - PDF=23300 MemberID=32 - PDF=23300 MemberID=33 - PDF=23300 MemberID=34 - PDF=23300 MemberID=35 - PDF=23300 MemberID=36 - PDF=23300 MemberID=37 - PDF=23300 MemberID=38 - PDF=23300 MemberID=39 - PDF=23300 MemberID=40 - # PDFSET -> PDFSET - # 23490: MSTW 2008 NLO (fits for range of m_b values, evolve with 4 flavours maximum). This set has 7 member PDFs. mem=0 ; default m_b = 4.75 GeV; mem=1-6 ; m_b = 4.00, 4.25, 4.50, 5.00, 5.25, 5.50 GeV. http://mstwpdf.hepforge.org - PDF=23490 MemberID=0 - PDF=23490 MemberID=1 - PDF=23490 MemberID=2 - PDF=23490 MemberID=3 - PDF=23490 MemberID=4 - PDF=23490 MemberID=5 - PDF=23490 MemberID=6 - # PDFSET -> PDFSET - # 23600: MSTW 2008 NNLO (68% C.L.) evolved with 4 flavours maximum. This set has 41 member PDFs. mem=0 ; central value; mem=1-40 ; 20 eigenvectors (+/- directions). http://mstwpdf.hepforge.org - PDF=23600 MemberID=0 - PDF=23600 MemberID=1 - PDF=23600 MemberID=2 - PDF=23600 MemberID=3 - PDF=23600 MemberID=4 - PDF=23600 MemberID=5 - PDF=23600 MemberID=6 - PDF=23600 MemberID=7 - PDF=23600 MemberID=8 - PDF=23600 MemberID=9 - PDF=23600 MemberID=10 - PDF=23600 MemberID=11 - PDF=23600 MemberID=12 - PDF=23600 MemberID=13 - PDF=23600 MemberID=14 - PDF=23600 MemberID=15 - PDF=23600 MemberID=16 - PDF=23600 MemberID=17 - PDF=23600 MemberID=18 - PDF=23600 MemberID=19 - PDF=23600 MemberID=20 - PDF=23600 MemberID=21 - PDF=23600 MemberID=22 - PDF=23600 MemberID=23 - PDF=23600 MemberID=24 - PDF=23600 MemberID=25 - PDF=23600 MemberID=26 - PDF=23600 MemberID=27 - PDF=23600 MemberID=28 - PDF=23600 MemberID=29 - PDF=23600 MemberID=30 - PDF=23600 MemberID=31 - PDF=23600 MemberID=32 - PDF=23600 MemberID=33 - PDF=23600 MemberID=34 - PDF=23600 MemberID=35 - PDF=23600 MemberID=36 - PDF=23600 MemberID=37 - PDF=23600 MemberID=38 - PDF=23600 MemberID=39 - PDF=23600 MemberID=40 - # PDFSET -> PDFSET - # 23790: MSTW 2008 NNLO (fits for range of m_b values, evolve with 4 flavours maximum). This set has 7 member PDFs. mem=0 ; default m_b = 4.75 GeV; mem=1-6 ; m_b = 4.00, 4.25, 4.50, 5.00, 5.25, 5.50 GeV. http://mstwpdf.hepforge.org - PDF=23790 MemberID=0 - PDF=23790 MemberID=1 - PDF=23790 MemberID=2 - PDF=23790 MemberID=3 - PDF=23790 MemberID=4 - PDF=23790 MemberID=5 - PDF=23790 MemberID=6 - # PDFSET -> PDFSET - # 25410: MMHT 2014 NLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht - PDF=25410 MemberID=0 - PDF=25410 MemberID=1 - PDF=25410 MemberID=2 - PDF=25410 MemberID=3 - PDF=25410 MemberID=4 - PDF=25410 MemberID=5 - PDF=25410 MemberID=6 - PDF=25410 MemberID=7 - PDF=25410 MemberID=8 - PDF=25410 MemberID=9 - PDF=25410 MemberID=10 - PDF=25410 MemberID=11 - PDF=25410 MemberID=12 - PDF=25410 MemberID=13 - PDF=25410 MemberID=14 - PDF=25410 MemberID=15 - PDF=25410 MemberID=16 - PDF=25410 MemberID=17 - PDF=25410 MemberID=18 - PDF=25410 MemberID=19 - PDF=25410 MemberID=20 - PDF=25410 MemberID=21 - PDF=25410 MemberID=22 - PDF=25410 MemberID=23 - PDF=25410 MemberID=24 - PDF=25410 MemberID=25 - PDF=25410 MemberID=26 - PDF=25410 MemberID=27 - PDF=25410 MemberID=28 - PDF=25410 MemberID=29 - PDF=25410 MemberID=30 - PDF=25410 MemberID=31 - PDF=25410 MemberID=32 - PDF=25410 MemberID=33 - PDF=25410 MemberID=34 - PDF=25410 MemberID=35 - PDF=25410 MemberID=36 - PDF=25410 MemberID=37 - PDF=25410 MemberID=38 - PDF=25410 MemberID=39 - PDF=25410 MemberID=40 - PDF=25410 MemberID=41 - PDF=25410 MemberID=42 - PDF=25410 MemberID=43 - PDF=25410 MemberID=44 - PDF=25410 MemberID=45 - PDF=25410 MemberID=46 - PDF=25410 MemberID=47 - PDF=25410 MemberID=48 - PDF=25410 MemberID=49 - PDF=25410 MemberID=50 - # PDFSET -> PDFSET - # 25510: MMHT 2014 NLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht - PDF=25510 MemberID=0 - PDF=25510 MemberID=1 - PDF=25510 MemberID=2 - PDF=25510 MemberID=3 - PDF=25510 MemberID=4 - PDF=25510 MemberID=5 - PDF=25510 MemberID=6 - PDF=25510 MemberID=7 - PDF=25510 MemberID=8 - PDF=25510 MemberID=9 - PDF=25510 MemberID=10 - PDF=25510 MemberID=11 - PDF=25510 MemberID=12 - PDF=25510 MemberID=13 - PDF=25510 MemberID=14 - PDF=25510 MemberID=15 - PDF=25510 MemberID=16 - PDF=25510 MemberID=17 - PDF=25510 MemberID=18 - PDF=25510 MemberID=19 - PDF=25510 MemberID=20 - PDF=25510 MemberID=21 - PDF=25510 MemberID=22 - PDF=25510 MemberID=23 - PDF=25510 MemberID=24 - PDF=25510 MemberID=25 - PDF=25510 MemberID=26 - PDF=25510 MemberID=27 - PDF=25510 MemberID=28 - PDF=25510 MemberID=29 - PDF=25510 MemberID=30 - PDF=25510 MemberID=31 - PDF=25510 MemberID=32 - PDF=25510 MemberID=33 - PDF=25510 MemberID=34 - PDF=25510 MemberID=35 - PDF=25510 MemberID=36 - PDF=25510 MemberID=37 - PDF=25510 MemberID=38 - PDF=25510 MemberID=39 - PDF=25510 MemberID=40 - PDF=25510 MemberID=41 - PDF=25510 MemberID=42 - PDF=25510 MemberID=43 - PDF=25510 MemberID=44 - PDF=25510 MemberID=45 - PDF=25510 MemberID=46 - PDF=25510 MemberID=47 - PDF=25510 MemberID=48 - PDF=25510 MemberID=49 - PDF=25510 MemberID=50 - # PDFSET -> PDFSET - # 25570: MMHT 2014 NLO (fits for range of alpha_S values, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. best-fit alpha_S(M_Z) = 0.120; mem=1-4 --.gt. alpha_S(M_Z) = 0.117,...,0.121. Website: www.hep.ucl.ac.uk/mmht - PDF=25570 MemberID=0 - PDF=25570 MemberID=1 - PDF=25570 MemberID=2 - PDF=25570 MemberID=3 - PDF=25570 MemberID=4 - # PDFSET -> PDFSET - # 25605: MMHT 2014 NLO (range of mc, evolve with 4 flavours maximum). This set has 9 member PDFs. mem=0 --.gt. default mc = 1.40 GeV; mem=1-8 --.gt. mc = 1.15 - 1.55 GeV in steps of 0.05 GeV. Website: www.hep.ucl.ac.uk/mmht - PDF=25605 MemberID=0 - PDF=25605 MemberID=1 - PDF=25605 MemberID=2 - PDF=25605 MemberID=3 - PDF=25605 MemberID=4 - PDF=25605 MemberID=5 - PDF=25605 MemberID=6 - PDF=25605 MemberID=7 - PDF=25605 MemberID=8 - # PDFSET -> PDFSET - # 25620: MMHT 2014 NLO (range of mb, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. default mb = 4.75 GeV; mem=1-4 --.gt. mb = 4.25 - 5.25 GeV in steps of 0.25 GeV. Website: www.hep.ucl.ac.uk/mmht - PDF=25620 MemberID=0 - PDF=25620 MemberID=1 - PDF=25620 MemberID=2 - PDF=25620 MemberID=3 - PDF=25620 MemberID=4 - # PDFSET -> PDFSET - # 25710: MMHT 2014 NNLO (68% C.L.): evolve with 4 flavours maximum. This set has 51 member PDFs. mem=0 --.gt. central value; mem=1-50 --.gt. 20 eigenvector sets (+/- directions). Website: www.hep.ucl.ac.uk/mmht - PDF=25710 MemberID=0 - PDF=25710 MemberID=1 - PDF=25710 MemberID=2 - PDF=25710 MemberID=3 - PDF=25710 MemberID=4 - PDF=25710 MemberID=5 - PDF=25710 MemberID=6 - PDF=25710 MemberID=7 - PDF=25710 MemberID=8 - PDF=25710 MemberID=9 - PDF=25710 MemberID=10 - PDF=25710 MemberID=11 - PDF=25710 MemberID=12 - PDF=25710 MemberID=13 - PDF=25710 MemberID=14 - PDF=25710 MemberID=15 - PDF=25710 MemberID=16 - PDF=25710 MemberID=17 - PDF=25710 MemberID=18 - PDF=25710 MemberID=19 - PDF=25710 MemberID=20 - PDF=25710 MemberID=21 - PDF=25710 MemberID=22 - PDF=25710 MemberID=23 - PDF=25710 MemberID=24 - PDF=25710 MemberID=25 - PDF=25710 MemberID=26 - PDF=25710 MemberID=27 - PDF=25710 MemberID=28 - PDF=25710 MemberID=29 - PDF=25710 MemberID=30 - PDF=25710 MemberID=31 - PDF=25710 MemberID=32 - PDF=25710 MemberID=33 - PDF=25710 MemberID=34 - PDF=25710 MemberID=35 - PDF=25710 MemberID=36 - PDF=25710 MemberID=37 - PDF=25710 MemberID=38 - PDF=25710 MemberID=39 - PDF=25710 MemberID=40 - PDF=25710 MemberID=41 - PDF=25710 MemberID=42 - PDF=25710 MemberID=43 - PDF=25710 MemberID=44 - PDF=25710 MemberID=45 - PDF=25710 MemberID=46 - PDF=25710 MemberID=47 - PDF=25710 MemberID=48 - PDF=25710 MemberID=49 - PDF=25710 MemberID=50 - # PDFSET -> PDFSET - # 25770: MMHT 2014 NNLO (fits for range of alpha_S values, evolve with 4 flavours maximum). This set has 3 member PDFs. mem=0 --.gt. best-fit alpha_S(M_Z) = 0.118; mem=1-2 --.gt. alpha_S(M_Z) = 0.117, 0.119. Website: www.hep.ucl.ac.uk/mmht - PDF=25770 MemberID=0 - PDF=25770 MemberID=1 - PDF=25770 MemberID=2 - # PDFSET -> PDFSET - # 25805: MMHT 2014 NNLO (range of mc, evolve with 4 flavours maximum). This set has 9 member PDFs. mem=0 --.gt. default mc = 1.40 GeV; mem=1-8 --.gt. mc = 1.15 - 1.55 GeV in steps of 0.05 GeV. Website: www.hep.ucl.ac.uk/mmht - PDF=25805 MemberID=0 - PDF=25805 MemberID=1 - PDF=25805 MemberID=2 - PDF=25805 MemberID=3 - PDF=25805 MemberID=4 - PDF=25805 MemberID=5 - PDF=25805 MemberID=6 - PDF=25805 MemberID=7 - PDF=25805 MemberID=8 - # PDFSET -> PDFSET - # 25840: MMHT 2014 NNLO (range of mb, evolve with 4 flavours maximum). This set has 5 member PDFs. mem=0 --.gt. default mb = 4.75 GeV; mem=1-4 --.gt. mb = 4.25 - 5.25 GeV in steps of 0.25 GeV. Website: www.hep.ucl.ac.uk/mmht - PDF=25840 MemberID=0 - PDF=25840 MemberID=1 - PDF=25840 MemberID=2 - PDF=25840 MemberID=3 - PDF=25840 MemberID=4 - # PDFSET -> PDFSET - # 92000: PDF4LHC15_nlo_nf4_30, alphas(MZ)=0.1126, mem=0 ; central value; mem=1-30 ; PDF symmetric eigenvectors - PDF=92000 MemberID=0 - PDF=92000 MemberID=1 - PDF=92000 MemberID=2 - PDF=92000 MemberID=3 - PDF=92000 MemberID=4 - PDF=92000 MemberID=5 - PDF=92000 MemberID=6 - PDF=92000 MemberID=7 - PDF=92000 MemberID=8 - PDF=92000 MemberID=9 - PDF=92000 MemberID=10 - PDF=92000 MemberID=11 - PDF=92000 MemberID=12 - PDF=92000 MemberID=13 - PDF=92000 MemberID=14 - PDF=92000 MemberID=15 - PDF=92000 MemberID=16 - PDF=92000 MemberID=17 - PDF=92000 MemberID=18 - PDF=92000 MemberID=19 - PDF=92000 MemberID=20 - PDF=92000 MemberID=21 - PDF=92000 MemberID=22 - PDF=92000 MemberID=23 - PDF=92000 MemberID=24 - PDF=92000 MemberID=25 - PDF=92000 MemberID=26 - PDF=92000 MemberID=27 - PDF=92000 MemberID=28 - PDF=92000 MemberID=29 - PDF=92000 MemberID=30 - # PDFSET -> PDFSET - # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - PDF=306000 MemberID=0 - PDF=306000 MemberID=1 - PDF=306000 MemberID=2 - PDF=306000 MemberID=3 - PDF=306000 MemberID=4 - PDF=306000 MemberID=5 - PDF=306000 MemberID=6 - PDF=306000 MemberID=7 - PDF=306000 MemberID=8 - PDF=306000 MemberID=9 - PDF=306000 MemberID=10 - PDF=306000 MemberID=11 - PDF=306000 MemberID=12 - PDF=306000 MemberID=13 - PDF=306000 MemberID=14 - PDF=306000 MemberID=15 - PDF=306000 MemberID=16 - PDF=306000 MemberID=17 - PDF=306000 MemberID=18 - PDF=306000 MemberID=19 - PDF=306000 MemberID=20 - PDF=306000 MemberID=21 - PDF=306000 MemberID=22 - PDF=306000 MemberID=23 - PDF=306000 MemberID=24 - PDF=306000 MemberID=25 - PDF=306000 MemberID=26 - PDF=306000 MemberID=27 - PDF=306000 MemberID=28 - PDF=306000 MemberID=29 - PDF=306000 MemberID=30 - PDF=306000 MemberID=31 - PDF=306000 MemberID=32 - PDF=306000 MemberID=33 - PDF=306000 MemberID=34 - PDF=306000 MemberID=35 - PDF=306000 MemberID=36 - PDF=306000 MemberID=37 - PDF=306000 MemberID=38 - PDF=306000 MemberID=39 - PDF=306000 MemberID=40 - PDF=306000 MemberID=41 - PDF=306000 MemberID=42 - PDF=306000 MemberID=43 - PDF=306000 MemberID=44 - PDF=306000 MemberID=45 - PDF=306000 MemberID=46 - PDF=306000 MemberID=47 - PDF=306000 MemberID=48 - PDF=306000 MemberID=49 - PDF=306000 MemberID=50 - PDF=306000 MemberID=51 - PDF=306000 MemberID=52 - PDF=306000 MemberID=53 - PDF=306000 MemberID=54 - PDF=306000 MemberID=55 - PDF=306000 MemberID=56 - PDF=306000 MemberID=57 - PDF=306000 MemberID=58 - PDF=306000 MemberID=59 - PDF=306000 MemberID=60 - PDF=306000 MemberID=61 - PDF=306000 MemberID=62 - PDF=306000 MemberID=63 - PDF=306000 MemberID=64 - PDF=306000 MemberID=65 - PDF=306000 MemberID=66 - PDF=306000 MemberID=67 - PDF=306000 MemberID=68 - PDF=306000 MemberID=69 - PDF=306000 MemberID=70 - PDF=306000 MemberID=71 - PDF=306000 MemberID=72 - PDF=306000 MemberID=73 - PDF=306000 MemberID=74 - PDF=306000 MemberID=75 - PDF=306000 MemberID=76 - PDF=306000 MemberID=77 - PDF=306000 MemberID=78 - PDF=306000 MemberID=79 - PDF=306000 MemberID=80 - PDF=306000 MemberID=81 - PDF=306000 MemberID=82 - PDF=306000 MemberID=83 - PDF=306000 MemberID=84 - PDF=306000 MemberID=85 - PDF=306000 MemberID=86 - PDF=306000 MemberID=87 - PDF=306000 MemberID=88 - PDF=306000 MemberID=89 - PDF=306000 MemberID=90 - PDF=306000 MemberID=91 - PDF=306000 MemberID=92 - PDF=306000 MemberID=93 - PDF=306000 MemberID=94 - PDF=306000 MemberID=95 - PDF=306000 MemberID=96 - PDF=306000 MemberID=97 - PDF=306000 MemberID=98 - PDF=306000 MemberID=99 - PDF=306000 MemberID=100 - PDF=306000 MemberID=101 - PDF=306000 MemberID=102 - # PDFSET -> PDFSET - # 320500: NNPDF3.1 NLO global fit, nf=4. mem=0 ; average on replicas; mem=1-100 ; PDF replicas - PDF=320500 MemberID=0 - PDF=320500 MemberID=1 - PDF=320500 MemberID=2 - PDF=320500 MemberID=3 - PDF=320500 MemberID=4 - PDF=320500 MemberID=5 - PDF=320500 MemberID=6 - PDF=320500 MemberID=7 - PDF=320500 MemberID=8 - PDF=320500 MemberID=9 - PDF=320500 MemberID=10 - PDF=320500 MemberID=11 - PDF=320500 MemberID=12 - PDF=320500 MemberID=13 - PDF=320500 MemberID=14 - PDF=320500 MemberID=15 - PDF=320500 MemberID=16 - PDF=320500 MemberID=17 - PDF=320500 MemberID=18 - PDF=320500 MemberID=19 - PDF=320500 MemberID=20 - PDF=320500 MemberID=21 - PDF=320500 MemberID=22 - PDF=320500 MemberID=23 - PDF=320500 MemberID=24 - PDF=320500 MemberID=25 - PDF=320500 MemberID=26 - PDF=320500 MemberID=27 - PDF=320500 MemberID=28 - PDF=320500 MemberID=29 - PDF=320500 MemberID=30 - PDF=320500 MemberID=31 - PDF=320500 MemberID=32 - PDF=320500 MemberID=33 - PDF=320500 MemberID=34 - PDF=320500 MemberID=35 - PDF=320500 MemberID=36 - PDF=320500 MemberID=37 - PDF=320500 MemberID=38 - PDF=320500 MemberID=39 - PDF=320500 MemberID=40 - PDF=320500 MemberID=41 - PDF=320500 MemberID=42 - PDF=320500 MemberID=43 - PDF=320500 MemberID=44 - PDF=320500 MemberID=45 - PDF=320500 MemberID=46 - PDF=320500 MemberID=47 - PDF=320500 MemberID=48 - PDF=320500 MemberID=49 - PDF=320500 MemberID=50 - PDF=320500 MemberID=51 - PDF=320500 MemberID=52 - PDF=320500 MemberID=53 - PDF=320500 MemberID=54 - PDF=320500 MemberID=55 - PDF=320500 MemberID=56 - PDF=320500 MemberID=57 - PDF=320500 MemberID=58 - PDF=320500 MemberID=59 - PDF=320500 MemberID=60 - PDF=320500 MemberID=61 - PDF=320500 MemberID=62 - PDF=320500 MemberID=63 - PDF=320500 MemberID=64 - PDF=320500 MemberID=65 - PDF=320500 MemberID=66 - PDF=320500 MemberID=67 - PDF=320500 MemberID=68 - PDF=320500 MemberID=69 - PDF=320500 MemberID=70 - PDF=320500 MemberID=71 - PDF=320500 MemberID=72 - PDF=320500 MemberID=73 - PDF=320500 MemberID=74 - PDF=320500 MemberID=75 - PDF=320500 MemberID=76 - PDF=320500 MemberID=77 - PDF=320500 MemberID=78 - PDF=320500 MemberID=79 - PDF=320500 MemberID=80 - PDF=320500 MemberID=81 - PDF=320500 MemberID=82 - PDF=320500 MemberID=83 - PDF=320500 MemberID=84 - PDF=320500 MemberID=85 - PDF=320500 MemberID=86 - PDF=320500 MemberID=87 - PDF=320500 MemberID=88 - PDF=320500 MemberID=89 - PDF=320500 MemberID=90 - PDF=320500 MemberID=91 - PDF=320500 MemberID=92 - PDF=320500 MemberID=93 - PDF=320500 MemberID=94 - PDF=320500 MemberID=95 - PDF=320500 MemberID=96 - PDF=320500 MemberID=97 - PDF=320500 MemberID=98 - PDF=320500 MemberID=99 - PDF=320500 MemberID=100 - # PDFSET -> PDFSET - # 260400: NNPDF3.0 NLO global fit, alphas(mb)=0.22278. mem=0 ; average on replicas; mem=1-100 ; PDF replicas - PDF=260400 MemberID=0 - PDF=260400 MemberID=1 - PDF=260400 MemberID=2 - PDF=260400 MemberID=3 - PDF=260400 MemberID=4 - PDF=260400 MemberID=5 - PDF=260400 MemberID=6 - PDF=260400 MemberID=7 - PDF=260400 MemberID=8 - PDF=260400 MemberID=9 - PDF=260400 MemberID=10 - PDF=260400 MemberID=11 - PDF=260400 MemberID=12 - PDF=260400 MemberID=13 - PDF=260400 MemberID=14 - PDF=260400 MemberID=15 - PDF=260400 MemberID=16 - PDF=260400 MemberID=17 - PDF=260400 MemberID=18 - PDF=260400 MemberID=19 - PDF=260400 MemberID=20 - PDF=260400 MemberID=21 - PDF=260400 MemberID=22 - PDF=260400 MemberID=23 - PDF=260400 MemberID=24 - PDF=260400 MemberID=25 - PDF=260400 MemberID=26 - PDF=260400 MemberID=27 - PDF=260400 MemberID=28 - PDF=260400 MemberID=29 - PDF=260400 MemberID=30 - PDF=260400 MemberID=31 - PDF=260400 MemberID=32 - PDF=260400 MemberID=33 - PDF=260400 MemberID=34 - PDF=260400 MemberID=35 - PDF=260400 MemberID=36 - PDF=260400 MemberID=37 - PDF=260400 MemberID=38 - PDF=260400 MemberID=39 - PDF=260400 MemberID=40 - PDF=260400 MemberID=41 - PDF=260400 MemberID=42 - PDF=260400 MemberID=43 - PDF=260400 MemberID=44 - PDF=260400 MemberID=45 - PDF=260400 MemberID=46 - PDF=260400 MemberID=47 - PDF=260400 MemberID=48 - PDF=260400 MemberID=49 - PDF=260400 MemberID=50 - PDF=260400 MemberID=51 - PDF=260400 MemberID=52 - PDF=260400 MemberID=53 - PDF=260400 MemberID=54 - PDF=260400 MemberID=55 - PDF=260400 MemberID=56 - PDF=260400 MemberID=57 - PDF=260400 MemberID=58 - PDF=260400 MemberID=59 - PDF=260400 MemberID=60 - PDF=260400 MemberID=61 - PDF=260400 MemberID=62 - PDF=260400 MemberID=63 - PDF=260400 MemberID=64 - PDF=260400 MemberID=65 - PDF=260400 MemberID=66 - PDF=260400 MemberID=67 - PDF=260400 MemberID=68 - PDF=260400 MemberID=69 - PDF=260400 MemberID=70 - PDF=260400 MemberID=71 - PDF=260400 MemberID=72 - PDF=260400 MemberID=73 - PDF=260400 MemberID=74 - PDF=260400 MemberID=75 - PDF=260400 MemberID=76 - PDF=260400 MemberID=77 - PDF=260400 MemberID=78 - PDF=260400 MemberID=79 - PDF=260400 MemberID=80 - PDF=260400 MemberID=81 - PDF=260400 MemberID=82 - PDF=260400 MemberID=83 - PDF=260400 MemberID=84 - PDF=260400 MemberID=85 - PDF=260400 MemberID=86 - PDF=260400 MemberID=87 - PDF=260400 MemberID=88 - PDF=260400 MemberID=89 - PDF=260400 MemberID=90 - PDF=260400 MemberID=91 - PDF=260400 MemberID=92 - PDF=260400 MemberID=93 - PDF=260400 MemberID=94 - PDF=260400 MemberID=95 - PDF=260400 MemberID=96 - PDF=260400 MemberID=97 - PDF=260400 MemberID=98 - PDF=260400 MemberID=99 - PDF=260400 MemberID=100 - # PDFSET -> PDF - PDF=262400 MemberID=0 - PDF=263400 MemberID=0 - # 292000: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119; maximum number of active flavors NF=4 - PDF=292000 MemberID=0 - PDF=292000 MemberID=1 - PDF=292000 MemberID=2 - PDF=292000 MemberID=3 - PDF=292000 MemberID=4 - PDF=292000 MemberID=5 - PDF=292000 MemberID=6 - PDF=292000 MemberID=7 - PDF=292000 MemberID=8 - PDF=292000 MemberID=9 - PDF=292000 MemberID=10 - PDF=292000 MemberID=11 - PDF=292000 MemberID=12 - PDF=292000 MemberID=13 - PDF=292000 MemberID=14 - PDF=292000 MemberID=15 - PDF=292000 MemberID=16 - PDF=292000 MemberID=17 - PDF=292000 MemberID=18 - PDF=292000 MemberID=19 - PDF=292000 MemberID=20 - PDF=292000 MemberID=21 - PDF=292000 MemberID=22 - PDF=292000 MemberID=23 - PDF=292000 MemberID=24 - PDF=292000 MemberID=25 - PDF=292000 MemberID=26 - PDF=292000 MemberID=27 - PDF=292000 MemberID=28 - PDF=292000 MemberID=29 - PDF=292000 MemberID=30 - PDF=292000 MemberID=31 - PDF=292000 MemberID=32 - PDF=292000 MemberID=33 - PDF=292000 MemberID=34 - PDF=292000 MemberID=35 - PDF=292000 MemberID=36 - PDF=292000 MemberID=37 - PDF=292000 MemberID=38 - PDF=292000 MemberID=39 - PDF=292000 MemberID=40 - PDF=292000 MemberID=41 - PDF=292000 MemberID=42 - PDF=292000 MemberID=43 - PDF=292000 MemberID=44 - PDF=292000 MemberID=45 - PDF=292000 MemberID=46 - PDF=292000 MemberID=47 - PDF=292000 MemberID=48 - PDF=292000 MemberID=49 - PDF=292000 MemberID=50 - PDF=292000 MemberID=51 - PDF=292000 MemberID=52 - PDF=292000 MemberID=53 - PDF=292000 MemberID=54 - PDF=292000 MemberID=55 - PDF=292000 MemberID=56 - PDF=292000 MemberID=57 - PDF=292000 MemberID=58 - PDF=292000 MemberID=59 - PDF=292000 MemberID=60 - PDF=292000 MemberID=61 - PDF=292000 MemberID=62 - PDF=292000 MemberID=63 - PDF=292000 MemberID=64 - PDF=292000 MemberID=65 - PDF=292000 MemberID=66 - PDF=292000 MemberID=67 - PDF=292000 MemberID=68 - PDF=292000 MemberID=69 - PDF=292000 MemberID=70 - PDF=292000 MemberID=71 - PDF=292000 MemberID=72 - PDF=292000 MemberID=73 - PDF=292000 MemberID=74 - PDF=292000 MemberID=75 - PDF=292000 MemberID=76 - PDF=292000 MemberID=77 - PDF=292000 MemberID=78 - PDF=292000 MemberID=79 - PDF=292000 MemberID=80 - PDF=292000 MemberID=81 - PDF=292000 MemberID=82 - PDF=292000 MemberID=83 - PDF=292000 MemberID=84 - PDF=292000 MemberID=85 - PDF=292000 MemberID=86 - PDF=292000 MemberID=87 - PDF=292000 MemberID=88 - PDF=292000 MemberID=89 - PDF=292000 MemberID=90 - PDF=292000 MemberID=91 - PDF=292000 MemberID=92 - PDF=292000 MemberID=93 - PDF=292000 MemberID=94 - PDF=292000 MemberID=95 - PDF=292000 MemberID=96 - PDF=292000 MemberID=97 - PDF=292000 MemberID=98 - PDF=292000 MemberID=99 - PDF=292000 MemberID=100 - PDF=292000 MemberID=101 - PDF=292000 MemberID=102 - # PDFSET -> PDF - PDF=292400 MemberID=0 - diff --git a/testFiles/W1jet_260_simplescale_weight_info.txt b/testFiles/W1jet_260_simplescale_weight_info.txt deleted file mode 100644 index ec48a9642f46c..0000000000000 --- a/testFiles/W1jet_260_simplescale_weight_info.txt +++ /dev/null @@ -1,1149 +0,0 @@ - # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - - PDF - - MUR=2.0 - MUR=0.5 - MUF=2.0 - MUR=2.0 MUF=2.0 - MUR=0.5 MUF=2.0 - MUF=0.5 - MUR=2.0 MUF=0.5 - MUR=0.5 MUF=0.5 - # scale - # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - - PDF=306000 MemberID=1 - PDF=306000 MemberID=2 - PDF=306000 MemberID=3 - PDF=306000 MemberID=4 - PDF=306000 MemberID=5 - PDF=306000 MemberID=6 - PDF=306000 MemberID=7 - PDF=306000 MemberID=8 - PDF=306000 MemberID=9 - PDF=306000 MemberID=10 - PDF=306000 MemberID=11 - PDF=306000 MemberID=12 - PDF=306000 MemberID=13 - PDF=306000 MemberID=14 - PDF=306000 MemberID=15 - PDF=306000 MemberID=16 - PDF=306000 MemberID=17 - PDF=306000 MemberID=18 - PDF=306000 MemberID=19 - PDF=306000 MemberID=20 - PDF=306000 MemberID=21 - PDF=306000 MemberID=22 - PDF=306000 MemberID=23 - PDF=306000 MemberID=24 - PDF=306000 MemberID=25 - PDF=306000 MemberID=26 - PDF=306000 MemberID=27 - PDF=306000 MemberID=28 - PDF=306000 MemberID=29 - PDF=306000 MemberID=30 - PDF=306000 MemberID=31 - PDF=306000 MemberID=32 - PDF=306000 MemberID=33 - PDF=306000 MemberID=34 - PDF=306000 MemberID=35 - PDF=306000 MemberID=36 - PDF=306000 MemberID=37 - PDF=306000 MemberID=38 - PDF=306000 MemberID=39 - PDF=306000 MemberID=40 - PDF=306000 MemberID=41 - PDF=306000 MemberID=42 - PDF=306000 MemberID=43 - PDF=306000 MemberID=44 - PDF=306000 MemberID=45 - PDF=306000 MemberID=46 - PDF=306000 MemberID=47 - PDF=306000 MemberID=48 - PDF=306000 MemberID=49 - PDF=306000 MemberID=50 - PDF=306000 MemberID=51 - PDF=306000 MemberID=52 - PDF=306000 MemberID=53 - PDF=306000 MemberID=54 - PDF=306000 MemberID=55 - PDF=306000 MemberID=56 - PDF=306000 MemberID=57 - PDF=306000 MemberID=58 - PDF=306000 MemberID=59 - PDF=306000 MemberID=60 - PDF=306000 MemberID=61 - PDF=306000 MemberID=62 - PDF=306000 MemberID=63 - PDF=306000 MemberID=64 - PDF=306000 MemberID=65 - PDF=306000 MemberID=66 - PDF=306000 MemberID=67 - PDF=306000 MemberID=68 - PDF=306000 MemberID=69 - PDF=306000 MemberID=70 - PDF=306000 MemberID=71 - PDF=306000 MemberID=72 - PDF=306000 MemberID=73 - PDF=306000 MemberID=74 - PDF=306000 MemberID=75 - PDF=306000 MemberID=76 - PDF=306000 MemberID=77 - PDF=306000 MemberID=78 - PDF=306000 MemberID=79 - PDF=306000 MemberID=80 - PDF=306000 MemberID=81 - PDF=306000 MemberID=82 - PDF=306000 MemberID=83 - PDF=306000 MemberID=84 - PDF=306000 MemberID=85 - PDF=306000 MemberID=86 - PDF=306000 MemberID=87 - PDF=306000 MemberID=88 - PDF=306000 MemberID=89 - PDF=306000 MemberID=90 - PDF=306000 MemberID=91 - PDF=306000 MemberID=92 - PDF=306000 MemberID=93 - PDF=306000 MemberID=94 - PDF=306000 MemberID=95 - PDF=306000 MemberID=96 - PDF=306000 MemberID=97 - PDF=306000 MemberID=98 - PDF=306000 MemberID=99 - PDF=306000 MemberID=100 - PDF=306000 MemberID=101 - PDF=306000 MemberID=102 - # PDFSET -> PDF - PDF=322500 MemberID=0 - PDF=322700 MemberID=0 - PDF=322900 MemberID=0 - PDF=323100 MemberID=0 - PDF=323300 MemberID=0 - PDF=323500 MemberID=0 - PDF=323700 MemberID=0 - PDF=323900 MemberID=0 - # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - PDF=305800 MemberID=0 - PDF=305800 MemberID=1 - PDF=305800 MemberID=2 - PDF=305800 MemberID=3 - PDF=305800 MemberID=4 - PDF=305800 MemberID=5 - PDF=305800 MemberID=6 - PDF=305800 MemberID=7 - PDF=305800 MemberID=8 - PDF=305800 MemberID=9 - PDF=305800 MemberID=10 - PDF=305800 MemberID=11 - PDF=305800 MemberID=12 - PDF=305800 MemberID=13 - PDF=305800 MemberID=14 - PDF=305800 MemberID=15 - PDF=305800 MemberID=16 - PDF=305800 MemberID=17 - PDF=305800 MemberID=18 - PDF=305800 MemberID=19 - PDF=305800 MemberID=20 - PDF=305800 MemberID=21 - PDF=305800 MemberID=22 - PDF=305800 MemberID=23 - PDF=305800 MemberID=24 - PDF=305800 MemberID=25 - PDF=305800 MemberID=26 - PDF=305800 MemberID=27 - PDF=305800 MemberID=28 - PDF=305800 MemberID=29 - PDF=305800 MemberID=30 - PDF=305800 MemberID=31 - PDF=305800 MemberID=32 - PDF=305800 MemberID=33 - PDF=305800 MemberID=34 - PDF=305800 MemberID=35 - PDF=305800 MemberID=36 - PDF=305800 MemberID=37 - PDF=305800 MemberID=38 - PDF=305800 MemberID=39 - PDF=305800 MemberID=40 - PDF=305800 MemberID=41 - PDF=305800 MemberID=42 - PDF=305800 MemberID=43 - PDF=305800 MemberID=44 - PDF=305800 MemberID=45 - PDF=305800 MemberID=46 - PDF=305800 MemberID=47 - PDF=305800 MemberID=48 - PDF=305800 MemberID=49 - PDF=305800 MemberID=50 - PDF=305800 MemberID=51 - PDF=305800 MemberID=52 - PDF=305800 MemberID=53 - PDF=305800 MemberID=54 - PDF=305800 MemberID=55 - PDF=305800 MemberID=56 - PDF=305800 MemberID=57 - PDF=305800 MemberID=58 - PDF=305800 MemberID=59 - PDF=305800 MemberID=60 - PDF=305800 MemberID=61 - PDF=305800 MemberID=62 - PDF=305800 MemberID=63 - PDF=305800 MemberID=64 - PDF=305800 MemberID=65 - PDF=305800 MemberID=66 - PDF=305800 MemberID=67 - PDF=305800 MemberID=68 - PDF=305800 MemberID=69 - PDF=305800 MemberID=70 - PDF=305800 MemberID=71 - PDF=305800 MemberID=72 - PDF=305800 MemberID=73 - PDF=305800 MemberID=74 - PDF=305800 MemberID=75 - PDF=305800 MemberID=76 - PDF=305800 MemberID=77 - PDF=305800 MemberID=78 - PDF=305800 MemberID=79 - PDF=305800 MemberID=80 - PDF=305800 MemberID=81 - PDF=305800 MemberID=82 - PDF=305800 MemberID=83 - PDF=305800 MemberID=84 - PDF=305800 MemberID=85 - PDF=305800 MemberID=86 - PDF=305800 MemberID=87 - PDF=305800 MemberID=88 - PDF=305800 MemberID=89 - PDF=305800 MemberID=90 - PDF=305800 MemberID=91 - PDF=305800 MemberID=92 - PDF=305800 MemberID=93 - PDF=305800 MemberID=94 - PDF=305800 MemberID=95 - PDF=305800 MemberID=96 - PDF=305800 MemberID=97 - PDF=305800 MemberID=98 - PDF=305800 MemberID=99 - PDF=305800 MemberID=100 - PDF=305800 MemberID=101 - PDF=305800 MemberID=102 - # PDFSET -> PDFSET - # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% - PDF=13000 MemberID=0 - PDF=13000 MemberID=1 - PDF=13000 MemberID=2 - PDF=13000 MemberID=3 - PDF=13000 MemberID=4 - PDF=13000 MemberID=5 - PDF=13000 MemberID=6 - PDF=13000 MemberID=7 - PDF=13000 MemberID=8 - PDF=13000 MemberID=9 - PDF=13000 MemberID=10 - PDF=13000 MemberID=11 - PDF=13000 MemberID=12 - PDF=13000 MemberID=13 - PDF=13000 MemberID=14 - PDF=13000 MemberID=15 - PDF=13000 MemberID=16 - PDF=13000 MemberID=17 - PDF=13000 MemberID=18 - PDF=13000 MemberID=19 - PDF=13000 MemberID=20 - PDF=13000 MemberID=21 - PDF=13000 MemberID=22 - PDF=13000 MemberID=23 - PDF=13000 MemberID=24 - PDF=13000 MemberID=25 - PDF=13000 MemberID=26 - PDF=13000 MemberID=27 - PDF=13000 MemberID=28 - PDF=13000 MemberID=29 - PDF=13000 MemberID=30 - PDF=13000 MemberID=31 - PDF=13000 MemberID=32 - PDF=13000 MemberID=33 - PDF=13000 MemberID=34 - PDF=13000 MemberID=35 - PDF=13000 MemberID=36 - PDF=13000 MemberID=37 - PDF=13000 MemberID=38 - PDF=13000 MemberID=39 - PDF=13000 MemberID=40 - PDF=13000 MemberID=41 - PDF=13000 MemberID=42 - PDF=13000 MemberID=43 - PDF=13000 MemberID=44 - PDF=13000 MemberID=45 - PDF=13000 MemberID=46 - PDF=13000 MemberID=47 - PDF=13000 MemberID=48 - PDF=13000 MemberID=49 - PDF=13000 MemberID=50 - PDF=13000 MemberID=51 - PDF=13000 MemberID=52 - PDF=13000 MemberID=53 - PDF=13000 MemberID=54 - PDF=13000 MemberID=55 - PDF=13000 MemberID=56 - # PDFSET -> PDF - PDF=13065 MemberID=0 - PDF=13069 MemberID=0 - # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% - PDF=13100 MemberID=0 - PDF=13100 MemberID=1 - PDF=13100 MemberID=2 - PDF=13100 MemberID=3 - PDF=13100 MemberID=4 - PDF=13100 MemberID=5 - PDF=13100 MemberID=6 - PDF=13100 MemberID=7 - PDF=13100 MemberID=8 - PDF=13100 MemberID=9 - PDF=13100 MemberID=10 - PDF=13100 MemberID=11 - PDF=13100 MemberID=12 - PDF=13100 MemberID=13 - PDF=13100 MemberID=14 - PDF=13100 MemberID=15 - PDF=13100 MemberID=16 - PDF=13100 MemberID=17 - PDF=13100 MemberID=18 - PDF=13100 MemberID=19 - PDF=13100 MemberID=20 - PDF=13100 MemberID=21 - PDF=13100 MemberID=22 - PDF=13100 MemberID=23 - PDF=13100 MemberID=24 - PDF=13100 MemberID=25 - PDF=13100 MemberID=26 - PDF=13100 MemberID=27 - PDF=13100 MemberID=28 - PDF=13100 MemberID=29 - PDF=13100 MemberID=30 - PDF=13100 MemberID=31 - PDF=13100 MemberID=32 - PDF=13100 MemberID=33 - PDF=13100 MemberID=34 - PDF=13100 MemberID=35 - PDF=13100 MemberID=36 - PDF=13100 MemberID=37 - PDF=13100 MemberID=38 - PDF=13100 MemberID=39 - PDF=13100 MemberID=40 - PDF=13100 MemberID=41 - PDF=13100 MemberID=42 - PDF=13100 MemberID=43 - PDF=13100 MemberID=44 - PDF=13100 MemberID=45 - PDF=13100 MemberID=46 - PDF=13100 MemberID=47 - PDF=13100 MemberID=48 - PDF=13100 MemberID=49 - PDF=13100 MemberID=50 - PDF=13100 MemberID=51 - PDF=13100 MemberID=52 - PDF=13100 MemberID=53 - PDF=13100 MemberID=54 - PDF=13100 MemberID=55 - PDF=13100 MemberID=56 - # PDFSET -> PDF - PDF=13163 MemberID=0 - PDF=13167 MemberID=0 - PDF=13200 MemberID=0 - # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht - PDF=25200 MemberID=0 - PDF=25200 MemberID=1 - PDF=25200 MemberID=2 - PDF=25200 MemberID=3 - PDF=25200 MemberID=4 - PDF=25200 MemberID=5 - PDF=25200 MemberID=6 - PDF=25200 MemberID=7 - PDF=25200 MemberID=8 - PDF=25200 MemberID=9 - PDF=25200 MemberID=10 - PDF=25200 MemberID=11 - PDF=25200 MemberID=12 - PDF=25200 MemberID=13 - PDF=25200 MemberID=14 - PDF=25200 MemberID=15 - PDF=25200 MemberID=16 - PDF=25200 MemberID=17 - PDF=25200 MemberID=18 - PDF=25200 MemberID=19 - PDF=25200 MemberID=20 - PDF=25200 MemberID=21 - PDF=25200 MemberID=22 - PDF=25200 MemberID=23 - PDF=25200 MemberID=24 - PDF=25200 MemberID=25 - PDF=25200 MemberID=26 - PDF=25200 MemberID=27 - PDF=25200 MemberID=28 - PDF=25200 MemberID=29 - PDF=25200 MemberID=30 - PDF=25200 MemberID=31 - PDF=25200 MemberID=32 - PDF=25200 MemberID=33 - PDF=25200 MemberID=34 - PDF=25200 MemberID=35 - PDF=25200 MemberID=36 - PDF=25200 MemberID=37 - PDF=25200 MemberID=38 - PDF=25200 MemberID=39 - PDF=25200 MemberID=40 - PDF=25200 MemberID=41 - PDF=25200 MemberID=42 - PDF=25200 MemberID=43 - PDF=25200 MemberID=44 - PDF=25200 MemberID=45 - PDF=25200 MemberID=46 - PDF=25200 MemberID=47 - PDF=25200 MemberID=48 - PDF=25200 MemberID=49 - PDF=25200 MemberID=50 - # PDFSET -> PDFSET - # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht - PDF=25300 MemberID=0 - PDF=25300 MemberID=1 - PDF=25300 MemberID=2 - PDF=25300 MemberID=3 - PDF=25300 MemberID=4 - PDF=25300 MemberID=5 - PDF=25300 MemberID=6 - PDF=25300 MemberID=7 - PDF=25300 MemberID=8 - PDF=25300 MemberID=9 - PDF=25300 MemberID=10 - PDF=25300 MemberID=11 - PDF=25300 MemberID=12 - PDF=25300 MemberID=13 - PDF=25300 MemberID=14 - PDF=25300 MemberID=15 - PDF=25300 MemberID=16 - PDF=25300 MemberID=17 - PDF=25300 MemberID=18 - PDF=25300 MemberID=19 - PDF=25300 MemberID=20 - PDF=25300 MemberID=21 - PDF=25300 MemberID=22 - PDF=25300 MemberID=23 - PDF=25300 MemberID=24 - PDF=25300 MemberID=25 - PDF=25300 MemberID=26 - PDF=25300 MemberID=27 - PDF=25300 MemberID=28 - PDF=25300 MemberID=29 - PDF=25300 MemberID=30 - PDF=25300 MemberID=31 - PDF=25300 MemberID=32 - PDF=25300 MemberID=33 - PDF=25300 MemberID=34 - PDF=25300 MemberID=35 - PDF=25300 MemberID=36 - PDF=25300 MemberID=37 - PDF=25300 MemberID=38 - PDF=25300 MemberID=39 - PDF=25300 MemberID=40 - PDF=25300 MemberID=41 - PDF=25300 MemberID=42 - PDF=25300 MemberID=43 - PDF=25300 MemberID=44 - PDF=25300 MemberID=45 - PDF=25300 MemberID=46 - PDF=25300 MemberID=47 - PDF=25300 MemberID=48 - PDF=25300 MemberID=49 - PDF=25300 MemberID=50 - # PDFSET -> PDF - PDF=25000 MemberID=0 - # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set - PDF=42780 MemberID=0 - PDF=42780 MemberID=1 - PDF=42780 MemberID=2 - PDF=42780 MemberID=3 - PDF=42780 MemberID=4 - PDF=42780 MemberID=5 - PDF=42780 MemberID=6 - PDF=42780 MemberID=7 - PDF=42780 MemberID=8 - PDF=42780 MemberID=9 - PDF=42780 MemberID=10 - PDF=42780 MemberID=11 - PDF=42780 MemberID=12 - PDF=42780 MemberID=13 - PDF=42780 MemberID=14 - PDF=42780 MemberID=15 - PDF=42780 MemberID=16 - PDF=42780 MemberID=17 - PDF=42780 MemberID=18 - PDF=42780 MemberID=19 - PDF=42780 MemberID=20 - PDF=42780 MemberID=21 - PDF=42780 MemberID=22 - PDF=42780 MemberID=23 - PDF=42780 MemberID=24 - PDF=42780 MemberID=25 - PDF=42780 MemberID=26 - PDF=42780 MemberID=27 - PDF=42780 MemberID=28 - PDF=42780 MemberID=29 - # PDFSET -> PDFSET - # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 - PDF=90200 MemberID=0 - PDF=90200 MemberID=1 - PDF=90200 MemberID=2 - PDF=90200 MemberID=3 - PDF=90200 MemberID=4 - PDF=90200 MemberID=5 - PDF=90200 MemberID=6 - PDF=90200 MemberID=7 - PDF=90200 MemberID=8 - PDF=90200 MemberID=9 - PDF=90200 MemberID=10 - PDF=90200 MemberID=11 - PDF=90200 MemberID=12 - PDF=90200 MemberID=13 - PDF=90200 MemberID=14 - PDF=90200 MemberID=15 - PDF=90200 MemberID=16 - PDF=90200 MemberID=17 - PDF=90200 MemberID=18 - PDF=90200 MemberID=19 - PDF=90200 MemberID=20 - PDF=90200 MemberID=21 - PDF=90200 MemberID=22 - PDF=90200 MemberID=23 - PDF=90200 MemberID=24 - PDF=90200 MemberID=25 - PDF=90200 MemberID=26 - PDF=90200 MemberID=27 - PDF=90200 MemberID=28 - PDF=90200 MemberID=29 - PDF=90200 MemberID=30 - PDF=90200 MemberID=31 - PDF=90200 MemberID=32 - PDF=90200 MemberID=33 - PDF=90200 MemberID=34 - PDF=90200 MemberID=35 - PDF=90200 MemberID=36 - PDF=90200 MemberID=37 - PDF=90200 MemberID=38 - PDF=90200 MemberID=39 - PDF=90200 MemberID=40 - PDF=90200 MemberID=41 - PDF=90200 MemberID=42 - PDF=90200 MemberID=43 - PDF=90200 MemberID=44 - PDF=90200 MemberID=45 - PDF=90200 MemberID=46 - PDF=90200 MemberID=47 - PDF=90200 MemberID=48 - PDF=90200 MemberID=49 - PDF=90200 MemberID=50 - PDF=90200 MemberID=51 - PDF=90200 MemberID=52 - PDF=90200 MemberID=53 - PDF=90200 MemberID=54 - PDF=90200 MemberID=55 - PDF=90200 MemberID=56 - PDF=90200 MemberID=57 - PDF=90200 MemberID=58 - PDF=90200 MemberID=59 - PDF=90200 MemberID=60 - PDF=90200 MemberID=61 - PDF=90200 MemberID=62 - PDF=90200 MemberID=63 - PDF=90200 MemberID=64 - PDF=90200 MemberID=65 - PDF=90200 MemberID=66 - PDF=90200 MemberID=67 - PDF=90200 MemberID=68 - PDF=90200 MemberID=69 - PDF=90200 MemberID=70 - PDF=90200 MemberID=71 - PDF=90200 MemberID=72 - PDF=90200 MemberID=73 - PDF=90200 MemberID=74 - PDF=90200 MemberID=75 - PDF=90200 MemberID=76 - PDF=90200 MemberID=77 - PDF=90200 MemberID=78 - PDF=90200 MemberID=79 - PDF=90200 MemberID=80 - PDF=90200 MemberID=81 - PDF=90200 MemberID=82 - PDF=90200 MemberID=83 - PDF=90200 MemberID=84 - PDF=90200 MemberID=85 - PDF=90200 MemberID=86 - PDF=90200 MemberID=87 - PDF=90200 MemberID=88 - PDF=90200 MemberID=89 - PDF=90200 MemberID=90 - PDF=90200 MemberID=91 - PDF=90200 MemberID=92 - PDF=90200 MemberID=93 - PDF=90200 MemberID=94 - PDF=90200 MemberID=95 - PDF=90200 MemberID=96 - PDF=90200 MemberID=97 - PDF=90200 MemberID=98 - PDF=90200 MemberID=99 - PDF=90200 MemberID=100 - PDF=90200 MemberID=101 - PDF=90200 MemberID=102 - # PDFSET -> PDFSET - # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 - PDF=91200 MemberID=0 - PDF=91200 MemberID=1 - PDF=91200 MemberID=2 - PDF=91200 MemberID=3 - PDF=91200 MemberID=4 - PDF=91200 MemberID=5 - PDF=91200 MemberID=6 - PDF=91200 MemberID=7 - PDF=91200 MemberID=8 - PDF=91200 MemberID=9 - PDF=91200 MemberID=10 - PDF=91200 MemberID=11 - PDF=91200 MemberID=12 - PDF=91200 MemberID=13 - PDF=91200 MemberID=14 - PDF=91200 MemberID=15 - PDF=91200 MemberID=16 - PDF=91200 MemberID=17 - PDF=91200 MemberID=18 - PDF=91200 MemberID=19 - PDF=91200 MemberID=20 - PDF=91200 MemberID=21 - PDF=91200 MemberID=22 - PDF=91200 MemberID=23 - PDF=91200 MemberID=24 - PDF=91200 MemberID=25 - PDF=91200 MemberID=26 - PDF=91200 MemberID=27 - PDF=91200 MemberID=28 - PDF=91200 MemberID=29 - PDF=91200 MemberID=30 - PDF=91200 MemberID=31 - PDF=91200 MemberID=32 - PDF=91200 MemberID=33 - PDF=91200 MemberID=34 - PDF=91200 MemberID=35 - PDF=91200 MemberID=36 - PDF=91200 MemberID=37 - PDF=91200 MemberID=38 - PDF=91200 MemberID=39 - PDF=91200 MemberID=40 - PDF=91200 MemberID=41 - PDF=91200 MemberID=42 - PDF=91200 MemberID=43 - PDF=91200 MemberID=44 - PDF=91200 MemberID=45 - PDF=91200 MemberID=46 - PDF=91200 MemberID=47 - PDF=91200 MemberID=48 - PDF=91200 MemberID=49 - PDF=91200 MemberID=50 - PDF=91200 MemberID=51 - PDF=91200 MemberID=52 - PDF=91200 MemberID=53 - PDF=91200 MemberID=54 - PDF=91200 MemberID=55 - PDF=91200 MemberID=56 - PDF=91200 MemberID=57 - PDF=91200 MemberID=58 - PDF=91200 MemberID=59 - PDF=91200 MemberID=60 - PDF=91200 MemberID=61 - PDF=91200 MemberID=62 - PDF=91200 MemberID=63 - PDF=91200 MemberID=64 - PDF=91200 MemberID=65 - PDF=91200 MemberID=66 - PDF=91200 MemberID=67 - PDF=91200 MemberID=68 - PDF=91200 MemberID=69 - PDF=91200 MemberID=70 - PDF=91200 MemberID=71 - PDF=91200 MemberID=72 - PDF=91200 MemberID=73 - PDF=91200 MemberID=74 - PDF=91200 MemberID=75 - PDF=91200 MemberID=76 - PDF=91200 MemberID=77 - PDF=91200 MemberID=78 - PDF=91200 MemberID=79 - PDF=91200 MemberID=80 - PDF=91200 MemberID=81 - PDF=91200 MemberID=82 - PDF=91200 MemberID=83 - PDF=91200 MemberID=84 - PDF=91200 MemberID=85 - PDF=91200 MemberID=86 - PDF=91200 MemberID=87 - PDF=91200 MemberID=88 - PDF=91200 MemberID=89 - PDF=91200 MemberID=90 - PDF=91200 MemberID=91 - PDF=91200 MemberID=92 - PDF=91200 MemberID=93 - PDF=91200 MemberID=94 - PDF=91200 MemberID=95 - PDF=91200 MemberID=96 - PDF=91200 MemberID=97 - PDF=91200 MemberID=98 - PDF=91200 MemberID=99 - PDF=91200 MemberID=100 - PDF=91200 MemberID=101 - PDF=91200 MemberID=102 - # PDFSET -> PDFSET - # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 - PDF=90400 MemberID=0 - PDF=90400 MemberID=1 - PDF=90400 MemberID=2 - PDF=90400 MemberID=3 - PDF=90400 MemberID=4 - PDF=90400 MemberID=5 - PDF=90400 MemberID=6 - PDF=90400 MemberID=7 - PDF=90400 MemberID=8 - PDF=90400 MemberID=9 - PDF=90400 MemberID=10 - PDF=90400 MemberID=11 - PDF=90400 MemberID=12 - PDF=90400 MemberID=13 - PDF=90400 MemberID=14 - PDF=90400 MemberID=15 - PDF=90400 MemberID=16 - PDF=90400 MemberID=17 - PDF=90400 MemberID=18 - PDF=90400 MemberID=19 - PDF=90400 MemberID=20 - PDF=90400 MemberID=21 - PDF=90400 MemberID=22 - PDF=90400 MemberID=23 - PDF=90400 MemberID=24 - PDF=90400 MemberID=25 - PDF=90400 MemberID=26 - PDF=90400 MemberID=27 - PDF=90400 MemberID=28 - PDF=90400 MemberID=29 - PDF=90400 MemberID=30 - PDF=90400 MemberID=31 - PDF=90400 MemberID=32 - # PDFSET -> PDFSET - # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 - PDF=91400 MemberID=0 - PDF=91400 MemberID=1 - PDF=91400 MemberID=2 - PDF=91400 MemberID=3 - PDF=91400 MemberID=4 - PDF=91400 MemberID=5 - PDF=91400 MemberID=6 - PDF=91400 MemberID=7 - PDF=91400 MemberID=8 - PDF=91400 MemberID=9 - PDF=91400 MemberID=10 - PDF=91400 MemberID=11 - PDF=91400 MemberID=12 - PDF=91400 MemberID=13 - PDF=91400 MemberID=14 - PDF=91400 MemberID=15 - PDF=91400 MemberID=16 - PDF=91400 MemberID=17 - PDF=91400 MemberID=18 - PDF=91400 MemberID=19 - PDF=91400 MemberID=20 - PDF=91400 MemberID=21 - PDF=91400 MemberID=22 - PDF=91400 MemberID=23 - PDF=91400 MemberID=24 - PDF=91400 MemberID=25 - PDF=91400 MemberID=26 - PDF=91400 MemberID=27 - PDF=91400 MemberID=28 - PDF=91400 MemberID=29 - PDF=91400 MemberID=30 - PDF=91400 MemberID=31 - PDF=91400 MemberID=32 - # PDFSET -> PDFSET - # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. - PDF=61100 MemberID=0 - PDF=61100 MemberID=1 - PDF=61100 MemberID=2 - PDF=61100 MemberID=3 - PDF=61100 MemberID=4 - PDF=61100 MemberID=5 - PDF=61100 MemberID=6 - PDF=61100 MemberID=7 - PDF=61100 MemberID=8 - PDF=61100 MemberID=9 - PDF=61100 MemberID=10 - PDF=61100 MemberID=11 - PDF=61100 MemberID=12 - PDF=61100 MemberID=13 - PDF=61100 MemberID=14 - PDF=61100 MemberID=15 - PDF=61100 MemberID=16 - PDF=61100 MemberID=17 - PDF=61100 MemberID=18 - PDF=61100 MemberID=19 - PDF=61100 MemberID=20 - PDF=61100 MemberID=21 - PDF=61100 MemberID=22 - PDF=61100 MemberID=23 - PDF=61100 MemberID=24 - PDF=61100 MemberID=25 - PDF=61100 MemberID=26 - PDF=61100 MemberID=27 - PDF=61100 MemberID=28 - # PDFSET -> PDFSET - # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); - PDF=61130 MemberID=0 - PDF=61130 MemberID=1 - PDF=61130 MemberID=2 - PDF=61130 MemberID=3 - PDF=61130 MemberID=4 - PDF=61130 MemberID=5 - PDF=61130 MemberID=6 - PDF=61130 MemberID=7 - PDF=61130 MemberID=8 - PDF=61130 MemberID=9 - PDF=61130 MemberID=10 - PDF=61130 MemberID=11 - PDF=61130 MemberID=12 - PDF=61130 MemberID=13 - # PDFSET -> PDFSET - # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. - PDF=61200 MemberID=0 - PDF=61200 MemberID=1 - PDF=61200 MemberID=2 - PDF=61200 MemberID=3 - PDF=61200 MemberID=4 - PDF=61200 MemberID=5 - PDF=61200 MemberID=6 - PDF=61200 MemberID=7 - PDF=61200 MemberID=8 - PDF=61200 MemberID=9 - PDF=61200 MemberID=10 - PDF=61200 MemberID=11 - PDF=61200 MemberID=12 - PDF=61200 MemberID=13 - PDF=61200 MemberID=14 - PDF=61200 MemberID=15 - PDF=61200 MemberID=16 - PDF=61200 MemberID=17 - PDF=61200 MemberID=18 - PDF=61200 MemberID=19 - PDF=61200 MemberID=20 - PDF=61200 MemberID=21 - PDF=61200 MemberID=22 - PDF=61200 MemberID=23 - PDF=61200 MemberID=24 - PDF=61200 MemberID=25 - PDF=61200 MemberID=26 - PDF=61200 MemberID=27 - PDF=61200 MemberID=28 - # PDFSET -> PDFSET - # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); - PDF=61230 MemberID=0 - PDF=61230 MemberID=1 - PDF=61230 MemberID=2 - PDF=61230 MemberID=3 - PDF=61230 MemberID=4 - PDF=61230 MemberID=5 - PDF=61230 MemberID=6 - PDF=61230 MemberID=7 - PDF=61230 MemberID=8 - PDF=61230 MemberID=9 - PDF=61230 MemberID=10 - PDF=61230 MemberID=11 - PDF=61230 MemberID=12 - PDF=61230 MemberID=13 - # PDFSET -> PDFSET - # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference - PDF=13400 MemberID=0 - PDF=13400 MemberID=1 - PDF=13400 MemberID=2 - PDF=13400 MemberID=3 - PDF=13400 MemberID=4 - PDF=13400 MemberID=5 - PDF=13400 MemberID=6 - PDF=13400 MemberID=7 - PDF=13400 MemberID=8 - PDF=13400 MemberID=9 - PDF=13400 MemberID=10 - PDF=13400 MemberID=11 - PDF=13400 MemberID=12 - PDF=13400 MemberID=13 - PDF=13400 MemberID=14 - PDF=13400 MemberID=15 - PDF=13400 MemberID=16 - PDF=13400 MemberID=17 - PDF=13400 MemberID=18 - PDF=13400 MemberID=19 - PDF=13400 MemberID=20 - PDF=13400 MemberID=21 - PDF=13400 MemberID=22 - PDF=13400 MemberID=23 - PDF=13400 MemberID=24 - PDF=13400 MemberID=25 - PDF=13400 MemberID=26 - PDF=13400 MemberID=27 - PDF=13400 MemberID=28 - PDF=13400 MemberID=29 - PDF=13400 MemberID=30 - # PDFSET -> PDFSET - # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. -PDF4LHC15_nnlo_100 description: - PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 - ; PDF symmetric eigenvectors -LUXqed description: - Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P - fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. - Photon generated at scale 100.0 GeV, other partons matched at scale - 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - - 0.00699 * x^{0.000} g(x) at scale 10.0 GeV -Members: - 0 is central - 1-100 map to original PDF members - 101 replacement of CLAS resonance fit with Christy-Bosted fit - 102 rescale-R-0.5 - 103 rescale R in high-Q^2 region with a higher-twist component - 104 use the A1 elastic fit result without the two-photon exchange corrections - 105 use the lower edge of the elastic fit error band - 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 - 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) -Versioning info: - DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) -LUXqed version history for this PDF: - This version corresponds to the long LUXqed17 paper. - PDF=82200 MemberID=0 - PDF=82200 MemberID=1 - PDF=82200 MemberID=2 - PDF=82200 MemberID=3 - PDF=82200 MemberID=4 - PDF=82200 MemberID=5 - PDF=82200 MemberID=6 - PDF=82200 MemberID=7 - PDF=82200 MemberID=8 - PDF=82200 MemberID=9 - PDF=82200 MemberID=10 - PDF=82200 MemberID=11 - PDF=82200 MemberID=12 - PDF=82200 MemberID=13 - PDF=82200 MemberID=14 - PDF=82200 MemberID=15 - PDF=82200 MemberID=16 - PDF=82200 MemberID=17 - PDF=82200 MemberID=18 - PDF=82200 MemberID=19 - PDF=82200 MemberID=20 - PDF=82200 MemberID=21 - PDF=82200 MemberID=22 - PDF=82200 MemberID=23 - PDF=82200 MemberID=24 - PDF=82200 MemberID=25 - PDF=82200 MemberID=26 - PDF=82200 MemberID=27 - PDF=82200 MemberID=28 - PDF=82200 MemberID=29 - PDF=82200 MemberID=30 - PDF=82200 MemberID=31 - PDF=82200 MemberID=32 - PDF=82200 MemberID=33 - PDF=82200 MemberID=34 - PDF=82200 MemberID=35 - PDF=82200 MemberID=36 - PDF=82200 MemberID=37 - PDF=82200 MemberID=38 - PDF=82200 MemberID=39 - PDF=82200 MemberID=40 - PDF=82200 MemberID=41 - PDF=82200 MemberID=42 - PDF=82200 MemberID=43 - PDF=82200 MemberID=44 - PDF=82200 MemberID=45 - PDF=82200 MemberID=46 - PDF=82200 MemberID=47 - PDF=82200 MemberID=48 - PDF=82200 MemberID=49 - PDF=82200 MemberID=50 - PDF=82200 MemberID=51 - PDF=82200 MemberID=52 - PDF=82200 MemberID=53 - PDF=82200 MemberID=54 - PDF=82200 MemberID=55 - PDF=82200 MemberID=56 - PDF=82200 MemberID=57 - PDF=82200 MemberID=58 - PDF=82200 MemberID=59 - PDF=82200 MemberID=60 - PDF=82200 MemberID=61 - PDF=82200 MemberID=62 - PDF=82200 MemberID=63 - PDF=82200 MemberID=64 - PDF=82200 MemberID=65 - PDF=82200 MemberID=66 - PDF=82200 MemberID=67 - PDF=82200 MemberID=68 - PDF=82200 MemberID=69 - PDF=82200 MemberID=70 - PDF=82200 MemberID=71 - PDF=82200 MemberID=72 - PDF=82200 MemberID=73 - PDF=82200 MemberID=74 - PDF=82200 MemberID=75 - PDF=82200 MemberID=76 - PDF=82200 MemberID=77 - PDF=82200 MemberID=78 - PDF=82200 MemberID=79 - PDF=82200 MemberID=80 - PDF=82200 MemberID=81 - PDF=82200 MemberID=82 - PDF=82200 MemberID=83 - PDF=82200 MemberID=84 - PDF=82200 MemberID=85 - PDF=82200 MemberID=86 - PDF=82200 MemberID=87 - PDF=82200 MemberID=88 - PDF=82200 MemberID=89 - PDF=82200 MemberID=90 - PDF=82200 MemberID=91 - PDF=82200 MemberID=92 - PDF=82200 MemberID=93 - PDF=82200 MemberID=94 - PDF=82200 MemberID=95 - PDF=82200 MemberID=96 - PDF=82200 MemberID=97 - PDF=82200 MemberID=98 - PDF=82200 MemberID=99 - PDF=82200 MemberID=100 - PDF=82200 MemberID=101 - PDF=82200 MemberID=102 - PDF=82200 MemberID=103 - PDF=82200 MemberID=104 - PDF=82200 MemberID=105 - PDF=82200 MemberID=106 - PDF=82200 MemberID=107 - # PDFSET -> PDFSET - # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 - PDF=292200 MemberID=0 - PDF=292200 MemberID=1 - PDF=292200 MemberID=2 - PDF=292200 MemberID=3 - PDF=292200 MemberID=4 - PDF=292200 MemberID=5 - PDF=292200 MemberID=6 - PDF=292200 MemberID=7 - PDF=292200 MemberID=8 - PDF=292200 MemberID=9 - PDF=292200 MemberID=10 - PDF=292200 MemberID=11 - PDF=292200 MemberID=12 - PDF=292200 MemberID=13 - PDF=292200 MemberID=14 - PDF=292200 MemberID=15 - PDF=292200 MemberID=16 - PDF=292200 MemberID=17 - PDF=292200 MemberID=18 - PDF=292200 MemberID=19 - PDF=292200 MemberID=20 - PDF=292200 MemberID=21 - PDF=292200 MemberID=22 - PDF=292200 MemberID=23 - PDF=292200 MemberID=24 - PDF=292200 MemberID=25 - PDF=292200 MemberID=26 - PDF=292200 MemberID=27 - PDF=292200 MemberID=28 - PDF=292200 MemberID=29 - PDF=292200 MemberID=30 - PDF=292200 MemberID=31 - PDF=292200 MemberID=32 - PDF=292200 MemberID=33 - PDF=292200 MemberID=34 - PDF=292200 MemberID=35 - PDF=292200 MemberID=36 - PDF=292200 MemberID=37 - PDF=292200 MemberID=38 - PDF=292200 MemberID=39 - PDF=292200 MemberID=40 - PDF=292200 MemberID=41 - PDF=292200 MemberID=42 - PDF=292200 MemberID=43 - PDF=292200 MemberID=44 - PDF=292200 MemberID=45 - PDF=292200 MemberID=46 - PDF=292200 MemberID=47 - PDF=292200 MemberID=48 - PDF=292200 MemberID=49 - PDF=292200 MemberID=50 - PDF=292200 MemberID=51 - PDF=292200 MemberID=52 - PDF=292200 MemberID=53 - PDF=292200 MemberID=54 - PDF=292200 MemberID=55 - PDF=292200 MemberID=56 - PDF=292200 MemberID=57 - PDF=292200 MemberID=58 - PDF=292200 MemberID=59 - PDF=292200 MemberID=60 - PDF=292200 MemberID=61 - PDF=292200 MemberID=62 - PDF=292200 MemberID=63 - PDF=292200 MemberID=64 - PDF=292200 MemberID=65 - PDF=292200 MemberID=66 - PDF=292200 MemberID=67 - PDF=292200 MemberID=68 - PDF=292200 MemberID=69 - PDF=292200 MemberID=70 - PDF=292200 MemberID=71 - PDF=292200 MemberID=72 - PDF=292200 MemberID=73 - PDF=292200 MemberID=74 - PDF=292200 MemberID=75 - PDF=292200 MemberID=76 - PDF=292200 MemberID=77 - PDF=292200 MemberID=78 - PDF=292200 MemberID=79 - PDF=292200 MemberID=80 - PDF=292200 MemberID=81 - PDF=292200 MemberID=82 - PDF=292200 MemberID=83 - PDF=292200 MemberID=84 - PDF=292200 MemberID=85 - PDF=292200 MemberID=86 - PDF=292200 MemberID=87 - PDF=292200 MemberID=88 - PDF=292200 MemberID=89 - PDF=292200 MemberID=90 - PDF=292200 MemberID=91 - PDF=292200 MemberID=92 - PDF=292200 MemberID=93 - PDF=292200 MemberID=94 - PDF=292200 MemberID=95 - PDF=292200 MemberID=96 - PDF=292200 MemberID=97 - PDF=292200 MemberID=98 - PDF=292200 MemberID=99 - PDF=292200 MemberID=100 - PDF=292200 MemberID=101 - PDF=292200 MemberID=102 - # PDFSET -> PDF - PDF=292600 MemberID=0 - PDF=315000 MemberID=0 - PDF=315200 MemberID=0 - PDF=262000 MemberID=0 - PDF=263000 MemberID=0 - - dyn_scale_choice=sum pt - dyn_scale_choice=HT - dyn_scale_choice=HT/2 - dyn_scale_choice=sqrts - diff --git a/testFiles/W1jet_260_weight_info.txt b/testFiles/W1jet_260_weight_info.txt deleted file mode 100644 index d8b08d74060b4..0000000000000 --- a/testFiles/W1jet_260_weight_info.txt +++ /dev/null @@ -1,1179 +0,0 @@ - # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - - - PDF - dyn_scale_choice=sum pt - dyn_scale_choice=HT - dyn_scale_choice=HT/2 - dyn_scale_choice=sqrts - MUR=2.0 - MUR=2.0 dyn_scale_choice=sum pt - MUR=2.0 dyn_scale_choice=HT - MUR=2.0 dyn_scale_choice=HT/2 - MUR=2.0 dyn_scale_choice=sqrts - MUR=0.5 - MUR=0.5 dyn_scale_choice=sum pt - MUR=0.5 dyn_scale_choice=HT - MUR=0.5 dyn_scale_choice=HT/2 - MUR=0.5 dyn_scale_choice=sqrts - MUF=2.0 - MUF=2.0 dyn_scale_choice=sum pt - MUF=2.0 dyn_scale_choice=HT - MUF=2.0 dyn_scale_choice=HT/2 - MUF=2.0 dyn_scale_choice=sqrts - MUR=2.0 MUF=2.0 - MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt - MUR=2.0 MUF=2.0 dyn_scale_choice=HT - MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 - MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts - MUR=0.5 MUF=2.0 - MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt - MUR=0.5 MUF=2.0 dyn_scale_choice=HT - MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 - MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts - MUF=0.5 - MUF=0.5 dyn_scale_choice=sum pt - MUF=0.5 dyn_scale_choice=HT - MUF=0.5 dyn_scale_choice=HT/2 - MUF=0.5 dyn_scale_choice=sqrts - MUR=2.0 MUF=0.5 - MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt - MUR=2.0 MUF=0.5 dyn_scale_choice=HT - MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 - MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts - MUR=0.5 MUF=0.5 - MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt - MUR=0.5 MUF=0.5 dyn_scale_choice=HT - MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 - MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts - # scale - # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - - PDF=306000 MemberID=1 - PDF=306000 MemberID=2 - PDF=306000 MemberID=3 - PDF=306000 MemberID=4 - PDF=306000 MemberID=5 - PDF=306000 MemberID=6 - PDF=306000 MemberID=7 - PDF=306000 MemberID=8 - PDF=306000 MemberID=9 - PDF=306000 MemberID=10 - PDF=306000 MemberID=11 - PDF=306000 MemberID=12 - PDF=306000 MemberID=13 - PDF=306000 MemberID=14 - PDF=306000 MemberID=15 - PDF=306000 MemberID=16 - PDF=306000 MemberID=17 - PDF=306000 MemberID=18 - PDF=306000 MemberID=19 - PDF=306000 MemberID=20 - PDF=306000 MemberID=21 - PDF=306000 MemberID=22 - PDF=306000 MemberID=23 - PDF=306000 MemberID=24 - PDF=306000 MemberID=25 - PDF=306000 MemberID=26 - PDF=306000 MemberID=27 - PDF=306000 MemberID=28 - PDF=306000 MemberID=29 - PDF=306000 MemberID=30 - PDF=306000 MemberID=31 - PDF=306000 MemberID=32 - PDF=306000 MemberID=33 - PDF=306000 MemberID=34 - PDF=306000 MemberID=35 - PDF=306000 MemberID=36 - PDF=306000 MemberID=37 - PDF=306000 MemberID=38 - PDF=306000 MemberID=39 - PDF=306000 MemberID=40 - PDF=306000 MemberID=41 - PDF=306000 MemberID=42 - PDF=306000 MemberID=43 - PDF=306000 MemberID=44 - PDF=306000 MemberID=45 - PDF=306000 MemberID=46 - PDF=306000 MemberID=47 - PDF=306000 MemberID=48 - PDF=306000 MemberID=49 - PDF=306000 MemberID=50 - PDF=306000 MemberID=51 - PDF=306000 MemberID=52 - PDF=306000 MemberID=53 - PDF=306000 MemberID=54 - PDF=306000 MemberID=55 - PDF=306000 MemberID=56 - PDF=306000 MemberID=57 - PDF=306000 MemberID=58 - PDF=306000 MemberID=59 - PDF=306000 MemberID=60 - PDF=306000 MemberID=61 - PDF=306000 MemberID=62 - PDF=306000 MemberID=63 - PDF=306000 MemberID=64 - PDF=306000 MemberID=65 - PDF=306000 MemberID=66 - PDF=306000 MemberID=67 - PDF=306000 MemberID=68 - PDF=306000 MemberID=69 - PDF=306000 MemberID=70 - PDF=306000 MemberID=71 - PDF=306000 MemberID=72 - PDF=306000 MemberID=73 - PDF=306000 MemberID=74 - PDF=306000 MemberID=75 - PDF=306000 MemberID=76 - PDF=306000 MemberID=77 - PDF=306000 MemberID=78 - PDF=306000 MemberID=79 - PDF=306000 MemberID=80 - PDF=306000 MemberID=81 - PDF=306000 MemberID=82 - PDF=306000 MemberID=83 - PDF=306000 MemberID=84 - PDF=306000 MemberID=85 - PDF=306000 MemberID=86 - PDF=306000 MemberID=87 - PDF=306000 MemberID=88 - PDF=306000 MemberID=89 - PDF=306000 MemberID=90 - PDF=306000 MemberID=91 - PDF=306000 MemberID=92 - PDF=306000 MemberID=93 - PDF=306000 MemberID=94 - PDF=306000 MemberID=95 - PDF=306000 MemberID=96 - PDF=306000 MemberID=97 - PDF=306000 MemberID=98 - PDF=306000 MemberID=99 - PDF=306000 MemberID=100 - PDF=306000 MemberID=101 - PDF=306000 MemberID=102 - # PDFSET -> PDF - PDF=322500 MemberID=0 - PDF=322700 MemberID=0 - PDF=322900 MemberID=0 - PDF=323100 MemberID=0 - PDF=323300 MemberID=0 - PDF=323500 MemberID=0 - PDF=323700 MemberID=0 - PDF=323900 MemberID=0 - # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 - PDF=305800 MemberID=0 - PDF=305800 MemberID=1 - PDF=305800 MemberID=2 - PDF=305800 MemberID=3 - PDF=305800 MemberID=4 - PDF=305800 MemberID=5 - PDF=305800 MemberID=6 - PDF=305800 MemberID=7 - PDF=305800 MemberID=8 - PDF=305800 MemberID=9 - PDF=305800 MemberID=10 - PDF=305800 MemberID=11 - PDF=305800 MemberID=12 - PDF=305800 MemberID=13 - PDF=305800 MemberID=14 - PDF=305800 MemberID=15 - PDF=305800 MemberID=16 - PDF=305800 MemberID=17 - PDF=305800 MemberID=18 - PDF=305800 MemberID=19 - PDF=305800 MemberID=20 - PDF=305800 MemberID=21 - PDF=305800 MemberID=22 - PDF=305800 MemberID=23 - PDF=305800 MemberID=24 - PDF=305800 MemberID=25 - PDF=305800 MemberID=26 - PDF=305800 MemberID=27 - PDF=305800 MemberID=28 - PDF=305800 MemberID=29 - PDF=305800 MemberID=30 - PDF=305800 MemberID=31 - PDF=305800 MemberID=32 - PDF=305800 MemberID=33 - PDF=305800 MemberID=34 - PDF=305800 MemberID=35 - PDF=305800 MemberID=36 - PDF=305800 MemberID=37 - PDF=305800 MemberID=38 - PDF=305800 MemberID=39 - PDF=305800 MemberID=40 - PDF=305800 MemberID=41 - PDF=305800 MemberID=42 - PDF=305800 MemberID=43 - PDF=305800 MemberID=44 - PDF=305800 MemberID=45 - PDF=305800 MemberID=46 - PDF=305800 MemberID=47 - PDF=305800 MemberID=48 - PDF=305800 MemberID=49 - PDF=305800 MemberID=50 - PDF=305800 MemberID=51 - PDF=305800 MemberID=52 - PDF=305800 MemberID=53 - PDF=305800 MemberID=54 - PDF=305800 MemberID=55 - PDF=305800 MemberID=56 - PDF=305800 MemberID=57 - PDF=305800 MemberID=58 - PDF=305800 MemberID=59 - PDF=305800 MemberID=60 - PDF=305800 MemberID=61 - PDF=305800 MemberID=62 - PDF=305800 MemberID=63 - PDF=305800 MemberID=64 - PDF=305800 MemberID=65 - PDF=305800 MemberID=66 - PDF=305800 MemberID=67 - PDF=305800 MemberID=68 - PDF=305800 MemberID=69 - PDF=305800 MemberID=70 - PDF=305800 MemberID=71 - PDF=305800 MemberID=72 - PDF=305800 MemberID=73 - PDF=305800 MemberID=74 - PDF=305800 MemberID=75 - PDF=305800 MemberID=76 - PDF=305800 MemberID=77 - PDF=305800 MemberID=78 - PDF=305800 MemberID=79 - PDF=305800 MemberID=80 - PDF=305800 MemberID=81 - PDF=305800 MemberID=82 - PDF=305800 MemberID=83 - PDF=305800 MemberID=84 - PDF=305800 MemberID=85 - PDF=305800 MemberID=86 - PDF=305800 MemberID=87 - PDF=305800 MemberID=88 - PDF=305800 MemberID=89 - PDF=305800 MemberID=90 - PDF=305800 MemberID=91 - PDF=305800 MemberID=92 - PDF=305800 MemberID=93 - PDF=305800 MemberID=94 - PDF=305800 MemberID=95 - PDF=305800 MemberID=96 - PDF=305800 MemberID=97 - PDF=305800 MemberID=98 - PDF=305800 MemberID=99 - PDF=305800 MemberID=100 - PDF=305800 MemberID=101 - PDF=305800 MemberID=102 - # PDFSET -> PDFSET - # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% - PDF=13000 MemberID=0 - PDF=13000 MemberID=1 - PDF=13000 MemberID=2 - PDF=13000 MemberID=3 - PDF=13000 MemberID=4 - PDF=13000 MemberID=5 - PDF=13000 MemberID=6 - PDF=13000 MemberID=7 - PDF=13000 MemberID=8 - PDF=13000 MemberID=9 - PDF=13000 MemberID=10 - PDF=13000 MemberID=11 - PDF=13000 MemberID=12 - PDF=13000 MemberID=13 - PDF=13000 MemberID=14 - PDF=13000 MemberID=15 - PDF=13000 MemberID=16 - PDF=13000 MemberID=17 - PDF=13000 MemberID=18 - PDF=13000 MemberID=19 - PDF=13000 MemberID=20 - PDF=13000 MemberID=21 - PDF=13000 MemberID=22 - PDF=13000 MemberID=23 - PDF=13000 MemberID=24 - PDF=13000 MemberID=25 - PDF=13000 MemberID=26 - PDF=13000 MemberID=27 - PDF=13000 MemberID=28 - PDF=13000 MemberID=29 - PDF=13000 MemberID=30 - PDF=13000 MemberID=31 - PDF=13000 MemberID=32 - PDF=13000 MemberID=33 - PDF=13000 MemberID=34 - PDF=13000 MemberID=35 - PDF=13000 MemberID=36 - PDF=13000 MemberID=37 - PDF=13000 MemberID=38 - PDF=13000 MemberID=39 - PDF=13000 MemberID=40 - PDF=13000 MemberID=41 - PDF=13000 MemberID=42 - PDF=13000 MemberID=43 - PDF=13000 MemberID=44 - PDF=13000 MemberID=45 - PDF=13000 MemberID=46 - PDF=13000 MemberID=47 - PDF=13000 MemberID=48 - PDF=13000 MemberID=49 - PDF=13000 MemberID=50 - PDF=13000 MemberID=51 - PDF=13000 MemberID=52 - PDF=13000 MemberID=53 - PDF=13000 MemberID=54 - PDF=13000 MemberID=55 - PDF=13000 MemberID=56 - # PDFSET -> PDF - PDF=13065 MemberID=0 - PDF=13069 MemberID=0 - # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% - PDF=13100 MemberID=0 - PDF=13100 MemberID=1 - PDF=13100 MemberID=2 - PDF=13100 MemberID=3 - PDF=13100 MemberID=4 - PDF=13100 MemberID=5 - PDF=13100 MemberID=6 - PDF=13100 MemberID=7 - PDF=13100 MemberID=8 - PDF=13100 MemberID=9 - PDF=13100 MemberID=10 - PDF=13100 MemberID=11 - PDF=13100 MemberID=12 - PDF=13100 MemberID=13 - PDF=13100 MemberID=14 - PDF=13100 MemberID=15 - PDF=13100 MemberID=16 - PDF=13100 MemberID=17 - PDF=13100 MemberID=18 - PDF=13100 MemberID=19 - PDF=13100 MemberID=20 - PDF=13100 MemberID=21 - PDF=13100 MemberID=22 - PDF=13100 MemberID=23 - PDF=13100 MemberID=24 - PDF=13100 MemberID=25 - PDF=13100 MemberID=26 - PDF=13100 MemberID=27 - PDF=13100 MemberID=28 - PDF=13100 MemberID=29 - PDF=13100 MemberID=30 - PDF=13100 MemberID=31 - PDF=13100 MemberID=32 - PDF=13100 MemberID=33 - PDF=13100 MemberID=34 - PDF=13100 MemberID=35 - PDF=13100 MemberID=36 - PDF=13100 MemberID=37 - PDF=13100 MemberID=38 - PDF=13100 MemberID=39 - PDF=13100 MemberID=40 - PDF=13100 MemberID=41 - PDF=13100 MemberID=42 - PDF=13100 MemberID=43 - PDF=13100 MemberID=44 - PDF=13100 MemberID=45 - PDF=13100 MemberID=46 - PDF=13100 MemberID=47 - PDF=13100 MemberID=48 - PDF=13100 MemberID=49 - PDF=13100 MemberID=50 - PDF=13100 MemberID=51 - PDF=13100 MemberID=52 - PDF=13100 MemberID=53 - PDF=13100 MemberID=54 - PDF=13100 MemberID=55 - PDF=13100 MemberID=56 - # PDFSET -> PDF - PDF=13163 MemberID=0 - PDF=13167 MemberID=0 - PDF=13200 MemberID=0 - # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht - PDF=25200 MemberID=0 - PDF=25200 MemberID=1 - PDF=25200 MemberID=2 - PDF=25200 MemberID=3 - PDF=25200 MemberID=4 - PDF=25200 MemberID=5 - PDF=25200 MemberID=6 - PDF=25200 MemberID=7 - PDF=25200 MemberID=8 - PDF=25200 MemberID=9 - PDF=25200 MemberID=10 - PDF=25200 MemberID=11 - PDF=25200 MemberID=12 - PDF=25200 MemberID=13 - PDF=25200 MemberID=14 - PDF=25200 MemberID=15 - PDF=25200 MemberID=16 - PDF=25200 MemberID=17 - PDF=25200 MemberID=18 - PDF=25200 MemberID=19 - PDF=25200 MemberID=20 - PDF=25200 MemberID=21 - PDF=25200 MemberID=22 - PDF=25200 MemberID=23 - PDF=25200 MemberID=24 - PDF=25200 MemberID=25 - PDF=25200 MemberID=26 - PDF=25200 MemberID=27 - PDF=25200 MemberID=28 - PDF=25200 MemberID=29 - PDF=25200 MemberID=30 - PDF=25200 MemberID=31 - PDF=25200 MemberID=32 - PDF=25200 MemberID=33 - PDF=25200 MemberID=34 - PDF=25200 MemberID=35 - PDF=25200 MemberID=36 - PDF=25200 MemberID=37 - PDF=25200 MemberID=38 - PDF=25200 MemberID=39 - PDF=25200 MemberID=40 - PDF=25200 MemberID=41 - PDF=25200 MemberID=42 - PDF=25200 MemberID=43 - PDF=25200 MemberID=44 - PDF=25200 MemberID=45 - PDF=25200 MemberID=46 - PDF=25200 MemberID=47 - PDF=25200 MemberID=48 - PDF=25200 MemberID=49 - PDF=25200 MemberID=50 - # PDFSET -> PDFSET - # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht - PDF=25300 MemberID=0 - PDF=25300 MemberID=1 - PDF=25300 MemberID=2 - PDF=25300 MemberID=3 - PDF=25300 MemberID=4 - PDF=25300 MemberID=5 - PDF=25300 MemberID=6 - PDF=25300 MemberID=7 - PDF=25300 MemberID=8 - PDF=25300 MemberID=9 - PDF=25300 MemberID=10 - PDF=25300 MemberID=11 - PDF=25300 MemberID=12 - PDF=25300 MemberID=13 - PDF=25300 MemberID=14 - PDF=25300 MemberID=15 - PDF=25300 MemberID=16 - PDF=25300 MemberID=17 - PDF=25300 MemberID=18 - PDF=25300 MemberID=19 - PDF=25300 MemberID=20 - PDF=25300 MemberID=21 - PDF=25300 MemberID=22 - PDF=25300 MemberID=23 - PDF=25300 MemberID=24 - PDF=25300 MemberID=25 - PDF=25300 MemberID=26 - PDF=25300 MemberID=27 - PDF=25300 MemberID=28 - PDF=25300 MemberID=29 - PDF=25300 MemberID=30 - PDF=25300 MemberID=31 - PDF=25300 MemberID=32 - PDF=25300 MemberID=33 - PDF=25300 MemberID=34 - PDF=25300 MemberID=35 - PDF=25300 MemberID=36 - PDF=25300 MemberID=37 - PDF=25300 MemberID=38 - PDF=25300 MemberID=39 - PDF=25300 MemberID=40 - PDF=25300 MemberID=41 - PDF=25300 MemberID=42 - PDF=25300 MemberID=43 - PDF=25300 MemberID=44 - PDF=25300 MemberID=45 - PDF=25300 MemberID=46 - PDF=25300 MemberID=47 - PDF=25300 MemberID=48 - PDF=25300 MemberID=49 - PDF=25300 MemberID=50 - # PDFSET -> PDF - PDF=25000 MemberID=0 - # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set - PDF=42780 MemberID=0 - PDF=42780 MemberID=1 - PDF=42780 MemberID=2 - PDF=42780 MemberID=3 - PDF=42780 MemberID=4 - PDF=42780 MemberID=5 - PDF=42780 MemberID=6 - PDF=42780 MemberID=7 - PDF=42780 MemberID=8 - PDF=42780 MemberID=9 - PDF=42780 MemberID=10 - PDF=42780 MemberID=11 - PDF=42780 MemberID=12 - PDF=42780 MemberID=13 - PDF=42780 MemberID=14 - PDF=42780 MemberID=15 - PDF=42780 MemberID=16 - PDF=42780 MemberID=17 - PDF=42780 MemberID=18 - PDF=42780 MemberID=19 - PDF=42780 MemberID=20 - PDF=42780 MemberID=21 - PDF=42780 MemberID=22 - PDF=42780 MemberID=23 - PDF=42780 MemberID=24 - PDF=42780 MemberID=25 - PDF=42780 MemberID=26 - PDF=42780 MemberID=27 - PDF=42780 MemberID=28 - PDF=42780 MemberID=29 - # PDFSET -> PDFSET - # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 - PDF=90200 MemberID=0 - PDF=90200 MemberID=1 - PDF=90200 MemberID=2 - PDF=90200 MemberID=3 - PDF=90200 MemberID=4 - PDF=90200 MemberID=5 - PDF=90200 MemberID=6 - PDF=90200 MemberID=7 - PDF=90200 MemberID=8 - PDF=90200 MemberID=9 - PDF=90200 MemberID=10 - PDF=90200 MemberID=11 - PDF=90200 MemberID=12 - PDF=90200 MemberID=13 - PDF=90200 MemberID=14 - PDF=90200 MemberID=15 - PDF=90200 MemberID=16 - PDF=90200 MemberID=17 - PDF=90200 MemberID=18 - PDF=90200 MemberID=19 - PDF=90200 MemberID=20 - PDF=90200 MemberID=21 - PDF=90200 MemberID=22 - PDF=90200 MemberID=23 - PDF=90200 MemberID=24 - PDF=90200 MemberID=25 - PDF=90200 MemberID=26 - PDF=90200 MemberID=27 - PDF=90200 MemberID=28 - PDF=90200 MemberID=29 - PDF=90200 MemberID=30 - PDF=90200 MemberID=31 - PDF=90200 MemberID=32 - PDF=90200 MemberID=33 - PDF=90200 MemberID=34 - PDF=90200 MemberID=35 - PDF=90200 MemberID=36 - PDF=90200 MemberID=37 - PDF=90200 MemberID=38 - PDF=90200 MemberID=39 - PDF=90200 MemberID=40 - PDF=90200 MemberID=41 - PDF=90200 MemberID=42 - PDF=90200 MemberID=43 - PDF=90200 MemberID=44 - PDF=90200 MemberID=45 - PDF=90200 MemberID=46 - PDF=90200 MemberID=47 - PDF=90200 MemberID=48 - PDF=90200 MemberID=49 - PDF=90200 MemberID=50 - PDF=90200 MemberID=51 - PDF=90200 MemberID=52 - PDF=90200 MemberID=53 - PDF=90200 MemberID=54 - PDF=90200 MemberID=55 - PDF=90200 MemberID=56 - PDF=90200 MemberID=57 - PDF=90200 MemberID=58 - PDF=90200 MemberID=59 - PDF=90200 MemberID=60 - PDF=90200 MemberID=61 - PDF=90200 MemberID=62 - PDF=90200 MemberID=63 - PDF=90200 MemberID=64 - PDF=90200 MemberID=65 - PDF=90200 MemberID=66 - PDF=90200 MemberID=67 - PDF=90200 MemberID=68 - PDF=90200 MemberID=69 - PDF=90200 MemberID=70 - PDF=90200 MemberID=71 - PDF=90200 MemberID=72 - PDF=90200 MemberID=73 - PDF=90200 MemberID=74 - PDF=90200 MemberID=75 - PDF=90200 MemberID=76 - PDF=90200 MemberID=77 - PDF=90200 MemberID=78 - PDF=90200 MemberID=79 - PDF=90200 MemberID=80 - PDF=90200 MemberID=81 - PDF=90200 MemberID=82 - PDF=90200 MemberID=83 - PDF=90200 MemberID=84 - PDF=90200 MemberID=85 - PDF=90200 MemberID=86 - PDF=90200 MemberID=87 - PDF=90200 MemberID=88 - PDF=90200 MemberID=89 - PDF=90200 MemberID=90 - PDF=90200 MemberID=91 - PDF=90200 MemberID=92 - PDF=90200 MemberID=93 - PDF=90200 MemberID=94 - PDF=90200 MemberID=95 - PDF=90200 MemberID=96 - PDF=90200 MemberID=97 - PDF=90200 MemberID=98 - PDF=90200 MemberID=99 - PDF=90200 MemberID=100 - PDF=90200 MemberID=101 - PDF=90200 MemberID=102 - # PDFSET -> PDFSET - # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 - PDF=91200 MemberID=0 - PDF=91200 MemberID=1 - PDF=91200 MemberID=2 - PDF=91200 MemberID=3 - PDF=91200 MemberID=4 - PDF=91200 MemberID=5 - PDF=91200 MemberID=6 - PDF=91200 MemberID=7 - PDF=91200 MemberID=8 - PDF=91200 MemberID=9 - PDF=91200 MemberID=10 - PDF=91200 MemberID=11 - PDF=91200 MemberID=12 - PDF=91200 MemberID=13 - PDF=91200 MemberID=14 - PDF=91200 MemberID=15 - PDF=91200 MemberID=16 - PDF=91200 MemberID=17 - PDF=91200 MemberID=18 - PDF=91200 MemberID=19 - PDF=91200 MemberID=20 - PDF=91200 MemberID=21 - PDF=91200 MemberID=22 - PDF=91200 MemberID=23 - PDF=91200 MemberID=24 - PDF=91200 MemberID=25 - PDF=91200 MemberID=26 - PDF=91200 MemberID=27 - PDF=91200 MemberID=28 - PDF=91200 MemberID=29 - PDF=91200 MemberID=30 - PDF=91200 MemberID=31 - PDF=91200 MemberID=32 - PDF=91200 MemberID=33 - PDF=91200 MemberID=34 - PDF=91200 MemberID=35 - PDF=91200 MemberID=36 - PDF=91200 MemberID=37 - PDF=91200 MemberID=38 - PDF=91200 MemberID=39 - PDF=91200 MemberID=40 - PDF=91200 MemberID=41 - PDF=91200 MemberID=42 - PDF=91200 MemberID=43 - PDF=91200 MemberID=44 - PDF=91200 MemberID=45 - PDF=91200 MemberID=46 - PDF=91200 MemberID=47 - PDF=91200 MemberID=48 - PDF=91200 MemberID=49 - PDF=91200 MemberID=50 - PDF=91200 MemberID=51 - PDF=91200 MemberID=52 - PDF=91200 MemberID=53 - PDF=91200 MemberID=54 - PDF=91200 MemberID=55 - PDF=91200 MemberID=56 - PDF=91200 MemberID=57 - PDF=91200 MemberID=58 - PDF=91200 MemberID=59 - PDF=91200 MemberID=60 - PDF=91200 MemberID=61 - PDF=91200 MemberID=62 - PDF=91200 MemberID=63 - PDF=91200 MemberID=64 - PDF=91200 MemberID=65 - PDF=91200 MemberID=66 - PDF=91200 MemberID=67 - PDF=91200 MemberID=68 - PDF=91200 MemberID=69 - PDF=91200 MemberID=70 - PDF=91200 MemberID=71 - PDF=91200 MemberID=72 - PDF=91200 MemberID=73 - PDF=91200 MemberID=74 - PDF=91200 MemberID=75 - PDF=91200 MemberID=76 - PDF=91200 MemberID=77 - PDF=91200 MemberID=78 - PDF=91200 MemberID=79 - PDF=91200 MemberID=80 - PDF=91200 MemberID=81 - PDF=91200 MemberID=82 - PDF=91200 MemberID=83 - PDF=91200 MemberID=84 - PDF=91200 MemberID=85 - PDF=91200 MemberID=86 - PDF=91200 MemberID=87 - PDF=91200 MemberID=88 - PDF=91200 MemberID=89 - PDF=91200 MemberID=90 - PDF=91200 MemberID=91 - PDF=91200 MemberID=92 - PDF=91200 MemberID=93 - PDF=91200 MemberID=94 - PDF=91200 MemberID=95 - PDF=91200 MemberID=96 - PDF=91200 MemberID=97 - PDF=91200 MemberID=98 - PDF=91200 MemberID=99 - PDF=91200 MemberID=100 - PDF=91200 MemberID=101 - PDF=91200 MemberID=102 - # PDFSET -> PDFSET - # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 - PDF=90400 MemberID=0 - PDF=90400 MemberID=1 - PDF=90400 MemberID=2 - PDF=90400 MemberID=3 - PDF=90400 MemberID=4 - PDF=90400 MemberID=5 - PDF=90400 MemberID=6 - PDF=90400 MemberID=7 - PDF=90400 MemberID=8 - PDF=90400 MemberID=9 - PDF=90400 MemberID=10 - PDF=90400 MemberID=11 - PDF=90400 MemberID=12 - PDF=90400 MemberID=13 - PDF=90400 MemberID=14 - PDF=90400 MemberID=15 - PDF=90400 MemberID=16 - PDF=90400 MemberID=17 - PDF=90400 MemberID=18 - PDF=90400 MemberID=19 - PDF=90400 MemberID=20 - PDF=90400 MemberID=21 - PDF=90400 MemberID=22 - PDF=90400 MemberID=23 - PDF=90400 MemberID=24 - PDF=90400 MemberID=25 - PDF=90400 MemberID=26 - PDF=90400 MemberID=27 - PDF=90400 MemberID=28 - PDF=90400 MemberID=29 - PDF=90400 MemberID=30 - PDF=90400 MemberID=31 - PDF=90400 MemberID=32 - # PDFSET -> PDFSET - # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 - PDF=91400 MemberID=0 - PDF=91400 MemberID=1 - PDF=91400 MemberID=2 - PDF=91400 MemberID=3 - PDF=91400 MemberID=4 - PDF=91400 MemberID=5 - PDF=91400 MemberID=6 - PDF=91400 MemberID=7 - PDF=91400 MemberID=8 - PDF=91400 MemberID=9 - PDF=91400 MemberID=10 - PDF=91400 MemberID=11 - PDF=91400 MemberID=12 - PDF=91400 MemberID=13 - PDF=91400 MemberID=14 - PDF=91400 MemberID=15 - PDF=91400 MemberID=16 - PDF=91400 MemberID=17 - PDF=91400 MemberID=18 - PDF=91400 MemberID=19 - PDF=91400 MemberID=20 - PDF=91400 MemberID=21 - PDF=91400 MemberID=22 - PDF=91400 MemberID=23 - PDF=91400 MemberID=24 - PDF=91400 MemberID=25 - PDF=91400 MemberID=26 - PDF=91400 MemberID=27 - PDF=91400 MemberID=28 - PDF=91400 MemberID=29 - PDF=91400 MemberID=30 - PDF=91400 MemberID=31 - PDF=91400 MemberID=32 - # PDFSET -> PDFSET - # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. - PDF=61100 MemberID=0 - PDF=61100 MemberID=1 - PDF=61100 MemberID=2 - PDF=61100 MemberID=3 - PDF=61100 MemberID=4 - PDF=61100 MemberID=5 - PDF=61100 MemberID=6 - PDF=61100 MemberID=7 - PDF=61100 MemberID=8 - PDF=61100 MemberID=9 - PDF=61100 MemberID=10 - PDF=61100 MemberID=11 - PDF=61100 MemberID=12 - PDF=61100 MemberID=13 - PDF=61100 MemberID=14 - PDF=61100 MemberID=15 - PDF=61100 MemberID=16 - PDF=61100 MemberID=17 - PDF=61100 MemberID=18 - PDF=61100 MemberID=19 - PDF=61100 MemberID=20 - PDF=61100 MemberID=21 - PDF=61100 MemberID=22 - PDF=61100 MemberID=23 - PDF=61100 MemberID=24 - PDF=61100 MemberID=25 - PDF=61100 MemberID=26 - PDF=61100 MemberID=27 - PDF=61100 MemberID=28 - # PDFSET -> PDFSET - # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); - PDF=61130 MemberID=0 - PDF=61130 MemberID=1 - PDF=61130 MemberID=2 - PDF=61130 MemberID=3 - PDF=61130 MemberID=4 - PDF=61130 MemberID=5 - PDF=61130 MemberID=6 - PDF=61130 MemberID=7 - PDF=61130 MemberID=8 - PDF=61130 MemberID=9 - PDF=61130 MemberID=10 - PDF=61130 MemberID=11 - PDF=61130 MemberID=12 - PDF=61130 MemberID=13 - # PDFSET -> PDFSET - # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. - PDF=61200 MemberID=0 - PDF=61200 MemberID=1 - PDF=61200 MemberID=2 - PDF=61200 MemberID=3 - PDF=61200 MemberID=4 - PDF=61200 MemberID=5 - PDF=61200 MemberID=6 - PDF=61200 MemberID=7 - PDF=61200 MemberID=8 - PDF=61200 MemberID=9 - PDF=61200 MemberID=10 - PDF=61200 MemberID=11 - PDF=61200 MemberID=12 - PDF=61200 MemberID=13 - PDF=61200 MemberID=14 - PDF=61200 MemberID=15 - PDF=61200 MemberID=16 - PDF=61200 MemberID=17 - PDF=61200 MemberID=18 - PDF=61200 MemberID=19 - PDF=61200 MemberID=20 - PDF=61200 MemberID=21 - PDF=61200 MemberID=22 - PDF=61200 MemberID=23 - PDF=61200 MemberID=24 - PDF=61200 MemberID=25 - PDF=61200 MemberID=26 - PDF=61200 MemberID=27 - PDF=61200 MemberID=28 - # PDFSET -> PDFSET - # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); - PDF=61230 MemberID=0 - PDF=61230 MemberID=1 - PDF=61230 MemberID=2 - PDF=61230 MemberID=3 - PDF=61230 MemberID=4 - PDF=61230 MemberID=5 - PDF=61230 MemberID=6 - PDF=61230 MemberID=7 - PDF=61230 MemberID=8 - PDF=61230 MemberID=9 - PDF=61230 MemberID=10 - PDF=61230 MemberID=11 - PDF=61230 MemberID=12 - PDF=61230 MemberID=13 - # PDFSET -> PDFSET - # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference - PDF=13400 MemberID=0 - PDF=13400 MemberID=1 - PDF=13400 MemberID=2 - PDF=13400 MemberID=3 - PDF=13400 MemberID=4 - PDF=13400 MemberID=5 - PDF=13400 MemberID=6 - PDF=13400 MemberID=7 - PDF=13400 MemberID=8 - PDF=13400 MemberID=9 - PDF=13400 MemberID=10 - PDF=13400 MemberID=11 - PDF=13400 MemberID=12 - PDF=13400 MemberID=13 - PDF=13400 MemberID=14 - PDF=13400 MemberID=15 - PDF=13400 MemberID=16 - PDF=13400 MemberID=17 - PDF=13400 MemberID=18 - PDF=13400 MemberID=19 - PDF=13400 MemberID=20 - PDF=13400 MemberID=21 - PDF=13400 MemberID=22 - PDF=13400 MemberID=23 - PDF=13400 MemberID=24 - PDF=13400 MemberID=25 - PDF=13400 MemberID=26 - PDF=13400 MemberID=27 - PDF=13400 MemberID=28 - PDF=13400 MemberID=29 - PDF=13400 MemberID=30 - # PDFSET -> PDFSET - # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. -PDF4LHC15_nnlo_100 description: - PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 - ; PDF symmetric eigenvectors -LUXqed description: - Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P - fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. - Photon generated at scale 100.0 GeV, other partons matched at scale - 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - - 0.00699 * x^{0.000} g(x) at scale 10.0 GeV -Members: - 0 is central - 1-100 map to original PDF members - 101 replacement of CLAS resonance fit with Christy-Bosted fit - 102 rescale-R-0.5 - 103 rescale R in high-Q^2 region with a higher-twist component - 104 use the A1 elastic fit result without the two-photon exchange corrections - 105 use the lower edge of the elastic fit error band - 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 - 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) -Versioning info: - DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) -LUXqed version history for this PDF: - This version corresponds to the long LUXqed17 paper. - PDF=82200 MemberID=0 - PDF=82200 MemberID=1 - PDF=82200 MemberID=2 - PDF=82200 MemberID=3 - PDF=82200 MemberID=4 - PDF=82200 MemberID=5 - PDF=82200 MemberID=6 - PDF=82200 MemberID=7 - PDF=82200 MemberID=8 - PDF=82200 MemberID=9 - PDF=82200 MemberID=10 - PDF=82200 MemberID=11 - PDF=82200 MemberID=12 - PDF=82200 MemberID=13 - PDF=82200 MemberID=14 - PDF=82200 MemberID=15 - PDF=82200 MemberID=16 - PDF=82200 MemberID=17 - PDF=82200 MemberID=18 - PDF=82200 MemberID=19 - PDF=82200 MemberID=20 - PDF=82200 MemberID=21 - PDF=82200 MemberID=22 - PDF=82200 MemberID=23 - PDF=82200 MemberID=24 - PDF=82200 MemberID=25 - PDF=82200 MemberID=26 - PDF=82200 MemberID=27 - PDF=82200 MemberID=28 - PDF=82200 MemberID=29 - PDF=82200 MemberID=30 - PDF=82200 MemberID=31 - PDF=82200 MemberID=32 - PDF=82200 MemberID=33 - PDF=82200 MemberID=34 - PDF=82200 MemberID=35 - PDF=82200 MemberID=36 - PDF=82200 MemberID=37 - PDF=82200 MemberID=38 - PDF=82200 MemberID=39 - PDF=82200 MemberID=40 - PDF=82200 MemberID=41 - PDF=82200 MemberID=42 - PDF=82200 MemberID=43 - PDF=82200 MemberID=44 - PDF=82200 MemberID=45 - PDF=82200 MemberID=46 - PDF=82200 MemberID=47 - PDF=82200 MemberID=48 - PDF=82200 MemberID=49 - PDF=82200 MemberID=50 - PDF=82200 MemberID=51 - PDF=82200 MemberID=52 - PDF=82200 MemberID=53 - PDF=82200 MemberID=54 - PDF=82200 MemberID=55 - PDF=82200 MemberID=56 - PDF=82200 MemberID=57 - PDF=82200 MemberID=58 - PDF=82200 MemberID=59 - PDF=82200 MemberID=60 - PDF=82200 MemberID=61 - PDF=82200 MemberID=62 - PDF=82200 MemberID=63 - PDF=82200 MemberID=64 - PDF=82200 MemberID=65 - PDF=82200 MemberID=66 - PDF=82200 MemberID=67 - PDF=82200 MemberID=68 - PDF=82200 MemberID=69 - PDF=82200 MemberID=70 - PDF=82200 MemberID=71 - PDF=82200 MemberID=72 - PDF=82200 MemberID=73 - PDF=82200 MemberID=74 - PDF=82200 MemberID=75 - PDF=82200 MemberID=76 - PDF=82200 MemberID=77 - PDF=82200 MemberID=78 - PDF=82200 MemberID=79 - PDF=82200 MemberID=80 - PDF=82200 MemberID=81 - PDF=82200 MemberID=82 - PDF=82200 MemberID=83 - PDF=82200 MemberID=84 - PDF=82200 MemberID=85 - PDF=82200 MemberID=86 - PDF=82200 MemberID=87 - PDF=82200 MemberID=88 - PDF=82200 MemberID=89 - PDF=82200 MemberID=90 - PDF=82200 MemberID=91 - PDF=82200 MemberID=92 - PDF=82200 MemberID=93 - PDF=82200 MemberID=94 - PDF=82200 MemberID=95 - PDF=82200 MemberID=96 - PDF=82200 MemberID=97 - PDF=82200 MemberID=98 - PDF=82200 MemberID=99 - PDF=82200 MemberID=100 - PDF=82200 MemberID=101 - PDF=82200 MemberID=102 - PDF=82200 MemberID=103 - PDF=82200 MemberID=104 - PDF=82200 MemberID=105 - PDF=82200 MemberID=106 - PDF=82200 MemberID=107 - # PDFSET -> PDFSET - # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 - PDF=292200 MemberID=0 - PDF=292200 MemberID=1 - PDF=292200 MemberID=2 - PDF=292200 MemberID=3 - PDF=292200 MemberID=4 - PDF=292200 MemberID=5 - PDF=292200 MemberID=6 - PDF=292200 MemberID=7 - PDF=292200 MemberID=8 - PDF=292200 MemberID=9 - PDF=292200 MemberID=10 - PDF=292200 MemberID=11 - PDF=292200 MemberID=12 - PDF=292200 MemberID=13 - PDF=292200 MemberID=14 - PDF=292200 MemberID=15 - PDF=292200 MemberID=16 - PDF=292200 MemberID=17 - PDF=292200 MemberID=18 - PDF=292200 MemberID=19 - PDF=292200 MemberID=20 - PDF=292200 MemberID=21 - PDF=292200 MemberID=22 - PDF=292200 MemberID=23 - PDF=292200 MemberID=24 - PDF=292200 MemberID=25 - PDF=292200 MemberID=26 - PDF=292200 MemberID=27 - PDF=292200 MemberID=28 - PDF=292200 MemberID=29 - PDF=292200 MemberID=30 - PDF=292200 MemberID=31 - PDF=292200 MemberID=32 - PDF=292200 MemberID=33 - PDF=292200 MemberID=34 - PDF=292200 MemberID=35 - PDF=292200 MemberID=36 - PDF=292200 MemberID=37 - PDF=292200 MemberID=38 - PDF=292200 MemberID=39 - PDF=292200 MemberID=40 - PDF=292200 MemberID=41 - PDF=292200 MemberID=42 - PDF=292200 MemberID=43 - PDF=292200 MemberID=44 - PDF=292200 MemberID=45 - PDF=292200 MemberID=46 - PDF=292200 MemberID=47 - PDF=292200 MemberID=48 - PDF=292200 MemberID=49 - PDF=292200 MemberID=50 - PDF=292200 MemberID=51 - PDF=292200 MemberID=52 - PDF=292200 MemberID=53 - PDF=292200 MemberID=54 - PDF=292200 MemberID=55 - PDF=292200 MemberID=56 - PDF=292200 MemberID=57 - PDF=292200 MemberID=58 - PDF=292200 MemberID=59 - PDF=292200 MemberID=60 - PDF=292200 MemberID=61 - PDF=292200 MemberID=62 - PDF=292200 MemberID=63 - PDF=292200 MemberID=64 - PDF=292200 MemberID=65 - PDF=292200 MemberID=66 - PDF=292200 MemberID=67 - PDF=292200 MemberID=68 - PDF=292200 MemberID=69 - PDF=292200 MemberID=70 - PDF=292200 MemberID=71 - PDF=292200 MemberID=72 - PDF=292200 MemberID=73 - PDF=292200 MemberID=74 - PDF=292200 MemberID=75 - PDF=292200 MemberID=76 - PDF=292200 MemberID=77 - PDF=292200 MemberID=78 - PDF=292200 MemberID=79 - PDF=292200 MemberID=80 - PDF=292200 MemberID=81 - PDF=292200 MemberID=82 - PDF=292200 MemberID=83 - PDF=292200 MemberID=84 - PDF=292200 MemberID=85 - PDF=292200 MemberID=86 - PDF=292200 MemberID=87 - PDF=292200 MemberID=88 - PDF=292200 MemberID=89 - PDF=292200 MemberID=90 - PDF=292200 MemberID=91 - PDF=292200 MemberID=92 - PDF=292200 MemberID=93 - PDF=292200 MemberID=94 - PDF=292200 MemberID=95 - PDF=292200 MemberID=96 - PDF=292200 MemberID=97 - PDF=292200 MemberID=98 - PDF=292200 MemberID=99 - PDF=292200 MemberID=100 - PDF=292200 MemberID=101 - PDF=292200 MemberID=102 - # PDFSET -> PDF - PDF=292600 MemberID=0 - PDF=315000 MemberID=0 - PDF=315200 MemberID=0 - PDF=262000 MemberID=0 - PDF=263000 MemberID=0 diff --git a/testFiles/WJ_MiNNLO_weightinfo.txt b/testFiles/WJ_MiNNLO_weightinfo.txt deleted file mode 100644 index 773c0d3c15e91..0000000000000 --- a/testFiles/WJ_MiNNLO_weightinfo.txt +++ /dev/null @@ -1,1612 +0,0 @@ - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W9-denom.top - - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W9-denom.top - - - lhapdf=306000 - lhapdf=306001 - lhapdf=306002 - lhapdf=306003 - lhapdf=306004 - lhapdf=306005 - lhapdf=306006 - lhapdf=306007 - lhapdf=306008 - lhapdf=306009 - lhapdf=306010 - lhapdf=306011 - lhapdf=306012 - lhapdf=306013 - lhapdf=306014 - lhapdf=306015 - lhapdf=306016 - lhapdf=306017 - lhapdf=306018 - lhapdf=306019 - lhapdf=306020 - lhapdf=306021 - lhapdf=306022 - lhapdf=306023 - lhapdf=306024 - lhapdf=306025 - lhapdf=306026 - lhapdf=306027 - lhapdf=306028 - lhapdf=306029 - lhapdf=306030 - lhapdf=306031 - lhapdf=306032 - lhapdf=306033 - lhapdf=306034 - lhapdf=306035 - lhapdf=306036 - lhapdf=306037 - lhapdf=306038 - lhapdf=306039 - lhapdf=306040 - lhapdf=306041 - lhapdf=306042 - lhapdf=306043 - lhapdf=306044 - lhapdf=306045 - lhapdf=306046 - lhapdf=306047 - lhapdf=306048 - lhapdf=306049 - lhapdf=306050 - lhapdf=306051 - lhapdf=306052 - lhapdf=306053 - lhapdf=306054 - lhapdf=306055 - lhapdf=306056 - lhapdf=306057 - lhapdf=306058 - lhapdf=306059 - lhapdf=306060 - lhapdf=306061 - lhapdf=306062 - lhapdf=306063 - lhapdf=306064 - lhapdf=306065 - lhapdf=306066 - lhapdf=306067 - lhapdf=306068 - lhapdf=306069 - lhapdf=306070 - lhapdf=306071 - lhapdf=306072 - lhapdf=306073 - lhapdf=306074 - lhapdf=306075 - lhapdf=306076 - lhapdf=306077 - lhapdf=306078 - lhapdf=306079 - lhapdf=306080 - lhapdf=306081 - lhapdf=306082 - lhapdf=306083 - lhapdf=306084 - lhapdf=306085 - lhapdf=306086 - lhapdf=306087 - lhapdf=306088 - lhapdf=306089 - lhapdf=306090 - lhapdf=306091 - lhapdf=306092 - lhapdf=306093 - lhapdf=306094 - lhapdf=306095 - lhapdf=306096 - lhapdf=306097 - lhapdf=306098 - lhapdf=306099 - lhapdf=306100 - lhapdf=306101 - lhapdf=306102 - lhapdf=322500 - lhapdf=322700 - lhapdf=322900 - lhapdf=323100 - lhapdf=323300 - lhapdf=323500 - lhapdf=323700 - lhapdf=323900 - lhapdf=325700 - lhapdf=325701 - lhapdf=325702 - lhapdf=325703 - lhapdf=325704 - lhapdf=325705 - lhapdf=325706 - lhapdf=325707 - lhapdf=325708 - lhapdf=325709 - lhapdf=325710 - lhapdf=325711 - lhapdf=325712 - lhapdf=325713 - lhapdf=325714 - lhapdf=325715 - lhapdf=325716 - lhapdf=325717 - lhapdf=325718 - lhapdf=325719 - lhapdf=325720 - lhapdf=325721 - lhapdf=325722 - lhapdf=325723 - lhapdf=325724 - lhapdf=325725 - lhapdf=325726 - lhapdf=325727 - lhapdf=325728 - lhapdf=325729 - lhapdf=325730 - lhapdf=325731 - lhapdf=325732 - lhapdf=325733 - lhapdf=325734 - lhapdf=325735 - lhapdf=325736 - lhapdf=325737 - lhapdf=325738 - lhapdf=325739 - lhapdf=325740 - lhapdf=325741 - lhapdf=325742 - lhapdf=325743 - lhapdf=325744 - lhapdf=325745 - lhapdf=325746 - lhapdf=325747 - lhapdf=325748 - lhapdf=325749 - lhapdf=325750 - lhapdf=325751 - lhapdf=325752 - lhapdf=325753 - lhapdf=325754 - lhapdf=325755 - lhapdf=325756 - lhapdf=325757 - lhapdf=325758 - lhapdf=325759 - lhapdf=325760 - lhapdf=325761 - lhapdf=325762 - lhapdf=325763 - lhapdf=325764 - lhapdf=325765 - lhapdf=325766 - lhapdf=325767 - lhapdf=325768 - lhapdf=325769 - lhapdf=325770 - lhapdf=325771 - lhapdf=325772 - lhapdf=325773 - lhapdf=325774 - lhapdf=325775 - lhapdf=325776 - lhapdf=325777 - lhapdf=325778 - lhapdf=325779 - lhapdf=325780 - lhapdf=325781 - lhapdf=325782 - lhapdf=325783 - lhapdf=325784 - lhapdf=325785 - lhapdf=325786 - lhapdf=325787 - lhapdf=325788 - lhapdf=325789 - lhapdf=325790 - lhapdf=325791 - lhapdf=325792 - lhapdf=325793 - lhapdf=325794 - lhapdf=325795 - lhapdf=325796 - lhapdf=325797 - lhapdf=325798 - lhapdf=325799 - lhapdf=325800 - lhapdf=325900 - lhapdf=325901 - lhapdf=325902 - lhapdf=325903 - lhapdf=325904 - lhapdf=325905 - lhapdf=325906 - lhapdf=325907 - lhapdf=325908 - lhapdf=325909 - lhapdf=325910 - lhapdf=325911 - lhapdf=325912 - lhapdf=325913 - lhapdf=325914 - lhapdf=325915 - lhapdf=325916 - lhapdf=325917 - lhapdf=325918 - lhapdf=325919 - lhapdf=325920 - lhapdf=325921 - lhapdf=325922 - lhapdf=325923 - lhapdf=325924 - lhapdf=325925 - lhapdf=325926 - lhapdf=325927 - lhapdf=325928 - lhapdf=325929 - lhapdf=325930 - lhapdf=325931 - lhapdf=325932 - lhapdf=325933 - lhapdf=325934 - lhapdf=325935 - lhapdf=325936 - lhapdf=325937 - lhapdf=325938 - lhapdf=325939 - lhapdf=325940 - lhapdf=325941 - lhapdf=325942 - lhapdf=325943 - lhapdf=325944 - lhapdf=325945 - lhapdf=325946 - lhapdf=325947 - lhapdf=325948 - lhapdf=325949 - lhapdf=325950 - lhapdf=325951 - lhapdf=325952 - lhapdf=325953 - lhapdf=325954 - lhapdf=325955 - lhapdf=325956 - lhapdf=325957 - lhapdf=325958 - lhapdf=325959 - lhapdf=325960 - lhapdf=325961 - lhapdf=325962 - lhapdf=325963 - lhapdf=325964 - lhapdf=325965 - lhapdf=325966 - lhapdf=325967 - lhapdf=325968 - lhapdf=325969 - lhapdf=325970 - lhapdf=325971 - lhapdf=325972 - lhapdf=325973 - lhapdf=325974 - lhapdf=325975 - lhapdf=325976 - lhapdf=325977 - lhapdf=325978 - lhapdf=325979 - lhapdf=325980 - lhapdf=325981 - lhapdf=325982 - lhapdf=325983 - lhapdf=325984 - lhapdf=325985 - lhapdf=325986 - lhapdf=325987 - lhapdf=325988 - lhapdf=325989 - lhapdf=325990 - lhapdf=325991 - lhapdf=325992 - lhapdf=325993 - lhapdf=325994 - lhapdf=325995 - lhapdf=325996 - lhapdf=325997 - lhapdf=325998 - lhapdf=325999 - lhapdf=326000 - lhapdf=326100 - lhapdf=326101 - lhapdf=326102 - lhapdf=326103 - lhapdf=326104 - lhapdf=326105 - lhapdf=326106 - lhapdf=326107 - lhapdf=326108 - lhapdf=326109 - lhapdf=326110 - lhapdf=326111 - lhapdf=326112 - lhapdf=326113 - lhapdf=326114 - lhapdf=326115 - lhapdf=326116 - lhapdf=326117 - lhapdf=326118 - lhapdf=326119 - lhapdf=326120 - lhapdf=326121 - lhapdf=326122 - lhapdf=326123 - lhapdf=326124 - lhapdf=326125 - lhapdf=326126 - lhapdf=326127 - lhapdf=326128 - lhapdf=326129 - lhapdf=326130 - lhapdf=326131 - lhapdf=326132 - lhapdf=326133 - lhapdf=326134 - lhapdf=326135 - lhapdf=326136 - lhapdf=326137 - lhapdf=326138 - lhapdf=326139 - lhapdf=326140 - lhapdf=326141 - lhapdf=326142 - lhapdf=326143 - lhapdf=326144 - lhapdf=326145 - lhapdf=326146 - lhapdf=326147 - lhapdf=326148 - lhapdf=326149 - lhapdf=326150 - lhapdf=326151 - lhapdf=326152 - lhapdf=326153 - lhapdf=326154 - lhapdf=326155 - lhapdf=326156 - lhapdf=326157 - lhapdf=326158 - lhapdf=326159 - lhapdf=326160 - lhapdf=326161 - lhapdf=326162 - lhapdf=326163 - lhapdf=326164 - lhapdf=326165 - lhapdf=326166 - lhapdf=326167 - lhapdf=326168 - lhapdf=326169 - lhapdf=326170 - lhapdf=326171 - lhapdf=326172 - lhapdf=326173 - lhapdf=326174 - lhapdf=326175 - lhapdf=326176 - lhapdf=326177 - lhapdf=326178 - lhapdf=326179 - lhapdf=326180 - lhapdf=326181 - lhapdf=326182 - lhapdf=326183 - lhapdf=326184 - lhapdf=326185 - lhapdf=326186 - lhapdf=326187 - lhapdf=326188 - lhapdf=326189 - lhapdf=326190 - lhapdf=326191 - lhapdf=326192 - lhapdf=326193 - lhapdf=326194 - lhapdf=326195 - lhapdf=326196 - lhapdf=326197 - lhapdf=326198 - lhapdf=326199 - lhapdf=326200 - lhapdf=326300 - lhapdf=326301 - lhapdf=326302 - lhapdf=326303 - lhapdf=326304 - lhapdf=326305 - lhapdf=326306 - lhapdf=326307 - lhapdf=326308 - lhapdf=326309 - lhapdf=326310 - lhapdf=326311 - lhapdf=326312 - lhapdf=326313 - lhapdf=326314 - lhapdf=326315 - lhapdf=326316 - lhapdf=326317 - lhapdf=326318 - lhapdf=326319 - lhapdf=326320 - lhapdf=326321 - lhapdf=326322 - lhapdf=326323 - lhapdf=326324 - lhapdf=326325 - lhapdf=326326 - lhapdf=326327 - lhapdf=326328 - lhapdf=326329 - lhapdf=326330 - lhapdf=326331 - lhapdf=326332 - lhapdf=326333 - lhapdf=326334 - lhapdf=326335 - lhapdf=326336 - lhapdf=326337 - lhapdf=326338 - lhapdf=326339 - lhapdf=326340 - lhapdf=326341 - lhapdf=326342 - lhapdf=326343 - lhapdf=326344 - lhapdf=326345 - lhapdf=326346 - lhapdf=326347 - lhapdf=326348 - lhapdf=326349 - lhapdf=326350 - lhapdf=326351 - lhapdf=326352 - lhapdf=326353 - lhapdf=326354 - lhapdf=326355 - lhapdf=326356 - lhapdf=326357 - lhapdf=326358 - lhapdf=326359 - lhapdf=326360 - lhapdf=326361 - lhapdf=326362 - lhapdf=326363 - lhapdf=326364 - lhapdf=326365 - lhapdf=326366 - lhapdf=326367 - lhapdf=326368 - lhapdf=326369 - lhapdf=326370 - lhapdf=326371 - lhapdf=326372 - lhapdf=326373 - lhapdf=326374 - lhapdf=326375 - lhapdf=326376 - lhapdf=326377 - lhapdf=326378 - lhapdf=326379 - lhapdf=326380 - lhapdf=326381 - lhapdf=326382 - lhapdf=326383 - lhapdf=326384 - lhapdf=326385 - lhapdf=326386 - lhapdf=326387 - lhapdf=326388 - lhapdf=326389 - lhapdf=326390 - lhapdf=326391 - lhapdf=326392 - lhapdf=326393 - lhapdf=326394 - lhapdf=326395 - lhapdf=326396 - lhapdf=326397 - lhapdf=326398 - lhapdf=326399 - lhapdf=326400 - lhapdf=13000 - lhapdf=13001 - lhapdf=13002 - lhapdf=13003 - lhapdf=13004 - lhapdf=13005 - lhapdf=13006 - lhapdf=13007 - lhapdf=13008 - lhapdf=13009 - lhapdf=13010 - lhapdf=13011 - lhapdf=13012 - lhapdf=13013 - lhapdf=13014 - lhapdf=13015 - lhapdf=13016 - lhapdf=13017 - lhapdf=13018 - lhapdf=13019 - lhapdf=13020 - lhapdf=13021 - lhapdf=13022 - lhapdf=13023 - lhapdf=13024 - lhapdf=13025 - lhapdf=13026 - lhapdf=13027 - lhapdf=13028 - lhapdf=13029 - lhapdf=13030 - lhapdf=13031 - lhapdf=13032 - lhapdf=13033 - lhapdf=13034 - lhapdf=13035 - lhapdf=13036 - lhapdf=13037 - lhapdf=13038 - lhapdf=13039 - lhapdf=13040 - lhapdf=13041 - lhapdf=13042 - lhapdf=13043 - lhapdf=13044 - lhapdf=13045 - lhapdf=13046 - lhapdf=13047 - lhapdf=13048 - lhapdf=13049 - lhapdf=13050 - lhapdf=13051 - lhapdf=13052 - lhapdf=13053 - lhapdf=13054 - lhapdf=13055 - lhapdf=13056 - lhapdf=13065 - lhapdf=13069 - lhapdf=25300 - lhapdf=25301 - lhapdf=25302 - lhapdf=25303 - lhapdf=25304 - lhapdf=25305 - lhapdf=25306 - lhapdf=25307 - lhapdf=25308 - lhapdf=25309 - lhapdf=25310 - lhapdf=25311 - lhapdf=25312 - lhapdf=25313 - lhapdf=25314 - lhapdf=25315 - lhapdf=25316 - lhapdf=25317 - lhapdf=25318 - lhapdf=25319 - lhapdf=25320 - lhapdf=25321 - lhapdf=25322 - lhapdf=25323 - lhapdf=25324 - lhapdf=25325 - lhapdf=25326 - lhapdf=25327 - lhapdf=25328 - lhapdf=25329 - lhapdf=25330 - lhapdf=25331 - lhapdf=25332 - lhapdf=25333 - lhapdf=25334 - lhapdf=25335 - lhapdf=25336 - lhapdf=25337 - lhapdf=25338 - lhapdf=25339 - lhapdf=25340 - lhapdf=25341 - lhapdf=25342 - lhapdf=25343 - lhapdf=25344 - lhapdf=25345 - lhapdf=25346 - lhapdf=25347 - lhapdf=25348 - lhapdf=25349 - lhapdf=25350 - lhapdf=25360 - lhapdf=25361 - lhapdf=25362 - lhapdf=42560 - lhapdf=42561 - lhapdf=42562 - lhapdf=42563 - lhapdf=42564 - lhapdf=42565 - lhapdf=42566 - lhapdf=42567 - lhapdf=42568 - lhapdf=42569 - lhapdf=42570 - lhapdf=42571 - lhapdf=42572 - lhapdf=42573 - lhapdf=42574 - lhapdf=42575 - lhapdf=42576 - lhapdf=42577 - lhapdf=42578 - lhapdf=42579 - lhapdf=42580 - lhapdf=42581 - lhapdf=42582 - lhapdf=42583 - lhapdf=42584 - lhapdf=42585 - lhapdf=42586 - lhapdf=42587 - lhapdf=42588 - lhapdf=42589 - lhapdf=61200 - lhapdf=61201 - lhapdf=61202 - lhapdf=61203 - lhapdf=61204 - lhapdf=61205 - lhapdf=61206 - lhapdf=61207 - lhapdf=61208 - lhapdf=61209 - lhapdf=61210 - lhapdf=61211 - lhapdf=61212 - lhapdf=61213 - lhapdf=61214 - lhapdf=61215 - lhapdf=61216 - lhapdf=61217 - lhapdf=61218 - lhapdf=61219 - lhapdf=61220 - lhapdf=61221 - lhapdf=61222 - lhapdf=61223 - lhapdf=61224 - lhapdf=61225 - lhapdf=61226 - lhapdf=61227 - lhapdf=61228 - lhapdf=61230 - lhapdf=61231 - lhapdf=61232 - lhapdf=61233 - lhapdf=61234 - lhapdf=61235 - lhapdf=61236 - lhapdf=61237 - lhapdf=61238 - lhapdf=61239 - lhapdf=61240 - lhapdf=61241 - lhapdf=61242 - lhapdf=61243 - lhapdf=61740 - lhapdf=61741 - lhapdf=61742 - lhapdf=61743 - lhapdf=61744 - lhapdf=61745 - lhapdf=61746 - lhapdf=61747 - lhapdf=61748 - lhapdf=61749 - lhapdf=61750 - lhapdf=61751 - lhapdf=61752 - lhapdf=61753 - lhapdf=61754 - lhapdf=61755 - lhapdf=61756 - lhapdf=61757 - lhapdf=61758 - lhapdf=61759 - lhapdf=61760 - lhapdf=306000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306057 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306058 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306059 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306060 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306061 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306062 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306063 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306064 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306066 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306067 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306068 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306070 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306071 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306072 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306073 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306074 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306075 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306076 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306077 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306078 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306079 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306080 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306081 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306082 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306083 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306084 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306085 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306086 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306087 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306088 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306089 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306090 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306091 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306092 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306093 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306094 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306095 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306096 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306097 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306098 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306099 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=322500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=322700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=322900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325701 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325702 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325703 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325704 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325705 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325706 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325707 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325708 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325709 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325710 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325711 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325712 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325713 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325714 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325715 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325716 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325717 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325718 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325719 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325720 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325721 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325722 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325723 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325724 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325725 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325726 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325727 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325728 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325729 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325730 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325731 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325732 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325733 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325734 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325735 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325736 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325737 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325738 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325739 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325761 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325762 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325763 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325764 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325765 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325766 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325767 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325768 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325769 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325770 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325771 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325772 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325773 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325774 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325775 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325776 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325777 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325778 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325779 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325780 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325781 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325782 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325783 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325784 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325785 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325786 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325787 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325788 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325789 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325790 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325791 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325792 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325793 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325794 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325795 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325796 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325797 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325798 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325799 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325800 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325901 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325902 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325903 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325904 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325905 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325906 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325907 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325908 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325909 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325910 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325911 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325912 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325913 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325914 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325915 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325916 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325917 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325918 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325919 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325920 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325921 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325922 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325923 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325924 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325925 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325926 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325927 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325928 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325929 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325930 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325931 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325932 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325933 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325934 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325935 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325936 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325937 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325938 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325939 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325940 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325941 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325942 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325943 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325944 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325945 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325946 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325947 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325948 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325949 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325950 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325951 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325952 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325953 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325954 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325955 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325956 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325957 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325958 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325959 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325960 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325961 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325962 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325963 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325964 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325965 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325966 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325967 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325968 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325969 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325970 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325971 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325972 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325973 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325974 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325975 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325976 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325977 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325978 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325979 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325980 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325981 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325982 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325983 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325984 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325985 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325986 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325987 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325988 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325989 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325990 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325991 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325992 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325993 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325994 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325995 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325996 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325997 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325998 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325999 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326103 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326104 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326105 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326106 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326107 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326108 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326109 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326110 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326111 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326112 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326113 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326114 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326115 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326116 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326117 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326118 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326119 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326120 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326121 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326122 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326123 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326124 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326125 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326126 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326127 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326128 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326129 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326130 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326131 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326132 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326133 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326134 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326135 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326136 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326137 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326138 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326139 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326140 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326141 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326142 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326143 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326144 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326145 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326146 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326147 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326148 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326149 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326150 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326151 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326152 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326153 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326154 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326155 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326156 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326157 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326158 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326159 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326160 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326161 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326162 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326163 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326164 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326165 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326166 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326167 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326168 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326169 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326170 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326171 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326172 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326173 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326174 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326175 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326176 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326177 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326178 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326179 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326180 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326181 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326182 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326183 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326184 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326185 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326186 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326187 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326188 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326189 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326190 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326191 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326192 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326193 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326194 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326195 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326196 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326197 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326198 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326199 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326351 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326352 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326353 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326354 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326355 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326356 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326357 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326358 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326359 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326363 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326364 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326365 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326366 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326367 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326368 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326369 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326370 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326371 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326372 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326373 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326374 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326375 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326376 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326377 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326378 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326379 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326380 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326381 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326382 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326383 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326384 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326385 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326386 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326387 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326388 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326389 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326390 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326391 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326392 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326393 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326394 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326395 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326396 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326397 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326398 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326399 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326400 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42560 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42561 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42562 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42563 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42564 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42565 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42566 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42567 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42568 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42569 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42570 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42571 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42572 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42573 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42574 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42575 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42576 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42577 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42578 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42579 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42580 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42581 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42582 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42583 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42584 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42585 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42586 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42587 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42588 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42589 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61201 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61202 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61203 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61204 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61205 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61206 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61207 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61208 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61209 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61210 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61211 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61212 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61213 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61214 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61215 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61216 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61217 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61218 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61219 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61220 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61221 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61222 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61223 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61224 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61225 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61226 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61227 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61228 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61230 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61231 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61232 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61233 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61234 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61235 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61236 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61237 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61238 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61239 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61240 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61241 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61242 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61243 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - diff --git a/testFiles/WJ_NNLOPS_weightinfo.txt b/testFiles/WJ_NNLOPS_weightinfo.txt deleted file mode 100644 index 773c0d3c15e91..0000000000000 --- a/testFiles/WJ_NNLOPS_weightinfo.txt +++ /dev/null @@ -1,1612 +0,0 @@ - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf1_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf1_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf1_3D.top MINLO-W9-denom.top - - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf2_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf2_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf2_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur1_muf0.5_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf1_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf1_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf1_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf2_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf2_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf2_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur2_muf0.5_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf1_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf2_3D.top MINLO-W9-denom.top - lhapdf=306000 renscfact=1d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W1-denom.top - lhapdf=306000 renscfact=1d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W2-denom.top - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W3-denom.top - lhapdf=306000 renscfact=2d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W4-denom.top - lhapdf=306000 renscfact=2d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W5-denom.top - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W6-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W7-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W8-denom.top - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 DYNNLO_mur0.5_muf0.5_3D.top MINLO-W9-denom.top - - - lhapdf=306000 - lhapdf=306001 - lhapdf=306002 - lhapdf=306003 - lhapdf=306004 - lhapdf=306005 - lhapdf=306006 - lhapdf=306007 - lhapdf=306008 - lhapdf=306009 - lhapdf=306010 - lhapdf=306011 - lhapdf=306012 - lhapdf=306013 - lhapdf=306014 - lhapdf=306015 - lhapdf=306016 - lhapdf=306017 - lhapdf=306018 - lhapdf=306019 - lhapdf=306020 - lhapdf=306021 - lhapdf=306022 - lhapdf=306023 - lhapdf=306024 - lhapdf=306025 - lhapdf=306026 - lhapdf=306027 - lhapdf=306028 - lhapdf=306029 - lhapdf=306030 - lhapdf=306031 - lhapdf=306032 - lhapdf=306033 - lhapdf=306034 - lhapdf=306035 - lhapdf=306036 - lhapdf=306037 - lhapdf=306038 - lhapdf=306039 - lhapdf=306040 - lhapdf=306041 - lhapdf=306042 - lhapdf=306043 - lhapdf=306044 - lhapdf=306045 - lhapdf=306046 - lhapdf=306047 - lhapdf=306048 - lhapdf=306049 - lhapdf=306050 - lhapdf=306051 - lhapdf=306052 - lhapdf=306053 - lhapdf=306054 - lhapdf=306055 - lhapdf=306056 - lhapdf=306057 - lhapdf=306058 - lhapdf=306059 - lhapdf=306060 - lhapdf=306061 - lhapdf=306062 - lhapdf=306063 - lhapdf=306064 - lhapdf=306065 - lhapdf=306066 - lhapdf=306067 - lhapdf=306068 - lhapdf=306069 - lhapdf=306070 - lhapdf=306071 - lhapdf=306072 - lhapdf=306073 - lhapdf=306074 - lhapdf=306075 - lhapdf=306076 - lhapdf=306077 - lhapdf=306078 - lhapdf=306079 - lhapdf=306080 - lhapdf=306081 - lhapdf=306082 - lhapdf=306083 - lhapdf=306084 - lhapdf=306085 - lhapdf=306086 - lhapdf=306087 - lhapdf=306088 - lhapdf=306089 - lhapdf=306090 - lhapdf=306091 - lhapdf=306092 - lhapdf=306093 - lhapdf=306094 - lhapdf=306095 - lhapdf=306096 - lhapdf=306097 - lhapdf=306098 - lhapdf=306099 - lhapdf=306100 - lhapdf=306101 - lhapdf=306102 - lhapdf=322500 - lhapdf=322700 - lhapdf=322900 - lhapdf=323100 - lhapdf=323300 - lhapdf=323500 - lhapdf=323700 - lhapdf=323900 - lhapdf=325700 - lhapdf=325701 - lhapdf=325702 - lhapdf=325703 - lhapdf=325704 - lhapdf=325705 - lhapdf=325706 - lhapdf=325707 - lhapdf=325708 - lhapdf=325709 - lhapdf=325710 - lhapdf=325711 - lhapdf=325712 - lhapdf=325713 - lhapdf=325714 - lhapdf=325715 - lhapdf=325716 - lhapdf=325717 - lhapdf=325718 - lhapdf=325719 - lhapdf=325720 - lhapdf=325721 - lhapdf=325722 - lhapdf=325723 - lhapdf=325724 - lhapdf=325725 - lhapdf=325726 - lhapdf=325727 - lhapdf=325728 - lhapdf=325729 - lhapdf=325730 - lhapdf=325731 - lhapdf=325732 - lhapdf=325733 - lhapdf=325734 - lhapdf=325735 - lhapdf=325736 - lhapdf=325737 - lhapdf=325738 - lhapdf=325739 - lhapdf=325740 - lhapdf=325741 - lhapdf=325742 - lhapdf=325743 - lhapdf=325744 - lhapdf=325745 - lhapdf=325746 - lhapdf=325747 - lhapdf=325748 - lhapdf=325749 - lhapdf=325750 - lhapdf=325751 - lhapdf=325752 - lhapdf=325753 - lhapdf=325754 - lhapdf=325755 - lhapdf=325756 - lhapdf=325757 - lhapdf=325758 - lhapdf=325759 - lhapdf=325760 - lhapdf=325761 - lhapdf=325762 - lhapdf=325763 - lhapdf=325764 - lhapdf=325765 - lhapdf=325766 - lhapdf=325767 - lhapdf=325768 - lhapdf=325769 - lhapdf=325770 - lhapdf=325771 - lhapdf=325772 - lhapdf=325773 - lhapdf=325774 - lhapdf=325775 - lhapdf=325776 - lhapdf=325777 - lhapdf=325778 - lhapdf=325779 - lhapdf=325780 - lhapdf=325781 - lhapdf=325782 - lhapdf=325783 - lhapdf=325784 - lhapdf=325785 - lhapdf=325786 - lhapdf=325787 - lhapdf=325788 - lhapdf=325789 - lhapdf=325790 - lhapdf=325791 - lhapdf=325792 - lhapdf=325793 - lhapdf=325794 - lhapdf=325795 - lhapdf=325796 - lhapdf=325797 - lhapdf=325798 - lhapdf=325799 - lhapdf=325800 - lhapdf=325900 - lhapdf=325901 - lhapdf=325902 - lhapdf=325903 - lhapdf=325904 - lhapdf=325905 - lhapdf=325906 - lhapdf=325907 - lhapdf=325908 - lhapdf=325909 - lhapdf=325910 - lhapdf=325911 - lhapdf=325912 - lhapdf=325913 - lhapdf=325914 - lhapdf=325915 - lhapdf=325916 - lhapdf=325917 - lhapdf=325918 - lhapdf=325919 - lhapdf=325920 - lhapdf=325921 - lhapdf=325922 - lhapdf=325923 - lhapdf=325924 - lhapdf=325925 - lhapdf=325926 - lhapdf=325927 - lhapdf=325928 - lhapdf=325929 - lhapdf=325930 - lhapdf=325931 - lhapdf=325932 - lhapdf=325933 - lhapdf=325934 - lhapdf=325935 - lhapdf=325936 - lhapdf=325937 - lhapdf=325938 - lhapdf=325939 - lhapdf=325940 - lhapdf=325941 - lhapdf=325942 - lhapdf=325943 - lhapdf=325944 - lhapdf=325945 - lhapdf=325946 - lhapdf=325947 - lhapdf=325948 - lhapdf=325949 - lhapdf=325950 - lhapdf=325951 - lhapdf=325952 - lhapdf=325953 - lhapdf=325954 - lhapdf=325955 - lhapdf=325956 - lhapdf=325957 - lhapdf=325958 - lhapdf=325959 - lhapdf=325960 - lhapdf=325961 - lhapdf=325962 - lhapdf=325963 - lhapdf=325964 - lhapdf=325965 - lhapdf=325966 - lhapdf=325967 - lhapdf=325968 - lhapdf=325969 - lhapdf=325970 - lhapdf=325971 - lhapdf=325972 - lhapdf=325973 - lhapdf=325974 - lhapdf=325975 - lhapdf=325976 - lhapdf=325977 - lhapdf=325978 - lhapdf=325979 - lhapdf=325980 - lhapdf=325981 - lhapdf=325982 - lhapdf=325983 - lhapdf=325984 - lhapdf=325985 - lhapdf=325986 - lhapdf=325987 - lhapdf=325988 - lhapdf=325989 - lhapdf=325990 - lhapdf=325991 - lhapdf=325992 - lhapdf=325993 - lhapdf=325994 - lhapdf=325995 - lhapdf=325996 - lhapdf=325997 - lhapdf=325998 - lhapdf=325999 - lhapdf=326000 - lhapdf=326100 - lhapdf=326101 - lhapdf=326102 - lhapdf=326103 - lhapdf=326104 - lhapdf=326105 - lhapdf=326106 - lhapdf=326107 - lhapdf=326108 - lhapdf=326109 - lhapdf=326110 - lhapdf=326111 - lhapdf=326112 - lhapdf=326113 - lhapdf=326114 - lhapdf=326115 - lhapdf=326116 - lhapdf=326117 - lhapdf=326118 - lhapdf=326119 - lhapdf=326120 - lhapdf=326121 - lhapdf=326122 - lhapdf=326123 - lhapdf=326124 - lhapdf=326125 - lhapdf=326126 - lhapdf=326127 - lhapdf=326128 - lhapdf=326129 - lhapdf=326130 - lhapdf=326131 - lhapdf=326132 - lhapdf=326133 - lhapdf=326134 - lhapdf=326135 - lhapdf=326136 - lhapdf=326137 - lhapdf=326138 - lhapdf=326139 - lhapdf=326140 - lhapdf=326141 - lhapdf=326142 - lhapdf=326143 - lhapdf=326144 - lhapdf=326145 - lhapdf=326146 - lhapdf=326147 - lhapdf=326148 - lhapdf=326149 - lhapdf=326150 - lhapdf=326151 - lhapdf=326152 - lhapdf=326153 - lhapdf=326154 - lhapdf=326155 - lhapdf=326156 - lhapdf=326157 - lhapdf=326158 - lhapdf=326159 - lhapdf=326160 - lhapdf=326161 - lhapdf=326162 - lhapdf=326163 - lhapdf=326164 - lhapdf=326165 - lhapdf=326166 - lhapdf=326167 - lhapdf=326168 - lhapdf=326169 - lhapdf=326170 - lhapdf=326171 - lhapdf=326172 - lhapdf=326173 - lhapdf=326174 - lhapdf=326175 - lhapdf=326176 - lhapdf=326177 - lhapdf=326178 - lhapdf=326179 - lhapdf=326180 - lhapdf=326181 - lhapdf=326182 - lhapdf=326183 - lhapdf=326184 - lhapdf=326185 - lhapdf=326186 - lhapdf=326187 - lhapdf=326188 - lhapdf=326189 - lhapdf=326190 - lhapdf=326191 - lhapdf=326192 - lhapdf=326193 - lhapdf=326194 - lhapdf=326195 - lhapdf=326196 - lhapdf=326197 - lhapdf=326198 - lhapdf=326199 - lhapdf=326200 - lhapdf=326300 - lhapdf=326301 - lhapdf=326302 - lhapdf=326303 - lhapdf=326304 - lhapdf=326305 - lhapdf=326306 - lhapdf=326307 - lhapdf=326308 - lhapdf=326309 - lhapdf=326310 - lhapdf=326311 - lhapdf=326312 - lhapdf=326313 - lhapdf=326314 - lhapdf=326315 - lhapdf=326316 - lhapdf=326317 - lhapdf=326318 - lhapdf=326319 - lhapdf=326320 - lhapdf=326321 - lhapdf=326322 - lhapdf=326323 - lhapdf=326324 - lhapdf=326325 - lhapdf=326326 - lhapdf=326327 - lhapdf=326328 - lhapdf=326329 - lhapdf=326330 - lhapdf=326331 - lhapdf=326332 - lhapdf=326333 - lhapdf=326334 - lhapdf=326335 - lhapdf=326336 - lhapdf=326337 - lhapdf=326338 - lhapdf=326339 - lhapdf=326340 - lhapdf=326341 - lhapdf=326342 - lhapdf=326343 - lhapdf=326344 - lhapdf=326345 - lhapdf=326346 - lhapdf=326347 - lhapdf=326348 - lhapdf=326349 - lhapdf=326350 - lhapdf=326351 - lhapdf=326352 - lhapdf=326353 - lhapdf=326354 - lhapdf=326355 - lhapdf=326356 - lhapdf=326357 - lhapdf=326358 - lhapdf=326359 - lhapdf=326360 - lhapdf=326361 - lhapdf=326362 - lhapdf=326363 - lhapdf=326364 - lhapdf=326365 - lhapdf=326366 - lhapdf=326367 - lhapdf=326368 - lhapdf=326369 - lhapdf=326370 - lhapdf=326371 - lhapdf=326372 - lhapdf=326373 - lhapdf=326374 - lhapdf=326375 - lhapdf=326376 - lhapdf=326377 - lhapdf=326378 - lhapdf=326379 - lhapdf=326380 - lhapdf=326381 - lhapdf=326382 - lhapdf=326383 - lhapdf=326384 - lhapdf=326385 - lhapdf=326386 - lhapdf=326387 - lhapdf=326388 - lhapdf=326389 - lhapdf=326390 - lhapdf=326391 - lhapdf=326392 - lhapdf=326393 - lhapdf=326394 - lhapdf=326395 - lhapdf=326396 - lhapdf=326397 - lhapdf=326398 - lhapdf=326399 - lhapdf=326400 - lhapdf=13000 - lhapdf=13001 - lhapdf=13002 - lhapdf=13003 - lhapdf=13004 - lhapdf=13005 - lhapdf=13006 - lhapdf=13007 - lhapdf=13008 - lhapdf=13009 - lhapdf=13010 - lhapdf=13011 - lhapdf=13012 - lhapdf=13013 - lhapdf=13014 - lhapdf=13015 - lhapdf=13016 - lhapdf=13017 - lhapdf=13018 - lhapdf=13019 - lhapdf=13020 - lhapdf=13021 - lhapdf=13022 - lhapdf=13023 - lhapdf=13024 - lhapdf=13025 - lhapdf=13026 - lhapdf=13027 - lhapdf=13028 - lhapdf=13029 - lhapdf=13030 - lhapdf=13031 - lhapdf=13032 - lhapdf=13033 - lhapdf=13034 - lhapdf=13035 - lhapdf=13036 - lhapdf=13037 - lhapdf=13038 - lhapdf=13039 - lhapdf=13040 - lhapdf=13041 - lhapdf=13042 - lhapdf=13043 - lhapdf=13044 - lhapdf=13045 - lhapdf=13046 - lhapdf=13047 - lhapdf=13048 - lhapdf=13049 - lhapdf=13050 - lhapdf=13051 - lhapdf=13052 - lhapdf=13053 - lhapdf=13054 - lhapdf=13055 - lhapdf=13056 - lhapdf=13065 - lhapdf=13069 - lhapdf=25300 - lhapdf=25301 - lhapdf=25302 - lhapdf=25303 - lhapdf=25304 - lhapdf=25305 - lhapdf=25306 - lhapdf=25307 - lhapdf=25308 - lhapdf=25309 - lhapdf=25310 - lhapdf=25311 - lhapdf=25312 - lhapdf=25313 - lhapdf=25314 - lhapdf=25315 - lhapdf=25316 - lhapdf=25317 - lhapdf=25318 - lhapdf=25319 - lhapdf=25320 - lhapdf=25321 - lhapdf=25322 - lhapdf=25323 - lhapdf=25324 - lhapdf=25325 - lhapdf=25326 - lhapdf=25327 - lhapdf=25328 - lhapdf=25329 - lhapdf=25330 - lhapdf=25331 - lhapdf=25332 - lhapdf=25333 - lhapdf=25334 - lhapdf=25335 - lhapdf=25336 - lhapdf=25337 - lhapdf=25338 - lhapdf=25339 - lhapdf=25340 - lhapdf=25341 - lhapdf=25342 - lhapdf=25343 - lhapdf=25344 - lhapdf=25345 - lhapdf=25346 - lhapdf=25347 - lhapdf=25348 - lhapdf=25349 - lhapdf=25350 - lhapdf=25360 - lhapdf=25361 - lhapdf=25362 - lhapdf=42560 - lhapdf=42561 - lhapdf=42562 - lhapdf=42563 - lhapdf=42564 - lhapdf=42565 - lhapdf=42566 - lhapdf=42567 - lhapdf=42568 - lhapdf=42569 - lhapdf=42570 - lhapdf=42571 - lhapdf=42572 - lhapdf=42573 - lhapdf=42574 - lhapdf=42575 - lhapdf=42576 - lhapdf=42577 - lhapdf=42578 - lhapdf=42579 - lhapdf=42580 - lhapdf=42581 - lhapdf=42582 - lhapdf=42583 - lhapdf=42584 - lhapdf=42585 - lhapdf=42586 - lhapdf=42587 - lhapdf=42588 - lhapdf=42589 - lhapdf=61200 - lhapdf=61201 - lhapdf=61202 - lhapdf=61203 - lhapdf=61204 - lhapdf=61205 - lhapdf=61206 - lhapdf=61207 - lhapdf=61208 - lhapdf=61209 - lhapdf=61210 - lhapdf=61211 - lhapdf=61212 - lhapdf=61213 - lhapdf=61214 - lhapdf=61215 - lhapdf=61216 - lhapdf=61217 - lhapdf=61218 - lhapdf=61219 - lhapdf=61220 - lhapdf=61221 - lhapdf=61222 - lhapdf=61223 - lhapdf=61224 - lhapdf=61225 - lhapdf=61226 - lhapdf=61227 - lhapdf=61228 - lhapdf=61230 - lhapdf=61231 - lhapdf=61232 - lhapdf=61233 - lhapdf=61234 - lhapdf=61235 - lhapdf=61236 - lhapdf=61237 - lhapdf=61238 - lhapdf=61239 - lhapdf=61240 - lhapdf=61241 - lhapdf=61242 - lhapdf=61243 - lhapdf=61740 - lhapdf=61741 - lhapdf=61742 - lhapdf=61743 - lhapdf=61744 - lhapdf=61745 - lhapdf=61746 - lhapdf=61747 - lhapdf=61748 - lhapdf=61749 - lhapdf=61750 - lhapdf=61751 - lhapdf=61752 - lhapdf=61753 - lhapdf=61754 - lhapdf=61755 - lhapdf=61756 - lhapdf=61757 - lhapdf=61758 - lhapdf=61759 - lhapdf=61760 - lhapdf=306000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306057 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306058 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306059 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306060 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306061 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306062 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306063 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306064 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306066 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306067 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306068 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306070 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306071 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306072 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306073 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306074 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306075 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306076 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306077 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306078 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306079 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306080 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306081 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306082 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306083 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306084 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306085 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306086 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306087 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306088 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306089 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306090 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306091 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306092 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306093 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306094 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306095 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306096 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306097 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306098 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306099 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=306102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=322500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=322700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=322900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323500 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=323900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325700 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325701 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325702 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325703 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325704 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325705 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325706 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325707 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325708 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325709 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325710 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325711 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325712 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325713 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325714 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325715 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325716 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325717 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325718 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325719 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325720 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325721 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325722 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325723 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325724 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325725 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325726 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325727 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325728 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325729 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325730 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325731 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325732 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325733 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325734 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325735 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325736 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325737 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325738 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325739 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325761 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325762 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325763 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325764 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325765 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325766 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325767 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325768 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325769 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325770 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325771 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325772 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325773 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325774 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325775 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325776 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325777 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325778 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325779 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325780 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325781 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325782 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325783 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325784 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325785 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325786 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325787 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325788 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325789 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325790 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325791 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325792 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325793 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325794 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325795 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325796 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325797 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325798 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325799 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325800 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325900 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325901 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325902 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325903 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325904 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325905 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325906 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325907 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325908 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325909 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325910 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325911 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325912 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325913 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325914 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325915 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325916 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325917 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325918 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325919 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325920 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325921 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325922 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325923 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325924 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325925 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325926 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325927 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325928 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325929 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325930 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325931 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325932 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325933 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325934 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325935 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325936 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325937 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325938 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325939 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325940 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325941 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325942 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325943 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325944 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325945 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325946 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325947 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325948 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325949 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325950 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325951 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325952 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325953 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325954 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325955 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325956 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325957 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325958 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325959 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325960 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325961 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325962 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325963 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325964 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325965 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325966 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325967 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325968 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325969 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325970 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325971 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325972 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325973 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325974 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325975 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325976 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325977 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325978 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325979 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325980 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325981 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325982 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325983 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325984 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325985 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325986 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325987 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325988 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325989 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325990 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325991 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325992 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325993 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325994 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325995 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325996 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325997 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325998 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=325999 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326100 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326101 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326102 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326103 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326104 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326105 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326106 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326107 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326108 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326109 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326110 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326111 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326112 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326113 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326114 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326115 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326116 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326117 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326118 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326119 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326120 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326121 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326122 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326123 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326124 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326125 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326126 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326127 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326128 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326129 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326130 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326131 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326132 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326133 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326134 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326135 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326136 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326137 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326138 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326139 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326140 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326141 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326142 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326143 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326144 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326145 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326146 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326147 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326148 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326149 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326150 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326151 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326152 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326153 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326154 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326155 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326156 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326157 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326158 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326159 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326160 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326161 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326162 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326163 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326164 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326165 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326166 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326167 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326168 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326169 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326170 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326171 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326172 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326173 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326174 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326175 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326176 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326177 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326178 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326179 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326180 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326181 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326182 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326183 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326184 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326185 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326186 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326187 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326188 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326189 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326190 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326191 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326192 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326193 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326194 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326195 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326196 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326197 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326198 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326199 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326351 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326352 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326353 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326354 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326355 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326356 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326357 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326358 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326359 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326363 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326364 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326365 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326366 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326367 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326368 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326369 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326370 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326371 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326372 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326373 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326374 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326375 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326376 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326377 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326378 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326379 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326380 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326381 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326382 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326383 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326384 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326385 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326386 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326387 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326388 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326389 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326390 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326391 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326392 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326393 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326394 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326395 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326396 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326397 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326398 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326399 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=326400 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13000 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13001 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13002 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13003 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13004 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13005 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13006 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13007 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13008 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13009 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13010 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13011 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13012 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13013 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13014 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13015 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13016 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13017 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13018 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13019 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13020 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13021 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13022 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13023 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13024 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13025 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13026 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13027 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13028 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13029 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13030 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13031 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13032 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13033 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13034 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13035 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13036 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13037 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13038 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13039 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13040 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13041 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13042 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13043 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13044 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13045 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13046 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13047 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13048 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13049 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13050 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13051 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13052 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13053 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13054 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13055 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13056 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13065 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=13069 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25300 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25301 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25302 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25303 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25304 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25305 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25306 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25307 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25308 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25309 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25310 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25311 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25312 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25313 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25314 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25315 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25316 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25317 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25318 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25319 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25320 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25321 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25322 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25323 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25324 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25325 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25326 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25327 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25328 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25329 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25330 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25331 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25332 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25333 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25334 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25335 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25336 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25337 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25338 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25339 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25340 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25341 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25342 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25343 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25344 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25345 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25346 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25347 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25348 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25349 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25350 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25360 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25361 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=25362 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42560 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42561 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42562 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42563 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42564 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42565 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42566 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42567 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42568 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42569 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42570 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42571 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42572 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42573 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42574 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42575 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42576 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42577 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42578 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42579 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42580 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42581 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42582 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42583 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42584 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42585 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42586 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42587 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42588 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=42589 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61200 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61201 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61202 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61203 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61204 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61205 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61206 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61207 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61208 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61209 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61210 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61211 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61212 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61213 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61214 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61215 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61216 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61217 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61218 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61219 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61220 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61221 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61222 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61223 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61224 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61225 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61226 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61227 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61228 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61230 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61231 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61232 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61233 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61234 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61235 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61236 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61237 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61238 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61239 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61240 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61241 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61242 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61243 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61740 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61741 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61742 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61743 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61744 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61745 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61746 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61747 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61748 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61749 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61750 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61751 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61752 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61753 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61754 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61755 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61756 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61757 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61758 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61759 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - lhapdf=61760 DYNNLO_mur1_muf1_3D.top MINLO-W1-denom.top - diff --git a/testFiles/WZVBS_2017_weightInfo.txt b/testFiles/WZVBS_2017_weightInfo.txt deleted file mode 100644 index 79718529a993b..0000000000000 --- a/testFiles/WZVBS_2017_weightInfo.txt +++ /dev/null @@ -1,1180 +0,0 @@ -# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/WLLJJ_WToLNu_EWK_TuneCP5_13TeV_madgraph-madspin-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15-v1/50000/7E4F4321-598D-6A45-9681-8F8BA9817ECE.root - -<weight id="1001" MUR="1.0" MUF="1.0" PDF="320900" > </weight> -<weightgroup name="Central scale variation" combine="envelope"> -<weight id="1002" MUR="1.0" MUF="1.0" DYN_SCALE="1" PDF="320900" > dyn_scale_choice=sum pt </weight> -<weight id="1003" MUR="1.0" MUF="1.0" DYN_SCALE="2" PDF="320900" > dyn_scale_choice=HT </weight> -<weight id="1004" MUR="1.0" MUF="1.0" DYN_SCALE="3" PDF="320900" > dyn_scale_choice=HT/2 </weight> -<weight id="1005" MUR="1.0" MUF="1.0" DYN_SCALE="4" PDF="320900" > dyn_scale_choice=sqrts </weight> -<weight id="1006" MUR="2.0" MUF="1.0" PDF="320900" > MUR=2.0 </weight> -<weight id="1007" MUR="2.0" MUF="1.0" DYN_SCALE="1" PDF="320900" > MUR=2.0 dyn_scale_choice=sum pt </weight> -<weight id="1008" MUR="2.0" MUF="1.0" DYN_SCALE="2" PDF="320900" > MUR=2.0 dyn_scale_choice=HT </weight> -<weight id="1009" MUR="2.0" MUF="1.0" DYN_SCALE="3" PDF="320900" > MUR=2.0 dyn_scale_choice=HT/2 </weight> -<weight id="1010" MUR="2.0" MUF="1.0" DYN_SCALE="4" PDF="320900" > MUR=2.0 dyn_scale_choice=sqrts </weight> -<weight id="1011" MUR="0.5" MUF="1.0" PDF="320900" > MUR=0.5 </weight> -<weight id="1012" MUR="0.5" MUF="1.0" DYN_SCALE="1" PDF="320900" > MUR=0.5 dyn_scale_choice=sum pt </weight> -<weight id="1013" MUR="0.5" MUF="1.0" DYN_SCALE="2" PDF="320900" > MUR=0.5 dyn_scale_choice=HT </weight> -<weight id="1014" MUR="0.5" MUF="1.0" DYN_SCALE="3" PDF="320900" > MUR=0.5 dyn_scale_choice=HT/2 </weight> -<weight id="1015" MUR="0.5" MUF="1.0" DYN_SCALE="4" PDF="320900" > MUR=0.5 dyn_scale_choice=sqrts </weight> -<weight id="1016" MUR="1.0" MUF="2.0" PDF="320900" > MUF=2.0 </weight> -<weight id="1017" MUR="1.0" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUF=2.0 dyn_scale_choice=sum pt </weight> -<weight id="1018" MUR="1.0" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUF=2.0 dyn_scale_choice=HT </weight> -<weight id="1019" MUR="1.0" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUF=2.0 dyn_scale_choice=HT/2 </weight> -<weight id="1020" MUR="1.0" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUF=2.0 dyn_scale_choice=sqrts </weight> -<weight id="1021" MUR="2.0" MUF="2.0" PDF="320900" > MUR=2.0 MUF=2.0 </weight> -<weight id="1022" MUR="2.0" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt </weight> -<weight id="1023" MUR="2.0" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=HT </weight> -<weight id="1024" MUR="2.0" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 </weight> -<weight id="1025" MUR="2.0" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts </weight> -<weight id="1026" MUR="0.5" MUF="2.0" PDF="320900" > MUR=0.5 MUF=2.0 </weight> -<weight id="1027" MUR="0.5" MUF="2.0" DYN_SCALE="1" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt </weight> -<weight id="1028" MUR="0.5" MUF="2.0" DYN_SCALE="2" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=HT </weight> -<weight id="1029" MUR="0.5" MUF="2.0" DYN_SCALE="3" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 </weight> -<weight id="1030" MUR="0.5" MUF="2.0" DYN_SCALE="4" PDF="320900" > MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts </weight> -<weight id="1031" MUR="1.0" MUF="0.5" PDF="320900" > MUF=0.5 </weight> -<weight id="1032" MUR="1.0" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUF=0.5 dyn_scale_choice=sum pt </weight> -<weight id="1033" MUR="1.0" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUF=0.5 dyn_scale_choice=HT </weight> -<weight id="1034" MUR="1.0" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUF=0.5 dyn_scale_choice=HT/2 </weight> -<weight id="1035" MUR="1.0" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUF=0.5 dyn_scale_choice=sqrts </weight> -<weight id="1036" MUR="2.0" MUF="0.5" PDF="320900" > MUR=2.0 MUF=0.5 </weight> -<weight id="1037" MUR="2.0" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt </weight> -<weight id="1038" MUR="2.0" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=HT </weight> -<weight id="1039" MUR="2.0" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 </weight> -<weight id="1040" MUR="2.0" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts </weight> -<weight id="1041" MUR="0.5" MUF="0.5" PDF="320900" > MUR=0.5 MUF=0.5 </weight> -<weight id="1042" MUR="0.5" MUF="0.5" DYN_SCALE="1" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt </weight> -<weight id="1043" MUR="0.5" MUF="0.5" DYN_SCALE="2" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=HT </weight> -<weight id="1044" MUR="0.5" MUF="0.5" DYN_SCALE="3" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 </weight> -<weight id="1045" MUR="0.5" MUF="0.5" DYN_SCALE="4" PDF="320900" > MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts </weight> -</weightgroup> # scale -<weightgroup name="NNPDF31_nnlo_hessian_pdfas" combine="symmhessian+as"> # 306000: Hessian conversion of NNPDF31_nnlo_as_0118_1000, mem=0 central value ; Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 -<weight id="1046" MUR="1.0" MUF="1.0" PDF="306000" > PDF=306000 MemberID=0 </weight> -<weight id="1047" MUR="1.0" MUF="1.0" PDF="306001" > PDF=306000 MemberID=1 </weight> -<weight id="1048" MUR="1.0" MUF="1.0" PDF="306002" > PDF=306000 MemberID=2 </weight> -<weight id="1049" MUR="1.0" MUF="1.0" PDF="306003" > PDF=306000 MemberID=3 </weight> -<weight id="1050" MUR="1.0" MUF="1.0" PDF="306004" > PDF=306000 MemberID=4 </weight> -<weight id="1051" MUR="1.0" MUF="1.0" PDF="306005" > PDF=306000 MemberID=5 </weight> -<weight id="1052" MUR="1.0" MUF="1.0" PDF="306006" > PDF=306000 MemberID=6 </weight> -<weight id="1053" MUR="1.0" MUF="1.0" PDF="306007" > PDF=306000 MemberID=7 </weight> -<weight id="1054" MUR="1.0" MUF="1.0" PDF="306008" > PDF=306000 MemberID=8 </weight> -<weight id="1055" MUR="1.0" MUF="1.0" PDF="306009" > PDF=306000 MemberID=9 </weight> -<weight id="1056" MUR="1.0" MUF="1.0" PDF="306010" > PDF=306000 MemberID=10 </weight> -<weight id="1057" MUR="1.0" MUF="1.0" PDF="306011" > PDF=306000 MemberID=11 </weight> -<weight id="1058" MUR="1.0" MUF="1.0" PDF="306012" > PDF=306000 MemberID=12 </weight> -<weight id="1059" MUR="1.0" MUF="1.0" PDF="306013" > PDF=306000 MemberID=13 </weight> -<weight id="1060" MUR="1.0" MUF="1.0" PDF="306014" > PDF=306000 MemberID=14 </weight> -<weight id="1061" MUR="1.0" MUF="1.0" PDF="306015" > PDF=306000 MemberID=15 </weight> -<weight id="1062" MUR="1.0" MUF="1.0" PDF="306016" > PDF=306000 MemberID=16 </weight> -<weight id="1063" MUR="1.0" MUF="1.0" PDF="306017" > PDF=306000 MemberID=17 </weight> -<weight id="1064" MUR="1.0" MUF="1.0" PDF="306018" > PDF=306000 MemberID=18 </weight> -<weight id="1065" MUR="1.0" MUF="1.0" PDF="306019" > PDF=306000 MemberID=19 </weight> -<weight id="1066" MUR="1.0" MUF="1.0" PDF="306020" > PDF=306000 MemberID=20 </weight> -<weight id="1067" MUR="1.0" MUF="1.0" PDF="306021" > PDF=306000 MemberID=21 </weight> -<weight id="1068" MUR="1.0" MUF="1.0" PDF="306022" > PDF=306000 MemberID=22 </weight> -<weight id="1069" MUR="1.0" MUF="1.0" PDF="306023" > PDF=306000 MemberID=23 </weight> -<weight id="1070" MUR="1.0" MUF="1.0" PDF="306024" > PDF=306000 MemberID=24 </weight> -<weight id="1071" MUR="1.0" MUF="1.0" PDF="306025" > PDF=306000 MemberID=25 </weight> -<weight id="1072" MUR="1.0" MUF="1.0" PDF="306026" > PDF=306000 MemberID=26 </weight> -<weight id="1073" MUR="1.0" MUF="1.0" PDF="306027" > PDF=306000 MemberID=27 </weight> -<weight id="1074" MUR="1.0" MUF="1.0" PDF="306028" > PDF=306000 MemberID=28 </weight> -<weight id="1075" MUR="1.0" MUF="1.0" PDF="306029" > PDF=306000 MemberID=29 </weight> -<weight id="1076" MUR="1.0" MUF="1.0" PDF="306030" > PDF=306000 MemberID=30 </weight> -<weight id="1077" MUR="1.0" MUF="1.0" PDF="306031" > PDF=306000 MemberID=31 </weight> -<weight id="1078" MUR="1.0" MUF="1.0" PDF="306032" > PDF=306000 MemberID=32 </weight> -<weight id="1079" MUR="1.0" MUF="1.0" PDF="306033" > PDF=306000 MemberID=33 </weight> -<weight id="1080" MUR="1.0" MUF="1.0" PDF="306034" > PDF=306000 MemberID=34 </weight> -<weight id="1081" MUR="1.0" MUF="1.0" PDF="306035" > PDF=306000 MemberID=35 </weight> -<weight id="1082" MUR="1.0" MUF="1.0" PDF="306036" > PDF=306000 MemberID=36 </weight> -<weight id="1083" MUR="1.0" MUF="1.0" PDF="306037" > PDF=306000 MemberID=37 </weight> -<weight id="1084" MUR="1.0" MUF="1.0" PDF="306038" > PDF=306000 MemberID=38 </weight> -<weight id="1085" MUR="1.0" MUF="1.0" PDF="306039" > PDF=306000 MemberID=39 </weight> -<weight id="1086" MUR="1.0" MUF="1.0" PDF="306040" > PDF=306000 MemberID=40 </weight> -<weight id="1087" MUR="1.0" MUF="1.0" PDF="306041" > PDF=306000 MemberID=41 </weight> -<weight id="1088" MUR="1.0" MUF="1.0" PDF="306042" > PDF=306000 MemberID=42 </weight> -<weight id="1089" MUR="1.0" MUF="1.0" PDF="306043" > PDF=306000 MemberID=43 </weight> -<weight id="1090" MUR="1.0" MUF="1.0" PDF="306044" > PDF=306000 MemberID=44 </weight> -<weight id="1091" MUR="1.0" MUF="1.0" PDF="306045" > PDF=306000 MemberID=45 </weight> -<weight id="1092" MUR="1.0" MUF="1.0" PDF="306046" > PDF=306000 MemberID=46 </weight> -<weight id="1093" MUR="1.0" MUF="1.0" PDF="306047" > PDF=306000 MemberID=47 </weight> -<weight id="1094" MUR="1.0" MUF="1.0" PDF="306048" > PDF=306000 MemberID=48 </weight> -<weight id="1095" MUR="1.0" MUF="1.0" PDF="306049" > PDF=306000 MemberID=49 </weight> -<weight id="1096" MUR="1.0" MUF="1.0" PDF="306050" > PDF=306000 MemberID=50 </weight> -<weight id="1097" MUR="1.0" MUF="1.0" PDF="306051" > PDF=306000 MemberID=51 </weight> -<weight id="1098" MUR="1.0" MUF="1.0" PDF="306052" > PDF=306000 MemberID=52 </weight> -<weight id="1099" MUR="1.0" MUF="1.0" PDF="306053" > PDF=306000 MemberID=53 </weight> -<weight id="1100" MUR="1.0" MUF="1.0" PDF="306054" > PDF=306000 MemberID=54 </weight> -<weight id="1101" MUR="1.0" MUF="1.0" PDF="306055" > PDF=306000 MemberID=55 </weight> -<weight id="1102" MUR="1.0" MUF="1.0" PDF="306056" > PDF=306000 MemberID=56 </weight> -<weight id="1103" MUR="1.0" MUF="1.0" PDF="306057" > PDF=306000 MemberID=57 </weight> -<weight id="1104" MUR="1.0" MUF="1.0" PDF="306058" > PDF=306000 MemberID=58 </weight> -<weight id="1105" MUR="1.0" MUF="1.0" PDF="306059" > PDF=306000 MemberID=59 </weight> -<weight id="1106" MUR="1.0" MUF="1.0" PDF="306060" > PDF=306000 MemberID=60 </weight> -<weight id="1107" MUR="1.0" MUF="1.0" PDF="306061" > PDF=306000 MemberID=61 </weight> -<weight id="1108" MUR="1.0" MUF="1.0" PDF="306062" > PDF=306000 MemberID=62 </weight> -<weight id="1109" MUR="1.0" MUF="1.0" PDF="306063" > PDF=306000 MemberID=63 </weight> -<weight id="1110" MUR="1.0" MUF="1.0" PDF="306064" > PDF=306000 MemberID=64 </weight> -<weight id="1111" MUR="1.0" MUF="1.0" PDF="306065" > PDF=306000 MemberID=65 </weight> -<weight id="1112" MUR="1.0" MUF="1.0" PDF="306066" > PDF=306000 MemberID=66 </weight> -<weight id="1113" MUR="1.0" MUF="1.0" PDF="306067" > PDF=306000 MemberID=67 </weight> -<weight id="1114" MUR="1.0" MUF="1.0" PDF="306068" > PDF=306000 MemberID=68 </weight> -<weight id="1115" MUR="1.0" MUF="1.0" PDF="306069" > PDF=306000 MemberID=69 </weight> -<weight id="1116" MUR="1.0" MUF="1.0" PDF="306070" > PDF=306000 MemberID=70 </weight> -<weight id="1117" MUR="1.0" MUF="1.0" PDF="306071" > PDF=306000 MemberID=71 </weight> -<weight id="1118" MUR="1.0" MUF="1.0" PDF="306072" > PDF=306000 MemberID=72 </weight> -<weight id="1119" MUR="1.0" MUF="1.0" PDF="306073" > PDF=306000 MemberID=73 </weight> -<weight id="1120" MUR="1.0" MUF="1.0" PDF="306074" > PDF=306000 MemberID=74 </weight> -<weight id="1121" MUR="1.0" MUF="1.0" PDF="306075" > PDF=306000 MemberID=75 </weight> -<weight id="1122" MUR="1.0" MUF="1.0" PDF="306076" > PDF=306000 MemberID=76 </weight> -<weight id="1123" MUR="1.0" MUF="1.0" PDF="306077" > PDF=306000 MemberID=77 </weight> -<weight id="1124" MUR="1.0" MUF="1.0" PDF="306078" > PDF=306000 MemberID=78 </weight> -<weight id="1125" MUR="1.0" MUF="1.0" PDF="306079" > PDF=306000 MemberID=79 </weight> -<weight id="1126" MUR="1.0" MUF="1.0" PDF="306080" > PDF=306000 MemberID=80 </weight> -<weight id="1127" MUR="1.0" MUF="1.0" PDF="306081" > PDF=306000 MemberID=81 </weight> -<weight id="1128" MUR="1.0" MUF="1.0" PDF="306082" > PDF=306000 MemberID=82 </weight> -<weight id="1129" MUR="1.0" MUF="1.0" PDF="306083" > PDF=306000 MemberID=83 </weight> -<weight id="1130" MUR="1.0" MUF="1.0" PDF="306084" > PDF=306000 MemberID=84 </weight> -<weight id="1131" MUR="1.0" MUF="1.0" PDF="306085" > PDF=306000 MemberID=85 </weight> -<weight id="1132" MUR="1.0" MUF="1.0" PDF="306086" > PDF=306000 MemberID=86 </weight> -<weight id="1133" MUR="1.0" MUF="1.0" PDF="306087" > PDF=306000 MemberID=87 </weight> -<weight id="1134" MUR="1.0" MUF="1.0" PDF="306088" > PDF=306000 MemberID=88 </weight> -<weight id="1135" MUR="1.0" MUF="1.0" PDF="306089" > PDF=306000 MemberID=89 </weight> -<weight id="1136" MUR="1.0" MUF="1.0" PDF="306090" > PDF=306000 MemberID=90 </weight> -<weight id="1137" MUR="1.0" MUF="1.0" PDF="306091" > PDF=306000 MemberID=91 </weight> -<weight id="1138" MUR="1.0" MUF="1.0" PDF="306092" > PDF=306000 MemberID=92 </weight> -<weight id="1139" MUR="1.0" MUF="1.0" PDF="306093" > PDF=306000 MemberID=93 </weight> -<weight id="1140" MUR="1.0" MUF="1.0" PDF="306094" > PDF=306000 MemberID=94 </weight> -<weight id="1141" MUR="1.0" MUF="1.0" PDF="306095" > PDF=306000 MemberID=95 </weight> -<weight id="1142" MUR="1.0" MUF="1.0" PDF="306096" > PDF=306000 MemberID=96 </weight> -<weight id="1143" MUR="1.0" MUF="1.0" PDF="306097" > PDF=306000 MemberID=97 </weight> -<weight id="1144" MUR="1.0" MUF="1.0" PDF="306098" > PDF=306000 MemberID=98 </weight> -<weight id="1145" MUR="1.0" MUF="1.0" PDF="306099" > PDF=306000 MemberID=99 </weight> -<weight id="1146" MUR="1.0" MUF="1.0" PDF="306100" > PDF=306000 MemberID=100 </weight> -<weight id="1147" MUR="1.0" MUF="1.0" PDF="306101" > PDF=306000 MemberID=101 </weight> -<weight id="1148" MUR="1.0" MUF="1.0" PDF="306102" > PDF=306000 MemberID=102 </weight> -</weightgroup> # PDFSET -> PDF -<weight id="1149" MUR="1.0" MUF="1.0" PDF="322500" > PDF=322500 MemberID=0 </weight> -<weight id="1150" MUR="1.0" MUF="1.0" PDF="322700" > PDF=322700 MemberID=0 </weight> -<weight id="1151" MUR="1.0" MUF="1.0" PDF="322900" > PDF=322900 MemberID=0 </weight> -<weight id="1152" MUR="1.0" MUF="1.0" PDF="323100" > PDF=323100 MemberID=0 </weight> -<weight id="1153" MUR="1.0" MUF="1.0" PDF="323300" > PDF=323300 MemberID=0 </weight> -<weight id="1154" MUR="1.0" MUF="1.0" PDF="323500" > PDF=323500 MemberID=0 </weight> -<weight id="1155" MUR="1.0" MUF="1.0" PDF="323700" > PDF=323700 MemberID=0 </weight> -<weight id="1156" MUR="1.0" MUF="1.0" PDF="323900" > PDF=323900 MemberID=0 </weight> -<weightgroup name="NNPDF31_nlo_hessian_pdfas" combine="symmhessian+as"> # 305800: Hessian conversion of NNPDF31_nlo_as_0118_1000, mem=0 ; central value Alphas(MZ)=0.118; mem=1-100 ; PDF eig.; mem=101 ; central value Alphas(MZ)=0.116; mem=102 ; central value Alphas(MZ)=0.120 -<weight id="1157" MUR="1.0" MUF="1.0" PDF="305800" > PDF=305800 MemberID=0 </weight> -<weight id="1158" MUR="1.0" MUF="1.0" PDF="305801" > PDF=305800 MemberID=1 </weight> -<weight id="1159" MUR="1.0" MUF="1.0" PDF="305802" > PDF=305800 MemberID=2 </weight> -<weight id="1160" MUR="1.0" MUF="1.0" PDF="305803" > PDF=305800 MemberID=3 </weight> -<weight id="1161" MUR="1.0" MUF="1.0" PDF="305804" > PDF=305800 MemberID=4 </weight> -<weight id="1162" MUR="1.0" MUF="1.0" PDF="305805" > PDF=305800 MemberID=5 </weight> -<weight id="1163" MUR="1.0" MUF="1.0" PDF="305806" > PDF=305800 MemberID=6 </weight> -<weight id="1164" MUR="1.0" MUF="1.0" PDF="305807" > PDF=305800 MemberID=7 </weight> -<weight id="1165" MUR="1.0" MUF="1.0" PDF="305808" > PDF=305800 MemberID=8 </weight> -<weight id="1166" MUR="1.0" MUF="1.0" PDF="305809" > PDF=305800 MemberID=9 </weight> -<weight id="1167" MUR="1.0" MUF="1.0" PDF="305810" > PDF=305800 MemberID=10 </weight> -<weight id="1168" MUR="1.0" MUF="1.0" PDF="305811" > PDF=305800 MemberID=11 </weight> -<weight id="1169" MUR="1.0" MUF="1.0" PDF="305812" > PDF=305800 MemberID=12 </weight> -<weight id="1170" MUR="1.0" MUF="1.0" PDF="305813" > PDF=305800 MemberID=13 </weight> -<weight id="1171" MUR="1.0" MUF="1.0" PDF="305814" > PDF=305800 MemberID=14 </weight> -<weight id="1172" MUR="1.0" MUF="1.0" PDF="305815" > PDF=305800 MemberID=15 </weight> -<weight id="1173" MUR="1.0" MUF="1.0" PDF="305816" > PDF=305800 MemberID=16 </weight> -<weight id="1174" MUR="1.0" MUF="1.0" PDF="305817" > PDF=305800 MemberID=17 </weight> -<weight id="1175" MUR="1.0" MUF="1.0" PDF="305818" > PDF=305800 MemberID=18 </weight> -<weight id="1176" MUR="1.0" MUF="1.0" PDF="305819" > PDF=305800 MemberID=19 </weight> -<weight id="1177" MUR="1.0" MUF="1.0" PDF="305820" > PDF=305800 MemberID=20 </weight> -<weight id="1178" MUR="1.0" MUF="1.0" PDF="305821" > PDF=305800 MemberID=21 </weight> -<weight id="1179" MUR="1.0" MUF="1.0" PDF="305822" > PDF=305800 MemberID=22 </weight> -<weight id="1180" MUR="1.0" MUF="1.0" PDF="305823" > PDF=305800 MemberID=23 </weight> -<weight id="1181" MUR="1.0" MUF="1.0" PDF="305824" > PDF=305800 MemberID=24 </weight> -<weight id="1182" MUR="1.0" MUF="1.0" PDF="305825" > PDF=305800 MemberID=25 </weight> -<weight id="1183" MUR="1.0" MUF="1.0" PDF="305826" > PDF=305800 MemberID=26 </weight> -<weight id="1184" MUR="1.0" MUF="1.0" PDF="305827" > PDF=305800 MemberID=27 </weight> -<weight id="1185" MUR="1.0" MUF="1.0" PDF="305828" > PDF=305800 MemberID=28 </weight> -<weight id="1186" MUR="1.0" MUF="1.0" PDF="305829" > PDF=305800 MemberID=29 </weight> -<weight id="1187" MUR="1.0" MUF="1.0" PDF="305830" > PDF=305800 MemberID=30 </weight> -<weight id="1188" MUR="1.0" MUF="1.0" PDF="305831" > PDF=305800 MemberID=31 </weight> -<weight id="1189" MUR="1.0" MUF="1.0" PDF="305832" > PDF=305800 MemberID=32 </weight> -<weight id="1190" MUR="1.0" MUF="1.0" PDF="305833" > PDF=305800 MemberID=33 </weight> -<weight id="1191" MUR="1.0" MUF="1.0" PDF="305834" > PDF=305800 MemberID=34 </weight> -<weight id="1192" MUR="1.0" MUF="1.0" PDF="305835" > PDF=305800 MemberID=35 </weight> -<weight id="1193" MUR="1.0" MUF="1.0" PDF="305836" > PDF=305800 MemberID=36 </weight> -<weight id="1194" MUR="1.0" MUF="1.0" PDF="305837" > PDF=305800 MemberID=37 </weight> -<weight id="1195" MUR="1.0" MUF="1.0" PDF="305838" > PDF=305800 MemberID=38 </weight> -<weight id="1196" MUR="1.0" MUF="1.0" PDF="305839" > PDF=305800 MemberID=39 </weight> -<weight id="1197" MUR="1.0" MUF="1.0" PDF="305840" > PDF=305800 MemberID=40 </weight> -<weight id="1198" MUR="1.0" MUF="1.0" PDF="305841" > PDF=305800 MemberID=41 </weight> -<weight id="1199" MUR="1.0" MUF="1.0" PDF="305842" > PDF=305800 MemberID=42 </weight> -<weight id="1200" MUR="1.0" MUF="1.0" PDF="305843" > PDF=305800 MemberID=43 </weight> -<weight id="1201" MUR="1.0" MUF="1.0" PDF="305844" > PDF=305800 MemberID=44 </weight> -<weight id="1202" MUR="1.0" MUF="1.0" PDF="305845" > PDF=305800 MemberID=45 </weight> -<weight id="1203" MUR="1.0" MUF="1.0" PDF="305846" > PDF=305800 MemberID=46 </weight> -<weight id="1204" MUR="1.0" MUF="1.0" PDF="305847" > PDF=305800 MemberID=47 </weight> -<weight id="1205" MUR="1.0" MUF="1.0" PDF="305848" > PDF=305800 MemberID=48 </weight> -<weight id="1206" MUR="1.0" MUF="1.0" PDF="305849" > PDF=305800 MemberID=49 </weight> -<weight id="1207" MUR="1.0" MUF="1.0" PDF="305850" > PDF=305800 MemberID=50 </weight> -<weight id="1208" MUR="1.0" MUF="1.0" PDF="305851" > PDF=305800 MemberID=51 </weight> -<weight id="1209" MUR="1.0" MUF="1.0" PDF="305852" > PDF=305800 MemberID=52 </weight> -<weight id="1210" MUR="1.0" MUF="1.0" PDF="305853" > PDF=305800 MemberID=53 </weight> -<weight id="1211" MUR="1.0" MUF="1.0" PDF="305854" > PDF=305800 MemberID=54 </weight> -<weight id="1212" MUR="1.0" MUF="1.0" PDF="305855" > PDF=305800 MemberID=55 </weight> -<weight id="1213" MUR="1.0" MUF="1.0" PDF="305856" > PDF=305800 MemberID=56 </weight> -<weight id="1214" MUR="1.0" MUF="1.0" PDF="305857" > PDF=305800 MemberID=57 </weight> -<weight id="1215" MUR="1.0" MUF="1.0" PDF="305858" > PDF=305800 MemberID=58 </weight> -<weight id="1216" MUR="1.0" MUF="1.0" PDF="305859" > PDF=305800 MemberID=59 </weight> -<weight id="1217" MUR="1.0" MUF="1.0" PDF="305860" > PDF=305800 MemberID=60 </weight> -<weight id="1218" MUR="1.0" MUF="1.0" PDF="305861" > PDF=305800 MemberID=61 </weight> -<weight id="1219" MUR="1.0" MUF="1.0" PDF="305862" > PDF=305800 MemberID=62 </weight> -<weight id="1220" MUR="1.0" MUF="1.0" PDF="305863" > PDF=305800 MemberID=63 </weight> -<weight id="1221" MUR="1.0" MUF="1.0" PDF="305864" > PDF=305800 MemberID=64 </weight> -<weight id="1222" MUR="1.0" MUF="1.0" PDF="305865" > PDF=305800 MemberID=65 </weight> -<weight id="1223" MUR="1.0" MUF="1.0" PDF="305866" > PDF=305800 MemberID=66 </weight> -<weight id="1224" MUR="1.0" MUF="1.0" PDF="305867" > PDF=305800 MemberID=67 </weight> -<weight id="1225" MUR="1.0" MUF="1.0" PDF="305868" > PDF=305800 MemberID=68 </weight> -<weight id="1226" MUR="1.0" MUF="1.0" PDF="305869" > PDF=305800 MemberID=69 </weight> -<weight id="1227" MUR="1.0" MUF="1.0" PDF="305870" > PDF=305800 MemberID=70 </weight> -<weight id="1228" MUR="1.0" MUF="1.0" PDF="305871" > PDF=305800 MemberID=71 </weight> -<weight id="1229" MUR="1.0" MUF="1.0" PDF="305872" > PDF=305800 MemberID=72 </weight> -<weight id="1230" MUR="1.0" MUF="1.0" PDF="305873" > PDF=305800 MemberID=73 </weight> -<weight id="1231" MUR="1.0" MUF="1.0" PDF="305874" > PDF=305800 MemberID=74 </weight> -<weight id="1232" MUR="1.0" MUF="1.0" PDF="305875" > PDF=305800 MemberID=75 </weight> -<weight id="1233" MUR="1.0" MUF="1.0" PDF="305876" > PDF=305800 MemberID=76 </weight> -<weight id="1234" MUR="1.0" MUF="1.0" PDF="305877" > PDF=305800 MemberID=77 </weight> -<weight id="1235" MUR="1.0" MUF="1.0" PDF="305878" > PDF=305800 MemberID=78 </weight> -<weight id="1236" MUR="1.0" MUF="1.0" PDF="305879" > PDF=305800 MemberID=79 </weight> -<weight id="1237" MUR="1.0" MUF="1.0" PDF="305880" > PDF=305800 MemberID=80 </weight> -<weight id="1238" MUR="1.0" MUF="1.0" PDF="305881" > PDF=305800 MemberID=81 </weight> -<weight id="1239" MUR="1.0" MUF="1.0" PDF="305882" > PDF=305800 MemberID=82 </weight> -<weight id="1240" MUR="1.0" MUF="1.0" PDF="305883" > PDF=305800 MemberID=83 </weight> -<weight id="1241" MUR="1.0" MUF="1.0" PDF="305884" > PDF=305800 MemberID=84 </weight> -<weight id="1242" MUR="1.0" MUF="1.0" PDF="305885" > PDF=305800 MemberID=85 </weight> -<weight id="1243" MUR="1.0" MUF="1.0" PDF="305886" > PDF=305800 MemberID=86 </weight> -<weight id="1244" MUR="1.0" MUF="1.0" PDF="305887" > PDF=305800 MemberID=87 </weight> -<weight id="1245" MUR="1.0" MUF="1.0" PDF="305888" > PDF=305800 MemberID=88 </weight> -<weight id="1246" MUR="1.0" MUF="1.0" PDF="305889" > PDF=305800 MemberID=89 </weight> -<weight id="1247" MUR="1.0" MUF="1.0" PDF="305890" > PDF=305800 MemberID=90 </weight> -<weight id="1248" MUR="1.0" MUF="1.0" PDF="305891" > PDF=305800 MemberID=91 </weight> -<weight id="1249" MUR="1.0" MUF="1.0" PDF="305892" > PDF=305800 MemberID=92 </weight> -<weight id="1250" MUR="1.0" MUF="1.0" PDF="305893" > PDF=305800 MemberID=93 </weight> -<weight id="1251" MUR="1.0" MUF="1.0" PDF="305894" > PDF=305800 MemberID=94 </weight> -<weight id="1252" MUR="1.0" MUF="1.0" PDF="305895" > PDF=305800 MemberID=95 </weight> -<weight id="1253" MUR="1.0" MUF="1.0" PDF="305896" > PDF=305800 MemberID=96 </weight> -<weight id="1254" MUR="1.0" MUF="1.0" PDF="305897" > PDF=305800 MemberID=97 </weight> -<weight id="1255" MUR="1.0" MUF="1.0" PDF="305898" > PDF=305800 MemberID=98 </weight> -<weight id="1256" MUR="1.0" MUF="1.0" PDF="305899" > PDF=305800 MemberID=99 </weight> -<weight id="1257" MUR="1.0" MUF="1.0" PDF="305900" > PDF=305800 MemberID=100 </weight> -<weight id="1258" MUR="1.0" MUF="1.0" PDF="305901" > PDF=305800 MemberID=101 </weight> -<weight id="1259" MUR="1.0" MUF="1.0" PDF="305902" > PDF=305800 MemberID=102 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="CT14nnlo" combine="hessian"> # 13000: CT14nnlo, 3-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% -<weight id="1260" MUR="1.0" MUF="1.0" PDF="13000" > PDF=13000 MemberID=0 </weight> -<weight id="1261" MUR="1.0" MUF="1.0" PDF="13001" > PDF=13000 MemberID=1 </weight> -<weight id="1262" MUR="1.0" MUF="1.0" PDF="13002" > PDF=13000 MemberID=2 </weight> -<weight id="1263" MUR="1.0" MUF="1.0" PDF="13003" > PDF=13000 MemberID=3 </weight> -<weight id="1264" MUR="1.0" MUF="1.0" PDF="13004" > PDF=13000 MemberID=4 </weight> -<weight id="1265" MUR="1.0" MUF="1.0" PDF="13005" > PDF=13000 MemberID=5 </weight> -<weight id="1266" MUR="1.0" MUF="1.0" PDF="13006" > PDF=13000 MemberID=6 </weight> -<weight id="1267" MUR="1.0" MUF="1.0" PDF="13007" > PDF=13000 MemberID=7 </weight> -<weight id="1268" MUR="1.0" MUF="1.0" PDF="13008" > PDF=13000 MemberID=8 </weight> -<weight id="1269" MUR="1.0" MUF="1.0" PDF="13009" > PDF=13000 MemberID=9 </weight> -<weight id="1270" MUR="1.0" MUF="1.0" PDF="13010" > PDF=13000 MemberID=10 </weight> -<weight id="1271" MUR="1.0" MUF="1.0" PDF="13011" > PDF=13000 MemberID=11 </weight> -<weight id="1272" MUR="1.0" MUF="1.0" PDF="13012" > PDF=13000 MemberID=12 </weight> -<weight id="1273" MUR="1.0" MUF="1.0" PDF="13013" > PDF=13000 MemberID=13 </weight> -<weight id="1274" MUR="1.0" MUF="1.0" PDF="13014" > PDF=13000 MemberID=14 </weight> -<weight id="1275" MUR="1.0" MUF="1.0" PDF="13015" > PDF=13000 MemberID=15 </weight> -<weight id="1276" MUR="1.0" MUF="1.0" PDF="13016" > PDF=13000 MemberID=16 </weight> -<weight id="1277" MUR="1.0" MUF="1.0" PDF="13017" > PDF=13000 MemberID=17 </weight> -<weight id="1278" MUR="1.0" MUF="1.0" PDF="13018" > PDF=13000 MemberID=18 </weight> -<weight id="1279" MUR="1.0" MUF="1.0" PDF="13019" > PDF=13000 MemberID=19 </weight> -<weight id="1280" MUR="1.0" MUF="1.0" PDF="13020" > PDF=13000 MemberID=20 </weight> -<weight id="1281" MUR="1.0" MUF="1.0" PDF="13021" > PDF=13000 MemberID=21 </weight> -<weight id="1282" MUR="1.0" MUF="1.0" PDF="13022" > PDF=13000 MemberID=22 </weight> -<weight id="1283" MUR="1.0" MUF="1.0" PDF="13023" > PDF=13000 MemberID=23 </weight> -<weight id="1284" MUR="1.0" MUF="1.0" PDF="13024" > PDF=13000 MemberID=24 </weight> -<weight id="1285" MUR="1.0" MUF="1.0" PDF="13025" > PDF=13000 MemberID=25 </weight> -<weight id="1286" MUR="1.0" MUF="1.0" PDF="13026" > PDF=13000 MemberID=26 </weight> -<weight id="1287" MUR="1.0" MUF="1.0" PDF="13027" > PDF=13000 MemberID=27 </weight> -<weight id="1288" MUR="1.0" MUF="1.0" PDF="13028" > PDF=13000 MemberID=28 </weight> -<weight id="1289" MUR="1.0" MUF="1.0" PDF="13029" > PDF=13000 MemberID=29 </weight> -<weight id="1290" MUR="1.0" MUF="1.0" PDF="13030" > PDF=13000 MemberID=30 </weight> -<weight id="1291" MUR="1.0" MUF="1.0" PDF="13031" > PDF=13000 MemberID=31 </weight> -<weight id="1292" MUR="1.0" MUF="1.0" PDF="13032" > PDF=13000 MemberID=32 </weight> -<weight id="1293" MUR="1.0" MUF="1.0" PDF="13033" > PDF=13000 MemberID=33 </weight> -<weight id="1294" MUR="1.0" MUF="1.0" PDF="13034" > PDF=13000 MemberID=34 </weight> -<weight id="1295" MUR="1.0" MUF="1.0" PDF="13035" > PDF=13000 MemberID=35 </weight> -<weight id="1296" MUR="1.0" MUF="1.0" PDF="13036" > PDF=13000 MemberID=36 </weight> -<weight id="1297" MUR="1.0" MUF="1.0" PDF="13037" > PDF=13000 MemberID=37 </weight> -<weight id="1298" MUR="1.0" MUF="1.0" PDF="13038" > PDF=13000 MemberID=38 </weight> -<weight id="1299" MUR="1.0" MUF="1.0" PDF="13039" > PDF=13000 MemberID=39 </weight> -<weight id="1300" MUR="1.0" MUF="1.0" PDF="13040" > PDF=13000 MemberID=40 </weight> -<weight id="1301" MUR="1.0" MUF="1.0" PDF="13041" > PDF=13000 MemberID=41 </weight> -<weight id="1302" MUR="1.0" MUF="1.0" PDF="13042" > PDF=13000 MemberID=42 </weight> -<weight id="1303" MUR="1.0" MUF="1.0" PDF="13043" > PDF=13000 MemberID=43 </weight> -<weight id="1304" MUR="1.0" MUF="1.0" PDF="13044" > PDF=13000 MemberID=44 </weight> -<weight id="1305" MUR="1.0" MUF="1.0" PDF="13045" > PDF=13000 MemberID=45 </weight> -<weight id="1306" MUR="1.0" MUF="1.0" PDF="13046" > PDF=13000 MemberID=46 </weight> -<weight id="1307" MUR="1.0" MUF="1.0" PDF="13047" > PDF=13000 MemberID=47 </weight> -<weight id="1308" MUR="1.0" MUF="1.0" PDF="13048" > PDF=13000 MemberID=48 </weight> -<weight id="1309" MUR="1.0" MUF="1.0" PDF="13049" > PDF=13000 MemberID=49 </weight> -<weight id="1310" MUR="1.0" MUF="1.0" PDF="13050" > PDF=13000 MemberID=50 </weight> -<weight id="1311" MUR="1.0" MUF="1.0" PDF="13051" > PDF=13000 MemberID=51 </weight> -<weight id="1312" MUR="1.0" MUF="1.0" PDF="13052" > PDF=13000 MemberID=52 </weight> -<weight id="1313" MUR="1.0" MUF="1.0" PDF="13053" > PDF=13000 MemberID=53 </weight> -<weight id="1314" MUR="1.0" MUF="1.0" PDF="13054" > PDF=13000 MemberID=54 </weight> -<weight id="1315" MUR="1.0" MUF="1.0" PDF="13055" > PDF=13000 MemberID=55 </weight> -<weight id="1316" MUR="1.0" MUF="1.0" PDF="13056" > PDF=13000 MemberID=56 </weight> -</weightgroup> # PDFSET -> PDF -<weight id="1317" MUR="1.0" MUF="1.0" PDF="13065" > PDF=13065 MemberID=0 </weight> -<weight id="1318" MUR="1.0" MUF="1.0" PDF="13069" > PDF=13069 MemberID=0 </weight> -<weightgroup name="CT14nlo" combine="hessian"> # 13100: CT14nlo, 2-loop PDF evolution with HOPPET and HOPPET alphas_s running solution. This set has 57 member PDFs. mem=0 --.gt. central value; mem=1-56 --.gt. eigenvector sets 90% -<weight id="1319" MUR="1.0" MUF="1.0" PDF="13100" > PDF=13100 MemberID=0 </weight> -<weight id="1320" MUR="1.0" MUF="1.0" PDF="13101" > PDF=13100 MemberID=1 </weight> -<weight id="1321" MUR="1.0" MUF="1.0" PDF="13102" > PDF=13100 MemberID=2 </weight> -<weight id="1322" MUR="1.0" MUF="1.0" PDF="13103" > PDF=13100 MemberID=3 </weight> -<weight id="1323" MUR="1.0" MUF="1.0" PDF="13104" > PDF=13100 MemberID=4 </weight> -<weight id="1324" MUR="1.0" MUF="1.0" PDF="13105" > PDF=13100 MemberID=5 </weight> -<weight id="1325" MUR="1.0" MUF="1.0" PDF="13106" > PDF=13100 MemberID=6 </weight> -<weight id="1326" MUR="1.0" MUF="1.0" PDF="13107" > PDF=13100 MemberID=7 </weight> -<weight id="1327" MUR="1.0" MUF="1.0" PDF="13108" > PDF=13100 MemberID=8 </weight> -<weight id="1328" MUR="1.0" MUF="1.0" PDF="13109" > PDF=13100 MemberID=9 </weight> -<weight id="1329" MUR="1.0" MUF="1.0" PDF="13110" > PDF=13100 MemberID=10 </weight> -<weight id="1330" MUR="1.0" MUF="1.0" PDF="13111" > PDF=13100 MemberID=11 </weight> -<weight id="1331" MUR="1.0" MUF="1.0" PDF="13112" > PDF=13100 MemberID=12 </weight> -<weight id="1332" MUR="1.0" MUF="1.0" PDF="13113" > PDF=13100 MemberID=13 </weight> -<weight id="1333" MUR="1.0" MUF="1.0" PDF="13114" > PDF=13100 MemberID=14 </weight> -<weight id="1334" MUR="1.0" MUF="1.0" PDF="13115" > PDF=13100 MemberID=15 </weight> -<weight id="1335" MUR="1.0" MUF="1.0" PDF="13116" > PDF=13100 MemberID=16 </weight> -<weight id="1336" MUR="1.0" MUF="1.0" PDF="13117" > PDF=13100 MemberID=17 </weight> -<weight id="1337" MUR="1.0" MUF="1.0" PDF="13118" > PDF=13100 MemberID=18 </weight> -<weight id="1338" MUR="1.0" MUF="1.0" PDF="13119" > PDF=13100 MemberID=19 </weight> -<weight id="1339" MUR="1.0" MUF="1.0" PDF="13120" > PDF=13100 MemberID=20 </weight> -<weight id="1340" MUR="1.0" MUF="1.0" PDF="13121" > PDF=13100 MemberID=21 </weight> -<weight id="1341" MUR="1.0" MUF="1.0" PDF="13122" > PDF=13100 MemberID=22 </weight> -<weight id="1342" MUR="1.0" MUF="1.0" PDF="13123" > PDF=13100 MemberID=23 </weight> -<weight id="1343" MUR="1.0" MUF="1.0" PDF="13124" > PDF=13100 MemberID=24 </weight> -<weight id="1344" MUR="1.0" MUF="1.0" PDF="13125" > PDF=13100 MemberID=25 </weight> -<weight id="1345" MUR="1.0" MUF="1.0" PDF="13126" > PDF=13100 MemberID=26 </weight> -<weight id="1346" MUR="1.0" MUF="1.0" PDF="13127" > PDF=13100 MemberID=27 </weight> -<weight id="1347" MUR="1.0" MUF="1.0" PDF="13128" > PDF=13100 MemberID=28 </weight> -<weight id="1348" MUR="1.0" MUF="1.0" PDF="13129" > PDF=13100 MemberID=29 </weight> -<weight id="1349" MUR="1.0" MUF="1.0" PDF="13130" > PDF=13100 MemberID=30 </weight> -<weight id="1350" MUR="1.0" MUF="1.0" PDF="13131" > PDF=13100 MemberID=31 </weight> -<weight id="1351" MUR="1.0" MUF="1.0" PDF="13132" > PDF=13100 MemberID=32 </weight> -<weight id="1352" MUR="1.0" MUF="1.0" PDF="13133" > PDF=13100 MemberID=33 </weight> -<weight id="1353" MUR="1.0" MUF="1.0" PDF="13134" > PDF=13100 MemberID=34 </weight> -<weight id="1354" MUR="1.0" MUF="1.0" PDF="13135" > PDF=13100 MemberID=35 </weight> -<weight id="1355" MUR="1.0" MUF="1.0" PDF="13136" > PDF=13100 MemberID=36 </weight> -<weight id="1356" MUR="1.0" MUF="1.0" PDF="13137" > PDF=13100 MemberID=37 </weight> -<weight id="1357" MUR="1.0" MUF="1.0" PDF="13138" > PDF=13100 MemberID=38 </weight> -<weight id="1358" MUR="1.0" MUF="1.0" PDF="13139" > PDF=13100 MemberID=39 </weight> -<weight id="1359" MUR="1.0" MUF="1.0" PDF="13140" > PDF=13100 MemberID=40 </weight> -<weight id="1360" MUR="1.0" MUF="1.0" PDF="13141" > PDF=13100 MemberID=41 </weight> -<weight id="1361" MUR="1.0" MUF="1.0" PDF="13142" > PDF=13100 MemberID=42 </weight> -<weight id="1362" MUR="1.0" MUF="1.0" PDF="13143" > PDF=13100 MemberID=43 </weight> -<weight id="1363" MUR="1.0" MUF="1.0" PDF="13144" > PDF=13100 MemberID=44 </weight> -<weight id="1364" MUR="1.0" MUF="1.0" PDF="13145" > PDF=13100 MemberID=45 </weight> -<weight id="1365" MUR="1.0" MUF="1.0" PDF="13146" > PDF=13100 MemberID=46 </weight> -<weight id="1366" MUR="1.0" MUF="1.0" PDF="13147" > PDF=13100 MemberID=47 </weight> -<weight id="1367" MUR="1.0" MUF="1.0" PDF="13148" > PDF=13100 MemberID=48 </weight> -<weight id="1368" MUR="1.0" MUF="1.0" PDF="13149" > PDF=13100 MemberID=49 </weight> -<weight id="1369" MUR="1.0" MUF="1.0" PDF="13150" > PDF=13100 MemberID=50 </weight> -<weight id="1370" MUR="1.0" MUF="1.0" PDF="13151" > PDF=13100 MemberID=51 </weight> -<weight id="1371" MUR="1.0" MUF="1.0" PDF="13152" > PDF=13100 MemberID=52 </weight> -<weight id="1372" MUR="1.0" MUF="1.0" PDF="13153" > PDF=13100 MemberID=53 </weight> -<weight id="1373" MUR="1.0" MUF="1.0" PDF="13154" > PDF=13100 MemberID=54 </weight> -<weight id="1374" MUR="1.0" MUF="1.0" PDF="13155" > PDF=13100 MemberID=55 </weight> -<weight id="1375" MUR="1.0" MUF="1.0" PDF="13156" > PDF=13100 MemberID=56 </weight> -</weightgroup> # PDFSET -> PDF -<weight id="1376" MUR="1.0" MUF="1.0" PDF="13163" > PDF=13163 MemberID=0 </weight> -<weight id="1377" MUR="1.0" MUF="1.0" PDF="13167" > PDF=13167 MemberID=0 </weight> -<weight id="1378" MUR="1.0" MUF="1.0" PDF="13200" > PDF=13200 MemberID=0 </weight> -<weightgroup name="MMHT2014nlo68clas118" combine="hessian"> # 25200: MMHT 2014 NLO (68% C.L.) alpha_S=0.118. mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht -<weight id="1379" MUR="1.0" MUF="1.0" PDF="25200" > PDF=25200 MemberID=0 </weight> -<weight id="1380" MUR="1.0" MUF="1.0" PDF="25201" > PDF=25200 MemberID=1 </weight> -<weight id="1381" MUR="1.0" MUF="1.0" PDF="25202" > PDF=25200 MemberID=2 </weight> -<weight id="1382" MUR="1.0" MUF="1.0" PDF="25203" > PDF=25200 MemberID=3 </weight> -<weight id="1383" MUR="1.0" MUF="1.0" PDF="25204" > PDF=25200 MemberID=4 </weight> -<weight id="1384" MUR="1.0" MUF="1.0" PDF="25205" > PDF=25200 MemberID=5 </weight> -<weight id="1385" MUR="1.0" MUF="1.0" PDF="25206" > PDF=25200 MemberID=6 </weight> -<weight id="1386" MUR="1.0" MUF="1.0" PDF="25207" > PDF=25200 MemberID=7 </weight> -<weight id="1387" MUR="1.0" MUF="1.0" PDF="25208" > PDF=25200 MemberID=8 </weight> -<weight id="1388" MUR="1.0" MUF="1.0" PDF="25209" > PDF=25200 MemberID=9 </weight> -<weight id="1389" MUR="1.0" MUF="1.0" PDF="25210" > PDF=25200 MemberID=10 </weight> -<weight id="1390" MUR="1.0" MUF="1.0" PDF="25211" > PDF=25200 MemberID=11 </weight> -<weight id="1391" MUR="1.0" MUF="1.0" PDF="25212" > PDF=25200 MemberID=12 </weight> -<weight id="1392" MUR="1.0" MUF="1.0" PDF="25213" > PDF=25200 MemberID=13 </weight> -<weight id="1393" MUR="1.0" MUF="1.0" PDF="25214" > PDF=25200 MemberID=14 </weight> -<weight id="1394" MUR="1.0" MUF="1.0" PDF="25215" > PDF=25200 MemberID=15 </weight> -<weight id="1395" MUR="1.0" MUF="1.0" PDF="25216" > PDF=25200 MemberID=16 </weight> -<weight id="1396" MUR="1.0" MUF="1.0" PDF="25217" > PDF=25200 MemberID=17 </weight> -<weight id="1397" MUR="1.0" MUF="1.0" PDF="25218" > PDF=25200 MemberID=18 </weight> -<weight id="1398" MUR="1.0" MUF="1.0" PDF="25219" > PDF=25200 MemberID=19 </weight> -<weight id="1399" MUR="1.0" MUF="1.0" PDF="25220" > PDF=25200 MemberID=20 </weight> -<weight id="1400" MUR="1.0" MUF="1.0" PDF="25221" > PDF=25200 MemberID=21 </weight> -<weight id="1401" MUR="1.0" MUF="1.0" PDF="25222" > PDF=25200 MemberID=22 </weight> -<weight id="1402" MUR="1.0" MUF="1.0" PDF="25223" > PDF=25200 MemberID=23 </weight> -<weight id="1403" MUR="1.0" MUF="1.0" PDF="25224" > PDF=25200 MemberID=24 </weight> -<weight id="1404" MUR="1.0" MUF="1.0" PDF="25225" > PDF=25200 MemberID=25 </weight> -<weight id="1405" MUR="1.0" MUF="1.0" PDF="25226" > PDF=25200 MemberID=26 </weight> -<weight id="1406" MUR="1.0" MUF="1.0" PDF="25227" > PDF=25200 MemberID=27 </weight> -<weight id="1407" MUR="1.0" MUF="1.0" PDF="25228" > PDF=25200 MemberID=28 </weight> -<weight id="1408" MUR="1.0" MUF="1.0" PDF="25229" > PDF=25200 MemberID=29 </weight> -<weight id="1409" MUR="1.0" MUF="1.0" PDF="25230" > PDF=25200 MemberID=30 </weight> -<weight id="1410" MUR="1.0" MUF="1.0" PDF="25231" > PDF=25200 MemberID=31 </weight> -<weight id="1411" MUR="1.0" MUF="1.0" PDF="25232" > PDF=25200 MemberID=32 </weight> -<weight id="1412" MUR="1.0" MUF="1.0" PDF="25233" > PDF=25200 MemberID=33 </weight> -<weight id="1413" MUR="1.0" MUF="1.0" PDF="25234" > PDF=25200 MemberID=34 </weight> -<weight id="1414" MUR="1.0" MUF="1.0" PDF="25235" > PDF=25200 MemberID=35 </weight> -<weight id="1415" MUR="1.0" MUF="1.0" PDF="25236" > PDF=25200 MemberID=36 </weight> -<weight id="1416" MUR="1.0" MUF="1.0" PDF="25237" > PDF=25200 MemberID=37 </weight> -<weight id="1417" MUR="1.0" MUF="1.0" PDF="25238" > PDF=25200 MemberID=38 </weight> -<weight id="1418" MUR="1.0" MUF="1.0" PDF="25239" > PDF=25200 MemberID=39 </weight> -<weight id="1419" MUR="1.0" MUF="1.0" PDF="25240" > PDF=25200 MemberID=40 </weight> -<weight id="1420" MUR="1.0" MUF="1.0" PDF="25241" > PDF=25200 MemberID=41 </weight> -<weight id="1421" MUR="1.0" MUF="1.0" PDF="25242" > PDF=25200 MemberID=42 </weight> -<weight id="1422" MUR="1.0" MUF="1.0" PDF="25243" > PDF=25200 MemberID=43 </weight> -<weight id="1423" MUR="1.0" MUF="1.0" PDF="25244" > PDF=25200 MemberID=44 </weight> -<weight id="1424" MUR="1.0" MUF="1.0" PDF="25245" > PDF=25200 MemberID=45 </weight> -<weight id="1425" MUR="1.0" MUF="1.0" PDF="25246" > PDF=25200 MemberID=46 </weight> -<weight id="1426" MUR="1.0" MUF="1.0" PDF="25247" > PDF=25200 MemberID=47 </weight> -<weight id="1427" MUR="1.0" MUF="1.0" PDF="25248" > PDF=25200 MemberID=48 </weight> -<weight id="1428" MUR="1.0" MUF="1.0" PDF="25249" > PDF=25200 MemberID=49 </weight> -<weight id="1429" MUR="1.0" MUF="1.0" PDF="25250" > PDF=25200 MemberID=50 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="MMHT2014nnlo68cl" combine="hessian"> # 25300: MMHT 2014 NNLO (68% C.L.). mem=0 ; central value; mem=1-50 ; 25 eigenvector sets (+/- directions). See Section 6 of arXiv:0901.0002 for error calculation. Web address: www.hep.ucl.ac.uk/mmht -<weight id="1430" MUR="1.0" MUF="1.0" PDF="25300" > PDF=25300 MemberID=0 </weight> -<weight id="1431" MUR="1.0" MUF="1.0" PDF="25301" > PDF=25300 MemberID=1 </weight> -<weight id="1432" MUR="1.0" MUF="1.0" PDF="25302" > PDF=25300 MemberID=2 </weight> -<weight id="1433" MUR="1.0" MUF="1.0" PDF="25303" > PDF=25300 MemberID=3 </weight> -<weight id="1434" MUR="1.0" MUF="1.0" PDF="25304" > PDF=25300 MemberID=4 </weight> -<weight id="1435" MUR="1.0" MUF="1.0" PDF="25305" > PDF=25300 MemberID=5 </weight> -<weight id="1436" MUR="1.0" MUF="1.0" PDF="25306" > PDF=25300 MemberID=6 </weight> -<weight id="1437" MUR="1.0" MUF="1.0" PDF="25307" > PDF=25300 MemberID=7 </weight> -<weight id="1438" MUR="1.0" MUF="1.0" PDF="25308" > PDF=25300 MemberID=8 </weight> -<weight id="1439" MUR="1.0" MUF="1.0" PDF="25309" > PDF=25300 MemberID=9 </weight> -<weight id="1440" MUR="1.0" MUF="1.0" PDF="25310" > PDF=25300 MemberID=10 </weight> -<weight id="1441" MUR="1.0" MUF="1.0" PDF="25311" > PDF=25300 MemberID=11 </weight> -<weight id="1442" MUR="1.0" MUF="1.0" PDF="25312" > PDF=25300 MemberID=12 </weight> -<weight id="1443" MUR="1.0" MUF="1.0" PDF="25313" > PDF=25300 MemberID=13 </weight> -<weight id="1444" MUR="1.0" MUF="1.0" PDF="25314" > PDF=25300 MemberID=14 </weight> -<weight id="1445" MUR="1.0" MUF="1.0" PDF="25315" > PDF=25300 MemberID=15 </weight> -<weight id="1446" MUR="1.0" MUF="1.0" PDF="25316" > PDF=25300 MemberID=16 </weight> -<weight id="1447" MUR="1.0" MUF="1.0" PDF="25317" > PDF=25300 MemberID=17 </weight> -<weight id="1448" MUR="1.0" MUF="1.0" PDF="25318" > PDF=25300 MemberID=18 </weight> -<weight id="1449" MUR="1.0" MUF="1.0" PDF="25319" > PDF=25300 MemberID=19 </weight> -<weight id="1450" MUR="1.0" MUF="1.0" PDF="25320" > PDF=25300 MemberID=20 </weight> -<weight id="1451" MUR="1.0" MUF="1.0" PDF="25321" > PDF=25300 MemberID=21 </weight> -<weight id="1452" MUR="1.0" MUF="1.0" PDF="25322" > PDF=25300 MemberID=22 </weight> -<weight id="1453" MUR="1.0" MUF="1.0" PDF="25323" > PDF=25300 MemberID=23 </weight> -<weight id="1454" MUR="1.0" MUF="1.0" PDF="25324" > PDF=25300 MemberID=24 </weight> -<weight id="1455" MUR="1.0" MUF="1.0" PDF="25325" > PDF=25300 MemberID=25 </weight> -<weight id="1456" MUR="1.0" MUF="1.0" PDF="25326" > PDF=25300 MemberID=26 </weight> -<weight id="1457" MUR="1.0" MUF="1.0" PDF="25327" > PDF=25300 MemberID=27 </weight> -<weight id="1458" MUR="1.0" MUF="1.0" PDF="25328" > PDF=25300 MemberID=28 </weight> -<weight id="1459" MUR="1.0" MUF="1.0" PDF="25329" > PDF=25300 MemberID=29 </weight> -<weight id="1460" MUR="1.0" MUF="1.0" PDF="25330" > PDF=25300 MemberID=30 </weight> -<weight id="1461" MUR="1.0" MUF="1.0" PDF="25331" > PDF=25300 MemberID=31 </weight> -<weight id="1462" MUR="1.0" MUF="1.0" PDF="25332" > PDF=25300 MemberID=32 </weight> -<weight id="1463" MUR="1.0" MUF="1.0" PDF="25333" > PDF=25300 MemberID=33 </weight> -<weight id="1464" MUR="1.0" MUF="1.0" PDF="25334" > PDF=25300 MemberID=34 </weight> -<weight id="1465" MUR="1.0" MUF="1.0" PDF="25335" > PDF=25300 MemberID=35 </weight> -<weight id="1466" MUR="1.0" MUF="1.0" PDF="25336" > PDF=25300 MemberID=36 </weight> -<weight id="1467" MUR="1.0" MUF="1.0" PDF="25337" > PDF=25300 MemberID=37 </weight> -<weight id="1468" MUR="1.0" MUF="1.0" PDF="25338" > PDF=25300 MemberID=38 </weight> -<weight id="1469" MUR="1.0" MUF="1.0" PDF="25339" > PDF=25300 MemberID=39 </weight> -<weight id="1470" MUR="1.0" MUF="1.0" PDF="25340" > PDF=25300 MemberID=40 </weight> -<weight id="1471" MUR="1.0" MUF="1.0" PDF="25341" > PDF=25300 MemberID=41 </weight> -<weight id="1472" MUR="1.0" MUF="1.0" PDF="25342" > PDF=25300 MemberID=42 </weight> -<weight id="1473" MUR="1.0" MUF="1.0" PDF="25343" > PDF=25300 MemberID=43 </weight> -<weight id="1474" MUR="1.0" MUF="1.0" PDF="25344" > PDF=25300 MemberID=44 </weight> -<weight id="1475" MUR="1.0" MUF="1.0" PDF="25345" > PDF=25300 MemberID=45 </weight> -<weight id="1476" MUR="1.0" MUF="1.0" PDF="25346" > PDF=25300 MemberID=46 </weight> -<weight id="1477" MUR="1.0" MUF="1.0" PDF="25347" > PDF=25300 MemberID=47 </weight> -<weight id="1478" MUR="1.0" MUF="1.0" PDF="25348" > PDF=25300 MemberID=48 </weight> -<weight id="1479" MUR="1.0" MUF="1.0" PDF="25349" > PDF=25300 MemberID=49 </weight> -<weight id="1480" MUR="1.0" MUF="1.0" PDF="25350" > PDF=25300 MemberID=50 </weight> -</weightgroup> # PDFSET -> PDF -<weight id="1481" MUR="1.0" MUF="1.0" PDF="25000" > PDF=25000 MemberID=0 </weight> -<weightgroup name="ABMP16als118_5_nnlo" combine="symmhessian"> # 42780: NNLO 5-flavour PDFs with different alphas_s for the ABMP16 set -<weight id="1482" MUR="1.0" MUF="1.0" PDF="42780" > PDF=42780 MemberID=0 </weight> -<weight id="1483" MUR="1.0" MUF="1.0" PDF="42781" > PDF=42780 MemberID=1 </weight> -<weight id="1484" MUR="1.0" MUF="1.0" PDF="42782" > PDF=42780 MemberID=2 </weight> -<weight id="1485" MUR="1.0" MUF="1.0" PDF="42783" > PDF=42780 MemberID=3 </weight> -<weight id="1486" MUR="1.0" MUF="1.0" PDF="42784" > PDF=42780 MemberID=4 </weight> -<weight id="1487" MUR="1.0" MUF="1.0" PDF="42785" > PDF=42780 MemberID=5 </weight> -<weight id="1488" MUR="1.0" MUF="1.0" PDF="42786" > PDF=42780 MemberID=6 </weight> -<weight id="1489" MUR="1.0" MUF="1.0" PDF="42787" > PDF=42780 MemberID=7 </weight> -<weight id="1490" MUR="1.0" MUF="1.0" PDF="42788" > PDF=42780 MemberID=8 </weight> -<weight id="1491" MUR="1.0" MUF="1.0" PDF="42789" > PDF=42780 MemberID=9 </weight> -<weight id="1492" MUR="1.0" MUF="1.0" PDF="42790" > PDF=42780 MemberID=10 </weight> -<weight id="1493" MUR="1.0" MUF="1.0" PDF="42791" > PDF=42780 MemberID=11 </weight> -<weight id="1494" MUR="1.0" MUF="1.0" PDF="42792" > PDF=42780 MemberID=12 </weight> -<weight id="1495" MUR="1.0" MUF="1.0" PDF="42793" > PDF=42780 MemberID=13 </weight> -<weight id="1496" MUR="1.0" MUF="1.0" PDF="42794" > PDF=42780 MemberID=14 </weight> -<weight id="1497" MUR="1.0" MUF="1.0" PDF="42795" > PDF=42780 MemberID=15 </weight> -<weight id="1498" MUR="1.0" MUF="1.0" PDF="42796" > PDF=42780 MemberID=16 </weight> -<weight id="1499" MUR="1.0" MUF="1.0" PDF="42797" > PDF=42780 MemberID=17 </weight> -<weight id="1500" MUR="1.0" MUF="1.0" PDF="42798" > PDF=42780 MemberID=18 </weight> -<weight id="1501" MUR="1.0" MUF="1.0" PDF="42799" > PDF=42780 MemberID=19 </weight> -<weight id="1502" MUR="1.0" MUF="1.0" PDF="42800" > PDF=42780 MemberID=20 </weight> -<weight id="1503" MUR="1.0" MUF="1.0" PDF="42801" > PDF=42780 MemberID=21 </weight> -<weight id="1504" MUR="1.0" MUF="1.0" PDF="42802" > PDF=42780 MemberID=22 </weight> -<weight id="1505" MUR="1.0" MUF="1.0" PDF="42803" > PDF=42780 MemberID=23 </weight> -<weight id="1506" MUR="1.0" MUF="1.0" PDF="42804" > PDF=42780 MemberID=24 </weight> -<weight id="1507" MUR="1.0" MUF="1.0" PDF="42805" > PDF=42780 MemberID=25 </weight> -<weight id="1508" MUR="1.0" MUF="1.0" PDF="42806" > PDF=42780 MemberID=26 </weight> -<weight id="1509" MUR="1.0" MUF="1.0" PDF="42807" > PDF=42780 MemberID=27 </weight> -<weight id="1510" MUR="1.0" MUF="1.0" PDF="42808" > PDF=42780 MemberID=28 </weight> -<weight id="1511" MUR="1.0" MUF="1.0" PDF="42809" > PDF=42780 MemberID=29 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="PDF4LHC15_nlo_100_pdfas" combine="symmhessian+as"> # 90200: PDF4LHC15_nlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 -<weight id="1512" MUR="1.0" MUF="1.0" PDF="90200" > PDF=90200 MemberID=0 </weight> -<weight id="1513" MUR="1.0" MUF="1.0" PDF="90201" > PDF=90200 MemberID=1 </weight> -<weight id="1514" MUR="1.0" MUF="1.0" PDF="90202" > PDF=90200 MemberID=2 </weight> -<weight id="1515" MUR="1.0" MUF="1.0" PDF="90203" > PDF=90200 MemberID=3 </weight> -<weight id="1516" MUR="1.0" MUF="1.0" PDF="90204" > PDF=90200 MemberID=4 </weight> -<weight id="1517" MUR="1.0" MUF="1.0" PDF="90205" > PDF=90200 MemberID=5 </weight> -<weight id="1518" MUR="1.0" MUF="1.0" PDF="90206" > PDF=90200 MemberID=6 </weight> -<weight id="1519" MUR="1.0" MUF="1.0" PDF="90207" > PDF=90200 MemberID=7 </weight> -<weight id="1520" MUR="1.0" MUF="1.0" PDF="90208" > PDF=90200 MemberID=8 </weight> -<weight id="1521" MUR="1.0" MUF="1.0" PDF="90209" > PDF=90200 MemberID=9 </weight> -<weight id="1522" MUR="1.0" MUF="1.0" PDF="90210" > PDF=90200 MemberID=10 </weight> -<weight id="1523" MUR="1.0" MUF="1.0" PDF="90211" > PDF=90200 MemberID=11 </weight> -<weight id="1524" MUR="1.0" MUF="1.0" PDF="90212" > PDF=90200 MemberID=12 </weight> -<weight id="1525" MUR="1.0" MUF="1.0" PDF="90213" > PDF=90200 MemberID=13 </weight> -<weight id="1526" MUR="1.0" MUF="1.0" PDF="90214" > PDF=90200 MemberID=14 </weight> -<weight id="1527" MUR="1.0" MUF="1.0" PDF="90215" > PDF=90200 MemberID=15 </weight> -<weight id="1528" MUR="1.0" MUF="1.0" PDF="90216" > PDF=90200 MemberID=16 </weight> -<weight id="1529" MUR="1.0" MUF="1.0" PDF="90217" > PDF=90200 MemberID=17 </weight> -<weight id="1530" MUR="1.0" MUF="1.0" PDF="90218" > PDF=90200 MemberID=18 </weight> -<weight id="1531" MUR="1.0" MUF="1.0" PDF="90219" > PDF=90200 MemberID=19 </weight> -<weight id="1532" MUR="1.0" MUF="1.0" PDF="90220" > PDF=90200 MemberID=20 </weight> -<weight id="1533" MUR="1.0" MUF="1.0" PDF="90221" > PDF=90200 MemberID=21 </weight> -<weight id="1534" MUR="1.0" MUF="1.0" PDF="90222" > PDF=90200 MemberID=22 </weight> -<weight id="1535" MUR="1.0" MUF="1.0" PDF="90223" > PDF=90200 MemberID=23 </weight> -<weight id="1536" MUR="1.0" MUF="1.0" PDF="90224" > PDF=90200 MemberID=24 </weight> -<weight id="1537" MUR="1.0" MUF="1.0" PDF="90225" > PDF=90200 MemberID=25 </weight> -<weight id="1538" MUR="1.0" MUF="1.0" PDF="90226" > PDF=90200 MemberID=26 </weight> -<weight id="1539" MUR="1.0" MUF="1.0" PDF="90227" > PDF=90200 MemberID=27 </weight> -<weight id="1540" MUR="1.0" MUF="1.0" PDF="90228" > PDF=90200 MemberID=28 </weight> -<weight id="1541" MUR="1.0" MUF="1.0" PDF="90229" > PDF=90200 MemberID=29 </weight> -<weight id="1542" MUR="1.0" MUF="1.0" PDF="90230" > PDF=90200 MemberID=30 </weight> -<weight id="1543" MUR="1.0" MUF="1.0" PDF="90231" > PDF=90200 MemberID=31 </weight> -<weight id="1544" MUR="1.0" MUF="1.0" PDF="90232" > PDF=90200 MemberID=32 </weight> -<weight id="1545" MUR="1.0" MUF="1.0" PDF="90233" > PDF=90200 MemberID=33 </weight> -<weight id="1546" MUR="1.0" MUF="1.0" PDF="90234" > PDF=90200 MemberID=34 </weight> -<weight id="1547" MUR="1.0" MUF="1.0" PDF="90235" > PDF=90200 MemberID=35 </weight> -<weight id="1548" MUR="1.0" MUF="1.0" PDF="90236" > PDF=90200 MemberID=36 </weight> -<weight id="1549" MUR="1.0" MUF="1.0" PDF="90237" > PDF=90200 MemberID=37 </weight> -<weight id="1550" MUR="1.0" MUF="1.0" PDF="90238" > PDF=90200 MemberID=38 </weight> -<weight id="1551" MUR="1.0" MUF="1.0" PDF="90239" > PDF=90200 MemberID=39 </weight> -<weight id="1552" MUR="1.0" MUF="1.0" PDF="90240" > PDF=90200 MemberID=40 </weight> -<weight id="1553" MUR="1.0" MUF="1.0" PDF="90241" > PDF=90200 MemberID=41 </weight> -<weight id="1554" MUR="1.0" MUF="1.0" PDF="90242" > PDF=90200 MemberID=42 </weight> -<weight id="1555" MUR="1.0" MUF="1.0" PDF="90243" > PDF=90200 MemberID=43 </weight> -<weight id="1556" MUR="1.0" MUF="1.0" PDF="90244" > PDF=90200 MemberID=44 </weight> -<weight id="1557" MUR="1.0" MUF="1.0" PDF="90245" > PDF=90200 MemberID=45 </weight> -<weight id="1558" MUR="1.0" MUF="1.0" PDF="90246" > PDF=90200 MemberID=46 </weight> -<weight id="1559" MUR="1.0" MUF="1.0" PDF="90247" > PDF=90200 MemberID=47 </weight> -<weight id="1560" MUR="1.0" MUF="1.0" PDF="90248" > PDF=90200 MemberID=48 </weight> -<weight id="1561" MUR="1.0" MUF="1.0" PDF="90249" > PDF=90200 MemberID=49 </weight> -<weight id="1562" MUR="1.0" MUF="1.0" PDF="90250" > PDF=90200 MemberID=50 </weight> -<weight id="1563" MUR="1.0" MUF="1.0" PDF="90251" > PDF=90200 MemberID=51 </weight> -<weight id="1564" MUR="1.0" MUF="1.0" PDF="90252" > PDF=90200 MemberID=52 </weight> -<weight id="1565" MUR="1.0" MUF="1.0" PDF="90253" > PDF=90200 MemberID=53 </weight> -<weight id="1566" MUR="1.0" MUF="1.0" PDF="90254" > PDF=90200 MemberID=54 </weight> -<weight id="1567" MUR="1.0" MUF="1.0" PDF="90255" > PDF=90200 MemberID=55 </weight> -<weight id="1568" MUR="1.0" MUF="1.0" PDF="90256" > PDF=90200 MemberID=56 </weight> -<weight id="1569" MUR="1.0" MUF="1.0" PDF="90257" > PDF=90200 MemberID=57 </weight> -<weight id="1570" MUR="1.0" MUF="1.0" PDF="90258" > PDF=90200 MemberID=58 </weight> -<weight id="1571" MUR="1.0" MUF="1.0" PDF="90259" > PDF=90200 MemberID=59 </weight> -<weight id="1572" MUR="1.0" MUF="1.0" PDF="90260" > PDF=90200 MemberID=60 </weight> -<weight id="1573" MUR="1.0" MUF="1.0" PDF="90261" > PDF=90200 MemberID=61 </weight> -<weight id="1574" MUR="1.0" MUF="1.0" PDF="90262" > PDF=90200 MemberID=62 </weight> -<weight id="1575" MUR="1.0" MUF="1.0" PDF="90263" > PDF=90200 MemberID=63 </weight> -<weight id="1576" MUR="1.0" MUF="1.0" PDF="90264" > PDF=90200 MemberID=64 </weight> -<weight id="1577" MUR="1.0" MUF="1.0" PDF="90265" > PDF=90200 MemberID=65 </weight> -<weight id="1578" MUR="1.0" MUF="1.0" PDF="90266" > PDF=90200 MemberID=66 </weight> -<weight id="1579" MUR="1.0" MUF="1.0" PDF="90267" > PDF=90200 MemberID=67 </weight> -<weight id="1580" MUR="1.0" MUF="1.0" PDF="90268" > PDF=90200 MemberID=68 </weight> -<weight id="1581" MUR="1.0" MUF="1.0" PDF="90269" > PDF=90200 MemberID=69 </weight> -<weight id="1582" MUR="1.0" MUF="1.0" PDF="90270" > PDF=90200 MemberID=70 </weight> -<weight id="1583" MUR="1.0" MUF="1.0" PDF="90271" > PDF=90200 MemberID=71 </weight> -<weight id="1584" MUR="1.0" MUF="1.0" PDF="90272" > PDF=90200 MemberID=72 </weight> -<weight id="1585" MUR="1.0" MUF="1.0" PDF="90273" > PDF=90200 MemberID=73 </weight> -<weight id="1586" MUR="1.0" MUF="1.0" PDF="90274" > PDF=90200 MemberID=74 </weight> -<weight id="1587" MUR="1.0" MUF="1.0" PDF="90275" > PDF=90200 MemberID=75 </weight> -<weight id="1588" MUR="1.0" MUF="1.0" PDF="90276" > PDF=90200 MemberID=76 </weight> -<weight id="1589" MUR="1.0" MUF="1.0" PDF="90277" > PDF=90200 MemberID=77 </weight> -<weight id="1590" MUR="1.0" MUF="1.0" PDF="90278" > PDF=90200 MemberID=78 </weight> -<weight id="1591" MUR="1.0" MUF="1.0" PDF="90279" > PDF=90200 MemberID=79 </weight> -<weight id="1592" MUR="1.0" MUF="1.0" PDF="90280" > PDF=90200 MemberID=80 </weight> -<weight id="1593" MUR="1.0" MUF="1.0" PDF="90281" > PDF=90200 MemberID=81 </weight> -<weight id="1594" MUR="1.0" MUF="1.0" PDF="90282" > PDF=90200 MemberID=82 </weight> -<weight id="1595" MUR="1.0" MUF="1.0" PDF="90283" > PDF=90200 MemberID=83 </weight> -<weight id="1596" MUR="1.0" MUF="1.0" PDF="90284" > PDF=90200 MemberID=84 </weight> -<weight id="1597" MUR="1.0" MUF="1.0" PDF="90285" > PDF=90200 MemberID=85 </weight> -<weight id="1598" MUR="1.0" MUF="1.0" PDF="90286" > PDF=90200 MemberID=86 </weight> -<weight id="1599" MUR="1.0" MUF="1.0" PDF="90287" > PDF=90200 MemberID=87 </weight> -<weight id="1600" MUR="1.0" MUF="1.0" PDF="90288" > PDF=90200 MemberID=88 </weight> -<weight id="1601" MUR="1.0" MUF="1.0" PDF="90289" > PDF=90200 MemberID=89 </weight> -<weight id="1602" MUR="1.0" MUF="1.0" PDF="90290" > PDF=90200 MemberID=90 </weight> -<weight id="1603" MUR="1.0" MUF="1.0" PDF="90291" > PDF=90200 MemberID=91 </weight> -<weight id="1604" MUR="1.0" MUF="1.0" PDF="90292" > PDF=90200 MemberID=92 </weight> -<weight id="1605" MUR="1.0" MUF="1.0" PDF="90293" > PDF=90200 MemberID=93 </weight> -<weight id="1606" MUR="1.0" MUF="1.0" PDF="90294" > PDF=90200 MemberID=94 </weight> -<weight id="1607" MUR="1.0" MUF="1.0" PDF="90295" > PDF=90200 MemberID=95 </weight> -<weight id="1608" MUR="1.0" MUF="1.0" PDF="90296" > PDF=90200 MemberID=96 </weight> -<weight id="1609" MUR="1.0" MUF="1.0" PDF="90297" > PDF=90200 MemberID=97 </weight> -<weight id="1610" MUR="1.0" MUF="1.0" PDF="90298" > PDF=90200 MemberID=98 </weight> -<weight id="1611" MUR="1.0" MUF="1.0" PDF="90299" > PDF=90200 MemberID=99 </weight> -<weight id="1612" MUR="1.0" MUF="1.0" PDF="90300" > PDF=90200 MemberID=100 </weight> -<weight id="1613" MUR="1.0" MUF="1.0" PDF="90301" > PDF=90200 MemberID=101 </weight> -<weight id="1614" MUR="1.0" MUF="1.0" PDF="90302" > PDF=90200 MemberID=102 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="PDF4LHC15_nnlo_100_pdfas" combine="symmhessian+as"> # 91200: PDF4LHC15_nnlo_100_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 ; PDF symmetric eigenvectors; mem=101 ; alphas(MZ)=0.1165 central value; mem=102 ; alphas(MZ)=0.1195 -<weight id="1615" MUR="1.0" MUF="1.0" PDF="91200" > PDF=91200 MemberID=0 </weight> -<weight id="1616" MUR="1.0" MUF="1.0" PDF="91201" > PDF=91200 MemberID=1 </weight> -<weight id="1617" MUR="1.0" MUF="1.0" PDF="91202" > PDF=91200 MemberID=2 </weight> -<weight id="1618" MUR="1.0" MUF="1.0" PDF="91203" > PDF=91200 MemberID=3 </weight> -<weight id="1619" MUR="1.0" MUF="1.0" PDF="91204" > PDF=91200 MemberID=4 </weight> -<weight id="1620" MUR="1.0" MUF="1.0" PDF="91205" > PDF=91200 MemberID=5 </weight> -<weight id="1621" MUR="1.0" MUF="1.0" PDF="91206" > PDF=91200 MemberID=6 </weight> -<weight id="1622" MUR="1.0" MUF="1.0" PDF="91207" > PDF=91200 MemberID=7 </weight> -<weight id="1623" MUR="1.0" MUF="1.0" PDF="91208" > PDF=91200 MemberID=8 </weight> -<weight id="1624" MUR="1.0" MUF="1.0" PDF="91209" > PDF=91200 MemberID=9 </weight> -<weight id="1625" MUR="1.0" MUF="1.0" PDF="91210" > PDF=91200 MemberID=10 </weight> -<weight id="1626" MUR="1.0" MUF="1.0" PDF="91211" > PDF=91200 MemberID=11 </weight> -<weight id="1627" MUR="1.0" MUF="1.0" PDF="91212" > PDF=91200 MemberID=12 </weight> -<weight id="1628" MUR="1.0" MUF="1.0" PDF="91213" > PDF=91200 MemberID=13 </weight> -<weight id="1629" MUR="1.0" MUF="1.0" PDF="91214" > PDF=91200 MemberID=14 </weight> -<weight id="1630" MUR="1.0" MUF="1.0" PDF="91215" > PDF=91200 MemberID=15 </weight> -<weight id="1631" MUR="1.0" MUF="1.0" PDF="91216" > PDF=91200 MemberID=16 </weight> -<weight id="1632" MUR="1.0" MUF="1.0" PDF="91217" > PDF=91200 MemberID=17 </weight> -<weight id="1633" MUR="1.0" MUF="1.0" PDF="91218" > PDF=91200 MemberID=18 </weight> -<weight id="1634" MUR="1.0" MUF="1.0" PDF="91219" > PDF=91200 MemberID=19 </weight> -<weight id="1635" MUR="1.0" MUF="1.0" PDF="91220" > PDF=91200 MemberID=20 </weight> -<weight id="1636" MUR="1.0" MUF="1.0" PDF="91221" > PDF=91200 MemberID=21 </weight> -<weight id="1637" MUR="1.0" MUF="1.0" PDF="91222" > PDF=91200 MemberID=22 </weight> -<weight id="1638" MUR="1.0" MUF="1.0" PDF="91223" > PDF=91200 MemberID=23 </weight> -<weight id="1639" MUR="1.0" MUF="1.0" PDF="91224" > PDF=91200 MemberID=24 </weight> -<weight id="1640" MUR="1.0" MUF="1.0" PDF="91225" > PDF=91200 MemberID=25 </weight> -<weight id="1641" MUR="1.0" MUF="1.0" PDF="91226" > PDF=91200 MemberID=26 </weight> -<weight id="1642" MUR="1.0" MUF="1.0" PDF="91227" > PDF=91200 MemberID=27 </weight> -<weight id="1643" MUR="1.0" MUF="1.0" PDF="91228" > PDF=91200 MemberID=28 </weight> -<weight id="1644" MUR="1.0" MUF="1.0" PDF="91229" > PDF=91200 MemberID=29 </weight> -<weight id="1645" MUR="1.0" MUF="1.0" PDF="91230" > PDF=91200 MemberID=30 </weight> -<weight id="1646" MUR="1.0" MUF="1.0" PDF="91231" > PDF=91200 MemberID=31 </weight> -<weight id="1647" MUR="1.0" MUF="1.0" PDF="91232" > PDF=91200 MemberID=32 </weight> -<weight id="1648" MUR="1.0" MUF="1.0" PDF="91233" > PDF=91200 MemberID=33 </weight> -<weight id="1649" MUR="1.0" MUF="1.0" PDF="91234" > PDF=91200 MemberID=34 </weight> -<weight id="1650" MUR="1.0" MUF="1.0" PDF="91235" > PDF=91200 MemberID=35 </weight> -<weight id="1651" MUR="1.0" MUF="1.0" PDF="91236" > PDF=91200 MemberID=36 </weight> -<weight id="1652" MUR="1.0" MUF="1.0" PDF="91237" > PDF=91200 MemberID=37 </weight> -<weight id="1653" MUR="1.0" MUF="1.0" PDF="91238" > PDF=91200 MemberID=38 </weight> -<weight id="1654" MUR="1.0" MUF="1.0" PDF="91239" > PDF=91200 MemberID=39 </weight> -<weight id="1655" MUR="1.0" MUF="1.0" PDF="91240" > PDF=91200 MemberID=40 </weight> -<weight id="1656" MUR="1.0" MUF="1.0" PDF="91241" > PDF=91200 MemberID=41 </weight> -<weight id="1657" MUR="1.0" MUF="1.0" PDF="91242" > PDF=91200 MemberID=42 </weight> -<weight id="1658" MUR="1.0" MUF="1.0" PDF="91243" > PDF=91200 MemberID=43 </weight> -<weight id="1659" MUR="1.0" MUF="1.0" PDF="91244" > PDF=91200 MemberID=44 </weight> -<weight id="1660" MUR="1.0" MUF="1.0" PDF="91245" > PDF=91200 MemberID=45 </weight> -<weight id="1661" MUR="1.0" MUF="1.0" PDF="91246" > PDF=91200 MemberID=46 </weight> -<weight id="1662" MUR="1.0" MUF="1.0" PDF="91247" > PDF=91200 MemberID=47 </weight> -<weight id="1663" MUR="1.0" MUF="1.0" PDF="91248" > PDF=91200 MemberID=48 </weight> -<weight id="1664" MUR="1.0" MUF="1.0" PDF="91249" > PDF=91200 MemberID=49 </weight> -<weight id="1665" MUR="1.0" MUF="1.0" PDF="91250" > PDF=91200 MemberID=50 </weight> -<weight id="1666" MUR="1.0" MUF="1.0" PDF="91251" > PDF=91200 MemberID=51 </weight> -<weight id="1667" MUR="1.0" MUF="1.0" PDF="91252" > PDF=91200 MemberID=52 </weight> -<weight id="1668" MUR="1.0" MUF="1.0" PDF="91253" > PDF=91200 MemberID=53 </weight> -<weight id="1669" MUR="1.0" MUF="1.0" PDF="91254" > PDF=91200 MemberID=54 </weight> -<weight id="1670" MUR="1.0" MUF="1.0" PDF="91255" > PDF=91200 MemberID=55 </weight> -<weight id="1671" MUR="1.0" MUF="1.0" PDF="91256" > PDF=91200 MemberID=56 </weight> -<weight id="1672" MUR="1.0" MUF="1.0" PDF="91257" > PDF=91200 MemberID=57 </weight> -<weight id="1673" MUR="1.0" MUF="1.0" PDF="91258" > PDF=91200 MemberID=58 </weight> -<weight id="1674" MUR="1.0" MUF="1.0" PDF="91259" > PDF=91200 MemberID=59 </weight> -<weight id="1675" MUR="1.0" MUF="1.0" PDF="91260" > PDF=91200 MemberID=60 </weight> -<weight id="1676" MUR="1.0" MUF="1.0" PDF="91261" > PDF=91200 MemberID=61 </weight> -<weight id="1677" MUR="1.0" MUF="1.0" PDF="91262" > PDF=91200 MemberID=62 </weight> -<weight id="1678" MUR="1.0" MUF="1.0" PDF="91263" > PDF=91200 MemberID=63 </weight> -<weight id="1679" MUR="1.0" MUF="1.0" PDF="91264" > PDF=91200 MemberID=64 </weight> -<weight id="1680" MUR="1.0" MUF="1.0" PDF="91265" > PDF=91200 MemberID=65 </weight> -<weight id="1681" MUR="1.0" MUF="1.0" PDF="91266" > PDF=91200 MemberID=66 </weight> -<weight id="1682" MUR="1.0" MUF="1.0" PDF="91267" > PDF=91200 MemberID=67 </weight> -<weight id="1683" MUR="1.0" MUF="1.0" PDF="91268" > PDF=91200 MemberID=68 </weight> -<weight id="1684" MUR="1.0" MUF="1.0" PDF="91269" > PDF=91200 MemberID=69 </weight> -<weight id="1685" MUR="1.0" MUF="1.0" PDF="91270" > PDF=91200 MemberID=70 </weight> -<weight id="1686" MUR="1.0" MUF="1.0" PDF="91271" > PDF=91200 MemberID=71 </weight> -<weight id="1687" MUR="1.0" MUF="1.0" PDF="91272" > PDF=91200 MemberID=72 </weight> -<weight id="1688" MUR="1.0" MUF="1.0" PDF="91273" > PDF=91200 MemberID=73 </weight> -<weight id="1689" MUR="1.0" MUF="1.0" PDF="91274" > PDF=91200 MemberID=74 </weight> -<weight id="1690" MUR="1.0" MUF="1.0" PDF="91275" > PDF=91200 MemberID=75 </weight> -<weight id="1691" MUR="1.0" MUF="1.0" PDF="91276" > PDF=91200 MemberID=76 </weight> -<weight id="1692" MUR="1.0" MUF="1.0" PDF="91277" > PDF=91200 MemberID=77 </weight> -<weight id="1693" MUR="1.0" MUF="1.0" PDF="91278" > PDF=91200 MemberID=78 </weight> -<weight id="1694" MUR="1.0" MUF="1.0" PDF="91279" > PDF=91200 MemberID=79 </weight> -<weight id="1695" MUR="1.0" MUF="1.0" PDF="91280" > PDF=91200 MemberID=80 </weight> -<weight id="1696" MUR="1.0" MUF="1.0" PDF="91281" > PDF=91200 MemberID=81 </weight> -<weight id="1697" MUR="1.0" MUF="1.0" PDF="91282" > PDF=91200 MemberID=82 </weight> -<weight id="1698" MUR="1.0" MUF="1.0" PDF="91283" > PDF=91200 MemberID=83 </weight> -<weight id="1699" MUR="1.0" MUF="1.0" PDF="91284" > PDF=91200 MemberID=84 </weight> -<weight id="1700" MUR="1.0" MUF="1.0" PDF="91285" > PDF=91200 MemberID=85 </weight> -<weight id="1701" MUR="1.0" MUF="1.0" PDF="91286" > PDF=91200 MemberID=86 </weight> -<weight id="1702" MUR="1.0" MUF="1.0" PDF="91287" > PDF=91200 MemberID=87 </weight> -<weight id="1703" MUR="1.0" MUF="1.0" PDF="91288" > PDF=91200 MemberID=88 </weight> -<weight id="1704" MUR="1.0" MUF="1.0" PDF="91289" > PDF=91200 MemberID=89 </weight> -<weight id="1705" MUR="1.0" MUF="1.0" PDF="91290" > PDF=91200 MemberID=90 </weight> -<weight id="1706" MUR="1.0" MUF="1.0" PDF="91291" > PDF=91200 MemberID=91 </weight> -<weight id="1707" MUR="1.0" MUF="1.0" PDF="91292" > PDF=91200 MemberID=92 </weight> -<weight id="1708" MUR="1.0" MUF="1.0" PDF="91293" > PDF=91200 MemberID=93 </weight> -<weight id="1709" MUR="1.0" MUF="1.0" PDF="91294" > PDF=91200 MemberID=94 </weight> -<weight id="1710" MUR="1.0" MUF="1.0" PDF="91295" > PDF=91200 MemberID=95 </weight> -<weight id="1711" MUR="1.0" MUF="1.0" PDF="91296" > PDF=91200 MemberID=96 </weight> -<weight id="1712" MUR="1.0" MUF="1.0" PDF="91297" > PDF=91200 MemberID=97 </weight> -<weight id="1713" MUR="1.0" MUF="1.0" PDF="91298" > PDF=91200 MemberID=98 </weight> -<weight id="1714" MUR="1.0" MUF="1.0" PDF="91299" > PDF=91200 MemberID=99 </weight> -<weight id="1715" MUR="1.0" MUF="1.0" PDF="91300" > PDF=91200 MemberID=100 </weight> -<weight id="1716" MUR="1.0" MUF="1.0" PDF="91301" > PDF=91200 MemberID=101 </weight> -<weight id="1717" MUR="1.0" MUF="1.0" PDF="91302" > PDF=91200 MemberID=102 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="PDF4LHC15_nlo_30_pdfas" combine="symmhessian+as"> # 90400: PDF4LHC15_nlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 -<weight id="1718" MUR="1.0" MUF="1.0" PDF="90400" > PDF=90400 MemberID=0 </weight> -<weight id="1719" MUR="1.0" MUF="1.0" PDF="90401" > PDF=90400 MemberID=1 </weight> -<weight id="1720" MUR="1.0" MUF="1.0" PDF="90402" > PDF=90400 MemberID=2 </weight> -<weight id="1721" MUR="1.0" MUF="1.0" PDF="90403" > PDF=90400 MemberID=3 </weight> -<weight id="1722" MUR="1.0" MUF="1.0" PDF="90404" > PDF=90400 MemberID=4 </weight> -<weight id="1723" MUR="1.0" MUF="1.0" PDF="90405" > PDF=90400 MemberID=5 </weight> -<weight id="1724" MUR="1.0" MUF="1.0" PDF="90406" > PDF=90400 MemberID=6 </weight> -<weight id="1725" MUR="1.0" MUF="1.0" PDF="90407" > PDF=90400 MemberID=7 </weight> -<weight id="1726" MUR="1.0" MUF="1.0" PDF="90408" > PDF=90400 MemberID=8 </weight> -<weight id="1727" MUR="1.0" MUF="1.0" PDF="90409" > PDF=90400 MemberID=9 </weight> -<weight id="1728" MUR="1.0" MUF="1.0" PDF="90410" > PDF=90400 MemberID=10 </weight> -<weight id="1729" MUR="1.0" MUF="1.0" PDF="90411" > PDF=90400 MemberID=11 </weight> -<weight id="1730" MUR="1.0" MUF="1.0" PDF="90412" > PDF=90400 MemberID=12 </weight> -<weight id="1731" MUR="1.0" MUF="1.0" PDF="90413" > PDF=90400 MemberID=13 </weight> -<weight id="1732" MUR="1.0" MUF="1.0" PDF="90414" > PDF=90400 MemberID=14 </weight> -<weight id="1733" MUR="1.0" MUF="1.0" PDF="90415" > PDF=90400 MemberID=15 </weight> -<weight id="1734" MUR="1.0" MUF="1.0" PDF="90416" > PDF=90400 MemberID=16 </weight> -<weight id="1735" MUR="1.0" MUF="1.0" PDF="90417" > PDF=90400 MemberID=17 </weight> -<weight id="1736" MUR="1.0" MUF="1.0" PDF="90418" > PDF=90400 MemberID=18 </weight> -<weight id="1737" MUR="1.0" MUF="1.0" PDF="90419" > PDF=90400 MemberID=19 </weight> -<weight id="1738" MUR="1.0" MUF="1.0" PDF="90420" > PDF=90400 MemberID=20 </weight> -<weight id="1739" MUR="1.0" MUF="1.0" PDF="90421" > PDF=90400 MemberID=21 </weight> -<weight id="1740" MUR="1.0" MUF="1.0" PDF="90422" > PDF=90400 MemberID=22 </weight> -<weight id="1741" MUR="1.0" MUF="1.0" PDF="90423" > PDF=90400 MemberID=23 </weight> -<weight id="1742" MUR="1.0" MUF="1.0" PDF="90424" > PDF=90400 MemberID=24 </weight> -<weight id="1743" MUR="1.0" MUF="1.0" PDF="90425" > PDF=90400 MemberID=25 </weight> -<weight id="1744" MUR="1.0" MUF="1.0" PDF="90426" > PDF=90400 MemberID=26 </weight> -<weight id="1745" MUR="1.0" MUF="1.0" PDF="90427" > PDF=90400 MemberID=27 </weight> -<weight id="1746" MUR="1.0" MUF="1.0" PDF="90428" > PDF=90400 MemberID=28 </weight> -<weight id="1747" MUR="1.0" MUF="1.0" PDF="90429" > PDF=90400 MemberID=29 </weight> -<weight id="1748" MUR="1.0" MUF="1.0" PDF="90430" > PDF=90400 MemberID=30 </weight> -<weight id="1749" MUR="1.0" MUF="1.0" PDF="90431" > PDF=90400 MemberID=31 </weight> -<weight id="1750" MUR="1.0" MUF="1.0" PDF="90432" > PDF=90400 MemberID=32 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="PDF4LHC15_nnlo_30_pdfas" combine="symmhessian+as"> # 91400: PDF4LHC15_nnlo_30_pdfas. mem=0 ; alphas(MZ)=0.118 central value; mem=1-30 ; PDF symmetric eigenvectors; mem=31 ; alphas(MZ)=0.1165 central value; mem=32 ; alphas(MZ)=0.1195 -<weight id="1751" MUR="1.0" MUF="1.0" PDF="91400" > PDF=91400 MemberID=0 </weight> -<weight id="1752" MUR="1.0" MUF="1.0" PDF="91401" > PDF=91400 MemberID=1 </weight> -<weight id="1753" MUR="1.0" MUF="1.0" PDF="91402" > PDF=91400 MemberID=2 </weight> -<weight id="1754" MUR="1.0" MUF="1.0" PDF="91403" > PDF=91400 MemberID=3 </weight> -<weight id="1755" MUR="1.0" MUF="1.0" PDF="91404" > PDF=91400 MemberID=4 </weight> -<weight id="1756" MUR="1.0" MUF="1.0" PDF="91405" > PDF=91400 MemberID=5 </weight> -<weight id="1757" MUR="1.0" MUF="1.0" PDF="91406" > PDF=91400 MemberID=6 </weight> -<weight id="1758" MUR="1.0" MUF="1.0" PDF="91407" > PDF=91400 MemberID=7 </weight> -<weight id="1759" MUR="1.0" MUF="1.0" PDF="91408" > PDF=91400 MemberID=8 </weight> -<weight id="1760" MUR="1.0" MUF="1.0" PDF="91409" > PDF=91400 MemberID=9 </weight> -<weight id="1761" MUR="1.0" MUF="1.0" PDF="91410" > PDF=91400 MemberID=10 </weight> -<weight id="1762" MUR="1.0" MUF="1.0" PDF="91411" > PDF=91400 MemberID=11 </weight> -<weight id="1763" MUR="1.0" MUF="1.0" PDF="91412" > PDF=91400 MemberID=12 </weight> -<weight id="1764" MUR="1.0" MUF="1.0" PDF="91413" > PDF=91400 MemberID=13 </weight> -<weight id="1765" MUR="1.0" MUF="1.0" PDF="91414" > PDF=91400 MemberID=14 </weight> -<weight id="1766" MUR="1.0" MUF="1.0" PDF="91415" > PDF=91400 MemberID=15 </weight> -<weight id="1767" MUR="1.0" MUF="1.0" PDF="91416" > PDF=91400 MemberID=16 </weight> -<weight id="1768" MUR="1.0" MUF="1.0" PDF="91417" > PDF=91400 MemberID=17 </weight> -<weight id="1769" MUR="1.0" MUF="1.0" PDF="91418" > PDF=91400 MemberID=18 </weight> -<weight id="1770" MUR="1.0" MUF="1.0" PDF="91419" > PDF=91400 MemberID=19 </weight> -<weight id="1771" MUR="1.0" MUF="1.0" PDF="91420" > PDF=91400 MemberID=20 </weight> -<weight id="1772" MUR="1.0" MUF="1.0" PDF="91421" > PDF=91400 MemberID=21 </weight> -<weight id="1773" MUR="1.0" MUF="1.0" PDF="91422" > PDF=91400 MemberID=22 </weight> -<weight id="1774" MUR="1.0" MUF="1.0" PDF="91423" > PDF=91400 MemberID=23 </weight> -<weight id="1775" MUR="1.0" MUF="1.0" PDF="91424" > PDF=91400 MemberID=24 </weight> -<weight id="1776" MUR="1.0" MUF="1.0" PDF="91425" > PDF=91400 MemberID=25 </weight> -<weight id="1777" MUR="1.0" MUF="1.0" PDF="91426" > PDF=91400 MemberID=26 </weight> -<weight id="1778" MUR="1.0" MUF="1.0" PDF="91427" > PDF=91400 MemberID=27 </weight> -<weight id="1779" MUR="1.0" MUF="1.0" PDF="91428" > PDF=91400 MemberID=28 </weight> -<weight id="1780" MUR="1.0" MUF="1.0" PDF="91429" > PDF=91400 MemberID=29 </weight> -<weight id="1781" MUR="1.0" MUF="1.0" PDF="91430" > PDF=91400 MemberID=30 </weight> -<weight id="1782" MUR="1.0" MUF="1.0" PDF="91431" > PDF=91400 MemberID=31 </weight> -<weight id="1783" MUR="1.0" MUF="1.0" PDF="91432" > PDF=91400 MemberID=32 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="HERAPDF20_NLO_EIG" combine="hessian"> # 61100: HERAPDF20 NLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. -<weight id="1784" MUR="1.0" MUF="1.0" PDF="61100" > PDF=61100 MemberID=0 </weight> -<weight id="1785" MUR="1.0" MUF="1.0" PDF="61101" > PDF=61100 MemberID=1 </weight> -<weight id="1786" MUR="1.0" MUF="1.0" PDF="61102" > PDF=61100 MemberID=2 </weight> -<weight id="1787" MUR="1.0" MUF="1.0" PDF="61103" > PDF=61100 MemberID=3 </weight> -<weight id="1788" MUR="1.0" MUF="1.0" PDF="61104" > PDF=61100 MemberID=4 </weight> -<weight id="1789" MUR="1.0" MUF="1.0" PDF="61105" > PDF=61100 MemberID=5 </weight> -<weight id="1790" MUR="1.0" MUF="1.0" PDF="61106" > PDF=61100 MemberID=6 </weight> -<weight id="1791" MUR="1.0" MUF="1.0" PDF="61107" > PDF=61100 MemberID=7 </weight> -<weight id="1792" MUR="1.0" MUF="1.0" PDF="61108" > PDF=61100 MemberID=8 </weight> -<weight id="1793" MUR="1.0" MUF="1.0" PDF="61109" > PDF=61100 MemberID=9 </weight> -<weight id="1794" MUR="1.0" MUF="1.0" PDF="61110" > PDF=61100 MemberID=10 </weight> -<weight id="1795" MUR="1.0" MUF="1.0" PDF="61111" > PDF=61100 MemberID=11 </weight> -<weight id="1796" MUR="1.0" MUF="1.0" PDF="61112" > PDF=61100 MemberID=12 </weight> -<weight id="1797" MUR="1.0" MUF="1.0" PDF="61113" > PDF=61100 MemberID=13 </weight> -<weight id="1798" MUR="1.0" MUF="1.0" PDF="61114" > PDF=61100 MemberID=14 </weight> -<weight id="1799" MUR="1.0" MUF="1.0" PDF="61115" > PDF=61100 MemberID=15 </weight> -<weight id="1800" MUR="1.0" MUF="1.0" PDF="61116" > PDF=61100 MemberID=16 </weight> -<weight id="1801" MUR="1.0" MUF="1.0" PDF="61117" > PDF=61100 MemberID=17 </weight> -<weight id="1802" MUR="1.0" MUF="1.0" PDF="61118" > PDF=61100 MemberID=18 </weight> -<weight id="1803" MUR="1.0" MUF="1.0" PDF="61119" > PDF=61100 MemberID=19 </weight> -<weight id="1804" MUR="1.0" MUF="1.0" PDF="61120" > PDF=61100 MemberID=20 </weight> -<weight id="1805" MUR="1.0" MUF="1.0" PDF="61121" > PDF=61100 MemberID=21 </weight> -<weight id="1806" MUR="1.0" MUF="1.0" PDF="61122" > PDF=61100 MemberID=22 </weight> -<weight id="1807" MUR="1.0" MUF="1.0" PDF="61123" > PDF=61100 MemberID=23 </weight> -<weight id="1808" MUR="1.0" MUF="1.0" PDF="61124" > PDF=61100 MemberID=24 </weight> -<weight id="1809" MUR="1.0" MUF="1.0" PDF="61125" > PDF=61100 MemberID=25 </weight> -<weight id="1810" MUR="1.0" MUF="1.0" PDF="61126" > PDF=61100 MemberID=26 </weight> -<weight id="1811" MUR="1.0" MUF="1.0" PDF="61127" > PDF=61100 MemberID=27 </weight> -<weight id="1812" MUR="1.0" MUF="1.0" PDF="61128" > PDF=61100 MemberID=28 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="HERAPDF20_NLO_VAR" combine="custom"> # 61130: HERAPDF20 NLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.47,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.41; mem=10 ; mc=1.53; mem=11 ; par2(Q0 1.6, mc1.47); mem=12 ; par3 (Q0 2.2, mc1.53); mem=13 ; par4(Duv); -<weight id="1813" MUR="1.0" MUF="1.0" PDF="61130" > PDF=61130 MemberID=0 </weight> -<weight id="1814" MUR="1.0" MUF="1.0" PDF="61131" > PDF=61130 MemberID=1 </weight> -<weight id="1815" MUR="1.0" MUF="1.0" PDF="61132" > PDF=61130 MemberID=2 </weight> -<weight id="1816" MUR="1.0" MUF="1.0" PDF="61133" > PDF=61130 MemberID=3 </weight> -<weight id="1817" MUR="1.0" MUF="1.0" PDF="61134" > PDF=61130 MemberID=4 </weight> -<weight id="1818" MUR="1.0" MUF="1.0" PDF="61135" > PDF=61130 MemberID=5 </weight> -<weight id="1819" MUR="1.0" MUF="1.0" PDF="61136" > PDF=61130 MemberID=6 </weight> -<weight id="1820" MUR="1.0" MUF="1.0" PDF="61137" > PDF=61130 MemberID=7 </weight> -<weight id="1821" MUR="1.0" MUF="1.0" PDF="61138" > PDF=61130 MemberID=8 </weight> -<weight id="1822" MUR="1.0" MUF="1.0" PDF="61139" > PDF=61130 MemberID=9 </weight> -<weight id="1823" MUR="1.0" MUF="1.0" PDF="61140" > PDF=61130 MemberID=10 </weight> -<weight id="1824" MUR="1.0" MUF="1.0" PDF="61141" > PDF=61130 MemberID=11 </weight> -<weight id="1825" MUR="1.0" MUF="1.0" PDF="61142" > PDF=61130 MemberID=12 </weight> -<weight id="1826" MUR="1.0" MUF="1.0" PDF="61143" > PDF=61130 MemberID=13 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="HERAPDF20_NNLO_EIG" combine="hessian"> # 61200: HERAPDF20 NNLO (Q2min=3.5) fit and experimental uncertainty variations. The 28 error PDFs should be treated two by two as the up and down excursions along 14 eigenvectors, such that the symmetric error is calculated as the quadrature sum of [Sum i=1,14 of (var i+1 - var i)/2 ], or if asymmetric errors are desired according to Eqn 43 of Campbell, Huston and Stirling hep-ph/0611148. mem=0 ; central; mem=1-28 ; error eigenvectors. -<weight id="1827" MUR="1.0" MUF="1.0" PDF="61200" > PDF=61200 MemberID=0 </weight> -<weight id="1828" MUR="1.0" MUF="1.0" PDF="61201" > PDF=61200 MemberID=1 </weight> -<weight id="1829" MUR="1.0" MUF="1.0" PDF="61202" > PDF=61200 MemberID=2 </weight> -<weight id="1830" MUR="1.0" MUF="1.0" PDF="61203" > PDF=61200 MemberID=3 </weight> -<weight id="1831" MUR="1.0" MUF="1.0" PDF="61204" > PDF=61200 MemberID=4 </weight> -<weight id="1832" MUR="1.0" MUF="1.0" PDF="61205" > PDF=61200 MemberID=5 </weight> -<weight id="1833" MUR="1.0" MUF="1.0" PDF="61206" > PDF=61200 MemberID=6 </weight> -<weight id="1834" MUR="1.0" MUF="1.0" PDF="61207" > PDF=61200 MemberID=7 </weight> -<weight id="1835" MUR="1.0" MUF="1.0" PDF="61208" > PDF=61200 MemberID=8 </weight> -<weight id="1836" MUR="1.0" MUF="1.0" PDF="61209" > PDF=61200 MemberID=9 </weight> -<weight id="1837" MUR="1.0" MUF="1.0" PDF="61210" > PDF=61200 MemberID=10 </weight> -<weight id="1838" MUR="1.0" MUF="1.0" PDF="61211" > PDF=61200 MemberID=11 </weight> -<weight id="1839" MUR="1.0" MUF="1.0" PDF="61212" > PDF=61200 MemberID=12 </weight> -<weight id="1840" MUR="1.0" MUF="1.0" PDF="61213" > PDF=61200 MemberID=13 </weight> -<weight id="1841" MUR="1.0" MUF="1.0" PDF="61214" > PDF=61200 MemberID=14 </weight> -<weight id="1842" MUR="1.0" MUF="1.0" PDF="61215" > PDF=61200 MemberID=15 </weight> -<weight id="1843" MUR="1.0" MUF="1.0" PDF="61216" > PDF=61200 MemberID=16 </weight> -<weight id="1844" MUR="1.0" MUF="1.0" PDF="61217" > PDF=61200 MemberID=17 </weight> -<weight id="1845" MUR="1.0" MUF="1.0" PDF="61218" > PDF=61200 MemberID=18 </weight> -<weight id="1846" MUR="1.0" MUF="1.0" PDF="61219" > PDF=61200 MemberID=19 </weight> -<weight id="1847" MUR="1.0" MUF="1.0" PDF="61220" > PDF=61200 MemberID=20 </weight> -<weight id="1848" MUR="1.0" MUF="1.0" PDF="61221" > PDF=61200 MemberID=21 </weight> -<weight id="1849" MUR="1.0" MUF="1.0" PDF="61222" > PDF=61200 MemberID=22 </weight> -<weight id="1850" MUR="1.0" MUF="1.0" PDF="61223" > PDF=61200 MemberID=23 </weight> -<weight id="1851" MUR="1.0" MUF="1.0" PDF="61224" > PDF=61200 MemberID=24 </weight> -<weight id="1852" MUR="1.0" MUF="1.0" PDF="61225" > PDF=61200 MemberID=25 </weight> -<weight id="1853" MUR="1.0" MUF="1.0" PDF="61226" > PDF=61200 MemberID=26 </weight> -<weight id="1854" MUR="1.0" MUF="1.0" PDF="61227" > PDF=61200 MemberID=27 </weight> -<weight id="1855" MUR="1.0" MUF="1.0" PDF="61228" > PDF=61200 MemberID=28 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="HERAPDF20_NNLO_VAR" combine="custom"> # 61230: HERAPDF20 NNLO variations of fit parameters. Member 0 is the central fit. The 1-10 variations are considered as model errors and should be treated one by one, by taking the difference between the variation and the central value, and then adding in quadrature all positive (negative) differences to obtain the positive (negative) model error. Variations 11 to 13 are the maximal parametrisation variations; the largest positive (negative) difference between the variation and the central value is taken as the positive (negative) parametrisation error and added in quadrature to the model errors to form the parametrisation envelope. mem=0 ; central (fs=0.4,mb=4.5,mc=1.43,q20=1.9,q2min=3.5,a_s(MZ)=0.118); mem=1 ; fs=0.3; mem=2 ; fs=0.5; mem=3 ; fs=hermesfs-03; mem=4 ; fs=hermesfs-05 mem=5 ; q2cut=2.5; mem=6 ; q2cut=5.; mem=7 ; mb=4.25; mem=8 ; mb=4.75; mem=9 ; mc=1.37; mem=10 ; mc=1.49; mem=11 ; par2(Q0 1.6, mc1.43); mem=12 ; par3 (Q0 2.2, mc1.49); mem=13 ; par4(Duv); -<weight id="1856" MUR="1.0" MUF="1.0" PDF="61230" > PDF=61230 MemberID=0 </weight> -<weight id="1857" MUR="1.0" MUF="1.0" PDF="61231" > PDF=61230 MemberID=1 </weight> -<weight id="1858" MUR="1.0" MUF="1.0" PDF="61232" > PDF=61230 MemberID=2 </weight> -<weight id="1859" MUR="1.0" MUF="1.0" PDF="61233" > PDF=61230 MemberID=3 </weight> -<weight id="1860" MUR="1.0" MUF="1.0" PDF="61234" > PDF=61230 MemberID=4 </weight> -<weight id="1861" MUR="1.0" MUF="1.0" PDF="61235" > PDF=61230 MemberID=5 </weight> -<weight id="1862" MUR="1.0" MUF="1.0" PDF="61236" > PDF=61230 MemberID=6 </weight> -<weight id="1863" MUR="1.0" MUF="1.0" PDF="61237" > PDF=61230 MemberID=7 </weight> -<weight id="1864" MUR="1.0" MUF="1.0" PDF="61238" > PDF=61230 MemberID=8 </weight> -<weight id="1865" MUR="1.0" MUF="1.0" PDF="61239" > PDF=61230 MemberID=9 </weight> -<weight id="1866" MUR="1.0" MUF="1.0" PDF="61240" > PDF=61230 MemberID=10 </weight> -<weight id="1867" MUR="1.0" MUF="1.0" PDF="61241" > PDF=61230 MemberID=11 </weight> -<weight id="1868" MUR="1.0" MUF="1.0" PDF="61242" > PDF=61230 MemberID=12 </weight> -<weight id="1869" MUR="1.0" MUF="1.0" PDF="61243" > PDF=61230 MemberID=13 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="CT14qed_inc_proton" combine="unknown"> # 13400: CT14qed_inc, NLO QCD + LO QED (inclusive photon) sets for the proton, based on CT14nlo with the initial photon PDF defined by the sum of the inelastic photon PDF and the elastic photon PDF, obtained from the equivalent photon approximation, at the initial scale Q0. The initial inelastic photon PDF is defined by the radiative ansatz and parametrized by its initial inelastic momentum fraction. (m=0 ; p=0.00%, mem=1 ; p=0.01%, mem=2 ; p=0.02%, etc., up to mem=30 ; p=0.30%). A limit of p=0.14% was found at the 90% CL in the Reference -<weight id="1870" MUR="1.0" MUF="1.0" PDF="13400" > PDF=13400 MemberID=0 </weight> -<weight id="1871" MUR="1.0" MUF="1.0" PDF="13401" > PDF=13400 MemberID=1 </weight> -<weight id="1872" MUR="1.0" MUF="1.0" PDF="13402" > PDF=13400 MemberID=2 </weight> -<weight id="1873" MUR="1.0" MUF="1.0" PDF="13403" > PDF=13400 MemberID=3 </weight> -<weight id="1874" MUR="1.0" MUF="1.0" PDF="13404" > PDF=13400 MemberID=4 </weight> -<weight id="1875" MUR="1.0" MUF="1.0" PDF="13405" > PDF=13400 MemberID=5 </weight> -<weight id="1876" MUR="1.0" MUF="1.0" PDF="13406" > PDF=13400 MemberID=6 </weight> -<weight id="1877" MUR="1.0" MUF="1.0" PDF="13407" > PDF=13400 MemberID=7 </weight> -<weight id="1878" MUR="1.0" MUF="1.0" PDF="13408" > PDF=13400 MemberID=8 </weight> -<weight id="1879" MUR="1.0" MUF="1.0" PDF="13409" > PDF=13400 MemberID=9 </weight> -<weight id="1880" MUR="1.0" MUF="1.0" PDF="13410" > PDF=13400 MemberID=10 </weight> -<weight id="1881" MUR="1.0" MUF="1.0" PDF="13411" > PDF=13400 MemberID=11 </weight> -<weight id="1882" MUR="1.0" MUF="1.0" PDF="13412" > PDF=13400 MemberID=12 </weight> -<weight id="1883" MUR="1.0" MUF="1.0" PDF="13413" > PDF=13400 MemberID=13 </weight> -<weight id="1884" MUR="1.0" MUF="1.0" PDF="13414" > PDF=13400 MemberID=14 </weight> -<weight id="1885" MUR="1.0" MUF="1.0" PDF="13415" > PDF=13400 MemberID=15 </weight> -<weight id="1886" MUR="1.0" MUF="1.0" PDF="13416" > PDF=13400 MemberID=16 </weight> -<weight id="1887" MUR="1.0" MUF="1.0" PDF="13417" > PDF=13400 MemberID=17 </weight> -<weight id="1888" MUR="1.0" MUF="1.0" PDF="13418" > PDF=13400 MemberID=18 </weight> -<weight id="1889" MUR="1.0" MUF="1.0" PDF="13419" > PDF=13400 MemberID=19 </weight> -<weight id="1890" MUR="1.0" MUF="1.0" PDF="13420" > PDF=13400 MemberID=20 </weight> -<weight id="1891" MUR="1.0" MUF="1.0" PDF="13421" > PDF=13400 MemberID=21 </weight> -<weight id="1892" MUR="1.0" MUF="1.0" PDF="13422" > PDF=13400 MemberID=22 </weight> -<weight id="1893" MUR="1.0" MUF="1.0" PDF="13423" > PDF=13400 MemberID=23 </weight> -<weight id="1894" MUR="1.0" MUF="1.0" PDF="13424" > PDF=13400 MemberID=24 </weight> -<weight id="1895" MUR="1.0" MUF="1.0" PDF="13425" > PDF=13400 MemberID=25 </weight> -<weight id="1896" MUR="1.0" MUF="1.0" PDF="13426" > PDF=13400 MemberID=26 </weight> -<weight id="1897" MUR="1.0" MUF="1.0" PDF="13427" > PDF=13400 MemberID=27 </weight> -<weight id="1898" MUR="1.0" MUF="1.0" PDF="13428" > PDF=13400 MemberID=28 </weight> -<weight id="1899" MUR="1.0" MUF="1.0" PDF="13429" > PDF=13400 MemberID=29 </weight> -<weight id="1900" MUR="1.0" MUF="1.0" PDF="13430" > PDF=13400 MemberID=30 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="LUXqed17_plus_PDF4LHC15_nnlo_100" combine="symmhessian"> # 82200: LUXqed17_plus_PDF4LHC15_nnlo_100: this set combines QCD partons from PDF4LHC15_nnlo_100 with the LUXqed photon determination. -PDF4LHC15_nnlo_100 description: - PDF4LHC15_nnlo_100. mem=0 ; alphas(MZ)=0.118 central value; mem=1-100 - ; PDF symmetric eigenvectors -LUXqed description: - Determination of the low Q^2 photon component from A1, CLAS and Hermes GD11-P - fits. High-Q^2 part from the input QCD PDF with standard coefficient functions. - Photon generated at scale 100.0 GeV, other partons matched at scale - 10.0 GeV, photon momentum absorbed by adjusting g(x) -.gt. g(x) - - 0.00699 * x^{0.000} g(x) at scale 10.0 GeV -Members: - 0 is central - 1-100 map to original PDF members - 101 replacement of CLAS resonance fit with Christy-Bosted fit - 102 rescale-R-0.5 - 103 rescale R in high-Q^2 region with a higher-twist component - 104 use the A1 elastic fit result without the two-photon exchange corrections - 105 use the lower edge of the elastic fit error band - 106 lower the transition from Hermes GD11-P to the PDF-based F2,FL determinations to 5 GeV^2 - 107 extremum of absolute variation obtained by adding the NNLO QCD contribution for each of three scale choices (mu_M/mu = 0.5, 1.0, 2.0) -Versioning info: - DataVersion, below, is (10000 * PDF4LHC15_nnlo_100.DataVersion + 1 * LUXqed_version) -LUXqed version history for this PDF: - This version corresponds to the long LUXqed17 paper. -<weight id="1901" MUR="1.0" MUF="1.0" PDF="82200" > PDF=82200 MemberID=0 </weight> -<weight id="1902" MUR="1.0" MUF="1.0" PDF="82201" > PDF=82200 MemberID=1 </weight> -<weight id="1903" MUR="1.0" MUF="1.0" PDF="82202" > PDF=82200 MemberID=2 </weight> -<weight id="1904" MUR="1.0" MUF="1.0" PDF="82203" > PDF=82200 MemberID=3 </weight> -<weight id="1905" MUR="1.0" MUF="1.0" PDF="82204" > PDF=82200 MemberID=4 </weight> -<weight id="1906" MUR="1.0" MUF="1.0" PDF="82205" > PDF=82200 MemberID=5 </weight> -<weight id="1907" MUR="1.0" MUF="1.0" PDF="82206" > PDF=82200 MemberID=6 </weight> -<weight id="1908" MUR="1.0" MUF="1.0" PDF="82207" > PDF=82200 MemberID=7 </weight> -<weight id="1909" MUR="1.0" MUF="1.0" PDF="82208" > PDF=82200 MemberID=8 </weight> -<weight id="1910" MUR="1.0" MUF="1.0" PDF="82209" > PDF=82200 MemberID=9 </weight> -<weight id="1911" MUR="1.0" MUF="1.0" PDF="82210" > PDF=82200 MemberID=10 </weight> -<weight id="1912" MUR="1.0" MUF="1.0" PDF="82211" > PDF=82200 MemberID=11 </weight> -<weight id="1913" MUR="1.0" MUF="1.0" PDF="82212" > PDF=82200 MemberID=12 </weight> -<weight id="1914" MUR="1.0" MUF="1.0" PDF="82213" > PDF=82200 MemberID=13 </weight> -<weight id="1915" MUR="1.0" MUF="1.0" PDF="82214" > PDF=82200 MemberID=14 </weight> -<weight id="1916" MUR="1.0" MUF="1.0" PDF="82215" > PDF=82200 MemberID=15 </weight> -<weight id="1917" MUR="1.0" MUF="1.0" PDF="82216" > PDF=82200 MemberID=16 </weight> -<weight id="1918" MUR="1.0" MUF="1.0" PDF="82217" > PDF=82200 MemberID=17 </weight> -<weight id="1919" MUR="1.0" MUF="1.0" PDF="82218" > PDF=82200 MemberID=18 </weight> -<weight id="1920" MUR="1.0" MUF="1.0" PDF="82219" > PDF=82200 MemberID=19 </weight> -<weight id="1921" MUR="1.0" MUF="1.0" PDF="82220" > PDF=82200 MemberID=20 </weight> -<weight id="1922" MUR="1.0" MUF="1.0" PDF="82221" > PDF=82200 MemberID=21 </weight> -<weight id="1923" MUR="1.0" MUF="1.0" PDF="82222" > PDF=82200 MemberID=22 </weight> -<weight id="1924" MUR="1.0" MUF="1.0" PDF="82223" > PDF=82200 MemberID=23 </weight> -<weight id="1925" MUR="1.0" MUF="1.0" PDF="82224" > PDF=82200 MemberID=24 </weight> -<weight id="1926" MUR="1.0" MUF="1.0" PDF="82225" > PDF=82200 MemberID=25 </weight> -<weight id="1927" MUR="1.0" MUF="1.0" PDF="82226" > PDF=82200 MemberID=26 </weight> -<weight id="1928" MUR="1.0" MUF="1.0" PDF="82227" > PDF=82200 MemberID=27 </weight> -<weight id="1929" MUR="1.0" MUF="1.0" PDF="82228" > PDF=82200 MemberID=28 </weight> -<weight id="1930" MUR="1.0" MUF="1.0" PDF="82229" > PDF=82200 MemberID=29 </weight> -<weight id="1931" MUR="1.0" MUF="1.0" PDF="82230" > PDF=82200 MemberID=30 </weight> -<weight id="1932" MUR="1.0" MUF="1.0" PDF="82231" > PDF=82200 MemberID=31 </weight> -<weight id="1933" MUR="1.0" MUF="1.0" PDF="82232" > PDF=82200 MemberID=32 </weight> -<weight id="1934" MUR="1.0" MUF="1.0" PDF="82233" > PDF=82200 MemberID=33 </weight> -<weight id="1935" MUR="1.0" MUF="1.0" PDF="82234" > PDF=82200 MemberID=34 </weight> -<weight id="1936" MUR="1.0" MUF="1.0" PDF="82235" > PDF=82200 MemberID=35 </weight> -<weight id="1937" MUR="1.0" MUF="1.0" PDF="82236" > PDF=82200 MemberID=36 </weight> -<weight id="1938" MUR="1.0" MUF="1.0" PDF="82237" > PDF=82200 MemberID=37 </weight> -<weight id="1939" MUR="1.0" MUF="1.0" PDF="82238" > PDF=82200 MemberID=38 </weight> -<weight id="1940" MUR="1.0" MUF="1.0" PDF="82239" > PDF=82200 MemberID=39 </weight> -<weight id="1941" MUR="1.0" MUF="1.0" PDF="82240" > PDF=82200 MemberID=40 </weight> -<weight id="1942" MUR="1.0" MUF="1.0" PDF="82241" > PDF=82200 MemberID=41 </weight> -<weight id="1943" MUR="1.0" MUF="1.0" PDF="82242" > PDF=82200 MemberID=42 </weight> -<weight id="1944" MUR="1.0" MUF="1.0" PDF="82243" > PDF=82200 MemberID=43 </weight> -<weight id="1945" MUR="1.0" MUF="1.0" PDF="82244" > PDF=82200 MemberID=44 </weight> -<weight id="1946" MUR="1.0" MUF="1.0" PDF="82245" > PDF=82200 MemberID=45 </weight> -<weight id="1947" MUR="1.0" MUF="1.0" PDF="82246" > PDF=82200 MemberID=46 </weight> -<weight id="1948" MUR="1.0" MUF="1.0" PDF="82247" > PDF=82200 MemberID=47 </weight> -<weight id="1949" MUR="1.0" MUF="1.0" PDF="82248" > PDF=82200 MemberID=48 </weight> -<weight id="1950" MUR="1.0" MUF="1.0" PDF="82249" > PDF=82200 MemberID=49 </weight> -<weight id="1951" MUR="1.0" MUF="1.0" PDF="82250" > PDF=82200 MemberID=50 </weight> -<weight id="1952" MUR="1.0" MUF="1.0" PDF="82251" > PDF=82200 MemberID=51 </weight> -<weight id="1953" MUR="1.0" MUF="1.0" PDF="82252" > PDF=82200 MemberID=52 </weight> -<weight id="1954" MUR="1.0" MUF="1.0" PDF="82253" > PDF=82200 MemberID=53 </weight> -<weight id="1955" MUR="1.0" MUF="1.0" PDF="82254" > PDF=82200 MemberID=54 </weight> -<weight id="1956" MUR="1.0" MUF="1.0" PDF="82255" > PDF=82200 MemberID=55 </weight> -<weight id="1957" MUR="1.0" MUF="1.0" PDF="82256" > PDF=82200 MemberID=56 </weight> -<weight id="1958" MUR="1.0" MUF="1.0" PDF="82257" > PDF=82200 MemberID=57 </weight> -<weight id="1959" MUR="1.0" MUF="1.0" PDF="82258" > PDF=82200 MemberID=58 </weight> -<weight id="1960" MUR="1.0" MUF="1.0" PDF="82259" > PDF=82200 MemberID=59 </weight> -<weight id="1961" MUR="1.0" MUF="1.0" PDF="82260" > PDF=82200 MemberID=60 </weight> -<weight id="1962" MUR="1.0" MUF="1.0" PDF="82261" > PDF=82200 MemberID=61 </weight> -<weight id="1963" MUR="1.0" MUF="1.0" PDF="82262" > PDF=82200 MemberID=62 </weight> -<weight id="1964" MUR="1.0" MUF="1.0" PDF="82263" > PDF=82200 MemberID=63 </weight> -<weight id="1965" MUR="1.0" MUF="1.0" PDF="82264" > PDF=82200 MemberID=64 </weight> -<weight id="1966" MUR="1.0" MUF="1.0" PDF="82265" > PDF=82200 MemberID=65 </weight> -<weight id="1967" MUR="1.0" MUF="1.0" PDF="82266" > PDF=82200 MemberID=66 </weight> -<weight id="1968" MUR="1.0" MUF="1.0" PDF="82267" > PDF=82200 MemberID=67 </weight> -<weight id="1969" MUR="1.0" MUF="1.0" PDF="82268" > PDF=82200 MemberID=68 </weight> -<weight id="1970" MUR="1.0" MUF="1.0" PDF="82269" > PDF=82200 MemberID=69 </weight> -<weight id="1971" MUR="1.0" MUF="1.0" PDF="82270" > PDF=82200 MemberID=70 </weight> -<weight id="1972" MUR="1.0" MUF="1.0" PDF="82271" > PDF=82200 MemberID=71 </weight> -<weight id="1973" MUR="1.0" MUF="1.0" PDF="82272" > PDF=82200 MemberID=72 </weight> -<weight id="1974" MUR="1.0" MUF="1.0" PDF="82273" > PDF=82200 MemberID=73 </weight> -<weight id="1975" MUR="1.0" MUF="1.0" PDF="82274" > PDF=82200 MemberID=74 </weight> -<weight id="1976" MUR="1.0" MUF="1.0" PDF="82275" > PDF=82200 MemberID=75 </weight> -<weight id="1977" MUR="1.0" MUF="1.0" PDF="82276" > PDF=82200 MemberID=76 </weight> -<weight id="1978" MUR="1.0" MUF="1.0" PDF="82277" > PDF=82200 MemberID=77 </weight> -<weight id="1979" MUR="1.0" MUF="1.0" PDF="82278" > PDF=82200 MemberID=78 </weight> -<weight id="1980" MUR="1.0" MUF="1.0" PDF="82279" > PDF=82200 MemberID=79 </weight> -<weight id="1981" MUR="1.0" MUF="1.0" PDF="82280" > PDF=82200 MemberID=80 </weight> -<weight id="1982" MUR="1.0" MUF="1.0" PDF="82281" > PDF=82200 MemberID=81 </weight> -<weight id="1983" MUR="1.0" MUF="1.0" PDF="82282" > PDF=82200 MemberID=82 </weight> -<weight id="1984" MUR="1.0" MUF="1.0" PDF="82283" > PDF=82200 MemberID=83 </weight> -<weight id="1985" MUR="1.0" MUF="1.0" PDF="82284" > PDF=82200 MemberID=84 </weight> -<weight id="1986" MUR="1.0" MUF="1.0" PDF="82285" > PDF=82200 MemberID=85 </weight> -<weight id="1987" MUR="1.0" MUF="1.0" PDF="82286" > PDF=82200 MemberID=86 </weight> -<weight id="1988" MUR="1.0" MUF="1.0" PDF="82287" > PDF=82200 MemberID=87 </weight> -<weight id="1989" MUR="1.0" MUF="1.0" PDF="82288" > PDF=82200 MemberID=88 </weight> -<weight id="1990" MUR="1.0" MUF="1.0" PDF="82289" > PDF=82200 MemberID=89 </weight> -<weight id="1991" MUR="1.0" MUF="1.0" PDF="82290" > PDF=82200 MemberID=90 </weight> -<weight id="1992" MUR="1.0" MUF="1.0" PDF="82291" > PDF=82200 MemberID=91 </weight> -<weight id="1993" MUR="1.0" MUF="1.0" PDF="82292" > PDF=82200 MemberID=92 </weight> -<weight id="1994" MUR="1.0" MUF="1.0" PDF="82293" > PDF=82200 MemberID=93 </weight> -<weight id="1995" MUR="1.0" MUF="1.0" PDF="82294" > PDF=82200 MemberID=94 </weight> -<weight id="1996" MUR="1.0" MUF="1.0" PDF="82295" > PDF=82200 MemberID=95 </weight> -<weight id="1997" MUR="1.0" MUF="1.0" PDF="82296" > PDF=82200 MemberID=96 </weight> -<weight id="1998" MUR="1.0" MUF="1.0" PDF="82297" > PDF=82200 MemberID=97 </weight> -<weight id="1999" MUR="1.0" MUF="1.0" PDF="82298" > PDF=82200 MemberID=98 </weight> -<weight id="2000" MUR="1.0" MUF="1.0" PDF="82299" > PDF=82200 MemberID=99 </weight> -<weight id="2001" MUR="1.0" MUF="1.0" PDF="82300" > PDF=82200 MemberID=100 </weight> -<weight id="2002" MUR="1.0" MUF="1.0" PDF="82301" > PDF=82200 MemberID=101 </weight> -<weight id="2003" MUR="1.0" MUF="1.0" PDF="82302" > PDF=82200 MemberID=102 </weight> -<weight id="2004" MUR="1.0" MUF="1.0" PDF="82303" > PDF=82200 MemberID=103 </weight> -<weight id="2005" MUR="1.0" MUF="1.0" PDF="82304" > PDF=82200 MemberID=104 </weight> -<weight id="2006" MUR="1.0" MUF="1.0" PDF="82305" > PDF=82200 MemberID=105 </weight> -<weight id="2007" MUR="1.0" MUF="1.0" PDF="82306" > PDF=82200 MemberID=106 </weight> -<weight id="2008" MUR="1.0" MUF="1.0" PDF="82307" > PDF=82200 MemberID=107 </weight> -</weightgroup> # PDFSET -> PDFSET -<weightgroup name="NNPDF30_nlo_nf_5_pdfas" combine="replicas+as"> # 292200: NNPDF3.0 NLO global fit; mem=0 to mem=100 with alphas(MZ)=0.118, mem=0 ; average on replicas 1-100; mem=1-100 ; PDF replicas with alphas(MZ)=0.118; mem=101 ; central value for alphas=0.117; mem=102 ; central value for alphas=0.119 -<weight id="2009" MUR="1.0" MUF="1.0" PDF="292200" > PDF=292200 MemberID=0 </weight> -<weight id="2010" MUR="1.0" MUF="1.0" PDF="292201" > PDF=292200 MemberID=1 </weight> -<weight id="2011" MUR="1.0" MUF="1.0" PDF="292202" > PDF=292200 MemberID=2 </weight> -<weight id="2012" MUR="1.0" MUF="1.0" PDF="292203" > PDF=292200 MemberID=3 </weight> -<weight id="2013" MUR="1.0" MUF="1.0" PDF="292204" > PDF=292200 MemberID=4 </weight> -<weight id="2014" MUR="1.0" MUF="1.0" PDF="292205" > PDF=292200 MemberID=5 </weight> -<weight id="2015" MUR="1.0" MUF="1.0" PDF="292206" > PDF=292200 MemberID=6 </weight> -<weight id="2016" MUR="1.0" MUF="1.0" PDF="292207" > PDF=292200 MemberID=7 </weight> -<weight id="2017" MUR="1.0" MUF="1.0" PDF="292208" > PDF=292200 MemberID=8 </weight> -<weight id="2018" MUR="1.0" MUF="1.0" PDF="292209" > PDF=292200 MemberID=9 </weight> -<weight id="2019" MUR="1.0" MUF="1.0" PDF="292210" > PDF=292200 MemberID=10 </weight> -<weight id="2020" MUR="1.0" MUF="1.0" PDF="292211" > PDF=292200 MemberID=11 </weight> -<weight id="2021" MUR="1.0" MUF="1.0" PDF="292212" > PDF=292200 MemberID=12 </weight> -<weight id="2022" MUR="1.0" MUF="1.0" PDF="292213" > PDF=292200 MemberID=13 </weight> -<weight id="2023" MUR="1.0" MUF="1.0" PDF="292214" > PDF=292200 MemberID=14 </weight> -<weight id="2024" MUR="1.0" MUF="1.0" PDF="292215" > PDF=292200 MemberID=15 </weight> -<weight id="2025" MUR="1.0" MUF="1.0" PDF="292216" > PDF=292200 MemberID=16 </weight> -<weight id="2026" MUR="1.0" MUF="1.0" PDF="292217" > PDF=292200 MemberID=17 </weight> -<weight id="2027" MUR="1.0" MUF="1.0" PDF="292218" > PDF=292200 MemberID=18 </weight> -<weight id="2028" MUR="1.0" MUF="1.0" PDF="292219" > PDF=292200 MemberID=19 </weight> -<weight id="2029" MUR="1.0" MUF="1.0" PDF="292220" > PDF=292200 MemberID=20 </weight> -<weight id="2030" MUR="1.0" MUF="1.0" PDF="292221" > PDF=292200 MemberID=21 </weight> -<weight id="2031" MUR="1.0" MUF="1.0" PDF="292222" > PDF=292200 MemberID=22 </weight> -<weight id="2032" MUR="1.0" MUF="1.0" PDF="292223" > PDF=292200 MemberID=23 </weight> -<weight id="2033" MUR="1.0" MUF="1.0" PDF="292224" > PDF=292200 MemberID=24 </weight> -<weight id="2034" MUR="1.0" MUF="1.0" PDF="292225" > PDF=292200 MemberID=25 </weight> -<weight id="2035" MUR="1.0" MUF="1.0" PDF="292226" > PDF=292200 MemberID=26 </weight> -<weight id="2036" MUR="1.0" MUF="1.0" PDF="292227" > PDF=292200 MemberID=27 </weight> -<weight id="2037" MUR="1.0" MUF="1.0" PDF="292228" > PDF=292200 MemberID=28 </weight> -<weight id="2038" MUR="1.0" MUF="1.0" PDF="292229" > PDF=292200 MemberID=29 </weight> -<weight id="2039" MUR="1.0" MUF="1.0" PDF="292230" > PDF=292200 MemberID=30 </weight> -<weight id="2040" MUR="1.0" MUF="1.0" PDF="292231" > PDF=292200 MemberID=31 </weight> -<weight id="2041" MUR="1.0" MUF="1.0" PDF="292232" > PDF=292200 MemberID=32 </weight> -<weight id="2042" MUR="1.0" MUF="1.0" PDF="292233" > PDF=292200 MemberID=33 </weight> -<weight id="2043" MUR="1.0" MUF="1.0" PDF="292234" > PDF=292200 MemberID=34 </weight> -<weight id="2044" MUR="1.0" MUF="1.0" PDF="292235" > PDF=292200 MemberID=35 </weight> -<weight id="2045" MUR="1.0" MUF="1.0" PDF="292236" > PDF=292200 MemberID=36 </weight> -<weight id="2046" MUR="1.0" MUF="1.0" PDF="292237" > PDF=292200 MemberID=37 </weight> -<weight id="2047" MUR="1.0" MUF="1.0" PDF="292238" > PDF=292200 MemberID=38 </weight> -<weight id="2048" MUR="1.0" MUF="1.0" PDF="292239" > PDF=292200 MemberID=39 </weight> -<weight id="2049" MUR="1.0" MUF="1.0" PDF="292240" > PDF=292200 MemberID=40 </weight> -<weight id="2050" MUR="1.0" MUF="1.0" PDF="292241" > PDF=292200 MemberID=41 </weight> -<weight id="2051" MUR="1.0" MUF="1.0" PDF="292242" > PDF=292200 MemberID=42 </weight> -<weight id="2052" MUR="1.0" MUF="1.0" PDF="292243" > PDF=292200 MemberID=43 </weight> -<weight id="2053" MUR="1.0" MUF="1.0" PDF="292244" > PDF=292200 MemberID=44 </weight> -<weight id="2054" MUR="1.0" MUF="1.0" PDF="292245" > PDF=292200 MemberID=45 </weight> -<weight id="2055" MUR="1.0" MUF="1.0" PDF="292246" > PDF=292200 MemberID=46 </weight> -<weight id="2056" MUR="1.0" MUF="1.0" PDF="292247" > PDF=292200 MemberID=47 </weight> -<weight id="2057" MUR="1.0" MUF="1.0" PDF="292248" > PDF=292200 MemberID=48 </weight> -<weight id="2058" MUR="1.0" MUF="1.0" PDF="292249" > PDF=292200 MemberID=49 </weight> -<weight id="2059" MUR="1.0" MUF="1.0" PDF="292250" > PDF=292200 MemberID=50 </weight> -<weight id="2060" MUR="1.0" MUF="1.0" PDF="292251" > PDF=292200 MemberID=51 </weight> -<weight id="2061" MUR="1.0" MUF="1.0" PDF="292252" > PDF=292200 MemberID=52 </weight> -<weight id="2062" MUR="1.0" MUF="1.0" PDF="292253" > PDF=292200 MemberID=53 </weight> -<weight id="2063" MUR="1.0" MUF="1.0" PDF="292254" > PDF=292200 MemberID=54 </weight> -<weight id="2064" MUR="1.0" MUF="1.0" PDF="292255" > PDF=292200 MemberID=55 </weight> -<weight id="2065" MUR="1.0" MUF="1.0" PDF="292256" > PDF=292200 MemberID=56 </weight> -<weight id="2066" MUR="1.0" MUF="1.0" PDF="292257" > PDF=292200 MemberID=57 </weight> -<weight id="2067" MUR="1.0" MUF="1.0" PDF="292258" > PDF=292200 MemberID=58 </weight> -<weight id="2068" MUR="1.0" MUF="1.0" PDF="292259" > PDF=292200 MemberID=59 </weight> -<weight id="2069" MUR="1.0" MUF="1.0" PDF="292260" > PDF=292200 MemberID=60 </weight> -<weight id="2070" MUR="1.0" MUF="1.0" PDF="292261" > PDF=292200 MemberID=61 </weight> -<weight id="2071" MUR="1.0" MUF="1.0" PDF="292262" > PDF=292200 MemberID=62 </weight> -<weight id="2072" MUR="1.0" MUF="1.0" PDF="292263" > PDF=292200 MemberID=63 </weight> -<weight id="2073" MUR="1.0" MUF="1.0" PDF="292264" > PDF=292200 MemberID=64 </weight> -<weight id="2074" MUR="1.0" MUF="1.0" PDF="292265" > PDF=292200 MemberID=65 </weight> -<weight id="2075" MUR="1.0" MUF="1.0" PDF="292266" > PDF=292200 MemberID=66 </weight> -<weight id="2076" MUR="1.0" MUF="1.0" PDF="292267" > PDF=292200 MemberID=67 </weight> -<weight id="2077" MUR="1.0" MUF="1.0" PDF="292268" > PDF=292200 MemberID=68 </weight> -<weight id="2078" MUR="1.0" MUF="1.0" PDF="292269" > PDF=292200 MemberID=69 </weight> -<weight id="2079" MUR="1.0" MUF="1.0" PDF="292270" > PDF=292200 MemberID=70 </weight> -<weight id="2080" MUR="1.0" MUF="1.0" PDF="292271" > PDF=292200 MemberID=71 </weight> -<weight id="2081" MUR="1.0" MUF="1.0" PDF="292272" > PDF=292200 MemberID=72 </weight> -<weight id="2082" MUR="1.0" MUF="1.0" PDF="292273" > PDF=292200 MemberID=73 </weight> -<weight id="2083" MUR="1.0" MUF="1.0" PDF="292274" > PDF=292200 MemberID=74 </weight> -<weight id="2084" MUR="1.0" MUF="1.0" PDF="292275" > PDF=292200 MemberID=75 </weight> -<weight id="2085" MUR="1.0" MUF="1.0" PDF="292276" > PDF=292200 MemberID=76 </weight> -<weight id="2086" MUR="1.0" MUF="1.0" PDF="292277" > PDF=292200 MemberID=77 </weight> -<weight id="2087" MUR="1.0" MUF="1.0" PDF="292278" > PDF=292200 MemberID=78 </weight> -<weight id="2088" MUR="1.0" MUF="1.0" PDF="292279" > PDF=292200 MemberID=79 </weight> -<weight id="2089" MUR="1.0" MUF="1.0" PDF="292280" > PDF=292200 MemberID=80 </weight> -<weight id="2090" MUR="1.0" MUF="1.0" PDF="292281" > PDF=292200 MemberID=81 </weight> -<weight id="2091" MUR="1.0" MUF="1.0" PDF="292282" > PDF=292200 MemberID=82 </weight> -<weight id="2092" MUR="1.0" MUF="1.0" PDF="292283" > PDF=292200 MemberID=83 </weight> -<weight id="2093" MUR="1.0" MUF="1.0" PDF="292284" > PDF=292200 MemberID=84 </weight> -<weight id="2094" MUR="1.0" MUF="1.0" PDF="292285" > PDF=292200 MemberID=85 </weight> -<weight id="2095" MUR="1.0" MUF="1.0" PDF="292286" > PDF=292200 MemberID=86 </weight> -<weight id="2096" MUR="1.0" MUF="1.0" PDF="292287" > PDF=292200 MemberID=87 </weight> -<weight id="2097" MUR="1.0" MUF="1.0" PDF="292288" > PDF=292200 MemberID=88 </weight> -<weight id="2098" MUR="1.0" MUF="1.0" PDF="292289" > PDF=292200 MemberID=89 </weight> -<weight id="2099" MUR="1.0" MUF="1.0" PDF="292290" > PDF=292200 MemberID=90 </weight> -<weight id="2100" MUR="1.0" MUF="1.0" PDF="292291" > PDF=292200 MemberID=91 </weight> -<weight id="2101" MUR="1.0" MUF="1.0" PDF="292292" > PDF=292200 MemberID=92 </weight> -<weight id="2102" MUR="1.0" MUF="1.0" PDF="292293" > PDF=292200 MemberID=93 </weight> -<weight id="2103" MUR="1.0" MUF="1.0" PDF="292294" > PDF=292200 MemberID=94 </weight> -<weight id="2104" MUR="1.0" MUF="1.0" PDF="292295" > PDF=292200 MemberID=95 </weight> -<weight id="2105" MUR="1.0" MUF="1.0" PDF="292296" > PDF=292200 MemberID=96 </weight> -<weight id="2106" MUR="1.0" MUF="1.0" PDF="292297" > PDF=292200 MemberID=97 </weight> -<weight id="2107" MUR="1.0" MUF="1.0" PDF="292298" > PDF=292200 MemberID=98 </weight> -<weight id="2108" MUR="1.0" MUF="1.0" PDF="292299" > PDF=292200 MemberID=99 </weight> -<weight id="2109" MUR="1.0" MUF="1.0" PDF="292300" > PDF=292200 MemberID=100 </weight> -<weight id="2110" MUR="1.0" MUF="1.0" PDF="292301" > PDF=292200 MemberID=101 </weight> -<weight id="2111" MUR="1.0" MUF="1.0" PDF="292302" > PDF=292200 MemberID=102 </weight> -</weightgroup> # PDFSET -> PDF -<weight id="2112" MUR="1.0" MUF="1.0" PDF="292600" > PDF=292600 MemberID=0 </weight> -<weight id="2113" MUR="1.0" MUF="1.0" PDF="315000" > PDF=315000 MemberID=0 </weight> -<weight id="2114" MUR="1.0" MUF="1.0" PDF="315200" > PDF=315200 MemberID=0 </weight> -<weight id="2115" MUR="1.0" MUF="1.0" PDF="262000" > PDF=262000 MemberID=0 </weight> -<weight id="2116" MUR="1.0" MUF="1.0" PDF="263000" > PDF=263000 MemberID=0 </weight> - diff --git a/testFiles/WZVBS_private_weightInfo.txt b/testFiles/WZVBS_private_weightInfo.txt deleted file mode 100644 index c3723d61f19b3..0000000000000 --- a/testFiles/WZVBS_private_weightInfo.txt +++ /dev/null @@ -1,150 +0,0 @@ -# ---> From file /afs/cern.ch/user/k/kelong/work/temp/testMG.root - - dyn_scale_choice=sum pt - dyn_scale_choice=HT - dyn_scale_choice=HT/2 - dyn_scale_choice=sqrts - MUF=2.0 - MUF=2.0 dyn_scale_choice=sum pt - MUF=2.0 dyn_scale_choice=HT - MUF=2.0 dyn_scale_choice=HT/2 - MUF=2.0 dyn_scale_choice=sqrts - MUF=0.5 - MUF=0.5 dyn_scale_choice=sum pt - MUF=0.5 dyn_scale_choice=HT - MUF=0.5 dyn_scale_choice=HT/2 - MUF=0.5 dyn_scale_choice=sqrts - MUR=2.0 - MUR=2.0 dyn_scale_choice=sum pt - MUR=2.0 dyn_scale_choice=HT - MUR=2.0 dyn_scale_choice=HT/2 - MUR=2.0 dyn_scale_choice=sqrts - MUR=2.0 MUF=2.0 - MUR=2.0 MUF=2.0 dyn_scale_choice=sum pt - MUR=2.0 MUF=2.0 dyn_scale_choice=HT - MUR=2.0 MUF=2.0 dyn_scale_choice=HT/2 - MUR=2.0 MUF=2.0 dyn_scale_choice=sqrts - MUR=2.0 MUF=0.5 - MUR=2.0 MUF=0.5 dyn_scale_choice=sum pt - MUR=2.0 MUF=0.5 dyn_scale_choice=HT - MUR=2.0 MUF=0.5 dyn_scale_choice=HT/2 - MUR=2.0 MUF=0.5 dyn_scale_choice=sqrts - MUR=0.5 - MUR=0.5 dyn_scale_choice=sum pt - MUR=0.5 dyn_scale_choice=HT - MUR=0.5 dyn_scale_choice=HT/2 - MUR=0.5 dyn_scale_choice=sqrts - MUR=0.5 MUF=2.0 - MUR=0.5 MUF=2.0 dyn_scale_choice=sum pt - MUR=0.5 MUF=2.0 dyn_scale_choice=HT - MUR=0.5 MUF=2.0 dyn_scale_choice=HT/2 - MUR=0.5 MUF=2.0 dyn_scale_choice=sqrts - MUR=0.5 MUF=0.5 - MUR=0.5 MUF=0.5 dyn_scale_choice=sum pt - MUR=0.5 MUF=0.5 dyn_scale_choice=HT - MUR=0.5 MUF=0.5 dyn_scale_choice=HT/2 - MUR=0.5 MUF=0.5 dyn_scale_choice=sqrts - # scale - # 263400: NNPDF3.0 LO global fit, alphas(mb)=0.2544. mem=0 ; average on replicas; mem=1-100 ; PDF replicas - - PDF=263400 MemberID=1 - PDF=263400 MemberID=2 - PDF=263400 MemberID=3 - PDF=263400 MemberID=4 - PDF=263400 MemberID=5 - PDF=263400 MemberID=6 - PDF=263400 MemberID=7 - PDF=263400 MemberID=8 - PDF=263400 MemberID=9 - PDF=263400 MemberID=10 - PDF=263400 MemberID=11 - PDF=263400 MemberID=12 - PDF=263400 MemberID=13 - PDF=263400 MemberID=14 - PDF=263400 MemberID=15 - PDF=263400 MemberID=16 - PDF=263400 MemberID=17 - PDF=263400 MemberID=18 - PDF=263400 MemberID=19 - PDF=263400 MemberID=20 - PDF=263400 MemberID=21 - PDF=263400 MemberID=22 - PDF=263400 MemberID=23 - PDF=263400 MemberID=24 - PDF=263400 MemberID=25 - PDF=263400 MemberID=26 - PDF=263400 MemberID=27 - PDF=263400 MemberID=28 - PDF=263400 MemberID=29 - PDF=263400 MemberID=30 - PDF=263400 MemberID=31 - PDF=263400 MemberID=32 - PDF=263400 MemberID=33 - PDF=263400 MemberID=34 - PDF=263400 MemberID=35 - PDF=263400 MemberID=36 - PDF=263400 MemberID=37 - PDF=263400 MemberID=38 - PDF=263400 MemberID=39 - PDF=263400 MemberID=40 - PDF=263400 MemberID=41 - PDF=263400 MemberID=42 - PDF=263400 MemberID=43 - PDF=263400 MemberID=44 - PDF=263400 MemberID=45 - PDF=263400 MemberID=46 - PDF=263400 MemberID=47 - PDF=263400 MemberID=48 - PDF=263400 MemberID=49 - PDF=263400 MemberID=50 - PDF=263400 MemberID=51 - PDF=263400 MemberID=52 - PDF=263400 MemberID=53 - PDF=263400 MemberID=54 - PDF=263400 MemberID=55 - PDF=263400 MemberID=56 - PDF=263400 MemberID=57 - PDF=263400 MemberID=58 - PDF=263400 MemberID=59 - PDF=263400 MemberID=60 - PDF=263400 MemberID=61 - PDF=263400 MemberID=62 - PDF=263400 MemberID=63 - PDF=263400 MemberID=64 - PDF=263400 MemberID=65 - PDF=263400 MemberID=66 - PDF=263400 MemberID=67 - PDF=263400 MemberID=68 - PDF=263400 MemberID=69 - PDF=263400 MemberID=70 - PDF=263400 MemberID=71 - PDF=263400 MemberID=72 - PDF=263400 MemberID=73 - PDF=263400 MemberID=74 - PDF=263400 MemberID=75 - PDF=263400 MemberID=76 - PDF=263400 MemberID=77 - PDF=263400 MemberID=78 - PDF=263400 MemberID=79 - PDF=263400 MemberID=80 - PDF=263400 MemberID=81 - PDF=263400 MemberID=82 - PDF=263400 MemberID=83 - PDF=263400 MemberID=84 - PDF=263400 MemberID=85 - PDF=263400 MemberID=86 - PDF=263400 MemberID=87 - PDF=263400 MemberID=88 - PDF=263400 MemberID=89 - PDF=263400 MemberID=90 - PDF=263400 MemberID=91 - PDF=263400 MemberID=92 - PDF=263400 MemberID=93 - PDF=263400 MemberID=94 - PDF=263400 MemberID=95 - PDF=263400 MemberID=96 - PDF=263400 MemberID=97 - PDF=263400 MemberID=98 - PDF=263400 MemberID=99 - PDF=263400 MemberID=100 - diff --git a/testFiles/ZJ_MiNNLO_weightinfo.txt b/testFiles/ZJ_MiNNLO_weightinfo.txt deleted file mode 100644 index 217e23d31862a..0000000000000 --- a/testFiles/ZJ_MiNNLO_weightinfo.txt +++ /dev/null @@ -1,735 +0,0 @@ - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - - - lhapdf=306000 - lhapdf=306001 - lhapdf=306002 - lhapdf=306003 - lhapdf=306004 - lhapdf=306005 - lhapdf=306006 - lhapdf=306007 - lhapdf=306008 - lhapdf=306009 - lhapdf=306010 - lhapdf=306011 - lhapdf=306012 - lhapdf=306013 - lhapdf=306014 - lhapdf=306015 - lhapdf=306016 - lhapdf=306017 - lhapdf=306018 - lhapdf=306019 - lhapdf=306020 - lhapdf=306021 - lhapdf=306022 - lhapdf=306023 - lhapdf=306024 - lhapdf=306025 - lhapdf=306026 - lhapdf=306027 - lhapdf=306028 - lhapdf=306029 - lhapdf=306030 - lhapdf=306031 - lhapdf=306032 - lhapdf=306033 - lhapdf=306034 - lhapdf=306035 - lhapdf=306036 - lhapdf=306037 - lhapdf=306038 - lhapdf=306039 - lhapdf=306040 - lhapdf=306041 - lhapdf=306042 - lhapdf=306043 - lhapdf=306044 - lhapdf=306045 - lhapdf=306046 - lhapdf=306047 - lhapdf=306048 - lhapdf=306049 - lhapdf=306050 - lhapdf=306051 - lhapdf=306052 - lhapdf=306053 - lhapdf=306054 - lhapdf=306055 - lhapdf=306056 - lhapdf=306057 - lhapdf=306058 - lhapdf=306059 - lhapdf=306060 - lhapdf=306061 - lhapdf=306062 - lhapdf=306063 - lhapdf=306064 - lhapdf=306065 - lhapdf=306066 - lhapdf=306067 - lhapdf=306068 - lhapdf=306069 - lhapdf=306070 - lhapdf=306071 - lhapdf=306072 - lhapdf=306073 - lhapdf=306074 - lhapdf=306075 - lhapdf=306076 - lhapdf=306077 - lhapdf=306078 - lhapdf=306079 - lhapdf=306080 - lhapdf=306081 - lhapdf=306082 - lhapdf=306083 - lhapdf=306084 - lhapdf=306085 - lhapdf=306086 - lhapdf=306087 - lhapdf=306088 - lhapdf=306089 - lhapdf=306090 - lhapdf=306091 - lhapdf=306092 - lhapdf=306093 - lhapdf=306094 - lhapdf=306095 - lhapdf=306096 - lhapdf=306097 - lhapdf=306098 - lhapdf=306099 - lhapdf=306100 - lhapdf=306101 - lhapdf=306102 - lhapdf=322500 - lhapdf=322700 - lhapdf=322900 - lhapdf=323100 - lhapdf=323300 - lhapdf=323500 - lhapdf=323700 - lhapdf=323900 - lhapdf=325700 - lhapdf=325701 - lhapdf=325702 - lhapdf=325703 - lhapdf=325704 - lhapdf=325705 - lhapdf=325706 - lhapdf=325707 - lhapdf=325708 - lhapdf=325709 - lhapdf=325710 - lhapdf=325711 - lhapdf=325712 - lhapdf=325713 - lhapdf=325714 - lhapdf=325715 - lhapdf=325716 - lhapdf=325717 - lhapdf=325718 - lhapdf=325719 - lhapdf=325720 - lhapdf=325721 - lhapdf=325722 - lhapdf=325723 - lhapdf=325724 - lhapdf=325725 - lhapdf=325726 - lhapdf=325727 - lhapdf=325728 - lhapdf=325729 - lhapdf=325730 - lhapdf=325731 - lhapdf=325732 - lhapdf=325733 - lhapdf=325734 - lhapdf=325735 - lhapdf=325736 - lhapdf=325737 - lhapdf=325738 - lhapdf=325739 - lhapdf=325740 - lhapdf=325741 - lhapdf=325742 - lhapdf=325743 - lhapdf=325744 - lhapdf=325745 - lhapdf=325746 - lhapdf=325747 - lhapdf=325748 - lhapdf=325749 - lhapdf=325750 - lhapdf=325751 - lhapdf=325752 - lhapdf=325753 - lhapdf=325754 - lhapdf=325755 - lhapdf=325756 - lhapdf=325757 - lhapdf=325758 - lhapdf=325759 - lhapdf=325760 - lhapdf=325761 - lhapdf=325762 - lhapdf=325763 - lhapdf=325764 - lhapdf=325765 - lhapdf=325766 - lhapdf=325767 - lhapdf=325768 - lhapdf=325769 - lhapdf=325770 - lhapdf=325771 - lhapdf=325772 - lhapdf=325773 - lhapdf=325774 - lhapdf=325775 - lhapdf=325776 - lhapdf=325777 - lhapdf=325778 - lhapdf=325779 - lhapdf=325780 - lhapdf=325781 - lhapdf=325782 - lhapdf=325783 - lhapdf=325784 - lhapdf=325785 - lhapdf=325786 - lhapdf=325787 - lhapdf=325788 - lhapdf=325789 - lhapdf=325790 - lhapdf=325791 - lhapdf=325792 - lhapdf=325793 - lhapdf=325794 - lhapdf=325795 - lhapdf=325796 - lhapdf=325797 - lhapdf=325798 - lhapdf=325799 - lhapdf=325800 - lhapdf=325900 - lhapdf=325901 - lhapdf=325902 - lhapdf=325903 - lhapdf=325904 - lhapdf=325905 - lhapdf=325906 - lhapdf=325907 - lhapdf=325908 - lhapdf=325909 - lhapdf=325910 - lhapdf=325911 - lhapdf=325912 - lhapdf=325913 - lhapdf=325914 - lhapdf=325915 - lhapdf=325916 - lhapdf=325917 - lhapdf=325918 - lhapdf=325919 - lhapdf=325920 - lhapdf=325921 - lhapdf=325922 - lhapdf=325923 - lhapdf=325924 - lhapdf=325925 - lhapdf=325926 - lhapdf=325927 - lhapdf=325928 - lhapdf=325929 - lhapdf=325930 - lhapdf=325931 - lhapdf=325932 - lhapdf=325933 - lhapdf=325934 - lhapdf=325935 - lhapdf=325936 - lhapdf=325937 - lhapdf=325938 - lhapdf=325939 - lhapdf=325940 - lhapdf=325941 - lhapdf=325942 - lhapdf=325943 - lhapdf=325944 - lhapdf=325945 - lhapdf=325946 - lhapdf=325947 - lhapdf=325948 - lhapdf=325949 - lhapdf=325950 - lhapdf=325951 - lhapdf=325952 - lhapdf=325953 - lhapdf=325954 - lhapdf=325955 - lhapdf=325956 - lhapdf=325957 - lhapdf=325958 - lhapdf=325959 - lhapdf=325960 - lhapdf=325961 - lhapdf=325962 - lhapdf=325963 - lhapdf=325964 - lhapdf=325965 - lhapdf=325966 - lhapdf=325967 - lhapdf=325968 - lhapdf=325969 - lhapdf=325970 - lhapdf=325971 - lhapdf=325972 - lhapdf=325973 - lhapdf=325974 - lhapdf=325975 - lhapdf=325976 - lhapdf=325977 - lhapdf=325978 - lhapdf=325979 - lhapdf=325980 - lhapdf=325981 - lhapdf=325982 - lhapdf=325983 - lhapdf=325984 - lhapdf=325985 - lhapdf=325986 - lhapdf=325987 - lhapdf=325988 - lhapdf=325989 - lhapdf=325990 - lhapdf=325991 - lhapdf=325992 - lhapdf=325993 - lhapdf=325994 - lhapdf=325995 - lhapdf=325996 - lhapdf=325997 - lhapdf=325998 - lhapdf=325999 - lhapdf=326000 - lhapdf=326100 - lhapdf=326101 - lhapdf=326102 - lhapdf=326103 - lhapdf=326104 - lhapdf=326105 - lhapdf=326106 - lhapdf=326107 - lhapdf=326108 - lhapdf=326109 - lhapdf=326110 - lhapdf=326111 - lhapdf=326112 - lhapdf=326113 - lhapdf=326114 - lhapdf=326115 - lhapdf=326116 - lhapdf=326117 - lhapdf=326118 - lhapdf=326119 - lhapdf=326120 - lhapdf=326121 - lhapdf=326122 - lhapdf=326123 - lhapdf=326124 - lhapdf=326125 - lhapdf=326126 - lhapdf=326127 - lhapdf=326128 - lhapdf=326129 - lhapdf=326130 - lhapdf=326131 - lhapdf=326132 - lhapdf=326133 - lhapdf=326134 - lhapdf=326135 - lhapdf=326136 - lhapdf=326137 - lhapdf=326138 - lhapdf=326139 - lhapdf=326140 - lhapdf=326141 - lhapdf=326142 - lhapdf=326143 - lhapdf=326144 - lhapdf=326145 - lhapdf=326146 - lhapdf=326147 - lhapdf=326148 - lhapdf=326149 - lhapdf=326150 - lhapdf=326151 - lhapdf=326152 - lhapdf=326153 - lhapdf=326154 - lhapdf=326155 - lhapdf=326156 - lhapdf=326157 - lhapdf=326158 - lhapdf=326159 - lhapdf=326160 - lhapdf=326161 - lhapdf=326162 - lhapdf=326163 - lhapdf=326164 - lhapdf=326165 - lhapdf=326166 - lhapdf=326167 - lhapdf=326168 - lhapdf=326169 - lhapdf=326170 - lhapdf=326171 - lhapdf=326172 - lhapdf=326173 - lhapdf=326174 - lhapdf=326175 - lhapdf=326176 - lhapdf=326177 - lhapdf=326178 - lhapdf=326179 - lhapdf=326180 - lhapdf=326181 - lhapdf=326182 - lhapdf=326183 - lhapdf=326184 - lhapdf=326185 - lhapdf=326186 - lhapdf=326187 - lhapdf=326188 - lhapdf=326189 - lhapdf=326190 - lhapdf=326191 - lhapdf=326192 - lhapdf=326193 - lhapdf=326194 - lhapdf=326195 - lhapdf=326196 - lhapdf=326197 - lhapdf=326198 - lhapdf=326199 - lhapdf=326200 - lhapdf=326300 - lhapdf=326301 - lhapdf=326302 - lhapdf=326303 - lhapdf=326304 - lhapdf=326305 - lhapdf=326306 - lhapdf=326307 - lhapdf=326308 - lhapdf=326309 - lhapdf=326310 - lhapdf=326311 - lhapdf=326312 - lhapdf=326313 - lhapdf=326314 - lhapdf=326315 - lhapdf=326316 - lhapdf=326317 - lhapdf=326318 - lhapdf=326319 - lhapdf=326320 - lhapdf=326321 - lhapdf=326322 - lhapdf=326323 - lhapdf=326324 - lhapdf=326325 - lhapdf=326326 - lhapdf=326327 - lhapdf=326328 - lhapdf=326329 - lhapdf=326330 - lhapdf=326331 - lhapdf=326332 - lhapdf=326333 - lhapdf=326334 - lhapdf=326335 - lhapdf=326336 - lhapdf=326337 - lhapdf=326338 - lhapdf=326339 - lhapdf=326340 - lhapdf=326341 - lhapdf=326342 - lhapdf=326343 - lhapdf=326344 - lhapdf=326345 - lhapdf=326346 - lhapdf=326347 - lhapdf=326348 - lhapdf=326349 - lhapdf=326350 - lhapdf=326351 - lhapdf=326352 - lhapdf=326353 - lhapdf=326354 - lhapdf=326355 - lhapdf=326356 - lhapdf=326357 - lhapdf=326358 - lhapdf=326359 - lhapdf=326360 - lhapdf=326361 - lhapdf=326362 - lhapdf=326363 - lhapdf=326364 - lhapdf=326365 - lhapdf=326366 - lhapdf=326367 - lhapdf=326368 - lhapdf=326369 - lhapdf=326370 - lhapdf=326371 - lhapdf=326372 - lhapdf=326373 - lhapdf=326374 - lhapdf=326375 - lhapdf=326376 - lhapdf=326377 - lhapdf=326378 - lhapdf=326379 - lhapdf=326380 - lhapdf=326381 - lhapdf=326382 - lhapdf=326383 - lhapdf=326384 - lhapdf=326385 - lhapdf=326386 - lhapdf=326387 - lhapdf=326388 - lhapdf=326389 - lhapdf=326390 - lhapdf=326391 - lhapdf=326392 - lhapdf=326393 - lhapdf=326394 - lhapdf=326395 - lhapdf=326396 - lhapdf=326397 - lhapdf=326398 - lhapdf=326399 - lhapdf=326400 - lhapdf=13000 - lhapdf=13001 - lhapdf=13002 - lhapdf=13003 - lhapdf=13004 - lhapdf=13005 - lhapdf=13006 - lhapdf=13007 - lhapdf=13008 - lhapdf=13009 - lhapdf=13010 - lhapdf=13011 - lhapdf=13012 - lhapdf=13013 - lhapdf=13014 - lhapdf=13015 - lhapdf=13016 - lhapdf=13017 - lhapdf=13018 - lhapdf=13019 - lhapdf=13020 - lhapdf=13021 - lhapdf=13022 - lhapdf=13023 - lhapdf=13024 - lhapdf=13025 - lhapdf=13026 - lhapdf=13027 - lhapdf=13028 - lhapdf=13029 - lhapdf=13030 - lhapdf=13031 - lhapdf=13032 - lhapdf=13033 - lhapdf=13034 - lhapdf=13035 - lhapdf=13036 - lhapdf=13037 - lhapdf=13038 - lhapdf=13039 - lhapdf=13040 - lhapdf=13041 - lhapdf=13042 - lhapdf=13043 - lhapdf=13044 - lhapdf=13045 - lhapdf=13046 - lhapdf=13047 - lhapdf=13048 - lhapdf=13049 - lhapdf=13050 - lhapdf=13051 - lhapdf=13052 - lhapdf=13053 - lhapdf=13054 - lhapdf=13055 - lhapdf=13056 - lhapdf=13065 - lhapdf=13069 - lhapdf=25300 - lhapdf=25301 - lhapdf=25302 - lhapdf=25303 - lhapdf=25304 - lhapdf=25305 - lhapdf=25306 - lhapdf=25307 - lhapdf=25308 - lhapdf=25309 - lhapdf=25310 - lhapdf=25311 - lhapdf=25312 - lhapdf=25313 - lhapdf=25314 - lhapdf=25315 - lhapdf=25316 - lhapdf=25317 - lhapdf=25318 - lhapdf=25319 - lhapdf=25320 - lhapdf=25321 - lhapdf=25322 - lhapdf=25323 - lhapdf=25324 - lhapdf=25325 - lhapdf=25326 - lhapdf=25327 - lhapdf=25328 - lhapdf=25329 - lhapdf=25330 - lhapdf=25331 - lhapdf=25332 - lhapdf=25333 - lhapdf=25334 - lhapdf=25335 - lhapdf=25336 - lhapdf=25337 - lhapdf=25338 - lhapdf=25339 - lhapdf=25340 - lhapdf=25341 - lhapdf=25342 - lhapdf=25343 - lhapdf=25344 - lhapdf=25345 - lhapdf=25346 - lhapdf=25347 - lhapdf=25348 - lhapdf=25349 - lhapdf=25350 - lhapdf=25360 - lhapdf=25361 - lhapdf=25362 - lhapdf=42560 - lhapdf=42561 - lhapdf=42562 - lhapdf=42563 - lhapdf=42564 - lhapdf=42565 - lhapdf=42566 - lhapdf=42567 - lhapdf=42568 - lhapdf=42569 - lhapdf=42570 - lhapdf=42571 - lhapdf=42572 - lhapdf=42573 - lhapdf=42574 - lhapdf=42575 - lhapdf=42576 - lhapdf=42577 - lhapdf=42578 - lhapdf=42579 - lhapdf=42580 - lhapdf=42581 - lhapdf=42582 - lhapdf=42583 - lhapdf=42584 - lhapdf=42585 - lhapdf=42586 - lhapdf=42587 - lhapdf=42588 - lhapdf=42589 - lhapdf=61200 - lhapdf=61201 - lhapdf=61202 - lhapdf=61203 - lhapdf=61204 - lhapdf=61205 - lhapdf=61206 - lhapdf=61207 - lhapdf=61208 - lhapdf=61209 - lhapdf=61210 - lhapdf=61211 - lhapdf=61212 - lhapdf=61213 - lhapdf=61214 - lhapdf=61215 - lhapdf=61216 - lhapdf=61217 - lhapdf=61218 - lhapdf=61219 - lhapdf=61220 - lhapdf=61221 - lhapdf=61222 - lhapdf=61223 - lhapdf=61224 - lhapdf=61225 - lhapdf=61226 - lhapdf=61227 - lhapdf=61228 - lhapdf=61230 - lhapdf=61231 - lhapdf=61232 - lhapdf=61233 - lhapdf=61234 - lhapdf=61235 - lhapdf=61236 - lhapdf=61237 - lhapdf=61238 - lhapdf=61239 - lhapdf=61240 - lhapdf=61241 - lhapdf=61242 - lhapdf=61243 - lhapdf=61740 - lhapdf=61741 - lhapdf=61742 - lhapdf=61743 - lhapdf=61744 - lhapdf=61745 - lhapdf=61746 - lhapdf=61747 - lhapdf=61748 - lhapdf=61749 - lhapdf=61750 - lhapdf=61751 - lhapdf=61752 - lhapdf=61753 - lhapdf=61754 - lhapdf=61755 - lhapdf=61756 - lhapdf=61757 - lhapdf=61758 - lhapdf=61759 - lhapdf=61760 - diff --git a/testFiles/ZMiNNLO.txt b/testFiles/ZMiNNLO.txt deleted file mode 100644 index 217e23d31862a..0000000000000 --- a/testFiles/ZMiNNLO.txt +++ /dev/null @@ -1,735 +0,0 @@ - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - - - lhapdf=306000 - lhapdf=306001 - lhapdf=306002 - lhapdf=306003 - lhapdf=306004 - lhapdf=306005 - lhapdf=306006 - lhapdf=306007 - lhapdf=306008 - lhapdf=306009 - lhapdf=306010 - lhapdf=306011 - lhapdf=306012 - lhapdf=306013 - lhapdf=306014 - lhapdf=306015 - lhapdf=306016 - lhapdf=306017 - lhapdf=306018 - lhapdf=306019 - lhapdf=306020 - lhapdf=306021 - lhapdf=306022 - lhapdf=306023 - lhapdf=306024 - lhapdf=306025 - lhapdf=306026 - lhapdf=306027 - lhapdf=306028 - lhapdf=306029 - lhapdf=306030 - lhapdf=306031 - lhapdf=306032 - lhapdf=306033 - lhapdf=306034 - lhapdf=306035 - lhapdf=306036 - lhapdf=306037 - lhapdf=306038 - lhapdf=306039 - lhapdf=306040 - lhapdf=306041 - lhapdf=306042 - lhapdf=306043 - lhapdf=306044 - lhapdf=306045 - lhapdf=306046 - lhapdf=306047 - lhapdf=306048 - lhapdf=306049 - lhapdf=306050 - lhapdf=306051 - lhapdf=306052 - lhapdf=306053 - lhapdf=306054 - lhapdf=306055 - lhapdf=306056 - lhapdf=306057 - lhapdf=306058 - lhapdf=306059 - lhapdf=306060 - lhapdf=306061 - lhapdf=306062 - lhapdf=306063 - lhapdf=306064 - lhapdf=306065 - lhapdf=306066 - lhapdf=306067 - lhapdf=306068 - lhapdf=306069 - lhapdf=306070 - lhapdf=306071 - lhapdf=306072 - lhapdf=306073 - lhapdf=306074 - lhapdf=306075 - lhapdf=306076 - lhapdf=306077 - lhapdf=306078 - lhapdf=306079 - lhapdf=306080 - lhapdf=306081 - lhapdf=306082 - lhapdf=306083 - lhapdf=306084 - lhapdf=306085 - lhapdf=306086 - lhapdf=306087 - lhapdf=306088 - lhapdf=306089 - lhapdf=306090 - lhapdf=306091 - lhapdf=306092 - lhapdf=306093 - lhapdf=306094 - lhapdf=306095 - lhapdf=306096 - lhapdf=306097 - lhapdf=306098 - lhapdf=306099 - lhapdf=306100 - lhapdf=306101 - lhapdf=306102 - lhapdf=322500 - lhapdf=322700 - lhapdf=322900 - lhapdf=323100 - lhapdf=323300 - lhapdf=323500 - lhapdf=323700 - lhapdf=323900 - lhapdf=325700 - lhapdf=325701 - lhapdf=325702 - lhapdf=325703 - lhapdf=325704 - lhapdf=325705 - lhapdf=325706 - lhapdf=325707 - lhapdf=325708 - lhapdf=325709 - lhapdf=325710 - lhapdf=325711 - lhapdf=325712 - lhapdf=325713 - lhapdf=325714 - lhapdf=325715 - lhapdf=325716 - lhapdf=325717 - lhapdf=325718 - lhapdf=325719 - lhapdf=325720 - lhapdf=325721 - lhapdf=325722 - lhapdf=325723 - lhapdf=325724 - lhapdf=325725 - lhapdf=325726 - lhapdf=325727 - lhapdf=325728 - lhapdf=325729 - lhapdf=325730 - lhapdf=325731 - lhapdf=325732 - lhapdf=325733 - lhapdf=325734 - lhapdf=325735 - lhapdf=325736 - lhapdf=325737 - lhapdf=325738 - lhapdf=325739 - lhapdf=325740 - lhapdf=325741 - lhapdf=325742 - lhapdf=325743 - lhapdf=325744 - lhapdf=325745 - lhapdf=325746 - lhapdf=325747 - lhapdf=325748 - lhapdf=325749 - lhapdf=325750 - lhapdf=325751 - lhapdf=325752 - lhapdf=325753 - lhapdf=325754 - lhapdf=325755 - lhapdf=325756 - lhapdf=325757 - lhapdf=325758 - lhapdf=325759 - lhapdf=325760 - lhapdf=325761 - lhapdf=325762 - lhapdf=325763 - lhapdf=325764 - lhapdf=325765 - lhapdf=325766 - lhapdf=325767 - lhapdf=325768 - lhapdf=325769 - lhapdf=325770 - lhapdf=325771 - lhapdf=325772 - lhapdf=325773 - lhapdf=325774 - lhapdf=325775 - lhapdf=325776 - lhapdf=325777 - lhapdf=325778 - lhapdf=325779 - lhapdf=325780 - lhapdf=325781 - lhapdf=325782 - lhapdf=325783 - lhapdf=325784 - lhapdf=325785 - lhapdf=325786 - lhapdf=325787 - lhapdf=325788 - lhapdf=325789 - lhapdf=325790 - lhapdf=325791 - lhapdf=325792 - lhapdf=325793 - lhapdf=325794 - lhapdf=325795 - lhapdf=325796 - lhapdf=325797 - lhapdf=325798 - lhapdf=325799 - lhapdf=325800 - lhapdf=325900 - lhapdf=325901 - lhapdf=325902 - lhapdf=325903 - lhapdf=325904 - lhapdf=325905 - lhapdf=325906 - lhapdf=325907 - lhapdf=325908 - lhapdf=325909 - lhapdf=325910 - lhapdf=325911 - lhapdf=325912 - lhapdf=325913 - lhapdf=325914 - lhapdf=325915 - lhapdf=325916 - lhapdf=325917 - lhapdf=325918 - lhapdf=325919 - lhapdf=325920 - lhapdf=325921 - lhapdf=325922 - lhapdf=325923 - lhapdf=325924 - lhapdf=325925 - lhapdf=325926 - lhapdf=325927 - lhapdf=325928 - lhapdf=325929 - lhapdf=325930 - lhapdf=325931 - lhapdf=325932 - lhapdf=325933 - lhapdf=325934 - lhapdf=325935 - lhapdf=325936 - lhapdf=325937 - lhapdf=325938 - lhapdf=325939 - lhapdf=325940 - lhapdf=325941 - lhapdf=325942 - lhapdf=325943 - lhapdf=325944 - lhapdf=325945 - lhapdf=325946 - lhapdf=325947 - lhapdf=325948 - lhapdf=325949 - lhapdf=325950 - lhapdf=325951 - lhapdf=325952 - lhapdf=325953 - lhapdf=325954 - lhapdf=325955 - lhapdf=325956 - lhapdf=325957 - lhapdf=325958 - lhapdf=325959 - lhapdf=325960 - lhapdf=325961 - lhapdf=325962 - lhapdf=325963 - lhapdf=325964 - lhapdf=325965 - lhapdf=325966 - lhapdf=325967 - lhapdf=325968 - lhapdf=325969 - lhapdf=325970 - lhapdf=325971 - lhapdf=325972 - lhapdf=325973 - lhapdf=325974 - lhapdf=325975 - lhapdf=325976 - lhapdf=325977 - lhapdf=325978 - lhapdf=325979 - lhapdf=325980 - lhapdf=325981 - lhapdf=325982 - lhapdf=325983 - lhapdf=325984 - lhapdf=325985 - lhapdf=325986 - lhapdf=325987 - lhapdf=325988 - lhapdf=325989 - lhapdf=325990 - lhapdf=325991 - lhapdf=325992 - lhapdf=325993 - lhapdf=325994 - lhapdf=325995 - lhapdf=325996 - lhapdf=325997 - lhapdf=325998 - lhapdf=325999 - lhapdf=326000 - lhapdf=326100 - lhapdf=326101 - lhapdf=326102 - lhapdf=326103 - lhapdf=326104 - lhapdf=326105 - lhapdf=326106 - lhapdf=326107 - lhapdf=326108 - lhapdf=326109 - lhapdf=326110 - lhapdf=326111 - lhapdf=326112 - lhapdf=326113 - lhapdf=326114 - lhapdf=326115 - lhapdf=326116 - lhapdf=326117 - lhapdf=326118 - lhapdf=326119 - lhapdf=326120 - lhapdf=326121 - lhapdf=326122 - lhapdf=326123 - lhapdf=326124 - lhapdf=326125 - lhapdf=326126 - lhapdf=326127 - lhapdf=326128 - lhapdf=326129 - lhapdf=326130 - lhapdf=326131 - lhapdf=326132 - lhapdf=326133 - lhapdf=326134 - lhapdf=326135 - lhapdf=326136 - lhapdf=326137 - lhapdf=326138 - lhapdf=326139 - lhapdf=326140 - lhapdf=326141 - lhapdf=326142 - lhapdf=326143 - lhapdf=326144 - lhapdf=326145 - lhapdf=326146 - lhapdf=326147 - lhapdf=326148 - lhapdf=326149 - lhapdf=326150 - lhapdf=326151 - lhapdf=326152 - lhapdf=326153 - lhapdf=326154 - lhapdf=326155 - lhapdf=326156 - lhapdf=326157 - lhapdf=326158 - lhapdf=326159 - lhapdf=326160 - lhapdf=326161 - lhapdf=326162 - lhapdf=326163 - lhapdf=326164 - lhapdf=326165 - lhapdf=326166 - lhapdf=326167 - lhapdf=326168 - lhapdf=326169 - lhapdf=326170 - lhapdf=326171 - lhapdf=326172 - lhapdf=326173 - lhapdf=326174 - lhapdf=326175 - lhapdf=326176 - lhapdf=326177 - lhapdf=326178 - lhapdf=326179 - lhapdf=326180 - lhapdf=326181 - lhapdf=326182 - lhapdf=326183 - lhapdf=326184 - lhapdf=326185 - lhapdf=326186 - lhapdf=326187 - lhapdf=326188 - lhapdf=326189 - lhapdf=326190 - lhapdf=326191 - lhapdf=326192 - lhapdf=326193 - lhapdf=326194 - lhapdf=326195 - lhapdf=326196 - lhapdf=326197 - lhapdf=326198 - lhapdf=326199 - lhapdf=326200 - lhapdf=326300 - lhapdf=326301 - lhapdf=326302 - lhapdf=326303 - lhapdf=326304 - lhapdf=326305 - lhapdf=326306 - lhapdf=326307 - lhapdf=326308 - lhapdf=326309 - lhapdf=326310 - lhapdf=326311 - lhapdf=326312 - lhapdf=326313 - lhapdf=326314 - lhapdf=326315 - lhapdf=326316 - lhapdf=326317 - lhapdf=326318 - lhapdf=326319 - lhapdf=326320 - lhapdf=326321 - lhapdf=326322 - lhapdf=326323 - lhapdf=326324 - lhapdf=326325 - lhapdf=326326 - lhapdf=326327 - lhapdf=326328 - lhapdf=326329 - lhapdf=326330 - lhapdf=326331 - lhapdf=326332 - lhapdf=326333 - lhapdf=326334 - lhapdf=326335 - lhapdf=326336 - lhapdf=326337 - lhapdf=326338 - lhapdf=326339 - lhapdf=326340 - lhapdf=326341 - lhapdf=326342 - lhapdf=326343 - lhapdf=326344 - lhapdf=326345 - lhapdf=326346 - lhapdf=326347 - lhapdf=326348 - lhapdf=326349 - lhapdf=326350 - lhapdf=326351 - lhapdf=326352 - lhapdf=326353 - lhapdf=326354 - lhapdf=326355 - lhapdf=326356 - lhapdf=326357 - lhapdf=326358 - lhapdf=326359 - lhapdf=326360 - lhapdf=326361 - lhapdf=326362 - lhapdf=326363 - lhapdf=326364 - lhapdf=326365 - lhapdf=326366 - lhapdf=326367 - lhapdf=326368 - lhapdf=326369 - lhapdf=326370 - lhapdf=326371 - lhapdf=326372 - lhapdf=326373 - lhapdf=326374 - lhapdf=326375 - lhapdf=326376 - lhapdf=326377 - lhapdf=326378 - lhapdf=326379 - lhapdf=326380 - lhapdf=326381 - lhapdf=326382 - lhapdf=326383 - lhapdf=326384 - lhapdf=326385 - lhapdf=326386 - lhapdf=326387 - lhapdf=326388 - lhapdf=326389 - lhapdf=326390 - lhapdf=326391 - lhapdf=326392 - lhapdf=326393 - lhapdf=326394 - lhapdf=326395 - lhapdf=326396 - lhapdf=326397 - lhapdf=326398 - lhapdf=326399 - lhapdf=326400 - lhapdf=13000 - lhapdf=13001 - lhapdf=13002 - lhapdf=13003 - lhapdf=13004 - lhapdf=13005 - lhapdf=13006 - lhapdf=13007 - lhapdf=13008 - lhapdf=13009 - lhapdf=13010 - lhapdf=13011 - lhapdf=13012 - lhapdf=13013 - lhapdf=13014 - lhapdf=13015 - lhapdf=13016 - lhapdf=13017 - lhapdf=13018 - lhapdf=13019 - lhapdf=13020 - lhapdf=13021 - lhapdf=13022 - lhapdf=13023 - lhapdf=13024 - lhapdf=13025 - lhapdf=13026 - lhapdf=13027 - lhapdf=13028 - lhapdf=13029 - lhapdf=13030 - lhapdf=13031 - lhapdf=13032 - lhapdf=13033 - lhapdf=13034 - lhapdf=13035 - lhapdf=13036 - lhapdf=13037 - lhapdf=13038 - lhapdf=13039 - lhapdf=13040 - lhapdf=13041 - lhapdf=13042 - lhapdf=13043 - lhapdf=13044 - lhapdf=13045 - lhapdf=13046 - lhapdf=13047 - lhapdf=13048 - lhapdf=13049 - lhapdf=13050 - lhapdf=13051 - lhapdf=13052 - lhapdf=13053 - lhapdf=13054 - lhapdf=13055 - lhapdf=13056 - lhapdf=13065 - lhapdf=13069 - lhapdf=25300 - lhapdf=25301 - lhapdf=25302 - lhapdf=25303 - lhapdf=25304 - lhapdf=25305 - lhapdf=25306 - lhapdf=25307 - lhapdf=25308 - lhapdf=25309 - lhapdf=25310 - lhapdf=25311 - lhapdf=25312 - lhapdf=25313 - lhapdf=25314 - lhapdf=25315 - lhapdf=25316 - lhapdf=25317 - lhapdf=25318 - lhapdf=25319 - lhapdf=25320 - lhapdf=25321 - lhapdf=25322 - lhapdf=25323 - lhapdf=25324 - lhapdf=25325 - lhapdf=25326 - lhapdf=25327 - lhapdf=25328 - lhapdf=25329 - lhapdf=25330 - lhapdf=25331 - lhapdf=25332 - lhapdf=25333 - lhapdf=25334 - lhapdf=25335 - lhapdf=25336 - lhapdf=25337 - lhapdf=25338 - lhapdf=25339 - lhapdf=25340 - lhapdf=25341 - lhapdf=25342 - lhapdf=25343 - lhapdf=25344 - lhapdf=25345 - lhapdf=25346 - lhapdf=25347 - lhapdf=25348 - lhapdf=25349 - lhapdf=25350 - lhapdf=25360 - lhapdf=25361 - lhapdf=25362 - lhapdf=42560 - lhapdf=42561 - lhapdf=42562 - lhapdf=42563 - lhapdf=42564 - lhapdf=42565 - lhapdf=42566 - lhapdf=42567 - lhapdf=42568 - lhapdf=42569 - lhapdf=42570 - lhapdf=42571 - lhapdf=42572 - lhapdf=42573 - lhapdf=42574 - lhapdf=42575 - lhapdf=42576 - lhapdf=42577 - lhapdf=42578 - lhapdf=42579 - lhapdf=42580 - lhapdf=42581 - lhapdf=42582 - lhapdf=42583 - lhapdf=42584 - lhapdf=42585 - lhapdf=42586 - lhapdf=42587 - lhapdf=42588 - lhapdf=42589 - lhapdf=61200 - lhapdf=61201 - lhapdf=61202 - lhapdf=61203 - lhapdf=61204 - lhapdf=61205 - lhapdf=61206 - lhapdf=61207 - lhapdf=61208 - lhapdf=61209 - lhapdf=61210 - lhapdf=61211 - lhapdf=61212 - lhapdf=61213 - lhapdf=61214 - lhapdf=61215 - lhapdf=61216 - lhapdf=61217 - lhapdf=61218 - lhapdf=61219 - lhapdf=61220 - lhapdf=61221 - lhapdf=61222 - lhapdf=61223 - lhapdf=61224 - lhapdf=61225 - lhapdf=61226 - lhapdf=61227 - lhapdf=61228 - lhapdf=61230 - lhapdf=61231 - lhapdf=61232 - lhapdf=61233 - lhapdf=61234 - lhapdf=61235 - lhapdf=61236 - lhapdf=61237 - lhapdf=61238 - lhapdf=61239 - lhapdf=61240 - lhapdf=61241 - lhapdf=61242 - lhapdf=61243 - lhapdf=61740 - lhapdf=61741 - lhapdf=61742 - lhapdf=61743 - lhapdf=61744 - lhapdf=61745 - lhapdf=61746 - lhapdf=61747 - lhapdf=61748 - lhapdf=61749 - lhapdf=61750 - lhapdf=61751 - lhapdf=61752 - lhapdf=61753 - lhapdf=61754 - lhapdf=61755 - lhapdf=61756 - lhapdf=61757 - lhapdf=61758 - lhapdf=61759 - lhapdf=61760 - diff --git a/testFiles/ZZTo4L_powheg_2016_weightInfo.txt b/testFiles/ZZTo4L_powheg_2016_weightInfo.txt deleted file mode 100644 index a9f90131365a7..0000000000000 --- a/testFiles/ZZTo4L_powheg_2016_weightInfo.txt +++ /dev/null @@ -1,227 +0,0 @@ -# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIISummer16MiniAODv3/ZZTo4L_13TeV_powheg_pythia8/MINIAODSIM/PUMoriond17_94X_mcRun2_asymptotic_v3-v1/270000/B84CB0F2-E2C6-E811-BC6F-001A649D4631.root - - muR=1 muF=1 - muR=1 muF=2 - muR=1 muF=0.5 - muR=2 muF=1 - muR=2 muF=2 - muR=2 muF=0.5 - muR=0.5 muF=1 - muR=0.5 muF=2 - muR=0.5 muF=0.5 - - - PDF set = 260001 - PDF set = 260002 - PDF set = 260003 - PDF set = 260004 - PDF set = 260005 - PDF set = 260006 - PDF set = 260007 - PDF set = 260008 - PDF set = 260009 - PDF set = 260010 - PDF set = 260011 - PDF set = 260012 - PDF set = 260013 - PDF set = 260014 - PDF set = 260015 - PDF set = 260016 - PDF set = 260017 - PDF set = 260018 - PDF set = 260019 - PDF set = 260020 - PDF set = 260021 - PDF set = 260022 - PDF set = 260023 - PDF set = 260024 - PDF set = 260025 - PDF set = 260026 - PDF set = 260027 - PDF set = 260028 - PDF set = 260029 - PDF set = 260030 - PDF set = 260031 - PDF set = 260032 - PDF set = 260033 - PDF set = 260034 - PDF set = 260035 - PDF set = 260036 - PDF set = 260037 - PDF set = 260038 - PDF set = 260039 - PDF set = 260040 - PDF set = 260041 - PDF set = 260042 - PDF set = 260043 - PDF set = 260044 - PDF set = 260045 - PDF set = 260046 - PDF set = 260047 - PDF set = 260048 - PDF set = 260049 - PDF set = 260050 - PDF set = 260051 - PDF set = 260052 - PDF set = 260053 - PDF set = 260054 - PDF set = 260055 - PDF set = 260056 - PDF set = 260057 - PDF set = 260058 - PDF set = 260059 - PDF set = 260060 - PDF set = 260061 - PDF set = 260062 - PDF set = 260063 - PDF set = 260064 - PDF set = 260065 - PDF set = 260066 - PDF set = 260067 - PDF set = 260068 - PDF set = 260069 - PDF set = 260070 - PDF set = 260071 - PDF set = 260072 - PDF set = 260073 - PDF set = 260074 - PDF set = 260075 - PDF set = 260076 - PDF set = 260077 - PDF set = 260078 - PDF set = 260079 - PDF set = 260080 - PDF set = 260081 - PDF set = 260082 - PDF set = 260083 - PDF set = 260084 - PDF set = 260085 - PDF set = 260086 - PDF set = 260087 - PDF set = 260088 - PDF set = 260089 - PDF set = 260090 - PDF set = 260091 - PDF set = 260092 - PDF set = 260093 - PDF set = 260094 - PDF set = 260095 - PDF set = 260096 - PDF set = 260097 - PDF set = 260098 - PDF set = 260099 - PDF set = 260100 - PDF set = 265000 - PDF set = 266000 - PDF set = 11000 - PDF set = 11001 - PDF set = 11002 - PDF set = 11003 - PDF set = 11004 - PDF set = 11005 - PDF set = 11006 - PDF set = 11007 - PDF set = 11008 - PDF set = 11009 - PDF set = 11010 - PDF set = 11011 - PDF set = 11012 - PDF set = 11013 - PDF set = 11014 - PDF set = 11015 - PDF set = 11016 - PDF set = 11017 - PDF set = 11018 - PDF set = 11019 - PDF set = 11020 - PDF set = 11021 - PDF set = 11022 - PDF set = 11023 - PDF set = 11024 - PDF set = 11025 - PDF set = 11026 - PDF set = 11027 - PDF set = 11028 - PDF set = 11029 - PDF set = 11030 - PDF set = 11031 - PDF set = 11032 - PDF set = 11033 - PDF set = 11034 - PDF set = 11035 - PDF set = 11036 - PDF set = 11037 - PDF set = 11038 - PDF set = 11039 - PDF set = 11040 - PDF set = 11041 - PDF set = 11042 - PDF set = 11043 - PDF set = 11044 - PDF set = 11045 - PDF set = 11046 - PDF set = 11047 - PDF set = 11048 - PDF set = 11049 - PDF set = 11050 - PDF set = 11051 - PDF set = 11052 - PDF set = 11067 - PDF set = 11069 - PDF set = 25200 - PDF set = 25201 - PDF set = 25202 - PDF set = 25203 - PDF set = 25204 - PDF set = 25205 - PDF set = 25206 - PDF set = 25207 - PDF set = 25208 - PDF set = 25209 - PDF set = 25210 - PDF set = 25211 - PDF set = 25212 - PDF set = 25213 - PDF set = 25214 - PDF set = 25215 - PDF set = 25216 - PDF set = 25217 - PDF set = 25218 - PDF set = 25219 - PDF set = 25220 - PDF set = 25221 - PDF set = 25222 - PDF set = 25223 - PDF set = 25224 - PDF set = 25225 - PDF set = 25226 - PDF set = 25227 - PDF set = 25228 - PDF set = 25229 - PDF set = 25230 - PDF set = 25231 - PDF set = 25232 - PDF set = 25233 - PDF set = 25234 - PDF set = 25235 - PDF set = 25236 - PDF set = 25237 - PDF set = 25238 - PDF set = 25239 - PDF set = 25240 - PDF set = 25241 - PDF set = 25242 - PDF set = 25243 - PDF set = 25244 - PDF set = 25245 - PDF set = 25246 - PDF set = 25247 - PDF set = 25248 - PDF set = 25249 - PDF set = 25250 - PDF set = 25260 - PDF set = 25261 - PDF set = 25262 - PDF set = 25263 - PDF set = 25264 - diff --git a/testFiles/ZZTo4L_powheg_2017_weightInfo.txt b/testFiles/ZZTo4L_powheg_2017_weightInfo.txt deleted file mode 100644 index eba77245d4473..0000000000000 --- a/testFiles/ZZTo4L_powheg_2017_weightInfo.txt +++ /dev/null @@ -1,1087 +0,0 @@ -# ---> From file root://cms-xrd-global.cern.ch//store/mc/RunIIAutumn18MiniAOD/ZZTo4L_TuneCP5_13TeV_powheg_pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15_ext1-v2/10000/A3FB9D9C-6F10-6349-8345-BC3068E2E75A.root - - lhapdf=306000 renscfact=1d0 facscfact=1d0 - lhapdf=306000 renscfact=1d0 facscfact=2d0 - lhapdf=306000 renscfact=1d0 facscfact=0.5d0 - lhapdf=306000 renscfact=2d0 facscfact=1d0 - lhapdf=306000 renscfact=2d0 facscfact=2d0 - lhapdf=306000 renscfact=2d0 facscfact=0.5d0 - lhapdf=306000 renscfact=0.5d0 facscfact=1d0 - lhapdf=306000 renscfact=0.5d0 facscfact=2d0 - lhapdf=306000 renscfact=0.5d0 facscfact=0.5d0 - - - lhapdf=306000 - lhapdf=306001 - lhapdf=306002 - lhapdf=306003 - lhapdf=306004 - lhapdf=306005 - lhapdf=306006 - lhapdf=306007 - lhapdf=306008 - lhapdf=306009 - lhapdf=306010 - lhapdf=306011 - lhapdf=306012 - lhapdf=306013 - lhapdf=306014 - lhapdf=306015 - lhapdf=306016 - lhapdf=306017 - lhapdf=306018 - lhapdf=306019 - lhapdf=306020 - lhapdf=306021 - lhapdf=306022 - lhapdf=306023 - lhapdf=306024 - lhapdf=306025 - lhapdf=306026 - lhapdf=306027 - lhapdf=306028 - lhapdf=306029 - lhapdf=306030 - lhapdf=306031 - lhapdf=306032 - lhapdf=306033 - lhapdf=306034 - lhapdf=306035 - lhapdf=306036 - lhapdf=306037 - lhapdf=306038 - lhapdf=306039 - lhapdf=306040 - lhapdf=306041 - lhapdf=306042 - lhapdf=306043 - lhapdf=306044 - lhapdf=306045 - lhapdf=306046 - lhapdf=306047 - lhapdf=306048 - lhapdf=306049 - lhapdf=306050 - lhapdf=306051 - lhapdf=306052 - lhapdf=306053 - lhapdf=306054 - lhapdf=306055 - lhapdf=306056 - lhapdf=306057 - lhapdf=306058 - lhapdf=306059 - lhapdf=306060 - lhapdf=306061 - lhapdf=306062 - lhapdf=306063 - lhapdf=306064 - lhapdf=306065 - lhapdf=306066 - lhapdf=306067 - lhapdf=306068 - lhapdf=306069 - lhapdf=306070 - lhapdf=306071 - lhapdf=306072 - lhapdf=306073 - lhapdf=306074 - lhapdf=306075 - lhapdf=306076 - lhapdf=306077 - lhapdf=306078 - lhapdf=306079 - lhapdf=306080 - lhapdf=306081 - lhapdf=306082 - lhapdf=306083 - lhapdf=306084 - lhapdf=306085 - lhapdf=306086 - lhapdf=306087 - lhapdf=306088 - lhapdf=306089 - lhapdf=306090 - lhapdf=306091 - lhapdf=306092 - lhapdf=306093 - lhapdf=306094 - lhapdf=306095 - lhapdf=306096 - lhapdf=306097 - lhapdf=306098 - lhapdf=306099 - lhapdf=306100 - lhapdf=306101 - lhapdf=306102 - lhapdf=322500 - lhapdf=322700 - lhapdf=322900 - lhapdf=323100 - lhapdf=323300 - lhapdf=323500 - lhapdf=323700 - lhapdf=323900 - lhapdf=305800 - lhapdf=305801 - lhapdf=305802 - lhapdf=305803 - lhapdf=305804 - lhapdf=305805 - lhapdf=305806 - lhapdf=305807 - lhapdf=305808 - lhapdf=305809 - lhapdf=305810 - lhapdf=305811 - lhapdf=305812 - lhapdf=305813 - lhapdf=305814 - lhapdf=305815 - lhapdf=305816 - lhapdf=305817 - lhapdf=305818 - lhapdf=305819 - lhapdf=305820 - lhapdf=305821 - lhapdf=305822 - lhapdf=305823 - lhapdf=305824 - lhapdf=305825 - lhapdf=305826 - lhapdf=305827 - lhapdf=305828 - lhapdf=305829 - lhapdf=305830 - lhapdf=305831 - lhapdf=305832 - lhapdf=305833 - lhapdf=305834 - lhapdf=305835 - lhapdf=305836 - lhapdf=305837 - lhapdf=305838 - lhapdf=305839 - lhapdf=305840 - lhapdf=305841 - lhapdf=305842 - lhapdf=305843 - lhapdf=305844 - lhapdf=305845 - lhapdf=305846 - lhapdf=305847 - lhapdf=305848 - lhapdf=305849 - lhapdf=305850 - lhapdf=305851 - lhapdf=305852 - lhapdf=305853 - lhapdf=305854 - lhapdf=305855 - lhapdf=305856 - lhapdf=305857 - lhapdf=305858 - lhapdf=305859 - lhapdf=305860 - lhapdf=305861 - lhapdf=305862 - lhapdf=305863 - lhapdf=305864 - lhapdf=305865 - lhapdf=305866 - lhapdf=305867 - lhapdf=305868 - lhapdf=305869 - lhapdf=305870 - lhapdf=305871 - lhapdf=305872 - lhapdf=305873 - lhapdf=305874 - lhapdf=305875 - lhapdf=305876 - lhapdf=305877 - lhapdf=305878 - lhapdf=305879 - lhapdf=305880 - lhapdf=305881 - lhapdf=305882 - lhapdf=305883 - lhapdf=305884 - lhapdf=305885 - lhapdf=305886 - lhapdf=305887 - lhapdf=305888 - lhapdf=305889 - lhapdf=305890 - lhapdf=305891 - lhapdf=305892 - lhapdf=305893 - lhapdf=305894 - lhapdf=305895 - lhapdf=305896 - lhapdf=305897 - lhapdf=305898 - lhapdf=305899 - lhapdf=305900 - lhapdf=305901 - lhapdf=305902 - lhapdf=13000 - lhapdf=13001 - lhapdf=13002 - lhapdf=13003 - lhapdf=13004 - lhapdf=13005 - lhapdf=13006 - lhapdf=13007 - lhapdf=13008 - lhapdf=13009 - lhapdf=13010 - lhapdf=13011 - lhapdf=13012 - lhapdf=13013 - lhapdf=13014 - lhapdf=13015 - lhapdf=13016 - lhapdf=13017 - lhapdf=13018 - lhapdf=13019 - lhapdf=13020 - lhapdf=13021 - lhapdf=13022 - lhapdf=13023 - lhapdf=13024 - lhapdf=13025 - lhapdf=13026 - lhapdf=13027 - lhapdf=13028 - lhapdf=13029 - lhapdf=13030 - lhapdf=13031 - lhapdf=13032 - lhapdf=13033 - lhapdf=13034 - lhapdf=13035 - lhapdf=13036 - lhapdf=13037 - lhapdf=13038 - lhapdf=13039 - lhapdf=13040 - lhapdf=13041 - lhapdf=13042 - lhapdf=13043 - lhapdf=13044 - lhapdf=13045 - lhapdf=13046 - lhapdf=13047 - lhapdf=13048 - lhapdf=13049 - lhapdf=13050 - lhapdf=13051 - lhapdf=13052 - lhapdf=13053 - lhapdf=13054 - lhapdf=13055 - lhapdf=13056 - lhapdf=13065 - lhapdf=13069 - lhapdf=13100 - lhapdf=13101 - lhapdf=13102 - lhapdf=13103 - lhapdf=13104 - lhapdf=13105 - lhapdf=13106 - lhapdf=13107 - lhapdf=13108 - lhapdf=13109 - lhapdf=13110 - lhapdf=13111 - lhapdf=13112 - lhapdf=13113 - lhapdf=13114 - lhapdf=13115 - lhapdf=13116 - lhapdf=13117 - lhapdf=13118 - lhapdf=13119 - lhapdf=13120 - lhapdf=13121 - lhapdf=13122 - lhapdf=13123 - lhapdf=13124 - lhapdf=13125 - lhapdf=13126 - lhapdf=13127 - lhapdf=13128 - lhapdf=13129 - lhapdf=13130 - lhapdf=13131 - lhapdf=13132 - lhapdf=13133 - lhapdf=13134 - lhapdf=13135 - lhapdf=13136 - lhapdf=13137 - lhapdf=13138 - lhapdf=13139 - lhapdf=13140 - lhapdf=13141 - lhapdf=13142 - lhapdf=13143 - lhapdf=13144 - lhapdf=13145 - lhapdf=13146 - lhapdf=13147 - lhapdf=13148 - lhapdf=13149 - lhapdf=13150 - lhapdf=13151 - lhapdf=13152 - lhapdf=13153 - lhapdf=13154 - lhapdf=13155 - lhapdf=13156 - lhapdf=13163 - lhapdf=13167 - lhapdf=13200 - lhapdf=25200 - lhapdf=25201 - lhapdf=25202 - lhapdf=25203 - lhapdf=25204 - lhapdf=25205 - lhapdf=25206 - lhapdf=25207 - lhapdf=25208 - lhapdf=25209 - lhapdf=25210 - lhapdf=25211 - lhapdf=25212 - lhapdf=25213 - lhapdf=25214 - lhapdf=25215 - lhapdf=25216 - lhapdf=25217 - lhapdf=25218 - lhapdf=25219 - lhapdf=25220 - lhapdf=25221 - lhapdf=25222 - lhapdf=25223 - lhapdf=25224 - lhapdf=25225 - lhapdf=25226 - lhapdf=25227 - lhapdf=25228 - lhapdf=25229 - lhapdf=25230 - lhapdf=25231 - lhapdf=25232 - lhapdf=25233 - lhapdf=25234 - lhapdf=25235 - lhapdf=25236 - lhapdf=25237 - lhapdf=25238 - lhapdf=25239 - lhapdf=25240 - lhapdf=25241 - lhapdf=25242 - lhapdf=25243 - lhapdf=25244 - lhapdf=25245 - lhapdf=25246 - lhapdf=25247 - lhapdf=25248 - lhapdf=25249 - lhapdf=25250 - lhapdf=25300 - lhapdf=25301 - lhapdf=25302 - lhapdf=25303 - lhapdf=25304 - lhapdf=25305 - lhapdf=25306 - lhapdf=25307 - lhapdf=25308 - lhapdf=25309 - lhapdf=25310 - lhapdf=25311 - lhapdf=25312 - lhapdf=25313 - lhapdf=25314 - lhapdf=25315 - lhapdf=25316 - lhapdf=25317 - lhapdf=25318 - lhapdf=25319 - lhapdf=25320 - lhapdf=25321 - lhapdf=25322 - lhapdf=25323 - lhapdf=25324 - lhapdf=25325 - lhapdf=25326 - lhapdf=25327 - lhapdf=25328 - lhapdf=25329 - lhapdf=25330 - lhapdf=25331 - lhapdf=25332 - lhapdf=25333 - lhapdf=25334 - lhapdf=25335 - lhapdf=25336 - lhapdf=25337 - lhapdf=25338 - lhapdf=25339 - lhapdf=25340 - lhapdf=25341 - lhapdf=25342 - lhapdf=25343 - lhapdf=25344 - lhapdf=25345 - lhapdf=25346 - lhapdf=25347 - lhapdf=25348 - lhapdf=25349 - lhapdf=25350 - lhapdf=25000 - lhapdf=42780 - lhapdf=42781 - lhapdf=42782 - lhapdf=42783 - lhapdf=42784 - lhapdf=42785 - lhapdf=42786 - lhapdf=42787 - lhapdf=42788 - lhapdf=42789 - lhapdf=42790 - lhapdf=42791 - lhapdf=42792 - lhapdf=42793 - lhapdf=42794 - lhapdf=42795 - lhapdf=42796 - lhapdf=42797 - lhapdf=42798 - lhapdf=42799 - lhapdf=42800 - lhapdf=42801 - lhapdf=42802 - lhapdf=42803 - lhapdf=42804 - lhapdf=42805 - lhapdf=42806 - lhapdf=42807 - lhapdf=42808 - lhapdf=42809 - lhapdf=90200 - lhapdf=90201 - lhapdf=90202 - lhapdf=90203 - lhapdf=90204 - lhapdf=90205 - lhapdf=90206 - lhapdf=90207 - lhapdf=90208 - lhapdf=90209 - lhapdf=90210 - lhapdf=90211 - lhapdf=90212 - lhapdf=90213 - lhapdf=90214 - lhapdf=90215 - lhapdf=90216 - lhapdf=90217 - lhapdf=90218 - lhapdf=90219 - lhapdf=90220 - lhapdf=90221 - lhapdf=90222 - lhapdf=90223 - lhapdf=90224 - lhapdf=90225 - lhapdf=90226 - lhapdf=90227 - lhapdf=90228 - lhapdf=90229 - lhapdf=90230 - lhapdf=90231 - lhapdf=90232 - lhapdf=90233 - lhapdf=90234 - lhapdf=90235 - lhapdf=90236 - lhapdf=90237 - lhapdf=90238 - lhapdf=90239 - lhapdf=90240 - lhapdf=90241 - lhapdf=90242 - lhapdf=90243 - lhapdf=90244 - lhapdf=90245 - lhapdf=90246 - lhapdf=90247 - lhapdf=90248 - lhapdf=90249 - lhapdf=90250 - lhapdf=90251 - lhapdf=90252 - lhapdf=90253 - lhapdf=90254 - lhapdf=90255 - lhapdf=90256 - lhapdf=90257 - lhapdf=90258 - lhapdf=90259 - lhapdf=90260 - lhapdf=90261 - lhapdf=90262 - lhapdf=90263 - lhapdf=90264 - lhapdf=90265 - lhapdf=90266 - lhapdf=90267 - lhapdf=90268 - lhapdf=90269 - lhapdf=90270 - lhapdf=90271 - lhapdf=90272 - lhapdf=90273 - lhapdf=90274 - lhapdf=90275 - lhapdf=90276 - lhapdf=90277 - lhapdf=90278 - lhapdf=90279 - lhapdf=90280 - lhapdf=90281 - lhapdf=90282 - lhapdf=90283 - lhapdf=90284 - lhapdf=90285 - lhapdf=90286 - lhapdf=90287 - lhapdf=90288 - lhapdf=90289 - lhapdf=90290 - lhapdf=90291 - lhapdf=90292 - lhapdf=90293 - lhapdf=90294 - lhapdf=90295 - lhapdf=90296 - lhapdf=90297 - lhapdf=90298 - lhapdf=90299 - lhapdf=90300 - lhapdf=90301 - lhapdf=90302 - lhapdf=91200 - lhapdf=91201 - lhapdf=91202 - lhapdf=91203 - lhapdf=91204 - lhapdf=91205 - lhapdf=91206 - lhapdf=91207 - lhapdf=91208 - lhapdf=91209 - lhapdf=91210 - lhapdf=91211 - lhapdf=91212 - lhapdf=91213 - lhapdf=91214 - lhapdf=91215 - lhapdf=91216 - lhapdf=91217 - lhapdf=91218 - lhapdf=91219 - lhapdf=91220 - lhapdf=91221 - lhapdf=91222 - lhapdf=91223 - lhapdf=91224 - lhapdf=91225 - lhapdf=91226 - lhapdf=91227 - lhapdf=91228 - lhapdf=91229 - lhapdf=91230 - lhapdf=91231 - lhapdf=91232 - lhapdf=91233 - lhapdf=91234 - lhapdf=91235 - lhapdf=91236 - lhapdf=91237 - lhapdf=91238 - lhapdf=91239 - lhapdf=91240 - lhapdf=91241 - lhapdf=91242 - lhapdf=91243 - lhapdf=91244 - lhapdf=91245 - lhapdf=91246 - lhapdf=91247 - lhapdf=91248 - lhapdf=91249 - lhapdf=91250 - lhapdf=91251 - lhapdf=91252 - lhapdf=91253 - lhapdf=91254 - lhapdf=91255 - lhapdf=91256 - lhapdf=91257 - lhapdf=91258 - lhapdf=91259 - lhapdf=91260 - lhapdf=91261 - lhapdf=91262 - lhapdf=91263 - lhapdf=91264 - lhapdf=91265 - lhapdf=91266 - lhapdf=91267 - lhapdf=91268 - lhapdf=91269 - lhapdf=91270 - lhapdf=91271 - lhapdf=91272 - lhapdf=91273 - lhapdf=91274 - lhapdf=91275 - lhapdf=91276 - lhapdf=91277 - lhapdf=91278 - lhapdf=91279 - lhapdf=91280 - lhapdf=91281 - lhapdf=91282 - lhapdf=91283 - lhapdf=91284 - lhapdf=91285 - lhapdf=91286 - lhapdf=91287 - lhapdf=91288 - lhapdf=91289 - lhapdf=91290 - lhapdf=91291 - lhapdf=91292 - lhapdf=91293 - lhapdf=91294 - lhapdf=91295 - lhapdf=91296 - lhapdf=91297 - lhapdf=91298 - lhapdf=91299 - lhapdf=91300 - lhapdf=91301 - lhapdf=91302 - lhapdf=90400 - lhapdf=90401 - lhapdf=90402 - lhapdf=90403 - lhapdf=90404 - lhapdf=90405 - lhapdf=90406 - lhapdf=90407 - lhapdf=90408 - lhapdf=90409 - lhapdf=90410 - lhapdf=90411 - lhapdf=90412 - lhapdf=90413 - lhapdf=90414 - lhapdf=90415 - lhapdf=90416 - lhapdf=90417 - lhapdf=90418 - lhapdf=90419 - lhapdf=90420 - lhapdf=90421 - lhapdf=90422 - lhapdf=90423 - lhapdf=90424 - lhapdf=90425 - lhapdf=90426 - lhapdf=90427 - lhapdf=90428 - lhapdf=90429 - lhapdf=90430 - lhapdf=90431 - lhapdf=90432 - lhapdf=91400 - lhapdf=91401 - lhapdf=91402 - lhapdf=91403 - lhapdf=91404 - lhapdf=91405 - lhapdf=91406 - lhapdf=91407 - lhapdf=91408 - lhapdf=91409 - lhapdf=91410 - lhapdf=91411 - lhapdf=91412 - lhapdf=91413 - lhapdf=91414 - lhapdf=91415 - lhapdf=91416 - lhapdf=91417 - lhapdf=91418 - lhapdf=91419 - lhapdf=91420 - lhapdf=91421 - lhapdf=91422 - lhapdf=91423 - lhapdf=91424 - lhapdf=91425 - lhapdf=91426 - lhapdf=91427 - lhapdf=91428 - lhapdf=91429 - lhapdf=91430 - lhapdf=91431 - lhapdf=91432 - lhapdf=61100 - lhapdf=61101 - lhapdf=61102 - lhapdf=61103 - lhapdf=61104 - lhapdf=61105 - lhapdf=61106 - lhapdf=61107 - lhapdf=61108 - lhapdf=61109 - lhapdf=61110 - lhapdf=61111 - lhapdf=61112 - lhapdf=61113 - lhapdf=61114 - lhapdf=61115 - lhapdf=61116 - lhapdf=61117 - lhapdf=61118 - lhapdf=61119 - lhapdf=61120 - lhapdf=61121 - lhapdf=61122 - lhapdf=61123 - lhapdf=61124 - lhapdf=61125 - lhapdf=61126 - lhapdf=61127 - lhapdf=61128 - lhapdf=61130 - lhapdf=61131 - lhapdf=61132 - lhapdf=61133 - lhapdf=61134 - lhapdf=61135 - lhapdf=61136 - lhapdf=61137 - lhapdf=61138 - lhapdf=61139 - lhapdf=61140 - lhapdf=61141 - lhapdf=61142 - lhapdf=61143 - lhapdf=61200 - lhapdf=61201 - lhapdf=61202 - lhapdf=61203 - lhapdf=61204 - lhapdf=61205 - lhapdf=61206 - lhapdf=61207 - lhapdf=61208 - lhapdf=61209 - lhapdf=61210 - lhapdf=61211 - lhapdf=61212 - lhapdf=61213 - lhapdf=61214 - lhapdf=61215 - lhapdf=61216 - lhapdf=61217 - lhapdf=61218 - lhapdf=61219 - lhapdf=61220 - lhapdf=61221 - lhapdf=61222 - lhapdf=61223 - lhapdf=61224 - lhapdf=61225 - lhapdf=61226 - lhapdf=61227 - lhapdf=61228 - lhapdf=61230 - lhapdf=61231 - lhapdf=61232 - lhapdf=61233 - lhapdf=61234 - lhapdf=61235 - lhapdf=61236 - lhapdf=61237 - lhapdf=61238 - lhapdf=61239 - lhapdf=61240 - lhapdf=61241 - lhapdf=61242 - lhapdf=61243 - lhapdf=13400 - lhapdf=13401 - lhapdf=13402 - lhapdf=13403 - lhapdf=13404 - lhapdf=13405 - lhapdf=13406 - lhapdf=13407 - lhapdf=13408 - lhapdf=13409 - lhapdf=13410 - lhapdf=13411 - lhapdf=13412 - lhapdf=13413 - lhapdf=13414 - lhapdf=13415 - lhapdf=13416 - lhapdf=13417 - lhapdf=13418 - lhapdf=13419 - lhapdf=13420 - lhapdf=13421 - lhapdf=13422 - lhapdf=13423 - lhapdf=13424 - lhapdf=13425 - lhapdf=13426 - lhapdf=13427 - lhapdf=13428 - lhapdf=13429 - lhapdf=13430 - lhapdf=82200 - lhapdf=82201 - lhapdf=82202 - lhapdf=82203 - lhapdf=82204 - lhapdf=82205 - lhapdf=82206 - lhapdf=82207 - lhapdf=82208 - lhapdf=82209 - lhapdf=82210 - lhapdf=82211 - lhapdf=82212 - lhapdf=82213 - lhapdf=82214 - lhapdf=82215 - lhapdf=82216 - lhapdf=82217 - lhapdf=82218 - lhapdf=82219 - lhapdf=82220 - lhapdf=82221 - lhapdf=82222 - lhapdf=82223 - lhapdf=82224 - lhapdf=82225 - lhapdf=82226 - lhapdf=82227 - lhapdf=82228 - lhapdf=82229 - lhapdf=82230 - lhapdf=82231 - lhapdf=82232 - lhapdf=82233 - lhapdf=82234 - lhapdf=82235 - lhapdf=82236 - lhapdf=82237 - lhapdf=82238 - lhapdf=82239 - lhapdf=82240 - lhapdf=82241 - lhapdf=82242 - lhapdf=82243 - lhapdf=82244 - lhapdf=82245 - lhapdf=82246 - lhapdf=82247 - lhapdf=82248 - lhapdf=82249 - lhapdf=82250 - lhapdf=82251 - lhapdf=82252 - lhapdf=82253 - lhapdf=82254 - lhapdf=82255 - lhapdf=82256 - lhapdf=82257 - lhapdf=82258 - lhapdf=82259 - lhapdf=82260 - lhapdf=82261 - lhapdf=82262 - lhapdf=82263 - lhapdf=82264 - lhapdf=82265 - lhapdf=82266 - lhapdf=82267 - lhapdf=82268 - lhapdf=82269 - lhapdf=82270 - lhapdf=82271 - lhapdf=82272 - lhapdf=82273 - lhapdf=82274 - lhapdf=82275 - lhapdf=82276 - lhapdf=82277 - lhapdf=82278 - lhapdf=82279 - lhapdf=82280 - lhapdf=82281 - lhapdf=82282 - lhapdf=82283 - lhapdf=82284 - lhapdf=82285 - lhapdf=82286 - lhapdf=82287 - lhapdf=82288 - lhapdf=82289 - lhapdf=82290 - lhapdf=82291 - lhapdf=82292 - lhapdf=82293 - lhapdf=82294 - lhapdf=82295 - lhapdf=82296 - lhapdf=82297 - lhapdf=82298 - lhapdf=82299 - lhapdf=82300 - lhapdf=82301 - lhapdf=82302 - lhapdf=82303 - lhapdf=82304 - lhapdf=82305 - lhapdf=82306 - lhapdf=82307 - - - lhapdf=292200 - lhapdf=292201 - lhapdf=292202 - lhapdf=292203 - lhapdf=292204 - lhapdf=292205 - lhapdf=292206 - lhapdf=292207 - lhapdf=292208 - lhapdf=292209 - lhapdf=292210 - lhapdf=292211 - lhapdf=292212 - lhapdf=292213 - lhapdf=292214 - lhapdf=292215 - lhapdf=292216 - lhapdf=292217 - lhapdf=292218 - lhapdf=292219 - lhapdf=292220 - lhapdf=292221 - lhapdf=292222 - lhapdf=292223 - lhapdf=292224 - lhapdf=292225 - lhapdf=292226 - lhapdf=292227 - lhapdf=292228 - lhapdf=292229 - lhapdf=292230 - lhapdf=292231 - lhapdf=292232 - lhapdf=292233 - lhapdf=292234 - lhapdf=292235 - lhapdf=292236 - lhapdf=292237 - lhapdf=292238 - lhapdf=292239 - lhapdf=292240 - lhapdf=292241 - lhapdf=292242 - lhapdf=292243 - lhapdf=292244 - lhapdf=292245 - lhapdf=292246 - lhapdf=292247 - lhapdf=292248 - lhapdf=292249 - lhapdf=292250 - lhapdf=292251 - lhapdf=292252 - lhapdf=292253 - lhapdf=292254 - lhapdf=292255 - lhapdf=292256 - lhapdf=292257 - lhapdf=292258 - lhapdf=292259 - lhapdf=292260 - lhapdf=292261 - lhapdf=292262 - lhapdf=292263 - lhapdf=292264 - lhapdf=292265 - lhapdf=292266 - lhapdf=292267 - lhapdf=292268 - lhapdf=292269 - lhapdf=292270 - lhapdf=292271 - lhapdf=292272 - lhapdf=292273 - lhapdf=292274 - lhapdf=292275 - lhapdf=292276 - lhapdf=292277 - lhapdf=292278 - lhapdf=292279 - lhapdf=292280 - lhapdf=292281 - lhapdf=292282 - lhapdf=292283 - lhapdf=292284 - lhapdf=292285 - lhapdf=292286 - lhapdf=292287 - lhapdf=292288 - lhapdf=292289 - lhapdf=292290 - lhapdf=292291 - lhapdf=292292 - lhapdf=292293 - lhapdf=292294 - lhapdf=292295 - lhapdf=292296 - lhapdf=292297 - lhapdf=292298 - lhapdf=292299 - lhapdf=292300 - lhapdf=292301 - lhapdf=292302 - lhapdf=292600 - lhapdf=315000 - lhapdf=315200 - lhapdf=262000 - lhapdf=263000 - diff --git a/testFiles/overview.txt b/testFiles/overview.txt deleted file mode 100644 index 65cffa71130b3..0000000000000 --- a/testFiles/overview.txt +++ /dev/null @@ -1,12 +0,0 @@ -MadGraph no systematics program - - LO - - NLO -MadGraph + systematics program - - Standard - - with dynamic scale -MadGraph + reweight - -POWHEG 2016 -POWHEG 2017 - -?? diff --git a/testFiles/susyweights.txt b/testFiles/susyweights.txt deleted file mode 100644 index 8d997605fcaa0..0000000000000 --- a/testFiles/susyweights.txt +++ /dev/null @@ -1,1227 +0,0 @@ -# From file /store/mc/RunIIAutumn18MiniAOD/SMS-TChiWZ_ZToLL_mZMin-0p1_mC1-325to1000_TuneCP2_13TeV-madgraphMLM-pythia8/MINIAODSIM/GridpackScan_102X_upgrade2018_realistic_v15-v1/260000/E535B34E-AE47-1F41-88CC-676F1D975A12.root -nominal -LHE, id = 1, group = Central scale variation, mur=1 muf=1 -LHE, id = 2, group = Central scale variation, mur=1 muf=2 -LHE, id = 3, group = Central scale variation, mur=1 muf=0.5 -LHE, id = 4, group = Central scale variation, mur=2 muf=1 -LHE, id = 5, group = Central scale variation, mur=2 muf=2 -LHE, id = 6, group = Central scale variation, mur=2 muf=0.5 -LHE, id = 7, group = Central scale variation, mur=0.5 muf=1 -LHE, id = 8, group = Central scale variation, mur=0.5 muf=2 -LHE, id = 9, group = Central scale variation, mur=0.5 muf=0.5 -LHE, id = 10, group = NNPDF31_lo_as_0130, Member 0 of sets NNPDF31_lo_as_0130 -LHE, id = 11, group = NNPDF31_lo_as_0130, Member 1 of sets NNPDF31_lo_as_0130 -LHE, id = 12, group = NNPDF31_lo_as_0130, Member 2 of sets NNPDF31_lo_as_0130 -LHE, id = 13, group = NNPDF31_lo_as_0130, Member 3 of sets NNPDF31_lo_as_0130 -LHE, id = 14, group = NNPDF31_lo_as_0130, Member 4 of sets NNPDF31_lo_as_0130 -LHE, id = 15, group = NNPDF31_lo_as_0130, Member 5 of sets NNPDF31_lo_as_0130 -LHE, id = 16, group = NNPDF31_lo_as_0130, Member 6 of sets NNPDF31_lo_as_0130 -LHE, id = 17, group = NNPDF31_lo_as_0130, Member 7 of sets NNPDF31_lo_as_0130 -LHE, id = 18, group = NNPDF31_lo_as_0130, Member 8 of sets NNPDF31_lo_as_0130 -LHE, id = 19, group = NNPDF31_lo_as_0130, Member 9 of sets NNPDF31_lo_as_0130 -LHE, id = 20, group = NNPDF31_lo_as_0130, Member 10 of sets NNPDF31_lo_as_0130 -LHE, id = 21, group = NNPDF31_lo_as_0130, Member 11 of sets NNPDF31_lo_as_0130 -LHE, id = 22, group = NNPDF31_lo_as_0130, Member 12 of sets NNPDF31_lo_as_0130 -LHE, id = 23, group = NNPDF31_lo_as_0130, Member 13 of sets NNPDF31_lo_as_0130 -LHE, id = 24, group = NNPDF31_lo_as_0130, Member 14 of sets NNPDF31_lo_as_0130 -LHE, id = 25, group = NNPDF31_lo_as_0130, Member 15 of sets NNPDF31_lo_as_0130 -LHE, id = 26, group = NNPDF31_lo_as_0130, Member 16 of sets NNPDF31_lo_as_0130 -LHE, id = 27, group = NNPDF31_lo_as_0130, Member 17 of sets NNPDF31_lo_as_0130 -LHE, id = 28, group = NNPDF31_lo_as_0130, Member 18 of sets NNPDF31_lo_as_0130 -LHE, id = 29, group = NNPDF31_lo_as_0130, Member 19 of sets NNPDF31_lo_as_0130 -LHE, id = 30, group = NNPDF31_lo_as_0130, Member 20 of sets NNPDF31_lo_as_0130 -LHE, id = 31, group = NNPDF31_lo_as_0130, Member 21 of sets NNPDF31_lo_as_0130 -LHE, id = 32, group = NNPDF31_lo_as_0130, Member 22 of sets NNPDF31_lo_as_0130 -LHE, id = 33, group = NNPDF31_lo_as_0130, Member 23 of sets NNPDF31_lo_as_0130 -LHE, id = 34, group = NNPDF31_lo_as_0130, Member 24 of sets NNPDF31_lo_as_0130 -LHE, id = 35, group = NNPDF31_lo_as_0130, Member 25 of sets NNPDF31_lo_as_0130 -LHE, id = 36, group = NNPDF31_lo_as_0130, Member 26 of sets NNPDF31_lo_as_0130 -LHE, id = 37, group = NNPDF31_lo_as_0130, Member 27 of sets NNPDF31_lo_as_0130 -LHE, id = 38, group = NNPDF31_lo_as_0130, Member 28 of sets NNPDF31_lo_as_0130 -LHE, id = 39, group = NNPDF31_lo_as_0130, Member 29 of sets NNPDF31_lo_as_0130 -LHE, id = 40, group = NNPDF31_lo_as_0130, Member 30 of sets NNPDF31_lo_as_0130 -LHE, id = 41, group = NNPDF31_lo_as_0130, Member 31 of sets NNPDF31_lo_as_0130 -LHE, id = 42, group = NNPDF31_lo_as_0130, Member 32 of sets NNPDF31_lo_as_0130 -LHE, id = 43, group = NNPDF31_lo_as_0130, Member 33 of sets NNPDF31_lo_as_0130 -LHE, id = 44, group = NNPDF31_lo_as_0130, Member 34 of sets NNPDF31_lo_as_0130 -LHE, id = 45, group = NNPDF31_lo_as_0130, Member 35 of sets NNPDF31_lo_as_0130 -LHE, id = 46, group = NNPDF31_lo_as_0130, Member 36 of sets NNPDF31_lo_as_0130 -LHE, id = 47, group = NNPDF31_lo_as_0130, Member 37 of sets NNPDF31_lo_as_0130 -LHE, id = 48, group = NNPDF31_lo_as_0130, Member 38 of sets NNPDF31_lo_as_0130 -LHE, id = 49, group = NNPDF31_lo_as_0130, Member 39 of sets NNPDF31_lo_as_0130 -LHE, id = 50, group = NNPDF31_lo_as_0130, Member 40 of sets NNPDF31_lo_as_0130 -LHE, id = 51, group = NNPDF31_lo_as_0130, Member 41 of sets NNPDF31_lo_as_0130 -LHE, id = 52, group = NNPDF31_lo_as_0130, Member 42 of sets NNPDF31_lo_as_0130 -LHE, id = 53, group = NNPDF31_lo_as_0130, Member 43 of sets NNPDF31_lo_as_0130 -LHE, id = 54, group = NNPDF31_lo_as_0130, Member 44 of sets NNPDF31_lo_as_0130 -LHE, id = 55, group = NNPDF31_lo_as_0130, Member 45 of sets NNPDF31_lo_as_0130 -LHE, id = 56, group = NNPDF31_lo_as_0130, Member 46 of sets NNPDF31_lo_as_0130 -LHE, id = 57, group = NNPDF31_lo_as_0130, Member 47 of sets NNPDF31_lo_as_0130 -LHE, id = 58, group = NNPDF31_lo_as_0130, Member 48 of sets NNPDF31_lo_as_0130 -LHE, id = 59, group = NNPDF31_lo_as_0130, Member 49 of sets NNPDF31_lo_as_0130 -LHE, id = 60, group = NNPDF31_lo_as_0130, Member 50 of sets NNPDF31_lo_as_0130 -LHE, id = 61, group = NNPDF31_lo_as_0130, Member 51 of sets NNPDF31_lo_as_0130 -LHE, id = 62, group = NNPDF31_lo_as_0130, Member 52 of sets NNPDF31_lo_as_0130 -LHE, id = 63, group = NNPDF31_lo_as_0130, Member 53 of sets NNPDF31_lo_as_0130 -LHE, id = 64, group = NNPDF31_lo_as_0130, Member 54 of sets NNPDF31_lo_as_0130 -LHE, id = 65, group = NNPDF31_lo_as_0130, Member 55 of sets NNPDF31_lo_as_0130 -LHE, id = 66, group = NNPDF31_lo_as_0130, Member 56 of sets NNPDF31_lo_as_0130 -LHE, id = 67, group = NNPDF31_lo_as_0130, Member 57 of sets NNPDF31_lo_as_0130 -LHE, id = 68, group = NNPDF31_lo_as_0130, Member 58 of sets NNPDF31_lo_as_0130 -LHE, id = 69, group = NNPDF31_lo_as_0130, Member 59 of sets NNPDF31_lo_as_0130 -LHE, id = 70, group = NNPDF31_lo_as_0130, Member 60 of sets NNPDF31_lo_as_0130 -LHE, id = 71, group = NNPDF31_lo_as_0130, Member 61 of sets NNPDF31_lo_as_0130 -LHE, id = 72, group = NNPDF31_lo_as_0130, Member 62 of sets NNPDF31_lo_as_0130 -LHE, id = 73, group = NNPDF31_lo_as_0130, Member 63 of sets NNPDF31_lo_as_0130 -LHE, id = 74, group = NNPDF31_lo_as_0130, Member 64 of sets NNPDF31_lo_as_0130 -LHE, id = 75, group = NNPDF31_lo_as_0130, Member 65 of sets NNPDF31_lo_as_0130 -LHE, id = 76, group = NNPDF31_lo_as_0130, Member 66 of sets NNPDF31_lo_as_0130 -LHE, id = 77, group = NNPDF31_lo_as_0130, Member 67 of sets NNPDF31_lo_as_0130 -LHE, id = 78, group = NNPDF31_lo_as_0130, Member 68 of sets NNPDF31_lo_as_0130 -LHE, id = 79, group = NNPDF31_lo_as_0130, Member 69 of sets NNPDF31_lo_as_0130 -LHE, id = 80, group = NNPDF31_lo_as_0130, Member 70 of sets NNPDF31_lo_as_0130 -LHE, id = 81, group = NNPDF31_lo_as_0130, Member 71 of sets NNPDF31_lo_as_0130 -LHE, id = 82, group = NNPDF31_lo_as_0130, Member 72 of sets NNPDF31_lo_as_0130 -LHE, id = 83, group = NNPDF31_lo_as_0130, Member 73 of sets NNPDF31_lo_as_0130 -LHE, id = 84, group = NNPDF31_lo_as_0130, Member 74 of sets NNPDF31_lo_as_0130 -LHE, id = 85, group = NNPDF31_lo_as_0130, Member 75 of sets NNPDF31_lo_as_0130 -LHE, id = 86, group = NNPDF31_lo_as_0130, Member 76 of sets NNPDF31_lo_as_0130 -LHE, id = 87, group = NNPDF31_lo_as_0130, Member 77 of sets NNPDF31_lo_as_0130 -LHE, id = 88, group = NNPDF31_lo_as_0130, Member 78 of sets NNPDF31_lo_as_0130 -LHE, id = 89, group = NNPDF31_lo_as_0130, Member 79 of sets NNPDF31_lo_as_0130 -LHE, id = 90, group = NNPDF31_lo_as_0130, Member 80 of sets NNPDF31_lo_as_0130 -LHE, id = 91, group = NNPDF31_lo_as_0130, Member 81 of sets NNPDF31_lo_as_0130 -LHE, id = 92, group = NNPDF31_lo_as_0130, Member 82 of sets NNPDF31_lo_as_0130 -LHE, id = 93, group = NNPDF31_lo_as_0130, Member 83 of sets NNPDF31_lo_as_0130 -LHE, id = 94, group = NNPDF31_lo_as_0130, Member 84 of sets NNPDF31_lo_as_0130 -LHE, id = 95, group = NNPDF31_lo_as_0130, Member 85 of sets NNPDF31_lo_as_0130 -LHE, id = 96, group = NNPDF31_lo_as_0130, Member 86 of sets NNPDF31_lo_as_0130 -LHE, id = 97, group = NNPDF31_lo_as_0130, Member 87 of sets NNPDF31_lo_as_0130 -LHE, id = 98, group = NNPDF31_lo_as_0130, Member 88 of sets NNPDF31_lo_as_0130 -LHE, id = 99, group = NNPDF31_lo_as_0130, Member 89 of sets NNPDF31_lo_as_0130 -LHE, id = 100, group = NNPDF31_lo_as_0130, Member 90 of sets NNPDF31_lo_as_0130 -LHE, id = 101, group = NNPDF31_lo_as_0130, Member 91 of sets NNPDF31_lo_as_0130 -LHE, id = 102, group = NNPDF31_lo_as_0130, Member 92 of sets NNPDF31_lo_as_0130 -LHE, id = 103, group = NNPDF31_lo_as_0130, Member 93 of sets NNPDF31_lo_as_0130 -LHE, id = 104, group = NNPDF31_lo_as_0130, Member 94 of sets NNPDF31_lo_as_0130 -LHE, id = 105, group = NNPDF31_lo_as_0130, Member 95 of sets NNPDF31_lo_as_0130 -LHE, id = 106, group = NNPDF31_lo_as_0130, Member 96 of sets NNPDF31_lo_as_0130 -LHE, id = 107, group = NNPDF31_lo_as_0130, Member 97 of sets NNPDF31_lo_as_0130 -LHE, id = 108, group = NNPDF31_lo_as_0130, Member 98 of sets NNPDF31_lo_as_0130 -LHE, id = 109, group = NNPDF31_lo_as_0130, Member 99 of sets NNPDF31_lo_as_0130 -LHE, id = 110, group = NNPDF31_lo_as_0130, Member 100 of sets NNPDF31_lo_as_0130 -LHE, id = 111, group = NNPDF31_nnlo_hessian_pdfas, Member 0 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 112, group = NNPDF31_nnlo_hessian_pdfas, Member 1 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 113, group = NNPDF31_nnlo_hessian_pdfas, Member 2 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 114, group = NNPDF31_nnlo_hessian_pdfas, Member 3 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 115, group = NNPDF31_nnlo_hessian_pdfas, Member 4 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 116, group = NNPDF31_nnlo_hessian_pdfas, Member 5 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 117, group = NNPDF31_nnlo_hessian_pdfas, Member 6 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 118, group = NNPDF31_nnlo_hessian_pdfas, Member 7 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 119, group = NNPDF31_nnlo_hessian_pdfas, Member 8 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 120, group = NNPDF31_nnlo_hessian_pdfas, Member 9 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 121, group = NNPDF31_nnlo_hessian_pdfas, Member 10 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 122, group = NNPDF31_nnlo_hessian_pdfas, Member 11 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 123, group = NNPDF31_nnlo_hessian_pdfas, Member 12 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 124, group = NNPDF31_nnlo_hessian_pdfas, Member 13 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 125, group = NNPDF31_nnlo_hessian_pdfas, Member 14 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 126, group = NNPDF31_nnlo_hessian_pdfas, Member 15 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 127, group = NNPDF31_nnlo_hessian_pdfas, Member 16 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 128, group = NNPDF31_nnlo_hessian_pdfas, Member 17 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 129, group = NNPDF31_nnlo_hessian_pdfas, Member 18 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 130, group = NNPDF31_nnlo_hessian_pdfas, Member 19 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 131, group = NNPDF31_nnlo_hessian_pdfas, Member 20 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 132, group = NNPDF31_nnlo_hessian_pdfas, Member 21 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 133, group = NNPDF31_nnlo_hessian_pdfas, Member 22 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 134, group = NNPDF31_nnlo_hessian_pdfas, Member 23 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 135, group = NNPDF31_nnlo_hessian_pdfas, Member 24 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 136, group = NNPDF31_nnlo_hessian_pdfas, Member 25 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 137, group = NNPDF31_nnlo_hessian_pdfas, Member 26 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 138, group = NNPDF31_nnlo_hessian_pdfas, Member 27 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 139, group = NNPDF31_nnlo_hessian_pdfas, Member 28 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 140, group = NNPDF31_nnlo_hessian_pdfas, Member 29 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 141, group = NNPDF31_nnlo_hessian_pdfas, Member 30 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 142, group = NNPDF31_nnlo_hessian_pdfas, Member 31 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 143, group = NNPDF31_nnlo_hessian_pdfas, Member 32 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 144, group = NNPDF31_nnlo_hessian_pdfas, Member 33 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 145, group = NNPDF31_nnlo_hessian_pdfas, Member 34 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 146, group = NNPDF31_nnlo_hessian_pdfas, Member 35 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 147, group = NNPDF31_nnlo_hessian_pdfas, Member 36 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 148, group = NNPDF31_nnlo_hessian_pdfas, Member 37 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 149, group = NNPDF31_nnlo_hessian_pdfas, Member 38 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 150, group = NNPDF31_nnlo_hessian_pdfas, Member 39 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 151, group = NNPDF31_nnlo_hessian_pdfas, Member 40 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 152, group = NNPDF31_nnlo_hessian_pdfas, Member 41 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 153, group = NNPDF31_nnlo_hessian_pdfas, Member 42 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 154, group = NNPDF31_nnlo_hessian_pdfas, Member 43 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 155, group = NNPDF31_nnlo_hessian_pdfas, Member 44 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 156, group = NNPDF31_nnlo_hessian_pdfas, Member 45 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 157, group = NNPDF31_nnlo_hessian_pdfas, Member 46 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 158, group = NNPDF31_nnlo_hessian_pdfas, Member 47 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 159, group = NNPDF31_nnlo_hessian_pdfas, Member 48 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 160, group = NNPDF31_nnlo_hessian_pdfas, Member 49 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 161, group = NNPDF31_nnlo_hessian_pdfas, Member 50 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 162, group = NNPDF31_nnlo_hessian_pdfas, Member 51 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 163, group = NNPDF31_nnlo_hessian_pdfas, Member 52 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 164, group = NNPDF31_nnlo_hessian_pdfas, Member 53 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 165, group = NNPDF31_nnlo_hessian_pdfas, Member 54 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 166, group = NNPDF31_nnlo_hessian_pdfas, Member 55 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 167, group = NNPDF31_nnlo_hessian_pdfas, Member 56 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 168, group = NNPDF31_nnlo_hessian_pdfas, Member 57 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 169, group = NNPDF31_nnlo_hessian_pdfas, Member 58 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 170, group = NNPDF31_nnlo_hessian_pdfas, Member 59 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 171, group = NNPDF31_nnlo_hessian_pdfas, Member 60 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 172, group = NNPDF31_nnlo_hessian_pdfas, Member 61 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 173, group = NNPDF31_nnlo_hessian_pdfas, Member 62 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 174, group = NNPDF31_nnlo_hessian_pdfas, Member 63 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 175, group = NNPDF31_nnlo_hessian_pdfas, Member 64 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 176, group = NNPDF31_nnlo_hessian_pdfas, Member 65 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 177, group = NNPDF31_nnlo_hessian_pdfas, Member 66 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 178, group = NNPDF31_nnlo_hessian_pdfas, Member 67 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 179, group = NNPDF31_nnlo_hessian_pdfas, Member 68 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 180, group = NNPDF31_nnlo_hessian_pdfas, Member 69 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 181, group = NNPDF31_nnlo_hessian_pdfas, Member 70 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 182, group = NNPDF31_nnlo_hessian_pdfas, Member 71 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 183, group = NNPDF31_nnlo_hessian_pdfas, Member 72 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 184, group = NNPDF31_nnlo_hessian_pdfas, Member 73 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 185, group = NNPDF31_nnlo_hessian_pdfas, Member 74 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 186, group = NNPDF31_nnlo_hessian_pdfas, Member 75 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 187, group = NNPDF31_nnlo_hessian_pdfas, Member 76 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 188, group = NNPDF31_nnlo_hessian_pdfas, Member 77 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 189, group = NNPDF31_nnlo_hessian_pdfas, Member 78 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 190, group = NNPDF31_nnlo_hessian_pdfas, Member 79 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 191, group = NNPDF31_nnlo_hessian_pdfas, Member 80 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 192, group = NNPDF31_nnlo_hessian_pdfas, Member 81 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 193, group = NNPDF31_nnlo_hessian_pdfas, Member 82 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 194, group = NNPDF31_nnlo_hessian_pdfas, Member 83 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 195, group = NNPDF31_nnlo_hessian_pdfas, Member 84 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 196, group = NNPDF31_nnlo_hessian_pdfas, Member 85 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 197, group = NNPDF31_nnlo_hessian_pdfas, Member 86 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 198, group = NNPDF31_nnlo_hessian_pdfas, Member 87 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 199, group = NNPDF31_nnlo_hessian_pdfas, Member 88 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 200, group = NNPDF31_nnlo_hessian_pdfas, Member 89 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 201, group = NNPDF31_nnlo_hessian_pdfas, Member 90 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 202, group = NNPDF31_nnlo_hessian_pdfas, Member 91 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 203, group = NNPDF31_nnlo_hessian_pdfas, Member 92 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 204, group = NNPDF31_nnlo_hessian_pdfas, Member 93 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 205, group = NNPDF31_nnlo_hessian_pdfas, Member 94 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 206, group = NNPDF31_nnlo_hessian_pdfas, Member 95 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 207, group = NNPDF31_nnlo_hessian_pdfas, Member 96 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 208, group = NNPDF31_nnlo_hessian_pdfas, Member 97 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 209, group = NNPDF31_nnlo_hessian_pdfas, Member 98 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 210, group = NNPDF31_nnlo_hessian_pdfas, Member 99 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 211, group = NNPDF31_nnlo_hessian_pdfas, Member 100 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 212, group = NNPDF31_nnlo_hessian_pdfas, Member 101 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 213, group = NNPDF31_nnlo_hessian_pdfas, Member 102 of sets NNPDF31_nnlo_hessian_pdfas -LHE, id = 214, group = NNPDF31_nnlo_as_0108, Member 0 of sets NNPDF31_nnlo_as_0108 -LHE, id = 215, group = NNPDF31_nnlo_as_0110, Member 0 of sets NNPDF31_nnlo_as_0110 -LHE, id = 216, group = NNPDF31_nnlo_as_0112, Member 0 of sets NNPDF31_nnlo_as_0112 -LHE, id = 217, group = NNPDF31_nnlo_as_0114, Member 0 of sets NNPDF31_nnlo_as_0114 -LHE, id = 218, group = NNPDF31_nnlo_as_0117, Member 0 of sets NNPDF31_nnlo_as_0117 -LHE, id = 219, group = NNPDF31_nnlo_as_0119, Member 0 of sets NNPDF31_nnlo_as_0119 -LHE, id = 220, group = NNPDF31_nnlo_as_0122, Member 0 of sets NNPDF31_nnlo_as_0122 -LHE, id = 221, group = NNPDF31_nnlo_as_0124, Member 0 of sets NNPDF31_nnlo_as_0124 -LHE, id = 222, group = NNPDF31_nlo_hessian_pdfas, Member 0 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 223, group = NNPDF31_nlo_hessian_pdfas, Member 1 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 224, group = NNPDF31_nlo_hessian_pdfas, Member 2 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 225, group = NNPDF31_nlo_hessian_pdfas, Member 3 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 226, group = NNPDF31_nlo_hessian_pdfas, Member 4 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 227, group = NNPDF31_nlo_hessian_pdfas, Member 5 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 228, group = NNPDF31_nlo_hessian_pdfas, Member 6 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 229, group = NNPDF31_nlo_hessian_pdfas, Member 7 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 230, group = NNPDF31_nlo_hessian_pdfas, Member 8 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 231, group = NNPDF31_nlo_hessian_pdfas, Member 9 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 232, group = NNPDF31_nlo_hessian_pdfas, Member 10 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 233, group = NNPDF31_nlo_hessian_pdfas, Member 11 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 234, group = NNPDF31_nlo_hessian_pdfas, Member 12 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 235, group = NNPDF31_nlo_hessian_pdfas, Member 13 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 236, group = NNPDF31_nlo_hessian_pdfas, Member 14 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 237, group = NNPDF31_nlo_hessian_pdfas, Member 15 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 238, group = NNPDF31_nlo_hessian_pdfas, Member 16 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 239, group = NNPDF31_nlo_hessian_pdfas, Member 17 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 240, group = NNPDF31_nlo_hessian_pdfas, Member 18 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 241, group = NNPDF31_nlo_hessian_pdfas, Member 19 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 242, group = NNPDF31_nlo_hessian_pdfas, Member 20 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 243, group = NNPDF31_nlo_hessian_pdfas, Member 21 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 244, group = NNPDF31_nlo_hessian_pdfas, Member 22 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 245, group = NNPDF31_nlo_hessian_pdfas, Member 23 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 246, group = NNPDF31_nlo_hessian_pdfas, Member 24 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 247, group = NNPDF31_nlo_hessian_pdfas, Member 25 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 248, group = NNPDF31_nlo_hessian_pdfas, Member 26 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 249, group = NNPDF31_nlo_hessian_pdfas, Member 27 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 250, group = NNPDF31_nlo_hessian_pdfas, Member 28 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 251, group = NNPDF31_nlo_hessian_pdfas, Member 29 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 252, group = NNPDF31_nlo_hessian_pdfas, Member 30 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 253, group = NNPDF31_nlo_hessian_pdfas, Member 31 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 254, group = NNPDF31_nlo_hessian_pdfas, Member 32 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 255, group = NNPDF31_nlo_hessian_pdfas, Member 33 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 256, group = NNPDF31_nlo_hessian_pdfas, Member 34 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 257, group = NNPDF31_nlo_hessian_pdfas, Member 35 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 258, group = NNPDF31_nlo_hessian_pdfas, Member 36 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 259, group = NNPDF31_nlo_hessian_pdfas, Member 37 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 260, group = NNPDF31_nlo_hessian_pdfas, Member 38 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 261, group = NNPDF31_nlo_hessian_pdfas, Member 39 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 262, group = NNPDF31_nlo_hessian_pdfas, Member 40 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 263, group = NNPDF31_nlo_hessian_pdfas, Member 41 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 264, group = NNPDF31_nlo_hessian_pdfas, Member 42 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 265, group = NNPDF31_nlo_hessian_pdfas, Member 43 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 266, group = NNPDF31_nlo_hessian_pdfas, Member 44 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 267, group = NNPDF31_nlo_hessian_pdfas, Member 45 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 268, group = NNPDF31_nlo_hessian_pdfas, Member 46 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 269, group = NNPDF31_nlo_hessian_pdfas, Member 47 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 270, group = NNPDF31_nlo_hessian_pdfas, Member 48 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 271, group = NNPDF31_nlo_hessian_pdfas, Member 49 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 272, group = NNPDF31_nlo_hessian_pdfas, Member 50 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 273, group = NNPDF31_nlo_hessian_pdfas, Member 51 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 274, group = NNPDF31_nlo_hessian_pdfas, Member 52 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 275, group = NNPDF31_nlo_hessian_pdfas, Member 53 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 276, group = NNPDF31_nlo_hessian_pdfas, Member 54 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 277, group = NNPDF31_nlo_hessian_pdfas, Member 55 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 278, group = NNPDF31_nlo_hessian_pdfas, Member 56 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 279, group = NNPDF31_nlo_hessian_pdfas, Member 57 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 280, group = NNPDF31_nlo_hessian_pdfas, Member 58 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 281, group = NNPDF31_nlo_hessian_pdfas, Member 59 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 282, group = NNPDF31_nlo_hessian_pdfas, Member 60 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 283, group = NNPDF31_nlo_hessian_pdfas, Member 61 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 284, group = NNPDF31_nlo_hessian_pdfas, Member 62 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 285, group = NNPDF31_nlo_hessian_pdfas, Member 63 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 286, group = NNPDF31_nlo_hessian_pdfas, Member 64 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 287, group = NNPDF31_nlo_hessian_pdfas, Member 65 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 288, group = NNPDF31_nlo_hessian_pdfas, Member 66 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 289, group = NNPDF31_nlo_hessian_pdfas, Member 67 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 290, group = NNPDF31_nlo_hessian_pdfas, Member 68 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 291, group = NNPDF31_nlo_hessian_pdfas, Member 69 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 292, group = NNPDF31_nlo_hessian_pdfas, Member 70 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 293, group = NNPDF31_nlo_hessian_pdfas, Member 71 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 294, group = NNPDF31_nlo_hessian_pdfas, Member 72 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 295, group = NNPDF31_nlo_hessian_pdfas, Member 73 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 296, group = NNPDF31_nlo_hessian_pdfas, Member 74 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 297, group = NNPDF31_nlo_hessian_pdfas, Member 75 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 298, group = NNPDF31_nlo_hessian_pdfas, Member 76 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 299, group = NNPDF31_nlo_hessian_pdfas, Member 77 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 300, group = NNPDF31_nlo_hessian_pdfas, Member 78 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 301, group = NNPDF31_nlo_hessian_pdfas, Member 79 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 302, group = NNPDF31_nlo_hessian_pdfas, Member 80 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 303, group = NNPDF31_nlo_hessian_pdfas, Member 81 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 304, group = NNPDF31_nlo_hessian_pdfas, Member 82 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 305, group = NNPDF31_nlo_hessian_pdfas, Member 83 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 306, group = NNPDF31_nlo_hessian_pdfas, Member 84 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 307, group = NNPDF31_nlo_hessian_pdfas, Member 85 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 308, group = NNPDF31_nlo_hessian_pdfas, Member 86 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 309, group = NNPDF31_nlo_hessian_pdfas, Member 87 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 310, group = NNPDF31_nlo_hessian_pdfas, Member 88 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 311, group = NNPDF31_nlo_hessian_pdfas, Member 89 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 312, group = NNPDF31_nlo_hessian_pdfas, Member 90 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 313, group = NNPDF31_nlo_hessian_pdfas, Member 91 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 314, group = NNPDF31_nlo_hessian_pdfas, Member 92 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 315, group = NNPDF31_nlo_hessian_pdfas, Member 93 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 316, group = NNPDF31_nlo_hessian_pdfas, Member 94 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 317, group = NNPDF31_nlo_hessian_pdfas, Member 95 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 318, group = NNPDF31_nlo_hessian_pdfas, Member 96 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 319, group = NNPDF31_nlo_hessian_pdfas, Member 97 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 320, group = NNPDF31_nlo_hessian_pdfas, Member 98 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 321, group = NNPDF31_nlo_hessian_pdfas, Member 99 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 322, group = NNPDF31_nlo_hessian_pdfas, Member 100 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 323, group = NNPDF31_nlo_hessian_pdfas, Member 101 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 324, group = NNPDF31_nlo_hessian_pdfas, Member 102 of sets NNPDF31_nlo_hessian_pdfas -LHE, id = 325, group = CT14nnlo, Member 0 of sets CT14nnlo -LHE, id = 326, group = CT14nnlo, Member 1 of sets CT14nnlo -LHE, id = 327, group = CT14nnlo, Member 2 of sets CT14nnlo -LHE, id = 328, group = CT14nnlo, Member 3 of sets CT14nnlo -LHE, id = 329, group = CT14nnlo, Member 4 of sets CT14nnlo -LHE, id = 330, group = CT14nnlo, Member 5 of sets CT14nnlo -LHE, id = 331, group = CT14nnlo, Member 6 of sets CT14nnlo -LHE, id = 332, group = CT14nnlo, Member 7 of sets CT14nnlo -LHE, id = 333, group = CT14nnlo, Member 8 of sets CT14nnlo -LHE, id = 334, group = CT14nnlo, Member 9 of sets CT14nnlo -LHE, id = 335, group = CT14nnlo, Member 10 of sets CT14nnlo -LHE, id = 336, group = CT14nnlo, Member 11 of sets CT14nnlo -LHE, id = 337, group = CT14nnlo, Member 12 of sets CT14nnlo -LHE, id = 338, group = CT14nnlo, Member 13 of sets CT14nnlo -LHE, id = 339, group = CT14nnlo, Member 14 of sets CT14nnlo -LHE, id = 340, group = CT14nnlo, Member 15 of sets CT14nnlo -LHE, id = 341, group = CT14nnlo, Member 16 of sets CT14nnlo -LHE, id = 342, group = CT14nnlo, Member 17 of sets CT14nnlo -LHE, id = 343, group = CT14nnlo, Member 18 of sets CT14nnlo -LHE, id = 344, group = CT14nnlo, Member 19 of sets CT14nnlo -LHE, id = 345, group = CT14nnlo, Member 20 of sets CT14nnlo -LHE, id = 346, group = CT14nnlo, Member 21 of sets CT14nnlo -LHE, id = 347, group = CT14nnlo, Member 22 of sets CT14nnlo -LHE, id = 348, group = CT14nnlo, Member 23 of sets CT14nnlo -LHE, id = 349, group = CT14nnlo, Member 24 of sets CT14nnlo -LHE, id = 350, group = CT14nnlo, Member 25 of sets CT14nnlo -LHE, id = 351, group = CT14nnlo, Member 26 of sets CT14nnlo -LHE, id = 352, group = CT14nnlo, Member 27 of sets CT14nnlo -LHE, id = 353, group = CT14nnlo, Member 28 of sets CT14nnlo -LHE, id = 354, group = CT14nnlo, Member 29 of sets CT14nnlo -LHE, id = 355, group = CT14nnlo, Member 30 of sets CT14nnlo -LHE, id = 356, group = CT14nnlo, Member 31 of sets CT14nnlo -LHE, id = 357, group = CT14nnlo, Member 32 of sets CT14nnlo -LHE, id = 358, group = CT14nnlo, Member 33 of sets CT14nnlo -LHE, id = 359, group = CT14nnlo, Member 34 of sets CT14nnlo -LHE, id = 360, group = CT14nnlo, Member 35 of sets CT14nnlo -LHE, id = 361, group = CT14nnlo, Member 36 of sets CT14nnlo -LHE, id = 362, group = CT14nnlo, Member 37 of sets CT14nnlo -LHE, id = 363, group = CT14nnlo, Member 38 of sets CT14nnlo -LHE, id = 364, group = CT14nnlo, Member 39 of sets CT14nnlo -LHE, id = 365, group = CT14nnlo, Member 40 of sets CT14nnlo -LHE, id = 366, group = CT14nnlo, Member 41 of sets CT14nnlo -LHE, id = 367, group = CT14nnlo, Member 42 of sets CT14nnlo -LHE, id = 368, group = CT14nnlo, Member 43 of sets CT14nnlo -LHE, id = 369, group = CT14nnlo, Member 44 of sets CT14nnlo -LHE, id = 370, group = CT14nnlo, Member 45 of sets CT14nnlo -LHE, id = 371, group = CT14nnlo, Member 46 of sets CT14nnlo -LHE, id = 372, group = CT14nnlo, Member 47 of sets CT14nnlo -LHE, id = 373, group = CT14nnlo, Member 48 of sets CT14nnlo -LHE, id = 374, group = CT14nnlo, Member 49 of sets CT14nnlo -LHE, id = 375, group = CT14nnlo, Member 50 of sets CT14nnlo -LHE, id = 376, group = CT14nnlo, Member 51 of sets CT14nnlo -LHE, id = 377, group = CT14nnlo, Member 52 of sets CT14nnlo -LHE, id = 378, group = CT14nnlo, Member 53 of sets CT14nnlo -LHE, id = 379, group = CT14nnlo, Member 54 of sets CT14nnlo -LHE, id = 380, group = CT14nnlo, Member 55 of sets CT14nnlo -LHE, id = 381, group = CT14nnlo, Member 56 of sets CT14nnlo -LHE, id = 382, group = CT14nnlo_as_0116, Member 0 of sets CT14nnlo_as_0116 -LHE, id = 383, group = CT14nnlo_as_0120, Member 0 of sets CT14nnlo_as_0120 -LHE, id = 384, group = CT14nlo, Member 0 of sets CT14nlo -LHE, id = 385, group = CT14nlo, Member 1 of sets CT14nlo -LHE, id = 386, group = CT14nlo, Member 2 of sets CT14nlo -LHE, id = 387, group = CT14nlo, Member 3 of sets CT14nlo -LHE, id = 388, group = CT14nlo, Member 4 of sets CT14nlo -LHE, id = 389, group = CT14nlo, Member 5 of sets CT14nlo -LHE, id = 390, group = CT14nlo, Member 6 of sets CT14nlo -LHE, id = 391, group = CT14nlo, Member 7 of sets CT14nlo -LHE, id = 392, group = CT14nlo, Member 8 of sets CT14nlo -LHE, id = 393, group = CT14nlo, Member 9 of sets CT14nlo -LHE, id = 394, group = CT14nlo, Member 10 of sets CT14nlo -LHE, id = 395, group = CT14nlo, Member 11 of sets CT14nlo -LHE, id = 396, group = CT14nlo, Member 12 of sets CT14nlo -LHE, id = 397, group = CT14nlo, Member 13 of sets CT14nlo -LHE, id = 398, group = CT14nlo, Member 14 of sets CT14nlo -LHE, id = 399, group = CT14nlo, Member 15 of sets CT14nlo -LHE, id = 400, group = CT14nlo, Member 16 of sets CT14nlo -LHE, id = 401, group = CT14nlo, Member 17 of sets CT14nlo -LHE, id = 402, group = CT14nlo, Member 18 of sets CT14nlo -LHE, id = 403, group = CT14nlo, Member 19 of sets CT14nlo -LHE, id = 404, group = CT14nlo, Member 20 of sets CT14nlo -LHE, id = 405, group = CT14nlo, Member 21 of sets CT14nlo -LHE, id = 406, group = CT14nlo, Member 22 of sets CT14nlo -LHE, id = 407, group = CT14nlo, Member 23 of sets CT14nlo -LHE, id = 408, group = CT14nlo, Member 24 of sets CT14nlo -LHE, id = 409, group = CT14nlo, Member 25 of sets CT14nlo -LHE, id = 410, group = CT14nlo, Member 26 of sets CT14nlo -LHE, id = 411, group = CT14nlo, Member 27 of sets CT14nlo -LHE, id = 412, group = CT14nlo, Member 28 of sets CT14nlo -LHE, id = 413, group = CT14nlo, Member 29 of sets CT14nlo -LHE, id = 414, group = CT14nlo, Member 30 of sets CT14nlo -LHE, id = 415, group = CT14nlo, Member 31 of sets CT14nlo -LHE, id = 416, group = CT14nlo, Member 32 of sets CT14nlo -LHE, id = 417, group = CT14nlo, Member 33 of sets CT14nlo -LHE, id = 418, group = CT14nlo, Member 34 of sets CT14nlo -LHE, id = 419, group = CT14nlo, Member 35 of sets CT14nlo -LHE, id = 420, group = CT14nlo, Member 36 of sets CT14nlo -LHE, id = 421, group = CT14nlo, Member 37 of sets CT14nlo -LHE, id = 422, group = CT14nlo, Member 38 of sets CT14nlo -LHE, id = 423, group = CT14nlo, Member 39 of sets CT14nlo -LHE, id = 424, group = CT14nlo, Member 40 of sets CT14nlo -LHE, id = 425, group = CT14nlo, Member 41 of sets CT14nlo -LHE, id = 426, group = CT14nlo, Member 42 of sets CT14nlo -LHE, id = 427, group = CT14nlo, Member 43 of sets CT14nlo -LHE, id = 428, group = CT14nlo, Member 44 of sets CT14nlo -LHE, id = 429, group = CT14nlo, Member 45 of sets CT14nlo -LHE, id = 430, group = CT14nlo, Member 46 of sets CT14nlo -LHE, id = 431, group = CT14nlo, Member 47 of sets CT14nlo -LHE, id = 432, group = CT14nlo, Member 48 of sets CT14nlo -LHE, id = 433, group = CT14nlo, Member 49 of sets CT14nlo -LHE, id = 434, group = CT14nlo, Member 50 of sets CT14nlo -LHE, id = 435, group = CT14nlo, Member 51 of sets CT14nlo -LHE, id = 436, group = CT14nlo, Member 52 of sets CT14nlo -LHE, id = 437, group = CT14nlo, Member 53 of sets CT14nlo -LHE, id = 438, group = CT14nlo, Member 54 of sets CT14nlo -LHE, id = 439, group = CT14nlo, Member 55 of sets CT14nlo -LHE, id = 440, group = CT14nlo, Member 56 of sets CT14nlo -LHE, id = 441, group = CT14nlo_as_0116, Member 0 of sets CT14nlo_as_0116 -LHE, id = 442, group = CT14nlo_as_0120, Member 0 of sets CT14nlo_as_0120 -LHE, id = 443, group = CT14lo, Member 0 of sets CT14lo -LHE, id = 444, group = MMHT2014nlo68clas118, Member 0 of sets MMHT2014nlo68clas118 -LHE, id = 445, group = MMHT2014nlo68clas118, Member 1 of sets MMHT2014nlo68clas118 -LHE, id = 446, group = MMHT2014nlo68clas118, Member 2 of sets MMHT2014nlo68clas118 -LHE, id = 447, group = MMHT2014nlo68clas118, Member 3 of sets MMHT2014nlo68clas118 -LHE, id = 448, group = MMHT2014nlo68clas118, Member 4 of sets MMHT2014nlo68clas118 -LHE, id = 449, group = MMHT2014nlo68clas118, Member 5 of sets MMHT2014nlo68clas118 -LHE, id = 450, group = MMHT2014nlo68clas118, Member 6 of sets MMHT2014nlo68clas118 -LHE, id = 451, group = MMHT2014nlo68clas118, Member 7 of sets MMHT2014nlo68clas118 -LHE, id = 452, group = MMHT2014nlo68clas118, Member 8 of sets MMHT2014nlo68clas118 -LHE, id = 453, group = MMHT2014nlo68clas118, Member 9 of sets MMHT2014nlo68clas118 -LHE, id = 454, group = MMHT2014nlo68clas118, Member 10 of sets MMHT2014nlo68clas118 -LHE, id = 455, group = MMHT2014nlo68clas118, Member 11 of sets MMHT2014nlo68clas118 -LHE, id = 456, group = MMHT2014nlo68clas118, Member 12 of sets MMHT2014nlo68clas118 -LHE, id = 457, group = MMHT2014nlo68clas118, Member 13 of sets MMHT2014nlo68clas118 -LHE, id = 458, group = MMHT2014nlo68clas118, Member 14 of sets MMHT2014nlo68clas118 -LHE, id = 459, group = MMHT2014nlo68clas118, Member 15 of sets MMHT2014nlo68clas118 -LHE, id = 460, group = MMHT2014nlo68clas118, Member 16 of sets MMHT2014nlo68clas118 -LHE, id = 461, group = MMHT2014nlo68clas118, Member 17 of sets MMHT2014nlo68clas118 -LHE, id = 462, group = MMHT2014nlo68clas118, Member 18 of sets MMHT2014nlo68clas118 -LHE, id = 463, group = MMHT2014nlo68clas118, Member 19 of sets MMHT2014nlo68clas118 -LHE, id = 464, group = MMHT2014nlo68clas118, Member 20 of sets MMHT2014nlo68clas118 -LHE, id = 465, group = MMHT2014nlo68clas118, Member 21 of sets MMHT2014nlo68clas118 -LHE, id = 466, group = MMHT2014nlo68clas118, Member 22 of sets MMHT2014nlo68clas118 -LHE, id = 467, group = MMHT2014nlo68clas118, Member 23 of sets MMHT2014nlo68clas118 -LHE, id = 468, group = MMHT2014nlo68clas118, Member 24 of sets MMHT2014nlo68clas118 -LHE, id = 469, group = MMHT2014nlo68clas118, Member 25 of sets MMHT2014nlo68clas118 -LHE, id = 470, group = MMHT2014nlo68clas118, Member 26 of sets MMHT2014nlo68clas118 -LHE, id = 471, group = MMHT2014nlo68clas118, Member 27 of sets MMHT2014nlo68clas118 -LHE, id = 472, group = MMHT2014nlo68clas118, Member 28 of sets MMHT2014nlo68clas118 -LHE, id = 473, group = MMHT2014nlo68clas118, Member 29 of sets MMHT2014nlo68clas118 -LHE, id = 474, group = MMHT2014nlo68clas118, Member 30 of sets MMHT2014nlo68clas118 -LHE, id = 475, group = MMHT2014nlo68clas118, Member 31 of sets MMHT2014nlo68clas118 -LHE, id = 476, group = MMHT2014nlo68clas118, Member 32 of sets MMHT2014nlo68clas118 -LHE, id = 477, group = MMHT2014nlo68clas118, Member 33 of sets MMHT2014nlo68clas118 -LHE, id = 478, group = MMHT2014nlo68clas118, Member 34 of sets MMHT2014nlo68clas118 -LHE, id = 479, group = MMHT2014nlo68clas118, Member 35 of sets MMHT2014nlo68clas118 -LHE, id = 480, group = MMHT2014nlo68clas118, Member 36 of sets MMHT2014nlo68clas118 -LHE, id = 481, group = MMHT2014nlo68clas118, Member 37 of sets MMHT2014nlo68clas118 -LHE, id = 482, group = MMHT2014nlo68clas118, Member 38 of sets MMHT2014nlo68clas118 -LHE, id = 483, group = MMHT2014nlo68clas118, Member 39 of sets MMHT2014nlo68clas118 -LHE, id = 484, group = MMHT2014nlo68clas118, Member 40 of sets MMHT2014nlo68clas118 -LHE, id = 485, group = MMHT2014nlo68clas118, Member 41 of sets MMHT2014nlo68clas118 -LHE, id = 486, group = MMHT2014nlo68clas118, Member 42 of sets MMHT2014nlo68clas118 -LHE, id = 487, group = MMHT2014nlo68clas118, Member 43 of sets MMHT2014nlo68clas118 -LHE, id = 488, group = MMHT2014nlo68clas118, Member 44 of sets MMHT2014nlo68clas118 -LHE, id = 489, group = MMHT2014nlo68clas118, Member 45 of sets MMHT2014nlo68clas118 -LHE, id = 490, group = MMHT2014nlo68clas118, Member 46 of sets MMHT2014nlo68clas118 -LHE, id = 491, group = MMHT2014nlo68clas118, Member 47 of sets MMHT2014nlo68clas118 -LHE, id = 492, group = MMHT2014nlo68clas118, Member 48 of sets MMHT2014nlo68clas118 -LHE, id = 493, group = MMHT2014nlo68clas118, Member 49 of sets MMHT2014nlo68clas118 -LHE, id = 494, group = MMHT2014nlo68clas118, Member 50 of sets MMHT2014nlo68clas118 -LHE, id = 495, group = MMHT2014nnlo68cl, Member 0 of sets MMHT2014nnlo68cl -LHE, id = 496, group = MMHT2014nnlo68cl, Member 1 of sets MMHT2014nnlo68cl -LHE, id = 497, group = MMHT2014nnlo68cl, Member 2 of sets MMHT2014nnlo68cl -LHE, id = 498, group = MMHT2014nnlo68cl, Member 3 of sets MMHT2014nnlo68cl -LHE, id = 499, group = MMHT2014nnlo68cl, Member 4 of sets MMHT2014nnlo68cl -LHE, id = 500, group = MMHT2014nnlo68cl, Member 5 of sets MMHT2014nnlo68cl -LHE, id = 501, group = MMHT2014nnlo68cl, Member 6 of sets MMHT2014nnlo68cl -LHE, id = 502, group = MMHT2014nnlo68cl, Member 7 of sets MMHT2014nnlo68cl -LHE, id = 503, group = MMHT2014nnlo68cl, Member 8 of sets MMHT2014nnlo68cl -LHE, id = 504, group = MMHT2014nnlo68cl, Member 9 of sets MMHT2014nnlo68cl -LHE, id = 505, group = MMHT2014nnlo68cl, Member 10 of sets MMHT2014nnlo68cl -LHE, id = 506, group = MMHT2014nnlo68cl, Member 11 of sets MMHT2014nnlo68cl -LHE, id = 507, group = MMHT2014nnlo68cl, Member 12 of sets MMHT2014nnlo68cl -LHE, id = 508, group = MMHT2014nnlo68cl, Member 13 of sets MMHT2014nnlo68cl -LHE, id = 509, group = MMHT2014nnlo68cl, Member 14 of sets MMHT2014nnlo68cl -LHE, id = 510, group = MMHT2014nnlo68cl, Member 15 of sets MMHT2014nnlo68cl -LHE, id = 511, group = MMHT2014nnlo68cl, Member 16 of sets MMHT2014nnlo68cl -LHE, id = 512, group = MMHT2014nnlo68cl, Member 17 of sets MMHT2014nnlo68cl -LHE, id = 513, group = MMHT2014nnlo68cl, Member 18 of sets MMHT2014nnlo68cl -LHE, id = 514, group = MMHT2014nnlo68cl, Member 19 of sets MMHT2014nnlo68cl -LHE, id = 515, group = MMHT2014nnlo68cl, Member 20 of sets MMHT2014nnlo68cl -LHE, id = 516, group = MMHT2014nnlo68cl, Member 21 of sets MMHT2014nnlo68cl -LHE, id = 517, group = MMHT2014nnlo68cl, Member 22 of sets MMHT2014nnlo68cl -LHE, id = 518, group = MMHT2014nnlo68cl, Member 23 of sets MMHT2014nnlo68cl -LHE, id = 519, group = MMHT2014nnlo68cl, Member 24 of sets MMHT2014nnlo68cl -LHE, id = 520, group = MMHT2014nnlo68cl, Member 25 of sets MMHT2014nnlo68cl -LHE, id = 521, group = MMHT2014nnlo68cl, Member 26 of sets MMHT2014nnlo68cl -LHE, id = 522, group = MMHT2014nnlo68cl, Member 27 of sets MMHT2014nnlo68cl -LHE, id = 523, group = MMHT2014nnlo68cl, Member 28 of sets MMHT2014nnlo68cl -LHE, id = 524, group = MMHT2014nnlo68cl, Member 29 of sets MMHT2014nnlo68cl -LHE, id = 525, group = MMHT2014nnlo68cl, Member 30 of sets MMHT2014nnlo68cl -LHE, id = 526, group = MMHT2014nnlo68cl, Member 31 of sets MMHT2014nnlo68cl -LHE, id = 527, group = MMHT2014nnlo68cl, Member 32 of sets MMHT2014nnlo68cl -LHE, id = 528, group = MMHT2014nnlo68cl, Member 33 of sets MMHT2014nnlo68cl -LHE, id = 529, group = MMHT2014nnlo68cl, Member 34 of sets MMHT2014nnlo68cl -LHE, id = 530, group = MMHT2014nnlo68cl, Member 35 of sets MMHT2014nnlo68cl -LHE, id = 531, group = MMHT2014nnlo68cl, Member 36 of sets MMHT2014nnlo68cl -LHE, id = 532, group = MMHT2014nnlo68cl, Member 37 of sets MMHT2014nnlo68cl -LHE, id = 533, group = MMHT2014nnlo68cl, Member 38 of sets MMHT2014nnlo68cl -LHE, id = 534, group = MMHT2014nnlo68cl, Member 39 of sets MMHT2014nnlo68cl -LHE, id = 535, group = MMHT2014nnlo68cl, Member 40 of sets MMHT2014nnlo68cl -LHE, id = 536, group = MMHT2014nnlo68cl, Member 41 of sets MMHT2014nnlo68cl -LHE, id = 537, group = MMHT2014nnlo68cl, Member 42 of sets MMHT2014nnlo68cl -LHE, id = 538, group = MMHT2014nnlo68cl, Member 43 of sets MMHT2014nnlo68cl -LHE, id = 539, group = MMHT2014nnlo68cl, Member 44 of sets MMHT2014nnlo68cl -LHE, id = 540, group = MMHT2014nnlo68cl, Member 45 of sets MMHT2014nnlo68cl -LHE, id = 541, group = MMHT2014nnlo68cl, Member 46 of sets MMHT2014nnlo68cl -LHE, id = 542, group = MMHT2014nnlo68cl, Member 47 of sets MMHT2014nnlo68cl -LHE, id = 543, group = MMHT2014nnlo68cl, Member 48 of sets MMHT2014nnlo68cl -LHE, id = 544, group = MMHT2014nnlo68cl, Member 49 of sets MMHT2014nnlo68cl -LHE, id = 545, group = MMHT2014nnlo68cl, Member 50 of sets MMHT2014nnlo68cl -LHE, id = 546, group = MMHT2014lo68cl, Member 0 of sets MMHT2014lo68cl -LHE, id = 547, group = ABMP16als118_5_nnlo, Member 0 of sets ABMP16als118_5_nnlo -LHE, id = 548, group = ABMP16als118_5_nnlo, Member 1 of sets ABMP16als118_5_nnlo -LHE, id = 549, group = ABMP16als118_5_nnlo, Member 2 of sets ABMP16als118_5_nnlo -LHE, id = 550, group = ABMP16als118_5_nnlo, Member 3 of sets ABMP16als118_5_nnlo -LHE, id = 551, group = ABMP16als118_5_nnlo, Member 4 of sets ABMP16als118_5_nnlo -LHE, id = 552, group = ABMP16als118_5_nnlo, Member 5 of sets ABMP16als118_5_nnlo -LHE, id = 553, group = ABMP16als118_5_nnlo, Member 6 of sets ABMP16als118_5_nnlo -LHE, id = 554, group = ABMP16als118_5_nnlo, Member 7 of sets ABMP16als118_5_nnlo -LHE, id = 555, group = ABMP16als118_5_nnlo, Member 8 of sets ABMP16als118_5_nnlo -LHE, id = 556, group = ABMP16als118_5_nnlo, Member 9 of sets ABMP16als118_5_nnlo -LHE, id = 557, group = ABMP16als118_5_nnlo, Member 10 of sets ABMP16als118_5_nnlo -LHE, id = 558, group = ABMP16als118_5_nnlo, Member 11 of sets ABMP16als118_5_nnlo -LHE, id = 559, group = ABMP16als118_5_nnlo, Member 12 of sets ABMP16als118_5_nnlo -LHE, id = 560, group = ABMP16als118_5_nnlo, Member 13 of sets ABMP16als118_5_nnlo -LHE, id = 561, group = ABMP16als118_5_nnlo, Member 14 of sets ABMP16als118_5_nnlo -LHE, id = 562, group = ABMP16als118_5_nnlo, Member 15 of sets ABMP16als118_5_nnlo -LHE, id = 563, group = ABMP16als118_5_nnlo, Member 16 of sets ABMP16als118_5_nnlo -LHE, id = 564, group = ABMP16als118_5_nnlo, Member 17 of sets ABMP16als118_5_nnlo -LHE, id = 565, group = ABMP16als118_5_nnlo, Member 18 of sets ABMP16als118_5_nnlo -LHE, id = 566, group = ABMP16als118_5_nnlo, Member 19 of sets ABMP16als118_5_nnlo -LHE, id = 567, group = ABMP16als118_5_nnlo, Member 20 of sets ABMP16als118_5_nnlo -LHE, id = 568, group = ABMP16als118_5_nnlo, Member 21 of sets ABMP16als118_5_nnlo -LHE, id = 569, group = ABMP16als118_5_nnlo, Member 22 of sets ABMP16als118_5_nnlo -LHE, id = 570, group = ABMP16als118_5_nnlo, Member 23 of sets ABMP16als118_5_nnlo -LHE, id = 571, group = ABMP16als118_5_nnlo, Member 24 of sets ABMP16als118_5_nnlo -LHE, id = 572, group = ABMP16als118_5_nnlo, Member 25 of sets ABMP16als118_5_nnlo -LHE, id = 573, group = ABMP16als118_5_nnlo, Member 26 of sets ABMP16als118_5_nnlo -LHE, id = 574, group = ABMP16als118_5_nnlo, Member 27 of sets ABMP16als118_5_nnlo -LHE, id = 575, group = ABMP16als118_5_nnlo, Member 28 of sets ABMP16als118_5_nnlo -LHE, id = 576, group = ABMP16als118_5_nnlo, Member 29 of sets ABMP16als118_5_nnlo -LHE, id = 577, group = PDF4LHC15_nlo_100_pdfas, Member 0 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 578, group = PDF4LHC15_nlo_100_pdfas, Member 1 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 579, group = PDF4LHC15_nlo_100_pdfas, Member 2 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 580, group = PDF4LHC15_nlo_100_pdfas, Member 3 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 581, group = PDF4LHC15_nlo_100_pdfas, Member 4 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 582, group = PDF4LHC15_nlo_100_pdfas, Member 5 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 583, group = PDF4LHC15_nlo_100_pdfas, Member 6 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 584, group = PDF4LHC15_nlo_100_pdfas, Member 7 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 585, group = PDF4LHC15_nlo_100_pdfas, Member 8 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 586, group = PDF4LHC15_nlo_100_pdfas, Member 9 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 587, group = PDF4LHC15_nlo_100_pdfas, Member 10 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 588, group = PDF4LHC15_nlo_100_pdfas, Member 11 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 589, group = PDF4LHC15_nlo_100_pdfas, Member 12 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 590, group = PDF4LHC15_nlo_100_pdfas, Member 13 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 591, group = PDF4LHC15_nlo_100_pdfas, Member 14 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 592, group = PDF4LHC15_nlo_100_pdfas, Member 15 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 593, group = PDF4LHC15_nlo_100_pdfas, Member 16 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 594, group = PDF4LHC15_nlo_100_pdfas, Member 17 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 595, group = PDF4LHC15_nlo_100_pdfas, Member 18 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 596, group = PDF4LHC15_nlo_100_pdfas, Member 19 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 597, group = PDF4LHC15_nlo_100_pdfas, Member 20 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 598, group = PDF4LHC15_nlo_100_pdfas, Member 21 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 599, group = PDF4LHC15_nlo_100_pdfas, Member 22 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 600, group = PDF4LHC15_nlo_100_pdfas, Member 23 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 601, group = PDF4LHC15_nlo_100_pdfas, Member 24 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 602, group = PDF4LHC15_nlo_100_pdfas, Member 25 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 603, group = PDF4LHC15_nlo_100_pdfas, Member 26 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 604, group = PDF4LHC15_nlo_100_pdfas, Member 27 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 605, group = PDF4LHC15_nlo_100_pdfas, Member 28 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 606, group = PDF4LHC15_nlo_100_pdfas, Member 29 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 607, group = PDF4LHC15_nlo_100_pdfas, Member 30 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 608, group = PDF4LHC15_nlo_100_pdfas, Member 31 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 609, group = PDF4LHC15_nlo_100_pdfas, Member 32 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 610, group = PDF4LHC15_nlo_100_pdfas, Member 33 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 611, group = PDF4LHC15_nlo_100_pdfas, Member 34 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 612, group = PDF4LHC15_nlo_100_pdfas, Member 35 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 613, group = PDF4LHC15_nlo_100_pdfas, Member 36 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 614, group = PDF4LHC15_nlo_100_pdfas, Member 37 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 615, group = PDF4LHC15_nlo_100_pdfas, Member 38 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 616, group = PDF4LHC15_nlo_100_pdfas, Member 39 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 617, group = PDF4LHC15_nlo_100_pdfas, Member 40 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 618, group = PDF4LHC15_nlo_100_pdfas, Member 41 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 619, group = PDF4LHC15_nlo_100_pdfas, Member 42 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 620, group = PDF4LHC15_nlo_100_pdfas, Member 43 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 621, group = PDF4LHC15_nlo_100_pdfas, Member 44 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 622, group = PDF4LHC15_nlo_100_pdfas, Member 45 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 623, group = PDF4LHC15_nlo_100_pdfas, Member 46 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 624, group = PDF4LHC15_nlo_100_pdfas, Member 47 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 625, group = PDF4LHC15_nlo_100_pdfas, Member 48 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 626, group = PDF4LHC15_nlo_100_pdfas, Member 49 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 627, group = PDF4LHC15_nlo_100_pdfas, Member 50 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 628, group = PDF4LHC15_nlo_100_pdfas, Member 51 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 629, group = PDF4LHC15_nlo_100_pdfas, Member 52 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 630, group = PDF4LHC15_nlo_100_pdfas, Member 53 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 631, group = PDF4LHC15_nlo_100_pdfas, Member 54 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 632, group = PDF4LHC15_nlo_100_pdfas, Member 55 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 633, group = PDF4LHC15_nlo_100_pdfas, Member 56 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 634, group = PDF4LHC15_nlo_100_pdfas, Member 57 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 635, group = PDF4LHC15_nlo_100_pdfas, Member 58 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 636, group = PDF4LHC15_nlo_100_pdfas, Member 59 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 637, group = PDF4LHC15_nlo_100_pdfas, Member 60 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 638, group = PDF4LHC15_nlo_100_pdfas, Member 61 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 639, group = PDF4LHC15_nlo_100_pdfas, Member 62 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 640, group = PDF4LHC15_nlo_100_pdfas, Member 63 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 641, group = PDF4LHC15_nlo_100_pdfas, Member 64 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 642, group = PDF4LHC15_nlo_100_pdfas, Member 65 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 643, group = PDF4LHC15_nlo_100_pdfas, Member 66 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 644, group = PDF4LHC15_nlo_100_pdfas, Member 67 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 645, group = PDF4LHC15_nlo_100_pdfas, Member 68 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 646, group = PDF4LHC15_nlo_100_pdfas, Member 69 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 647, group = PDF4LHC15_nlo_100_pdfas, Member 70 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 648, group = PDF4LHC15_nlo_100_pdfas, Member 71 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 649, group = PDF4LHC15_nlo_100_pdfas, Member 72 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 650, group = PDF4LHC15_nlo_100_pdfas, Member 73 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 651, group = PDF4LHC15_nlo_100_pdfas, Member 74 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 652, group = PDF4LHC15_nlo_100_pdfas, Member 75 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 653, group = PDF4LHC15_nlo_100_pdfas, Member 76 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 654, group = PDF4LHC15_nlo_100_pdfas, Member 77 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 655, group = PDF4LHC15_nlo_100_pdfas, Member 78 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 656, group = PDF4LHC15_nlo_100_pdfas, Member 79 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 657, group = PDF4LHC15_nlo_100_pdfas, Member 80 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 658, group = PDF4LHC15_nlo_100_pdfas, Member 81 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 659, group = PDF4LHC15_nlo_100_pdfas, Member 82 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 660, group = PDF4LHC15_nlo_100_pdfas, Member 83 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 661, group = PDF4LHC15_nlo_100_pdfas, Member 84 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 662, group = PDF4LHC15_nlo_100_pdfas, Member 85 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 663, group = PDF4LHC15_nlo_100_pdfas, Member 86 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 664, group = PDF4LHC15_nlo_100_pdfas, Member 87 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 665, group = PDF4LHC15_nlo_100_pdfas, Member 88 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 666, group = PDF4LHC15_nlo_100_pdfas, Member 89 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 667, group = PDF4LHC15_nlo_100_pdfas, Member 90 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 668, group = PDF4LHC15_nlo_100_pdfas, Member 91 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 669, group = PDF4LHC15_nlo_100_pdfas, Member 92 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 670, group = PDF4LHC15_nlo_100_pdfas, Member 93 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 671, group = PDF4LHC15_nlo_100_pdfas, Member 94 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 672, group = PDF4LHC15_nlo_100_pdfas, Member 95 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 673, group = PDF4LHC15_nlo_100_pdfas, Member 96 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 674, group = PDF4LHC15_nlo_100_pdfas, Member 97 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 675, group = PDF4LHC15_nlo_100_pdfas, Member 98 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 676, group = PDF4LHC15_nlo_100_pdfas, Member 99 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 677, group = PDF4LHC15_nlo_100_pdfas, Member 100 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 678, group = PDF4LHC15_nlo_100_pdfas, Member 101 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 679, group = PDF4LHC15_nlo_100_pdfas, Member 102 of sets PDF4LHC15_nlo_100_pdfas -LHE, id = 680, group = PDF4LHC15_nnlo_100_pdfas, Member 0 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 681, group = PDF4LHC15_nnlo_100_pdfas, Member 1 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 682, group = PDF4LHC15_nnlo_100_pdfas, Member 2 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 683, group = PDF4LHC15_nnlo_100_pdfas, Member 3 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 684, group = PDF4LHC15_nnlo_100_pdfas, Member 4 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 685, group = PDF4LHC15_nnlo_100_pdfas, Member 5 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 686, group = PDF4LHC15_nnlo_100_pdfas, Member 6 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 687, group = PDF4LHC15_nnlo_100_pdfas, Member 7 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 688, group = PDF4LHC15_nnlo_100_pdfas, Member 8 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 689, group = PDF4LHC15_nnlo_100_pdfas, Member 9 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 690, group = PDF4LHC15_nnlo_100_pdfas, Member 10 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 691, group = PDF4LHC15_nnlo_100_pdfas, Member 11 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 692, group = PDF4LHC15_nnlo_100_pdfas, Member 12 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 693, group = PDF4LHC15_nnlo_100_pdfas, Member 13 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 694, group = PDF4LHC15_nnlo_100_pdfas, Member 14 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 695, group = PDF4LHC15_nnlo_100_pdfas, Member 15 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 696, group = PDF4LHC15_nnlo_100_pdfas, Member 16 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 697, group = PDF4LHC15_nnlo_100_pdfas, Member 17 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 698, group = PDF4LHC15_nnlo_100_pdfas, Member 18 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 699, group = PDF4LHC15_nnlo_100_pdfas, Member 19 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 700, group = PDF4LHC15_nnlo_100_pdfas, Member 20 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 701, group = PDF4LHC15_nnlo_100_pdfas, Member 21 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 702, group = PDF4LHC15_nnlo_100_pdfas, Member 22 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 703, group = PDF4LHC15_nnlo_100_pdfas, Member 23 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 704, group = PDF4LHC15_nnlo_100_pdfas, Member 24 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 705, group = PDF4LHC15_nnlo_100_pdfas, Member 25 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 706, group = PDF4LHC15_nnlo_100_pdfas, Member 26 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 707, group = PDF4LHC15_nnlo_100_pdfas, Member 27 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 708, group = PDF4LHC15_nnlo_100_pdfas, Member 28 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 709, group = PDF4LHC15_nnlo_100_pdfas, Member 29 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 710, group = PDF4LHC15_nnlo_100_pdfas, Member 30 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 711, group = PDF4LHC15_nnlo_100_pdfas, Member 31 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 712, group = PDF4LHC15_nnlo_100_pdfas, Member 32 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 713, group = PDF4LHC15_nnlo_100_pdfas, Member 33 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 714, group = PDF4LHC15_nnlo_100_pdfas, Member 34 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 715, group = PDF4LHC15_nnlo_100_pdfas, Member 35 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 716, group = PDF4LHC15_nnlo_100_pdfas, Member 36 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 717, group = PDF4LHC15_nnlo_100_pdfas, Member 37 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 718, group = PDF4LHC15_nnlo_100_pdfas, Member 38 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 719, group = PDF4LHC15_nnlo_100_pdfas, Member 39 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 720, group = PDF4LHC15_nnlo_100_pdfas, Member 40 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 721, group = PDF4LHC15_nnlo_100_pdfas, Member 41 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 722, group = PDF4LHC15_nnlo_100_pdfas, Member 42 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 723, group = PDF4LHC15_nnlo_100_pdfas, Member 43 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 724, group = PDF4LHC15_nnlo_100_pdfas, Member 44 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 725, group = PDF4LHC15_nnlo_100_pdfas, Member 45 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 726, group = PDF4LHC15_nnlo_100_pdfas, Member 46 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 727, group = PDF4LHC15_nnlo_100_pdfas, Member 47 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 728, group = PDF4LHC15_nnlo_100_pdfas, Member 48 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 729, group = PDF4LHC15_nnlo_100_pdfas, Member 49 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 730, group = PDF4LHC15_nnlo_100_pdfas, Member 50 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 731, group = PDF4LHC15_nnlo_100_pdfas, Member 51 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 732, group = PDF4LHC15_nnlo_100_pdfas, Member 52 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 733, group = PDF4LHC15_nnlo_100_pdfas, Member 53 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 734, group = PDF4LHC15_nnlo_100_pdfas, Member 54 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 735, group = PDF4LHC15_nnlo_100_pdfas, Member 55 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 736, group = PDF4LHC15_nnlo_100_pdfas, Member 56 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 737, group = PDF4LHC15_nnlo_100_pdfas, Member 57 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 738, group = PDF4LHC15_nnlo_100_pdfas, Member 58 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 739, group = PDF4LHC15_nnlo_100_pdfas, Member 59 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 740, group = PDF4LHC15_nnlo_100_pdfas, Member 60 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 741, group = PDF4LHC15_nnlo_100_pdfas, Member 61 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 742, group = PDF4LHC15_nnlo_100_pdfas, Member 62 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 743, group = PDF4LHC15_nnlo_100_pdfas, Member 63 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 744, group = PDF4LHC15_nnlo_100_pdfas, Member 64 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 745, group = PDF4LHC15_nnlo_100_pdfas, Member 65 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 746, group = PDF4LHC15_nnlo_100_pdfas, Member 66 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 747, group = PDF4LHC15_nnlo_100_pdfas, Member 67 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 748, group = PDF4LHC15_nnlo_100_pdfas, Member 68 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 749, group = PDF4LHC15_nnlo_100_pdfas, Member 69 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 750, group = PDF4LHC15_nnlo_100_pdfas, Member 70 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 751, group = PDF4LHC15_nnlo_100_pdfas, Member 71 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 752, group = PDF4LHC15_nnlo_100_pdfas, Member 72 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 753, group = PDF4LHC15_nnlo_100_pdfas, Member 73 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 754, group = PDF4LHC15_nnlo_100_pdfas, Member 74 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 755, group = PDF4LHC15_nnlo_100_pdfas, Member 75 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 756, group = PDF4LHC15_nnlo_100_pdfas, Member 76 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 757, group = PDF4LHC15_nnlo_100_pdfas, Member 77 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 758, group = PDF4LHC15_nnlo_100_pdfas, Member 78 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 759, group = PDF4LHC15_nnlo_100_pdfas, Member 79 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 760, group = PDF4LHC15_nnlo_100_pdfas, Member 80 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 761, group = PDF4LHC15_nnlo_100_pdfas, Member 81 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 762, group = PDF4LHC15_nnlo_100_pdfas, Member 82 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 763, group = PDF4LHC15_nnlo_100_pdfas, Member 83 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 764, group = PDF4LHC15_nnlo_100_pdfas, Member 84 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 765, group = PDF4LHC15_nnlo_100_pdfas, Member 85 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 766, group = PDF4LHC15_nnlo_100_pdfas, Member 86 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 767, group = PDF4LHC15_nnlo_100_pdfas, Member 87 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 768, group = PDF4LHC15_nnlo_100_pdfas, Member 88 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 769, group = PDF4LHC15_nnlo_100_pdfas, Member 89 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 770, group = PDF4LHC15_nnlo_100_pdfas, Member 90 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 771, group = PDF4LHC15_nnlo_100_pdfas, Member 91 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 772, group = PDF4LHC15_nnlo_100_pdfas, Member 92 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 773, group = PDF4LHC15_nnlo_100_pdfas, Member 93 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 774, group = PDF4LHC15_nnlo_100_pdfas, Member 94 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 775, group = PDF4LHC15_nnlo_100_pdfas, Member 95 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 776, group = PDF4LHC15_nnlo_100_pdfas, Member 96 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 777, group = PDF4LHC15_nnlo_100_pdfas, Member 97 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 778, group = PDF4LHC15_nnlo_100_pdfas, Member 98 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 779, group = PDF4LHC15_nnlo_100_pdfas, Member 99 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 780, group = PDF4LHC15_nnlo_100_pdfas, Member 100 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 781, group = PDF4LHC15_nnlo_100_pdfas, Member 101 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 782, group = PDF4LHC15_nnlo_100_pdfas, Member 102 of sets PDF4LHC15_nnlo_100_pdfas -LHE, id = 783, group = PDF4LHC15_nlo_30_pdfas, Member 0 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 784, group = PDF4LHC15_nlo_30_pdfas, Member 1 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 785, group = PDF4LHC15_nlo_30_pdfas, Member 2 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 786, group = PDF4LHC15_nlo_30_pdfas, Member 3 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 787, group = PDF4LHC15_nlo_30_pdfas, Member 4 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 788, group = PDF4LHC15_nlo_30_pdfas, Member 5 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 789, group = PDF4LHC15_nlo_30_pdfas, Member 6 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 790, group = PDF4LHC15_nlo_30_pdfas, Member 7 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 791, group = PDF4LHC15_nlo_30_pdfas, Member 8 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 792, group = PDF4LHC15_nlo_30_pdfas, Member 9 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 793, group = PDF4LHC15_nlo_30_pdfas, Member 10 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 794, group = PDF4LHC15_nlo_30_pdfas, Member 11 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 795, group = PDF4LHC15_nlo_30_pdfas, Member 12 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 796, group = PDF4LHC15_nlo_30_pdfas, Member 13 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 797, group = PDF4LHC15_nlo_30_pdfas, Member 14 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 798, group = PDF4LHC15_nlo_30_pdfas, Member 15 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 799, group = PDF4LHC15_nlo_30_pdfas, Member 16 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 800, group = PDF4LHC15_nlo_30_pdfas, Member 17 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 801, group = PDF4LHC15_nlo_30_pdfas, Member 18 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 802, group = PDF4LHC15_nlo_30_pdfas, Member 19 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 803, group = PDF4LHC15_nlo_30_pdfas, Member 20 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 804, group = PDF4LHC15_nlo_30_pdfas, Member 21 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 805, group = PDF4LHC15_nlo_30_pdfas, Member 22 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 806, group = PDF4LHC15_nlo_30_pdfas, Member 23 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 807, group = PDF4LHC15_nlo_30_pdfas, Member 24 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 808, group = PDF4LHC15_nlo_30_pdfas, Member 25 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 809, group = PDF4LHC15_nlo_30_pdfas, Member 26 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 810, group = PDF4LHC15_nlo_30_pdfas, Member 27 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 811, group = PDF4LHC15_nlo_30_pdfas, Member 28 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 812, group = PDF4LHC15_nlo_30_pdfas, Member 29 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 813, group = PDF4LHC15_nlo_30_pdfas, Member 30 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 814, group = PDF4LHC15_nlo_30_pdfas, Member 31 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 815, group = PDF4LHC15_nlo_30_pdfas, Member 32 of sets PDF4LHC15_nlo_30_pdfas -LHE, id = 816, group = PDF4LHC15_nnlo_30_pdfas, Member 0 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 817, group = PDF4LHC15_nnlo_30_pdfas, Member 1 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 818, group = PDF4LHC15_nnlo_30_pdfas, Member 2 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 819, group = PDF4LHC15_nnlo_30_pdfas, Member 3 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 820, group = PDF4LHC15_nnlo_30_pdfas, Member 4 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 821, group = PDF4LHC15_nnlo_30_pdfas, Member 5 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 822, group = PDF4LHC15_nnlo_30_pdfas, Member 6 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 823, group = PDF4LHC15_nnlo_30_pdfas, Member 7 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 824, group = PDF4LHC15_nnlo_30_pdfas, Member 8 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 825, group = PDF4LHC15_nnlo_30_pdfas, Member 9 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 826, group = PDF4LHC15_nnlo_30_pdfas, Member 10 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 827, group = PDF4LHC15_nnlo_30_pdfas, Member 11 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 828, group = PDF4LHC15_nnlo_30_pdfas, Member 12 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 829, group = PDF4LHC15_nnlo_30_pdfas, Member 13 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 830, group = PDF4LHC15_nnlo_30_pdfas, Member 14 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 831, group = PDF4LHC15_nnlo_30_pdfas, Member 15 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 832, group = PDF4LHC15_nnlo_30_pdfas, Member 16 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 833, group = PDF4LHC15_nnlo_30_pdfas, Member 17 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 834, group = PDF4LHC15_nnlo_30_pdfas, Member 18 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 835, group = PDF4LHC15_nnlo_30_pdfas, Member 19 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 836, group = PDF4LHC15_nnlo_30_pdfas, Member 20 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 837, group = PDF4LHC15_nnlo_30_pdfas, Member 21 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 838, group = PDF4LHC15_nnlo_30_pdfas, Member 22 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 839, group = PDF4LHC15_nnlo_30_pdfas, Member 23 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 840, group = PDF4LHC15_nnlo_30_pdfas, Member 24 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 841, group = PDF4LHC15_nnlo_30_pdfas, Member 25 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 842, group = PDF4LHC15_nnlo_30_pdfas, Member 26 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 843, group = PDF4LHC15_nnlo_30_pdfas, Member 27 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 844, group = PDF4LHC15_nnlo_30_pdfas, Member 28 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 845, group = PDF4LHC15_nnlo_30_pdfas, Member 29 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 846, group = PDF4LHC15_nnlo_30_pdfas, Member 30 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 847, group = PDF4LHC15_nnlo_30_pdfas, Member 31 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 848, group = PDF4LHC15_nnlo_30_pdfas, Member 32 of sets PDF4LHC15_nnlo_30_pdfas -LHE, id = 849, group = HERAPDF20_NLO_EIG, Member 0 of sets HERAPDF20_NLO_EIG -LHE, id = 850, group = HERAPDF20_NLO_EIG, Member 1 of sets HERAPDF20_NLO_EIG -LHE, id = 851, group = HERAPDF20_NLO_EIG, Member 2 of sets HERAPDF20_NLO_EIG -LHE, id = 852, group = HERAPDF20_NLO_EIG, Member 3 of sets HERAPDF20_NLO_EIG -LHE, id = 853, group = HERAPDF20_NLO_EIG, Member 4 of sets HERAPDF20_NLO_EIG -LHE, id = 854, group = HERAPDF20_NLO_EIG, Member 5 of sets HERAPDF20_NLO_EIG -LHE, id = 855, group = HERAPDF20_NLO_EIG, Member 6 of sets HERAPDF20_NLO_EIG -LHE, id = 856, group = HERAPDF20_NLO_EIG, Member 7 of sets HERAPDF20_NLO_EIG -LHE, id = 857, group = HERAPDF20_NLO_EIG, Member 8 of sets HERAPDF20_NLO_EIG -LHE, id = 858, group = HERAPDF20_NLO_EIG, Member 9 of sets HERAPDF20_NLO_EIG -LHE, id = 859, group = HERAPDF20_NLO_EIG, Member 10 of sets HERAPDF20_NLO_EIG -LHE, id = 860, group = HERAPDF20_NLO_EIG, Member 11 of sets HERAPDF20_NLO_EIG -LHE, id = 861, group = HERAPDF20_NLO_EIG, Member 12 of sets HERAPDF20_NLO_EIG -LHE, id = 862, group = HERAPDF20_NLO_EIG, Member 13 of sets HERAPDF20_NLO_EIG -LHE, id = 863, group = HERAPDF20_NLO_EIG, Member 14 of sets HERAPDF20_NLO_EIG -LHE, id = 864, group = HERAPDF20_NLO_EIG, Member 15 of sets HERAPDF20_NLO_EIG -LHE, id = 865, group = HERAPDF20_NLO_EIG, Member 16 of sets HERAPDF20_NLO_EIG -LHE, id = 866, group = HERAPDF20_NLO_EIG, Member 17 of sets HERAPDF20_NLO_EIG -LHE, id = 867, group = HERAPDF20_NLO_EIG, Member 18 of sets HERAPDF20_NLO_EIG -LHE, id = 868, group = HERAPDF20_NLO_EIG, Member 19 of sets HERAPDF20_NLO_EIG -LHE, id = 869, group = HERAPDF20_NLO_EIG, Member 20 of sets HERAPDF20_NLO_EIG -LHE, id = 870, group = HERAPDF20_NLO_EIG, Member 21 of sets HERAPDF20_NLO_EIG -LHE, id = 871, group = HERAPDF20_NLO_EIG, Member 22 of sets HERAPDF20_NLO_EIG -LHE, id = 872, group = HERAPDF20_NLO_EIG, Member 23 of sets HERAPDF20_NLO_EIG -LHE, id = 873, group = HERAPDF20_NLO_EIG, Member 24 of sets HERAPDF20_NLO_EIG -LHE, id = 874, group = HERAPDF20_NLO_EIG, Member 25 of sets HERAPDF20_NLO_EIG -LHE, id = 875, group = HERAPDF20_NLO_EIG, Member 26 of sets HERAPDF20_NLO_EIG -LHE, id = 876, group = HERAPDF20_NLO_EIG, Member 27 of sets HERAPDF20_NLO_EIG -LHE, id = 877, group = HERAPDF20_NLO_EIG, Member 28 of sets HERAPDF20_NLO_EIG -LHE, id = 878, group = HERAPDF20_NLO_VAR, Member 0 of sets HERAPDF20_NLO_VAR -LHE, id = 879, group = HERAPDF20_NLO_VAR, Member 1 of sets HERAPDF20_NLO_VAR -LHE, id = 880, group = HERAPDF20_NLO_VAR, Member 2 of sets HERAPDF20_NLO_VAR -LHE, id = 881, group = HERAPDF20_NLO_VAR, Member 3 of sets HERAPDF20_NLO_VAR -LHE, id = 882, group = HERAPDF20_NLO_VAR, Member 4 of sets HERAPDF20_NLO_VAR -LHE, id = 883, group = HERAPDF20_NLO_VAR, Member 5 of sets HERAPDF20_NLO_VAR -LHE, id = 884, group = HERAPDF20_NLO_VAR, Member 6 of sets HERAPDF20_NLO_VAR -LHE, id = 885, group = HERAPDF20_NLO_VAR, Member 7 of sets HERAPDF20_NLO_VAR -LHE, id = 886, group = HERAPDF20_NLO_VAR, Member 8 of sets HERAPDF20_NLO_VAR -LHE, id = 887, group = HERAPDF20_NLO_VAR, Member 9 of sets HERAPDF20_NLO_VAR -LHE, id = 888, group = HERAPDF20_NLO_VAR, Member 10 of sets HERAPDF20_NLO_VAR -LHE, id = 889, group = HERAPDF20_NLO_VAR, Member 11 of sets HERAPDF20_NLO_VAR -LHE, id = 890, group = HERAPDF20_NLO_VAR, Member 12 of sets HERAPDF20_NLO_VAR -LHE, id = 891, group = HERAPDF20_NLO_VAR, Member 13 of sets HERAPDF20_NLO_VAR -LHE, id = 892, group = HERAPDF20_NNLO_EIG, Member 0 of sets HERAPDF20_NNLO_EIG -LHE, id = 893, group = HERAPDF20_NNLO_EIG, Member 1 of sets HERAPDF20_NNLO_EIG -LHE, id = 894, group = HERAPDF20_NNLO_EIG, Member 2 of sets HERAPDF20_NNLO_EIG -LHE, id = 895, group = HERAPDF20_NNLO_EIG, Member 3 of sets HERAPDF20_NNLO_EIG -LHE, id = 896, group = HERAPDF20_NNLO_EIG, Member 4 of sets HERAPDF20_NNLO_EIG -LHE, id = 897, group = HERAPDF20_NNLO_EIG, Member 5 of sets HERAPDF20_NNLO_EIG -LHE, id = 898, group = HERAPDF20_NNLO_EIG, Member 6 of sets HERAPDF20_NNLO_EIG -LHE, id = 899, group = HERAPDF20_NNLO_EIG, Member 7 of sets HERAPDF20_NNLO_EIG -LHE, id = 900, group = HERAPDF20_NNLO_EIG, Member 8 of sets HERAPDF20_NNLO_EIG -LHE, id = 901, group = HERAPDF20_NNLO_EIG, Member 9 of sets HERAPDF20_NNLO_EIG -LHE, id = 902, group = HERAPDF20_NNLO_EIG, Member 10 of sets HERAPDF20_NNLO_EIG -LHE, id = 903, group = HERAPDF20_NNLO_EIG, Member 11 of sets HERAPDF20_NNLO_EIG -LHE, id = 904, group = HERAPDF20_NNLO_EIG, Member 12 of sets HERAPDF20_NNLO_EIG -LHE, id = 905, group = HERAPDF20_NNLO_EIG, Member 13 of sets HERAPDF20_NNLO_EIG -LHE, id = 906, group = HERAPDF20_NNLO_EIG, Member 14 of sets HERAPDF20_NNLO_EIG -LHE, id = 907, group = HERAPDF20_NNLO_EIG, Member 15 of sets HERAPDF20_NNLO_EIG -LHE, id = 908, group = HERAPDF20_NNLO_EIG, Member 16 of sets HERAPDF20_NNLO_EIG -LHE, id = 909, group = HERAPDF20_NNLO_EIG, Member 17 of sets HERAPDF20_NNLO_EIG -LHE, id = 910, group = HERAPDF20_NNLO_EIG, Member 18 of sets HERAPDF20_NNLO_EIG -LHE, id = 911, group = HERAPDF20_NNLO_EIG, Member 19 of sets HERAPDF20_NNLO_EIG -LHE, id = 912, group = HERAPDF20_NNLO_EIG, Member 20 of sets HERAPDF20_NNLO_EIG -LHE, id = 913, group = HERAPDF20_NNLO_EIG, Member 21 of sets HERAPDF20_NNLO_EIG -LHE, id = 914, group = HERAPDF20_NNLO_EIG, Member 22 of sets HERAPDF20_NNLO_EIG -LHE, id = 915, group = HERAPDF20_NNLO_EIG, Member 23 of sets HERAPDF20_NNLO_EIG -LHE, id = 916, group = HERAPDF20_NNLO_EIG, Member 24 of sets HERAPDF20_NNLO_EIG -LHE, id = 917, group = HERAPDF20_NNLO_EIG, Member 25 of sets HERAPDF20_NNLO_EIG -LHE, id = 918, group = HERAPDF20_NNLO_EIG, Member 26 of sets HERAPDF20_NNLO_EIG -LHE, id = 919, group = HERAPDF20_NNLO_EIG, Member 27 of sets HERAPDF20_NNLO_EIG -LHE, id = 920, group = HERAPDF20_NNLO_EIG, Member 28 of sets HERAPDF20_NNLO_EIG -LHE, id = 921, group = HERAPDF20_NNLO_VAR, Member 0 of sets HERAPDF20_NNLO_VAR -LHE, id = 922, group = HERAPDF20_NNLO_VAR, Member 1 of sets HERAPDF20_NNLO_VAR -LHE, id = 923, group = HERAPDF20_NNLO_VAR, Member 2 of sets HERAPDF20_NNLO_VAR -LHE, id = 924, group = HERAPDF20_NNLO_VAR, Member 3 of sets HERAPDF20_NNLO_VAR -LHE, id = 925, group = HERAPDF20_NNLO_VAR, Member 4 of sets HERAPDF20_NNLO_VAR -LHE, id = 926, group = HERAPDF20_NNLO_VAR, Member 5 of sets HERAPDF20_NNLO_VAR -LHE, id = 927, group = HERAPDF20_NNLO_VAR, Member 6 of sets HERAPDF20_NNLO_VAR -LHE, id = 928, group = HERAPDF20_NNLO_VAR, Member 7 of sets HERAPDF20_NNLO_VAR -LHE, id = 929, group = HERAPDF20_NNLO_VAR, Member 8 of sets HERAPDF20_NNLO_VAR -LHE, id = 930, group = HERAPDF20_NNLO_VAR, Member 9 of sets HERAPDF20_NNLO_VAR -LHE, id = 931, group = HERAPDF20_NNLO_VAR, Member 10 of sets HERAPDF20_NNLO_VAR -LHE, id = 932, group = HERAPDF20_NNLO_VAR, Member 11 of sets HERAPDF20_NNLO_VAR -LHE, id = 933, group = HERAPDF20_NNLO_VAR, Member 12 of sets HERAPDF20_NNLO_VAR -LHE, id = 934, group = HERAPDF20_NNLO_VAR, Member 13 of sets HERAPDF20_NNLO_VAR -LHE, id = 935, group = CT14qed_inc_proton, Member 0 of sets CT14qed_inc_proton -LHE, id = 936, group = CT14qed_inc_proton, Member 1 of sets CT14qed_inc_proton -LHE, id = 937, group = CT14qed_inc_proton, Member 2 of sets CT14qed_inc_proton -LHE, id = 938, group = CT14qed_inc_proton, Member 3 of sets CT14qed_inc_proton -LHE, id = 939, group = CT14qed_inc_proton, Member 4 of sets CT14qed_inc_proton -LHE, id = 940, group = CT14qed_inc_proton, Member 5 of sets CT14qed_inc_proton -LHE, id = 941, group = CT14qed_inc_proton, Member 6 of sets CT14qed_inc_proton -LHE, id = 942, group = CT14qed_inc_proton, Member 7 of sets CT14qed_inc_proton -LHE, id = 943, group = CT14qed_inc_proton, Member 8 of sets CT14qed_inc_proton -LHE, id = 944, group = CT14qed_inc_proton, Member 9 of sets CT14qed_inc_proton -LHE, id = 945, group = CT14qed_inc_proton, Member 10 of sets CT14qed_inc_proton -LHE, id = 946, group = CT14qed_inc_proton, Member 11 of sets CT14qed_inc_proton -LHE, id = 947, group = CT14qed_inc_proton, Member 12 of sets CT14qed_inc_proton -LHE, id = 948, group = CT14qed_inc_proton, Member 13 of sets CT14qed_inc_proton -LHE, id = 949, group = CT14qed_inc_proton, Member 14 of sets CT14qed_inc_proton -LHE, id = 950, group = CT14qed_inc_proton, Member 15 of sets CT14qed_inc_proton -LHE, id = 951, group = CT14qed_inc_proton, Member 16 of sets CT14qed_inc_proton -LHE, id = 952, group = CT14qed_inc_proton, Member 17 of sets CT14qed_inc_proton -LHE, id = 953, group = CT14qed_inc_proton, Member 18 of sets CT14qed_inc_proton -LHE, id = 954, group = CT14qed_inc_proton, Member 19 of sets CT14qed_inc_proton -LHE, id = 955, group = CT14qed_inc_proton, Member 20 of sets CT14qed_inc_proton -LHE, id = 956, group = CT14qed_inc_proton, Member 21 of sets CT14qed_inc_proton -LHE, id = 957, group = CT14qed_inc_proton, Member 22 of sets CT14qed_inc_proton -LHE, id = 958, group = CT14qed_inc_proton, Member 23 of sets CT14qed_inc_proton -LHE, id = 959, group = CT14qed_inc_proton, Member 24 of sets CT14qed_inc_proton -LHE, id = 960, group = CT14qed_inc_proton, Member 25 of sets CT14qed_inc_proton -LHE, id = 961, group = CT14qed_inc_proton, Member 26 of sets CT14qed_inc_proton -LHE, id = 962, group = CT14qed_inc_proton, Member 27 of sets CT14qed_inc_proton -LHE, id = 963, group = CT14qed_inc_proton, Member 28 of sets CT14qed_inc_proton -LHE, id = 964, group = CT14qed_inc_proton, Member 29 of sets CT14qed_inc_proton -LHE, id = 965, group = CT14qed_inc_proton, Member 30 of sets CT14qed_inc_proton -LHE, id = 966, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 0 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 967, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 1 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 968, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 2 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 969, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 3 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 970, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 4 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 971, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 5 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 972, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 6 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 973, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 7 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 974, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 8 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 975, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 9 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 976, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 10 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 977, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 11 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 978, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 12 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 979, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 13 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 980, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 14 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 981, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 15 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 982, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 16 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 983, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 17 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 984, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 18 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 985, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 19 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 986, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 20 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 987, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 21 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 988, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 22 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 989, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 23 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 990, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 24 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 991, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 25 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 992, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 26 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 993, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 27 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 994, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 28 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 995, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 29 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 996, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 30 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 997, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 31 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 998, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 32 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 999, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 33 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1000, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 34 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1001, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 35 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1002, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 36 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1003, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 37 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1004, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 38 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1005, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 39 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1006, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 40 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1007, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 41 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1008, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 42 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1009, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 43 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1010, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 44 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1011, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 45 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1012, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 46 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1013, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 47 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1014, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 48 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1015, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 49 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1016, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 50 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1017, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 51 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1018, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 52 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1019, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 53 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1020, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 54 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1021, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 55 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1022, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 56 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1023, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 57 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1024, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 58 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1025, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 59 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1026, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 60 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1027, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 61 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1028, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 62 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1029, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 63 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1030, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 64 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1031, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 65 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1032, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 66 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1033, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 67 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1034, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 68 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1035, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 69 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1036, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 70 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1037, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 71 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1038, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 72 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1039, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 73 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1040, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 74 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1041, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 75 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1042, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 76 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1043, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 77 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1044, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 78 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1045, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 79 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1046, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 80 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1047, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 81 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1048, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 82 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1049, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 83 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1050, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 84 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1051, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 85 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1052, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 86 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1053, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 87 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1054, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 88 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1055, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 89 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1056, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 90 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1057, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 91 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1058, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 92 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1059, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 93 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1060, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 94 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1061, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 95 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1062, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 96 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1063, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 97 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1064, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 98 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1065, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 99 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1066, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 100 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1067, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 101 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1068, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 102 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1069, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 103 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1070, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 104 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1071, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 105 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1072, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 106 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1073, group = LUXqed17_plus_PDF4LHC15_nnlo_100, Member 107 of sets LUXqed17_plus_PDF4LHC15_nnlo_100 -LHE, id = 1074, group = NNPDF30_nlo_nf_5_pdfas, Member 0 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1075, group = NNPDF30_nlo_nf_5_pdfas, Member 1 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1076, group = NNPDF30_nlo_nf_5_pdfas, Member 2 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1077, group = NNPDF30_nlo_nf_5_pdfas, Member 3 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1078, group = NNPDF30_nlo_nf_5_pdfas, Member 4 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1079, group = NNPDF30_nlo_nf_5_pdfas, Member 5 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1080, group = NNPDF30_nlo_nf_5_pdfas, Member 6 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1081, group = NNPDF30_nlo_nf_5_pdfas, Member 7 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1082, group = NNPDF30_nlo_nf_5_pdfas, Member 8 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1083, group = NNPDF30_nlo_nf_5_pdfas, Member 9 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1084, group = NNPDF30_nlo_nf_5_pdfas, Member 10 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1085, group = NNPDF30_nlo_nf_5_pdfas, Member 11 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1086, group = NNPDF30_nlo_nf_5_pdfas, Member 12 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1087, group = NNPDF30_nlo_nf_5_pdfas, Member 13 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1088, group = NNPDF30_nlo_nf_5_pdfas, Member 14 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1089, group = NNPDF30_nlo_nf_5_pdfas, Member 15 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1090, group = NNPDF30_nlo_nf_5_pdfas, Member 16 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1091, group = NNPDF30_nlo_nf_5_pdfas, Member 17 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1092, group = NNPDF30_nlo_nf_5_pdfas, Member 18 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1093, group = NNPDF30_nlo_nf_5_pdfas, Member 19 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1094, group = NNPDF30_nlo_nf_5_pdfas, Member 20 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1095, group = NNPDF30_nlo_nf_5_pdfas, Member 21 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1096, group = NNPDF30_nlo_nf_5_pdfas, Member 22 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1097, group = NNPDF30_nlo_nf_5_pdfas, Member 23 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1098, group = NNPDF30_nlo_nf_5_pdfas, Member 24 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1099, group = NNPDF30_nlo_nf_5_pdfas, Member 25 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1100, group = NNPDF30_nlo_nf_5_pdfas, Member 26 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1101, group = NNPDF30_nlo_nf_5_pdfas, Member 27 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1102, group = NNPDF30_nlo_nf_5_pdfas, Member 28 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1103, group = NNPDF30_nlo_nf_5_pdfas, Member 29 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1104, group = NNPDF30_nlo_nf_5_pdfas, Member 30 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1105, group = NNPDF30_nlo_nf_5_pdfas, Member 31 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1106, group = NNPDF30_nlo_nf_5_pdfas, Member 32 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1107, group = NNPDF30_nlo_nf_5_pdfas, Member 33 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1108, group = NNPDF30_nlo_nf_5_pdfas, Member 34 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1109, group = NNPDF30_nlo_nf_5_pdfas, Member 35 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1110, group = NNPDF30_nlo_nf_5_pdfas, Member 36 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1111, group = NNPDF30_nlo_nf_5_pdfas, Member 37 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1112, group = NNPDF30_nlo_nf_5_pdfas, Member 38 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1113, group = NNPDF30_nlo_nf_5_pdfas, Member 39 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1114, group = NNPDF30_nlo_nf_5_pdfas, Member 40 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1115, group = NNPDF30_nlo_nf_5_pdfas, Member 41 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1116, group = NNPDF30_nlo_nf_5_pdfas, Member 42 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1117, group = NNPDF30_nlo_nf_5_pdfas, Member 43 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1118, group = NNPDF30_nlo_nf_5_pdfas, Member 44 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1119, group = NNPDF30_nlo_nf_5_pdfas, Member 45 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1120, group = NNPDF30_nlo_nf_5_pdfas, Member 46 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1121, group = NNPDF30_nlo_nf_5_pdfas, Member 47 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1122, group = NNPDF30_nlo_nf_5_pdfas, Member 48 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1123, group = NNPDF30_nlo_nf_5_pdfas, Member 49 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1124, group = NNPDF30_nlo_nf_5_pdfas, Member 50 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1125, group = NNPDF30_nlo_nf_5_pdfas, Member 51 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1126, group = NNPDF30_nlo_nf_5_pdfas, Member 52 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1127, group = NNPDF30_nlo_nf_5_pdfas, Member 53 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1128, group = NNPDF30_nlo_nf_5_pdfas, Member 54 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1129, group = NNPDF30_nlo_nf_5_pdfas, Member 55 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1130, group = NNPDF30_nlo_nf_5_pdfas, Member 56 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1131, group = NNPDF30_nlo_nf_5_pdfas, Member 57 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1132, group = NNPDF30_nlo_nf_5_pdfas, Member 58 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1133, group = NNPDF30_nlo_nf_5_pdfas, Member 59 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1134, group = NNPDF30_nlo_nf_5_pdfas, Member 60 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1135, group = NNPDF30_nlo_nf_5_pdfas, Member 61 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1136, group = NNPDF30_nlo_nf_5_pdfas, Member 62 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1137, group = NNPDF30_nlo_nf_5_pdfas, Member 63 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1138, group = NNPDF30_nlo_nf_5_pdfas, Member 64 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1139, group = NNPDF30_nlo_nf_5_pdfas, Member 65 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1140, group = NNPDF30_nlo_nf_5_pdfas, Member 66 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1141, group = NNPDF30_nlo_nf_5_pdfas, Member 67 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1142, group = NNPDF30_nlo_nf_5_pdfas, Member 68 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1143, group = NNPDF30_nlo_nf_5_pdfas, Member 69 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1144, group = NNPDF30_nlo_nf_5_pdfas, Member 70 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1145, group = NNPDF30_nlo_nf_5_pdfas, Member 71 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1146, group = NNPDF30_nlo_nf_5_pdfas, Member 72 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1147, group = NNPDF30_nlo_nf_5_pdfas, Member 73 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1148, group = NNPDF30_nlo_nf_5_pdfas, Member 74 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1149, group = NNPDF30_nlo_nf_5_pdfas, Member 75 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1150, group = NNPDF30_nlo_nf_5_pdfas, Member 76 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1151, group = NNPDF30_nlo_nf_5_pdfas, Member 77 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1152, group = NNPDF30_nlo_nf_5_pdfas, Member 78 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1153, group = NNPDF30_nlo_nf_5_pdfas, Member 79 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1154, group = NNPDF30_nlo_nf_5_pdfas, Member 80 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1155, group = NNPDF30_nlo_nf_5_pdfas, Member 81 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1156, group = NNPDF30_nlo_nf_5_pdfas, Member 82 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1157, group = NNPDF30_nlo_nf_5_pdfas, Member 83 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1158, group = NNPDF30_nlo_nf_5_pdfas, Member 84 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1159, group = NNPDF30_nlo_nf_5_pdfas, Member 85 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1160, group = NNPDF30_nlo_nf_5_pdfas, Member 86 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1161, group = NNPDF30_nlo_nf_5_pdfas, Member 87 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1162, group = NNPDF30_nlo_nf_5_pdfas, Member 88 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1163, group = NNPDF30_nlo_nf_5_pdfas, Member 89 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1164, group = NNPDF30_nlo_nf_5_pdfas, Member 90 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1165, group = NNPDF30_nlo_nf_5_pdfas, Member 91 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1166, group = NNPDF30_nlo_nf_5_pdfas, Member 92 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1167, group = NNPDF30_nlo_nf_5_pdfas, Member 93 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1168, group = NNPDF30_nlo_nf_5_pdfas, Member 94 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1169, group = NNPDF30_nlo_nf_5_pdfas, Member 95 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1170, group = NNPDF30_nlo_nf_5_pdfas, Member 96 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1171, group = NNPDF30_nlo_nf_5_pdfas, Member 97 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1172, group = NNPDF30_nlo_nf_5_pdfas, Member 98 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1173, group = NNPDF30_nlo_nf_5_pdfas, Member 99 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1174, group = NNPDF30_nlo_nf_5_pdfas, Member 100 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1175, group = NNPDF30_nlo_nf_5_pdfas, Member 101 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1176, group = NNPDF30_nlo_nf_5_pdfas, Member 102 of sets NNPDF30_nlo_nf_5_pdfas -LHE, id = 1177, group = NNPDF30_nnlo_nf_5_pdfas, Member 0 of sets NNPDF30_nnlo_nf_5_pdfas -LHE, id = 1178, group = NNPDF31_lo_as_0118, Member 0 of sets NNPDF31_lo_as_0118 -LHE, id = 1179, group = NNPDF30_lo_as_0118, Member 0 of sets NNPDF30_lo_as_0118 -LHE, id = 1180, group = NNPDF30_lo_as_0130, Member 0 of sets NNPDF30_lo_as_0130 -Baseline -isrRedHi -fsrRedHi -isrRedLo -fsrRedLo -isrDefHi -fsrDefHi -isrDefLo -fsrDefLo -isrConHi -fsrConHi -isrConLo -fsrConLo -fsr_G2GG_muR_dn -fsr_G2GG_muR_up -fsr_G2QQ_muR_dn -fsr_G2QQ_muR_up -fsr_Q2QG_muR_dn -fsr_Q2QG_muR_up -fsr_X2XG_muR_dn -fsr_X2XG_muR_up -fsr_G2GG_cNS_dn -fsr_G2GG_cNS_up -fsr_G2QQ_cNS_dn -fsr_G2QQ_cNS_up -fsr_Q2QG_cNS_dn -fsr_Q2QG_cNS_up -fsr_X2XG_cNS_dn -fsr_X2XG_cNS_up -isr_G2GG_muR_dn -isr_G2GG_muR_up -isr_G2QQ_muR_dn -isr_G2QQ_muR_up -isr_Q2QG_muR_dn -isr_Q2QG_muR_up -isr_X2XG_muR_dn -isr_X2XG_muR_up -isr_G2GG_cNS_dn -isr_G2GG_cNS_up -isr_G2QQ_cNS_dn -isr_G2QQ_cNS_up -isr_Q2QG_cNS_dn -isr_Q2QG_cNS_up -isr_X2XG_cNS_dn -isr_X2XG_cNS_up From c5de61f3a0f2cdcc37674f09e873fab7de3c08fa Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 11 Aug 2020 11:47:17 +0200 Subject: [PATCH 126/186] Fix parsing of PartonShower name in GenWeights --- GeneratorInterface/Core/src/WeightHelper.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 790b5f8f84b8c..3883a3c3a93a9 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -160,10 +160,10 @@ namespace gen { void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight, int index) { auto& psGroup = dynamic_cast(weightGroups_[index]); bool isUp = true; - std::string subName = searchString("up", weight.id); + std::string subName = searchString("up", weight.content); if (subName.empty()) { isUp = false; - subName = searchString("down", weight.id); + subName = searchString("down", weight.content); } psGroup.updateWeight(weight.index, weight.id, subName, isUp); } From 8357fffbfb3c6e65cf3c5eb06a8aa34c26b2bf03 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 11 Aug 2020 17:04:35 +0200 Subject: [PATCH 127/186] Add basic MEParam weight functionality --- .../Core/interface/WeightHelper.h | 5 ++++- GeneratorInterface/Core/src/WeightHelper.cc | 21 +++++++++++++------ .../interface/MEParamWeightGroupInfo.h | 10 +++++++++ .../src/MEParamWeightGroupInfo.cc | 14 +++++++++++++ 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 38523dfb91504..7204180591b08 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -49,6 +49,7 @@ namespace gen { bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight, int index); + void updateMEParamInfo(const ParsedWeight& weight, int index); void updatePdfInfo(const ParsedWeight& weight, int index); void updatePartonShowerInfo(const ParsedWeight& weight, int index); void cleanupOrphanCentralWeight(); @@ -66,7 +67,9 @@ namespace gen { {"dyn", {"DYN_SCALE"}}, {"dyn_name", {"dyn_scale_choice"}}, {"up", {"_up", "Hi"}}, - {"down", {"_dn", "Lo"}}}; + {"down", {"_dn", "Lo"}}, + {"me_variation", {"mass", "sthw2", "width"}}, + }; void printWeights(); std::unique_ptr buildGroup(ParsedWeight& weight); void buildGroups(); diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 3883a3c3a93a9..4051bc2fbb413 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -21,7 +21,7 @@ namespace gen { const std::string& name = boost::to_lower_copy(weight.groupname); // But "Nominal" and "Baseline" weights in the PS group return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos || - name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; + name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { @@ -41,7 +41,9 @@ namespace gen { } bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { - return (weight.groupname.find("mg_reweighting") != std::string::npos); + return (weight.groupname.find("mg_reweighting") != std::string::npos || + weight.groupname.find("variation") != std::string::npos); + // variation used for blanket of all variations, might need to change } std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { @@ -168,6 +170,12 @@ namespace gen { psGroup.updateWeight(weight.index, weight.id, subName, isUp); } + void WeightHelper::updateMEParamInfo(const ParsedWeight& weight, int index) { + auto& meGroup = dynamic_cast(weightGroups_[index]); + std::string variation = searchAttributes("me_variation", weight); + meGroup.updateWeight(weight.index, weight.id, std::stof(variation)); + } + // TODO: Could probably recycle this code better std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); @@ -317,12 +325,10 @@ namespace gen { for (auto& weight : parsedWeights_) { if (weight.wgtGroup_idx < static_cast(weightGroups_.size())) { currentGroupIdx = weight.wgtGroup_idx; - } - else if ((currentGroupIdx+1) == weight.wgtGroup_idx) { + } else if ((currentGroupIdx + 1) == weight.wgtGroup_idx) { weightGroups_.push_back(*buildGroup(weight)); currentGroupIdx = weight.wgtGroup_idx; - } - else + } else throw std::range_error("Invalid group index " + currentGroupIdx); // split PDF groups @@ -341,6 +347,9 @@ namespace gen { updatePdfInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPartonShowerWeights) updatePartonShowerInfo(weight, currentGroupIdx); + else if (group.weightType() == gen::WeightType::kMEParamWeights) { + updateMEParamInfo(weight, currentGroupIdx); + } } cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 371debb0fa14a..9adef0c3683d9 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -14,6 +14,16 @@ namespace gen { virtual ~MEParamWeightGroupInfo() override {} void copy(const MEParamWeightGroupInfo& other); virtual MEParamWeightGroupInfo* clone() const override; + int getCentralIndex() { return centralIdx; } + int getVariationIndex(int sig) { return massValue.at(numSigma + sig).second; } + double getVariationValue(int sig) { return massValue.at(numSigma + sig).first; } + void updateWeight(int globalIndex, std::string id, double weight); + + private: + std::vector> massValue; + double central; + int centralIdx; + int numSigma; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index 9174534d41113..daae9c85b9dd0 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -4,4 +4,18 @@ namespace gen { void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo& other) { WeightGroupInfo::copy(other); } MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { return new MEParamWeightGroupInfo(*this); } + + void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, double weight) { + size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; + auto lower = + std::lower_bound(massValue.begin(), massValue.end(), std::make_pair(weight, std::numeric_limits::min())); + massValue.insert(lower, std::make_pair(weight, localIndex)); + isWellFormed_ = massValue.size() % 2 == 1; + if (isWellFormed_) { + numSigma = massValue.size() / 2; + central = massValue.at(centralIdx).first; + centralIdx = massValue.at(centralIdx).second; + } + } + } // namespace gen From 7a76898ab1ab8d1684efe3f9faade8df15f8102e Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Fri, 14 Aug 2020 14:30:51 +0200 Subject: [PATCH 128/186] Allow for general adding of params to vector Also fixed formating with clang --- GeneratorInterface/Core/src/LHEWeightHelper.cc | 10 +++++----- GeneratorInterface/Core/src/WeightHelper.cc | 9 ++++++++- .../interface/MEParamWeightGroupInfo.h | 3 +++ .../GeneratorProducts/src/MEParamWeightGroupInfo.cc | 5 +++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 00cd7b2ad6e6b..4044b97c689b6 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -13,9 +13,10 @@ namespace gen { parsedWeights_.clear(); if (!isConsistent() && failIfInvalidXML_) { - throw std::runtime_error( "XML in LHE is not consistent: Most likely, tags were swapped.\n" \ - "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" \ - "WARNING: the tag swapping may lead to weights associated with the incorrect group"); + throw std::runtime_error( + "XML in LHE is not consistent: Most likely, tags were swapped.\n" + "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" + "WARNING: the tag swapping may lead to weights associated with the incorrect group"); } else if (!isConsistent()) { swapHeaders(); } @@ -34,7 +35,7 @@ namespace gen { if (xmlError != 0) { std::cerr << "Error in lhe xml file" << std::endl; xmlDoc.PrintError(); - if(failIfInvalidXML_) + if (failIfInvalidXML_) throw std::runtime_error("XML is unreadable because of above error."); else return; @@ -44,7 +45,6 @@ namespace gen { int weightIndex = 0; int groupIndex = 0; - //for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { std::string groupName = ""; if (strcmp(e->Name(), "weight") == 0) { diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 4051bc2fbb413..9f8cb18d16ff6 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -173,7 +173,14 @@ namespace gen { void WeightHelper::updateMEParamInfo(const ParsedWeight& weight, int index) { auto& meGroup = dynamic_cast(weightGroups_[index]); std::string variation = searchAttributes("me_variation", weight); - meGroup.updateWeight(weight.index, weight.id, std::stof(variation)); + if (!variation.empty()) { + meGroup.updateWeight(weight.index, weight.id, std::stof(variation)); + } else { + std::vector split_content; + std::string content = boost::algorithm::trim_copy(weight.content); + boost::split(split_content, content, boost::is_any_of("\n")); + meGroup.updateWeight(weight.index, weight.id, split_content); + } } // TODO: Could probably recycle this code better diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 9adef0c3683d9..2ea53a8d32adb 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -1,6 +1,7 @@ #ifndef SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h #define SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h +#include #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { @@ -18,8 +19,10 @@ namespace gen { int getVariationIndex(int sig) { return massValue.at(numSigma + sig).second; } double getVariationValue(int sig) { return massValue.at(numSigma + sig).first; } void updateWeight(int globalIndex, std::string id, double weight); + void updateWeight(int globalIndex, std::string id, std::vector& content); private: + std::unordered_map> splitContent; std::vector> massValue; double central; int centralIdx; diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index daae9c85b9dd0..74363c38b6d91 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -18,4 +18,9 @@ namespace gen { } } + void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, std::vector& content) { + size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; + splitContent[localIndex] = content; + } + } // namespace gen From 70ed2490e9479a24d56c5fad3c6bc77b96b98b8b Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 11 Aug 2020 11:47:17 +0200 Subject: [PATCH 129/186] Fix parsing of PartonShower name in GenWeights Add basic MEParam weight functionality Allow for general adding of params to vector Also fixed formating with clang --- .../Core/interface/WeightHelper.h | 5 ++- .../Core/src/LHEWeightHelper.cc | 10 +++--- GeneratorInterface/Core/src/WeightHelper.cc | 32 ++++++++++++++----- .../interface/MEParamWeightGroupInfo.h | 13 ++++++++ .../src/MEParamWeightGroupInfo.cc | 19 +++++++++++ 5 files changed, 65 insertions(+), 14 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 38523dfb91504..7204180591b08 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -49,6 +49,7 @@ namespace gen { bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight, int index); + void updateMEParamInfo(const ParsedWeight& weight, int index); void updatePdfInfo(const ParsedWeight& weight, int index); void updatePartonShowerInfo(const ParsedWeight& weight, int index); void cleanupOrphanCentralWeight(); @@ -66,7 +67,9 @@ namespace gen { {"dyn", {"DYN_SCALE"}}, {"dyn_name", {"dyn_scale_choice"}}, {"up", {"_up", "Hi"}}, - {"down", {"_dn", "Lo"}}}; + {"down", {"_dn", "Lo"}}, + {"me_variation", {"mass", "sthw2", "width"}}, + }; void printWeights(); std::unique_ptr buildGroup(ParsedWeight& weight); void buildGroups(); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 00cd7b2ad6e6b..4044b97c689b6 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -13,9 +13,10 @@ namespace gen { parsedWeights_.clear(); if (!isConsistent() && failIfInvalidXML_) { - throw std::runtime_error( "XML in LHE is not consistent: Most likely, tags were swapped.\n" \ - "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" \ - "WARNING: the tag swapping may lead to weights associated with the incorrect group"); + throw std::runtime_error( + "XML in LHE is not consistent: Most likely, tags were swapped.\n" + "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" + "WARNING: the tag swapping may lead to weights associated with the incorrect group"); } else if (!isConsistent()) { swapHeaders(); } @@ -34,7 +35,7 @@ namespace gen { if (xmlError != 0) { std::cerr << "Error in lhe xml file" << std::endl; xmlDoc.PrintError(); - if(failIfInvalidXML_) + if (failIfInvalidXML_) throw std::runtime_error("XML is unreadable because of above error."); else return; @@ -44,7 +45,6 @@ namespace gen { int weightIndex = 0; int groupIndex = 0; - //for (auto* e = root->FirstChildElement(); e != nullptr; e = e->NextSiblingElement()) { for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { std::string groupName = ""; if (strcmp(e->Name(), "weight") == 0) { diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 790b5f8f84b8c..9f8cb18d16ff6 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -21,7 +21,7 @@ namespace gen { const std::string& name = boost::to_lower_copy(weight.groupname); // But "Nominal" and "Baseline" weights in the PS group return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos || - name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; + name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { @@ -41,7 +41,9 @@ namespace gen { } bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { - return (weight.groupname.find("mg_reweighting") != std::string::npos); + return (weight.groupname.find("mg_reweighting") != std::string::npos || + weight.groupname.find("variation") != std::string::npos); + // variation used for blanket of all variations, might need to change } std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { @@ -160,14 +162,27 @@ namespace gen { void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight, int index) { auto& psGroup = dynamic_cast(weightGroups_[index]); bool isUp = true; - std::string subName = searchString("up", weight.id); + std::string subName = searchString("up", weight.content); if (subName.empty()) { isUp = false; - subName = searchString("down", weight.id); + subName = searchString("down", weight.content); } psGroup.updateWeight(weight.index, weight.id, subName, isUp); } + void WeightHelper::updateMEParamInfo(const ParsedWeight& weight, int index) { + auto& meGroup = dynamic_cast(weightGroups_[index]); + std::string variation = searchAttributes("me_variation", weight); + if (!variation.empty()) { + meGroup.updateWeight(weight.index, weight.id, std::stof(variation)); + } else { + std::vector split_content; + std::string content = boost::algorithm::trim_copy(weight.content); + boost::split(split_content, content, boost::is_any_of("\n")); + meGroup.updateWeight(weight.index, weight.id, split_content); + } + } + // TODO: Could probably recycle this code better std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); @@ -317,12 +332,10 @@ namespace gen { for (auto& weight : parsedWeights_) { if (weight.wgtGroup_idx < static_cast(weightGroups_.size())) { currentGroupIdx = weight.wgtGroup_idx; - } - else if ((currentGroupIdx+1) == weight.wgtGroup_idx) { + } else if ((currentGroupIdx + 1) == weight.wgtGroup_idx) { weightGroups_.push_back(*buildGroup(weight)); currentGroupIdx = weight.wgtGroup_idx; - } - else + } else throw std::range_error("Invalid group index " + currentGroupIdx); // split PDF groups @@ -341,6 +354,9 @@ namespace gen { updatePdfInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPartonShowerWeights) updatePartonShowerInfo(weight, currentGroupIdx); + else if (group.weightType() == gen::WeightType::kMEParamWeights) { + updateMEParamInfo(weight, currentGroupIdx); + } } cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 371debb0fa14a..2ea53a8d32adb 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -1,6 +1,7 @@ #ifndef SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h #define SimDataFormats_GeneratorProducts_MEParamWeightGroupInfo_h +#include #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { @@ -14,6 +15,18 @@ namespace gen { virtual ~MEParamWeightGroupInfo() override {} void copy(const MEParamWeightGroupInfo& other); virtual MEParamWeightGroupInfo* clone() const override; + int getCentralIndex() { return centralIdx; } + int getVariationIndex(int sig) { return massValue.at(numSigma + sig).second; } + double getVariationValue(int sig) { return massValue.at(numSigma + sig).first; } + void updateWeight(int globalIndex, std::string id, double weight); + void updateWeight(int globalIndex, std::string id, std::vector& content); + + private: + std::unordered_map> splitContent; + std::vector> massValue; + double central; + int centralIdx; + int numSigma; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index 9174534d41113..74363c38b6d91 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -4,4 +4,23 @@ namespace gen { void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo& other) { WeightGroupInfo::copy(other); } MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { return new MEParamWeightGroupInfo(*this); } + + void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, double weight) { + size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; + auto lower = + std::lower_bound(massValue.begin(), massValue.end(), std::make_pair(weight, std::numeric_limits::min())); + massValue.insert(lower, std::make_pair(weight, localIndex)); + isWellFormed_ = massValue.size() % 2 == 1; + if (isWellFormed_) { + numSigma = massValue.size() / 2; + central = massValue.at(centralIdx).first; + centralIdx = massValue.at(centralIdx).second; + } + } + + void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, std::vector& content) { + size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; + splitContent[localIndex] = content; + } + } // namespace gen From a671e7d5ec735864fa919bf75ac654040a039b3d Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 19 Aug 2020 15:42:06 +0200 Subject: [PATCH 130/186] Fix failure in mass weights --- .../Core/interface/WeightHelper.h | 3 ++ .../Core/src/LHEWeightHelper.cc | 21 +++++++++-- GeneratorInterface/Core/src/WeightHelper.cc | 37 +++++++++++++++---- .../interface/MEParamWeightGroupInfo.h | 16 ++++---- .../interface/WeightGroupInfo.h | 5 +++ .../src/MEParamWeightGroupInfo.cc | 23 +++++++----- .../GeneratorProducts/src/WeightGroupInfo.cc | 17 +++++++++ 7 files changed, 94 insertions(+), 28 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 7204180591b08..1cd9e58d06fa2 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -38,6 +38,9 @@ namespace gen { int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); protected: + // TODO: Make this only print from one thread a la + // https://github.com/kdlong/cmssw/blob/master/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc#L1069 + bool debug_ = true; std::string model_; std::vector parsedWeights_; std::map currWeightAttributeMap_; diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 4044b97c689b6..e9a7515d123e3 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -7,7 +7,9 @@ using namespace tinyxml2; namespace gen { - void LHEWeightHelper::setHeaderLines(std::vector headerLines) { headerLines_ = headerLines; } + void LHEWeightHelper::setHeaderLines(std::vector headerLines) { + headerLines_ = headerLines; + } void LHEWeightHelper::parseWeights() { parsedWeights_.clear(); @@ -23,6 +25,8 @@ namespace gen { tinyxml2::XMLDocument xmlDoc; std::string fullHeader = boost::algorithm::join(headerLines_, ""); + if (debug_) + std::cout << "Full header is \n" << fullHeader << std::endl; int xmlError = xmlDoc.Parse(fullHeader.c_str()); // in case of > instead of < @@ -33,7 +37,7 @@ namespace gen { } // error persists (how to handle error?) if (xmlError != 0) { - std::cerr << "Error in lhe xml file" << std::endl; + std::cerr << "WARNING: Error in parsing XML of LHE weight header!" << std::endl; xmlDoc.PrintError(); if (failIfInvalidXML_) throw std::runtime_error("XML is unreadable because of above error."); @@ -46,9 +50,14 @@ namespace gen { int weightIndex = 0; int groupIndex = 0; for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { + if (debug_) + std::cout << "XML element is " << e->Name() << std::endl; std::string groupName = ""; if (strcmp(e->Name(), "weight") == 0) { + if (debug_) + std::cout << "Found weight unmatched to group\n"; // we are here if there is a weight that does not belong to any group + // TODO: Recylce code better between here when a weight is found in a group std::string text = ""; if (e->GetText()) { text = e->GetText(); @@ -58,6 +67,8 @@ namespace gen { attributes[att->Name()] = att->Value(); parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); } else if (strcmp(e->Name(), "weightgroup") == 0) { + if (debug_) + std::cout << "Found a weight group.\n"; // to deal wiht files with "id" instead of "name" for (auto nameAtt : nameAlts_) { if (e->Attribute(nameAtt.c_str())) { @@ -66,6 +77,7 @@ namespace gen { } } if (groupName.empty()) { + // TODO: Need a better failure mode throw std::runtime_error("couldn't find groupname"); } // May remove this, very specific error @@ -75,6 +87,8 @@ namespace gen { for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; inner = inner->NextSiblingElement("weight")) { // we are here if there is a weight in a weightgroup + if (debug_) + std::cout << "Found a weight inside the group. Content is " << inner->GetText() << " group index is " << groupIndex << std::endl; std::string text = ""; if (inner->GetText()) text = inner->GetText(); @@ -83,7 +97,8 @@ namespace gen { attributes[att->Name()] = att->Value(); parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); } - } + } else + std::cout << "Found an invalid entry\n"; groupIndex++; } buildGroups(); diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 9f8cb18d16ff6..ee42af8a0c55b 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -171,6 +171,7 @@ namespace gen { } void WeightHelper::updateMEParamInfo(const ParsedWeight& weight, int index) { + std::cout << "Access by index " << index << std::endl; auto& meGroup = dynamic_cast(weightGroups_[index]); std::string variation = searchAttributes("me_variation", weight); if (!variation.empty()) { @@ -240,6 +241,8 @@ namespace gen { groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); auto group = weightGroups_[groupIndex]; int entry = group.weightVectorEntry(name, weightNum); + if (debug_) + std::cout << "Adding weight " << entry << " to group " << groupIndex << std::endl; product->addWeight(weight, groupIndex, entry); return groupIndex; } @@ -312,6 +315,10 @@ namespace gen { } std::unique_ptr WeightHelper::buildGroup(ParsedWeight& weight) { + if (debug_) { + std::cout << "Building group for weight group " << weight.groupname + << " weight content is " << weight.content << std::endl; + } if (isScaleWeightGroup(weight)) return std::make_unique(weight.groupname); else if (isPdfWeightGroup(weight)) @@ -328,36 +335,52 @@ namespace gen { void WeightHelper::buildGroups() { weightGroups_.clear(); - int currentGroupIdx = -1; + int currentGroupIdx = 0; + int groupOffset = 0; for (auto& weight : parsedWeights_) { - if (weight.wgtGroup_idx < static_cast(weightGroups_.size())) { - currentGroupIdx = weight.wgtGroup_idx; - } else if ((currentGroupIdx + 1) == weight.wgtGroup_idx) { + std::cout << "currentGroupIdx is " << currentGroupIdx << " groupOffset is " << groupOffset << std::endl; + std::cout << "weightGroups size is " << weightGroups_.size() << std::endl; + weight.wgtGroup_idx += groupOffset; + currentGroupIdx = weight.wgtGroup_idx; + if (debug_) + std::cout << "Building group for weight " << weight.content << " group " + << weight.groupname << " group index " << weight.wgtGroup_idx << std::endl; + + int numGroups = static_cast(weightGroups_.size()); + if (weight.wgtGroup_idx == numGroups) { + std::cout << "Adding weight\n"; weightGroups_.push_back(*buildGroup(weight)); - currentGroupIdx = weight.wgtGroup_idx; - } else + } else if (weight.wgtGroup_idx >= numGroups) throw std::range_error("Invalid group index " + currentGroupIdx); // split PDF groups + std::cout << "now weightGroups size is " << weightGroups_.size() << std::endl; if (weightGroups_[currentGroupIdx].weightType() == gen::WeightType::kPdfWeights) { auto& pdfGroup = dynamic_cast(weightGroups_[currentGroupIdx]); int lhaid = getLhapdfId(weight, pdfGroup); if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { weightGroups_.push_back(*buildGroup(weight)); + groupOffset++; } } + std::cout << "Access by index\n"; WeightGroupInfo& group = weightGroups_[currentGroupIdx]; + std::cout << "Accessed by index\n"; group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) updateScaleInfo(weight, currentGroupIdx); - else if (group.weightType() == gen::WeightType::kPdfWeights) + else if (group.weightType() == gen::WeightType::kPdfWeights) { + std::cout << "Updating pdf info\n"; updatePdfInfo(weight, currentGroupIdx); + } else if (group.weightType() == gen::WeightType::kPartonShowerWeights) updatePartonShowerInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kMEParamWeights) { + std::cout << "Updating info\n"; updateMEParamInfo(weight, currentGroupIdx); } } + std::cout << "Cleaning weights\n"; cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 2ea53a8d32adb..3cf458d795b17 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -15,18 +15,18 @@ namespace gen { virtual ~MEParamWeightGroupInfo() override {} void copy(const MEParamWeightGroupInfo& other); virtual MEParamWeightGroupInfo* clone() const override; - int getCentralIndex() { return centralIdx; } - int getVariationIndex(int sig) { return massValue.at(numSigma + sig).second; } - double getVariationValue(int sig) { return massValue.at(numSigma + sig).first; } + int getCentralIndex() { return centralIdx_; } + int getVariationIndex(int sig) { return massValue_.at(numSigma_ + sig).second; } + double getVariationValue(int sig) { return massValue_.at(numSigma_ + sig).first; } void updateWeight(int globalIndex, std::string id, double weight); void updateWeight(int globalIndex, std::string id, std::vector& content); private: - std::unordered_map> splitContent; - std::vector> massValue; - double central; - int centralIdx; - int numSigma; + std::unordered_map> splitContent_; + std::vector> massValue_; + double central_; + int centralIdx_; + int numSigma_; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 2589366d6c2f8..9db98139ec9e6 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -8,6 +8,7 @@ #include #include #include +#include namespace gen { struct WeightMetaInfo { @@ -69,6 +70,8 @@ namespace gen { void setWeightType(WeightType type) { weightType_ = type; } void setFirstId(int firstId) { firstId_ = firstId; } void setLastId(int lastId) { lastId_ = lastId; } + // Call before doing lots of searches by label + void cacheWeightIndicesByLabel(); std::string name() const { return name_; } std::string description() const { return description_; } @@ -81,6 +84,7 @@ namespace gen { // Store whether the group was fully parsed succesfully void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } bool isWellFormed() const { return isWellFormed_; } + int weightIndexFromLabel(std::string weightLabel) const; protected: bool isWellFormed_; @@ -91,6 +95,7 @@ namespace gen { std::vector idsContained_; int firstId_; int lastId_; + std::unordered_map weightLabelsToIndices_; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index 74363c38b6d91..dac017e78c5a2 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -1,4 +1,5 @@ #include "SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h" +#include namespace gen { void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo& other) { WeightGroupInfo::copy(other); } @@ -7,20 +8,22 @@ namespace gen { void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, double weight) { size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; - auto lower = - std::lower_bound(massValue.begin(), massValue.end(), std::make_pair(weight, std::numeric_limits::min())); - massValue.insert(lower, std::make_pair(weight, localIndex)); - isWellFormed_ = massValue.size() % 2 == 1; - if (isWellFormed_) { - numSigma = massValue.size() / 2; - central = massValue.at(centralIdx).first; - centralIdx = massValue.at(centralIdx).second; - } + std::cout << "Inside here. Local index is " << localIndex << std::endl; + //auto lower = + // std::lower_bound(massValue_.begin(), massValue_.end(), std::make_pair(weight, std::numeric_limits::min())); + //massValue_.insert(lower, std::make_pair(weight, localIndex)); + //std::cout << "Size of `mass is " << massValue_.size() << " centralIdx_ is " << centralIdx_ << std::endl; + //isWellFormed_ = massValue_.size() % 2 == 1; + //if (isWellFormed_) { + // numSigma_ = massValue_.size() / 2; + // central_ = massValue_.at(centralIdx_).first; + // centralIdx_ = massValue_.at(centralIdx_).second; + //} } void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, std::vector& content) { size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; - splitContent[localIndex] = content; + splitContent_[localIndex] = content; } } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 57d1d481dcdf3..b56a82caf331f 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -83,4 +83,21 @@ namespace gen { std::vector WeightGroupInfo::containedIds() const { return idsContained_; } bool WeightGroupInfo::indexInRange(int index) const { return (index <= lastId_ && index >= firstId_); } + + void WeightGroupInfo::cacheWeightIndicesByLabel() { + for (const auto& weight : idsContained_) + weightLabelsToIndices_[weight.label] = weight.localIndex; + } + + int WeightGroupInfo::weightIndexFromLabel(std::string weightLabel) const { + if (weightLabelsToIndices_.find(weightLabel) != weightLabelsToIndices_.end()) + return static_cast(weightLabelsToIndices_.at(weightLabel)); + + auto it = std::find_if(idsContained_.begin(), idsContained_.end(), + [weightLabel](const auto& w) { return weightLabel == w.label; }); + if (it == idsContained_.end()) + return -1; + return std::distance(idsContained_.begin(), it); + } + } // namespace gen From 19230f9d3cad36079d1243d4f0e3f452f97d2bec Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 20 Aug 2020 10:31:08 +0200 Subject: [PATCH 131/186] Simplify some features of PS and ME groups --- .../Core/interface/WeightHelper.h | 4 +- GeneratorInterface/Core/src/WeightHelper.cc | 61 ++++--------------- .../interface/MEParamWeightGroupInfo.h | 12 ---- .../interface/PartonShowerWeightGroupInfo.h | 12 +++- .../interface/PdfWeightGroupInfo.h | 4 +- .../interface/ScaleWeightGroupInfo.h | 2 +- .../src/MEParamWeightGroupInfo.cc | 21 ------- .../src/PartonShowerWeightGroupInfo.cc | 13 ---- .../src/PdfWeightGroupInfo.cc | 2 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 7 ++- 10 files changed, 30 insertions(+), 108 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 1cd9e58d06fa2..4e1b2b01df7c2 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -52,12 +52,10 @@ namespace gen { bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); void updateScaleInfo(const ParsedWeight& weight, int index); - void updateMEParamInfo(const ParsedWeight& weight, int index); void updatePdfInfo(const ParsedWeight& weight, int index); - void updatePartonShowerInfo(const ParsedWeight& weight, int index); void cleanupOrphanCentralWeight(); - int getLhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup); + int lhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const; std::string searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index ee42af8a0c55b..0b670f015964a 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -110,7 +110,7 @@ namespace gen { } catch (std::invalid_argument& e) { scaleGroup.setIsWellFormed(false); } - if (scaleGroup.getLhaid() == -1) { + if (scaleGroup.lhaid() == -1) { std::string lhaidText = searchAttributes("pdf", weight); try { scaleGroup.setLhaid(std::stoi(lhaidText)); @@ -120,7 +120,7 @@ namespace gen { } } - int WeightHelper::getLhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup) { + int WeightHelper::lhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup) { std::string lhaidText = searchAttributes("pdf", weight); if (!lhaidText.empty()) { try { @@ -128,8 +128,8 @@ namespace gen { } catch (std::invalid_argument& e) { pdfGroup.setIsWellFormed(false); } - } else if (pdfGroup.getLhaIds().size() > 0) { - return pdfGroup.getLhaIds().back() + 1; + } else if (pdfGroup.lhaIds().size() > 0) { + return pdfGroup.lhaIds().back() + 1; } else { return LHAPDF::lookupLHAPDFID(weight.groupname); } @@ -138,8 +138,8 @@ namespace gen { void WeightHelper::updatePdfInfo(const ParsedWeight& weight, int index) { auto& pdfGroup = dynamic_cast(weightGroups_[index]); - int lhaid = getLhapdfId(weight, pdfGroup); - if (pdfGroup.getParentLhapdfId() < 0) { + int lhaid = lhapdfId(weight, pdfGroup); + if (pdfGroup.parentLhapdfId() < 0) { int parentId = lhaid - LHAPDF::lookupPDF(lhaid).second; pdfGroup.setParentLhapdfInfo(parentId); pdfGroup.setUncertaintyType(gen::kUnknownUnc); @@ -159,31 +159,6 @@ namespace gen { pdfGroup.addLhaid(lhaid); } - void WeightHelper::updatePartonShowerInfo(const ParsedWeight& weight, int index) { - auto& psGroup = dynamic_cast(weightGroups_[index]); - bool isUp = true; - std::string subName = searchString("up", weight.content); - if (subName.empty()) { - isUp = false; - subName = searchString("down", weight.content); - } - psGroup.updateWeight(weight.index, weight.id, subName, isUp); - } - - void WeightHelper::updateMEParamInfo(const ParsedWeight& weight, int index) { - std::cout << "Access by index " << index << std::endl; - auto& meGroup = dynamic_cast(weightGroups_[index]); - std::string variation = searchAttributes("me_variation", weight); - if (!variation.empty()) { - meGroup.updateWeight(weight.index, weight.id, std::stof(variation)); - } else { - std::vector split_content; - std::string content = boost::algorithm::trim_copy(weight.content); - boost::split(split_content, content, boost::is_any_of("\n")); - meGroup.updateWeight(weight.index, weight.id, split_content); - } - } - // TODO: Could probably recycle this code better std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { auto weightProduct = std::make_unique(w0); @@ -212,7 +187,7 @@ namespace gen { if (subIt->weightType() != WeightType::kPdfWeights) continue; auto& subWeight = dynamic_cast(*subIt); - if (subWeight.nIdsContained() == 1 && subWeight.getParentLhapdfId() == baseWeight.getLhaid()) { + if (subWeight.nIdsContained() == 1 && subWeight.parentLhapdfId() == baseWeight.lhaid()) { removeList.push_back(subIt - weightGroups_.begin()); auto info = subWeight.idsContained().at(0); baseWeight.addContainedId(info.globalIndex, info.id, info.label, 1, 1); @@ -305,8 +280,8 @@ namespace gen { } else if (wgt.weightType() == gen::WeightType::kPartonShowerWeights) { auto& wgtPS = dynamic_cast(wgt); for (auto group : wgtPS.getWeightNames()) { - std::cout << group << ": up " << wgtPS.getUpIndex(group); - std::cout << " - down " << wgtPS.getDownIndex(group) << std::endl; + std::cout << group << ": up " << wgtPS.upIndex(group); + std::cout << " - down " << wgtPS.downIndex(group) << std::endl; } } if (!wgt.isWellFormed()) @@ -338,8 +313,6 @@ namespace gen { int currentGroupIdx = 0; int groupOffset = 0; for (auto& weight : parsedWeights_) { - std::cout << "currentGroupIdx is " << currentGroupIdx << " groupOffset is " << groupOffset << std::endl; - std::cout << "weightGroups size is " << weightGroups_.size() << std::endl; weight.wgtGroup_idx += groupOffset; currentGroupIdx = weight.wgtGroup_idx; if (debug_) @@ -348,39 +321,27 @@ namespace gen { int numGroups = static_cast(weightGroups_.size()); if (weight.wgtGroup_idx == numGroups) { - std::cout << "Adding weight\n"; weightGroups_.push_back(*buildGroup(weight)); } else if (weight.wgtGroup_idx >= numGroups) throw std::range_error("Invalid group index " + currentGroupIdx); // split PDF groups - std::cout << "now weightGroups size is " << weightGroups_.size() << std::endl; if (weightGroups_[currentGroupIdx].weightType() == gen::WeightType::kPdfWeights) { auto& pdfGroup = dynamic_cast(weightGroups_[currentGroupIdx]); - int lhaid = getLhapdfId(weight, pdfGroup); - if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.getParentLhapdfId() > 0) { + int lhaid = lhapdfId(weight, pdfGroup); + if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.parentLhapdfId() > 0) { weightGroups_.push_back(*buildGroup(weight)); groupOffset++; } } - std::cout << "Access by index\n"; WeightGroupInfo& group = weightGroups_[currentGroupIdx]; - std::cout << "Accessed by index\n"; group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) updateScaleInfo(weight, currentGroupIdx); else if (group.weightType() == gen::WeightType::kPdfWeights) { - std::cout << "Updating pdf info\n"; updatePdfInfo(weight, currentGroupIdx); } - else if (group.weightType() == gen::WeightType::kPartonShowerWeights) - updatePartonShowerInfo(weight, currentGroupIdx); - else if (group.weightType() == gen::WeightType::kMEParamWeights) { - std::cout << "Updating info\n"; - updateMEParamInfo(weight, currentGroupIdx); - } } - std::cout << "Cleaning weights\n"; cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 3cf458d795b17..e0668aadb60bc 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -15,18 +15,6 @@ namespace gen { virtual ~MEParamWeightGroupInfo() override {} void copy(const MEParamWeightGroupInfo& other); virtual MEParamWeightGroupInfo* clone() const override; - int getCentralIndex() { return centralIdx_; } - int getVariationIndex(int sig) { return massValue_.at(numSigma_ + sig).second; } - double getVariationValue(int sig) { return massValue_.at(numSigma_ + sig).first; } - void updateWeight(int globalIndex, std::string id, double weight); - void updateWeight(int globalIndex, std::string id, std::vector& content); - - private: - std::unordered_map> splitContent_; - std::vector> massValue_; - double central_; - int centralIdx_; - int numSigma_; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index 3bd861b0d507e..59f67ce2e3a91 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -17,10 +17,16 @@ namespace gen { virtual ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); virtual PartonShowerWeightGroupInfo *clone() const override; - void updateWeight(int globalIndex, std::string id, std::string subName, bool isUp); - size_t getUpIndex(std::string weightName) { return weightNameToUpDown[weightName].first; } - size_t getDownIndex(std::string weightName) { return weightNameToUpDown[weightName].second; } + // TODO: replace these general functions with specific ones + int upIndex(std::string weightName) { + int index = weightIndexFromLabel(weightName+"Hi"); + return index >= 0 ? index : weightIndexFromLabel(weightName+"_up"); + } + int downIndex(std::string weightName) { + int index = weightIndexFromLabel(weightName+"Low"); + return index >= 0 ? index : weightIndexFromLabel(weightName+"_dn"); + } std::vector getWeightNames() const { return weightNames; } private: diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index 43925d3ef0c0c..f04fb71ffa728 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -45,10 +45,10 @@ namespace gen { PdfUncertaintyType uncertaintyType() const { return uncertaintyType_; } bool hasAlphasVariations() const { return hasAlphasVars_; } void addLhaid(int lhaid); - std::vector& getLhaIds() { return lhaids_; } + std::vector& lhaIds() { return lhaids_; } bool isIdInParentSet(int lhaid) const { return parentLhapdfId_ == parentLhapdfId(lhaid); } - int getParentLhapdfId() const { return parentLhapdfId_; } + int parentLhapdfId() const { return parentLhapdfId_; } void setParentLhapdfInfo(int lhaid); // need to remove diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 55c0e97756218..e5130b9d62c36 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -38,7 +38,7 @@ namespace gen { void setMuRMuFIndex( int globalIndex, std::string id, float muR, float muF, size_t dynNum = -1, std::string dynName = ""); void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); - int getLhaid() { return lhaid_; } + int lhaid() { return lhaid_; } void setLhaid(int lhaid) { lhaid_ = lhaid; } // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); diff --git a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc index dac017e78c5a2..b01218cca435c 100644 --- a/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc @@ -5,25 +5,4 @@ namespace gen { void MEParamWeightGroupInfo::copy(const MEParamWeightGroupInfo& other) { WeightGroupInfo::copy(other); } MEParamWeightGroupInfo* MEParamWeightGroupInfo::clone() const { return new MEParamWeightGroupInfo(*this); } - - void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, double weight) { - size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; - std::cout << "Inside here. Local index is " << localIndex << std::endl; - //auto lower = - // std::lower_bound(massValue_.begin(), massValue_.end(), std::make_pair(weight, std::numeric_limits::min())); - //massValue_.insert(lower, std::make_pair(weight, localIndex)); - //std::cout << "Size of `mass is " << massValue_.size() << " centralIdx_ is " << centralIdx_ << std::endl; - //isWellFormed_ = massValue_.size() % 2 == 1; - //if (isWellFormed_) { - // numSigma_ = massValue_.size() / 2; - // central_ = massValue_.at(centralIdx_).first; - // centralIdx_ = massValue_.at(centralIdx_).second; - //} - } - - void MEParamWeightGroupInfo::updateWeight(int globalIndex, std::string id, std::vector& content) { - size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; - splitContent_[localIndex] = content; - } - } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 46bd94298a06c..eaa004686f281 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -6,17 +6,4 @@ namespace gen { PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { return new PartonShowerWeightGroupInfo(*this); } - - void PartonShowerWeightGroupInfo::updateWeight(int globalIndex, std::string id, std::string subName, bool isUp) { - size_t localIndex = weightMetaInfoByGlobalIndex(id, globalIndex).localIndex; - if (weightNameToUpDown.find(subName) == weightNameToUpDown.end()) { - weightNames.push_back(subName); - weightNameToUpDown[subName] = std::pair(); - } - if (isUp) - weightNameToUpDown[subName].first = localIndex; - else - weightNameToUpDown[subName].second = localIndex; - } - } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc index 489b3174aeebe..818ad16a78ef2 100644 --- a/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc @@ -6,7 +6,7 @@ namespace gen { hasAlphasVars_ = other.hasAlphasVariations(); alphasUpIndex_ = other.alphasDownIndex(); alphasDownIndex_ = other.alphasDownIndex(); - parentLhapdfId_ = other.getParentLhapdfId(); + parentLhapdfId_ = other.parentLhapdfId(); WeightGroupInfo::copy(other); } diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index b56a82caf331f..04aa722601d9e 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -90,8 +90,11 @@ namespace gen { } int WeightGroupInfo::weightIndexFromLabel(std::string weightLabel) const { - if (weightLabelsToIndices_.find(weightLabel) != weightLabelsToIndices_.end()) - return static_cast(weightLabelsToIndices_.at(weightLabel)); + if (!weightLabelsToIndices_.empty()) { + if (weightLabelsToIndices_.find(weightLabel) != weightLabelsToIndices_.end()) + return static_cast(weightLabelsToIndices_.at(weightLabel)); + return -1; + } auto it = std::find_if(idsContained_.begin(), idsContained_.end(), [weightLabel](const auto& w) { return weightLabel == w.label; }); From a91bdf2d849587546a22f0274b98541fc7e75ecb Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Fri, 21 Aug 2020 19:26:39 +0200 Subject: [PATCH 132/186] updates to allow saving weight sums from all weight categories --- .../NanoAOD/interface/GenWeightCounters.h | 119 +++++ .../plugins/LHEWeightsTableProducer.cc | 498 +++++++++++------- 2 files changed, 440 insertions(+), 177 deletions(-) create mode 100644 PhysicsTools/NanoAOD/interface/GenWeightCounters.h diff --git a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h new file mode 100644 index 0000000000000..15ac334b2e863 --- /dev/null +++ b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h @@ -0,0 +1,119 @@ +#ifndef GENWEIGHTSCOUNTERS_h +#define GENWEIGHTSCOUNTERS_h +#include +#include +#include +namespace genCounter { + + void mergeSumVectors(std::vector& v1, std::vector const& v2) { + if (v1.empty() && !v2.empty()) + v1.resize(v2.size(), 0); + if (!v2.empty()) + for (unsigned int i = 0, n = v1.size(); i < n; ++i) + v1[i] += v2[i]; + } + + /// ---- Cache object for running sums of weights ---- + class Counter { + public: + void clear() { + num_ = 0; + sumw_ = 0; + sumw2_ = 0; + weightSumMap_.clear(); + } + + // inc only the gen counters + void incGenOnly(double w) { + num_++; + sumw_ += w; + sumw2_ += (w * w); + } + + void incLHE(double w0, const std::vector& weightV, const std::string& wName) { + //if new type of weight, create a map element + if(weightSumMap_.find(wName) == weightSumMap_.end()) { + std::vector temp; + weightSumMap_.insert({wName, temp}); + } + if (!weightV.empty()) { + if (weightSumMap_[wName].empty()) + weightSumMap_[wName].resize(weightV.size(), 0); + for (unsigned int i = 0, n = weightV.size(); i < n; ++i) + weightSumMap_[wName][i] += (w0 * weightV[i]); + } + // incGenOnly(w0); + //incPSOnly(w0, wPS); + } + + void mergeSumMap(const Counter& other) { + num_ += other.num_; + sumw_ += other.sumw_; + sumw2_ += other.sumw2_; + //if weightMap_ for "this" is empty, create map elements with empty + //vectors before merging + if(weightSumMap_.empty() && !other.weightSumMap_.empty()) { + for(auto& wmap : other.weightSumMap_) { + std::vector temp; + weightSumMap_.insert({wmap.first, temp}); + } + } + for(auto& wmap : weightSumMap_) { + mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); + } + /* + std::cout << "From merge function\n"; + for(auto& wmap : weightSumMap_) { + std::cout << "Wname:" << wmap.first + << "\t WVec Size:" << wmap.second.size() + << "\t First entry:" << wmap.second.at(0) + << std::endl;; + } + std::cout << "End : From merge function\n"; + */ + } + + //private: + // the counters + long long num_ = 0; + long double sumw_ = 0; + long double sumw2_ = 0; + std::map> weightSumMap_; + }; + + struct CounterMap { + std::map countermap; + Counter* active_el = nullptr; + std::string active_label = ""; + + void mergeSumMap(const CounterMap& other) { + for (const auto& y : other.countermap) + countermap[y.first].mergeSumMap(y.second); + active_el = nullptr; + } + + void clear() { + for (auto x : countermap) + x.second.clear(); + } + + void setLabel(std::string label) { + active_el = &(countermap[label]); + active_label = label; + } + void checkLabelSet() { + if (!active_el) + throw cms::Exception("LogicError", "Called CounterMap::get() before setting the active label\n"); + } + Counter* get() { + checkLabelSet(); + return active_el; + } + std::string& getLabel() { + checkLabelSet(); + return active_label; + } + }; + +} +#endif diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 56ff5f4f66ada..53eb1c388e111 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -3,18 +3,21 @@ #include "FWCore/Framework/interface/Run.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "DataFormats/NanoAOD/interface/FlatTable.h" +#include "DataFormats/NanoAOD/interface/MergeableCounterTable.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoHeader.h" #include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" #include "FWCore/Utilities/interface/transform.h" - +#include "PhysicsTools/NanoAOD/interface/GenWeightCounters.h" #include #include #include @@ -23,207 +26,348 @@ namespace { typedef std::vector WeightGroupDataContainer; typedef std::array, 2> WeightGroupsToStore; } // namespace +using CounterMap = genCounter::CounterMap; +using Counter = genCounter::Counter; -class LHEWeightsTableProducer : public edm::global::EDProducer> { +class LHEWeightsTableProducer : +public edm::global::EDProducer, + edm::StreamCache, + edm::RunSummaryCache, + edm::EndRunProducer> { public: - LHEWeightsTableProducer(edm::ParameterSet const& params) - : lheWeightTokens_( - edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - lheWeightInfoTokens_(edm::vector_transform( - params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - genWeightToken_(consumes(params.getParameter("genWeights"))), - genWeightInfoToken_( - consumes(params.getParameter("genWeights"))), - weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), - [](auto& c) { return gen::WeightType(c.at(0)); })), - maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), - pdfIds_(params.getUntrackedParameter>("pdfIds", {})), - lheWeightPrecision_(params.getParameter("lheWeightPrecision")) { - if (weightgroups_.size() != maxGroupsPerType_.size()) - throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); - produces>(); - } + LHEWeightsTableProducer(edm::ParameterSet const& params); - void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { - edm::Handle lheWeightHandle; - bool foundLheWeights = false; - for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - foundLheWeights = true; - break; - } - } + void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override; + //func changed//sroychow + void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights, Counter& counter, + double genWeight) const; - WeightsContainer lheWeights; - if (foundLheWeights) { - const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); - lheWeights = lheWeightProduct->weights(); - } + WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const; - edm::Handle genWeightHandle; - iEvent.getByToken(genWeightToken_, genWeightHandle); - const GenWeightProduct* genWeightProduct = genWeightHandle.product(); - WeightsContainer genWeights = genWeightProduct->weights(); + std::vector orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo* scaleGroup) const; - auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); + //Lumiblock + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, + edm::EventSetup const&) const override { + // Set equal to the max number of groups + // subtrack 1 for each weight group you find + bool foundLheWeights = false; + edm::Handle lheWeightInfoHandle; + for (auto& token : lheWeightInfoTokens_) { + iLumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundLheWeights = true; + break; + } + } + edm::Handle genWeightInfoHandle; + iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); + + std::unordered_map storePerType; + for (size_t i = 0; i < weightgroups_.size(); i++) + storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + + WeightGroupsToStore weightsToStore; + for (auto weightType : gen::allWeightTypes) { + if (foundLheWeights) { + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); + } + auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); + } + return std::make_shared(weightsToStore); + } - auto lheWeightTables = std::make_unique>(); - if (foundLheWeights) { - addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights); - } - addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights); + // nothing to do here + virtual void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} + // create an empty counter + std::unique_ptr beginStream(edm::StreamID) const override { return std::make_unique(); } + // inizialize to zero at begin run + void streamBeginRun(edm::StreamID id, + edm::Run const&, edm::EventSetup const&) const override { streamCache(id)->clear(); } - iEvent.put(std::move(lheWeightTables)); + void streamBeginLuminosityBlock(edm::StreamID id, + edm::LuminosityBlock const& lumiBlock, + edm::EventSetup const& eventSetup) const override { + auto counterMap = streamCache(id); + edm::Handle genLumiInfoHead; + lumiBlock.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); + if (!genLumiInfoHead.isValid()) + edm::LogWarning("LHETablesProducer") + << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; + counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); + //std::cout << "StreamBeginLuminosityBlock:" << id.value() << "\nPrinting counter map keys" << std::endl; + //for(auto& cm : counterMap->countermap) + // std::cout << cm.first << std::endl; + std::string label = genLumiInfoHead.isValid() ? counterMap->getLabel() : "NULL"; + //std::cout << "StreamBeginLuminosityBlock:" << id.value() << "\nCounterMapLabel:" << label << std::endl; + + } + // create an empty counter + std::shared_ptr globalBeginRunSummary(edm::Run const&, edm::EventSetup const&) const override { + return std::make_shared(); } + // add this stream to the summary + void streamEndRunSummary(edm::StreamID id, edm::Run const&, + edm::EventSetup const&, CounterMap* runCounterMap) const override; + // nothing to do per se + void globalEndRunSummary(edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const override {} + // write the total to the run + void globalEndRunProduce(edm::Run& iRun, edm::EventSetup const& es, CounterMap const* runCounterMap) const override; + // nothing to do here + //void globalEndRun(edm::Run const& iRun, edm::EventSetup const& es, CounterMap* runCounterMap) const override {} - void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, - const char* typeName, - const WeightGroupDataContainer& weightInfos, - WeightsContainer& allWeights) const { - std::unordered_map typeCount = {}; - for (auto& type : gen::allWeightTypes) - typeCount[type] = 0; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - for (const auto& groupInfo : weightInfos) { - std::string entryName = typeName; - gen::WeightType weightType = groupInfo.group->weightType(); + protected: + //const std::vector> lheTokens_; + const std::vector> lheWeightTokens_; + const std::vector> lheWeightInfoTokens_; + const edm::EDGetTokenT genWeightToken_; + const edm::EDGetTokenT genWeightInfoToken_; + const edm::EDGetTokenT genEventInfoToken_; + const edm::EDGetTokenT genLumiInfoHeadTag_; + const std::vector weightgroups_; + const std::vector maxGroupsPerType_; + const std::vector pdfIds_; + const std::unordered_map weightTypeNames_ = { + {gen::WeightType::kScaleWeights, "Scale"}, + {gen::WeightType::kPdfWeights, "Pdf"}, + {gen::WeightType::kMEParamWeights, "MEParam"}, + {gen::WeightType::kPartonShowerWeights, "PartonShower"}, + {gen::WeightType::kUnknownWeights, "Unknown"}, + }; + + //std::unordered_map weightGroupIndices_; + int lheWeightPrecision_; + enum { inLHE, inGen }; +}; +//put back if needed; till now not used +//lheTokens_(edm::vector_transform(params.getParameter>("lheInfo"), +// [this](const edm::InputTag& tag) { return mayConsume(tag); })), +// +LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params) + : lheWeightTokens_( + edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform( + params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + genWeightToken_(consumes(params.getParameter("genWeights"))), + genWeightInfoToken_(consumes(params.getParameter("genWeights"))), + genEventInfoToken_(consumes(params.getParameter("genEvent"))), + genLumiInfoHeadTag_(mayConsume(params.getParameter("genLumiInfoHeader"))), + weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), + [](auto& c) { return gen::WeightType(c.at(0)); })), + maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), + pdfIds_(params.getUntrackedParameter>("pdfIds", {})), + lheWeightPrecision_(params.getParameter("lheWeightPrecision")) +{ + if (weightgroups_.size() != maxGroupsPerType_.size()) + throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); + produces>(); + produces(); + produces(); + } - std::string name = weightTypeNames_.at(weightType); - std::string label = groupInfo.group->name(); +void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const { - auto& weights = allWeights.at(groupInfo.index); - label.append("; "); - if (false && weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && - groupInfo.group->nIdsContained() < 10) { - weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); - label.append( - "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); - } else - label.append(groupInfo.group->description()); - - entryName.append(name); - entryName.append("Weight"); - if (typeCount[weightType] > 0) { - entryName.append("AltSet"); - entryName.append(std::to_string(typeCount[weightType])); - } - - lheWeightTables->emplace_back(weights.size(), entryName, false); - lheWeightTables->back().addColumn( - "", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); - - typeCount[weightType]++; - } + //access counter for weight sums + Counter& counter = *streamCache(id)->get(); + + edm::Handle lheWeightHandle; + bool foundLheWeights = false; + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + foundLheWeights = true; + break; + } + } + //Taken from genweight producer //Added sroychow + // generator information (always available) + auto const& genInfo = iEvent.get(genEventInfoToken_); + const double genWeight = genInfo.weight(); + // table for gen info, always available + auto outGeninfo = std::make_unique(1, "genWeightNEW", true); + outGeninfo->setDoc("generator weight"); + outGeninfo->addColumnValue("", genInfo.weight(), "generator weight", nanoaod::FlatTable::FloatColumn); + iEvent.put(std::move(outGeninfo)); + //this will take care of sum of genWeights + counter.incGenOnly(genWeight); + + WeightsContainer lheWeights; + if (foundLheWeights) { + const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); + lheWeights = lheWeightProduct->weights(); + } + + edm::Handle genWeightHandle; + iEvent.getByToken(genWeightToken_, genWeightHandle); + const GenWeightProduct* genWeightProduct = genWeightHandle.product(); + WeightsContainer genWeights = genWeightProduct->weights(); + + auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); + + auto lheWeightTables = std::make_unique>(); + if (foundLheWeights) { + addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); } - std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, - edm::EventSetup const&) const override { - // Set equal to the max number of groups - // subtrack 1 for each weight group you find - bool foundLheWeights = false; - edm::Handle lheWeightInfoHandle; - for (auto& token : lheWeightInfoTokens_) { - iLumi.getByToken(token, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundLheWeights = true; - break; - } + addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); + + iEvent.put(std::move(lheWeightTables)); + //std::cout << "From Event:\n"; + //for(auto& cm : counter.weightSumMap_) + // std::cout << "WeightName:" << cm.first + // << "\t size:" << cm.second.size() + // << "\t First value:" << cm.second.at(0) + // << std::endl; + +} + +void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptr>& lheWeightTables, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights, Counter& counter, + double genWeight) const { + std::unordered_map typeCount = {}; + for (auto& type : gen::allWeightTypes) + typeCount[type] = 0; + + for (const auto& groupInfo : weightInfos) { + std::string entryName = typeName; + gen::WeightType weightType = groupInfo.group->weightType(); + std::string name = weightTypeNames_.at(weightType); + std::string label = groupInfo.group->name(); + auto& weights = allWeights.at(groupInfo.index); + label.append("; "); + if (false && weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && + groupInfo.group->nIdsContained() < 10) { + weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); + label.append( + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else + label.append(groupInfo.group->description()); + + entryName.append(name); + entryName.append("Weight"); + if (typeCount[weightType] > 0) { + entryName.append("AltSet"); + entryName.append(std::to_string(typeCount[weightType])); } + counter.incLHE(genWeight, weights, entryName); + lheWeightTables->emplace_back(weights.size(), entryName, false); + lheWeightTables->back().addColumn("", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + typeCount[weightType]++; + } +} - edm::Handle genWeightInfoHandle; - iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); + WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const { + WeightGroupDataContainer group; + if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { + group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + } else + group = weightsHandle->weightGroupsAndIndicesByType(weightType); - std::unordered_map storePerType; - for (size_t i = 0; i < weightgroups_.size(); i++) - storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + if (maxStore < 0 || static_cast(group.size()) <= maxStore) { + // Modify size in case one type of weight is present in multiple products + maxStore -= group.size(); + return group; + } + return std::vector(group.begin(), group.begin() + maxStore); + } - WeightGroupsToStore weightsToStore; - for (auto weightType : gen::allWeightTypes) { - if (foundLheWeights) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); - } + std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo* scaleGroup) const { + std::vector weights; + weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->centralIndex())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF2Index())); - auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); - } + return weights; + } - return std::make_shared(weightsToStore); - } +void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, + edm::Run const&, + edm::EventSetup const&, + CounterMap* runCounterMap) const { + std::cout << "<<<<>>>>>\n"; + std::cout << "Map label:" << (*streamCache(id)).active_label << std::endl; + Counter& counter = *streamCache(id)->get(); + for(auto& cm : counter.weightSumMap_) + std::cout << "WeightName:" << cm.first + << "\t size:" << cm.second.size() + << "\t First value:" << cm.second.at(0) + << std::endl; + std::cout << "<<<<>>>>>\n"; + //this takes care for mergeing all the weight sums + runCounterMap->mergeSumMap(*streamCache(id)); +} - WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, - gen::WeightType weightType, - int& maxStore) const { - WeightGroupDataContainer group; - if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); - } else - group = weightsHandle->weightGroupsAndIndicesByType(weightType); +void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, edm::EventSetup const&, CounterMap const* runCounterMap) const { + auto out = std::make_unique(); + + for (auto x : runCounterMap->countermap) { + auto& runCounter = x.second; + std::string label = std::string("_") + x.first; + std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; + + out->addInt("genEventCountNEW" + label, "event count" + doclabel, runCounter.num_); + out->addFloat("genEventSumwNEW" + label, "sum of gen weights" + doclabel, runCounter.sumw_); + out->addFloat("genEventSumw2NEW" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); + + double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; + //Sum from map + std::cout << "SUM map size:" << runCounter.weightSumMap_.size() << std::endl; + for(auto& sumw : runCounter.weightSumMap_) { + std::cout << "Adding wsum for:" + << sumw.first << "\t Size:" + << sumw.second.size() + << "\t First value:" << sumw.second.at(0) + << std::endl; - if (maxStore < 0 || static_cast(group.size()) <= maxStore) { - // Modify size in case one type of weight is present in multiple products - maxStore -= group.size(); - return group; + //Normalize with genEventSumw + for(auto& val : sumw.second) val *= norm; + out->addVFloat(sumw.first + "Sumw" + label, + "Sum of genEventWeight *" + sumw.first + "[i]/genEventSumw" + doclabel, + sumw.second) ; } - return std::vector(group.begin(), group.begin() + maxStore); - } - - std::vector orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo* scaleGroup) const { - std::vector weights; - weights.push_back(scaleWeights.at(scaleGroup->muR05muF05Index())); - weights.push_back(scaleWeights.at(scaleGroup->muR05muF1Index())); - weights.push_back(scaleWeights.at(scaleGroup->muR05muF2Index())); - weights.push_back(scaleWeights.at(scaleGroup->muR1muF05Index())); - weights.push_back(scaleWeights.at(scaleGroup->centralIndex())); - weights.push_back(scaleWeights.at(scaleGroup->muR1muF2Index())); - weights.push_back(scaleWeights.at(scaleGroup->muR2muF05Index())); - weights.push_back(scaleWeights.at(scaleGroup->muR2muF1Index())); - weights.push_back(scaleWeights.at(scaleGroup->muR2muF2Index())); - - return weights; - } - - // nothing to do here - virtual void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add>("lheWeights"); - //desc.add>("genWeights"); - desc.add("genWeights"); - desc.add>("weightgroups"); - desc.add>("maxGroupsPerType"); - desc.addOptionalUntracked>("pdfIds"); - desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); - descriptions.addDefault(desc); } + iRun.put(std::move(out)); +} +void LHEWeightsTableProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add>("lheWeights"); + desc.add>("lheInfo", std::vector{{"externalLHEProducer"}, {"source"}}) + ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + //desc.add>("genWeights"); + desc.add("genWeights"); + desc.add("genEvent", edm::InputTag("generator"))->setComment("tag for the GenEventInfoProduct, to get the main weight"); + desc.add("genLumiInfoHeader", edm::InputTag("generator"))->setComment("tag for the GenLumiInfoProduct, to get the model string"); + desc.add>("weightgroups"); + desc.add>("maxGroupsPerType"); + desc.addOptionalUntracked>("pdfIds"); + desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); + descriptions.addDefault(desc); +} -protected: - const edm::EDGetTokenT lheToken_; - const std::vector> lheWeightTokens_; - const std::vector> lheWeightInfoTokens_; - const edm::EDGetTokenT genWeightToken_; - const edm::EDGetTokenT genWeightInfoToken_; - const std::vector weightgroups_; - const std::vector maxGroupsPerType_; - const std::vector pdfIds_; - const std::unordered_map weightTypeNames_ = { - {gen::WeightType::kScaleWeights, "Scale"}, - {gen::WeightType::kPdfWeights, "Pdf"}, - {gen::WeightType::kMEParamWeights, "MEParam"}, - {gen::WeightType::kPartonShowerWeights, "PartonShower"}, - {gen::WeightType::kUnknownWeights, "Unknown"}, - }; - - //std::unordered_map weightGroupIndices_; - int lheWeightPrecision_; - enum { inLHE, inGen }; -}; #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(LHEWeightsTableProducer); From 3f41984dbc7fa15c568eb02604c1899534a499ef Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Tue, 25 Aug 2020 01:14:30 +0200 Subject: [PATCH 133/186] adding option to save preferred PS weights --- .../plugins/LHEWeightsTableProducer.cc | 208 +++++++++++------- 1 file changed, 124 insertions(+), 84 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 53eb1c388e111..c8f0aa06684ff 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -16,6 +16,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" #include "FWCore/Utilities/interface/transform.h" #include "PhysicsTools/NanoAOD/interface/GenWeightCounters.h" #include @@ -52,47 +53,49 @@ public edm::global::EDProducer, std::vector orderedScaleWeights(const std::vector& scaleWeights, const gen::ScaleWeightGroupInfo* scaleGroup) const; + std::vector getPreferredPSweights(const std::vector& psWeights, const gen::PartonShowerWeightGroupInfo* pswV) const; + //Lumiblock - std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, edm::EventSetup const&) const override { - // Set equal to the max number of groups - // subtrack 1 for each weight group you find - bool foundLheWeights = false; - edm::Handle lheWeightInfoHandle; - for (auto& token : lheWeightInfoTokens_) { - iLumi.getByToken(token, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { + // Set equal to the max number of groups + // subtrack 1 for each weight group you find + bool foundLheWeights = false; + edm::Handle lheWeightInfoHandle; + for (auto& token : lheWeightInfoTokens_) { + iLumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { foundLheWeights = true; break; - } - } - edm::Handle genWeightInfoHandle; - iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); - - std::unordered_map storePerType; - for (size_t i = 0; i < weightgroups_.size(); i++) - storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); - - WeightGroupsToStore weightsToStore; - for (auto weightType : gen::allWeightTypes) { - if (foundLheWeights) { + } + } + edm::Handle genWeightInfoHandle; + iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); + + std::unordered_map storePerType; + for (size_t i = 0; i < weightgroups_.size(); i++) + storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + + WeightGroupsToStore weightsToStore; + for (auto weightType : gen::allWeightTypes) { + if (foundLheWeights) { auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); - } - auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); - } - return std::make_shared(weightsToStore); - } - - // nothing to do here - virtual void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} - // create an empty counter + } + auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); + weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); + } + return std::make_shared(weightsToStore); + } + + // nothing to do here + virtual void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} + // create an empty counter std::unique_ptr beginStream(edm::StreamID) const override { return std::make_unique(); } - // inizialize to zero at begin run + // inizialize to zero at begin run void streamBeginRun(edm::StreamID id, edm::Run const&, edm::EventSetup const&) const override { streamCache(id)->clear(); } - + void streamBeginLuminosityBlock(edm::StreamID id, edm::LuminosityBlock const& lumiBlock, edm::EventSetup const& eventSetup) const override { @@ -100,8 +103,8 @@ public edm::global::EDProducer, edm::Handle genLumiInfoHead; lumiBlock.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); if (!genLumiInfoHead.isValid()) - edm::LogWarning("LHETablesProducer") - << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; + edm::LogWarning("LHETablesProducer") + << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); //std::cout << "StreamBeginLuminosityBlock:" << id.value() << "\nPrinting counter map keys" << std::endl; //for(auto& cm : counterMap->countermap) @@ -109,24 +112,24 @@ public edm::global::EDProducer, std::string label = genLumiInfoHead.isValid() ? counterMap->getLabel() : "NULL"; //std::cout << "StreamBeginLuminosityBlock:" << id.value() << "\nCounterMapLabel:" << label << std::endl; - } + } // create an empty counter std::shared_ptr globalBeginRunSummary(edm::Run const&, edm::EventSetup const&) const override { return std::make_shared(); } // add this stream to the summary - void streamEndRunSummary(edm::StreamID id, edm::Run const&, - edm::EventSetup const&, CounterMap* runCounterMap) const override; + void streamEndRunSummary(edm::StreamID id, edm::Run const&, + edm::EventSetup const&, CounterMap* runCounterMap) const override; // nothing to do per se void globalEndRunSummary(edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const override {} // write the total to the run void globalEndRunProduce(edm::Run& iRun, edm::EventSetup const& es, CounterMap const* runCounterMap) const override; // nothing to do here //void globalEndRun(edm::Run const& iRun, edm::EventSetup const& es, CounterMap* runCounterMap) const override {} - + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - protected: + +protected: //const std::vector> lheTokens_; const std::vector> lheWeightTokens_; const std::vector> lheWeightInfoTokens_; @@ -144,15 +147,13 @@ public edm::global::EDProducer, {gen::WeightType::kPartonShowerWeights, "PartonShower"}, {gen::WeightType::kUnknownWeights, "Unknown"}, }; - //std::unordered_map weightGroupIndices_; int lheWeightPrecision_; + bool storeAllPSweights_; + enum { inLHE, inGen }; }; //put back if needed; till now not used -//lheTokens_(edm::vector_transform(params.getParameter>("lheInfo"), -// [this](const edm::InputTag& tag) { return mayConsume(tag); })), -// LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params) : lheWeightTokens_( edm::vector_transform(params.getParameter>("lheWeights"), @@ -168,17 +169,18 @@ LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params [](auto& c) { return gen::WeightType(c.at(0)); })), maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), pdfIds_(params.getUntrackedParameter>("pdfIds", {})), - lheWeightPrecision_(params.getParameter("lheWeightPrecision")) + lheWeightPrecision_(params.getParameter("lheWeightPrecision")), + storeAllPSweights_(params.getParameter("storeAllPSweights")) { - if (weightgroups_.size() != maxGroupsPerType_.size()) - throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); - produces>(); - produces(); - produces(); - } + if (weightgroups_.size() != maxGroupsPerType_.size()) + throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); + produces>(); + produces(); + produces(); + produces(); +} void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const { - //access counter for weight sums Counter& counter = *streamCache(id)->get(); @@ -224,13 +226,17 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); iEvent.put(std::move(lheWeightTables)); + /* + std::string& model_label = streamCache(id)->getLabel(); + auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); + iEvent.put(std::move(outM), "genModel"); + */ //std::cout << "From Event:\n"; //for(auto& cm : counter.weightSumMap_) // std::cout << "WeightName:" << cm.first // << "\t size:" << cm.second.size() // << "\t First value:" << cm.second.at(0) // << std::endl; - } void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptr>& lheWeightTables, @@ -247,7 +253,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptrweightType(); std::string name = weightTypeNames_.at(weightType); std::string label = groupInfo.group->name(); - auto& weights = allWeights.at(groupInfo.index); + auto& weights = allWeights.at(groupInfo.index); label.append("; "); if (false && weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && groupInfo.group->nIdsContained() < 10) { @@ -256,6 +262,25 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptrisWellFormed()) { + const gen::PartonShowerWeightGroupInfo* psgInfo = dynamic_cast(groupInfo.group); + //std::cout << "PSWeights size :" << weights.size() + // << "\tWtnames size:" << psgInfo->getWeightNames().size() + // << std::endl; + //std::cout << "WeightMetaInfo size:" << psgInfo->idsContained().size() << std::endl; + //for(unsigned int i = 0 ; i < psgInfo->idsContained().size(); i++) + // std::cout << "Index :" << i << "\t" << psgInfo->idsContained().at(i).label << std::endl; + std::cout << "PS weights \n Index: 1\t" << psgInfo->idsContained().at(0).label + << "\t value:" << weights.at(0) << std::endl; + std::cout << "PS weights \n Index: 1\t" << psgInfo->idsContained().at(1).label + << "\t value:" << weights.at(1) << std::endl; + for (unsigned int i = 6; i < 10; i++) + std::cout << "Index :" << i + << "\t weight name:" << psgInfo->idsContained().at(i).label + << "\t value:" << weights.at(i) + << std::endl; + weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); + label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); } else label.append(groupInfo.group->description()); @@ -269,41 +294,55 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptremplace_back(weights.size(), entryName, false); lheWeightTables->back().addColumn("", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); typeCount[weightType]++; + + //std::cout << "Weight type read: " << name << std::endl; } } - WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle& weightsHandle, - gen::WeightType weightType, - int& maxStore) const { - WeightGroupDataContainer group; - if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); - } else - group = weightsHandle->weightGroupsAndIndicesByType(weightType); - - if (maxStore < 0 || static_cast(group.size()) <= maxStore) { - // Modify size in case one type of weight is present in multiple products - maxStore -= group.size(); - return group; - } - return std::vector(group.begin(), group.begin() + maxStore); - } +WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const { + WeightGroupDataContainer group; + if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { + group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + } else + group = weightsHandle->weightGroupsAndIndicesByType(weightType); + + if (maxStore < 0 || static_cast(group.size()) <= maxStore) { + // Modify size in case one type of weight is present in multiple products + maxStore -= group.size(); + return group; + } + return std::vector(group.begin(), group.begin() + maxStore); +} - std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo* scaleGroup) const { - std::vector weights; - weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF1Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF2Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->centralIndex())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF2Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF1Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF2Index())); +std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo* scaleGroup) const { + std::vector weights; + weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->centralIndex())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF2Index())); + + return weights; +} - return weights; - } +std::vector LHEWeightsTableProducer::getPreferredPSweights(const std::vector& psWeights, + const gen::PartonShowerWeightGroupInfo* pswV) const { + std::vector psTosave; + + double baseline = psWeights.at(pswV->weightIndexFromLabel("Baseline"));//at 1 + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefHi"))/baseline ); // at 6 + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefHi"))/baseline ); // at 7 + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefLo"))/baseline ); // at 8 + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefLo"))/baseline ); // at 9 + return psTosave; +} void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, edm::Run const&, @@ -366,6 +405,7 @@ void LHEWeightsTableProducer::fillDescriptions(edm::ConfigurationDescriptions& d desc.add>("maxGroupsPerType"); desc.addOptionalUntracked>("pdfIds"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); + desc.add("storeAllPSweights", -1)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); descriptions.addDefault(desc); } From a073bf035eb793147ec0dd90075c32b1bdb6c8ef Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Mon, 28 Sep 2020 13:42:03 +0200 Subject: [PATCH 134/186] changing weight table producer to write individual tables for weight categories --- .../NanoAOD/interface/GenWeightCounters.h | 11 +- .../plugins/LHEWeightsTableProducer.cc | 148 ++++++++---------- .../NanoAOD/python/lheWeightsTable_cfi.py | 19 +++ PhysicsTools/NanoAOD/python/nanogen_cff.py | 5 +- 4 files changed, 90 insertions(+), 93 deletions(-) create mode 100644 PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py diff --git a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h index 15ac334b2e863..4229cddb32ab6 100644 --- a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h +++ b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h @@ -61,16 +61,7 @@ namespace genCounter { for(auto& wmap : weightSumMap_) { mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); } - /* - std::cout << "From merge function\n"; - for(auto& wmap : weightSumMap_) { - std::cout << "Wname:" << wmap.first - << "\t WVec Size:" << wmap.second.size() - << "\t First entry:" << wmap.second.at(0) - << std::endl;; - } - std::cout << "End : From merge function\n"; - */ + } //private: diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index c8f0aa06684ff..1c68843586fcb 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -40,12 +40,13 @@ public edm::global::EDProducer, void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override; //func changed//sroychow - void addWeightGroupToTable(std::unique_ptr>& lheWeightTables, + void addWeightGroupToTable(std::map>& lheWeightTables, + std::map>& weightVecsizes, + std::map& weightlabels, const char* typeName, const WeightGroupDataContainer& weightInfos, WeightsContainer& allWeights, Counter& counter, double genWeight) const; - WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, gen::WeightType weightType, int& maxStore) const; @@ -106,11 +107,7 @@ public edm::global::EDProducer, edm::LogWarning("LHETablesProducer") << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); - //std::cout << "StreamBeginLuminosityBlock:" << id.value() << "\nPrinting counter map keys" << std::endl; - //for(auto& cm : counterMap->countermap) - // std::cout << cm.first << std::endl; std::string label = genLumiInfoHead.isValid() ? counterMap->getLabel() : "NULL"; - //std::cout << "StreamBeginLuminosityBlock:" << id.value() << "\nCounterMapLabel:" << label << std::endl; } // create an empty counter @@ -130,7 +127,6 @@ public edm::global::EDProducer, static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); protected: - //const std::vector> lheTokens_; const std::vector> lheWeightTokens_; const std::vector> lheWeightInfoTokens_; const edm::EDGetTokenT genWeightToken_; @@ -141,10 +137,10 @@ public edm::global::EDProducer, const std::vector maxGroupsPerType_; const std::vector pdfIds_; const std::unordered_map weightTypeNames_ = { - {gen::WeightType::kScaleWeights, "Scale"}, - {gen::WeightType::kPdfWeights, "Pdf"}, + {gen::WeightType::kScaleWeights, "LHEScale"}, + {gen::WeightType::kPdfWeights, "LHEPdf"}, {gen::WeightType::kMEParamWeights, "MEParam"}, - {gen::WeightType::kPartonShowerWeights, "PartonShower"}, + {gen::WeightType::kPartonShowerWeights, "GENPartonShower"}, {gen::WeightType::kUnknownWeights, "Unknown"}, }; //std::unordered_map weightGroupIndices_; @@ -174,16 +170,18 @@ LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params { if (weightgroups_.size() != maxGroupsPerType_.size()) throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); - produces>(); - produces(); + for(auto& wg : weightTypeNames_) { + produces(wg.second); + produces(wg.second + "sizes"); + } + produces("GENWeight"); produces(); - produces(); + produces("genModel"); } void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const { //access counter for weight sums Counter& counter = *streamCache(id)->get(); - edm::Handle lheWeightHandle; bool foundLheWeights = false; for (auto& token : lheWeightTokens_) { @@ -201,10 +199,14 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons auto outGeninfo = std::make_unique(1, "genWeightNEW", true); outGeninfo->setDoc("generator weight"); outGeninfo->addColumnValue("", genInfo.weight(), "generator weight", nanoaod::FlatTable::FloatColumn); - iEvent.put(std::move(outGeninfo)); + iEvent.put(std::move(outGeninfo), "GENWeight"); //this will take care of sum of genWeights counter.incGenOnly(genWeight); + std::string& model_label = streamCache(id)->getLabel(); + auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); + iEvent.put(std::move(outM), "genModel"); + WeightsContainer lheWeights; if (foundLheWeights) { const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); @@ -218,28 +220,45 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - auto lheWeightTables = std::make_unique>(); + //create a container with dummy weight vector + std::map> lheWeightTables; + std::map> weightVecsizes; + std::map weightlabels; + for(auto& wg : weightTypeNames_) { + lheWeightTables.insert(std::make_pair(wg.first, std::vector())); + weightVecsizes.insert(std::make_pair(wg.first, std::vector())); + weightlabels.insert(std::make_pair(wg.first, "")); + } if (foundLheWeights) { - addWeightGroupToTable(lheWeightTables, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); + addWeightGroupToTable(lheWeightTables, weightVecsizes, weightlabels, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); } - addWeightGroupToTable(lheWeightTables, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); + addWeightGroupToTable(lheWeightTables, weightVecsizes, weightlabels, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); - iEvent.put(std::move(lheWeightTables)); - /* - std::string& model_label = streamCache(id)->getLabel(); - auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); - iEvent.put(std::move(outM), "genModel"); - */ - //std::cout << "From Event:\n"; - //for(auto& cm : counter.weightSumMap_) - // std::cout << "WeightName:" << cm.first - // << "\t size:" << cm.second.size() - // << "\t First value:" << cm.second.at(0) - // << std::endl; + for(auto& wg : weightTypeNames_) { + std::string wname = wg.second; + auto& weightVec = lheWeightTables[wg.first]; + counter.incLHE(genWeight, weightVec, wname); + std::cout << "Writing out weight of type:" << wname << std::endl; + auto outTable = std::make_unique(weightVec.size(), wname + "Weight", false); + outTable->addColumn("", weightVec, weightlabels[wg.first], + nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + + //now add the vector containing the sizes of alt sets + auto outTableSizes = std::make_unique(weightVecsizes[wg.first].size(), wname + "_AltSetSizes", false); + outTableSizes->addColumn("", weightVecsizes[wg.first], "Sizes of weight arrays for weight type:" + wname, + nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + iEvent.put(std::move(outTable), wname); + iEvent.put(std::move(outTableSizes), wname + "sizes"); + } } -void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptr>& lheWeightTables, +/* + +*/ +void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, + std::map>& weightVecsizes, + std::map& weightlabels, const char* typeName, const WeightGroupDataContainer& weightInfos, WeightsContainer& allWeights, Counter& counter, @@ -249,13 +268,17 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptrweightType(); std::string name = weightTypeNames_.at(weightType); - std::string label = groupInfo.group->name(); + std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->name(); auto& weights = allWeights.at(groupInfo.index); - label.append("; "); - if (false && weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && + label.append("["); + label.append(std::to_string(lheWeightTables[weightType].size()));//to append the start index of this set + label.append("]; "); + lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); + weightVecsizes[weightType].emplace_back(weights.size()); + if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && groupInfo.group->nIdsContained() < 10) { weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); label.append( @@ -263,39 +286,16 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::unique_ptrisWellFormed()) { - const gen::PartonShowerWeightGroupInfo* psgInfo = dynamic_cast(groupInfo.group); - //std::cout << "PSWeights size :" << weights.size() - // << "\tWtnames size:" << psgInfo->getWeightNames().size() - // << std::endl; - //std::cout << "WeightMetaInfo size:" << psgInfo->idsContained().size() << std::endl; - //for(unsigned int i = 0 ; i < psgInfo->idsContained().size(); i++) - // std::cout << "Index :" << i << "\t" << psgInfo->idsContained().at(i).label << std::endl; - std::cout << "PS weights \n Index: 1\t" << psgInfo->idsContained().at(0).label - << "\t value:" << weights.at(0) << std::endl; - std::cout << "PS weights \n Index: 1\t" << psgInfo->idsContained().at(1).label - << "\t value:" << weights.at(1) << std::endl; - for (unsigned int i = 6; i < 10; i++) - std::cout << "Index :" << i - << "\t weight name:" << psgInfo->idsContained().at(i).label - << "\t value:" << weights.at(i) - << std::endl; - weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); + weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); - } else - label.append(groupInfo.group->description()); - - entryName.append(name); - entryName.append("Weight"); - if (typeCount[weightType] > 0) { - entryName.append("AltSet"); - entryName.append(std::to_string(typeCount[weightType])); - } - counter.incLHE(genWeight, weights, entryName); - lheWeightTables->emplace_back(weights.size(), entryName, false); - lheWeightTables->back().addColumn("", weights, label, nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + } + //else + // label.append(groupInfo.group->description()); + if(weightlabels[weightType] == "") + weightlabels[weightType].append("[idx in AltSetSizes array] Name [start idx in weight array];\n"); + + weightlabels[weightType].append(label); typeCount[weightType]++; - - //std::cout << "Weight type read: " << name << std::endl; } } @@ -348,15 +348,7 @@ void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const { - std::cout << "<<<<>>>>>\n"; - std::cout << "Map label:" << (*streamCache(id)).active_label << std::endl; Counter& counter = *streamCache(id)->get(); - for(auto& cm : counter.weightSumMap_) - std::cout << "WeightName:" << cm.first - << "\t size:" << cm.second.size() - << "\t First value:" << cm.second.at(0) - << std::endl; - std::cout << "<<<<>>>>>\n"; //this takes care for mergeing all the weight sums runCounterMap->mergeSumMap(*streamCache(id)); } @@ -375,13 +367,7 @@ void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, edm::EventSetu double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; //Sum from map - std::cout << "SUM map size:" << runCounter.weightSumMap_.size() << std::endl; for(auto& sumw : runCounter.weightSumMap_) { - std::cout << "Adding wsum for:" - << sumw.first << "\t Size:" - << sumw.second.size() - << "\t First value:" << sumw.second.at(0) - << std::endl; //Normalize with genEventSumw for(auto& val : sumw.second) val *= norm; @@ -405,7 +391,7 @@ void LHEWeightsTableProducer::fillDescriptions(edm::ConfigurationDescriptions& d desc.add>("maxGroupsPerType"); desc.addOptionalUntracked>("pdfIds"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); - desc.add("storeAllPSweights", -1)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); + desc.add("storeAllPSweights", 0)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); descriptions.addDefault(desc); } diff --git a/PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py new file mode 100644 index 0000000000000..2fc13f7e22486 --- /dev/null +++ b/PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py @@ -0,0 +1,19 @@ +import FWCore.ParameterSet.Config as cms + +lheWeightsTable = cms.EDProducer( + "LHEWeightsTableProducer", + lheWeights = cms.VInputTag(["externalLHEProducer", "source", "lheWeights"]), + lheWeightPrecision = cms.int32(14), + genWeights = cms.InputTag("genWeights"), + # Warning: you can use a full string, but only the first character is read. + # Note also that the capitalization is important! For example, 'parton shower' + # must be lower case and 'PDF' must be capital + weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'parton shower']), + # Max number of groups to store for each type above, -1 ==> store all found + maxGroupsPerType = cms.vint32([-1, -1, -1, -1, 1]), + # If empty or not specified, no critieria is applied to filter on LHAPDF IDs + #pdfIds = cms.untracked.vint32([91400, 306000, 260000]), + #unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), + #unknownOnlyIfAllEmpty = cms.untracked.bool(False), + storeAllPSweights = cms.bool(False) +) diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 6e81ab1ce2023..6e5a45c467f43 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -5,6 +5,7 @@ from PhysicsTools.NanoAOD.particlelevel_cff import * from PhysicsTools.NanoAOD.lheInfoTable_cfi import * from PhysicsTools.NanoAOD.genWeightsTable_cfi import * +from PhysicsTools.NanoAOD.lheWeightsTable_cfi import * genWeights = cms.EDProducer("GenWeightProductProducer", genInfo = cms.InputTag("generator"), @@ -15,7 +16,7 @@ failIfInvalidXML = cms.untracked.bool(True) #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) ) - +''' lheWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", lheWeights = cms.VInputTag(["externalLHEProducer", "source", "lheWeights"]), @@ -32,7 +33,7 @@ #unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), #unknownOnlyIfAllEmpty = cms.untracked.bool(False), ) - +''' nanoMetadata = cms.EDProducer("UniqueStringProducer", strings = cms.PSet( tag = cms.string("untagged"), From 8ca625f91f8bfe87dbb6f4313447530596d7df0b Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 4 Oct 2020 14:07:35 +0200 Subject: [PATCH 135/186] Parton shower weights handle new naming scheme --- .../Core/interface/WeightHelper.h | 2 + .../Core/src/GenWeightHelper.cc | 3 +- GeneratorInterface/Core/src/WeightHelper.cc | 11 ++- .../plugins/LHEWeightsTableProducer.cc | 16 ++--- .../interface/PartonShowerWeightGroupInfo.h | 22 +++--- .../interface/WeightGroupInfo.h | 5 +- .../src/PartonShowerWeightGroupInfo.cc | 69 ++++++++++++++++++- .../GeneratorProducts/src/WeightGroupInfo.cc | 8 +++ 8 files changed, 107 insertions(+), 29 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index aea58eb6d587f..91fc61d2205ca 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -41,6 +41,8 @@ namespace gen { // TODO: Make this only print from one thread a la // https://github.com/kdlong/cmssw/blob/master/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc#L1069 bool debug_ = true; + const unsigned int FIRST_PSWEIGHT_ENTRY= 2; + const unsigned int DEFAULT_PSWEIGHT_LENGTH = 46; std::string model_; std::vector parsedWeights_; std::map currWeightAttributeMap_; diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index ccc7f0b99b1a3..1fc086f688e56 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -42,8 +42,9 @@ namespace gen { parsedWeights_.push_back( {"", index, weightName, weightName, std::unordered_map(), groupIndex}); if (isPartonShowerWeightGroup(parsedWeights_.back())) { - if (showerGroupIndex < 0) + if (showerGroupIndex < 0) { showerGroupIndex = ++groupIndex; + } parsedWeights_.back().wgtGroup_idx = showerGroupIndex; // all parton showers are grouped together } } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 0b670f015964a..0310e07626c0e 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -279,9 +279,14 @@ namespace gen { std::cout << wgt.description() << "\n"; } else if (wgt.weightType() == gen::WeightType::kPartonShowerWeights) { auto& wgtPS = dynamic_cast(wgt); - for (auto group : wgtPS.getWeightNames()) { - std::cout << group << ": up " << wgtPS.upIndex(group); - std::cout << " - down " << wgtPS.downIndex(group) << std::endl; + if (wgtPS.containedIds().size() == DEFAULT_PSWEIGHT_LENGTH) + wgtPS.setIsWellFormed(true); + + wgtPS.cacheWeightIndicesByLabel(); + std::vector labels = wgtPS.weightLabels(); + if (labels.size() > FIRST_PSWEIGHT_ENTRY && labels.at(FIRST_PSWEIGHT_ENTRY).find(":") != std::string::npos && + labels.at(FIRST_PSWEIGHT_ENTRY).find("=") != std::string::npos) { + wgtPS.setNameIsPythiaSyntax(true); } } if (!wgt.isWellFormed()) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 1c68843586fcb..0d2018ccca2c4 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -272,12 +272,10 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapweightType(); std::string name = weightTypeNames_.at(weightType); std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->name(); - auto& weights = allWeights.at(groupInfo.index); label.append("["); label.append(std::to_string(lheWeightTables[weightType].size()));//to append the start index of this set label.append("]; "); - lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); - weightVecsizes[weightType].emplace_back(weights.size()); + auto& weights = allWeights.at(groupInfo.index); if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && groupInfo.group->nIdsContained() < 10) { weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); @@ -289,6 +287,8 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map(groupInfo.group)); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); } + lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); + weightVecsizes[weightType].emplace_back(weights.size()); //else // label.append(groupInfo.group->description()); if(weightlabels[weightType] == "") @@ -336,11 +336,11 @@ std::vector LHEWeightsTableProducer::getPreferredPSweights(const std::ve const gen::PartonShowerWeightGroupInfo* pswV) const { std::vector psTosave; - double baseline = psWeights.at(pswV->weightIndexFromLabel("Baseline"));//at 1 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefHi"))/baseline ); // at 6 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefHi"))/baseline ); // at 7 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefLo"))/baseline ); // at 8 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefLo"))/baseline ); // at 9 + double baseline = psWeights.at(pswV->weightIndexFromLabel("Baseline")); + psTosave.emplace_back(psWeights.at(pswV->variationIndex(true, true, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV->variationIndex(false, true, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV->variationIndex(true, false, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV->variationIndex(false, false, gen::PSVarType::def))/baseline); return psTosave; } diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index 59f67ce2e3a91..561a8dc805ddb 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -6,6 +6,9 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { + enum class PSVarType { muR, cNS, con, def, red}; + enum class PSSplittingType { combined, g2gg, x2xg, g2qq }; + class PartonShowerWeightGroupInfo : public WeightGroupInfo { public: PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} @@ -17,22 +20,13 @@ namespace gen { virtual ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); virtual PartonShowerWeightGroupInfo *clone() const override; - - // TODO: replace these general functions with specific ones - int upIndex(std::string weightName) { - int index = weightIndexFromLabel(weightName+"Hi"); - return index >= 0 ? index : weightIndexFromLabel(weightName+"_up"); - } - int downIndex(std::string weightName) { - int index = weightIndexFromLabel(weightName+"Low"); - return index >= 0 ? index : weightIndexFromLabel(weightName+"_dn"); - } - std::vector getWeightNames() const { return weightNames; } + void setNameIsPythiaSyntax(bool isPythiaSyntax) { nameIsPythiaSyntax_ = isPythiaSyntax; } + bool nameIsPythiaSyntax(bool isPythiaSyntax) const { return nameIsPythiaSyntax_; } + int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; + int variationIndex(bool isISR, bool isUp, PSVarType variationType) const; private: - std::unordered_map> weightNameToUpDown; - std::vector weightNames; - // Is a variation of the functional form of the dynamic scale + bool nameIsPythiaSyntax_ = false; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 9db98139ec9e6..d53aa6e90c509 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -43,9 +43,9 @@ namespace gen { public: WeightGroupInfo() : WeightGroupInfo("") {} WeightGroupInfo(std::string header, std::string name) - : isWellFormed_(true), headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} + : isWellFormed_(false), headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header) - : isWellFormed_(true), headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} + : isWellFormed_(false), headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} WeightGroupInfo(const WeightGroupInfo& other) { copy(other); } WeightGroupInfo& operator=(const WeightGroupInfo& other) { copy(other); @@ -85,6 +85,7 @@ namespace gen { void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } bool isWellFormed() const { return isWellFormed_; } int weightIndexFromLabel(std::string weightLabel) const; + std::vector weightLabels() const; protected: bool isWellFormed_; diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index eaa004686f281..311819c1e173f 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -1,9 +1,76 @@ #include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" +#include +#include namespace gen { - void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { WeightGroupInfo::copy(other); } + void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { + WeightGroupInfo::copy(other); + nameIsPythiaSyntax_ = other.nameIsPythiaSyntax_; + } PartonShowerWeightGroupInfo* PartonShowerWeightGroupInfo::clone() const { return new PartonShowerWeightGroupInfo(*this); } + + int PartonShowerWeightGroupInfo::variationIndex(bool isISR, bool isUp, PSVarType variationType) const { + return variationIndex(isISR, isUp, variationType, PSSplittingType::combined); + } + + int PartonShowerWeightGroupInfo::variationIndex(bool isISR, bool isUp, PSVarType variationType, + PSSplittingType splittingType) const { + std::string label = isISR ? "isr" : "fsr"; + + if ((variationType == PSVarType::con || variationType == PSVarType::def || variationType == PSVarType::red) + && splittingType != PSSplittingType::combined) + throw std::invalid_argument("VariationType must be muR or CNS if subprocess is specified"); + + std::string variation; + switch(variationType) { + case PSVarType::con: + variation = !nameIsPythiaSyntax_ ? "Con" : (isUp ? "murfac=4.0" : "murfac=0.25"); + break; + case PSVarType::def: + variation = !nameIsPythiaSyntax_ ? "Def" : (isUp ? "murfac=2.0" : "murfac=0.5"); + break; + case PSVarType::red: + variation = !nameIsPythiaSyntax_ ? "Red" : (isUp ? "murfac=1.414" : "murfac=0.707"); + case PSVarType::muR: + variation = !nameIsPythiaSyntax_ ? "muR" : (isUp ? "murfac=2.0" : "murfac=0.5"); + break; + case PSVarType::cNS: + variation = !nameIsPythiaSyntax_ ? "cNS" : (isUp ? "cns=2.0" : "murfac=-2.0"); + break; + } + + std::string splitting; + switch(splittingType) { + case PSSplittingType::g2gg: + splitting = !nameIsPythiaSyntax_ ? "G2GG" : "g2gg"; + break; + case PSSplittingType::g2qq: + splitting = !nameIsPythiaSyntax_ ? "G2QQ" : "g2qq"; + break; + case PSSplittingType::x2xg: + splitting = !nameIsPythiaSyntax_ ? "X2XG" : "x2xg"; + break; + default: + break; + } + + if (nameIsPythiaSyntax_) { + std::string app = splittingType != PSSplittingType::combined ? splitting + ":" + variation : variation; + label += ":" + app; + } + else { + if (splittingType != PSSplittingType::combined) { + label += variation + "_" + splitting + "_" + variation + (isUp ? "_up" : "_dn"); + } + else + label += variation + (isUp ? "Hi" : "Lo"); + } + + return weightIndexFromLabel(label); + + } + } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 04aa722601d9e..8e199219435ac 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -89,6 +89,14 @@ namespace gen { weightLabelsToIndices_[weight.label] = weight.localIndex; } + std::vector WeightGroupInfo::weightLabels() const { + std::vector labels; + labels.reserve(idsContained_.size()); + for (const auto& weight : idsContained_) + labels.push_back(weight.label); + return labels; + } + int WeightGroupInfo::weightIndexFromLabel(std::string weightLabel) const { if (!weightLabelsToIndices_.empty()) { if (weightLabelsToIndices_.find(weightLabel) != weightLabelsToIndices_.end()) From f46cc339bcbe527847695289200daf4b90f0d6cd Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Sun, 4 Oct 2020 22:24:48 +0200 Subject: [PATCH 136/186] Add isWellFormed check for scale weights to helper class --- GeneratorInterface/Core/src/WeightHelper.cc | 6 ++++++ .../plugins/LHEWeightsTableProducer.cc | 15 ++++++++++----- .../interface/ScaleWeightGroupInfo.h | 19 ++++++++++--------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 0310e07626c0e..1879b7dbefea5 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -118,6 +118,12 @@ namespace gen { scaleGroup.setLhaid(-2); } } + if (!(scaleGroup.centralIndex() >= 0 && scaleGroup.muR05muF05Index() >= 0 && + scaleGroup.muR1muF05Index() >= 0 && scaleGroup.muR2muF05Index() >= 0 && + scaleGroup.muR05muF1Index() >= 0 && scaleGroup.muR05muF2Index() >= 0 && + scaleGroup.muR1muF2Index() >= 0 && scaleGroup.muR2muF2Index() >= 0 && + scaleGroup.muR2muF2Index() >= 0)) + scaleGroup.setIsWellFormed(true); } int WeightHelper::lhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup) { diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 0d2018ccca2c4..d01d1902ba945 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -276,22 +276,27 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed() && - groupInfo.group->nIdsContained() < 10) { + if (weightType == gen::WeightType::kScaleWeights) + if (groupInfo.group->isWellFormed()) { weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); label.append( "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else { + size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); + weights = std::vector(weights.begin(), weights.begin()+nstore); + label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + " elements of weights vector, unordered"); } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && groupInfo.group->isWellFormed()) { weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); } - lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); - weightVecsizes[weightType].emplace_back(weights.size()); //else // label.append(groupInfo.group->description()); - if(weightlabels[weightType] == "") + lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); + weightVecsizes[weightType].emplace_back(weights.size()); + + if (weightlabels[weightType].empty()) weightlabels[weightType].append("[idx in AltSetSizes array] Name [start idx in weight array];\n"); weightlabels[weightType].append(label); diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index e5130b9d62c36..881bf4565aa5d 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -22,6 +22,7 @@ namespace gen { inline bool isValidValue(float mu) const { return mu == 0.5 || mu == 1.0 || mu == 2.0; } public: + static const unsigned int MIN_SCALE_VARIATIONS = 9; ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} ScaleWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name), muIndices_(9, -1), dynVec_(9) { @@ -43,15 +44,15 @@ namespace gen { // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) { isFunctionalFormVar_ = functionalVar; } - size_t centralIndex() const { return muIndices_.at(4); } - size_t muR1muF2Index() const { return muIndices_.at(5); } - size_t muR1muF05Index() const { return muIndices_.at(3); } - size_t muR2muF05Index() const { return muIndices_.at(6); } - size_t muR2muF1Index() const { return muIndices_.at(7); } - size_t muR2muF2Index() const { return muIndices_.at(8); } - size_t muR05muF05Index() const { return muIndices_.at(0); } - size_t muR05muF1Index() const { return muIndices_.at(1); } - size_t muR05muF2Index() const { return muIndices_.at(2); } + int centralIndex() const { return muIndices_.at(4); } + int muR1muF2Index() const { return muIndices_.at(5); } + int muR1muF05Index() const { return muIndices_.at(3); } + int muR2muF05Index() const { return muIndices_.at(6); } + int muR2muF1Index() const { return muIndices_.at(7); } + int muR2muF2Index() const { return muIndices_.at(8); } + int muR05muF05Index() const { return muIndices_.at(0); } + int muR05muF1Index() const { return muIndices_.at(1); } + int muR05muF2Index() const { return muIndices_.at(2); } // dynweight version size_t centralIndex(std::string& dynName) const { return getScaleIndex(4, dynName); } size_t muR1muF2Index(std::string& dynName) const { return getScaleIndex(5, dynName); } From 41c79e2f389e640ac0964398bc1440503c9f31b2 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 5 Oct 2020 21:59:53 +0200 Subject: [PATCH 137/186] Create entry for unassociated weights if empty --- .../Core/interface/WeightHelper.h | 1 + .../Core/plugins/GenWeightProductProducer.cc | 3 ++ GeneratorInterface/Core/src/WeightHelper.cc | 28 +++++++++++++++++-- .../plugins/LHEWeightsTableProducer.cc | 1 - 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 91fc61d2205ca..cfd7653064059 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -33,6 +33,7 @@ namespace gen { std::unique_ptr weightProduct(std::vector, float w0); std::unique_ptr weightProduct(std::vector, float w0); void setModel(std::string model) { model_ = model; } + void addUnassociatedGroup() { weightGroups_.push_back(new UnknownWeightGroupInfo("unassociated")); } int addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index a69756f2b2aea..04d5ecff3ce80 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -81,6 +81,9 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.parseWeightGroupsFromNames(weightNames_); auto weightInfoProduct = std::make_unique(); + if (weightHelper_.weightGroups().size() == 0) + weightHelper_.addUnassociatedGroup(); + for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 1879b7dbefea5..4fdb0787c5102 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -219,9 +219,31 @@ namespace gen { int WeightHelper::addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex) { - groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); - auto group = weightGroups_[groupIndex]; - int entry = group.weightVectorEntry(name, weightNum); + bool isUnassociated = false; + try { + groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); + } + catch (const std::range_error& e) { + std::cerr << "WARNING: " << e.what() << std::endl; + isUnassociated = true; + + bool foundUnassocGroup = false; + while (!foundUnassocGroup && groupIndex < static_cast(weightGroups_.size())) { + auto& g = weightGroups_[groupIndex]; + if (g.weightType() == gen::WeightType::kUnknownWeights && g.name() == "unassociated") + foundUnassocGroup = true; + else + groupIndex++; + } + if (!foundUnassocGroup) { + addUnassociatedGroup(); + } + } + auto& group = weightGroups_[groupIndex]; + if (isUnassociated) { + group.addContainedId(weightNum, name, name); + } + int entry = !isUnassociated ? group.weightVectorEntry(name, weightNum) : group.nIdsContained(); if (debug_) std::cout << "Adding weight " << entry << " to group " << groupIndex << std::endl; product->addWeight(weight, groupIndex, entry); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index d01d1902ba945..ac972aadc3373 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -239,7 +239,6 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons std::string wname = wg.second; auto& weightVec = lheWeightTables[wg.first]; counter.incLHE(genWeight, weightVec, wname); - std::cout << "Writing out weight of type:" << wname << std::endl; auto outTable = std::make_unique(weightVec.size(), wname + "Weight", false); outTable->addColumn("", weightVec, weightlabels[wg.first], nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); From 5d2297c253349834740f894dc177a16da3647981 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 6 Oct 2020 02:22:58 +0200 Subject: [PATCH 138/186] Use unique_ptr rather than raw ptrs Still to be determined how to handle producer that really needs shared_ptr --- .../Core/plugins/GenWeightProductProducer.cc | 2 +- .../Core/plugins/LHEWeightProductProducer.cc | 2 +- .../plugins/ExternalLHEProducer.cc | 2 +- .../plugins/LHEWeightsTableProducer.cc | 39 ++++++++++++------- .../interface/GenWeightInfoProduct.h | 15 ++++--- .../src/GenWeightInfoProduct.cc | 33 +++++++++------- 6 files changed, 56 insertions(+), 37 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 04d5ecff3ce80..f066ef0492c83 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -85,7 +85,7 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.addUnassociatedGroup(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } iLumi.put(std::move(weightInfoProduct)); } diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index f06d68d5e81f4..ba2e04dcb0d80 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -124,7 +124,7 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } lumi.put(std::move(weightInfoProduct)); } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 535565cb9a9fb..d48447651e137 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -385,7 +385,7 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } lumi.put(std::move(weightInfoProduct)); } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index ac972aadc3373..ea6aeb1f91d65 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -24,8 +24,8 @@ #include namespace { - typedef std::vector WeightGroupDataContainer; - typedef std::array, 2> WeightGroupsToStore; + typedef std::vector WeightGroupDataContainer; + typedef std::array, 2> WeightGroupsToStore; } // namespace using CounterMap = genCounter::CounterMap; using Counter = genCounter::Counter; @@ -80,11 +80,13 @@ public edm::global::EDProducer, WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { if (foundLheWeights) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + for (auto& w : lheWeights) + weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); } auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); + for (auto& w : genWeights) + weightsToStore.at(inGen).push_back({w.index, std::move(w.group)}); } return std::make_shared(weightsToStore); } @@ -277,7 +279,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { - weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); + weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); label.append( "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" @@ -287,7 +289,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { - weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); + weights = getPreferredPSweights(weights, static_cast(groupInfo.group.get())); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); } //else @@ -306,18 +308,27 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map& weightsHandle, gen::WeightType weightType, int& maxStore) const { - WeightGroupDataContainer group; + WeightGroupDataContainer groups; + std::vector allgroups; if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); } else - group = weightsHandle->weightGroupsAndIndicesByType(weightType); + allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); - if (maxStore < 0 || static_cast(group.size()) <= maxStore) { + int toStore = maxStore; + if (maxStore < 0 || static_cast(groups.size()) <= maxStore) { // Modify size in case one type of weight is present in multiple products - maxStore -= group.size(); - return group; + maxStore -= groups.size(); + toStore = groups.size(); } - return std::vector(group.begin(), group.begin() + maxStore); + + WeightGroupDataContainer out; + for (int i = 0; i < toStore; i++) { + auto& group = groups.at(i); + gen::SharedWeightGroupData temp = {group.index, std::move(group.group)}; + out.push_back(temp); + } + return out; } std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index 550a886df1757..e0db5a539f86b 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -16,7 +16,12 @@ namespace gen { struct WeightGroupData { size_t index; - const gen::WeightGroupInfo* group; + std::unique_ptr group; + }; + + struct SharedWeightGroupData { + size_t index; + std::shared_ptr group; }; } // namespace gen @@ -31,14 +36,14 @@ class GenWeightInfoProduct { GenWeightInfoProduct& operator=(GenWeightInfoProduct&& other); const edm::OwnVector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; - std::vector weightGroupsByType(gen::WeightType type) const; + const std::unique_ptr containingWeightGroupInfo(int index) const; + const std::unique_ptr orderedWeightGroupInfo(int index) const; + std::vector> weightGroupsByType(gen::WeightType type) const; std::vector weightGroupIndicesByType(gen::WeightType type) const; std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; std::optional pdfGroupWithIndexByLHAID(int lhaid) const; std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; - void addWeightGroupInfo(gen::WeightGroupInfo* info); + void addWeightGroupInfo(std::unique_ptr info); const int numberOfGroups() const { return weightGroupsInfo_.size(); } private: diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 7b53436c4c7ff..23b63469354f2 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -22,46 +22,48 @@ const edm::OwnVector& GenWeightInfoProduct::allWeightGroup return weightGroupsInfo_; } -const gen::WeightGroupInfo* GenWeightInfoProduct::containingWeightGroupInfo(int index) const { +const std::unique_ptr GenWeightInfoProduct::containingWeightGroupInfo(int index) const { for (const auto& weightGroup : weightGroupsInfo_) { if (weightGroup.indexInRange(index)) - return &weightGroup; + return std::make_unique(weightGroup); } throw std::domain_error("Failed to find containing weight group"); } -const gen::WeightGroupInfo* GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { +const std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) throw std::range_error("Weight index out of range!"); - return &weightGroupsInfo_[weightGroupIndex]; + return std::make_unique(weightGroupsInfo_[weightGroupIndex]); } std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { std::vector matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); + matchingGroups.push_back({i, std::make_unique(weightGroupsInfo_[i])}); } return matchingGroups; } -std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { - std::vector matchingGroups; +std::vector> GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { + std::vector> matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back(weightGroupsInfo_[i].clone()); + matchingGroups.push_back(std::make_unique(weightGroupsInfo_[i])); } return matchingGroups; } std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(int lhaid) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + std::vector pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); + auto pdfGroup = std::make_unique(*static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); - return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; + + return matchingPdfSet == pdfGroups.end() ? std::nullopt : + std::optional({matchingPdfSet->index, std::move(matchingPdfSet->group)}); } std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs( @@ -71,11 +73,12 @@ std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLH for (auto lhaid : lhaids) { auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); + auto pdfGroup = std::make_unique(*static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); - if (matchingPdfSet != pdfGroups.end()) - pdfGroups.push_back(*matchingPdfSet); + if (matchingPdfSet != pdfGroups.end()) { + pdfGroups.push_back({matchingPdfSet->index, std::move(matchingPdfSet->group)}); + } } return pdfGroups; @@ -90,4 +93,4 @@ std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType return matchingGroupIndices; } -void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } +void GenWeightInfoProduct::addWeightGroupInfo(std::unique_ptr info) { weightGroupsInfo_.push_back(std::move(info)); } From b504240a2478802c5e43a7881a28980e68a00a98 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 6 Oct 2020 11:44:05 +0200 Subject: [PATCH 139/186] Add unassociated group for LHE --- GeneratorInterface/Core/interface/WeightHelper.h | 5 ++++- GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index cfd7653064059..de166a87772a3 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -33,7 +33,10 @@ namespace gen { std::unique_ptr weightProduct(std::vector, float w0); std::unique_ptr weightProduct(std::vector, float w0); void setModel(std::string model) { model_ = model; } - void addUnassociatedGroup() { weightGroups_.push_back(new UnknownWeightGroupInfo("unassociated")); } + void addUnassociatedGroup() { + weightGroups_.push_back(std::make_unique("unassociated")); + weightGroups_.back().setDescription("Weights missing or with invalid header meta data"); + } int addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index ba2e04dcb0d80..5937693c518b8 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -121,6 +121,8 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& return; weightHelper_.parseWeights(); + if (weightHelper_.weightGroups().size() == 0) + weightHelper_.addUnassociatedGroup(); auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { From fb256afb06fb8baede00cd478f41cf56b9328f2f Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 13 Oct 2020 14:27:53 +0200 Subject: [PATCH 140/186] Refactor ScaleWeightGroup to simplify codebase --- GeneratorInterface/Core/src/WeightHelper.cc | 60 +++++++++---------- .../interface/ScaleWeightGroupInfo.h | 10 ++-- .../src/ScaleWeightGroupInfo.cc | 27 ++++----- 3 files changed, 45 insertions(+), 52 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 4fdb0787c5102..32e74525afa42 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -86,44 +86,43 @@ namespace gen { } void WeightHelper::updateScaleInfo(const ParsedWeight& weight, int index) { - auto& group = weightGroups_[index]; - auto& scaleGroup = dynamic_cast(group); + auto& scaleGroup = dynamic_cast(weightGroups_[index]); + std::string muRText = searchAttributes("mur", weight); std::string muFText = searchAttributes("muf", weight); - - if (muRText.empty() || muFText.empty()) { + std::string dynNumText = searchAttributes("dyn", weight); + float muR, muF; + try { + muR = std::stof(muRText); + muF = std::stof(muFText); + } catch (...) { scaleGroup.setIsWellFormed(false); return; + /// do something } - try { - float muR = std::stof(muRText); - float muF = std::stof(muFText); - std::string dynNumText = searchAttributes("dyn", weight); - if (dynNumText.empty()) { - scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); - } else { - std::string dynType = searchAttributes("dyn_name", weight); + if (dynNumText.empty()) { + scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF); + } else { + std::string dynType = searchAttributes("dyn_name", weight); + try { int dynNum = std::stoi(dynNumText); - scaleGroup.setMuRMuFIndex(weight.index, weight.id, muR, muF, dynNum, dynType); + scaleGroup.setDyn(weight.index, weight.id, muR, muF, dynNum, dynType); + } catch (...) { + scaleGroup.setIsWellFormed(false); + /// do something here } - } catch (std::invalid_argument& e) { - scaleGroup.setIsWellFormed(false); } + if (scaleGroup.lhaid() == -1) { std::string lhaidText = searchAttributes("pdf", weight); try { scaleGroup.setLhaid(std::stoi(lhaidText)); - } catch (std::invalid_argument& e) { + } catch (...) { scaleGroup.setLhaid(-2); + // do something here } } - if (!(scaleGroup.centralIndex() >= 0 && scaleGroup.muR05muF05Index() >= 0 && - scaleGroup.muR1muF05Index() >= 0 && scaleGroup.muR2muF05Index() >= 0 && - scaleGroup.muR05muF1Index() >= 0 && scaleGroup.muR05muF2Index() >= 0 && - scaleGroup.muR1muF2Index() >= 0 && scaleGroup.muR2muF2Index() >= 0 && - scaleGroup.muR2muF2Index() >= 0)) - scaleGroup.setIsWellFormed(true); } int WeightHelper::lhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup) { @@ -222,8 +221,7 @@ namespace gen { bool isUnassociated = false; try { groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); - } - catch (const std::range_error& e) { + } catch (const std::range_error& e) { std::cerr << "WARNING: " << e.what() << std::endl; isUnassociated = true; @@ -245,7 +243,7 @@ namespace gen { } int entry = !isUnassociated ? group.weightVectorEntry(name, weightNum) : group.nIdsContained(); if (debug_) - std::cout << "Adding weight " << entry << " to group " << groupIndex << std::endl; + std::cout << "Adding weight " << entry << " to group " << groupIndex << std::endl; product->addWeight(weight, groupIndex, entry); return groupIndex; } @@ -308,12 +306,12 @@ namespace gen { } else if (wgt.weightType() == gen::WeightType::kPartonShowerWeights) { auto& wgtPS = dynamic_cast(wgt); if (wgtPS.containedIds().size() == DEFAULT_PSWEIGHT_LENGTH) - wgtPS.setIsWellFormed(true); + wgtPS.setIsWellFormed(true); wgtPS.cacheWeightIndicesByLabel(); std::vector labels = wgtPS.weightLabels(); if (labels.size() > FIRST_PSWEIGHT_ENTRY && labels.at(FIRST_PSWEIGHT_ENTRY).find(":") != std::string::npos && - labels.at(FIRST_PSWEIGHT_ENTRY).find("=") != std::string::npos) { + labels.at(FIRST_PSWEIGHT_ENTRY).find("=") != std::string::npos) { wgtPS.setNameIsPythiaSyntax(true); } } @@ -324,8 +322,8 @@ namespace gen { std::unique_ptr WeightHelper::buildGroup(ParsedWeight& weight) { if (debug_) { - std::cout << "Building group for weight group " << weight.groupname - << " weight content is " << weight.content << std::endl; + std::cout << "Building group for weight group " << weight.groupname << " weight content is " << weight.content + << std::endl; } if (isScaleWeightGroup(weight)) return std::make_unique(weight.groupname); @@ -349,8 +347,8 @@ namespace gen { weight.wgtGroup_idx += groupOffset; currentGroupIdx = weight.wgtGroup_idx; if (debug_) - std::cout << "Building group for weight " << weight.content << " group " - << weight.groupname << " group index " << weight.wgtGroup_idx << std::endl; + std::cout << "Building group for weight " << weight.content << " group " << weight.groupname << " group index " + << weight.wgtGroup_idx << std::endl; int numGroups = static_cast(weightGroups_.size()); if (weight.wgtGroup_idx == numGroups) { diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 881bf4565aa5d..fdd2bca836258 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -12,12 +12,11 @@ namespace gen { std::vector muIndices_; bool containsCentral_ = false; int lhaid_ = -1; + bool hasAllWeights = false; // Dyn_scale std::vector dynNames_; std::vector> dynVec_; - void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF); - void setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF, size_t dynNum, std::string dynName); inline int getIndex(int muR, int muF) const { return 3 * muR + muF; } inline bool isValidValue(float mu) const { return mu == 0.5 || mu == 1.0 || mu == 2.0; } @@ -35,10 +34,11 @@ namespace gen { void copy(const ScaleWeightGroupInfo& other); virtual ScaleWeightGroupInfo* clone() const override; bool containsCentralWeight() const { return containsCentral_; } + void addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF); + bool isWellFormed() { return isWellFormed_ && hasAllWeights; } - void setMuRMuFIndex( - int globalIndex, std::string id, float muR, float muF, size_t dynNum = -1, std::string dynName = ""); - void addContainedId(int weightEntry, std::string id, std::string label, float muR, float muF); + void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); + void setDyn(int globalIndex, std::string id, float muR, float muF, size_t dynNum, std::string dynName); int lhaid() { return lhaid_; } void setLhaid(int lhaid) { lhaid_ = lhaid; } // Is a variation of the functional form of the dynamic scale diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 72dc7b6f48133..a63eca94aab9e 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -28,16 +28,8 @@ namespace gen { setMuRMuFIndex(globalIndex, id, muR, muF); } - void ScaleWeightGroupInfo::setMuRMuFIndex( - int globalIndex, std::string id, float muR, float muF, size_t dynNum, std::string dynName) { - auto metaInfo = weightMetaInfoByGlobalIndex(id, globalIndex); - if ((int)dynNum == -1) - setMuRMuFIndex(metaInfo, muR, muF); - else - setMuRMuFIndex(metaInfo, muR, muF, dynNum, dynName); - } - - void ScaleWeightGroupInfo::setMuRMuFIndex(WeightMetaInfo& info, float muR, float muF) { + void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { + auto info = weightMetaInfoByGlobalIndex(id, globalIndex); int index = getIndex(muR, muF); if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { isWellFormed_ = false; @@ -46,15 +38,18 @@ namespace gen { if (index == 4) containsCentral_ = true; muIndices_[index] = info.localIndex; + + for (int muidx : muIndices_) { + if (muidx == -1) + return; + } + hasAllWeights = true; } - void ScaleWeightGroupInfo::setMuRMuFIndex( - WeightMetaInfo& info, float muR, float muF, size_t dynNum, std::string dynName) { + void ScaleWeightGroupInfo::setDyn( + int globalIndex, std::string id, float muR, float muF, size_t dynNum, std::string dynName) { + auto info = weightMetaInfoByGlobalIndex(id, globalIndex); int index = getIndex(muR, muF); - if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { - isWellFormed_ = false; - return; - } // resize if too small if (dynVec_.at(index).size() < dynNum + 1) { for (auto& dynIt : dynVec_) From cf688ffc02f4675b81c7b359fa823cc97b06f523 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 13 Oct 2020 16:23:45 +0200 Subject: [PATCH 141/186] Remove/change lines in WeightHelper to clean --- GeneratorInterface/Core/src/WeightHelper.cc | 32 +++++++-------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 32e74525afa42..b5ce40e551b90 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -11,7 +11,6 @@ namespace gen { bool WeightHelper::isPdfWeightGroup(const ParsedWeight& weight) { const std::string& name = weight.groupname; - if (name.find("PDF_variation") != std::string::npos) return true; return LHAPDF::lookupLHAPDFID(name) != -1; @@ -19,25 +18,25 @@ namespace gen { bool WeightHelper::isPartonShowerWeightGroup(const ParsedWeight& weight) { const std::string& name = boost::to_lower_copy(weight.groupname); - // But "Nominal" and "Baseline" weights in the PS group return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos || name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { - std::string lhaidText = searchAttributes("pdf", weight); + std::pair pairLHA; try { - auto pairLHA = LHAPDF::lookupPDF(stoi(lhaidText)); - // require pdf set to exist and it to be the first entry (ie 0) - // possibly change this requirement - if (!pairLHA.first.empty() && pairLHA.second == 0) { - weight.groupname = std::string(pairLHA.first); - return true; - } - } catch (...) { + pairLHA = LHAPDF::lookupPDF(stoi(searchAttributes("pdf", weight))); + } catch(...) { return false; } - return false; + + if (!pairLHA.first.empty() && pairLHA.second == 0) { + weight.groupname = std::string(pairLHA.first); + return true; + } else { + return false; + } + } bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { @@ -49,7 +48,6 @@ namespace gen { std::string WeightHelper::searchAttributes(const std::string& label, const ParsedWeight& weight) const { std::string attribute = searchAttributesByTag(label, weight); return attribute.empty() ? searchAttributesByRegex(label, weight) : attribute; - attribute = searchAttributesByRegex(label, weight); } std::string WeightHelper::searchAttributesByTag(const std::string& label, const ParsedWeight& weight) const { @@ -62,14 +60,6 @@ namespace gen { return ""; } - std::string WeightHelper::searchString(const std::string& label, const std::string& name) { - for (const auto& lab : attributeNames_.at(label)) { - if (name.find(lab) != std::string::npos) - return name.substr(0, name.find(lab)); - } - return ""; - } - std::string WeightHelper::searchAttributesByRegex(const std::string& label, const ParsedWeight& weight) const { auto& content = weight.content; std::smatch match; From 701df456b651f0f8dce5b8e68611bd060365e03c Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 13 Oct 2020 16:09:07 +0200 Subject: [PATCH 142/186] Fix naming problems in ScaleWeight --- GeneratorInterface/Core/src/WeightHelper.cc | 20 +++--- .../interface/ScaleWeightGroupInfo.h | 65 +++++++++++-------- .../src/ScaleWeightGroupInfo.cc | 40 ++++++------ 3 files changed, 68 insertions(+), 57 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index b5ce40e551b90..c1e5e127d64c1 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -278,17 +278,17 @@ namespace gen { std::cout << wgtScale.muR05muF1Index() << " "; std::cout << wgtScale.muR05muF2Index() << " "; std::cout << wgtScale.muR05muF05Index() << " \n"; - for (auto name : wgtScale.getDynNames()) { + for (auto name : wgtScale.dynNames()) { std::cout << name << ": "; - std::cout << wgtScale.getScaleIndex(1.0, 1.0, name) << " "; - std::cout << wgtScale.getScaleIndex(1.0, 2.0, name) << " "; - std::cout << wgtScale.getScaleIndex(1.0, 0.5, name) << " "; - std::cout << wgtScale.getScaleIndex(2.0, 1.0, name) << " "; - std::cout << wgtScale.getScaleIndex(2.0, 2.0, name) << " "; - std::cout << wgtScale.getScaleIndex(2.0, 0.5, name) << " "; - std::cout << wgtScale.getScaleIndex(0.5, 1.0, name) << " "; - std::cout << wgtScale.getScaleIndex(0.5, 2.0, name) << " "; - std::cout << wgtScale.getScaleIndex(0.5, 0.5, name) << "\n"; + std::cout << wgtScale.scaleIndex(1.0, 1.0, name) << " "; + std::cout << wgtScale.scaleIndex(1.0, 2.0, name) << " "; + std::cout << wgtScale.scaleIndex(1.0, 0.5, name) << " "; + std::cout << wgtScale.scaleIndex(2.0, 1.0, name) << " "; + std::cout << wgtScale.scaleIndex(2.0, 2.0, name) << " "; + std::cout << wgtScale.scaleIndex(2.0, 0.5, name) << " "; + std::cout << wgtScale.scaleIndex(0.5, 1.0, name) << " "; + std::cout << wgtScale.scaleIndex(0.5, 2.0, name) << " "; + std::cout << wgtScale.scaleIndex(0.5, 0.5, name) << "\n"; } } else if (wgt.weightType() == gen::WeightType::kPdfWeights) { diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index fdd2bca836258..31e8812ddf85c 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -17,14 +17,26 @@ namespace gen { std::vector dynNames_; std::vector> dynVec_; - inline int getIndex(int muR, int muF) const { return 3 * muR + muF; } + inline int indexFromMus(int muR, int muF) const { return 3 * muR + muF; } inline bool isValidValue(float mu) const { return mu == 0.5 || mu == 1.0 || mu == 2.0; } + enum scaleIndices { + muR0p5_muF0p5_idx = 0, + muR0p5_muF1_idx = 1, + muR0p5_muF2_idx = 2, + muR1_muF0p5_idx = 3, + Central_idx = 4, + muR1_muF2_idx = 5, + muR2_muF0p5_idx = 6, + muR2_muF1_idx = 7, + muR2_muF2_idx = 8 + }; + public: static const unsigned int MIN_SCALE_VARIATIONS = 9; ScaleWeightGroupInfo() : ScaleWeightGroupInfo("") {} ScaleWeightGroupInfo(std::string header, std::string name) - : WeightGroupInfo(header, name), muIndices_(9, -1), dynVec_(9) { + : WeightGroupInfo(header, name), muIndices_(MIN_SCALE_VARIATIONS, -1), dynVec_(MIN_SCALE_VARIATIONS) { weightType_ = WeightType::kScaleWeights; isFunctionalFormVar_ = false; } @@ -44,33 +56,34 @@ namespace gen { // Is a variation of the functional form of the dynamic scale bool isFunctionalFormVariation(); void setIsFunctionalFormVariation(bool functionalVar) { isFunctionalFormVar_ = functionalVar; } - int centralIndex() const { return muIndices_.at(4); } - int muR1muF2Index() const { return muIndices_.at(5); } - int muR1muF05Index() const { return muIndices_.at(3); } - int muR2muF05Index() const { return muIndices_.at(6); } - int muR2muF1Index() const { return muIndices_.at(7); } - int muR2muF2Index() const { return muIndices_.at(8); } - int muR05muF05Index() const { return muIndices_.at(0); } - int muR05muF1Index() const { return muIndices_.at(1); } - int muR05muF2Index() const { return muIndices_.at(2); } + int centralIndex() const { return muIndices_.at(Central_idx); } + int muR1muF2Index() const { return muIndices_.at(muR1_muF2_idx); } + int muR1muF05Index() const { return muIndices_.at(muR1_muF0p5_idx); } + int muR2muF05Index() const { return muIndices_.at(muR2_muF0p5_idx); } + int muR2muF1Index() const { return muIndices_.at(muR2_muF1_idx); } + int muR2muF2Index() const { return muIndices_.at(muR2_muF2_idx); } + int muR05muF05Index() const { return muIndices_.at(muR0p5_muF0p5_idx); } + int muR05muF1Index() const { return muIndices_.at(muR0p5_muF1_idx); } + int muR05muF2Index() const { return muIndices_.at(muR0p5_muF2_idx); } + // dynweight version - size_t centralIndex(std::string& dynName) const { return getScaleIndex(4, dynName); } - size_t muR1muF2Index(std::string& dynName) const { return getScaleIndex(5, dynName); } - size_t muR1muF05Index(std::string& dynName) const { return getScaleIndex(3, dynName); } - size_t muR2muF05Index(std::string& dynName) const { return getScaleIndex(6, dynName); } - size_t muR2muF1Index(std::string& dynName) const { return getScaleIndex(7, dynName); } - size_t muR2muF2Index(std::string& dynName) const { return getScaleIndex(8, dynName); } - size_t muR05muF05Index(std::string& dynName) const { return getScaleIndex(0, dynName); } - size_t muR05muF1Index(std::string& dynName) const { return getScaleIndex(1, dynName); } - size_t muR05muF2Index(std::string& dynName) const { return getScaleIndex(2, dynName); } + size_t centralIndex(std::string& dynName) const { return scaleIndex(Central_idx, dynName); } + size_t muR1muF2Index(std::string& dynName) const { return scaleIndex(muR1_muF2_idx, dynName); } + size_t muR1muF05Index(std::string& dynName) const { return scaleIndex(muR1_muF0p5_idx, dynName); } + size_t muR2muF05Index(std::string& dynName) const { return scaleIndex(muR2_muF0p5_idx, dynName); } + size_t muR2muF1Index(std::string& dynName) const { return scaleIndex(muR2_muF1_idx, dynName); } + size_t muR2muF2Index(std::string& dynName) const { return scaleIndex(muR2_muF2_idx, dynName); } + size_t muR05muF05Index(std::string& dynName) const { return scaleIndex(muR0p5_muF0p5_idx, dynName); } + size_t muR05muF1Index(std::string& dynName) const { return scaleIndex(muR0p5_muF1_idx, dynName); } + size_t muR05muF2Index(std::string& dynName) const { return scaleIndex(muR0p5_muF2_idx, dynName); } - size_t getScaleIndex(float muR, float muF, size_t dynNum) const; - size_t getScaleIndex(float muR, float muF, std::string& dynName) const; - size_t getScaleIndex(int index, std::string& dynName) const; - size_t getScaleIndex(float muR, float muF) const; + size_t scaleIndex(float muR, float muF, size_t dynNum) const; + size_t scaleIndex(float muR, float muF, std::string& dynName) const; + size_t scaleIndex(int index, std::string& dynName) const; + size_t scaleIndex(float muR, float muF) const; - size_t getScaleIndex(int index, size_t dynNum) const { return dynVec_.at(index).at(dynNum); } - std::vector getDynNames() const; + size_t scaleIndex(int index, size_t dynNum) const { return dynVec_.at(index).at(dynNum); } + std::vector dynNames() const; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index a63eca94aab9e..3dd8498472a79 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -30,12 +30,12 @@ namespace gen { void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { auto info = weightMetaInfoByGlobalIndex(id, globalIndex); - int index = getIndex(muR, muF); - if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { + int index = indexFromMus(muR, muF); + if (!(isValidValue(muR) && isValidValue(muF))) { isWellFormed_ = false; return; } - if (index == 4) + if (index == Central_idx) containsCentral_ = true; muIndices_[index] = info.localIndex; @@ -49,7 +49,7 @@ namespace gen { void ScaleWeightGroupInfo::setDyn( int globalIndex, std::string id, float muR, float muF, size_t dynNum, std::string dynName) { auto info = weightMetaInfoByGlobalIndex(id, globalIndex); - int index = getIndex(muR, muF); + int index = indexFromMus(muR, muF); // resize if too small if (dynVec_.at(index).size() < dynNum + 1) { for (auto& dynIt : dynVec_) @@ -62,39 +62,37 @@ namespace gen { dynVec_[index][dynNum] = info.localIndex; } - size_t ScaleWeightGroupInfo::getScaleIndex(float muR, float muF, std::string& dynName) const { + size_t ScaleWeightGroupInfo::scaleIndex(float muR, float muF, std::string& dynName) const { auto it = std::find(dynNames_.begin(), dynNames_.end(), dynName); if (it == dynNames_.end()) return -1; else - return getScaleIndex(muR, muF, it - dynNames_.begin()); + return scaleIndex(muR, muF, it - dynNames_.begin()); } - size_t ScaleWeightGroupInfo::getScaleIndex(int index, std::string& dynName) const { + + size_t ScaleWeightGroupInfo::scaleIndex(int index, std::string& dynName) const { auto it = std::find(dynNames_.begin(), dynNames_.end(), dynName); if (it == dynNames_.end()) return -1; else - return getScaleIndex(index, it - dynNames_.begin()); + return scaleIndex(index, it - dynNames_.begin()); } - size_t ScaleWeightGroupInfo::getScaleIndex(float muR, float muF, size_t dynNum) const { - int index = getIndex(muR, muF); - if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF)) || dynNum + 1 > dynNames_.size()) { - // Bad access! + size_t ScaleWeightGroupInfo::scaleIndex(float muR, float muF, size_t dynNum) const { + ; + if (!(isValidValue(muR) && isValidValue(muF)) || dynNum + 1 > dynNames_.size()) return -1; - } - return getScaleIndex(index, dynNum); + else + return scaleIndex(indexFromMus(muR, muF), dynNum); } - size_t ScaleWeightGroupInfo::getScaleIndex(float muR, float muF) const { - int index = getIndex(muR, muF); - if (index < 0 || index > 8 || !(isValidValue(muR) && isValidValue(muF))) { - // Bad access! + size_t ScaleWeightGroupInfo::scaleIndex(float muR, float muF) const { + if (!(isValidValue(muR) && isValidValue(muF))) return -1; - } - return muIndices_.at(index); + else + return muIndices_.at(indexFromMus(muR, muF)); } - std::vector ScaleWeightGroupInfo::getDynNames() const { + std::vector ScaleWeightGroupInfo::dynNames() const { std::vector returnVec; for (auto item : dynNames_) { if (!item.empty()) From 160c92527dac6f25b4be349f07b509be0a0d659e Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 13 Oct 2020 17:51:22 +0200 Subject: [PATCH 143/186] Refactor LHWeightHelper (moved to helper functions) --- .../Core/interface/LHEWeightHelper.h | 3 + .../Core/src/LHEWeightHelper.cc | 100 ++++++++++-------- 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index f29aaf5f2f7df..b2f636250f230 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -28,6 +28,9 @@ namespace gen { private: std::vector headerLines_; bool failIfInvalidXML_ = false; + std::string parseGroupName(tinyxml2::XMLElement* el); + void addGroup(tinyxml2::XMLElement* inner, std::string groupName, int groupIndex, int& weightIndex); + bool parseLHE(tinyxml2::XMLDocument& xmlDoc); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index e9a7515d123e3..888b545596f08 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -11,19 +11,18 @@ namespace gen { headerLines_ = headerLines; } - void LHEWeightHelper::parseWeights() { + bool LHEWeightHelper::parseLHE(tinyxml2::XMLDocument& xmlDoc) { parsedWeights_.clear(); if (!isConsistent() && failIfInvalidXML_) { throw std::runtime_error( - "XML in LHE is not consistent: Most likely, tags were swapped.\n" - "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" - "WARNING: the tag swapping may lead to weights associated with the incorrect group"); + "XML in LHE is not consistent: Most likely, tags were swapped.\n" + "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" + "WARNING: the tag swapping may lead to weights associated with the incorrect group"); } else if (!isConsistent()) { swapHeaders(); } - tinyxml2::XMLDocument xmlDoc; std::string fullHeader = boost::algorithm::join(headerLines_, ""); if (debug_) std::cout << "Full header is \n" << fullHeader << std::endl; @@ -42,68 +41,75 @@ namespace gen { if (failIfInvalidXML_) throw std::runtime_error("XML is unreadable because of above error."); else - return; + return false; } - std::vector nameAlts_ = {"name", "type"}; + return true; + } + + void LHEWeightHelper::addGroup(tinyxml2::XMLElement* inner, std::string groupName, int groupIndex, int& weightIndex) { + for (; inner != nullptr; inner = inner->NextSiblingElement("weight")) { + if (debug_) + std::cout << "Found a weight inside the group. Content is " << inner->GetText() << " group index is " << groupIndex << std::endl; + std::string text = ""; + if (inner->GetText()) + text = inner->GetText(); + std::unordered_map attributes; + for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); + } + + } + + + void LHEWeightHelper::parseWeights() { + tinyxml2::XMLDocument xmlDoc; + if(!parseLHE(xmlDoc)) { + return; + } int weightIndex = 0; int groupIndex = 0; for (auto* e = xmlDoc.RootElement(); e != nullptr; e = e->NextSiblingElement()) { - if (debug_) + if (debug_) std::cout << "XML element is " << e->Name() << std::endl; std::string groupName = ""; if (strcmp(e->Name(), "weight") == 0) { - if (debug_) + if (debug_) std::cout << "Found weight unmatched to group\n"; - // we are here if there is a weight that does not belong to any group - // TODO: Recylce code better between here when a weight is found in a group - std::string text = ""; - if (e->GetText()) { - text = e->GetText(); - } - std::unordered_map attributes; - for (auto* att = e->FirstAttribute(); att != nullptr; att = att->Next()) - attributes[att->Name()] = att->Value(); - parsedWeights_.push_back({e->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); + // need to fix + addGroup(e, groupName, groupIndex, weightIndex); } else if (strcmp(e->Name(), "weightgroup") == 0) { if (debug_) std::cout << "Found a weight group.\n"; - // to deal wiht files with "id" instead of "name" - for (auto nameAtt : nameAlts_) { - if (e->Attribute(nameAtt.c_str())) { - groupName = e->Attribute(nameAtt.c_str()); - break; - } - } - if (groupName.empty()) { - // TODO: Need a better failure mode - throw std::runtime_error("couldn't find groupname"); - } - // May remove this, very specific error - if (groupName.find(".") != std::string::npos) - groupName.erase(groupName.find("."), groupName.size()); + groupName = parseGroupName(e); + addGroup(e->FirstChildElement("weight"), groupName, groupIndex, weightIndex); - for (auto* inner = e->FirstChildElement("weight"); inner != nullptr; - inner = inner->NextSiblingElement("weight")) { - // we are here if there is a weight in a weightgroup - if (debug_) - std::cout << "Found a weight inside the group. Content is " << inner->GetText() << " group index is " << groupIndex << std::endl; - std::string text = ""; - if (inner->GetText()) - text = inner->GetText(); - std::unordered_map attributes; - for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) - attributes[att->Name()] = att->Value(); - parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); - } } else - std::cout << "Found an invalid entry\n"; + std::cout << "Found an invalid entry\n"; groupIndex++; } buildGroups(); } + std::string LHEWeightHelper::parseGroupName(tinyxml2::XMLElement* el) { + std::vector nameAlts_ = {"name", "type"}; + for (auto nameAtt : nameAlts_) { + if (el->Attribute(nameAtt.c_str())) { + std::string groupName = el->Attribute(nameAtt.c_str()); + if (groupName.find(".") != std::string::npos) + groupName.erase(groupName.find("."), groupName.size()); + return groupName; + } + } + bool hardFail = true; + if (hardFail) { + throw std::runtime_error("couldn't find groupname"); + } + return ""; + } + bool LHEWeightHelper::isConsistent() { int curLevel = 0; From fe416e32670796b4d274796594bd4d6abae728ff Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Wed, 14 Oct 2020 19:52:45 +0200 Subject: [PATCH 144/186] Fix errors in ScaleWeight and add print statements for debug --- .../Core/interface/WeightHelper.h | 10 ++-- .../Core/src/LHEWeightHelper.cc | 47 ++++++++++--------- GeneratorInterface/Core/src/WeightHelper.cc | 6 ++- .../interface/ScaleWeightGroupInfo.h | 1 + .../src/ScaleWeightGroupInfo.cc | 5 ++ 5 files changed, 39 insertions(+), 30 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index de166a87772a3..cfc14ceffc7db 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -33,8 +33,8 @@ namespace gen { std::unique_ptr weightProduct(std::vector, float w0); std::unique_ptr weightProduct(std::vector, float w0); void setModel(std::string model) { model_ = model; } - void addUnassociatedGroup() { - weightGroups_.push_back(std::make_unique("unassociated")); + void addUnassociatedGroup() { + weightGroups_.push_back(std::make_unique("unassociated")); weightGroups_.back().setDescription("Weights missing or with invalid header meta data"); } int addWeightToProduct( @@ -42,10 +42,10 @@ namespace gen { int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); protected: - // TODO: Make this only print from one thread a la + // TODO: Make this only print from one thread a la // https://github.com/kdlong/cmssw/blob/master/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc#L1069 - bool debug_ = true; - const unsigned int FIRST_PSWEIGHT_ENTRY= 2; + bool debug_ = true; //true; + const unsigned int FIRST_PSWEIGHT_ENTRY = 2; const unsigned int DEFAULT_PSWEIGHT_LENGTH = 46; std::string model_; std::vector parsedWeights_; diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 888b545596f08..013072992d45e 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -7,18 +7,16 @@ using namespace tinyxml2; namespace gen { - void LHEWeightHelper::setHeaderLines(std::vector headerLines) { - headerLines_ = headerLines; - } + void LHEWeightHelper::setHeaderLines(std::vector headerLines) { headerLines_ = headerLines; } bool LHEWeightHelper::parseLHE(tinyxml2::XMLDocument& xmlDoc) { parsedWeights_.clear(); if (!isConsistent() && failIfInvalidXML_) { throw std::runtime_error( - "XML in LHE is not consistent: Most likely, tags were swapped.\n" - "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" - "WARNING: the tag swapping may lead to weights associated with the incorrect group"); + "XML in LHE is not consistent: Most likely, tags were swapped.\n" + "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" + "WARNING: the tag swapping may lead to weights associated with the incorrect group"); } else if (!isConsistent()) { swapHeaders(); } @@ -48,24 +46,23 @@ namespace gen { } void LHEWeightHelper::addGroup(tinyxml2::XMLElement* inner, std::string groupName, int groupIndex, int& weightIndex) { - for (; inner != nullptr; inner = inner->NextSiblingElement("weight")) { - if (debug_) - std::cout << "Found a weight inside the group. Content is " << inner->GetText() << " group index is " << groupIndex << std::endl; - std::string text = ""; - if (inner->GetText()) - text = inner->GetText(); - std::unordered_map attributes; - for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) - attributes[att->Name()] = att->Value(); - parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); - } - + if (debug_) + std::cout << " >> Found a weight inside the group. " << std::endl; + std::string text = ""; + if (inner->GetText()) + text = inner->GetText(); + + std::unordered_map attributes; + for (auto* att = inner->FirstAttribute(); att != nullptr; att = att->Next()) + attributes[att->Name()] = att->Value(); + if (debug_) + std::cout << " " << weightIndex << ": \"" << text << "\"" << std::endl; + parsedWeights_.push_back({inner->Attribute("id"), weightIndex++, groupName, text, attributes, groupIndex}); } - void LHEWeightHelper::parseWeights() { tinyxml2::XMLDocument xmlDoc; - if(!parseLHE(xmlDoc)) { + if (!parseLHE(xmlDoc)) { return; } @@ -81,16 +78,20 @@ namespace gen { // need to fix addGroup(e, groupName, groupIndex, weightIndex); } else if (strcmp(e->Name(), "weightgroup") == 0) { - if (debug_) - std::cout << "Found a weight group.\n"; groupName = parseGroupName(e); - addGroup(e->FirstChildElement("weight"), groupName, groupIndex, weightIndex); + if (debug_) + std::cout << ">>>> Found a weight group: " << groupName << std::endl; + + for (auto inner = e->FirstChildElement("weight"); inner != nullptr; inner = inner->NextSiblingElement("weight")) + addGroup(inner, groupName, groupIndex, weightIndex); } else std::cout << "Found an invalid entry\n"; groupIndex++; } buildGroups(); + if (debug_) + printWeights(); } std::string LHEWeightHelper::parseGroupName(tinyxml2::XMLElement* el) { diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index c1e5e127d64c1..bfcc373e7bccd 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -26,7 +26,7 @@ namespace gen { std::pair pairLHA; try { pairLHA = LHAPDF::lookupPDF(stoi(searchAttributes("pdf", weight))); - } catch(...) { + } catch (...) { return false; } @@ -36,7 +36,6 @@ namespace gen { } else { return false; } - } bool WeightHelper::isMEParamWeightGroup(const ParsedWeight& weight) { @@ -86,6 +85,8 @@ namespace gen { muR = std::stof(muRText); muF = std::stof(muFText); } catch (...) { + if (debug_) + std::cout << "Tried to convert (" << muR << ", " << muF << ") to a int" << std::endl; scaleGroup.setIsWellFormed(false); return; /// do something @@ -99,6 +100,7 @@ namespace gen { int dynNum = std::stoi(dynNumText); scaleGroup.setDyn(weight.index, weight.id, muR, muF, dynNum, dynType); } catch (...) { + std::cout << "Tried to convert (" << dynNumText << ") a int" << std::endl; scaleGroup.setIsWellFormed(false); /// do something here } diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 31e8812ddf85c..c57119487f115 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -39,6 +39,7 @@ namespace gen { : WeightGroupInfo(header, name), muIndices_(MIN_SCALE_VARIATIONS, -1), dynVec_(MIN_SCALE_VARIATIONS) { weightType_ = WeightType::kScaleWeights; isFunctionalFormVar_ = false; + isWellFormed_ = true; } ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) {} ScaleWeightGroupInfo(const ScaleWeightGroupInfo& other) { copy(other); } diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 3dd8498472a79..99826e88d14b9 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -26,6 +26,11 @@ namespace gen { } WeightGroupInfo::addContainedId(globalIndex, id, label); setMuRMuFIndex(globalIndex, id, muR, muF); + std::cout << hasAllWeights << " " << isWellFormed_ << std::endl; + for (int muidx : muIndices_) { + std::cout << muidx << " "; + } + std::cout << std::endl; } void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { From a238612b9e5bccc89eb3cbd0782d302d5659e9c1 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Wed, 14 Oct 2020 20:05:09 +0200 Subject: [PATCH 145/186] Add more error handling --- GeneratorInterface/Core/src/LHEWeightHelper.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 013072992d45e..779438df63169 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -24,22 +24,24 @@ namespace gen { std::string fullHeader = boost::algorithm::join(headerLines_, ""); if (debug_) std::cout << "Full header is \n" << fullHeader << std::endl; - int xmlError = xmlDoc.Parse(fullHeader.c_str()); + // in case of > instead of < - if (xmlError != 0) { + if (xmlError != 0 && failIfInvalidXML_) { + xmlDoc.PrintError(); + throw std::runtime_error("XML is unreadable because of above error."); + } + elif (xmlError != 0 && !failIfInvalidXML_) { boost::replace_all(fullHeader, "<", "<"); boost::replace_all(fullHeader, ">", ">"); xmlError = xmlDoc.Parse(fullHeader.c_str()); } + // error persists (how to handle error?) if (xmlError != 0) { std::cerr << "WARNING: Error in parsing XML of LHE weight header!" << std::endl; xmlDoc.PrintError(); - if (failIfInvalidXML_) - throw std::runtime_error("XML is unreadable because of above error."); - else - return false; + return false; } return true; @@ -75,16 +77,13 @@ namespace gen { if (strcmp(e->Name(), "weight") == 0) { if (debug_) std::cout << "Found weight unmatched to group\n"; - // need to fix addGroup(e, groupName, groupIndex, weightIndex); } else if (strcmp(e->Name(), "weightgroup") == 0) { groupName = parseGroupName(e); if (debug_) std::cout << ">>>> Found a weight group: " << groupName << std::endl; - for (auto inner = e->FirstChildElement("weight"); inner != nullptr; inner = inner->NextSiblingElement("weight")) addGroup(inner, groupName, groupIndex, weightIndex); - } else std::cout << "Found an invalid entry\n"; groupIndex++; From 05fb6d762c271d346ad2872610e5558b9d9d4fc6 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Wed, 14 Oct 2020 20:39:42 +0200 Subject: [PATCH 146/186] Fix off-by-one error in pdf weight splitting --- .../Core/interface/WeightHelper.h | 4 ++-- .../Core/src/LHEWeightHelper.cc | 3 +-- GeneratorInterface/Core/src/WeightHelper.cc | 22 ++++++++----------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index cfc14ceffc7db..96a220f46ed62 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -57,9 +57,9 @@ namespace gen { bool isPdfWeightGroup(const ParsedWeight& weight); bool isPartonShowerWeightGroup(const ParsedWeight& weight); bool isOrphanPdfWeightGroup(ParsedWeight& weight); - void updateScaleInfo(const ParsedWeight& weight, int index); + void updateScaleInfo(gen::ScaleWeightGroupInfo& scaleGroup, const ParsedWeight& weight); void updateMEParamInfo(const ParsedWeight& weight, int index); - void updatePdfInfo(const ParsedWeight& weight, int index); + void updatePdfInfo(gen::PdfWeightGroupInfo& pdfGroup, const ParsedWeight& weight); void cleanupOrphanCentralWeight(); int lhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 779438df63169..5403b3bfd4c60 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -30,8 +30,7 @@ namespace gen { if (xmlError != 0 && failIfInvalidXML_) { xmlDoc.PrintError(); throw std::runtime_error("XML is unreadable because of above error."); - } - elif (xmlError != 0 && !failIfInvalidXML_) { + } else if (xmlError != 0 && !failIfInvalidXML_) { boost::replace_all(fullHeader, "<", "<"); boost::replace_all(fullHeader, ">", ">"); xmlError = xmlDoc.Parse(fullHeader.c_str()); diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index bfcc373e7bccd..85435b45916bc 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -74,9 +74,7 @@ namespace gen { return ""; } - void WeightHelper::updateScaleInfo(const ParsedWeight& weight, int index) { - auto& scaleGroup = dynamic_cast(weightGroups_[index]); - + void WeightHelper::updateScaleInfo(gen::ScaleWeightGroupInfo& scaleGroup, const ParsedWeight& weight) { std::string muRText = searchAttributes("mur", weight); std::string muFText = searchAttributes("muf", weight); std::string dynNumText = searchAttributes("dyn", weight); @@ -133,8 +131,7 @@ namespace gen { return -1; } - void WeightHelper::updatePdfInfo(const ParsedWeight& weight, int index) { - auto& pdfGroup = dynamic_cast(weightGroups_[index]); + void WeightHelper::updatePdfInfo(gen::PdfWeightGroupInfo& pdfGroup, const ParsedWeight& weight) { int lhaid = lhapdfId(weight, pdfGroup); if (pdfGroup.parentLhapdfId() < 0) { int parentId = lhaid - LHAPDF::lookupPDF(lhaid).second; @@ -333,11 +330,9 @@ namespace gen { void WeightHelper::buildGroups() { weightGroups_.clear(); - int currentGroupIdx = 0; int groupOffset = 0; for (auto& weight : parsedWeights_) { weight.wgtGroup_idx += groupOffset; - currentGroupIdx = weight.wgtGroup_idx; if (debug_) std::cout << "Building group for weight " << weight.content << " group " << weight.groupname << " group index " << weight.wgtGroup_idx << std::endl; @@ -346,23 +341,24 @@ namespace gen { if (weight.wgtGroup_idx == numGroups) { weightGroups_.push_back(*buildGroup(weight)); } else if (weight.wgtGroup_idx >= numGroups) - throw std::range_error("Invalid group index " + currentGroupIdx); + throw std::range_error("Invalid group index " + weight.wgtGroup_idx); // split PDF groups - if (weightGroups_[currentGroupIdx].weightType() == gen::WeightType::kPdfWeights) { - auto& pdfGroup = dynamic_cast(weightGroups_[currentGroupIdx]); + if (weightGroups_[weight.wgtGroup_idx].weightType() == gen::WeightType::kPdfWeights) { + auto& pdfGroup = dynamic_cast(weightGroups_[weight.wgtGroup_idx]); int lhaid = lhapdfId(weight, pdfGroup); if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.parentLhapdfId() > 0) { weightGroups_.push_back(*buildGroup(weight)); groupOffset++; + weight.wgtGroup_idx++; } } - WeightGroupInfo& group = weightGroups_[currentGroupIdx]; + WeightGroupInfo& group = weightGroups_[weight.wgtGroup_idx]; group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) - updateScaleInfo(weight, currentGroupIdx); + updateScaleInfo(dynamic_cast(group), weight); else if (group.weightType() == gen::WeightType::kPdfWeights) { - updatePdfInfo(weight, currentGroupIdx); + updatePdfInfo(dynamic_cast(group), weight); } } cleanupOrphanCentralWeight(); From 2c3d767096984738b5087335fb37c7e4013b7f00 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 15 Oct 2020 14:52:55 +0200 Subject: [PATCH 147/186] Templatize product adder in WeightHelper --- .../Core/interface/WeightHelper.h | 27 +++++++++++++++++-- GeneratorInterface/Core/src/WeightHelper.cc | 27 ------------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 96a220f46ed62..357281dd292f9 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -30,8 +30,10 @@ namespace gen { public: WeightHelper(); edm::OwnVector weightGroups() { return weightGroups_; } - std::unique_ptr weightProduct(std::vector, float w0); - std::unique_ptr weightProduct(std::vector, float w0); + + template + std::unique_ptr weightProduct(std::vector weights, float w0); + void setModel(std::string model) { model_ = model; } void addUnassociatedGroup() { weightGroups_.push_back(std::make_unique("unassociated")); @@ -83,6 +85,27 @@ namespace gen { void buildGroups(); std::string searchString(const std::string& label, const std::string& name); }; + + // Templated function (needed here because of plugins) + template + std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { + auto weightProduct = std::make_unique(w0); + weightProduct->setNumWeightSets(weightGroups_.size()); + int weightGroupIndex = 0; + int i = 0; + // This happens if there are no PS weights, so the weights vector contains only the central GEN weight. + // Just add an empty product (need for all cases or...?) + if (weights.size() > 1) { + for (const auto& weight : weights) { + if constexpr (std::is_same::value) + weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i, weightGroupIndex); + else if (std::is_same::value) + weightGroupIndex = addWeightToProduct(weightProduct, weight, std::to_string(i), i, weightGroupIndex); + i++; + } + } + return std::move(weightProduct); + } } // namespace gen #endif diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 85435b45916bc..3df2bfc65fbce 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -153,22 +153,6 @@ namespace gen { pdfGroup.addLhaid(lhaid); } - // TODO: Could probably recycle this code better - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { - auto weightProduct = std::make_unique(w0); - weightProduct->setNumWeightSets(weightGroups_.size()); - int weightGroupIndex = 0; - // This happens if there are no PS weights, so the weights vector contains only the central GEN weight. - // Just add an empty product - if (weights.size() > 1) { - for (unsigned int i = 0; i < weights.size(); i++) { - std::string id = std::to_string(i); - addWeightToProduct(weightProduct, weights.at(i), id, i, weightGroupIndex); - } - } - return std::move(weightProduct); - } - void WeightHelper::cleanupOrphanCentralWeight() { std::vector removeList; for (auto it = weightGroups_.begin(); it < weightGroups_.end(); it++) { @@ -194,17 +178,6 @@ namespace gen { } } - std::unique_ptr WeightHelper::weightProduct(std::vector weights, float w0) { - auto weightProduct = std::make_unique(w0); - weightProduct->setNumWeightSets(weightGroups_.size()); - int weightGroupIndex = 0; - int i = 0; - for (const auto& weight : weights) { - weightGroupIndex = addWeightToProduct(weightProduct, weight.wgt, weight.id, i++, weightGroupIndex); - } - return std::move(weightProduct); - } - int WeightHelper::addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex) { bool isUnassociated = false; From c6e91dcd4e6d7ec930c477c403219c5de9ef6ee3 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 15 Oct 2020 16:36:15 +0200 Subject: [PATCH 148/186] Expand emission functionality to PSWeight needs to add more to make sure works correctly clang-format the partonshowerWeightGroupInfo.cc file as well --- .../Core/interface/WeightHelper.h | 1 + GeneratorInterface/Core/src/WeightHelper.cc | 35 ++++-- .../interface/PartonShowerWeightGroupInfo.h | 2 +- .../src/PartonShowerWeightGroupInfo.cc | 108 +++++++++--------- 4 files changed, 80 insertions(+), 66 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 357281dd292f9..e8955e541a957 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -63,6 +63,7 @@ namespace gen { void updateMEParamInfo(const ParsedWeight& weight, int index); void updatePdfInfo(gen::PdfWeightGroupInfo& pdfGroup, const ParsedWeight& weight); void cleanupOrphanCentralWeight(); + bool splitPdfWeight(ParsedWeight& weight); int lhapdfId(const ParsedWeight& weight, gen::PdfWeightGroupInfo& pdfGroup); std::string searchAttributes(const std::string& label, const ParsedWeight& weight) const; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 3df2bfc65fbce..68a643bf3d9b1 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -17,9 +17,13 @@ namespace gen { } bool WeightHelper::isPartonShowerWeightGroup(const ParsedWeight& weight) { - const std::string& name = boost::to_lower_copy(weight.groupname); - return name.find("isr") != std::string::npos || name.find("fsr") != std::string::npos || - name.find("nominal") != std::string::npos || name.find("baseline") != std::string::npos; + const std::string& groupname = boost::to_lower_copy(weight.groupname); + std::vector psNames = {"isr", "fsr", "nominal", "baseline", "emission"}; + for (auto name : psNames) { + if (groupname.find(name) != std::string::npos) + return true; + } + return false; } bool WeightHelper::isOrphanPdfWeightGroup(ParsedWeight& weight) { @@ -153,6 +157,19 @@ namespace gen { pdfGroup.addLhaid(lhaid); } + bool WeightHelper::splitPdfWeight(ParsedWeight& weight) { + if (weightGroups_[weight.wgtGroup_idx].weightType() == gen::WeightType::kPdfWeights) { + auto& pdfGroup = dynamic_cast(weightGroups_[weight.wgtGroup_idx]); + int lhaid = lhapdfId(weight, pdfGroup); + if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.parentLhapdfId() > 0) { + weightGroups_.push_back(*buildGroup(weight)); + weight.wgtGroup_idx++; + return true; + } + } + return false; + } + void WeightHelper::cleanupOrphanCentralWeight() { std::vector removeList; for (auto it = weightGroups_.begin(); it < weightGroups_.end(); it++) { @@ -317,15 +334,9 @@ namespace gen { throw std::range_error("Invalid group index " + weight.wgtGroup_idx); // split PDF groups - if (weightGroups_[weight.wgtGroup_idx].weightType() == gen::WeightType::kPdfWeights) { - auto& pdfGroup = dynamic_cast(weightGroups_[weight.wgtGroup_idx]); - int lhaid = lhapdfId(weight, pdfGroup); - if (lhaid > 0 && !pdfGroup.isIdInParentSet(lhaid) && pdfGroup.parentLhapdfId() > 0) { - weightGroups_.push_back(*buildGroup(weight)); - groupOffset++; - weight.wgtGroup_idx++; - } - } + if (splitPdfWeight(weight)) + groupOffset++; + WeightGroupInfo& group = weightGroups_[weight.wgtGroup_idx]; group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index 561a8dc805ddb..9c64d5ce849e2 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -6,7 +6,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - enum class PSVarType { muR, cNS, con, def, red}; + enum class PSVarType { muR, cNS, con, def, red, alphaS}; enum class PSSplittingType { combined, g2gg, x2xg, g2qq }; class PartonShowerWeightGroupInfo : public WeightGroupInfo { diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 311819c1e173f..8a2f5d79c4609 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -3,8 +3,8 @@ #include namespace gen { - void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { - WeightGroupInfo::copy(other); + void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { + WeightGroupInfo::copy(other); nameIsPythiaSyntax_ = other.nameIsPythiaSyntax_; } @@ -16,61 +16,63 @@ namespace gen { return variationIndex(isISR, isUp, variationType, PSSplittingType::combined); } - int PartonShowerWeightGroupInfo::variationIndex(bool isISR, bool isUp, PSVarType variationType, - PSSplittingType splittingType) const { - std::string label = isISR ? "isr" : "fsr"; + int PartonShowerWeightGroupInfo::variationIndex(bool isISR, + bool isUp, + PSVarType variationType, + PSSplittingType splittingType) const { + std::string label = isISR ? "isr" : "fsr"; - if ((variationType == PSVarType::con || variationType == PSVarType::def || variationType == PSVarType::red) - && splittingType != PSSplittingType::combined) - throw std::invalid_argument("VariationType must be muR or CNS if subprocess is specified"); + if ((variationType == PSVarType::con || variationType == PSVarType::def || variationType == PSVarType::red) && + splittingType != PSSplittingType::combined) + throw std::invalid_argument("VariationType must be muR or CNS if subprocess is specified"); - std::string variation; - switch(variationType) { - case PSVarType::con: - variation = !nameIsPythiaSyntax_ ? "Con" : (isUp ? "murfac=4.0" : "murfac=0.25"); - break; - case PSVarType::def: - variation = !nameIsPythiaSyntax_ ? "Def" : (isUp ? "murfac=2.0" : "murfac=0.5"); - break; - case PSVarType::red: - variation = !nameIsPythiaSyntax_ ? "Red" : (isUp ? "murfac=1.414" : "murfac=0.707"); - case PSVarType::muR: - variation = !nameIsPythiaSyntax_ ? "muR" : (isUp ? "murfac=2.0" : "murfac=0.5"); - break; - case PSVarType::cNS: - variation = !nameIsPythiaSyntax_ ? "cNS" : (isUp ? "cns=2.0" : "murfac=-2.0"); - break; - } - - std::string splitting; - switch(splittingType) { - case PSSplittingType::g2gg: - splitting = !nameIsPythiaSyntax_ ? "G2GG" : "g2gg"; - break; - case PSSplittingType::g2qq: - splitting = !nameIsPythiaSyntax_ ? "G2QQ" : "g2qq"; - break; - case PSSplittingType::x2xg: - splitting = !nameIsPythiaSyntax_ ? "X2XG" : "x2xg"; - break; - default: - break; - } - - if (nameIsPythiaSyntax_) { - std::string app = splittingType != PSSplittingType::combined ? splitting + ":" + variation : variation; - label += ":" + app; - } - else { - if (splittingType != PSSplittingType::combined) { - label += variation + "_" + splitting + "_" + variation + (isUp ? "_up" : "_dn"); - } - else - label += variation + (isUp ? "Hi" : "Lo"); - } + std::string variation; + switch (variationType) { + case PSVarType::con: + variation = !nameIsPythiaSyntax_ ? "Con" : (isUp ? "murfac=4.0" : "murfac=0.25"); + break; + case PSVarType::def: + variation = !nameIsPythiaSyntax_ ? "Def" : (isUp ? "murfac=2.0" : "murfac=0.5"); + break; + case PSVarType::red: + variation = !nameIsPythiaSyntax_ ? "Red" : (isUp ? "murfac=1.414" : "murfac=0.707"); + case PSVarType::muR: + variation = !nameIsPythiaSyntax_ ? "muR" : (isUp ? "murfac=2.0" : "murfac=0.5"); + break; + case PSVarType::cNS: + variation = !nameIsPythiaSyntax_ ? "cNS" : (isUp ? "cns=2.0" : "murfac=-2.0"); + break; + case PSVarType::alphaS: + variation = (isUp ? "alpsfact=2.0" : "alpsfact=0.5"); + return weightIndexFromLabel(variation); + } - return weightIndexFromLabel(label); + std::string splitting; + switch (splittingType) { + case PSSplittingType::g2gg: + splitting = !nameIsPythiaSyntax_ ? "G2GG" : "g2gg"; + break; + case PSSplittingType::g2qq: + splitting = !nameIsPythiaSyntax_ ? "G2QQ" : "g2qq"; + break; + case PSSplittingType::x2xg: + splitting = !nameIsPythiaSyntax_ ? "X2XG" : "x2xg"; + break; + default: + break; + } + if (nameIsPythiaSyntax_) { + std::string app = splittingType != PSSplittingType::combined ? splitting + ":" + variation : variation; + label += ":" + app; + } else { + if (splittingType != PSSplittingType::combined) { + label += variation + "_" + splitting + "_" + variation + (isUp ? "_up" : "_dn"); + } else + label += variation + (isUp ? "Hi" : "Lo"); } + return weightIndexFromLabel(label); + } + } // namespace gen From ef90c0377a5a196ebef68aa55467919b5bc9cc13 Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Tue, 3 Nov 2020 10:41:47 +0100 Subject: [PATCH 149/186] adding altset index table --- .../plugins/LHEWeightsTableProducer.cc | 55 +++++++++++++------ 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 1c68843586fcb..45dfd0df6b147 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -239,7 +239,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons std::string wname = wg.second; auto& weightVec = lheWeightTables[wg.first]; counter.incLHE(genWeight, weightVec, wname); - std::cout << "Writing out weight of type:" << wname << std::endl; + //std::cout << "Writing out weight of type:" << wname << std::endl; auto outTable = std::make_unique(weightVec.size(), wname + "Weight", false); outTable->addColumn("", weightVec, weightlabels[wg.first], nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); @@ -256,7 +256,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons /* */ -void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, +void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, std::map>& weightVecsizes, std::map& weightlabels, const char* typeName, @@ -273,27 +273,33 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapname(); auto& weights = allWeights.at(groupInfo.index); + //std::cout << "Name:" << name + // << "\tWsize=" << weights.size() + // << "\tPrevious size=" << lheWeightTables[weightType].size() + // << std::endl; label.append("["); label.append(std::to_string(lheWeightTables[weightType].size()));//to append the start index of this set label.append("]; "); lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); weightVecsizes[weightType].emplace_back(weights.size()); - if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed() && - groupInfo.group->nIdsContained() < 10) { - weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); - label.append( - "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + if (weightType == gen::WeightType::kScaleWeights && groupInfo.group->isWellFormed()) { + if(groupInfo.group->nIdsContained() == 9) { + weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); + label.append( + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else { + label.append( "Scale weight size is "); + label.append( std::to_string(groupInfo.group->nIdsContained())); + //label.append( ". Very fishy!!!"); + } } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && groupInfo.group->isWellFormed()) { weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); - } - //else - // label.append(groupInfo.group->description()); + } if(weightlabels[weightType] == "") weightlabels[weightType].append("[idx in AltSetSizes array] Name [start idx in weight array];\n"); - weightlabels[weightType].append(label); typeCount[weightType]++; } @@ -337,10 +343,23 @@ std::vector LHEWeightsTableProducer::getPreferredPSweights(const std::ve std::vector psTosave; double baseline = psWeights.at(pswV->weightIndexFromLabel("Baseline"));//at 1 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefHi"))/baseline ); // at 6 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefHi"))/baseline ); // at 7 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefLo"))/baseline ); // at 8 - psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefLo"))/baseline ); // at 9 + + if(psWeights.at(pswV->weightIndexFromLabel("isrDefHi")) >= 0) + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefHi"))/baseline ); // at 6 + else psTosave.emplace_back(1.); + + if(psWeights.at(pswV->weightIndexFromLabel("isrDefLo")) >= 0) + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("isrDefLo"))/baseline ); // at 6 + else psTosave.emplace_back(1.); + + if(psWeights.at(pswV->weightIndexFromLabel("fsrDefHi")) >= 0) + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefHi"))/baseline ); // at 6 + else psTosave.emplace_back(1.); + + if(psWeights.at(pswV->weightIndexFromLabel("fsrDefLo")) >= 0) + psTosave.emplace_back( psWeights.at(pswV->weightIndexFromLabel("fsrDefLo"))/baseline ); // at 6 + else psTosave.emplace_back(1.); + return psTosave; } @@ -348,7 +367,7 @@ void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const { - Counter& counter = *streamCache(id)->get(); + //Counter& counter = *streamCache(id)->get(); //this takes care for mergeing all the weight sums runCounterMap->mergeSumMap(*streamCache(id)); } From 34b9c3a91ba6e88ca3c26706963bbc300dff6b13 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Mon, 5 Oct 2020 21:59:53 +0200 Subject: [PATCH 150/186] Create entry for unassociated weights if empty --- .../Core/interface/WeightHelper.h | 1 + .../Core/plugins/GenWeightProductProducer.cc | 3 ++ GeneratorInterface/Core/src/WeightHelper.cc | 28 +++++++++++++++++-- .../plugins/LHEWeightsTableProducer.cc | 1 - 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 91fc61d2205ca..cfd7653064059 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -33,6 +33,7 @@ namespace gen { std::unique_ptr weightProduct(std::vector, float w0); std::unique_ptr weightProduct(std::vector, float w0); void setModel(std::string model) { model_ = model; } + void addUnassociatedGroup() { weightGroups_.push_back(new UnknownWeightGroupInfo("unassociated")); } int addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index a69756f2b2aea..04d5ecff3ce80 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -81,6 +81,9 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.parseWeightGroupsFromNames(weightNames_); auto weightInfoProduct = std::make_unique(); + if (weightHelper_.weightGroups().size() == 0) + weightHelper_.addUnassociatedGroup(); + for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); } diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 1879b7dbefea5..4fdb0787c5102 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -219,9 +219,31 @@ namespace gen { int WeightHelper::addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex) { - groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); - auto group = weightGroups_[groupIndex]; - int entry = group.weightVectorEntry(name, weightNum); + bool isUnassociated = false; + try { + groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); + } + catch (const std::range_error& e) { + std::cerr << "WARNING: " << e.what() << std::endl; + isUnassociated = true; + + bool foundUnassocGroup = false; + while (!foundUnassocGroup && groupIndex < static_cast(weightGroups_.size())) { + auto& g = weightGroups_[groupIndex]; + if (g.weightType() == gen::WeightType::kUnknownWeights && g.name() == "unassociated") + foundUnassocGroup = true; + else + groupIndex++; + } + if (!foundUnassocGroup) { + addUnassociatedGroup(); + } + } + auto& group = weightGroups_[groupIndex]; + if (isUnassociated) { + group.addContainedId(weightNum, name, name); + } + int entry = !isUnassociated ? group.weightVectorEntry(name, weightNum) : group.nIdsContained(); if (debug_) std::cout << "Adding weight " << entry << " to group " << groupIndex << std::endl; product->addWeight(weight, groupIndex, entry); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 3088c657a196d..bacbf3a9916ee 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -239,7 +239,6 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons std::string wname = wg.second; auto& weightVec = lheWeightTables[wg.first]; counter.incLHE(genWeight, weightVec, wname); - //std::cout << "Writing out weight of type:" << wname << std::endl; auto outTable = std::make_unique(weightVec.size(), wname + "Weight", false); outTable->addColumn("", weightVec, weightlabels[wg.first], nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); From 5613cf66afec04ccd0f7221251cbb159a2c01a24 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 6 Oct 2020 02:22:58 +0200 Subject: [PATCH 151/186] Use unique_ptr rather than raw ptrs Still to be determined how to handle producer that really needs shared_ptr --- .../Core/plugins/GenWeightProductProducer.cc | 2 +- .../Core/plugins/LHEWeightProductProducer.cc | 2 +- .../plugins/ExternalLHEProducer.cc | 2 +- .../plugins/LHEWeightsTableProducer.cc | 39 ++++++++++++------- .../interface/GenWeightInfoProduct.h | 15 ++++--- .../src/GenWeightInfoProduct.cc | 33 +++++++++------- 6 files changed, 56 insertions(+), 37 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 04d5ecff3ce80..f066ef0492c83 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -85,7 +85,7 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.addUnassociatedGroup(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } iLumi.put(std::move(weightInfoProduct)); } diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index f06d68d5e81f4..ba2e04dcb0d80 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -124,7 +124,7 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } lumi.put(std::move(weightInfoProduct)); } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 535565cb9a9fb..d48447651e137 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -385,7 +385,7 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(weightGroup.clone()); + weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } lumi.put(std::move(weightInfoProduct)); } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index bacbf3a9916ee..5c0d42398b6ef 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -24,8 +24,8 @@ #include namespace { - typedef std::vector WeightGroupDataContainer; - typedef std::array, 2> WeightGroupsToStore; + typedef std::vector WeightGroupDataContainer; + typedef std::array, 2> WeightGroupsToStore; } // namespace using CounterMap = genCounter::CounterMap; using Counter = genCounter::Counter; @@ -80,11 +80,13 @@ public edm::global::EDProducer, WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { if (foundLheWeights) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inLHE).insert(weightsToStore.at(inLHE).end(), lheWeights.begin(), lheWeights.end()); + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + for (auto& w : lheWeights) + weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); } auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - weightsToStore.at(inGen).insert(weightsToStore.at(inGen).end(), genWeights.begin(), genWeights.end()); + for (auto& w : genWeights) + weightsToStore.at(inGen).push_back({w.index, std::move(w.group)}); } return std::make_shared(weightsToStore); } @@ -277,7 +279,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { - weights = orderedScaleWeights(weights, dynamic_cast(groupInfo.group)); + weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); label.append( "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" @@ -287,7 +289,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { - weights = getPreferredPSweights(weights, dynamic_cast(groupInfo.group)); + weights = getPreferredPSweights(weights, static_cast(groupInfo.group.get())); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); } //else @@ -305,18 +307,27 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map& weightsHandle, gen::WeightType weightType, int& maxStore) const { - WeightGroupDataContainer group; + WeightGroupDataContainer groups; + std::vector allgroups; if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - group = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); } else - group = weightsHandle->weightGroupsAndIndicesByType(weightType); + allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); - if (maxStore < 0 || static_cast(group.size()) <= maxStore) { + int toStore = maxStore; + if (maxStore < 0 || static_cast(groups.size()) <= maxStore) { // Modify size in case one type of weight is present in multiple products - maxStore -= group.size(); - return group; + maxStore -= groups.size(); + toStore = groups.size(); } - return std::vector(group.begin(), group.begin() + maxStore); + + WeightGroupDataContainer out; + for (int i = 0; i < toStore; i++) { + auto& group = groups.at(i); + gen::SharedWeightGroupData temp = {group.index, std::move(group.group)}; + out.push_back(temp); + } + return out; } std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index 550a886df1757..e0db5a539f86b 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -16,7 +16,12 @@ namespace gen { struct WeightGroupData { size_t index; - const gen::WeightGroupInfo* group; + std::unique_ptr group; + }; + + struct SharedWeightGroupData { + size_t index; + std::shared_ptr group; }; } // namespace gen @@ -31,14 +36,14 @@ class GenWeightInfoProduct { GenWeightInfoProduct& operator=(GenWeightInfoProduct&& other); const edm::OwnVector& allWeightGroupsInfo() const; - const gen::WeightGroupInfo* containingWeightGroupInfo(int index) const; - const gen::WeightGroupInfo* orderedWeightGroupInfo(int index) const; - std::vector weightGroupsByType(gen::WeightType type) const; + const std::unique_ptr containingWeightGroupInfo(int index) const; + const std::unique_ptr orderedWeightGroupInfo(int index) const; + std::vector> weightGroupsByType(gen::WeightType type) const; std::vector weightGroupIndicesByType(gen::WeightType type) const; std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; std::optional pdfGroupWithIndexByLHAID(int lhaid) const; std::vector pdfGroupsWithIndicesByLHAIDs(const std::vector& lhaids) const; - void addWeightGroupInfo(gen::WeightGroupInfo* info); + void addWeightGroupInfo(std::unique_ptr info); const int numberOfGroups() const { return weightGroupsInfo_.size(); } private: diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 7b53436c4c7ff..23b63469354f2 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -22,46 +22,48 @@ const edm::OwnVector& GenWeightInfoProduct::allWeightGroup return weightGroupsInfo_; } -const gen::WeightGroupInfo* GenWeightInfoProduct::containingWeightGroupInfo(int index) const { +const std::unique_ptr GenWeightInfoProduct::containingWeightGroupInfo(int index) const { for (const auto& weightGroup : weightGroupsInfo_) { if (weightGroup.indexInRange(index)) - return &weightGroup; + return std::make_unique(weightGroup); } throw std::domain_error("Failed to find containing weight group"); } -const gen::WeightGroupInfo* GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { +const std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) throw std::range_error("Weight index out of range!"); - return &weightGroupsInfo_[weightGroupIndex]; + return std::make_unique(weightGroupsInfo_[weightGroupIndex]); } std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { std::vector matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, weightGroupsInfo_[i].clone()}); + matchingGroups.push_back({i, std::make_unique(weightGroupsInfo_[i])}); } return matchingGroups; } -std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { - std::vector matchingGroups; +std::vector> GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { + std::vector> matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back(weightGroupsInfo_[i].clone()); + matchingGroups.push_back(std::make_unique(weightGroupsInfo_[i])); } return matchingGroups; } std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHAID(int lhaid) const { - auto pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); + std::vector pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); + auto pdfGroup = std::make_unique(*static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); - return matchingPdfSet != pdfGroups.end() ? std::optional(*matchingPdfSet) : std::nullopt; + + return matchingPdfSet == pdfGroups.end() ? std::nullopt : + std::optional({matchingPdfSet->index, std::move(matchingPdfSet->group)}); } std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs( @@ -71,11 +73,12 @@ std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLH for (auto lhaid : lhaids) { auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = dynamic_cast(data.group); + auto pdfGroup = std::make_unique(*static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); - if (matchingPdfSet != pdfGroups.end()) - pdfGroups.push_back(*matchingPdfSet); + if (matchingPdfSet != pdfGroups.end()) { + pdfGroups.push_back({matchingPdfSet->index, std::move(matchingPdfSet->group)}); + } } return pdfGroups; @@ -90,4 +93,4 @@ std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType return matchingGroupIndices; } -void GenWeightInfoProduct::addWeightGroupInfo(gen::WeightGroupInfo* info) { weightGroupsInfo_.push_back(info); } +void GenWeightInfoProduct::addWeightGroupInfo(std::unique_ptr info) { weightGroupsInfo_.push_back(std::move(info)); } From 7deaad9353b2c52ee559fd73d0efe9cb7939fd87 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 6 Oct 2020 11:44:05 +0200 Subject: [PATCH 152/186] Add unassociated group for LHE --- GeneratorInterface/Core/interface/WeightHelper.h | 5 ++++- GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index cfd7653064059..de166a87772a3 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -33,7 +33,10 @@ namespace gen { std::unique_ptr weightProduct(std::vector, float w0); std::unique_ptr weightProduct(std::vector, float w0); void setModel(std::string model) { model_ = model; } - void addUnassociatedGroup() { weightGroups_.push_back(new UnknownWeightGroupInfo("unassociated")); } + void addUnassociatedGroup() { + weightGroups_.push_back(std::make_unique("unassociated")); + weightGroups_.back().setDescription("Weights missing or with invalid header meta data"); + } int addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index ba2e04dcb0d80..5937693c518b8 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -121,6 +121,8 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& return; weightHelper_.parseWeights(); + if (weightHelper_.weightGroups().size() == 0) + weightHelper_.addUnassociatedGroup(); auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { From f381ae8a924313c4313c642d12700c7d60cd977f Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 3 Nov 2020 17:38:47 +0100 Subject: [PATCH 153/186] Use cms::Exception, more detailed error reporting catch cms::Exception, not std::exception --- .../Core/plugins/LHEWeightProductProducer.cc | 11 ++++++++++- GeneratorInterface/Core/src/LHEWeightHelper.cc | 15 +++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 5937693c518b8..853c39e45bbaf 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -120,7 +120,16 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& if (!hasLhe_) return; - weightHelper_.parseWeights(); + try { + weightHelper_.parseWeights(); + } catch (cms::Exception& e) { + std::string error = e.what(); + error += "\n NOTE: if you want to attempt to process this sample anyway, set failIfInvalidXML = False " + "in the configuration file\n. If you set this flag and the error persists, the issue " + " is fatal and must be solved at the LHE/gridpack level."; + throw cms::Exception("LHEWeightProductProducer") << error; + } + if (weightHelper_.weightGroups().size() == 0) weightHelper_.addUnassociatedGroup(); diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 5403b3bfd4c60..2acc27c3f0da9 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -13,10 +13,8 @@ namespace gen { parsedWeights_.clear(); if (!isConsistent() && failIfInvalidXML_) { - throw std::runtime_error( - "XML in LHE is not consistent: Most likely, tags were swapped.\n" - "To turn on fault fixing, use 'setFailIfInvalidXML(false)'\n" - "WARNING: the tag swapping may lead to weights associated with the incorrect group"); + throw cms::Exception("LHEWeightHelper") << + "XML in LHE is not consistent: Most likely, XML tags are out of order."; } else if (!isConsistent()) { swapHeaders(); } @@ -29,7 +27,8 @@ namespace gen { // in case of > instead of < if (xmlError != 0 && failIfInvalidXML_) { xmlDoc.PrintError(); - throw std::runtime_error("XML is unreadable because of above error."); + throw cms::Exception("LHEWeightHelper") + << "The LHE header is not valid XML! Weight information was not properly parsed."; } else if (xmlError != 0 && !failIfInvalidXML_) { boost::replace_all(fullHeader, "<", "<"); boost::replace_all(fullHeader, ">", ">"); @@ -38,9 +37,9 @@ namespace gen { // error persists (how to handle error?) if (xmlError != 0) { - std::cerr << "WARNING: Error in parsing XML of LHE weight header!" << std::endl; - xmlDoc.PrintError(); - return false; + std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; + error += xmlDoc.ErrorStr(); + throw cms::Exception("LHEWeightHelper") << error; } return true; From 93ecbf8d2d0e6a91bf220e6cd96ffec7ca1be794 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 3 Nov 2020 21:45:37 +0100 Subject: [PATCH 154/186] Make debugging configurable, fix bug with adding weights in nano --- .../Core/interface/WeightHelper.h | 3 +- .../Core/plugins/GenWeightProductProducer.cc | 1 + .../Core/plugins/LHEWeightProductProducer.cc | 1 + GeneratorInterface/Core/src/WeightHelper.cc | 10 +++---- .../plugins/LHEWeightsTableProducer.cc | 30 +++++++++++-------- .../interface/ScaleWeightGroupInfo.h | 1 - .../interface/WeightGroupInfo.h | 2 +- 7 files changed, 28 insertions(+), 20 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 9958d3edf0278..727866b4e76f7 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -42,11 +42,12 @@ namespace gen { int addWeightToProduct( std::unique_ptr& product, double weight, std::string name, int weightNum, int groupIndex); int findContainingWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); + void setDebug(bool value) { debug_ = value; } protected: // TODO: Make this only print from one thread a la // https://github.com/kdlong/cmssw/blob/master/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc#L1069 - bool debug_ = true; //true; + bool debug_ = false; const unsigned int FIRST_PSWEIGHT_ENTRY = 2; const unsigned int DEFAULT_PSWEIGHT_LENGTH = 46; std::string model_; diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index f066ef0492c83..f9eebff3475cd 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -49,6 +49,7 @@ GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iCon genEventToken_(consumes(iConfig.getParameter("genInfo"))), genLumiInfoHeadTag_( mayConsume(iConfig.getParameter("genLumiInfoHeader"))) { + weightHelper_.setDebug(iConfig.getUntrackedParameter("debug", false)); produces(); produces(); } diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 853c39e45bbaf..21e550acfcc76 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -58,6 +58,7 @@ LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iCon produces(); produces(); weightHelper_.setFailIfInvalidXML(iConfig.getUntrackedParameter("failIfInvalidXML", false)); + weightHelper_.setDebug(iConfig.getUntrackedParameter("debug", false)); } LHEWeightProductProducer::~LHEWeightProductProducer() {} diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 68a643bf3d9b1..cf3e7f71e9ee6 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -1,4 +1,5 @@ #include "GeneratorInterface/Core/interface/WeightHelper.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" #include namespace gen { @@ -222,7 +223,7 @@ namespace gen { } int entry = !isUnassociated ? group.weightVectorEntry(name, weightNum) : group.nIdsContained(); if (debug_) - std::cout << "Adding weight " << entry << " to group " << groupIndex << std::endl; + std::cout << "Adding weight " << entry << " to group " << groupIndex; product->addWeight(weight, groupIndex, entry); return groupIndex; } @@ -300,10 +301,9 @@ namespace gen { } std::unique_ptr WeightHelper::buildGroup(ParsedWeight& weight) { - if (debug_) { - std::cout << "Building group for weight group " << weight.groupname << " weight content is " << weight.content - << std::endl; - } + if (debug_) + std::cout << "Building group for weight group " << weight.groupname << " weight content is " << weight.content; + if (isScaleWeightGroup(weight)) return std::make_unique(weight.groupname); else if (isPdfWeightGroup(weight)) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 5c0d42398b6ef..b6dfaf27c0d97 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -74,19 +74,26 @@ public edm::global::EDProducer, iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); std::unordered_map storePerType; - for (size_t i = 0; i < weightgroups_.size(); i++) + for (size_t i = 0; i < weightgroups_.size(); i++) { + std::cout << i << " maxPerType " << maxGroupsPerType_.at(i) << std::endl; storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + } WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { if (foundLheWeights) { + std::cout << "At least found the product\n"; auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - for (auto& w : lheWeights) + for (auto& w : lheWeights) { + std::cout << "Found an lhe group with name " << w.group->name() << std::endl; weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); + } } auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - for (auto& w : genWeights) + for (auto& w : genWeights) { + std::cout << "Found a gen group with name " << w.group->name() << std::endl; weightsToStore.at(inGen).push_back({w.index, std::move(w.group)}); + } } return std::make_shared(weightsToStore); } @@ -279,11 +286,11 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { - weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); - label.append( - "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); + label.append( + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); } else { size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); weights = std::vector(weights.begin(), weights.begin()+nstore); @@ -307,12 +314,11 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map& weightsHandle, gen::WeightType weightType, int& maxStore) const { - WeightGroupDataContainer groups; - std::vector allgroups; + std::vector groups; if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + groups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); } else - allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); + groups = weightsHandle->weightGroupsAndIndicesByType(weightType); int toStore = maxStore; if (maxStore < 0 || static_cast(groups.size()) <= maxStore) { diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index c57119487f115..31e8812ddf85c 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -39,7 +39,6 @@ namespace gen { : WeightGroupInfo(header, name), muIndices_(MIN_SCALE_VARIATIONS, -1), dynVec_(MIN_SCALE_VARIATIONS) { weightType_ = WeightType::kScaleWeights; isFunctionalFormVar_ = false; - isWellFormed_ = true; } ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) {} ScaleWeightGroupInfo(const ScaleWeightGroupInfo& other) { copy(other); } diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index d53aa6e90c509..e9058546d584c 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -88,7 +88,7 @@ namespace gen { std::vector weightLabels() const; protected: - bool isWellFormed_; + bool isWellFormed_ = false; std::string headerEntry_; std::string name_; std::string description_; From 601b0907bf1cc35b17d5506f92a4d2e76281f3f5 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 3 Nov 2020 22:19:23 +0100 Subject: [PATCH 155/186] Fix gcc7 error --- PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index b6dfaf27c0d97..622911629d538 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -284,6 +284,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map splicedweights; if (weightType == gen::WeightType::kScaleWeights) if (groupInfo.group->isWellFormed()) { weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); @@ -292,8 +293,9 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); - weights = std::vector(weights.begin(), weights.begin()+nstore); + int nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); + splicedweights = std::vector(weights.begin(), weights.begin()+nstore); + weights = splicedweights; label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + " elements of weights vector, unordered"); } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && groupInfo.group->isWellFormed()) { weights = getPreferredPSweights(weights, static_cast(groupInfo.group.get())); From 099b683922bf633424d140f0ae15707be4e5ae0e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 4 Nov 2020 11:51:48 +0100 Subject: [PATCH 156/186] Weights table is not pretty but at least it's not broken --- .../plugins/LHEWeightsTableProducer.cc | 70 +++++++++---------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 4 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 622911629d538..65467838bf5a5 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -74,26 +74,19 @@ public edm::global::EDProducer, iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); std::unordered_map storePerType; - for (size_t i = 0; i < weightgroups_.size(); i++) { - std::cout << i << " maxPerType " << maxGroupsPerType_.at(i) << std::endl; + for (size_t i = 0; i < weightgroups_.size(); i++) storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); - } WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { if (foundLheWeights) { - std::cout << "At least found the product\n"; auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - for (auto& w : lheWeights) { - std::cout << "Found an lhe group with name " << w.group->name() << std::endl; + for (auto& w : lheWeights) weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); - } } auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - for (auto& w : genWeights) { - std::cout << "Found a gen group with name " << w.group->name() << std::endl; + for (auto& w : genWeights) weightsToStore.at(inGen).push_back({w.index, std::move(w.group)}); - } } return std::make_shared(weightsToStore); } @@ -205,7 +198,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons auto const& genInfo = iEvent.get(genEventInfoToken_); const double genWeight = genInfo.weight(); // table for gen info, always available - auto outGeninfo = std::make_unique(1, "genWeightNEW", true); + auto outGeninfo = std::make_unique(1, "genWeight", true); outGeninfo->setDoc("generator weight"); outGeninfo->addColumnValue("", genInfo.weight(), "generator weight", nanoaod::FlatTable::FloatColumn); iEvent.put(std::move(outGeninfo), "GENWeight"); @@ -264,7 +257,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons /* */ -void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, +void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, std::map>& weightVecsizes, std::map& weightlabels, const char* typeName, @@ -284,19 +277,19 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map splicedweights; - if (weightType == gen::WeightType::kScaleWeights) - if (groupInfo.group->isWellFormed()) { + //std::cout << "Group name is " << groupInfo.group->name() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; + if (weightType == gen::WeightType::kScaleWeights) { + if (groupInfo.group->isWellFormed() && false) { weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); label.append( - "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); - } else { - int nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); - splicedweights = std::vector(weights.begin(), weights.begin()+nstore); - weights = splicedweights; - label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + " elements of weights vector, unordered"); + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else { + size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); + weights = std::vector(weights.begin(), weights.begin()+nstore); + label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + " elements of weights vector, unordered"); + } } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && groupInfo.group->isWellFormed()) { weights = getPreferredPSweights(weights, static_cast(groupInfo.group.get())); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); @@ -308,6 +301,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map& weightsHandle, gen::WeightType weightType, int& maxStore) const { - std::vector groups; + std::vectorallgroups; if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { - groups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); } else - groups = weightsHandle->weightGroupsAndIndicesByType(weightType); - + allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); + int toStore = maxStore; - if (maxStore < 0 || static_cast(groups.size()) <= maxStore) { + if (maxStore < 0 || static_cast(allgroups.size()) <= maxStore) { // Modify size in case one type of weight is present in multiple products - maxStore -= groups.size(); - toStore = groups.size(); + maxStore -= allgroups.size(); + toStore = allgroups.size(); } WeightGroupDataContainer out; for (int i = 0; i < toStore; i++) { - auto& group = groups.at(i); + auto& group = allgroups.at(i); gen::SharedWeightGroupData temp = {group.index, std::move(group.group)}; out.push_back(temp); } @@ -357,10 +351,16 @@ std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vect std::vector LHEWeightsTableProducer::getPreferredPSweights(const std::vector& psWeights, const gen::PartonShowerWeightGroupInfo* pswV) const { std::vector psTosave; + + std::cout << "Adding baseline " << pswV->weightIndexFromLabel("Baseline") << std::endl; double baseline = psWeights.at(pswV->weightIndexFromLabel("Baseline")); + std::cout << " Adding 1, 1, def " << pswV->variationIndex(true, true, gen::PSVarType::def) << std::endl; psTosave.emplace_back(psWeights.at(pswV->variationIndex(true, true, gen::PSVarType::def))/baseline); + std::cout << " Adding 0, 1, def " << pswV->variationIndex(false, true, gen::PSVarType::def) << std::endl; psTosave.emplace_back(psWeights.at(pswV->variationIndex(false, true, gen::PSVarType::def))/baseline); + std::cout << " Adding 1, 0, def " << pswV->variationIndex(true, false, gen::PSVarType::def) << std::endl; psTosave.emplace_back(psWeights.at(pswV->variationIndex(true, false, gen::PSVarType::def))/baseline); + std::cout << " Adding 0, 0, def " << pswV->variationIndex(false, false, gen::PSVarType::def) << std::endl; psTosave.emplace_back(psWeights.at(pswV->variationIndex(false, false, gen::PSVarType::def))/baseline); return psTosave; } @@ -369,7 +369,7 @@ void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const { - //Counter& counter = *streamCache(id)->get(); + Counter& counter = *streamCache(id)->get(); //this takes care for mergeing all the weight sums runCounterMap->mergeSumMap(*streamCache(id)); } @@ -382,9 +382,9 @@ void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, edm::EventSetu std::string label = std::string("_") + x.first; std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; - out->addInt("genEventCountNEW" + label, "event count" + doclabel, runCounter.num_); - out->addFloat("genEventSumwNEW" + label, "sum of gen weights" + doclabel, runCounter.sumw_); - out->addFloat("genEventSumw2NEW" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); + out->addInt("genEventCount" + label, "event count" + doclabel, runCounter.num_); + out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter.sumw_); + out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; //Sum from map diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 6e5a45c467f43..b0a227c54752d 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -69,7 +69,7 @@ genVisTaus+ genVisTauTable+ genTable+ - genWeightsTable+ + #genWeightsTable+ lheWeightsTable+ genParticleTables+ tautagger+ @@ -98,7 +98,7 @@ genVisTaus+ genVisTauTable+ genTable+ - genWeightsTable+ + #genWeightsTable+ lheWeightsTable+ genParticleTables+ tautagger+ From ae87760c3ce63dd22818b899a604d81691202e97 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 4 Nov 2020 12:39:02 +0100 Subject: [PATCH 157/186] Don't pass pointers, clearer naming in LHE tables --- .../plugins/LHEWeightsTableProducer.cc | 63 +++++++++---------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 65467838bf5a5..d1b31837cefad 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -52,9 +52,9 @@ public edm::global::EDProducer, int& maxStore) const; std::vector orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo* scaleGroup) const; + const gen::ScaleWeightGroupInfo& scaleGroup) const; - std::vector getPreferredPSweights(const std::vector& psWeights, const gen::PartonShowerWeightGroupInfo* pswV) const; + std::vector preferredPSweights(const std::vector& psWeights, const gen::PartonShowerWeightGroupInfo& pswV) const; //Lumiblock std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, @@ -139,11 +139,11 @@ public edm::global::EDProducer, const std::vector maxGroupsPerType_; const std::vector pdfIds_; const std::unordered_map weightTypeNames_ = { - {gen::WeightType::kScaleWeights, "LHEScale"}, - {gen::WeightType::kPdfWeights, "LHEPdf"}, - {gen::WeightType::kMEParamWeights, "MEParam"}, - {gen::WeightType::kPartonShowerWeights, "GENPartonShower"}, - {gen::WeightType::kUnknownWeights, "Unknown"}, + {gen::WeightType::kScaleWeights, "LHEScaleWeight"}, + {gen::WeightType::kPdfWeights, "LHEPdfWeight"}, + {gen::WeightType::kMEParamWeights, "MEParamWeight"}, + {gen::WeightType::kPartonShowerWeights, "PSWeight"}, + {gen::WeightType::kUnknownWeights, "UnknownWeight"}, }; //std::unordered_map weightGroupIndices_; int lheWeightPrecision_; @@ -241,7 +241,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons std::string wname = wg.second; auto& weightVec = lheWeightTables[wg.first]; counter.incLHE(genWeight, weightVec, wname); - auto outTable = std::make_unique(weightVec.size(), wname + "Weight", false); + auto outTable = std::make_unique(weightVec.size(), wname, false); outTable->addColumn("", weightVec, weightlabels[wg.first], nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); @@ -272,7 +272,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapweightType(); std::string name = weightTypeNames_.at(weightType); - std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->name(); + std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->description(); label.append("["); label.append(std::to_string(lheWeightTables[weightType].size()));//to append the start index of this set label.append("]; "); @@ -280,7 +280,8 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapname() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; if (weightType == gen::WeightType::kScaleWeights) { if (groupInfo.group->isWellFormed() && false) { - weights = orderedScaleWeights(weights, static_cast(groupInfo.group.get())); + const auto scaleGroup = *static_cast(groupInfo.group.get()); + weights = orderedScaleWeights(weights, scaleGroup); label.append( "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" @@ -291,7 +292,8 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { - weights = getPreferredPSweights(weights, static_cast(groupInfo.group.get())); + const auto psGroup = *static_cast(groupInfo.group.get()); + weights = preferredPSweights(weights, psGroup); label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); } //else @@ -333,35 +335,30 @@ WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle< } std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo* scaleGroup) const { + const gen::ScaleWeightGroupInfo& scaleGroup) const { std::vector weights; - weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF1Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR05muF2Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->centralIndex())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR1muF2Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF1Index())); - weights.emplace_back(scaleWeights.at(scaleGroup->muR2muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR1muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.centralIndex())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR1muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF2Index())); return weights; } -std::vector LHEWeightsTableProducer::getPreferredPSweights(const std::vector& psWeights, - const gen::PartonShowerWeightGroupInfo* pswV) const { +std::vector LHEWeightsTableProducer::preferredPSweights(const std::vector& psWeights, + const gen::PartonShowerWeightGroupInfo& pswV) const { std::vector psTosave; - std::cout << "Adding baseline " << pswV->weightIndexFromLabel("Baseline") << std::endl; - double baseline = psWeights.at(pswV->weightIndexFromLabel("Baseline")); - std::cout << " Adding 1, 1, def " << pswV->variationIndex(true, true, gen::PSVarType::def) << std::endl; - psTosave.emplace_back(psWeights.at(pswV->variationIndex(true, true, gen::PSVarType::def))/baseline); - std::cout << " Adding 0, 1, def " << pswV->variationIndex(false, true, gen::PSVarType::def) << std::endl; - psTosave.emplace_back(psWeights.at(pswV->variationIndex(false, true, gen::PSVarType::def))/baseline); - std::cout << " Adding 1, 0, def " << pswV->variationIndex(true, false, gen::PSVarType::def) << std::endl; - psTosave.emplace_back(psWeights.at(pswV->variationIndex(true, false, gen::PSVarType::def))/baseline); - std::cout << " Adding 0, 0, def " << pswV->variationIndex(false, false, gen::PSVarType::def) << std::endl; - psTosave.emplace_back(psWeights.at(pswV->variationIndex(false, false, gen::PSVarType::def))/baseline); + double baseline = psWeights.at(pswV.weightIndexFromLabel("Baseline")); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, true, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, true, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, false, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, false, gen::PSVarType::def))/baseline); return psTosave; } From 71f138736c6a8c4b95030200ddc63aa413a6653a Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Thu, 5 Nov 2020 21:27:27 +0100 Subject: [PATCH 158/186] changes to resolve conflicts part1 --- GeneratorInterface/Core/plugins/BuildFile.xml | 1 + .../Core/plugins/ExternalGeneratorFilter.cc | 1 + .../LHEInterface/plugins/BuildFile.xml | 6 +- .../plugins/ExternalLHEProducer.cc | 387 ++++++------------ .../LHEInterface/plugins/LHESource.cc | 3 +- 5 files changed, 130 insertions(+), 268 deletions(-) diff --git a/GeneratorInterface/Core/plugins/BuildFile.xml b/GeneratorInterface/Core/plugins/BuildFile.xml index e62304ab07a51..cfd9a43ca8f8a 100644 --- a/GeneratorInterface/Core/plugins/BuildFile.xml +++ b/GeneratorInterface/Core/plugins/BuildFile.xml @@ -10,6 +10,7 @@ + diff --git a/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc b/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc index 7d9d1e70d3a36..4ac0ef07bab68 100644 --- a/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc +++ b/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc @@ -13,6 +13,7 @@ #include "SimDataFormats/GeneratorProducts/interface/ExternalGeneratorEventInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ExternalGeneratorLumiInfo.h" +#include "FWCore/SharedMemory/interface/BufferInfo.h" #include "FWCore/SharedMemory/interface/ReadBuffer.h" #include "FWCore/SharedMemory/interface/WriteBuffer.h" #include "FWCore/SharedMemory/interface/ControllerChannel.h" diff --git a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml index 6cf7a5718c9ca..287d649ea8f39 100644 --- a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml @@ -3,17 +3,17 @@ + - + + - - diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 44aec3bd176cc..753f1c78dd00a 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -18,19 +18,18 @@ Description: [one line class summary] // system include files #include -#include -#include -#include -#include #include +#include #include -#include +#include #include -#include +#include +#include #include #include #include -#include "tbb/task_arena.h" + +#include "boost/bind.hpp" #include "boost/ptr_container/ptr_deque.hpp" @@ -43,8 +42,6 @@ Description: [one line class summary] #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Concurrency/interface/FunctorTask.h" - #include "FWCore/ParameterSet/interface/FileInPath.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" @@ -70,9 +67,10 @@ Description: [one line class summary] // class ExternalLHEProducer - : public edm::one::EDProducer { + : public edm::one::EDProducer { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); + ~ExternalLHEProducer() override; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); @@ -93,13 +91,12 @@ class ExternalLHEProducer // ----------member data --------------------------- std::string scriptName_; std::string outputFile_; - const std::vector args_; + std::vector args_; uint32_t npars_; uint32_t nEvents_; bool storeXML_; unsigned int nThreads_{1}; std::string outputContents_; - bool generateConcurrently_{false}; // Used only if nPartonMapping is in the configuration std::map> nPartonMapping_{}; @@ -112,16 +109,12 @@ class ExternalLHEProducer boost::ptr_deque runInfoProducts; bool wasMerged; - class FileCloseSentry { + class FileCloseSentry : private boost::noncopyable { public: explicit FileCloseSentry(int fd) : fd_(fd){}; ~FileCloseSentry() { close(fd_); } - //Make this noncopyable - FileCloseSentry(const FileCloseSentry&) = delete; - FileCloseSentry& operator=(const FileCloseSentry&) = delete; - private: int fd_; }; @@ -131,16 +124,15 @@ class ExternalLHEProducer // constructors and destructor // ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) - : scriptName_((iConfig.getParameter("scriptName")).fullPath()), - outputFile_(iConfig.getParameter("outputFile")), - args_(iConfig.getParameter>("args")), - npars_(iConfig.getParameter("numberOfParameters")), - nEvents_(iConfig.getUntrackedParameter("nEvents")), - storeXML_(iConfig.getUntrackedParameter("storeXML")), - generateConcurrently_(iConfig.getUntrackedParameter("generateConcurrently")) { + : scriptName_((iConfig.getParameter("scriptName")).fullPath()), + outputFile_(iConfig.getParameter("outputFile")), + args_(iConfig.getParameter>("args")), + npars_(iConfig.getParameter("numberOfParameters")), + nEvents_(iConfig.getUntrackedParameter("nEvents")), + storeXML_(iConfig.getUntrackedParameter("storeXML")) { if (npars_ != args_.size()) throw cms::Exception("ExternalLHEProducer") - << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_; + << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_; if (iConfig.exists("nPartonMapping")) { auto& processMap(iConfig.getParameterSetVector("nPartonMapping")); @@ -155,7 +147,7 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) order = 1; else throw cms::Exception("ExternalLHEProducer") - << "Invalid order specification for process " << processId << ": " << orderStr; + << "Invalid order specification for process " << processId << ": " << orderStr; unsigned np(cfg.getParameter("np")); @@ -172,6 +164,8 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) produces(); } +ExternalLHEProducer::~ExternalLHEProducer() {} + // // member functions // @@ -182,17 +176,17 @@ void ExternalLHEProducer::preallocThreads(unsigned int iThreads) { nThreads_ = i // ------------ method called to produce the data ------------ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { nextEvent(); - if (!partonLevel_) { + if (!partonLevel) { throw edm::Exception(edm::errors::EventGenerationFailure) - << "No lhe event found in ExternalLHEProducer::produce(). " - << "The likely cause is that the lhe file contains fewer events than were requested, which is possible " - << "in case of phase space integration or uneweighting efficiency problems."; + << "No lhe event found in ExternalLHEProducer::produce(). " + << "The likely cause is that the lhe file contains fewer events than were requested, which is possible " + << "in case of phase space integration or uneweighting efficiency problems."; } std::unique_ptr product( - new LHEEventProduct(*partonLevel_->getHEPEUP(), partonLevel_->originalXWGTUP())); - if (partonLevel_->getPDF()) { - product->setPDF(*partonLevel_->getPDF()); + new LHEEventProduct(*partonLevel->getHEPEUP(), partonLevel->originalXWGTUP())); + if (partonLevel->getPDF()) { + product->setPDF(*partonLevel->getPDF()); } std::for_each(partonLevel->weights().begin(), partonLevel->weights().end(), @@ -204,11 +198,11 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe product->setScales(partonLevel->scales()); if (nPartonMapping_.empty()) { - product->setNpLO(partonLevel_->npLO()); - product->setNpNLO(partonLevel_->npNLO()); + product->setNpLO(partonLevel->npLO()); + product->setNpNLO(partonLevel->npNLO()); } else { // overwrite npLO and npNLO values by user-specified mapping - unsigned processId(partonLevel_->getHEPEUP()->IDPRUP); + unsigned processId(partonLevel->getHEPEUP()->IDPRUP); unsigned order(0); unsigned np(0); try { @@ -217,51 +211,51 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe np = procDef.second; } catch (std::out_of_range&) { throw cms::Exception("ExternalLHEProducer") - << "Unexpected IDPRUP encountered: " << partonLevel_->getHEPEUP()->IDPRUP; + << "Unexpected IDPRUP encountered: " << partonLevel->getHEPEUP()->IDPRUP; } switch (order) { - case 0: - product->setNpLO(np); - product->setNpNLO(-1); - break; - case 1: - product->setNpLO(-1); - product->setNpNLO(np); - break; - default: - break; + case 0: + product->setNpLO(np); + product->setNpNLO(-1); + break; + case 1: + product->setNpLO(-1); + product->setNpNLO(np); + break; + default: + break; } } - std::for_each(partonLevel_->getComments().begin(), - partonLevel_->getComments().end(), - std::bind(&LHEEventProduct::addComment, product.get(), std::placeholders::_1)); + std::for_each(partonLevel->getComments().begin(), + partonLevel->getComments().end(), + boost::bind(&LHEEventProduct::addComment, product.get(), _1)); iEvent.put(std::move(product)); - if (runInfo_) { - std::unique_ptr product(new LHERunInfoProduct(*runInfo_->getHEPRUP())); - std::for_each(runInfo_->getHeaders().begin(), - runInfo_->getHeaders().end(), - std::bind(&LHERunInfoProduct::addHeader, product.get(), std::placeholders::_1)); - std::for_each(runInfo_->getComments().begin(), - runInfo_->getComments().end(), - std::bind(&LHERunInfoProduct::addComment, product.get(), std::placeholders::_1)); - - if (!runInfoProducts_.empty()) { - runInfoProducts_.front()->mergeProduct(*product); + if (runInfo) { + std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); + std::for_each(runInfo->getHeaders().begin(), + runInfo->getHeaders().end(), + boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); + std::for_each(runInfo->getComments().begin(), + runInfo->getComments().end(), + boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); + + if (!runInfoProducts.empty()) { + runInfoProducts.front().mergeProduct(*product); if (!wasMerged) { - runInfoProducts_.pop_front(); - runInfoProducts_.emplace_front(product.release()); + runInfoProducts.pop_front(); + runInfoProducts.push_front(product.release()); wasMerged = true; } } - runInfo_.reset(); + runInfo.reset(); } - partonLevel_.reset(); + partonLevel.reset(); return; } @@ -279,139 +273,25 @@ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& if (!rng.isAvailable()) { throw cms::Exception("Configuration") - << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" + << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" "which is not present in the configuration file. You must add the service\n" - "in the configuration file if you want to run ExternalLHEProducer"; + "in the configuration file if you want to run ExternalLHEProducer"; } std::ostringstream randomStream; randomStream << rng->mySeed(); args_.insert(args_.begin() + 2, randomStream.str()); args_.insert(args_.begin() + 3, std::to_string(nThreads_)); - /* - std::vector infiles; - auto const seed = rng->mySeed(); - if (generateConcurrently_) { - infiles.resize(nThreads_); - auto const nEventsAve = nEvents_ / nThreads_; - unsigned int const overflow = nThreads_ - (nEvents_ % nThreads_); - std::exception_ptr except; - std::atomic exceptSet{0}; - - tbb::this_task_arena::isolate([this, &except, &infiles, &exceptSet, nEventsAve, overflow, seed]() { - tbb::empty_task* waitTask = new (tbb::task::allocate_root()) tbb::empty_task; - waitTask->set_ref_count(1 + nThreads_); - - for (unsigned int t = 0; t < nThreads_; ++t) { - uint32_t nEvents = nEventsAve; - if (nEvents_ % nThreads_ != 0 and t >= overflow) { - nEvents += 1; - } - auto task = edm::make_functor_task(tbb::task::allocate_root(), - [t, this, &infiles, seed, nEvents, &except, &exceptSet, waitTask]() { - CMS_SA_ALLOW try { - using namespace std::filesystem; - using namespace std::string_literals; - auto out = path("thread"s + std::to_string(t)) / path(outputFile_); - infiles[t] = out.native(); - executeScript(makeArgs(nEvents, 1, seed + t), t); - } catch (...) { - char expected = 0; - if (exceptSet.compare_exchange_strong(expected, 1)) { - except = std::current_exception(); - exceptSet.store(2); - } - } - waitTask->decrement_ref_count(); - }); - tbb::task::spawn(*task); - } - waitTask->wait_for_all(); - tbb::task::destroy(*waitTask); - }); - if (exceptSet != 0) { - std::rethrow_exception(except); - } - } else { - infiles = std::vector(1, outputFile_); - executeScript(makeArgs(nEvents_, nThreads_, seed), 0); - } - - //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory) - std::unique_ptr p(new LHEXMLStringProduct); - - //store the XML file only if explictly requested - if (storeXML_) { - std::string file; - if (generateConcurrently_) { - using namespace std::filesystem; - file = (path("thread0") / path(outputFile_)).native(); - } else { - file = outputFile_; - } - std::ifstream instream(file); - if (!instream) { - throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << "."; - } - instream.seekg(0, instream.end); - int insize = instream.tellg(); - instream.seekg(0, instream.beg); - p->fillCompressedContent(instream, 0.25 * insize); - instream.close(); - } - run.put(std::move(p), "LHEScriptOutput"); - - // LHE C++ classes translation - // (read back uncompressed file from disk in streaming mode again to save memory) - - unsigned int skip = 0; - reader_ = std::make_unique(infiles, skip); - - nextEvent(); - if (runInfoLast_) { - runInfo_ = runInfoLast_; - - std::unique_ptr product(new LHERunInfoProduct(*runInfo_->getHEPRUP())); - std::for_each(runInfo_->getHeaders().begin(), - runInfo_->getHeaders().end(), - std::bind(&LHERunInfoProduct::addHeader, product.get(), std::placeholders::_1)); - std::for_each(runInfo_->getComments().begin(), - runInfo_->getComments().end(), - std::bind(&LHERunInfoProduct::addComment, product.get(), std::placeholders::_1)); - // keep a copy around in case of merging - runInfoProducts_.emplace_back(new LHERunInfoProduct(*product)); - wasMerged = false; - - run.put(std::move(product)); - - runInfo_.reset(); + for (unsigned int iArg = 0; iArg < args_.size(); iArg++) { + LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; } - nextEvent(); - if (runInfoLast) { - runInfo = runInfoLast; + executeScript(); - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); - - // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); - wasMerged = false; - - run.put(std::move(product)); - - weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); - weightHelper_.parseWeights(); + //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory) + std::unique_ptr p(new LHEXMLStringProduct); - runInfo.reset(); - } -*/ //store the XML file only if explictly requested if (storeXML_) { std::ifstream instream(outputFile_); @@ -481,58 +361,25 @@ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& // ------------ method called when ending the processing of a run ------------ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { - if (!runInfoProducts_.empty()) { - std::unique_ptr product(runInfoProducts_.front().release()); - runInfoProducts_.pop_front(); + if (!runInfoProducts.empty()) { + std::unique_ptr product(runInfoProducts.pop_front().release()); run.put(std::move(product)); } nextEvent(); - if (partonLevel_) { + if (partonLevel) { throw edm::Exception(edm::errors::EventGenerationFailure) - << "Error in ExternalLHEProducer::endRunProduce(). " - << "Event loop is over, but there are still lhe events to process." - << "This could happen if lhe file contains more events than requested. This is never expected to happen."; + << "Error in ExternalLHEProducer::endRunProduce(). " + << "Event loop is over, but there are still lhe events to process." + << "This could happen if lhe file contains more events than requested. This is never expected to happen."; } reader_.reset(); - if (generateConcurrently_) { - for (unsigned int t = 0; t < nThreads_; ++t) { - using namespace std::filesystem; - using namespace std::string_literals; - auto out = path("thread"s + std::to_string(t)) / path(outputFile_); - if (unlink(out.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << out - << " (errno=" << errno << ", " << strerror(errno) << ")."; - } - } - } else { - if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ - << " (errno=" << errno << ", " << strerror(errno) << ")."; - } - } -} - -std::vector ExternalLHEProducer::makeArgs(uint32_t nEvents, - unsigned int nThreads, - std::uint32_t seed) const { - std::vector args; - args.reserve(3 + args_.size()); - - args.push_back(args_.front()); - args.push_back(std::to_string(nEvents)); - - args.push_back(std::to_string(seed)); - args.push_back(std::to_string(nThreads)); - std::copy(args_.begin() + 1, args_.end(), std::back_inserter(args)); - - for (unsigned int iArg = 0; iArg < args.size(); iArg++) { - LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args[iArg]; + if (unlink(outputFile_.c_str())) { + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; } - - return args; } void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { @@ -544,7 +391,7 @@ void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi } // ------------ Close all the open file descriptors ------------ -int ExternalLHEProducer::closeDescriptors(int preserve) const { +int ExternalLHEProducer::closeDescriptors(int preserve) { int maxfd = 1024; int fd; #ifdef __linux__ @@ -581,11 +428,12 @@ int ExternalLHEProducer::closeDescriptors(int preserve) const { } // ------------ Execute the script associated with this producer ------------ -void ExternalLHEProducer::executeScript(std::vector const& args, int id) const { +void ExternalLHEProducer::executeScript() { // Fork a script, wait until it finishes. int rc = 0, rc2 = 0; int filedes[2], fd_flags; + unsigned int argc; if (pipe(filedes)) { throw cms::Exception("Unable to create a new pipe"); @@ -594,19 +442,19 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in if ((fd_flags = fcntl(filedes[1], F_GETFD, NULL)) == -1) { throw cms::Exception("ExternalLHEProducer") - << "Failed to get pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; + << "Failed to get pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; } if (fcntl(filedes[1], F_SETFD, fd_flags | FD_CLOEXEC) == -1) { throw cms::Exception("ExternalLHEProducer") - << "Failed to set pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; + << "Failed to set pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; } - unsigned int argc = 1 + args.size(); + argc = 1 + args_.size(); // TODO: assert that we have a reasonable number of arguments char** argv = new char*[argc + 1]; argv[0] = strdup(scriptName_.c_str()); for (unsigned int i = 1; i < argc; i++) { - argv[i] = strdup(args[i - 1].c_str()); + argv[i] = strdup(args_[i - 1].c_str()); } argv[argc] = nullptr; @@ -614,14 +462,6 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in if (pid == 0) { // The child process if (!(rc = closeDescriptors(filedes[1]))) { - if (generateConcurrently_) { - using namespace std::filesystem; - using namespace std::string_literals; - std::error_code ec; - auto newDir = path("thread"s + std::to_string(id)); - create_directory(newDir, ec); - current_path(newDir, ec); - } execvp(argv[0], argv); // If execv returns, we have an error. rc = errno; } @@ -631,14 +471,14 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in } // Free the arg vector ASAP - for (unsigned int i = 0; i < args.size() + 1; i++) { + for (unsigned int i = 0; i < args_.size() + 1; i++) { free(argv[i]); } delete[] argv; if (pid == -1) { throw cms::Exception("ForkException") - << "Unable to fork a child (errno=" << errno << ", " << strerror(errno) << ")"; + << "Unable to fork a child (errno=" << errno << ", " << strerror(errno) << ")"; } close(filedes[1]); @@ -648,7 +488,7 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in } if ((rc2 == sizeof(int)) && rc) { throw cms::Exception("ExternalLHEProducer") - << "Failed to execute script (errno=" << rc << ", " << strerror(rc) << ")"; + << "Failed to execute script (errno=" << rc << ", " << strerror(rc) << ")"; } close(filedes[0]); @@ -660,7 +500,7 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in continue; } else { throw cms::Exception("ExternalLHEProducer") - << "Failed to read child status (errno=" << errno << ", " << strerror(errno) << ")"; + << "Failed to read child status (errno=" << errno << ", " << strerror(errno) << ")"; } } if (WIFSIGNALED(status)) { @@ -676,6 +516,36 @@ void ExternalLHEProducer::executeScript(std::vector const& args, in } } +// ------------ Read the output script ------------ +#define BUFSIZE 4096 +std::unique_ptr ExternalLHEProducer::readOutput() { + int fd; + ssize_t n; + char buf[BUFSIZE]; + + if ((fd = open(outputFile_.c_str(), O_RDONLY)) == -1) { + throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } + + std::stringstream ss; + while ((n = read(fd, buf, BUFSIZE)) > 0 || (n == -1 && errno == EINTR)) { + if (n > 0) + ss.write(buf, n); + } + if (n == -1) { + throw cms::Exception("OutputOpenError") << "Unable to read from script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } + + if (unlink(outputFile_.c_str())) { + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } + + return std::unique_ptr(new std::string(ss.str())); +} + // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void ExternalLHEProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { //The following says we do not know what parameters are allowed so do no validation @@ -690,8 +560,6 @@ void ExternalLHEProducer::fillDescriptions(edm::ConfigurationDescriptions& descr desc.add("numberOfParameters"); desc.addUntracked("nEvents"); desc.addUntracked("storeXML", false); - desc.addUntracked("generateConcurrently", false) - ->setComment("If true, run the script concurrently in separate processes."); edm::ParameterSetDescription nPartonMappingDesc; nPartonMappingDesc.add("idprup"); @@ -703,29 +571,20 @@ void ExternalLHEProducer::fillDescriptions(edm::ConfigurationDescriptions& descr } void ExternalLHEProducer::nextEvent() { - if (partonLevel_) + if (partonLevel) return; if (not reader_) { return; } - - partonLevel_ = reader_->next(); - if (!partonLevel_) { - //see if we have another file to read; - bool newFileOpened; - do { - newFileOpened = false; - partonLevel_ = reader_->next(&newFileOpened); - } while (newFileOpened && !partonLevel_); - } - if (!partonLevel_) + partonLevel = reader_->next(); + if (!partonLevel) return; - std::shared_ptr runInfoThis = partonLevel_->getRunInfo(); - if (runInfoThis != runInfoLast_) { - runInfo_ = runInfoThis; - runInfoLast_ = runInfoThis; + std::shared_ptr runInfoThis = partonLevel->getRunInfo(); + if (runInfoThis != runInfoLast) { + runInfo = runInfoThis; + runInfoLast = runInfoThis; } } diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index d01474cd64dd7..ce248aa8a0850 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -27,13 +27,14 @@ #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" #include "LHESource.h" +#include using namespace lhef; LHESource::LHESource(const edm::ParameterSet ¶ms, const edm::InputSourceDescription &desc) : ProducerSourceFromFiles(params, desc, false), - reader_(new LHEReader(fileNames(), params.getUntrackedParameter("skipEvents", 0))), + reader_(new LHEReader(fileNames(0), params.getUntrackedParameter("skipEvents", 0))), lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), phid_() { From 882f046b23ac8eaba4737a0b0a2a620bc2d83991 Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Thu, 5 Nov 2020 22:41:20 +0100 Subject: [PATCH 159/186] resolve compile errors --- .../plugins/GenWeightsTableProducer.cc | 344 ++++++++++++------ .../NanoAOD/plugins/LHETablesProducer.cc | 55 ++- .../plugins/LHEWeightsTableProducer.cc | 7 +- 3 files changed, 256 insertions(+), 150 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc index 168aef872fb40..0cc12dd7d94e4 100644 --- a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc @@ -22,42 +22,39 @@ #include namespace { + /// ---- Cache object for running sums of weights ---- + struct Counter { + Counter() : num(0), sumw(0), sumw2(0), sumPDF(), sumScale(), sumRwgt(), sumNamed(), sumPS() {} - void mergeSumVectors(std::vector& v1, std::vector const& v2) { - if (v1.empty() && !v2.empty()) - v1.resize(v2.size(), 0); - if (!v2.empty()) - for (unsigned int i = 0, n = v1.size(); i < n; ++i) - v1[i] += v2[i]; - } + // the counters + long long num; + long double sumw; + long double sumw2; + std::vector sumPDF, sumScale, sumRwgt, sumNamed, sumPS; - /// ---- Cache object for running sums of weights ---- - class Counter { - public: void clear() { - num_ = 0; - sumw_ = 0; - sumw2_ = 0; - sumPDF_.clear(); - sumScale_.clear(); - sumRwgt_.clear(); - sumNamed_.clear(); - sumPS_.clear(); + num = 0; + sumw = 0; + sumw2 = 0; + sumPDF.clear(); + sumScale.clear(); + sumRwgt.clear(); + sumNamed.clear(), sumPS.clear(); } // inc the counters void incGenOnly(double w) { - num_++; - sumw_ += w; - sumw2_ += (w * w); + num++; + sumw += w; + sumw2 += (w * w); } void incPSOnly(double w0, const std::vector& wPS) { if (!wPS.empty()) { - if (sumPS_.empty()) - sumPS_.resize(wPS.size(), 0); + if (sumPS.empty()) + sumPS.resize(wPS.size(), 0); for (unsigned int i = 0, n = wPS.size(); i < n; ++i) - sumPS_[i] += (w0 * wPS[i]); + sumPS[i] += (w0 * wPS[i]); } } @@ -71,55 +68,62 @@ namespace { incGenOnly(w0); // then add up variations if (!wScale.empty()) { - if (sumScale_.empty()) - sumScale_.resize(wScale.size(), 0); + if (sumScale.empty()) + sumScale.resize(wScale.size(), 0); for (unsigned int i = 0, n = wScale.size(); i < n; ++i) - sumScale_[i] += (w0 * wScale[i]); + sumScale[i] += (w0 * wScale[i]); } if (!wPDF.empty()) { - if (sumPDF_.empty()) - sumPDF_.resize(wPDF.size(), 0); + if (sumPDF.empty()) + sumPDF.resize(wPDF.size(), 0); for (unsigned int i = 0, n = wPDF.size(); i < n; ++i) - sumPDF_[i] += (w0 * wPDF[i]); + sumPDF[i] += (w0 * wPDF[i]); } if (!wRwgt.empty()) { - if (sumRwgt_.empty()) - sumRwgt_.resize(wRwgt.size(), 0); + if (sumRwgt.empty()) + sumRwgt.resize(wRwgt.size(), 0); for (unsigned int i = 0, n = wRwgt.size(); i < n; ++i) - sumRwgt_[i] += (w0 * wRwgt[i]); + sumRwgt[i] += (w0 * wRwgt[i]); } if (!wNamed.empty()) { - if (sumNamed_.empty()) - sumNamed_.resize(wNamed.size(), 0); + if (sumNamed.empty()) + sumNamed.resize(wNamed.size(), 0); for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) - sumNamed_[i] += (w0 * wNamed[i]); + sumNamed[i] += (w0 * wNamed[i]); } incPSOnly(w0, wPS); } void merge(const Counter& other) { - num_ += other.num_; - sumw_ += other.sumw_; - sumw2_ += other.sumw2_; - - mergeSumVectors(sumScale_, other.sumScale_); - mergeSumVectors(sumPDF_, other.sumPDF_); - mergeSumVectors(sumRwgt_, other.sumRwgt_); - mergeSumVectors(sumNamed_, other.sumNamed_); - mergeSumVectors(sumPS_, other.sumPS_); + num += other.num; + sumw += other.sumw; + sumw2 += other.sumw2; + if (sumScale.empty() && !other.sumScale.empty()) + sumScale.resize(other.sumScale.size(), 0); + if (sumPDF.empty() && !other.sumPDF.empty()) + sumPDF.resize(other.sumPDF.size(), 0); + if (sumRwgt.empty() && !other.sumRwgt.empty()) + sumRwgt.resize(other.sumRwgt.size(), 0); + if (sumNamed.empty() && !other.sumNamed.empty()) + sumNamed.resize(other.sumNamed.size(), 0); + if (sumPS.empty() && !other.sumPS.empty()) + sumPS.resize(other.sumPS.size(), 0); + if (!other.sumScale.empty()) + for (unsigned int i = 0, n = sumScale.size(); i < n; ++i) + sumScale[i] += other.sumScale[i]; + if (!other.sumPDF.empty()) + for (unsigned int i = 0, n = sumPDF.size(); i < n; ++i) + sumPDF[i] += other.sumPDF[i]; + if (!other.sumRwgt.empty()) + for (unsigned int i = 0, n = sumRwgt.size(); i < n; ++i) + sumRwgt[i] += other.sumRwgt[i]; + if (!other.sumNamed.empty()) + for (unsigned int i = 0, n = sumNamed.size(); i < n; ++i) + sumNamed[i] += other.sumNamed[i]; + if (!other.sumPS.empty()) + for (unsigned int i = 0, n = sumPS.size(); i < n; ++i) + sumPS[i] += other.sumPS[i]; } - - //private: - // the counters - long long num_ = 0; - long double sumw_ = 0; - long double sumw2_ = 0; - - std::vector sumPDF_; - std::vector sumScale_; - std::vector sumRwgt_; - std::vector sumNamed_; - std::vector sumPS_; }; struct CounterMap { @@ -255,6 +259,10 @@ class GenWeightsTableProducer : public edm::global::EDProducer(); produces("genModel"); + produces("LHEScale"); + produces("LHEPdf"); + produces("LHEReweighting"); + produces("LHENamed"); produces("PS"); produces(); if (namedWeightIDs_.size() != namedWeightLabels_.size()) { @@ -273,15 +281,17 @@ class GenWeightsTableProducer : public edm::global::EDProducerget(); + Counter* counter = streamCache(id)->countermap.get(); // generator information (always available) - auto const& genInfo = iEvent.get(genTag_); + edm::Handle genInfo; + iEvent.getByToken(genTag_, genInfo); + double weight = genInfo->weight(); // table for gen info, always available auto out = std::make_unique(1, "genWeight", true); out->setDoc("generator weight"); - out->addColumnValue("", genInfo.weight(), "generator weight", nanoaod::FlatTable::FloatColumn); + out->addColumnValue("", weight, "generator weight"); iEvent.put(std::move(out)); std::string model_label = streamCache(id)->countermap.getLabel(); @@ -290,6 +300,7 @@ class GenWeightsTableProducer : public edm::global::EDProducer lheScaleTab, lhePdfTab, lheRwgtTab, lheNamedTab; std::unique_ptr genPSTab; edm::Handle lheInfo; @@ -304,40 +315,58 @@ class GenWeightsTableProducer : public edm::global::EDProducerweightChoice); + fillLHEPdfWeightTablesFromGenInfo( + counter, weightChoice, weight, *genInfo, lheScaleTab, lhePdfTab, lheNamedTab, genPSTab); + lheRwgtTab = std::make_unique(1, "LHEReweightingWeights", true); + //lheNamedTab.reset(new nanoaod::FlatTable(1, "LHENamedWeights", true)); + //genPSTab.reset(new nanoaod::FlatTable(1, "PSWeight", true)); } else { // Still try to add the PS weights - fillOnlyPSWeightTable(counter, genInfo.weight(), genInfo, genPSTab); + fillOnlyPSWeightTable(counter, weight, *genInfo, genPSTab); + // make dummy values + lheScaleTab = std::make_unique(1, "LHEScaleWeights", true); + lhePdfTab = std::make_unique(1, "LHEPdfWeights", true); + lheRwgtTab = std::make_unique(1, "LHEReweightingWeights", true); + lheNamedTab = std::make_unique(1, "LHENamedWeights", true); if (!hasIssuedWarning_.exchange(true)) { edm::LogWarning("LHETablesProducer") << "No LHEEventProduct, so there will be no LHE Tables\n"; } } + iEvent.put(std::move(lheScaleTab), "LHEScale"); + iEvent.put(std::move(lhePdfTab), "LHEPdf"); + iEvent.put(std::move(lheRwgtTab), "LHEReweighting"); + iEvent.put(std::move(lheNamedTab), "LHENamed"); iEvent.put(std::move(genPSTab), "PS"); } - void fillLHEWeightTables(Counter& counter, - const DynamicWeightChoice& weightChoice, + void fillLHEWeightTables(Counter* counter, + const DynamicWeightChoice* weightChoice, double genWeight, const LHEEventProduct& lheProd, const GenEventInfoProduct& genProd, + std::unique_ptr& outScale, + std::unique_ptr& outPdf, + std::unique_ptr& outRwgt, + std::unique_ptr& outNamed, std::unique_ptr& outPS) const { - // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) - bool lheDebug = debug_.exchange(false); + bool lheDebug = debug_.exchange( + false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) - const std::vector& scaleWeightIDs = weightChoice.scaleWeightIDs; - const std::vector& pdfWeightIDs = weightChoice.pdfWeightIDs; - const std::vector& rwgtWeightIDs = weightChoice.rwgtIDs; + const std::vector& scaleWeightIDs = weightChoice->scaleWeightIDs; + const std::vector& pdfWeightIDs = weightChoice->pdfWeightIDs; + const std::vector& rwgtWeightIDs = weightChoice->rwgtIDs; double w0 = lheProd.originalXWGTUP(); - std::vector wScale(scaleWeightIDs.size(), 1); - std::vector wPDF(pdfWeightIDs.size(), 1); - std::vector wRwgt(rwgtWeightIDs.size(), 1); - std::vector wNamed(namedWeightIDs_.size(), 1); - + std::vector wScale(scaleWeightIDs.size(), 1), wPDF(pdfWeightIDs.size(), 1), wRwgt(rwgtWeightIDs.size(), 1), + wNamed(namedWeightIDs_.size(), 1); for (auto& weight : lheProd.weights()) { if (lheDebug) printf("Weight %+9.5f rel %+9.5f for id %s\n", weight.wgt, weight.wgt / w0, weight.id.c_str()); @@ -367,23 +396,104 @@ class GenWeightsTableProducer : public edm::global::EDProducer wPS(vectorSize, 1); std::string psWeightDocStr; if (vectorSize > 1) { - for (std::size_t i = 6; i < 10; i++) { - wPS[i - 6] = (genProd.weights()[i]) / nominal; + double nominal = genProd.weights()[1]; // Called 'Baseline' in GenLumiInfoHeader + if (keepAllPSWeights_) { + for (std::size_t i = 0; i < vectorSize; i++) { + wPS[i] = (genProd.weights()[i + 2]) / nominal; + } + psWeightDocStr = "All PS weights (w_var / w_nominal)"; + } else { + for (std::size_t i = 6; i < 10; i++) { + wPS[i - 6] = (genProd.weights()[i]) / nominal; + } + psWeightDocStr = + "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " + "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 "; } - } + } else { + psWeightDocStr = "dummy PS weight (1.0) "; + } + outPS = std::make_unique(wPS.size(), "PSWeight", false); + outPS->addColumn("", wPS, psWeightDocStr, lheWeightPrecision_); + + outScale = std::make_unique(wScale.size(), "LHEScaleWeight", false); + outScale->addColumn("", wScale, weightChoice->scaleWeightsDoc, lheWeightPrecision_); + + outPdf = std::make_unique(wPDF.size(), "LHEPdfWeight", false); + outPdf->addColumn("", wPDF, weightChoice->pdfWeightsDoc, lheWeightPrecision_); + + outRwgt = std::make_unique(wRwgt.size(), "LHEReweightingWeight", false); + outRwgt->addColumn("", wRwgt, weightChoice->rwgtWeightDoc, lheWeightPrecision_); + + outNamed = std::make_unique(1, "LHEWeight", true); + outNamed->addColumnValue("originalXWGTUP", lheProd.originalXWGTUP(), "Nominal event weight in the LHE file"); + for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) { + outNamed->addColumnValue(namedWeightLabels_[i], + wNamed[i], + "LHE weight for id " + namedWeightIDs_[i] + ", relative to nominal", + lheWeightPrecision_); + } + + counter->incLHE(genWeight, wScale, wPDF, wRwgt, wNamed, wPS); + } + + void fillLHEPdfWeightTablesFromGenInfo(Counter* counter, + const DynamicWeightChoiceGenInfo* weightChoice, + double genWeight, + const GenEventInfoProduct& genProd, + std::unique_ptr& outScale, + std::unique_ptr& outPdf, + std::unique_ptr& outNamed, + std::unique_ptr& outPS) const { + const std::vector& scaleWeightIDs = weightChoice->scaleWeightIDs; + const std::vector& pdfWeightIDs = weightChoice->pdfWeightIDs; + const std::vector& psWeightIDs = weightChoice->psWeightIDs; + + auto weights = genProd.weights(); + double w0 = (weights.size() > 1) ? weights.at(1) : 1.; + double originalXWGTUP = (weights.size() > 1) ? weights.at(1) : 1.; + + std::vector wScale, wPDF, wPS; + for (auto id : scaleWeightIDs) + wScale.push_back(weights.at(id) / w0); + for (auto id : pdfWeightIDs) { + wPDF.push_back(weights.at(id) / w0); + } + if (!psWeightIDs.empty()) { + double psNom = + weights.at(psWeightIDs.at(0)); // normalise PS weights by "Baseline", which should be the first entry + for (std::size_t i = 1; i < psWeightIDs.size(); i++) + wPS.push_back(weights.at(psWeightIDs.at(i)) / psNom); + } else + wPS.push_back(1.0); + std::string psWeightDocStr; + if (keepAllPSWeights_) { + psWeightDocStr = "All PS weights (w_var / w_nominal)"; + } else { + psWeightDocStr = + "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " + "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 "; + } + + outScale = std::make_unique(wScale.size(), "LHEScaleWeight", false); + outScale->addColumn("", wScale, weightChoice->scaleWeightsDoc, lheWeightPrecision_); + + outPdf = std::make_unique(wPDF.size(), "LHEPdfWeight", false); + outPdf->addColumn("", wPDF, weightChoice->pdfWeightsDoc, lheWeightPrecision_); + outPS = std::make_unique(wPS.size(), "PSWeight", false); - outPS->addColumn("", - wPS, - vectorSize > 1 ? "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " - "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 " - : "dummy PS weight (1.0) ", - nanoaod::FlatTable::FloatColumn, - lheWeightPrecision_); - - counter.incLHE(genWeight, wScale, wPDF, wRwgt, wNamed, wPS); + outPS->addColumn("", wPS, wPS.size() > 1 ? psWeightDocStr : "dummy PS weight (1.0) ", lheWeightPrecision_); + + outNamed = std::make_unique(1, "LHEWeight", true); + outNamed->addColumnValue("originalXWGTUP", originalXWGTUP, "Nominal event weight in the LHE file"); + /*for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) { + outNamed->addColumnValue(namedWeightLabels_[i], wNamed[i], "LHE weight for id "+namedWeightIDs_[i]+", relative to nominal", lheWeightPrecision_); + }*/ + + counter->incLHE(genWeight, wScale, wPDF, std::vector(), std::vector(), wPS); } - void fillOnlyPSWeightTable(Counter& counter, + void fillOnlyPSWeightTable(Counter* counter, double genWeight, const GenEventInfoProduct& genProd, std::unique_ptr& outPS) const { @@ -413,24 +523,18 @@ class GenWeightsTableProducer : public edm::global::EDProducer(wPS.size(), "PSWeight", false); - outPS->addColumn("", - wPS, - vectorSize > 1 ? "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " - "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 " - : "dummy PS weight (1.0) ", - nanoaod::FlatTable::FloatColumn, - lheWeightPrecision_); - - counter.incGenOnly(genWeight); - counter.incPSOnly(genWeight, wPS); + outPS->addColumn("", wPS, psWeightDocStr, lheWeightPrecision_); + + counter->incGenOnly(genWeight); + counter->incPSOnly(genWeight, wPS); } // create an empty counter std::shared_ptr globalBeginRun(edm::Run const& iRun, edm::EventSetup const&) const override { edm::Handle lheInfo; - // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) - bool lheDebug = debugRun_.exchange(false); + bool lheDebug = debugRun_.exchange( + false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) auto weightChoice = std::make_shared(); // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) @@ -915,29 +1019,32 @@ class GenWeightsTableProducer : public edm::global::EDProducer(); - for (auto x : runCounterMap->countermap) { - auto& runCounter = x.second; - std::string label = std::string("_") + x.first; + for (const auto& x : runCounterMap->countermap) { + auto runCounter = &(x.second); + std::string label = (!x.first.empty()) ? (std::string("_") + x.first) : ""; std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; - out->addInt("genEventCount" + label, "event count" + doclabel, runCounter.num_); - out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter.sumw_); - out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); + out->addInt("genEventCount" + label, "event count" + doclabel, runCounter->num); + out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter->sumw); + out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter->sumw2); - double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; - auto sumScales = runCounter.sumScale_; + double norm = runCounter->sumw ? 1.0 / runCounter->sumw : 1; + auto sumScales = runCounter->sumScale; for (auto& val : sumScales) val *= norm; - out->addVFloat("LHEScaleSumw" + label, - "Sum of genEventWeight * LHEScaleWeight[i], divided by genEventSumw" + doclabel, - sumScales); - auto sumPDFs = runCounter.sumPDF_; + out->addVFloatWithNorm("LHEScaleSumw" + label, + "Sum of genEventWeight * LHEScaleWeight[i], divided by genEventSumw" + doclabel, + sumScales, + runCounter->sumw); + auto sumPDFs = runCounter->sumPDF; for (auto& val : sumPDFs) val *= norm; - out->addVFloat( - "LHEPdfSumw" + label, "Sum of genEventWeight * LHEPdfWeight[i], divided by genEventSumw" + doclabel, sumPDFs); - if (!runCounter.sumRwgt_.empty()) { - auto sumRwgts = runCounter.sumRwgt_; + out->addVFloatWithNorm("LHEPdfSumw" + label, + "Sum of genEventWeight * LHEPdfWeight[i], divided by genEventSumw" + doclabel, + sumPDFs, + runCounter->sumw); + if (!runCounter->sumRwgt.empty()) { + auto sumRwgts = runCounter->sumRwgt; for (auto& val : sumRwgts) val *= norm; out->addVFloatWithNorm("LHEReweightingSumw" + label, @@ -945,12 +1052,13 @@ class GenWeightsTableProducer : public edm::global::EDProducersumw); } - if (!runCounter.sumNamed_.empty()) { // it could be empty if there's no LHE info in the sample + if (!runCounter->sumNamed.empty()) { // it could be empty if there's no LHE info in the sample for (unsigned int i = 0, n = namedWeightLabels_.size(); i < n; ++i) { out->addFloatWithNorm( "LHESumw_" + namedWeightLabels_[i] + label, "Sum of genEventWeight * LHEWeight_" + namedWeightLabels_[i] + ", divided by genEventSumw" + doclabel, - runCounter.sumNamed_[i] * norm); + runCounter->sumNamed[i] * norm, + runCounter->sumw); } } } diff --git a/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc b/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc index 11d09cc5b9fc7..1646b08a29381 100644 --- a/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc @@ -150,47 +150,46 @@ class LHETablesProducer : public edm::global::EDProducer<> { } out.addColumnValue( - "Njets", lheNj, "Number of jets (partons) at LHE step", nanoaod::FlatTable::UInt8Column); - out.addColumnValue("Nb", lheNb, "Number of b partons at LHE step", nanoaod::FlatTable::UInt8Column); - out.addColumnValue("Nc", lheNc, "Number of c partons at LHE step", nanoaod::FlatTable::UInt8Column); + "Njets", lheNj, "Number of jets (partons) at LHE step"); + out.addColumnValue("Nb", lheNb, "Number of b partons at LHE step"); + out.addColumnValue("Nc", lheNc, "Number of c partons at LHE step"); out.addColumnValue( - "Nuds", lheNuds, "Number of u,d,s partons at LHE step", nanoaod::FlatTable::UInt8Column); + "Nuds", lheNuds, "Number of u,d,s partons at LHE step"); out.addColumnValue( - "Nglu", lheNglu, "Number of gluon partons at LHE step", nanoaod::FlatTable::UInt8Column); - out.addColumnValue("HT", lheHT, "HT, scalar sum of parton pTs at LHE step", nanoaod::FlatTable::FloatColumn); + "Nglu", lheNglu, "Number of gluon partons at LHE step"); + out.addColumnValue("HT", lheHT, "HT, scalar sum of parton pTs at LHE step"); out.addColumnValue("HTIncoming", lheHTIncoming, - "HT, scalar sum of parton pTs at LHE step, restricted to partons", - nanoaod::FlatTable::FloatColumn); - out.addColumnValue("Vpt", lheVpt, "pT of the W or Z boson at LHE step", nanoaod::FlatTable::FloatColumn); - out.addColumnValue("NpNLO", lheProd.npNLO(), "number of partons at NLO", nanoaod::FlatTable::UInt8Column); - out.addColumnValue("NpLO", lheProd.npLO(), "number of partons at LO", nanoaod::FlatTable::UInt8Column); - out.addColumnValue("AlphaS", alphaS, "Per-event alphaS", nanoaod::FlatTable::FloatColumn); + "HT, scalar sum of parton pTs at LHE step, restricted to partons"); + out.addColumnValue("Vpt", lheVpt, "pT of the W or Z boson at LHE step"); + out.addColumnValue("NpNLO", lheProd.npNLO(), "number of partons at NLO"); + out.addColumnValue("NpLO", lheProd.npLO(), "number of partons at LO"); + out.addColumnValue("AlphaS", alphaS, "Per-event alphaS"); if (storeAllLHEInfo_){ - out.addColumnValue("AlphaQED", alphaQED, "Per-event alphaQED", nanoaod::FlatTable::FloatColumn); - out.addColumnValue("Scale", scale, "Per-event scale", nanoaod::FlatTable::FloatColumn); - out.addColumnValue("ProcessID", idproc, "Process id (as in the card ordering)", nanoaod::FlatTable::UInt8Column); + out.addColumnValue("AlphaQED", alphaQED, "Per-event alphaQED"); + out.addColumnValue("Scale", scale, "Per-event scale"); + out.addColumnValue("ProcessID", idproc, "Process id (as in the card ordering)"); } auto outPart = std::make_unique(vals_pt.size(), "LHEPart", false); - outPart->addColumn("pt", vals_pt, "Pt of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + outPart->addColumn("pt", vals_pt, "Pt of LHE particles", this->precision_); outPart->addColumn( - "eta", vals_eta, "Pseodorapidity of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + "eta", vals_eta, "Pseodorapidity of LHE particles", this->precision_); outPart->addColumn( - "phi", vals_phi, "Phi of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + "phi", vals_phi, "Phi of LHE particles", this->precision_); outPart->addColumn( - "mass", vals_mass, "Mass of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + "mass", vals_mass, "Mass of LHE particles", this->precision_); outPart->addColumn( - "incomingpz", vals_pz, "Pz of incoming LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); - outPart->addColumn("pdgId", vals_pid, "PDG ID of LHE particles", nanoaod::FlatTable::IntColumn); + "incomingpz", vals_pz, "Pz of incoming LHE particles", this->precision_); + outPart->addColumn("pdgId", vals_pid, "PDG ID of LHE particles"); outPart->addColumn( - "status", vals_status, "LHE particle status; -1:incoming, 1:outgoing", nanoaod::FlatTable::IntColumn); - outPart->addColumn("spin", vals_spin, "Spin of LHE particles", nanoaod::FlatTable::IntColumn); + "status", vals_status, "LHE particle status; -1:incoming, 1:outgoing"); + outPart->addColumn("spin", vals_spin, "Spin of LHE particles"); if (storeAllLHEInfo_){ - outPart->addColumn("color1", vals_col1, "First color index of LHE particles", nanoaod::FlatTable::IntColumn); - outPart->addColumn("color2", vals_col2, "Second color index of LHE particles", nanoaod::FlatTable::IntColumn); - outPart->addColumn("mother1", vals_mother1, "First mother index of LHE particles", nanoaod::FlatTable::IntColumn); - outPart->addColumn("mother2", vals_mother2, "Second mother index of LHE particles", nanoaod::FlatTable::IntColumn); - outPart->addColumn("lifetime", vals_time, "Own lifetime of LHE particles", nanoaod::FlatTable::FloatColumn, this->precision_); + outPart->addColumn("color1", vals_col1, "First color index of LHE particles"); + outPart->addColumn("color2", vals_col2, "Second color index of LHE particles"); + outPart->addColumn("mother1", vals_mother1, "First mother index of LHE particles"); + outPart->addColumn("mother2", vals_mother2, "Second mother index of LHE particles"); + outPart->addColumn("lifetime", vals_time, "Own lifetime of LHE particles", this->precision_); } return outPart; } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index d1b31837cefad..ae11ba2dcb014 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -200,7 +200,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons // table for gen info, always available auto outGeninfo = std::make_unique(1, "genWeight", true); outGeninfo->setDoc("generator weight"); - outGeninfo->addColumnValue("", genInfo.weight(), "generator weight", nanoaod::FlatTable::FloatColumn); + outGeninfo->addColumnValue("", genInfo.weight(), "generator weight"); iEvent.put(std::move(outGeninfo), "GENWeight"); //this will take care of sum of genWeights counter.incGenOnly(genWeight); @@ -242,13 +242,12 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons auto& weightVec = lheWeightTables[wg.first]; counter.incLHE(genWeight, weightVec, wname); auto outTable = std::make_unique(weightVec.size(), wname, false); - outTable->addColumn("", weightVec, weightlabels[wg.first], - nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + outTable->addColumn("", weightVec, weightlabels[wg.first], lheWeightPrecision_); //now add the vector containing the sizes of alt sets auto outTableSizes = std::make_unique(weightVecsizes[wg.first].size(), wname + "_AltSetSizes", false); outTableSizes->addColumn("", weightVecsizes[wg.first], "Sizes of weight arrays for weight type:" + wname, - nanoaod::FlatTable::FloatColumn, lheWeightPrecision_); + lheWeightPrecision_); iEvent.put(std::move(outTable), wname); iEvent.put(std::move(outTableSizes), wname + "sizes"); } From 4719048e8ea245ae5a605904ea7db2d0bc25cfee Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Thu, 5 Nov 2020 22:44:16 +0100 Subject: [PATCH 160/186] resolve dependency --- GeneratorInterface/LHEInterface/plugins/BuildFile.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml index 287d649ea8f39..59f4fdea19863 100644 --- a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml @@ -3,6 +3,7 @@ + From 76b867cb5703d932c5045ce19c2b2143eb588ec0 Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Thu, 5 Nov 2020 22:54:17 +0100 Subject: [PATCH 161/186] resolve code check and format issues --- .../Core/interface/LHEWeightHelper.h | 1 + .../Core/plugins/GenWeightProductProducer.cc | 8 +- .../Core/plugins/LHEWeightProductProducer.cc | 38 +-- .../Core/src/GenWeightHelper.cc | 2 +- .../Core/src/LHEWeightHelper.cc | 14 +- GeneratorInterface/Core/src/WeightHelper.cc | 10 +- .../plugins/ExternalLHEProducer.cc | 70 ++--- .../LHEInterface/plugins/LHESource.cc | 80 +++--- .../LHEInterface/plugins/LHESource.h | 2 +- .../NanoAOD/interface/GenWeightCounters.h | 25 +- .../NanoAOD/plugins/LHETablesProducer.cc | 76 +++--- .../plugins/LHEWeightsTableProducer.cc | 252 ++++++++++-------- .../NanoAOD/plugins/NanoAODOutputModule.cc | 236 ++++++++-------- .../interface/GenWeightProduct.h | 2 +- .../interface/MEParamWeightGroupInfo.h | 4 +- .../interface/PartonShowerWeightGroupInfo.h | 6 +- .../interface/PdfWeightGroupInfo.h | 4 +- .../interface/ScaleWeightGroupInfo.h | 4 +- .../interface/UnknownWeightGroupInfo.h | 4 +- .../src/GenWeightInfoProduct.cc | 15 +- .../src/ScaleWeightGroupInfo.cc | 2 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 38 +-- 22 files changed, 440 insertions(+), 453 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index b2f636250f230..80bd3cf14af19 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -25,6 +25,7 @@ namespace gen { bool isConsistent(); void swapHeaders(); void setFailIfInvalidXML(bool value) { failIfInvalidXML_ = value; } + private: std::vector headerLines_; bool failIfInvalidXML_ = false; diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index f9eebff3475cd..3eef6a5701171 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -61,7 +61,7 @@ void GenWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup edm::Handle genEventInfo; iEvent.getByToken(genEventToken_, genEventInfo); - float centralWeight = genEventInfo->weights().size() > 0 ? genEventInfo->weights().at(0) : 1.; + float centralWeight = !genEventInfo->weights().empty() ? genEventInfo->weights().at(0) : 1.; auto weightProduct = weightHelper_.weightProduct(genEventInfo->weights(), centralWeight); iEvent.put(std::move(weightProduct)); } @@ -82,9 +82,9 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.parseWeightGroupsFromNames(weightNames_); auto weightInfoProduct = std::make_unique(); - if (weightHelper_.weightGroups().size() == 0) - weightHelper_.addUnassociatedGroup(); - + if (weightHelper_.weightGroups().empty()) + weightHelper_.addUnassociatedGroup(); + for (auto& weightGroup : weightHelper_.weightGroups()) { weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); } diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 21e550acfcc76..7634842f1f8d3 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -49,12 +49,12 @@ class LHEWeightProductProducer : public edm::one::EDProducer>("lheSourceLabels")), - lheEventTokens_(edm::vector_transform(lheLabels_, - [this](const std::string& tag) { return mayConsume(tag); })), - lheRunInfoTokens_(edm::vector_transform(lheLabels_, - [this](const std::string& tag) { return mayConsume(tag); })), - lheWeightInfoTokens_(edm::vector_transform(lheLabels_, - [this](const std::string& tag) { return mayConsume(tag); })) { + lheEventTokens_(edm::vector_transform( + lheLabels_, [this](const std::string& tag) { return mayConsume(tag); })), + lheRunInfoTokens_(edm::vector_transform( + lheLabels_, [this](const std::string& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform( + lheLabels_, [this](const std::string& tag) { return mayConsume(tag); })) { produces(); produces(); weightHelper_.setFailIfInvalidXML(iConfig.getUntrackedParameter("failIfInvalidXML", false)); @@ -72,7 +72,7 @@ void LHEWeightProductProducer::produce(edm::Event& iEvent, const edm::EventSetup for (auto& token : lheEventTokens_) { iEvent.getByToken(token, lheEventInfo); if (lheEventInfo.isValid()) { - break; + break; } } @@ -85,13 +85,12 @@ void LHEWeightProductProducer::beginRun(edm::Run const& run, edm::EventSetup con for (auto& label : lheLabels_) { run.getByLabel(label, lheRunInfoHandle); if (lheRunInfoHandle.isValid()) { - hasLhe_ = true; - break; + hasLhe_ = true; + break; } } if (!hasLhe_) - return; - + return; typedef std::vector::const_iterator header_cit; LHERunInfoProduct::Header headerWeightInfo; @@ -119,20 +118,21 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& } if (!hasLhe_) - return; + return; try { weightHelper_.parseWeights(); } catch (cms::Exception& e) { - std::string error = e.what(); - error += "\n NOTE: if you want to attempt to process this sample anyway, set failIfInvalidXML = False " - "in the configuration file\n. If you set this flag and the error persists, the issue " - " is fatal and must be solved at the LHE/gridpack level."; - throw cms::Exception("LHEWeightProductProducer") << error; + std::string error = e.what(); + error += + "\n NOTE: if you want to attempt to process this sample anyway, set failIfInvalidXML = False " + "in the configuration file\n. If you set this flag and the error persists, the issue " + " is fatal and must be solved at the LHE/gridpack level."; + throw cms::Exception("LHEWeightProductProducer") << error; } - if (weightHelper_.weightGroups().size() == 0) - weightHelper_.addUnassociatedGroup(); + if (weightHelper_.weightGroups().empty()) + weightHelper_.addUnassociatedGroup(); auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 1fc086f688e56..b06475941efd6 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -43,7 +43,7 @@ namespace gen { {"", index, weightName, weightName, std::unordered_map(), groupIndex}); if (isPartonShowerWeightGroup(parsedWeights_.back())) { if (showerGroupIndex < 0) { - showerGroupIndex = ++groupIndex; + showerGroupIndex = ++groupIndex; } parsedWeights_.back().wgtGroup_idx = showerGroupIndex; // all parton showers are grouped together } diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 2acc27c3f0da9..4be51105c9cec 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -13,8 +13,8 @@ namespace gen { parsedWeights_.clear(); if (!isConsistent() && failIfInvalidXML_) { - throw cms::Exception("LHEWeightHelper") << - "XML in LHE is not consistent: Most likely, XML tags are out of order."; + throw cms::Exception("LHEWeightHelper") + << "XML in LHE is not consistent: Most likely, XML tags are out of order."; } else if (!isConsistent()) { swapHeaders(); } @@ -27,7 +27,7 @@ namespace gen { // in case of > instead of < if (xmlError != 0 && failIfInvalidXML_) { xmlDoc.PrintError(); - throw cms::Exception("LHEWeightHelper") + throw cms::Exception("LHEWeightHelper") << "The LHE header is not valid XML! Weight information was not properly parsed."; } else if (xmlError != 0 && !failIfInvalidXML_) { boost::replace_all(fullHeader, "<", "<"); @@ -93,11 +93,11 @@ namespace gen { std::string LHEWeightHelper::parseGroupName(tinyxml2::XMLElement* el) { std::vector nameAlts_ = {"name", "type"}; - for (auto nameAtt : nameAlts_) { + for (const auto& nameAtt : nameAlts_) { if (el->Attribute(nameAtt.c_str())) { std::string groupName = el->Attribute(nameAtt.c_str()); - if (groupName.find(".") != std::string::npos) - groupName.erase(groupName.find("."), groupName.size()); + if (groupName.find('.') != std::string::npos) + groupName.erase(groupName.find('.'), groupName.size()); return groupName; } } @@ -111,7 +111,7 @@ namespace gen { bool LHEWeightHelper::isConsistent() { int curLevel = 0; - for (auto line : headerLines_) { + for (const auto& line : headerLines_) { if (line.find(" psNames = {"isr", "fsr", "nominal", "baseline", "emission"}; - for (auto name : psNames) { + for (const auto& name : psNames) { if (groupname.find(name) != std::string::npos) return true; } @@ -128,7 +128,7 @@ namespace gen { } catch (std::invalid_argument& e) { pdfGroup.setIsWellFormed(false); } - } else if (pdfGroup.lhaIds().size() > 0) { + } else if (!pdfGroup.lhaIds().empty()) { return pdfGroup.lhaIds().back() + 1; } else { return LHAPDF::lookupLHAPDFID(weight.groupname); @@ -240,7 +240,7 @@ namespace gen { // Fall back to unordered search int counter = 0; - for (auto weightGroup : weightGroups_) { + for (const auto& weightGroup : weightGroups_) { if (weightGroup.containsWeight(wgtId, weightIndex)) return counter; counter++; @@ -290,8 +290,8 @@ namespace gen { wgtPS.cacheWeightIndicesByLabel(); std::vector labels = wgtPS.weightLabels(); - if (labels.size() > FIRST_PSWEIGHT_ENTRY && labels.at(FIRST_PSWEIGHT_ENTRY).find(":") != std::string::npos && - labels.at(FIRST_PSWEIGHT_ENTRY).find("=") != std::string::npos) { + if (labels.size() > FIRST_PSWEIGHT_ENTRY && labels.at(FIRST_PSWEIGHT_ENTRY).find(':') != std::string::npos && + labels.at(FIRST_PSWEIGHT_ENTRY).find('=') != std::string::npos) { wgtPS.setNameIsPythiaSyntax(true); } } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 753f1c78dd00a..cf944ea8bdeec 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -67,7 +67,7 @@ Description: [one line class summary] // class ExternalLHEProducer - : public edm::one::EDProducer { + : public edm::one::EDProducer { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); ~ExternalLHEProducer() override; @@ -124,15 +124,15 @@ class ExternalLHEProducer // constructors and destructor // ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) - : scriptName_((iConfig.getParameter("scriptName")).fullPath()), - outputFile_(iConfig.getParameter("outputFile")), - args_(iConfig.getParameter>("args")), - npars_(iConfig.getParameter("numberOfParameters")), - nEvents_(iConfig.getUntrackedParameter("nEvents")), - storeXML_(iConfig.getUntrackedParameter("storeXML")) { + : scriptName_((iConfig.getParameter("scriptName")).fullPath()), + outputFile_(iConfig.getParameter("outputFile")), + args_(iConfig.getParameter>("args")), + npars_(iConfig.getParameter("numberOfParameters")), + nEvents_(iConfig.getUntrackedParameter("nEvents")), + storeXML_(iConfig.getUntrackedParameter("storeXML")) { if (npars_ != args_.size()) throw cms::Exception("ExternalLHEProducer") - << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_; + << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_; if (iConfig.exists("nPartonMapping")) { auto& processMap(iConfig.getParameterSetVector("nPartonMapping")); @@ -147,7 +147,7 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) order = 1; else throw cms::Exception("ExternalLHEProducer") - << "Invalid order specification for process " << processId << ": " << orderStr; + << "Invalid order specification for process " << processId << ": " << orderStr; unsigned np(cfg.getParameter("np")); @@ -178,13 +178,13 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe nextEvent(); if (!partonLevel) { throw edm::Exception(edm::errors::EventGenerationFailure) - << "No lhe event found in ExternalLHEProducer::produce(). " - << "The likely cause is that the lhe file contains fewer events than were requested, which is possible " - << "in case of phase space integration or uneweighting efficiency problems."; + << "No lhe event found in ExternalLHEProducer::produce(). " + << "The likely cause is that the lhe file contains fewer events than were requested, which is possible " + << "in case of phase space integration or uneweighting efficiency problems."; } std::unique_ptr product( - new LHEEventProduct(*partonLevel->getHEPEUP(), partonLevel->originalXWGTUP())); + new LHEEventProduct(*partonLevel->getHEPEUP(), partonLevel->originalXWGTUP())); if (partonLevel->getPDF()) { product->setPDF(*partonLevel->getPDF()); } @@ -211,20 +211,20 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe np = procDef.second; } catch (std::out_of_range&) { throw cms::Exception("ExternalLHEProducer") - << "Unexpected IDPRUP encountered: " << partonLevel->getHEPEUP()->IDPRUP; + << "Unexpected IDPRUP encountered: " << partonLevel->getHEPEUP()->IDPRUP; } switch (order) { - case 0: - product->setNpLO(np); - product->setNpNLO(-1); - break; - case 1: - product->setNpLO(-1); - product->setNpNLO(np); - break; - default: - break; + case 0: + product->setNpLO(np); + product->setNpNLO(-1); + break; + case 1: + product->setNpLO(-1); + product->setNpNLO(np); + break; + default: + break; } } @@ -273,9 +273,9 @@ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& if (!rng.isAvailable()) { throw cms::Exception("Configuration") - << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" + << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n" "which is not present in the configuration file. You must add the service\n" - "in the configuration file if you want to run ExternalLHEProducer"; + "in the configuration file if you want to run ExternalLHEProducer"; } std::ostringstream randomStream; randomStream << rng->mySeed(); @@ -369,9 +369,9 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es nextEvent(); if (partonLevel) { throw edm::Exception(edm::errors::EventGenerationFailure) - << "Error in ExternalLHEProducer::endRunProduce(). " - << "Event loop is over, but there are still lhe events to process." - << "This could happen if lhe file contains more events than requested. This is never expected to happen."; + << "Error in ExternalLHEProducer::endRunProduce(). " + << "Event loop is over, but there are still lhe events to process." + << "This could happen if lhe file contains more events than requested. This is never expected to happen."; } reader_.reset(); @@ -442,11 +442,11 @@ void ExternalLHEProducer::executeScript() { if ((fd_flags = fcntl(filedes[1], F_GETFD, NULL)) == -1) { throw cms::Exception("ExternalLHEProducer") - << "Failed to get pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; + << "Failed to get pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; } if (fcntl(filedes[1], F_SETFD, fd_flags | FD_CLOEXEC) == -1) { throw cms::Exception("ExternalLHEProducer") - << "Failed to set pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; + << "Failed to set pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; } argc = 1 + args_.size(); @@ -478,7 +478,7 @@ void ExternalLHEProducer::executeScript() { if (pid == -1) { throw cms::Exception("ForkException") - << "Unable to fork a child (errno=" << errno << ", " << strerror(errno) << ")"; + << "Unable to fork a child (errno=" << errno << ", " << strerror(errno) << ")"; } close(filedes[1]); @@ -488,7 +488,7 @@ void ExternalLHEProducer::executeScript() { } if ((rc2 == sizeof(int)) && rc) { throw cms::Exception("ExternalLHEProducer") - << "Failed to execute script (errno=" << rc << ", " << strerror(rc) << ")"; + << "Failed to execute script (errno=" << rc << ", " << strerror(rc) << ")"; } close(filedes[0]); @@ -500,7 +500,7 @@ void ExternalLHEProducer::executeScript() { continue; } else { throw cms::Exception("ExternalLHEProducer") - << "Failed to read child status (errno=" << errno << ", " << strerror(errno) << ")"; + << "Failed to read child status (errno=" << errno << ", " << strerror(errno) << ")"; } } if (WIFSIGNALED(status)) { @@ -543,7 +543,7 @@ std::unique_ptr ExternalLHEProducer::readOutput() { << " (errno=" << errno << ", " << strerror(errno) << ")."; } - return std::unique_ptr(new std::string(ss.str())); + return std::make_unique(ss.str()); } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index ce248aa8a0850..b7c8e40968afe 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -31,13 +31,12 @@ using namespace lhef; -LHESource::LHESource(const edm::ParameterSet ¶ms, - const edm::InputSourceDescription &desc) : - ProducerSourceFromFiles(params, desc, false), - reader_(new LHEReader(fileNames(0), params.getUntrackedParameter("skipEvents", 0))), - lheProvenanceHelper_(edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), - phid_() -{ +LHESource::LHESource(const edm::ParameterSet& params, const edm::InputSourceDescription& desc) + : ProducerSourceFromFiles(params, desc, false), + reader_(new LHEReader(fileNames(0), params.getUntrackedParameter("skipEvents", 0))), + lheProvenanceHelper_( + edm::TypeID(typeid(LHEEventProduct)), edm::TypeID(typeid(LHERunInfoProduct)), productRegistryUpdate()), + phid_() { nextEvent(); lheProvenanceHelper_.lheAugment(nullptr); // Initialize metadata, and save the process history ID for use every event. @@ -48,17 +47,11 @@ LHESource::LHESource(const edm::ParameterSet ¶ms, //produces(); } -LHESource::~LHESource() -{ -} +LHESource::~LHESource() {} -void LHESource::endJob() -{ - reader_.reset(); -} +void LHESource::endJob() { reader_.reset(); } -void LHESource::nextEvent() -{ +void LHESource::nextEvent() { if (partonLevel_) { return; } @@ -67,7 +60,7 @@ void LHESource::nextEvent() do { newFileOpened = false; partonLevel_ = reader_->next(&newFileOpened); - if(newFileOpened) { + if (newFileOpened) { incrementFileIndex(); } } while (newFileOpened && !partonLevel_); @@ -79,8 +72,7 @@ void LHESource::nextEvent() auto runInfoThis = partonLevel_->getRunInfo(); if (runInfoThis != runInfoLast_) { runInfoLast_ = runInfoThis; - std::unique_ptr product( - new LHERunInfoProduct(*runInfoThis->getHEPRUP())); + std::unique_ptr product(new LHERunInfoProduct(*runInfoThis->getHEPRUP())); fillRunInfoProduct(*runInfoThis, *product); if (runInfoProductLast_) { @@ -98,27 +90,23 @@ void LHESource::nextEvent() } } -void -LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { - for(auto const& h: iInfo.getHeaders()) { +void LHESource::fillRunInfoProduct(lhef::LHERunInfo const& iInfo, LHERunInfoProduct& oProduct) { + for (auto const& h : iInfo.getHeaders()) { oProduct.addHeader(h); } - for(auto const& c: iInfo.getComments()) { + for (auto const& c : iInfo.getComments()) { oProduct.addComment(c); } } - -void -LHESource::readRun_(edm::RunPrincipal& runPrincipal) { +void LHESource::readRun_(edm::RunPrincipal& runPrincipal) { runAuxiliary()->setProcessHistoryID(phid_); runPrincipal.fillRunPrincipal(processHistoryRegistryForUpdate()); putRunInfoProduct(runPrincipal); } -void -LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { +void LHESource::readLuminosityBlock_(edm::LuminosityBlockPrincipal& lumiPrincipal) { luminosityBlockAuxiliary()->setProcessHistoryID(phid_); lumiPrincipal.fillLuminosityBlockPrincipal( processHistoryRegistry().getMapped(lumiPrincipal.aux().processHistoryID())); @@ -132,8 +120,7 @@ void LHESource::putRunInfoProduct(edm::RunPrincipal& iRunPrincipal) { } } -bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventAuxiliary::ExperimentType&) -{ +bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventAuxiliary::ExperimentType&) { nextEvent(); if (!partonLevel_) { // We just finished an input file. See if there is another. @@ -146,42 +133,38 @@ bool LHESource::setRunAndEventInfo(edm::EventID&, edm::TimeValue_t&, edm::EventA return true; } -void -LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { +void LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { assert(eventCached() || processingMode() != RunsLumisAndEvents); edm::EventAuxiliary aux(eventID(), processGUID(), edm::Timestamp(presentTime()), false); aux.setProcessHistoryID(phid_); eventPrincipal.fillEventPrincipal(aux, processHistoryRegistry().getMapped(aux.processHistoryID())); std::unique_ptr product( - new LHEEventProduct(*partonLevel_->getHEPEUP(), - partonLevel_->originalXWGTUP()) - ); + new LHEEventProduct(*partonLevel_->getHEPEUP(), partonLevel_->originalXWGTUP())); if (partonLevel_->getPDF()) { product->setPDF(*partonLevel_->getPDF()); } std::for_each(partonLevel_->weights().begin(), partonLevel_->weights().end(), - boost::bind(&LHEEventProduct::addWeight, - product.get(), _1)); + boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); product->setScales(partonLevel_->scales()); product->setNpLO(partonLevel_->npLO()); product->setNpNLO(partonLevel_->npNLO()); std::for_each(partonLevel_->getComments().begin(), partonLevel_->getComments().end(), - boost::bind(&LHEEventProduct::addComment, - product.get(), _1)); + boost::bind(&LHEEventProduct::addComment, product.get(), _1)); std::unique_ptr edp(new edm::Wrapper(std::move(product))); - eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, std::move(edp), lheProvenanceHelper_.eventProductProvenance_); + eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, + std::move(edp), + lheProvenanceHelper_.eventProductProvenance_); partonLevel_.reset(); resetEventCached(); } -std::shared_ptr -LHESource::readRunAuxiliary_() { +std::shared_ptr LHESource::readRunAuxiliary_() { edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewRun(); auto aux = std::make_shared(eventID().run(), ts, edm::Timestamp::invalidTimestamp()); @@ -189,19 +172,18 @@ LHESource::readRunAuxiliary_() { return aux; } -std::shared_ptr -LHESource::readLuminosityBlockAuxiliary_() { - if (processingMode() == Runs) return std::shared_ptr(); +std::shared_ptr LHESource::readLuminosityBlockAuxiliary_() { + if (processingMode() == Runs) + return std::shared_ptr(); edm::Timestamp ts = edm::Timestamp(presentTime()); resetNewLumi(); - auto aux = std::make_shared(eventID().run(), eventID().luminosityBlock(), - ts, edm::Timestamp::invalidTimestamp()); + auto aux = std::make_shared( + eventID().run(), eventID().luminosityBlock(), ts, edm::Timestamp::invalidTimestamp()); aux->setProcessHistoryID(phid_); return aux; } -void -LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +void LHESource::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.setComment("A source which reads LHE files."); edm::ProducerSourceFromFiles::fillDescription(desc); diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.h b/GeneratorInterface/LHEInterface/plugins/LHESource.h index 46bad67ce4f4c..5d70b7b5e404a 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.h +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.h @@ -51,7 +51,7 @@ class LHESource : public edm::ProducerSourceFromFiles { void putRunInfoProduct(edm::RunPrincipal&); void putWeightInfoProduct(edm::RunPrincipal&); - void fillRunInfoProduct(lhef::LHERunInfo const&, LHERunInfoProduct& ); + void fillRunInfoProduct(lhef::LHERunInfo const&, LHERunInfoProduct&); std::unique_ptr reader_; diff --git a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h index 4229cddb32ab6..11cb9aa8c79e4 100644 --- a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h +++ b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h @@ -1,8 +1,8 @@ #ifndef GENWEIGHTSCOUNTERS_h #define GENWEIGHTSCOUNTERS_h -#include -#include -#include +#include +#include +#include namespace genCounter { void mergeSumVectors(std::vector& v1, std::vector const& v2) { @@ -32,12 +32,12 @@ namespace genCounter { void incLHE(double w0, const std::vector& weightV, const std::string& wName) { //if new type of weight, create a map element - if(weightSumMap_.find(wName) == weightSumMap_.end()) { - std::vector temp; - weightSumMap_.insert({wName, temp}); + if (weightSumMap_.find(wName) == weightSumMap_.end()) { + std::vector temp; + weightSumMap_.insert({wName, temp}); } if (!weightV.empty()) { - if (weightSumMap_[wName].empty()) + if (weightSumMap_[wName].empty()) weightSumMap_[wName].resize(weightV.size(), 0); for (unsigned int i = 0, n = weightV.size(); i < n; ++i) weightSumMap_[wName][i] += (w0 * weightV[i]); @@ -52,16 +52,15 @@ namespace genCounter { sumw2_ += other.sumw2_; //if weightMap_ for "this" is empty, create map elements with empty //vectors before merging - if(weightSumMap_.empty() && !other.weightSumMap_.empty()) { - for(auto& wmap : other.weightSumMap_) { - std::vector temp; + if (weightSumMap_.empty() && !other.weightSumMap_.empty()) { + for (auto& wmap : other.weightSumMap_) { + std::vector temp; weightSumMap_.insert({wmap.first, temp}); } } - for(auto& wmap : weightSumMap_) { + for (auto& wmap : weightSumMap_) { mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); } - } //private: @@ -106,5 +105,5 @@ namespace genCounter { } }; -} +} // namespace genCounter #endif diff --git a/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc b/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc index 1646b08a29381..877c5e8f7eb6f 100644 --- a/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHETablesProducer.cc @@ -18,7 +18,7 @@ class LHETablesProducer : public edm::global::EDProducer<> { [this](const edm::InputTag& tag) { return mayConsume(tag); })), precision_(params.getParameter("precision")), storeLHEParticles_(params.getParameter("storeLHEParticles")), - storeAllLHEInfo_(params.getParameter("storeAllLHEInfo")){ + storeAllLHEInfo_(params.getParameter("storeAllLHEInfo")) { produces("LHE"); if (storeLHEParticles_) produces("LHEPart"); @@ -55,9 +55,9 @@ class LHETablesProducer : public edm::global::EDProducer<> { unsigned int lheNj = 0, lheNb = 0, lheNc = 0, lheNuds = 0, lheNglu = 0; double lheVpt = 0; double alphaS = 0; - double alphaQED=0; - double scale = 0; - int idproc = 0; + double alphaQED = 0; + double scale = 0; + int idproc = 0; const auto& hepeup = lheProd.hepeup(); const auto& pup = hepeup.PUP; int lep = -1, lepBar = -1, nu = -1, nuBar = -1; @@ -75,8 +75,8 @@ class LHETablesProducer : public edm::global::EDProducer<> { std::vector vals_mother1; std::vector vals_mother2; alphaS = hepeup.AQCDUP; - alphaQED = hepeup.AQEDUP; - scale = hepeup.SCALUP; + alphaQED = hepeup.AQEDUP; + scale = hepeup.SCALUP; idproc = hepeup.IDPRUP; for (unsigned int i = 0, n = pup.size(); i < n; ++i) { int status = hepeup.ISTUP[i]; @@ -86,12 +86,12 @@ class LHETablesProducer : public edm::global::EDProducer<> { vals_pid.push_back(hepeup.IDUP[i]); vals_spin.push_back(hepeup.SPINUP[i]); vals_status.push_back(status); - if (storeAllLHEInfo_){ - vals_col1.push_back(hepeup.ICOLUP[i].first); - vals_col2.push_back(hepeup.ICOLUP[i].second); - vals_mother1.push_back(hepeup.MOTHUP[i].first); - vals_mother2.push_back(hepeup.MOTHUP[i].second); - vals_time.push_back(hepeup.VTIMUP[i]); + if (storeAllLHEInfo_) { + vals_col1.push_back(hepeup.ICOLUP[i].first); + vals_col2.push_back(hepeup.ICOLUP[i].second); + vals_mother1.push_back(hepeup.MOTHUP[i].first); + vals_mother2.push_back(hepeup.MOTHUP[i].second); + vals_time.push_back(hepeup.VTIMUP[i]); } if (status == -1) { vals_pt.push_back(0); @@ -149,47 +149,38 @@ class LHETablesProducer : public edm::global::EDProducer<> { lheVpt = std::hypot(pup[v.first][0] + pup[v.second][0], pup[v.first][1] + pup[v.second][1]); } - out.addColumnValue( - "Njets", lheNj, "Number of jets (partons) at LHE step"); + out.addColumnValue("Njets", lheNj, "Number of jets (partons) at LHE step"); out.addColumnValue("Nb", lheNb, "Number of b partons at LHE step"); out.addColumnValue("Nc", lheNc, "Number of c partons at LHE step"); - out.addColumnValue( - "Nuds", lheNuds, "Number of u,d,s partons at LHE step"); - out.addColumnValue( - "Nglu", lheNglu, "Number of gluon partons at LHE step"); + out.addColumnValue("Nuds", lheNuds, "Number of u,d,s partons at LHE step"); + out.addColumnValue("Nglu", lheNglu, "Number of gluon partons at LHE step"); out.addColumnValue("HT", lheHT, "HT, scalar sum of parton pTs at LHE step"); - out.addColumnValue("HTIncoming", - lheHTIncoming, - "HT, scalar sum of parton pTs at LHE step, restricted to partons"); + out.addColumnValue( + "HTIncoming", lheHTIncoming, "HT, scalar sum of parton pTs at LHE step, restricted to partons"); out.addColumnValue("Vpt", lheVpt, "pT of the W or Z boson at LHE step"); out.addColumnValue("NpNLO", lheProd.npNLO(), "number of partons at NLO"); out.addColumnValue("NpLO", lheProd.npLO(), "number of partons at LO"); out.addColumnValue("AlphaS", alphaS, "Per-event alphaS"); - if (storeAllLHEInfo_){ - out.addColumnValue("AlphaQED", alphaQED, "Per-event alphaQED"); - out.addColumnValue("Scale", scale, "Per-event scale"); - out.addColumnValue("ProcessID", idproc, "Process id (as in the card ordering)"); + if (storeAllLHEInfo_) { + out.addColumnValue("AlphaQED", alphaQED, "Per-event alphaQED"); + out.addColumnValue("Scale", scale, "Per-event scale"); + out.addColumnValue("ProcessID", idproc, "Process id (as in the card ordering)"); } auto outPart = std::make_unique(vals_pt.size(), "LHEPart", false); outPart->addColumn("pt", vals_pt, "Pt of LHE particles", this->precision_); - outPart->addColumn( - "eta", vals_eta, "Pseodorapidity of LHE particles", this->precision_); - outPart->addColumn( - "phi", vals_phi, "Phi of LHE particles", this->precision_); - outPart->addColumn( - "mass", vals_mass, "Mass of LHE particles", this->precision_); - outPart->addColumn( - "incomingpz", vals_pz, "Pz of incoming LHE particles", this->precision_); + outPart->addColumn("eta", vals_eta, "Pseodorapidity of LHE particles", this->precision_); + outPart->addColumn("phi", vals_phi, "Phi of LHE particles", this->precision_); + outPart->addColumn("mass", vals_mass, "Mass of LHE particles", this->precision_); + outPart->addColumn("incomingpz", vals_pz, "Pz of incoming LHE particles", this->precision_); outPart->addColumn("pdgId", vals_pid, "PDG ID of LHE particles"); - outPart->addColumn( - "status", vals_status, "LHE particle status; -1:incoming, 1:outgoing"); + outPart->addColumn("status", vals_status, "LHE particle status; -1:incoming, 1:outgoing"); outPart->addColumn("spin", vals_spin, "Spin of LHE particles"); - if (storeAllLHEInfo_){ - outPart->addColumn("color1", vals_col1, "First color index of LHE particles"); - outPart->addColumn("color2", vals_col2, "Second color index of LHE particles"); - outPart->addColumn("mother1", vals_mother1, "First mother index of LHE particles"); - outPart->addColumn("mother2", vals_mother2, "Second mother index of LHE particles"); - outPart->addColumn("lifetime", vals_time, "Own lifetime of LHE particles", this->precision_); + if (storeAllLHEInfo_) { + outPart->addColumn("color1", vals_col1, "First color index of LHE particles"); + outPart->addColumn("color2", vals_col2, "Second color index of LHE particles"); + outPart->addColumn("mother1", vals_mother1, "First mother index of LHE particles"); + outPart->addColumn("mother2", vals_mother2, "Second mother index of LHE particles"); + outPart->addColumn("lifetime", vals_time, "Own lifetime of LHE particles", this->precision_); } return outPart; } @@ -201,7 +192,8 @@ class LHETablesProducer : public edm::global::EDProducer<> { desc.add("precision", -1)->setComment("precision on the 4-momenta of the LHE particles"); desc.add("storeLHEParticles", false) ->setComment("Whether we want to store the 4-momenta of the status 1 particles at LHE level"); - desc.add("storeAllLHEInfo", false)->setComment("Whether to store the whole set of intermediate LHE particles, not only the status +/-1 ones"); + desc.add("storeAllLHEInfo", false) + ->setComment("Whether to store the whole set of intermediate LHE particles, not only the status +/-1 ones"); descriptions.add("lheInfoTable", desc); } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index ae11ba2dcb014..0fbdb7d4c5af9 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -30,23 +30,23 @@ namespace { using CounterMap = genCounter::CounterMap; using Counter = genCounter::Counter; -class LHEWeightsTableProducer : -public edm::global::EDProducer, - edm::StreamCache, - edm::RunSummaryCache, - edm::EndRunProducer> { +class LHEWeightsTableProducer : public edm::global::EDProducer, + edm::StreamCache, + edm::RunSummaryCache, + edm::EndRunProducer> { public: LHEWeightsTableProducer(edm::ParameterSet const& params); void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override; //func changed//sroychow void addWeightGroupToTable(std::map>& lheWeightTables, - std::map>& weightVecsizes, - std::map& weightlabels, - const char* typeName, - const WeightGroupDataContainer& weightInfos, - WeightsContainer& allWeights, Counter& counter, - double genWeight) const; + std::map>& weightVecsizes, + std::map& weightlabels, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights, + Counter& counter, + double genWeight) const; WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, gen::WeightType weightType, int& maxStore) const; @@ -54,11 +54,12 @@ public edm::global::EDProducer, std::vector orderedScaleWeights(const std::vector& scaleWeights, const gen::ScaleWeightGroupInfo& scaleGroup) const; - std::vector preferredPSweights(const std::vector& psWeights, const gen::PartonShowerWeightGroupInfo& pswV) const; + std::vector preferredPSweights(const std::vector& psWeights, + const gen::PartonShowerWeightGroupInfo& pswV) const; //Lumiblock std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, - edm::EventSetup const&) const override { + edm::EventSetup const&) const override { // Set equal to the max number of groups // subtrack 1 for each weight group you find bool foundLheWeights = false; @@ -66,21 +67,21 @@ public edm::global::EDProducer, for (auto& token : lheWeightInfoTokens_) { iLumi.getByToken(token, lheWeightInfoHandle); if (lheWeightInfoHandle.isValid()) { - foundLheWeights = true; - break; + foundLheWeights = true; + break; } } edm::Handle genWeightInfoHandle; iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); - + std::unordered_map storePerType; for (size_t i = 0; i < weightgroups_.size(); i++) storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); - + WeightGroupsToStore weightsToStore; for (auto weightType : gen::allWeightTypes) { - if (foundLheWeights) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + if (foundLheWeights) { + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); for (auto& w : lheWeights) weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); } @@ -90,44 +91,46 @@ public edm::global::EDProducer, } return std::make_shared(weightsToStore); } - + // nothing to do here - virtual void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} + void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} // create an empty counter - std::unique_ptr beginStream(edm::StreamID) const override { return std::make_unique(); } + std::unique_ptr beginStream(edm::StreamID) const override { return std::make_unique(); } // inizialize to zero at begin run - void streamBeginRun(edm::StreamID id, - edm::Run const&, edm::EventSetup const&) const override { streamCache(id)->clear(); } - + void streamBeginRun(edm::StreamID id, edm::Run const&, edm::EventSetup const&) const override { + streamCache(id)->clear(); + } + void streamBeginLuminosityBlock(edm::StreamID id, - edm::LuminosityBlock const& lumiBlock, - edm::EventSetup const& eventSetup) const override { + edm::LuminosityBlock const& lumiBlock, + edm::EventSetup const& eventSetup) const override { auto counterMap = streamCache(id); edm::Handle genLumiInfoHead; lumiBlock.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); if (!genLumiInfoHead.isValid()) edm::LogWarning("LHETablesProducer") - << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; - counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); + << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; + counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); std::string label = genLumiInfoHead.isValid() ? counterMap->getLabel() : "NULL"; - } // create an empty counter std::shared_ptr globalBeginRunSummary(edm::Run const&, edm::EventSetup const&) const override { return std::make_shared(); } // add this stream to the summary - void streamEndRunSummary(edm::StreamID id, edm::Run const&, - edm::EventSetup const&, CounterMap* runCounterMap) const override; + void streamEndRunSummary(edm::StreamID id, + edm::Run const&, + edm::EventSetup const&, + CounterMap* runCounterMap) const override; // nothing to do per se void globalEndRunSummary(edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const override {} // write the total to the run void globalEndRunProduce(edm::Run& iRun, edm::EventSetup const& es, CounterMap const* runCounterMap) const override; // nothing to do here //void globalEndRun(edm::Run const& iRun, edm::EventSetup const& es, CounterMap* runCounterMap) const override {} - + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - + protected: const std::vector> lheWeightTokens_; const std::vector> lheWeightInfoTokens_; @@ -139,40 +142,41 @@ public edm::global::EDProducer, const std::vector maxGroupsPerType_; const std::vector pdfIds_; const std::unordered_map weightTypeNames_ = { - {gen::WeightType::kScaleWeights, "LHEScaleWeight"}, - {gen::WeightType::kPdfWeights, "LHEPdfWeight"}, - {gen::WeightType::kMEParamWeights, "MEParamWeight"}, - {gen::WeightType::kPartonShowerWeights, "PSWeight"}, - {gen::WeightType::kUnknownWeights, "UnknownWeight"}, + {gen::WeightType::kScaleWeights, "LHEScaleWeight"}, + {gen::WeightType::kPdfWeights, "LHEPdfWeight"}, + {gen::WeightType::kMEParamWeights, "MEParamWeight"}, + {gen::WeightType::kPartonShowerWeights, "PSWeight"}, + {gen::WeightType::kUnknownWeights, "UnknownWeight"}, }; //std::unordered_map weightGroupIndices_; int lheWeightPrecision_; - bool storeAllPSweights_; + bool storeAllPSweights_; enum { inLHE, inGen }; }; //put back if needed; till now not used LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params) - : lheWeightTokens_( - edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), + : lheWeightTokens_( + edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), lheWeightInfoTokens_(edm::vector_transform( - params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - genWeightToken_(consumes(params.getParameter("genWeights"))), - genWeightInfoToken_(consumes(params.getParameter("genWeights"))), - genEventInfoToken_(consumes(params.getParameter("genEvent"))), - genLumiInfoHeadTag_(mayConsume(params.getParameter("genLumiInfoHeader"))), - weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), - [](auto& c) { return gen::WeightType(c.at(0)); })), - maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), - pdfIds_(params.getUntrackedParameter>("pdfIds", {})), - lheWeightPrecision_(params.getParameter("lheWeightPrecision")), - storeAllPSweights_(params.getParameter("storeAllPSweights")) -{ + params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + genWeightToken_(consumes(params.getParameter("genWeights"))), + genWeightInfoToken_( + consumes(params.getParameter("genWeights"))), + genEventInfoToken_(consumes(params.getParameter("genEvent"))), + genLumiInfoHeadTag_( + mayConsume(params.getParameter("genLumiInfoHeader"))), + weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), + [](auto& c) { return gen::WeightType(c.at(0)); })), + maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), + pdfIds_(params.getUntrackedParameter>("pdfIds", {})), + lheWeightPrecision_(params.getParameter("lheWeightPrecision")), + storeAllPSweights_(params.getParameter("storeAllPSweights")) { if (weightgroups_.size() != maxGroupsPerType_.size()) throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); - for(auto& wg : weightTypeNames_) { + for (auto& wg : weightTypeNames_) { produces(wg.second); produces(wg.second + "sizes"); } @@ -188,15 +192,15 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons bool foundLheWeights = false; for (auto& token : lheWeightTokens_) { iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - foundLheWeights = true; - break; - } + if (lheWeightHandle.isValid()) { + foundLheWeights = true; + break; + } } //Taken from genweight producer //Added sroychow // generator information (always available) auto const& genInfo = iEvent.get(genEventInfoToken_); - const double genWeight = genInfo.weight(); + const double genWeight = genInfo.weight(); // table for gen info, always available auto outGeninfo = std::make_unique(1, "genWeight", true); outGeninfo->setDoc("generator weight"); @@ -204,7 +208,7 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons iEvent.put(std::move(outGeninfo), "GENWeight"); //this will take care of sum of genWeights counter.incGenOnly(genWeight); - + std::string& model_label = streamCache(id)->getLabel(); auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); iEvent.put(std::move(outM), "genModel"); @@ -214,30 +218,32 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); lheWeights = lheWeightProduct->weights(); } - + edm::Handle genWeightHandle; iEvent.getByToken(genWeightToken_, genWeightHandle); const GenWeightProduct* genWeightProduct = genWeightHandle.product(); WeightsContainer genWeights = genWeightProduct->weights(); - + auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - + //create a container with dummy weight vector std::map> lheWeightTables; std::map> weightVecsizes; std::map weightlabels; - for(auto& wg : weightTypeNames_) { + for (auto& wg : weightTypeNames_) { lheWeightTables.insert(std::make_pair(wg.first, std::vector())); weightVecsizes.insert(std::make_pair(wg.first, std::vector())); weightlabels.insert(std::make_pair(wg.first, "")); } if (foundLheWeights) { - addWeightGroupToTable(lheWeightTables, weightVecsizes, weightlabels, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); + addWeightGroupToTable( + lheWeightTables, weightVecsizes, weightlabels, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); } - addWeightGroupToTable(lheWeightTables, weightVecsizes, weightlabels, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); - - for(auto& wg : weightTypeNames_) { + addWeightGroupToTable( + lheWeightTables, weightVecsizes, weightlabels, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); + + for (auto& wg : weightTypeNames_) { std::string wname = wg.second; auto& weightVec = lheWeightTables[wg.first]; counter.incLHE(genWeight, weightVec, wname); @@ -245,9 +251,10 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons outTable->addColumn("", weightVec, weightlabels[wg.first], lheWeightPrecision_); //now add the vector containing the sizes of alt sets - auto outTableSizes = std::make_unique(weightVecsizes[wg.first].size(), wname + "_AltSetSizes", false); - outTableSizes->addColumn("", weightVecsizes[wg.first], "Sizes of weight arrays for weight type:" + wname, - lheWeightPrecision_); + auto outTableSizes = + std::make_unique(weightVecsizes[wg.first].size(), wname + "_AltSetSizes", false); + outTableSizes->addColumn( + "", weightVecsizes[wg.first], "Sizes of weight arrays for weight type:" + wname, lheWeightPrecision_); iEvent.put(std::move(outTable), wname); iEvent.put(std::move(outTableSizes), wname + "sizes"); } @@ -257,23 +264,24 @@ void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, cons */ void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, - std::map>& weightVecsizes, - std::map& weightlabels, - const char* typeName, - const WeightGroupDataContainer& weightInfos, - WeightsContainer& allWeights, Counter& counter, - double genWeight) const { + std::map>& weightVecsizes, + std::map& weightlabels, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights, + Counter& counter, + double genWeight) const { std::unordered_map typeCount = {}; for (auto& type : gen::allWeightTypes) - typeCount[type] = 0; - + typeCount[type] = 0; + for (const auto& groupInfo : weightInfos) { //std::string entryName = typeName; gen::WeightType weightType = groupInfo.group->weightType(); std::string name = weightTypeNames_.at(weightType); std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->description(); label.append("["); - label.append(std::to_string(lheWeightTables[weightType].size()));//to append the start index of this set + label.append(std::to_string(lheWeightTables[weightType].size())); //to append the start index of this set label.append("]; "); auto& weights = allWeights.at(groupInfo.index); //std::cout << "Group name is " << groupInfo.group->name() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; @@ -287,14 +295,18 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); - weights = std::vector(weights.begin(), weights.begin()+nstore); - label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + " elements of weights vector, unordered"); + weights = std::vector(weights.begin(), weights.begin() + nstore); + label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + + " elements of weights vector, unordered"); } - } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && groupInfo.group->isWellFormed()) { + } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && + groupInfo.group->isWellFormed()) { const auto psGroup = *static_cast(groupInfo.group.get()); weights = preferredPSweights(weights, psGroup); - label.append("PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2"); - } + label.append( + "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is " + "ISR=1 FSR=2"); + } //else // label.append(groupInfo.group->description()); lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); @@ -309,10 +321,10 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::map& weightsHandle, - gen::WeightType weightType, - int& maxStore) const { - std::vectorallgroups; - if (weightType == gen::WeightType::kPdfWeights && pdfIds_.size() > 0) { + gen::WeightType weightType, + int& maxStore) const { + std::vector allgroups; + if (weightType == gen::WeightType::kPdfWeights && !pdfIds_.empty()) { allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); } else allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); @@ -334,7 +346,7 @@ WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle< } std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo& scaleGroup) const { + const gen::ScaleWeightGroupInfo& scaleGroup) const { std::vector weights; weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF05Index())); weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF1Index())); @@ -345,52 +357,54 @@ std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vect weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF05Index())); weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF1Index())); weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF2Index())); - + return weights; } -std::vector LHEWeightsTableProducer::preferredPSweights(const std::vector& psWeights, - const gen::PartonShowerWeightGroupInfo& pswV) const { +std::vector LHEWeightsTableProducer::preferredPSweights(const std::vector& psWeights, + const gen::PartonShowerWeightGroupInfo& pswV) const { std::vector psTosave; - + double baseline = psWeights.at(pswV.weightIndexFromLabel("Baseline")); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, true, gen::PSVarType::def))/baseline); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, true, gen::PSVarType::def))/baseline); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, false, gen::PSVarType::def))/baseline); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, false, gen::PSVarType::def))/baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, true, gen::PSVarType::def)) / baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, true, gen::PSVarType::def)) / baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, false, gen::PSVarType::def)) / baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, false, gen::PSVarType::def)) / baseline); return psTosave; } void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, - edm::Run const&, - edm::EventSetup const&, - CounterMap* runCounterMap) const { + edm::Run const&, + edm::EventSetup const&, + CounterMap* runCounterMap) const { Counter& counter = *streamCache(id)->get(); //this takes care for mergeing all the weight sums runCounterMap->mergeSumMap(*streamCache(id)); } -void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, edm::EventSetup const&, CounterMap const* runCounterMap) const { +void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, + edm::EventSetup const&, + CounterMap const* runCounterMap) const { auto out = std::make_unique(); - + for (auto x : runCounterMap->countermap) { auto& runCounter = x.second; std::string label = std::string("_") + x.first; std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; - + out->addInt("genEventCount" + label, "event count" + doclabel, runCounter.num_); out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter.sumw_); out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); - + double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; //Sum from map - for(auto& sumw : runCounter.weightSumMap_) { - + for (auto& sumw : runCounter.weightSumMap_) { //Normalize with genEventSumw - for(auto& val : sumw.second) val *= norm; - out->addVFloat(sumw.first + "Sumw" + label, - "Sum of genEventWeight *" + sumw.first + "[i]/genEventSumw" + doclabel, - sumw.second) ; + for (auto& val : sumw.second) + val *= norm; + out->addVFloat(sumw.first + "Sumw" + label, + "Sum of genEventWeight *" + sumw.first + "[i]/genEventSumw" + doclabel, + sumw.second); } } iRun.put(std::move(out)); @@ -399,16 +413,18 @@ void LHEWeightsTableProducer::fillDescriptions(edm::ConfigurationDescriptions& d edm::ParameterSetDescription desc; desc.add>("lheWeights"); desc.add>("lheInfo", std::vector{{"externalLHEProducer"}, {"source"}}) - ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); //desc.add>("genWeights"); desc.add("genWeights"); - desc.add("genEvent", edm::InputTag("generator"))->setComment("tag for the GenEventInfoProduct, to get the main weight"); - desc.add("genLumiInfoHeader", edm::InputTag("generator"))->setComment("tag for the GenLumiInfoProduct, to get the model string"); + desc.add("genEvent", edm::InputTag("generator")) + ->setComment("tag for the GenEventInfoProduct, to get the main weight"); + desc.add("genLumiInfoHeader", edm::InputTag("generator")) + ->setComment("tag for the GenLumiInfoProduct, to get the model string"); desc.add>("weightgroups"); desc.add>("maxGroupsPerType"); desc.addOptionalUntracked>("pdfIds"); desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); - desc.add("storeAllPSweights", 0)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); + desc.add("storeAllPSweights", false)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); descriptions.addDefault(desc); } diff --git a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc index ca44bf6b3bcd1..4a6999ed42733 100644 --- a/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc +++ b/PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc @@ -2,7 +2,7 @@ // // Package: PhysicsTools/NanoAODOutput // Class : NanoAODOutputModule -// +// // Implementation: // [Notes on implementation] // @@ -65,7 +65,7 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { int m_eventsSinceFlush{0}; std::string m_compressionAlgorithm; bool m_writeProvenance; - bool m_fakeName; //crab workaround, remove after crab is fixed + bool m_fakeName; //crab workaround, remove after crab is fixed int m_autoFlush; edm::ProcessHistoryRegistry m_processHistoryRegistry; edm::JobReport::Token m_jrToken; @@ -75,45 +75,48 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { static constexpr int m_firstFlush{1000}; class CommonEventBranches { - public: - void branch(TTree &tree) { - tree.Branch("run", & m_run, "run/i"); - tree.Branch("luminosityBlock", & m_luminosityBlock, "luminosityBlock/i"); - tree.Branch("event", & m_event, "event/l"); - } - void fill(const edm::EventID & id) { - m_run = id.run(); m_luminosityBlock = id.luminosityBlock(); m_event = id.event(); - } - private: - UInt_t m_run; UInt_t m_luminosityBlock; ULong64_t m_event; + public: + void branch(TTree& tree) { + tree.Branch("run", &m_run, "run/i"); + tree.Branch("luminosityBlock", &m_luminosityBlock, "luminosityBlock/i"); + tree.Branch("event", &m_event, "event/l"); + } + void fill(const edm::EventID& id) { + m_run = id.run(); + m_luminosityBlock = id.luminosityBlock(); + m_event = id.event(); + } + + private: + UInt_t m_run; + UInt_t m_luminosityBlock; + ULong64_t m_event; } m_commonBranches; class CommonLumiBranches { - public: - void branch(TTree &tree) { - tree.Branch("run", & m_run, "run/i"); - tree.Branch("luminosityBlock", & m_luminosityBlock, "luminosityBlock/i"); - } - void fill(const edm::LuminosityBlockID & id) { - m_run = id.run(); - m_luminosityBlock = id.value(); - } - private: - UInt_t m_run; UInt_t m_luminosityBlock; + public: + void branch(TTree& tree) { + tree.Branch("run", &m_run, "run/i"); + tree.Branch("luminosityBlock", &m_luminosityBlock, "luminosityBlock/i"); + } + void fill(const edm::LuminosityBlockID& id) { + m_run = id.run(); + m_luminosityBlock = id.value(); + } + + private: + UInt_t m_run; + UInt_t m_luminosityBlock; } m_commonLumiBranches; class CommonRunBranches { - public: - void branch(TTree &tree) { - tree.Branch("run", & m_run, "run/i"); - } - void fill(const edm::RunID & id) { - m_run = id.run(); - } - private: - UInt_t m_run; - } m_commonRunBranches; + public: + void branch(TTree& tree) { tree.Branch("run", &m_run, "run/i"); } + void fill(const edm::RunID& id) { m_run = id.run(); } + private: + UInt_t m_run; + } m_commonRunBranches; std::vector m_tables; std::vector m_tableTokens; @@ -124,11 +127,9 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { std::vector m_runTables; - std::vector> m_nanoMetadata; - + std::vector> m_nanoMetadata; }; - // // constants, enums and typedefs // @@ -140,22 +141,19 @@ class NanoAODOutputModule : public edm::one::OutputModule<> { // // constructors and destructor // -NanoAODOutputModule::NanoAODOutputModule(edm::ParameterSet const& pset): - edm::one::OutputModuleBase::OutputModuleBase(pset), - edm::one::OutputModule<>(pset), - m_fileName(pset.getUntrackedParameter("fileName")), - m_logicalFileName(pset.getUntrackedParameter("logicalFileName")), - m_compressionLevel(pset.getUntrackedParameter("compressionLevel")), - m_compressionAlgorithm(pset.getUntrackedParameter("compressionAlgorithm")), - m_writeProvenance(pset.getUntrackedParameter("saveProvenance", true)), - m_fakeName(pset.getUntrackedParameter("fakeNameForCrab", false)), - m_autoFlush(pset.getUntrackedParameter("autoFlush", -10000000)), - m_processHistoryRegistry() -{ -} - -void -NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { +NanoAODOutputModule::NanoAODOutputModule(edm::ParameterSet const& pset) + : edm::one::OutputModuleBase::OutputModuleBase(pset), + edm::one::OutputModule<>(pset), + m_fileName(pset.getUntrackedParameter("fileName")), + m_logicalFileName(pset.getUntrackedParameter("logicalFileName")), + m_compressionLevel(pset.getUntrackedParameter("compressionLevel")), + m_compressionAlgorithm(pset.getUntrackedParameter("compressionAlgorithm")), + m_writeProvenance(pset.getUntrackedParameter("saveProvenance", true)), + m_fakeName(pset.getUntrackedParameter("fakeNameForCrab", false)), + m_autoFlush(pset.getUntrackedParameter("autoFlush", -10000000)), + m_processHistoryRegistry() {} + +void NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { //Get data from 'e' and write it to the file edm::Service jr; jr->eventWrittenToFile(m_jrToken, iEvent.id().run(), iEvent.id().event()); @@ -171,7 +169,7 @@ NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { float percentClusterDone = m_firstFlush / static_cast(m_autoFlush); maxMemory = static_cast(m_tree->GetTotBytes()) / percentClusterDone; } else if (m_tree->GetZipBytes() == 0) { - maxMemory = 100*1024*1024; // Degenerate case of no information in the tree; arbitrary value + maxMemory = 100 * 1024 * 1024; // Degenerate case of no information in the tree; arbitrary value } else { // Estimate the memory we'll be using by scaling the current compression ratio. float cxnRatio = m_tree->GetTotBytes() / static_cast(m_tree->GetZipBytes()); @@ -230,16 +228,17 @@ NanoAODOutputModule::write(edm::EventForOutput const& iEvent) { m_triggers_areSorted = true; } // fill triggers - for (auto & t : m_triggers) t.fill(iEvent,*m_tree); + for (auto& t : m_triggers) + t.fill(iEvent, *m_tree); // fill event branches - for (auto & t : m_evstrings) t.fill(iEvent,*m_tree); + for (auto& t : m_evstrings) + t.fill(iEvent, *m_tree); m_tree->Fill(); m_processHistoryRegistry.registerProcessHistory(iEvent.processHistory()); } -void -NanoAODOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput const& iLumi) { +void NanoAODOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput const& iLumi) { edm::Service jr; jr->reportLumiSection(m_jrToken, iLumi.id().run(), iLumi.id().value()); @@ -249,24 +248,25 @@ NanoAODOutputModule::writeLuminosityBlock(edm::LuminosityBlockForOutput const& i m_processHistoryRegistry.registerProcessHistory(iLumi.processHistory()); } -void -NanoAODOutputModule::writeRun(edm::RunForOutput const& iRun) { +void NanoAODOutputModule::writeRun(edm::RunForOutput const& iRun) { edm::Service jr; jr->reportRunNumber(m_jrToken, iRun.id().run()); m_commonRunBranches.fill(iRun.id()); - for (auto & t : m_runTables) t.fill(iRun,*m_runTree); + for (auto& t : m_runTables) + t.fill(iRun, *m_runTree); edm::Handle hstring; - for (const auto & p : m_nanoMetadata) { + for (const auto& p : m_nanoMetadata) { iRun.getByToken(p.second, hstring); - TObjString *tos = dynamic_cast(m_file->Get(p.first.c_str())); + TObjString* tos = dynamic_cast(m_file->Get(p.first.c_str())); if (tos) { - if (hstring->str() != tos->GetString()) throw cms::Exception("LogicError", "Inconsistent nanoMetadata " + p.first + " (" + hstring->str() +")"); + if (hstring->str() != tos->GetString()) + throw cms::Exception("LogicError", "Inconsistent nanoMetadata " + p.first + " (" + hstring->str() + ")"); } else { - auto ostr = std::make_unique(hstring->str().c_str()); - m_file->WriteTObject(ostr.release(), p.first.c_str()); + auto ostr = std::make_unique(hstring->str().c_str()); + m_file->WriteTObject(ostr.release(), p.first.c_str()); } } @@ -275,35 +275,31 @@ NanoAODOutputModule::writeRun(edm::RunForOutput const& iRun) { m_processHistoryRegistry.registerProcessHistory(iRun.processHistory()); } -bool -NanoAODOutputModule::isFileOpen() const { - return nullptr != m_file.get(); -} +bool NanoAODOutputModule::isFileOpen() const { return nullptr != m_file.get(); } -void -NanoAODOutputModule::openFile(edm::FileBlock const&) { - m_file = std::make_unique(m_fileName.c_str(),"RECREATE","",m_compressionLevel); +void NanoAODOutputModule::openFile(edm::FileBlock const&) { + m_file = std::make_unique(m_fileName.c_str(), "RECREATE", "", m_compressionLevel); edm::Service jr; cms::Digest branchHash; m_jrToken = jr->outputFileOpened(m_fileName, m_logicalFileName, std::string(), - m_fakeName?"PoolOutputModule":"NanoAODOutputModule", + m_fakeName ? "PoolOutputModule" : "NanoAODOutputModule", description().moduleLabel(), edm::createGlobalIdentifier(), std::string(), branchHash.digest().toString(), - std::vector() - ); + std::vector()); if (m_compressionAlgorithm == std::string("ZLIB")) { - m_file->SetCompressionAlgorithm(ROOT::kZLIB); - } else if (m_compressionAlgorithm == std::string("LZMA")) { - m_file->SetCompressionAlgorithm(ROOT::kLZMA); - } else { - throw cms::Exception("Configuration") << "NanoAODOutputModule configured with unknown compression algorithm '" << m_compressionAlgorithm << "'\n" - << "Allowed compression algorithms are ZLIB and LZMA\n"; - } + m_file->SetCompressionAlgorithm(ROOT::kZLIB); + } else if (m_compressionAlgorithm == std::string("LZMA")) { + m_file->SetCompressionAlgorithm(ROOT::kLZMA); + } else { + throw cms::Exception("Configuration") + << "NanoAODOutputModule configured with unknown compression algorithm '" << m_compressionAlgorithm << "'\n" + << "Allowed compression algorithms are ZLIB and LZMA\n"; + } /* Setup file structure here */ m_tables.clear(); m_tableTokens.clear(); @@ -326,15 +322,16 @@ NanoAODOutputModule::openFile(edm::FileBlock const&) { throw cms::Exception("Configuration", "NanoAODOutputModule cannot handle class " + keep.first->className()); } - for (const auto & keep : keeps[edm::InRun]) { - if(keep.first->className() == "nanoaod::MergeableCounterTable" ) - m_runTables.push_back(SummaryTableOutputBranches(keep.first, keep.second)); - else if(keep.first->className() == "nanoaod::UniqueString" && keep.first->moduleLabel() == "nanoMetadata") - m_nanoMetadata.emplace_back(keep.first->productInstanceName(), keep.second); - else throw cms::Exception("Configuration", "NanoAODOutputModule cannot handle class " + keep.first->className() + " in Run branch"); + for (const auto& keep : keeps[edm::InRun]) { + if (keep.first->className() == "nanoaod::MergeableCounterTable") + m_runTables.push_back(SummaryTableOutputBranches(keep.first, keep.second)); + else if (keep.first->className() == "nanoaod::UniqueString" && keep.first->moduleLabel() == "nanoMetadata") + m_nanoMetadata.emplace_back(keep.first->productInstanceName(), keep.second); + else + throw cms::Exception("Configuration", + "NanoAODOutputModule cannot handle class " + keep.first->className() + " in Run branch"); } - // create the trees m_tree = std::make_unique("Events", "Events"); m_tree->SetAutoSave(0); @@ -348,7 +345,7 @@ NanoAODOutputModule::openFile(edm::FileBlock const&) { m_runTree = std::make_unique("Runs", "Runs"); m_runTree->SetAutoSave(0); m_commonRunBranches.branch(*m_runTree); - + if (m_writeProvenance) { m_metaDataTree = std::make_unique(edm::poolNames::metaDataTreeName().c_str(), "Job metadata"); m_metaDataTree->SetAutoSave(0); @@ -356,48 +353,46 @@ NanoAODOutputModule::openFile(edm::FileBlock const&) { m_parameterSetsTree->SetAutoSave(0); } } -void -NanoAODOutputModule::reallyCloseFile() { +void NanoAODOutputModule::reallyCloseFile() { if (m_writeProvenance) { - int basketSize = 16384; // fixme configurable? - edm::fillParameterSetBranch(m_parameterSetsTree.get(), basketSize); - edm::fillProcessHistoryBranch(m_metaDataTree.get(), basketSize, m_processHistoryRegistry); - if (m_metaDataTree->GetNbranches() != 0) { - m_metaDataTree->SetEntries(-1); - } - if (m_parameterSetsTree->GetNbranches() != 0) { - m_parameterSetsTree->SetEntries(-1); - } + int basketSize = 16384; // fixme configurable? + edm::fillParameterSetBranch(m_parameterSetsTree.get(), basketSize); + edm::fillProcessHistoryBranch(m_metaDataTree.get(), basketSize, m_processHistoryRegistry); + if (m_metaDataTree->GetNbranches() != 0) { + m_metaDataTree->SetEntries(-1); + } + if (m_parameterSetsTree->GetNbranches() != 0) { + m_parameterSetsTree->SetEntries(-1); + } } m_file->Write(); m_file->Close(); m_file.reset(); - m_tree.release(); // apparently root has ownership - m_lumiTree.release(); // - m_runTree.release(); // - m_metaDataTree.release(); // - m_parameterSetsTree.release(); // + m_tree.release(); // apparently root has ownership + m_lumiTree.release(); // + m_runTree.release(); // + m_metaDataTree.release(); // + m_parameterSetsTree.release(); // edm::Service jr; jr->outputFileClosed(m_jrToken); } -void -NanoAODOutputModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { +void NanoAODOutputModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.addUntracked("fileName"); - desc.addUntracked("logicalFileName",""); + desc.addUntracked("logicalFileName", ""); - desc.addUntracked("compressionLevel", 9) - ->setComment("ROOT compression level of output file."); + desc.addUntracked("compressionLevel", 9)->setComment("ROOT compression level of output file."); desc.addUntracked("compressionAlgorithm", "ZLIB") - ->setComment("Algorithm used to compress data in the ROOT output file, allowed values are ZLIB and LZMA"); + ->setComment("Algorithm used to compress data in the ROOT output file, allowed values are ZLIB and LZMA"); desc.addUntracked("saveProvenance", true) - ->setComment("Save process provenance information, e.g. for edmProvDump"); + ->setComment("Save process provenance information, e.g. for edmProvDump"); desc.addUntracked("fakeNameForCrab", false) - ->setComment("Change the OutputModule name in the fwk job report to fake PoolOutputModule. This is needed to run on cran (and publish) till crab is fixed"); - desc.addUntracked("autoFlush", -10000000) - ->setComment("Autoflush parameter for ROOT file"); + ->setComment( + "Change the OutputModule name in the fwk job report to fake PoolOutputModule. This is needed to run on cran " + "(and publish) till crab is fixed"); + desc.addUntracked("autoFlush", -10000000)->setComment("Autoflush parameter for ROOT file"); //replace with whatever you want to get from the EDM by default const std::vector keep = {"drop *", @@ -412,16 +407,13 @@ NanoAODOutputModule::fillDescriptions(edm::ConfigurationDescriptions& descriptio edm::ParameterSetDescription dataSet; dataSet.setAllowAnything(); desc.addUntracked("dataset", dataSet) - ->setComment("PSet is only used by Data Operations and not by this module."); - + ->setComment("PSet is only used by Data Operations and not by this module."); + edm::ParameterSetDescription branchSet; branchSet.setAllowAnything(); desc.add("branches", branchSet); - - descriptions.addDefault(desc); - } DEFINE_FWK_MODULE(NanoAODOutputModule); diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index 872ae29b65d9f..ed28a0dcd3d4f 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -31,7 +31,7 @@ class GenWeightProduct { void setNumWeightSets(int num) { weightsVector_.resize(num); } void addWeightSet() { weightsVector_.push_back({}); } void addWeight(double weight, int setEntry, int weightNum) { - if (weightsVector_.size() == 0 && setEntry == 0) + if (weightsVector_.empty() && setEntry == 0) addWeightSet(); if (static_cast(weightsVector_.size()) <= setEntry) throw std::domain_error("Out of range weight"); diff --git a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h index 2ea53a8d32adb..2b6714b240542 100644 --- a/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h @@ -12,9 +12,9 @@ namespace gen { weightType_ = WeightType::kMEParamWeights; } MEParamWeightGroupInfo(std::string header) : MEParamWeightGroupInfo(header, header) {} - virtual ~MEParamWeightGroupInfo() override {} + ~MEParamWeightGroupInfo() override {} void copy(const MEParamWeightGroupInfo& other); - virtual MEParamWeightGroupInfo* clone() const override; + MEParamWeightGroupInfo* clone() const override; int getCentralIndex() { return centralIdx; } int getVariationIndex(int sig) { return massValue.at(numSigma + sig).second; } double getVariationValue(int sig) { return massValue.at(numSigma + sig).first; } diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index 9c64d5ce849e2..a2652f6a9883e 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -6,7 +6,7 @@ #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - enum class PSVarType { muR, cNS, con, def, red, alphaS}; + enum class PSVarType { muR, cNS, con, def, red, alphaS }; enum class PSSplittingType { combined, g2gg, x2xg, g2qq }; class PartonShowerWeightGroupInfo : public WeightGroupInfo { @@ -17,9 +17,9 @@ namespace gen { } PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } - virtual ~PartonShowerWeightGroupInfo() override {} + ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); - virtual PartonShowerWeightGroupInfo *clone() const override; + PartonShowerWeightGroupInfo *clone() const override; void setNameIsPythiaSyntax(bool isPythiaSyntax) { nameIsPythiaSyntax_ = isPythiaSyntax; } bool nameIsPythiaSyntax(bool isPythiaSyntax) const { return nameIsPythiaSyntax_; } int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; diff --git a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h index f04fb71ffa728..5c8214fa9eb35 100644 --- a/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h @@ -34,9 +34,9 @@ namespace gen { } PdfWeightGroupInfo(std::string header) : WeightGroupInfo(header) { weightType_ = WeightType::kPdfWeights; } PdfWeightGroupInfo(const PdfWeightGroupInfo& other) { copy(other); } - virtual ~PdfWeightGroupInfo() override {} + ~PdfWeightGroupInfo() override {} void copy(const PdfWeightGroupInfo& other); - virtual PdfWeightGroupInfo* clone() const override; + PdfWeightGroupInfo* clone() const override; void setUncertaintyType(PdfUncertaintyType uncertaintyType) { uncertaintyType_ = uncertaintyType; } void setHasAlphasVariations(bool hasAlphasVars) { hasAlphasVars_ = hasAlphasVars; } diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 31e8812ddf85c..0ba1672ce6731 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -42,9 +42,9 @@ namespace gen { } ScaleWeightGroupInfo(std::string header) : ScaleWeightGroupInfo(header, header) {} ScaleWeightGroupInfo(const ScaleWeightGroupInfo& other) { copy(other); } - virtual ~ScaleWeightGroupInfo() override {} + ~ScaleWeightGroupInfo() override {} void copy(const ScaleWeightGroupInfo& other); - virtual ScaleWeightGroupInfo* clone() const override; + ScaleWeightGroupInfo* clone() const override; bool containsCentralWeight() const { return containsCentral_; } void addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF); bool isWellFormed() { return isWellFormed_ && hasAllWeights; } diff --git a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h index d314b9ad40d8a..3513cc70841dc 100644 --- a/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h @@ -15,9 +15,9 @@ namespace gen { weightType_ = WeightType::kUnknownWeights; isWellFormed_ = false; } - virtual ~UnknownWeightGroupInfo() override {} + ~UnknownWeightGroupInfo() override {} void copy(const UnknownWeightGroupInfo& other); - virtual UnknownWeightGroupInfo* clone() const override; + UnknownWeightGroupInfo* clone() const override; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 23b63469354f2..f6bb6e5af5ade 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -58,12 +58,14 @@ std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHA std::vector pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = std::make_unique(*static_cast(data.group.release())); + auto pdfGroup = + std::make_unique(*static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); - return matchingPdfSet == pdfGroups.end() ? std::nullopt : - std::optional({matchingPdfSet->index, std::move(matchingPdfSet->group)}); + return matchingPdfSet == pdfGroups.end() + ? std::nullopt + : std::optional({matchingPdfSet->index, std::move(matchingPdfSet->group)}); } std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLHAIDs( @@ -73,7 +75,8 @@ std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLH for (auto lhaid : lhaids) { auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = std::make_unique(*static_cast(data.group.release())); + auto pdfGroup = + std::make_unique(*static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); if (matchingPdfSet != pdfGroups.end()) { @@ -93,4 +96,6 @@ std::vector GenWeightInfoProduct::weightGroupIndicesByType(gen::WeightType return matchingGroupIndices; } -void GenWeightInfoProduct::addWeightGroupInfo(std::unique_ptr info) { weightGroupsInfo_.push_back(std::move(info)); } +void GenWeightInfoProduct::addWeightGroupInfo(std::unique_ptr info) { + weightGroupsInfo_.push_back(std::move(info)); +} diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 99826e88d14b9..2e1bbc7f16d26 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -99,7 +99,7 @@ namespace gen { std::vector ScaleWeightGroupInfo::dynNames() const { std::vector returnVec; - for (auto item : dynNames_) { + for (const auto& item : dynNames_) { if (!item.empty()) returnVec.push_back(item); } diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 8e199219435ac..edd383b15dac6 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -24,8 +24,8 @@ namespace gen { WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } WeightMetaInfo WeightGroupInfo::weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const { - if (wgtId.empty()) - wgtId = std::to_string(weightEntry); + if (wgtId.empty()) + wgtId = std::to_string(weightEntry); int entry = weightVectorEntry(wgtId, weightEntry); if (entry < 0 || entry >= static_cast(idsContained_.size())) throw std::range_error("Weight entry " + std::to_string(weightEntry) + " is not a member of group " + name_ + @@ -60,8 +60,8 @@ namespace gen { } void WeightGroupInfo::addContainedId(int weightEntry, std::string id, std::string label = "") { - if (id.empty()) - id = std::to_string(weightEntry); + if (id.empty()) + id = std::to_string(weightEntry); if (firstId_ == -1 || weightEntry < firstId_) { firstId_ = weightEntry; @@ -75,9 +75,9 @@ namespace gen { WeightMetaInfo info = {static_cast(weightEntry), localIndex, id, label}; // logic to insert for all cases e.g. inserting in the middle of the vector if (localIndex == idsContained_.size()) - idsContained_.emplace_back(info); + idsContained_.emplace_back(info); else - idsContained_.insert(idsContained_.begin() + localIndex, info); + idsContained_.insert(idsContained_.begin() + localIndex, info); } std::vector WeightGroupInfo::containedIds() const { return idsContained_; } @@ -85,8 +85,8 @@ namespace gen { bool WeightGroupInfo::indexInRange(int index) const { return (index <= lastId_ && index >= firstId_); } void WeightGroupInfo::cacheWeightIndicesByLabel() { - for (const auto& weight : idsContained_) - weightLabelsToIndices_[weight.label] = weight.localIndex; + for (const auto& weight : idsContained_) + weightLabelsToIndices_[weight.label] = weight.localIndex; } std::vector WeightGroupInfo::weightLabels() const { @@ -98,17 +98,17 @@ namespace gen { } int WeightGroupInfo::weightIndexFromLabel(std::string weightLabel) const { - if (!weightLabelsToIndices_.empty()) { - if (weightLabelsToIndices_.find(weightLabel) != weightLabelsToIndices_.end()) - return static_cast(weightLabelsToIndices_.at(weightLabel)); - return -1; - } - - auto it = std::find_if(idsContained_.begin(), idsContained_.end(), - [weightLabel](const auto& w) { return weightLabel == w.label; }); - if (it == idsContained_.end()) - return -1; - return std::distance(idsContained_.begin(), it); + if (!weightLabelsToIndices_.empty()) { + if (weightLabelsToIndices_.find(weightLabel) != weightLabelsToIndices_.end()) + return static_cast(weightLabelsToIndices_.at(weightLabel)); + return -1; + } + + auto it = std::find_if( + idsContained_.begin(), idsContained_.end(), [weightLabel](const auto& w) { return weightLabel == w.label; }); + if (it == idsContained_.end()) + return -1; + return std::distance(idsContained_.begin(), it); } } // namespace gen From e1539bafc0216955a0eb013ba844b7e04b45261c Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 4 Nov 2020 18:52:42 +0100 Subject: [PATCH 162/186] Avoid make_unique and be careful copying --- GeneratorInterface/Core/src/WeightHelper.cc | 1 + .../plugins/LHEWeightsTableProducer.cc | 2 ++ PhysicsTools/NanoAOD/test/testNanoWeights.py | 11 +-------- .../interface/GenWeightInfoProduct.h | 10 ++++---- .../interface/PartonShowerWeightGroupInfo.h | 5 ++-- .../src/GenWeightInfoProduct.cc | 24 +++++++++---------- 6 files changed, 24 insertions(+), 29 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 9998bba05efc0..3ba475334618e 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -294,6 +294,7 @@ namespace gen { labels.at(FIRST_PSWEIGHT_ENTRY).find('=') != std::string::npos) { wgtPS.setNameIsPythiaSyntax(true); } + std::cout << "Name is pythiaSynax? " << wgtPS.nameIsPythiaSyntax() << std::endl; } if (!wgt.isWellFormed()) std::cout << "\033[0m"; diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 0fbdb7d4c5af9..8fe199d0e7be1 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -288,12 +288,14 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed() && false) { const auto scaleGroup = *static_cast(groupInfo.group.get()); + std::cout << "They're well formed, will be ordered as expected\n"; weights = orderedScaleWeights(weights, scaleGroup); label.append( "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); } else { + std::cout << "NOT WELL FORMED!\n"; size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); weights = std::vector(weights.begin(), weights.begin() + nstore); label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + diff --git a/PhysicsTools/NanoAOD/test/testNanoWeights.py b/PhysicsTools/NanoAOD/test/testNanoWeights.py index 54d17f85ac41c..e3a3f1dc8c62e 100644 --- a/PhysicsTools/NanoAOD/test/testNanoWeights.py +++ b/PhysicsTools/NanoAOD/test/testNanoWeights.py @@ -19,16 +19,7 @@ def variableAndNumber(varName, tree): rtfile = ROOT.TFile(args.inputFile) tree = rtfile.Get("Events") tree.GetEntry(0) -types = ["ScaleWeight", "PdfWeight", "MEParamWeight", "UnknownWeight", ] -variables = ["LHE"+t for t in types] -variables.append("GenPartonShowerWeight") -variables.extend(["Gen"+t for t in types]) +variables = ["LHEScaleWeight", "LHEPdfWeight", "MEParamWeight", "UnknownWeight", "PSWeight", ] for varName in variables: variableAndNumber(varName, tree) - i = 1 - altName = varName + "AltSet%i" % i - while hasattr(tree, altName): - variableAndNumber(altName, tree) - i = i+1 - altName = varName + "AltSet%i" % i diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h index e0db5a539f86b..cdccd169797c9 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h @@ -16,12 +16,12 @@ namespace gen { struct WeightGroupData { size_t index; - std::unique_ptr group; + std::unique_ptr group; }; struct SharedWeightGroupData { size_t index; - std::shared_ptr group; + std::shared_ptr group; }; } // namespace gen @@ -36,9 +36,9 @@ class GenWeightInfoProduct { GenWeightInfoProduct& operator=(GenWeightInfoProduct&& other); const edm::OwnVector& allWeightGroupsInfo() const; - const std::unique_ptr containingWeightGroupInfo(int index) const; - const std::unique_ptr orderedWeightGroupInfo(int index) const; - std::vector> weightGroupsByType(gen::WeightType type) const; + std::unique_ptr containingWeightGroupInfo(int index) const; + std::unique_ptr orderedWeightGroupInfo(int index) const; + std::vector weightGroupsByType(gen::WeightType type) const; std::vector weightGroupIndicesByType(gen::WeightType type) const; std::vector weightGroupsAndIndicesByType(gen::WeightType type) const; std::optional pdfGroupWithIndexByLHAID(int lhaid) const; diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index a2652f6a9883e..b2725e74b3753 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -14,6 +14,7 @@ namespace gen { PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} PartonShowerWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { weightType_ = WeightType::kPartonShowerWeights; + nameIsPythiaSyntax_ = false; } PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } @@ -21,12 +22,12 @@ namespace gen { void copy(const PartonShowerWeightGroupInfo &other); PartonShowerWeightGroupInfo *clone() const override; void setNameIsPythiaSyntax(bool isPythiaSyntax) { nameIsPythiaSyntax_ = isPythiaSyntax; } - bool nameIsPythiaSyntax(bool isPythiaSyntax) const { return nameIsPythiaSyntax_; } + bool nameIsPythiaSyntax() const { return nameIsPythiaSyntax_; } int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; int variationIndex(bool isISR, bool isUp, PSVarType variationType) const; private: - bool nameIsPythiaSyntax_ = false; + bool nameIsPythiaSyntax_; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index f6bb6e5af5ade..9dac7f33e4728 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -22,34 +22,36 @@ const edm::OwnVector& GenWeightInfoProduct::allWeightGroup return weightGroupsInfo_; } -const std::unique_ptr GenWeightInfoProduct::containingWeightGroupInfo(int index) const { +std::unique_ptr GenWeightInfoProduct::containingWeightGroupInfo(int index) const { for (const auto& weightGroup : weightGroupsInfo_) { if (weightGroup.indexInRange(index)) - return std::make_unique(weightGroup); + return std::unique_ptr(&weightGroup); } throw std::domain_error("Failed to find containing weight group"); } -const std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { +std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) throw std::range_error("Weight index out of range!"); - return std::make_unique(weightGroupsInfo_[weightGroupIndex]); + return std::unique_ptr(&weightGroupsInfo_[weightGroupIndex]); } std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { std::vector matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + const gen::WeightGroupInfo& group = weightGroupsInfo_[i]; if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, std::make_unique(weightGroupsInfo_[i])}); + matchingGroups.push_back({i, std::unique_ptr(&group)}); } return matchingGroups; } -std::vector> GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { - std::vector> matchingGroups; +std::vector GenWeightInfoProduct::weightGroupsByType(gen::WeightType type) const { + std::vector matchingGroups; for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { + const gen::WeightGroupInfo& group = weightGroupsInfo_[i]; if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back(std::make_unique(weightGroupsInfo_[i])); + matchingGroups.push_back({i, std::unique_ptr(&group)}); } return matchingGroups; } @@ -58,8 +60,7 @@ std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHA std::vector pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = - std::make_unique(*static_cast(data.group.release())); + auto pdfGroup = std::unique_ptr(static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); @@ -75,8 +76,7 @@ std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLH for (auto lhaid : lhaids) { auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = - std::make_unique(*static_cast(data.group.release())); + auto pdfGroup = std::unique_ptr(static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); if (matchingPdfSet != pdfGroups.end()) { From bd9d3dd4b798df48759e119d03dc91aebf5b04b1 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Thu, 5 Nov 2020 16:51:28 +0100 Subject: [PATCH 163/186] Convert make_unique(...) into unique_ptr(...clone()) --- .../Core/plugins/GenWeightProductProducer.cc | 2 +- .../Core/plugins/LHEWeightProductProducer.cc | 2 +- .../LHEInterface/plugins/ExternalLHEProducer.cc | 2 +- .../GeneratorProducts/src/GenWeightInfoProduct.cc | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 3eef6a5701171..3c58ba5af7850 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -86,7 +86,7 @@ void GenWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& weightHelper_.addUnassociatedGroup(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); + weightInfoProduct->addWeightGroupInfo(std::unique_ptr(weightGroup.clone())); } iLumi.put(std::move(weightInfoProduct)); } diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 7634842f1f8d3..609763f2755cf 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -136,7 +136,7 @@ void LHEWeightProductProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); + weightInfoProduct->addWeightGroupInfo(std::unique_ptr(weightGroup.clone())); } lumi.put(std::move(weightInfoProduct)); } diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index cf944ea8bdeec..86d8b1e60c8ec 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -385,7 +385,7 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { - weightInfoProduct->addWeightGroupInfo(std::make_unique(*weightGroup.clone())); + weightInfoProduct->addWeightGroupInfo(std::unique_ptr(weightGroup.clone())); } lumi.put(std::move(weightInfoProduct)); } diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 9dac7f33e4728..1475de8bcff2a 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -25,7 +25,7 @@ const edm::OwnVector& GenWeightInfoProduct::allWeightGroup std::unique_ptr GenWeightInfoProduct::containingWeightGroupInfo(int index) const { for (const auto& weightGroup : weightGroupsInfo_) { if (weightGroup.indexInRange(index)) - return std::unique_ptr(&weightGroup); + return std::unique_ptr(weightGroup.clone()); } throw std::domain_error("Failed to find containing weight group"); } @@ -33,7 +33,7 @@ std::unique_ptr GenWeightInfoProduct::containingWeig std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) throw std::range_error("Weight index out of range!"); - return std::unique_ptr(&weightGroupsInfo_[weightGroupIndex]); + return std::unique_ptr(weightGroupsInfo_[weightGroupIndex].clone()); } std::vector GenWeightInfoProduct::weightGroupsAndIndicesByType(gen::WeightType type) const { @@ -41,7 +41,7 @@ std::vector GenWeightInfoProduct::weightGroupsAndIndicesBy for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { const gen::WeightGroupInfo& group = weightGroupsInfo_[i]; if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, std::unique_ptr(&group)}); + matchingGroups.push_back({i, std::unique_ptr(group.clone())}); } return matchingGroups; } @@ -51,7 +51,7 @@ std::vector GenWeightInfoProduct::weightGroupsByType(gen:: for (size_t i = 0; i < weightGroupsInfo_.size(); i++) { const gen::WeightGroupInfo& group = weightGroupsInfo_[i]; if (weightGroupsInfo_[i].weightType() == type) - matchingGroups.push_back({i, std::unique_ptr(&group)}); + matchingGroups.push_back({i, std::unique_ptr(group.clone())}); } return matchingGroups; } From 49b5d2b34fc45cefa325f4915f3799833b8ba119 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Fri, 6 Nov 2020 12:14:46 +0100 Subject: [PATCH 164/186] USe cms::Exception, little bit of cleanup --- PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc | 2 +- PhysicsTools/NanoAOD/test/testNanoWeights.py | 4 ++++ .../GeneratorProducts/interface/GenWeightProduct.h | 2 +- .../GeneratorProducts/src/GenWeightInfoProduct.cc | 5 +++-- SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc | 6 +++--- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index 8fe199d0e7be1..fd1080eaf865a 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -301,6 +301,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { const auto psGroup = *static_cast(groupInfo.group.get()); @@ -379,7 +380,6 @@ void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const { - Counter& counter = *streamCache(id)->get(); //this takes care for mergeing all the weight sums runCounterMap->mergeSumMap(*streamCache(id)); } diff --git a/PhysicsTools/NanoAOD/test/testNanoWeights.py b/PhysicsTools/NanoAOD/test/testNanoWeights.py index e3a3f1dc8c62e..2f288b8629c91 100644 --- a/PhysicsTools/NanoAOD/test/testNanoWeights.py +++ b/PhysicsTools/NanoAOD/test/testNanoWeights.py @@ -14,6 +14,7 @@ def variableAndNumber(varName, tree): parser = argparse.ArgumentParser() parser.add_argument('inputFile', type=str, help='NanoAOD file to process') +parser.add_argument('--scan', action='store_true', help='Scan the weight values') args = parser.parse_args() rtfile = ROOT.TFile(args.inputFile) @@ -23,3 +24,6 @@ def variableAndNumber(varName, tree): for varName in variables: variableAndNumber(varName, tree) + +if args.scan: + tree.Scan(":".join(variables)) diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index ed28a0dcd3d4f..1720ff917f1e4 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -34,7 +34,7 @@ class GenWeightProduct { if (weightsVector_.empty() && setEntry == 0) addWeightSet(); if (static_cast(weightsVector_.size()) <= setEntry) - throw std::domain_error("Out of range weight"); + throw cms::Exception("GenWeightProduct") << "Trying to add weight index outside the range of weights expected"; auto& weights = weightsVector_.at(setEntry); if (static_cast(weights.size()) <= weightNum) { weights.resize(weightNum + 1); diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index 1475de8bcff2a..f80cd0033b63d 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -3,6 +3,7 @@ #include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "FWCore/Utilities/interface/Exception.h" GenWeightInfoProduct::GenWeightInfoProduct(edm::OwnVector& weightGroups) { weightGroupsInfo_ = weightGroups; @@ -27,12 +28,12 @@ std::unique_ptr GenWeightInfoProduct::containingWeig if (weightGroup.indexInRange(index)) return std::unique_ptr(weightGroup.clone()); } - throw std::domain_error("Failed to find containing weight group"); + throw cms::Exception("GenWeightInfoProduct") << "No weight group found containing the weight index requested"; } std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) - throw std::range_error("Weight index out of range!"); + throw cms::Exception("GenWeightInfoProduct") << "Weight index requested is outside the range of weights in the product"; return std::unique_ptr(weightGroupsInfo_[weightGroupIndex].clone()); } diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index edd383b15dac6..641270ad36d02 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -18,7 +18,7 @@ namespace gen { } WeightGroupInfo* WeightGroupInfo::clone() const { - throw cms::Exception("LogicError", "WeightGroupInfo is abstract, so it's clone() method can't be implemented.\n"); + throw cms::Exception("WeightGroupInfo") << "WeightGroupInfo is abstract, so it's clone() method can't be implemented."; } WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } @@ -28,8 +28,8 @@ namespace gen { wgtId = std::to_string(weightEntry); int entry = weightVectorEntry(wgtId, weightEntry); if (entry < 0 || entry >= static_cast(idsContained_.size())) - throw std::range_error("Weight entry " + std::to_string(weightEntry) + " is not a member of group " + name_ + - ". \n firstID = " + std::to_string(firstId_) + " lastId = " + std::to_string(lastId_)); + throw cms::Exception("WeightGroupInfo") << "Weight entry " << std::to_string(weightEntry) << " is not a member of group " + << name_ << ". \n firstID = " << std::to_string(firstId_) << " lastId = " << std::to_string(lastId_); return idsContained_.at(entry); } From 2a4145eb93ecc6daf5fa266c22da03537bd5a91e Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 27 Oct 2020 18:10:18 +0100 Subject: [PATCH 165/186] change way PS weights handled --- .../Core/interface/WeightHelper.h | 1 + .../Core/src/GenWeightHelper.cc | 2 + GeneratorInterface/Core/src/WeightHelper.cc | 66 +++++++++++--- .../interface/PartonShowerWeightGroupInfo.h | 2 +- .../src/PartonShowerWeightGroupInfo.cc | 89 ++++++++++--------- 5 files changed, 103 insertions(+), 57 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index 727866b4e76f7..c84953b43c033 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -63,6 +63,7 @@ namespace gen { void updateScaleInfo(gen::ScaleWeightGroupInfo& scaleGroup, const ParsedWeight& weight); void updateMEParamInfo(const ParsedWeight& weight, int index); void updatePdfInfo(gen::PdfWeightGroupInfo& pdfGroup, const ParsedWeight& weight); + void updatePartonShowerInfo(gen::PartonShowerWeightGroupInfo& psGroup, const ParsedWeight& weight); void cleanupOrphanCentralWeight(); bool splitPdfWeight(ParsedWeight& weight); diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index b06475941efd6..25e2297b59dad 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -17,6 +17,7 @@ namespace gen { return; for (std::string weightName : weightNames) { + std::cout << weightName << std::endl; if (weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow std::vector info; @@ -31,6 +32,7 @@ namespace gen { attributes[boost::algorithm::trim_copy(subInfo[0])] = boost::algorithm::trim_copy(subInfo[1]); } } + std::cout << "group: " << attributes["group"] << std::endl; if (attributes["group"] != curGroup) { curGroup = attributes["group"]; groupIndex++; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 3ba475334618e..bf2f6e4bed906 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -158,6 +158,14 @@ namespace gen { pdfGroup.addLhaid(lhaid); } + void WeightHelper::updatePartonShowerInfo(gen::PartonShowerWeightGroupInfo& psGroup, const ParsedWeight& weight) { + if (psGroup.containedIds().size() == DEFAULT_PSWEIGHT_LENGTH) + psGroup.setIsWellFormed(true); + std::cout << weight.content << std::endl; + if (weight.content.find(":") != std::string::npos && weight.content.find("=") != std::string::npos) + psGroup.setNameIsPythiaSyntax(true); + } + bool WeightHelper::splitPdfWeight(ParsedWeight& weight) { if (weightGroups_[weight.wgtGroup_idx].weightType() == gen::WeightType::kPdfWeights) { auto& pdfGroup = dynamic_cast(weightGroups_[weight.wgtGroup_idx]); @@ -285,20 +293,53 @@ namespace gen { std::cout << wgt.description() << "\n"; } else if (wgt.weightType() == gen::WeightType::kPartonShowerWeights) { auto& wgtPS = dynamic_cast(wgt); - if (wgtPS.containedIds().size() == DEFAULT_PSWEIGHT_LENGTH) - wgtPS.setIsWellFormed(true); - - wgtPS.cacheWeightIndicesByLabel(); std::vector labels = wgtPS.weightLabels(); - if (labels.size() > FIRST_PSWEIGHT_ENTRY && labels.at(FIRST_PSWEIGHT_ENTRY).find(':') != std::string::npos && - labels.at(FIRST_PSWEIGHT_ENTRY).find('=') != std::string::npos) { - wgtPS.setNameIsPythiaSyntax(true); + wgtPS.cacheWeightIndicesByLabel(); + + auto vars = {std::make_pair(true, true), + std::make_pair(true, false), + std::make_pair(false, true), + std::make_pair(false, false)}; + typedef gen::PSVarType varType; + typedef gen::PSSplittingType sptType; + std::vector> ps_pairs = { + {varType::def, sptType::combined}, + {varType::red, sptType::combined}, + {varType::con, sptType::combined}, + {varType::muR, sptType::g2gg}, + {varType::muR, sptType::g2qq}, + {varType::muR, sptType::q2qg}, + {varType::muR, sptType::x2xg}, + {varType::cNS, sptType::g2gg}, + {varType::cNS, sptType::g2qq}, + {varType::cNS, sptType::q2qg}, + {varType::cNS, sptType::x2xg}, + }; + std::map varTypeMap = { + {varType::muR, "muR"}, + {varType::cNS, "cNS"}, + {varType::con, "con"}, + {varType::def, "def"}, + {varType::red, "red"}, + }; + std::map splTypeMap = { + {sptType::combined, "combined"}, {sptType::g2gg, "g2gg"}, {sptType::x2xg, "x2xg"}, {sptType::g2qq, "g2qq"}}; + + for (auto [vartype, spttype] : ps_pairs) { + for (auto var : vars) { + int idx = wgtPS.variationIndex(var.first, var.second, vartype, spttype); + if (idx == -1) + continue; + std::cout << varTypeMap[vartype] << " " << splTypeMap[spttype] << "(" << var.first << ", " << var.second + << "): " << idx << " - " << labels.at(idx) << std::endl; + } } std::cout << "Name is pythiaSynax? " << wgtPS.nameIsPythiaSyntax() << std::endl; } if (!wgt.isWellFormed()) std::cout << "\033[0m"; } + exit(0); } std::unique_ptr WeightHelper::buildGroup(ParsedWeight& weight) { @@ -324,9 +365,9 @@ namespace gen { int groupOffset = 0; for (auto& weight : parsedWeights_) { weight.wgtGroup_idx += groupOffset; - if (debug_) - std::cout << "Building group for weight " << weight.content << " group " << weight.groupname << " group index " - << weight.wgtGroup_idx << std::endl; + // if (debug_) + // std::cout << "Building group for weight " << weight.content << " group " << weight.groupname << " group index " + // << weight.wgtGroup_idx << std::endl; int numGroups = static_cast(weightGroups_.size()); if (weight.wgtGroup_idx == numGroups) { @@ -342,9 +383,10 @@ namespace gen { group.addContainedId(weight.index, weight.id, weight.content); if (group.weightType() == gen::WeightType::kScaleWeights) updateScaleInfo(dynamic_cast(group), weight); - else if (group.weightType() == gen::WeightType::kPdfWeights) { + else if (group.weightType() == gen::WeightType::kPdfWeights) updatePdfInfo(dynamic_cast(group), weight); - } + else if (group.weightType() == gen::WeightType::kPartonShowerWeights) + updatePartonShowerInfo(dynamic_cast(group), weight); } cleanupOrphanCentralWeight(); } diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index b2725e74b3753..ff749f4d3a8ba 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -7,7 +7,7 @@ namespace gen { enum class PSVarType { muR, cNS, con, def, red, alphaS }; - enum class PSSplittingType { combined, g2gg, x2xg, g2qq }; + enum class PSSplittingType { combined, g2gg, x2xg, g2qq, q2qg }; class PartonShowerWeightGroupInfo : public WeightGroupInfo { public: diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 8a2f5d79c4609..25cc0e42ac63b 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -22,57 +22,58 @@ namespace gen { PSSplittingType splittingType) const { std::string label = isISR ? "isr" : "fsr"; - if ((variationType == PSVarType::con || variationType == PSVarType::def || variationType == PSVarType::red) && - splittingType != PSSplittingType::combined) - throw std::invalid_argument("VariationType must be muR or CNS if subprocess is specified"); - - std::string variation; - switch (variationType) { - case PSVarType::con: - variation = !nameIsPythiaSyntax_ ? "Con" : (isUp ? "murfac=4.0" : "murfac=0.25"); - break; - case PSVarType::def: - variation = !nameIsPythiaSyntax_ ? "Def" : (isUp ? "murfac=2.0" : "murfac=0.5"); - break; - case PSVarType::red: - variation = !nameIsPythiaSyntax_ ? "Red" : (isUp ? "murfac=1.414" : "murfac=0.707"); - case PSVarType::muR: - variation = !nameIsPythiaSyntax_ ? "muR" : (isUp ? "murfac=2.0" : "murfac=0.5"); - break; - case PSVarType::cNS: - variation = !nameIsPythiaSyntax_ ? "cNS" : (isUp ? "cns=2.0" : "murfac=-2.0"); - break; - case PSVarType::alphaS: - variation = (isUp ? "alpsfact=2.0" : "alpsfact=0.5"); - return weightIndexFromLabel(variation); - } - - std::string splitting; - switch (splittingType) { - case PSSplittingType::g2gg: - splitting = !nameIsPythiaSyntax_ ? "G2GG" : "g2gg"; - break; - case PSSplittingType::g2qq: - splitting = !nameIsPythiaSyntax_ ? "G2QQ" : "g2qq"; - break; - case PSSplittingType::x2xg: - splitting = !nameIsPythiaSyntax_ ? "X2XG" : "x2xg"; - break; - default: - break; - } + // if ((variationType == PSVarType::con || variationType == PSVarType::def || variationType == PSVarType::red) && + // splittingType != PSSplittingType::combined) + // throw std::invalid_argument("VariationType must be muR or CNS if subprocess is specified"); if (nameIsPythiaSyntax_) { - std::string app = splittingType != PSSplittingType::combined ? splitting + ":" + variation : variation; - label += ":" + app; + // Splitting + if (splittingType == PSSplittingType::g2gg) + label += ":g2gg"; + else if (splittingType == PSSplittingType::g2qq) + label += ":g2qq"; + else if (splittingType == PSSplittingType::x2xg) + label += ":x2xg"; + else if (splittingType == PSSplittingType::q2qg) + label += ":q2qg"; + // type + if (variationType == PSVarType::con) + label += isUp ? ":murfac=4.0" : ":murfac=0.25"; + else if (variationType == PSVarType::def || variationType == PSVarType::muR) + label += isUp ? ":murfac=2.0" : ":murfac=0.5"; + else if (variationType == PSVarType::red) + label += isUp ? ":murfac=1.414" : ":murfac=0.707"; + else if (variationType == PSVarType::cNS) + label += isUp ? ":cns=2.0" : ":cns=-2.0"; } else { + // Splitting + if (splittingType == PSSplittingType::g2gg) + label += "_G2GG_"; + else if (splittingType == PSSplittingType::g2qq) + label += "_G2QQ_"; + else if (splittingType == PSSplittingType::x2xg) + label += "_X2XG_"; + else if (splittingType == PSSplittingType::q2qg) + label += "_Q2QG_"; + // type + if (variationType == PSVarType::con) + label += "Con"; + else if (variationType == PSVarType::def) + label += "Def"; + else if (variationType == PSVarType::muR) + label += "muR"; + else if (variationType == PSVarType::red) + label += "Red"; + else if (variationType == PSVarType::cNS) + label += "cNS"; + // Up/Down if (splittingType != PSSplittingType::combined) { - label += variation + "_" + splitting + "_" + variation + (isUp ? "_up" : "_dn"); + label += isUp ? "_up" : "_dn"; } else - label += variation + (isUp ? "Hi" : "Lo"); + label += isUp ? "Hi" : "Lo"; } + std::cout << label << std::endl; return weightIndexFromLabel(label); } - } // namespace gen From 5882832fddb913164f3f38121cd5a8b7c878041f Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 27 Oct 2020 20:49:44 +0100 Subject: [PATCH 166/186] Allow for finding missing weights --- .../interface/PartonShowerWeightGroupInfo.h | 16 ++++++++-- .../src/PartonShowerWeightGroupInfo.cc | 29 +++++++++++++++++-- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index ff749f4d3a8ba..ad49d70ac634a 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -1,13 +1,21 @@ #ifndef SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h #define SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h -#include +#include #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { - enum class PSVarType { muR, cNS, con, def, red, alphaS }; + enum class PSVarType { muR, cNS, con, def, red, alphaS, LAST }; enum class PSSplittingType { combined, g2gg, x2xg, g2qq, q2qg }; + typedef std::pair PSPair; + + struct PSPairHash { + std::size_t operator()(const PSPair &pair) const { + return static_cast(pair.first) * static_cast(PSVarType::LAST) + + static_cast(pair.second); + } + }; class PartonShowerWeightGroupInfo : public WeightGroupInfo { public: @@ -17,6 +25,7 @@ namespace gen { nameIsPythiaSyntax_ = false; } PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} + PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); @@ -24,10 +33,11 @@ namespace gen { void setNameIsPythiaSyntax(bool isPythiaSyntax) { nameIsPythiaSyntax_ = isPythiaSyntax; } bool nameIsPythiaSyntax() const { return nameIsPythiaSyntax_; } int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; + std::string variationName(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; int variationIndex(bool isISR, bool isUp, PSVarType variationType) const; private: - bool nameIsPythiaSyntax_; + bool nameIsPythiaSyntax_ = false; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 25cc0e42ac63b..745b35e1f178d 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -3,6 +3,11 @@ #include namespace gen { + PartonShowerWeightGroupInfo::PartonShowerWeightGroupInfo(std::string header, std::string name) + : WeightGroupInfo(header, name) { + weightType_ = WeightType::kPartonShowerWeights; + } + void PartonShowerWeightGroupInfo::copy(const PartonShowerWeightGroupInfo& other) { WeightGroupInfo::copy(other); nameIsPythiaSyntax_ = other.nameIsPythiaSyntax_; @@ -20,6 +25,25 @@ namespace gen { bool isUp, PSVarType variationType, PSSplittingType splittingType) const { + std::string varName = variationName(isISR, isUp, variationType, splittingType); + int wgtIdx = weightIndexFromLabel(varName); + if (wgtIdx == -1) { + int idx = isUp * 2 + !isUp; + auto pair = std::make_pair(variationType, splittingType); + wgtIdx = (nameIsPythiaSyntax_) ? newPythia_order.at(pair)[idx] : oldPythia_order.at(pair)[idx]; + } + std::cout << varName << std::endl; + int idx = (!isUp) * 2 + !isISR; + auto pair = std::make_pair(variationType, splittingType); + int blha = (nameIsPythiaSyntax_) ? newPythia_order.at(pair)[idx] : oldPythia_order.at(pair)[idx]; + std::cout << wgtIdx << " " << idx << " " << blha << std::endl; + return wgtIdx; + } + + std::string PartonShowerWeightGroupInfo::variationName(bool isISR, + bool isUp, + PSVarType variationType, + PSSplittingType splittingType) const { std::string label = isISR ? "isr" : "fsr"; // if ((variationType == PSVarType::con || variationType == PSVarType::def || variationType == PSVarType::red) && @@ -72,8 +96,7 @@ namespace gen { } else label += isUp ? "Hi" : "Lo"; } - - std::cout << label << std::endl; - return weightIndexFromLabel(label); + return label; } + } // namespace gen From 8d190ac6506a9a1c736567fb74c012a65fb36b71 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 27 Oct 2020 21:08:38 +0100 Subject: [PATCH 167/186] Fix error with gap fixing code --- .../GeneratorProducts/src/PartonShowerWeightGroupInfo.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 745b35e1f178d..ead9ecf12185c 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -28,15 +28,12 @@ namespace gen { std::string varName = variationName(isISR, isUp, variationType, splittingType); int wgtIdx = weightIndexFromLabel(varName); if (wgtIdx == -1) { - int idx = isUp * 2 + !isUp; + int idx = !isUp * 2 + !isISR; auto pair = std::make_pair(variationType, splittingType); wgtIdx = (nameIsPythiaSyntax_) ? newPythia_order.at(pair)[idx] : oldPythia_order.at(pair)[idx]; + if (wgtIdx > (int)containedIds().size()) + wgtIdx = -1; } - std::cout << varName << std::endl; - int idx = (!isUp) * 2 + !isISR; - auto pair = std::make_pair(variationType, splittingType); - int blha = (nameIsPythiaSyntax_) ? newPythia_order.at(pair)[idx] : oldPythia_order.at(pair)[idx]; - std::cout << wgtIdx << " " << idx << " " << blha << std::endl; return wgtIdx; } From 89877ad5d2a7d26179cf9fbb85346d8e0c85bd58 Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 3 Nov 2020 17:57:08 +0100 Subject: [PATCH 168/186] Change around logic to have bool to decide if use guess for PS --- .../Core/interface/WeightHelper.h | 3 ++ .../Core/plugins/GenWeightProductProducer.cc | 1 + GeneratorInterface/Core/src/WeightHelper.cc | 27 ++++++++---------- PhysicsTools/NanoAOD/python/nanogen_cff.py | 6 ++-- .../interface/PartonShowerWeightGroupInfo.h | 28 +++++++++++++++++++ .../src/PartonShowerWeightGroupInfo.cc | 25 ++++++++++++----- 6 files changed, 65 insertions(+), 25 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index c84953b43c033..ed857f07bd8dc 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -35,6 +35,9 @@ namespace gen { std::unique_ptr weightProduct(std::vector weights, float w0); void setModel(std::string model) { model_ = model; } + void setGuessPSWeightIdx(bool guessPSWeightIdx) { + PartonShowerWeightGroupInfo::setGuessPSWeightIdx(guessPSWeightIdx); + } void addUnassociatedGroup() { weightGroups_.push_back(std::make_unique("unassociated")); weightGroups_.back().setDescription("Weights with missing or invalid header meta data"); diff --git a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc index 3c58ba5af7850..198917def4506 100644 --- a/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/GenWeightProductProducer.cc @@ -52,6 +52,7 @@ GenWeightProductProducer::GenWeightProductProducer(const edm::ParameterSet& iCon weightHelper_.setDebug(iConfig.getUntrackedParameter("debug", false)); produces(); produces(); + weightHelper_.setGuessPSWeightIdx(iConfig.getUntrackedParameter("guessPSWeightIdx", false)); } GenWeightProductProducer::~GenWeightProductProducer() {} diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index bf2f6e4bed906..6e1b0dd1c090c 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -87,7 +87,7 @@ namespace gen { try { muR = std::stof(muRText); muF = std::stof(muFText); - } catch (...) { + } catch (std::invalid_argument& e) { if (debug_) std::cout << "Tried to convert (" << muR << ", " << muF << ") to a int" << std::endl; scaleGroup.setIsWellFormed(false); @@ -102,7 +102,7 @@ namespace gen { try { int dynNum = std::stoi(dynNumText); scaleGroup.setDyn(weight.index, weight.id, muR, muF, dynNum, dynType); - } catch (...) { + } catch (std::invalid_argument& e) { std::cout << "Tried to convert (" << dynNumText << ") a int" << std::endl; scaleGroup.setIsWellFormed(false); /// do something here @@ -113,8 +113,8 @@ namespace gen { std::string lhaidText = searchAttributes("pdf", weight); try { scaleGroup.setLhaid(std::stoi(lhaidText)); - } catch (...) { - scaleGroup.setLhaid(-2); + } catch (std::invalid_argument& e) { + scaleGroup.setLhaid(-1); // do something here } } @@ -161,7 +161,6 @@ namespace gen { void WeightHelper::updatePartonShowerInfo(gen::PartonShowerWeightGroupInfo& psGroup, const ParsedWeight& weight) { if (psGroup.containedIds().size() == DEFAULT_PSWEIGHT_LENGTH) psGroup.setIsWellFormed(true); - std::cout << weight.content << std::endl; if (weight.content.find(":") != std::string::npos && weight.content.find("=") != std::string::npos) psGroup.setNameIsPythiaSyntax(true); } @@ -261,8 +260,6 @@ namespace gen { void WeightHelper::printWeights() { // checks for (auto& wgt : weightGroups_) { - if (!wgt.isWellFormed()) - std::cout << "\033[1;31m"; std::cout << std::boolalpha << wgt.name() << " (" << wgt.firstId() << "-" << wgt.lastId() << "): " << wgt.isWellFormed() << std::endl; if (wgt.weightType() == gen::WeightType::kScaleWeights) { @@ -336,16 +333,14 @@ namespace gen { } std::cout << "Name is pythiaSynax? " << wgtPS.nameIsPythiaSyntax() << std::endl; } - if (!wgt.isWellFormed()) - std::cout << "\033[0m"; } - exit(0); } std::unique_ptr WeightHelper::buildGroup(ParsedWeight& weight) { - if (debug_) - std::cout << "Building group for weight group " << weight.groupname << " weight content is " << weight.content; - + if (debug_) { + std::cout << "Building group for weight group " << weight.groupname << " weight content is " << weight.content + << std::endl; + } if (isScaleWeightGroup(weight)) return std::make_unique(weight.groupname); else if (isPdfWeightGroup(weight)) @@ -365,9 +360,9 @@ namespace gen { int groupOffset = 0; for (auto& weight : parsedWeights_) { weight.wgtGroup_idx += groupOffset; - // if (debug_) - // std::cout << "Building group for weight " << weight.content << " group " << weight.groupname << " group index " - // << weight.wgtGroup_idx << std::endl; + if (debug_) + std::cout << "Building group for weight " << weight.content << " group " << weight.groupname << " group index " + << weight.wgtGroup_idx << std::endl; int numGroups = static_cast(weightGroups_.size()); if (weight.wgtGroup_idx == numGroups) { diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index b0a227c54752d..6dd029a5fdbd0 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -9,11 +9,13 @@ genWeights = cms.EDProducer("GenWeightProductProducer", genInfo = cms.InputTag("generator"), - genLumiInfoHeader = cms.InputTag("generator")) + genLumiInfoHeader = cms.InputTag("generator"), + guessPSWeightIdx = cms.untracked.bool(True)) lheWeights = cms.EDProducer("LHEWeightProductProducer", lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]), - failIfInvalidXML = cms.untracked.bool(True) + failIfInvalidXML = cms.untracked.bool(True), + #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) ) ''' diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index ad49d70ac634a..adecc90835571 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -35,9 +35,37 @@ namespace gen { int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; std::string variationName(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; int variationIndex(bool isISR, bool isUp, PSVarType variationType) const; + static void setGuessPSWeightIdx(bool guessPSWeightIdx) { guessPSWeightIdx_ = guessPSWeightIdx_; } + int psWeightIdxGuess(const std::string &varName) const; private: bool nameIsPythiaSyntax_ = false; + static inline bool guessPSWeightIdx_ = false; + + const std::vector expectedPythiaSyntax = { + "fsr:murfac=0.707", "fsr:murfac=1.414", "fsr:murfac=0.5", "fsr:murfac=2.0", + "fsr:murfac=0.25", "fsr:murfac=4.0", "fsr:g2gg:murfac=0.5", "fsr:g2gg:murfac=2.0", + "fsr:g2qq:murfac=0.5", "fsr:g2qq:murfac=2.0", "fsr:q2qg:murfac=0.5", "fsr:q2qg:murfac=2.0", + "fsr:x2xg:murfac=0.5", "fsr:x2xg:murfac=2.0", "fsr:g2gg:cns=-2.0", "fsr:g2gg:cns=2.0", + "fsr:g2qq:cns=-2.0", "fsr:g2qq:cns=2.0", "fsr:q2qg:cns=-2.0", "fsr:q2qg:cns=2.0", + "fsr:x2xg:cns=-2.0", "fsr:x2xg:cns=2.0", "isr:murfac=0.707", "isr:murfac=1.414", + "isr:murfac=0.5", "isr:murfac=2.0", "isr:murfac=0.25", "isr:murfac=4.0", + "isr:g2gg:murfac=0.5", "isr:g2gg:murfac=2.0", "isr:g2qq:murfac=0.5", "isr:g2qq:murfac=2.0", + "isr:q2qg:murfac=0.5", "isr:q2qg:murfac=2.0", "isr:x2xg:murfac=0.5", "isr:x2xg:murfac=2.0", + "isr:g2gg:cns=-2.0", "isr:g2gg:cns=2.0", "isr:g2qq:cns=-2.0", "isr:g2qq:cns=2.0", + "isr:q2qg:cns=-2.0", "isr:q2qg:cns=2.0", "isr:x2xg:cns=-2.0", "isr:x2xg:cns=2.0", + }; + const std::vector expectedOrder = { + "isrRedHi", "fsrRedHi", "isrRedLo", "fsrRedLo", "isrDefHi", + "fsrDefHi", "isrDefLo", "fsrDefLo", "isrConHi", "fsrConHi", + "isrConLo", "fsrConLo", "fsr_G2GG_muR_dn", "fsr_G2GG_muR_up", "fsr_G2QQ_muR_dn", + "fsr_G2QQ_muR_up", "fsr_Q2QG_muR_dn", "fsr_Q2QG_muR_up", "fsr_X2XG_muR_dn", "fsr_X2XG_muR_up", + "fsr_G2GG_cNS_dn", "fsr_G2GG_cNS_up", "fsr_G2QQ_cNS_dn", "fsr_G2QQ_cNS_up", "fsr_Q2QG_cNS_dn", + "fsr_Q2QG_cNS_up", "fsr_X2XG_cNS_dn", "fsr_X2XG_cNS_up", "isr_G2GG_muR_dn", "isr_G2GG_muR_up", + "isr_G2QQ_muR_dn", "isr_G2QQ_muR_up", "isr_Q2QG_muR_dn", "isr_Q2QG_muR_up", "isr_X2XG_muR_dn", + "isr_X2XG_muR_up", "isr_G2GG_cNS_dn", "isr_G2GG_cNS_up", "isr_G2QQ_cNS_dn", "isr_G2QQ_cNS_up", + "isr_Q2QG_cNS_dn", "isr_Q2QG_cNS_up", "isr_X2XG_cNS_dn", "isr_X2XG_cNS_up", + }; }; } // namespace gen diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index ead9ecf12185c..989b1237ae2fa 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -27,13 +27,10 @@ namespace gen { PSSplittingType splittingType) const { std::string varName = variationName(isISR, isUp, variationType, splittingType); int wgtIdx = weightIndexFromLabel(varName); - if (wgtIdx == -1) { - int idx = !isUp * 2 + !isISR; - auto pair = std::make_pair(variationType, splittingType); - wgtIdx = (nameIsPythiaSyntax_) ? newPythia_order.at(pair)[idx] : oldPythia_order.at(pair)[idx]; - if (wgtIdx > (int)containedIds().size()) - wgtIdx = -1; - } + // Guess PS idx if not in label list + if (wgtIdx == -1 && guessPSWeightIdx_) + wgtIdx = psWeightIdxGuess(varName); + return wgtIdx; } @@ -96,4 +93,18 @@ namespace gen { return label; } + int PartonShowerWeightGroupInfo::psWeightIdxGuess(const std::string& varName) const { + int wgtIdx; + if (nameIsPythiaSyntax_) { + auto wgtIter = std::find(expectedPythiaSyntax.begin(), expectedPythiaSyntax.end(), varName); + wgtIdx = wgtIter - expectedPythiaSyntax.begin() + 2; + } else { + auto wgtIter = std::find(expectedOrder.begin(), expectedOrder.end(), varName); + wgtIdx = wgtIter - expectedOrder.begin() + 2; + } + if (wgtIdx >= (int)containedIds().size()) + wgtIdx = -1; + return wgtIdx; + } + } // namespace gen From c5d57f8e92537461e8b20265750d1e65683d29da Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Tue, 3 Nov 2020 18:47:38 +0100 Subject: [PATCH 169/186] Amend wellformed logic for scaleweight --- GeneratorInterface/Core/src/WeightHelper.cc | 4 ++-- .../GeneratorProducts/interface/ScaleWeightGroupInfo.h | 7 +++++-- .../GeneratorProducts/src/ScaleWeightGroupInfo.cc | 9 ++------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 6e1b0dd1c090c..d1883a8be7eec 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -90,7 +90,7 @@ namespace gen { } catch (std::invalid_argument& e) { if (debug_) std::cout << "Tried to convert (" << muR << ", " << muF << ") to a int" << std::endl; - scaleGroup.setIsWellFormed(false); + scaleGroup.setWeightIsCorrupt(); return; /// do something } @@ -104,7 +104,7 @@ namespace gen { scaleGroup.setDyn(weight.index, weight.id, muR, muF, dynNum, dynType); } catch (std::invalid_argument& e) { std::cout << "Tried to convert (" << dynNumText << ") a int" << std::endl; - scaleGroup.setIsWellFormed(false); + scaleGroup.setWeightIsCorrupt(); /// do something here } } diff --git a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h index 0ba1672ce6731..7bb460f57d210 100644 --- a/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h @@ -12,7 +12,7 @@ namespace gen { std::vector muIndices_; bool containsCentral_ = false; int lhaid_ = -1; - bool hasAllWeights = false; + bool weightIsCorrupt_ = false; // Dyn_scale std::vector dynNames_; std::vector> dynVec_; @@ -47,7 +47,10 @@ namespace gen { ScaleWeightGroupInfo* clone() const override; bool containsCentralWeight() const { return containsCentral_; } void addContainedId(int globalIndex, std::string id, std::string label, float muR, float muF); - bool isWellFormed() { return isWellFormed_ && hasAllWeights; } + void setWeightIsCorrupt() { + isWellFormed_ = false; + weightIsCorrupt_ = true; + } void setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF); void setDyn(int globalIndex, std::string id, float muR, float muF, size_t dynNum, std::string dynName); diff --git a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc index 2e1bbc7f16d26..955b4f5c8e260 100644 --- a/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc @@ -26,18 +26,13 @@ namespace gen { } WeightGroupInfo::addContainedId(globalIndex, id, label); setMuRMuFIndex(globalIndex, id, muR, muF); - std::cout << hasAllWeights << " " << isWellFormed_ << std::endl; - for (int muidx : muIndices_) { - std::cout << muidx << " "; - } - std::cout << std::endl; } void ScaleWeightGroupInfo::setMuRMuFIndex(int globalIndex, std::string id, float muR, float muF) { auto info = weightMetaInfoByGlobalIndex(id, globalIndex); int index = indexFromMus(muR, muF); if (!(isValidValue(muR) && isValidValue(muF))) { - isWellFormed_ = false; + setWeightIsCorrupt(); return; } if (index == Central_idx) @@ -48,7 +43,7 @@ namespace gen { if (muidx == -1) return; } - hasAllWeights = true; + isWellFormed_ = !weightIsCorrupt_; } void ScaleWeightGroupInfo::setDyn( From db98fc424b7930355f4c14c433be2306d962657a Mon Sep 17 00:00:00 2001 From: Dylan Teague Date: Mon, 9 Nov 2020 12:33:03 +0100 Subject: [PATCH 170/186] Cleanup code --- .../Core/plugins/LHEWeightProductProducer.cc | 1 + .../Core/src/GenWeightHelper.cc | 2 - GeneratorInterface/Core/src/WeightHelper.cc | 41 +--------- .../NanoAOD/interface/GenWeightCounters.h | 33 ++++---- .../plugins/LHEWeightsTableProducer.cc | 9 +-- PhysicsTools/NanoAOD/python/nanogen_cff.py | 2 +- .../interface/PartonShowerWeightGroupInfo.h | 27 ++----- .../interface/WeightGroupInfo.h | 75 ++++++++++--------- .../src/PartonShowerWeightGroupInfo.cc | 21 ++++-- 9 files changed, 84 insertions(+), 127 deletions(-) diff --git a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc index 609763f2755cf..daa7b26bb874d 100644 --- a/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc +++ b/GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc @@ -59,6 +59,7 @@ LHEWeightProductProducer::LHEWeightProductProducer(const edm::ParameterSet& iCon produces(); weightHelper_.setFailIfInvalidXML(iConfig.getUntrackedParameter("failIfInvalidXML", false)); weightHelper_.setDebug(iConfig.getUntrackedParameter("debug", false)); + weightHelper_.setGuessPSWeightIdx(iConfig.getUntrackedParameter("guessPSWeightIdx", false)); } LHEWeightProductProducer::~LHEWeightProductProducer() {} diff --git a/GeneratorInterface/Core/src/GenWeightHelper.cc b/GeneratorInterface/Core/src/GenWeightHelper.cc index 25e2297b59dad..b06475941efd6 100644 --- a/GeneratorInterface/Core/src/GenWeightHelper.cc +++ b/GeneratorInterface/Core/src/GenWeightHelper.cc @@ -17,7 +17,6 @@ namespace gen { return; for (std::string weightName : weightNames) { - std::cout << weightName << std::endl; if (weightName.find("LHE") != std::string::npos) { // Parse as usual, this is the SUSY workflow std::vector info; @@ -32,7 +31,6 @@ namespace gen { attributes[boost::algorithm::trim_copy(subInfo[0])] = boost::algorithm::trim_copy(subInfo[1]); } } - std::cout << "group: " << attributes["group"] << std::endl; if (attributes["group"] != curGroup) { curGroup = attributes["group"]; groupIndex++; diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index d1883a8be7eec..d612ae8b8aacd 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -292,46 +292,7 @@ namespace gen { auto& wgtPS = dynamic_cast(wgt); std::vector labels = wgtPS.weightLabels(); wgtPS.cacheWeightIndicesByLabel(); - - auto vars = {std::make_pair(true, true), - std::make_pair(true, false), - std::make_pair(false, true), - std::make_pair(false, false)}; - typedef gen::PSVarType varType; - typedef gen::PSSplittingType sptType; - std::vector> ps_pairs = { - {varType::def, sptType::combined}, - {varType::red, sptType::combined}, - {varType::con, sptType::combined}, - {varType::muR, sptType::g2gg}, - {varType::muR, sptType::g2qq}, - {varType::muR, sptType::q2qg}, - {varType::muR, sptType::x2xg}, - {varType::cNS, sptType::g2gg}, - {varType::cNS, sptType::g2qq}, - {varType::cNS, sptType::q2qg}, - {varType::cNS, sptType::x2xg}, - }; - std::map varTypeMap = { - {varType::muR, "muR"}, - {varType::cNS, "cNS"}, - {varType::con, "con"}, - {varType::def, "def"}, - {varType::red, "red"}, - }; - std::map splTypeMap = { - {sptType::combined, "combined"}, {sptType::g2gg, "g2gg"}, {sptType::x2xg, "x2xg"}, {sptType::g2qq, "g2qq"}}; - - for (auto [vartype, spttype] : ps_pairs) { - for (auto var : vars) { - int idx = wgtPS.variationIndex(var.first, var.second, vartype, spttype); - if (idx == -1) - continue; - std::cout << varTypeMap[vartype] << " " << splTypeMap[spttype] << "(" << var.first << ", " << var.second - << "): " << idx << " - " << labels.at(idx) << std::endl; - } - } - std::cout << "Name is pythiaSynax? " << wgtPS.nameIsPythiaSyntax() << std::endl; + wgtPS.printVariables(); } } } diff --git a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h index 11cb9aa8c79e4..1e815e2d5f414 100644 --- a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h +++ b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h @@ -46,22 +46,24 @@ namespace genCounter { //incPSOnly(w0, wPS); } - void mergeSumMap(const Counter& other) { - num_ += other.num_; - sumw_ += other.sumw_; - sumw2_ += other.sumw2_; - //if weightMap_ for "this" is empty, create map elements with empty - //vectors before merging - if (weightSumMap_.empty() && !other.weightSumMap_.empty()) { - for (auto& wmap : other.weightSumMap_) { - std::vector temp; - weightSumMap_.insert({wmap.first, temp}); + void mergeSumMap(const Counter& other) { + num_ += other.num_; + sumw_ += other.sumw_; + sumw2_ += other.sumw2_; + //if weightMap_ for "this" is empty, create map elements with empty + //vectors before merging + if(weightSumMap_.empty() && !other.weightSumMap_.empty()) { + for(auto& wmap : other.weightSumMap_) { + std::vector temp; + weightSumMap_.insert({wmap.first, temp}); + } + } + + for(auto& wmap : weightSumMap_) { + if (other.weightSumMap_.find(wmap.first) != other.weightSumMap_.end()) + mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); } } - for (auto& wmap : weightSumMap_) { - mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); - } - } //private: // the counters @@ -77,8 +79,9 @@ namespace genCounter { std::string active_label = ""; void mergeSumMap(const CounterMap& other) { - for (const auto& y : other.countermap) + for (const auto& y : other.countermap) { countermap[y.first].mergeSumMap(y.second); + } active_el = nullptr; } diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc index fd1080eaf865a..2803d52f0ccb2 100644 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc @@ -284,26 +284,21 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapname() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; if (weightType == gen::WeightType::kScaleWeights) { - if (groupInfo.group->isWellFormed() && false) { + if (groupInfo.group->isWellFormed()) { const auto scaleGroup = *static_cast(groupInfo.group.get()); - std::cout << "They're well formed, will be ordered as expected\n"; weights = orderedScaleWeights(weights, scaleGroup); label.append( "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); } else { - std::cout << "NOT WELL FORMED!\n"; size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); weights = std::vector(weights.begin(), weights.begin() + nstore); label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + " elements of weights vector, unordered"); } - // TODO: Handle storeAllWeights and !isWellFormed - } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && - groupInfo.group->isWellFormed()) { + } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights) { // && groupInfo.group->isWellFormed() const auto psGroup = *static_cast(groupInfo.group.get()); weights = preferredPSweights(weights, psGroup); label.append( diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 6dd029a5fdbd0..4adb3a7a41d5f 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -15,7 +15,7 @@ lheWeights = cms.EDProducer("LHEWeightProductProducer", lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]), failIfInvalidXML = cms.untracked.bool(True), - + guessPSWeightIdx = cms.untracked.bool(True) #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) ) ''' diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index adecc90835571..546c158cc24ae 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -1,48 +1,35 @@ #ifndef SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h #define SimDataFormats_GeneratorProducts_PartonShowerWeightGroupInfo_h -#include - #include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" namespace gen { enum class PSVarType { muR, cNS, con, def, red, alphaS, LAST }; enum class PSSplittingType { combined, g2gg, x2xg, g2qq, q2qg }; - typedef std::pair PSPair; - - struct PSPairHash { - std::size_t operator()(const PSPair &pair) const { - return static_cast(pair.first) * static_cast(PSVarType::LAST) + - static_cast(pair.second); - } - }; class PartonShowerWeightGroupInfo : public WeightGroupInfo { public: PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} - PartonShowerWeightGroupInfo(std::string header, std::string name) : WeightGroupInfo(header, name) { - weightType_ = WeightType::kPartonShowerWeights; - nameIsPythiaSyntax_ = false; - } + PartonShowerWeightGroupInfo(std::string header, std::string name); PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} - PartonShowerWeightGroupInfo() : PartonShowerWeightGroupInfo("") {} PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } - ~PartonShowerWeightGroupInfo() override {} + virtual ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); - PartonShowerWeightGroupInfo *clone() const override; + virtual PartonShowerWeightGroupInfo *clone() const override; void setNameIsPythiaSyntax(bool isPythiaSyntax) { nameIsPythiaSyntax_ = isPythiaSyntax; } bool nameIsPythiaSyntax() const { return nameIsPythiaSyntax_; } int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; std::string variationName(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; int variationIndex(bool isISR, bool isUp, PSVarType variationType) const; - static void setGuessPSWeightIdx(bool guessPSWeightIdx) { guessPSWeightIdx_ = guessPSWeightIdx_; } + static void setGuessPSWeightIdx(bool guessPSWeightIdx) { guessPSWeightIdx_ = guessPSWeightIdx; } int psWeightIdxGuess(const std::string &varName) const; + void printVariables() const; private: bool nameIsPythiaSyntax_ = false; static inline bool guessPSWeightIdx_ = false; - const std::vector expectedPythiaSyntax = { + const std::vector expectedOrderPythiaSyntax_ = { "fsr:murfac=0.707", "fsr:murfac=1.414", "fsr:murfac=0.5", "fsr:murfac=2.0", "fsr:murfac=0.25", "fsr:murfac=4.0", "fsr:g2gg:murfac=0.5", "fsr:g2gg:murfac=2.0", "fsr:g2qq:murfac=0.5", "fsr:g2qq:murfac=2.0", "fsr:q2qg:murfac=0.5", "fsr:q2qg:murfac=2.0", @@ -55,7 +42,7 @@ namespace gen { "isr:g2gg:cns=-2.0", "isr:g2gg:cns=2.0", "isr:g2qq:cns=-2.0", "isr:g2qq:cns=2.0", "isr:q2qg:cns=-2.0", "isr:q2qg:cns=2.0", "isr:x2xg:cns=-2.0", "isr:x2xg:cns=2.0", }; - const std::vector expectedOrder = { + const std::vector expectedOrder_ = { "isrRedHi", "fsrRedHi", "isrRedLo", "fsrRedLo", "isrDefHi", "fsrDefHi", "isrDefLo", "fsrDefLo", "isrConHi", "fsrConHi", "isrConLo", "fsrConLo", "fsr_G2GG_muR_dn", "fsr_G2GG_muR_up", "fsr_G2QQ_muR_dn", diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index e9058546d584c..4e239018ab629 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -46,45 +46,46 @@ namespace gen { : isWellFormed_(false), headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header) : isWellFormed_(false), headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(const WeightGroupInfo& other) { copy(other); } - WeightGroupInfo& operator=(const WeightGroupInfo& other) { - copy(other); - return *this; - } - virtual ~WeightGroupInfo(){}; - void copy(const WeightGroupInfo& other); - virtual WeightGroupInfo* clone() const; - WeightMetaInfo weightMetaInfo(int weightEntry) const; - WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; - int weightVectorEntry(std::string& wgtId) const; - bool containsWeight(std::string& wgtId, int weightEntry) const; - int weightVectorEntry(std::string& wgtId, int weightEntry) const; - void addContainedId(int weightEntry, std::string id, std::string label); - std::vector containedIds() const; - bool indexInRange(int index) const; + WeightGroupInfo(const WeightGroupInfo& other) { + copy(other); } + WeightGroupInfo& operator=(const WeightGroupInfo& other) { + copy(other); + return *this; + } + virtual ~WeightGroupInfo(){}; + void copy(const WeightGroupInfo& other); + virtual WeightGroupInfo* clone() const; + WeightMetaInfo weightMetaInfo(int weightEntry) const; + WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId) const; + bool containsWeight(std::string& wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId, int weightEntry) const; + void addContainedId(int weightEntry, std::string id, std::string label); + std::vector containedIds() const; + bool indexInRange(int index) const; - void setName(std::string name) { name_ = name; } - void setDescription(std::string description) { description_ = description; } - void appendDescription(std::string description) { description_ += description; } - void setHeaderEntry(std::string header) { headerEntry_ = header; } - void setWeightType(WeightType type) { weightType_ = type; } - void setFirstId(int firstId) { firstId_ = firstId; } - void setLastId(int lastId) { lastId_ = lastId; } - // Call before doing lots of searches by label - void cacheWeightIndicesByLabel(); + void setName(std::string name) { name_ = name; } + void setDescription(std::string description) { description_ = description; } + void appendDescription(std::string description) { description_ += description; } + void setHeaderEntry(std::string header) { headerEntry_ = header; } + void setWeightType(WeightType type) { weightType_ = type; } + void setFirstId(int firstId) { firstId_ = firstId; } + void setLastId(int lastId) { lastId_ = lastId; } + // Call before doing lots of searches by label + void cacheWeightIndicesByLabel(); - std::string name() const { return name_; } - std::string description() const { return description_; } - std::string headerEntry() const { return headerEntry_; } - WeightType weightType() const { return weightType_; } - std::vector idsContained() const { return idsContained_; } - size_t nIdsContained() const { return idsContained_.size(); } - int firstId() const { return firstId_; } - int lastId() const { return lastId_; } - // Store whether the group was fully parsed succesfully - void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } - bool isWellFormed() const { return isWellFormed_; } - int weightIndexFromLabel(std::string weightLabel) const; + std::string name() const { return name_; } + std::string description() const { return description_; } + std::string headerEntry() const { return headerEntry_; } + WeightType weightType() const { return weightType_; } + std::vector idsContained() const { return idsContained_; } + size_t nIdsContained() const { return idsContained_.size(); } + int firstId() const { return firstId_; } + int lastId() const { return lastId_; } + // Store whether the group was fully parsed succesfully + void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } + bool isWellFormed() const { return isWellFormed_; } + int weightIndexFromLabel(std::string weightLabel) const; std::vector weightLabels() const; protected: diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 989b1237ae2fa..eba4d4571ce26 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -30,7 +30,6 @@ namespace gen { // Guess PS idx if not in label list if (wgtIdx == -1 && guessPSWeightIdx_) wgtIdx = psWeightIdxGuess(varName); - return wgtIdx; } @@ -96,15 +95,27 @@ namespace gen { int PartonShowerWeightGroupInfo::psWeightIdxGuess(const std::string& varName) const { int wgtIdx; if (nameIsPythiaSyntax_) { - auto wgtIter = std::find(expectedPythiaSyntax.begin(), expectedPythiaSyntax.end(), varName); - wgtIdx = wgtIter - expectedPythiaSyntax.begin() + 2; + auto wgtIter = std::find(expectedOrderPythiaSyntax_.begin(), expectedOrderPythiaSyntax_.end(), varName); + wgtIdx = wgtIter - expectedOrderPythiaSyntax_.begin() + 2; } else { - auto wgtIter = std::find(expectedOrder.begin(), expectedOrder.end(), varName); - wgtIdx = wgtIter - expectedOrder.begin() + 2; + auto wgtIter = std::find(expectedOrder_.begin(), expectedOrder_.end(), varName); + wgtIdx = wgtIter - expectedOrder_.begin() + 2; } if (wgtIdx >= (int)containedIds().size()) wgtIdx = -1; return wgtIdx; } + void PartonShowerWeightGroupInfo::printVariables() const { + const auto& variations = (nameIsPythiaSyntax_) ? expectedOrderPythiaSyntax_ : expectedOrder_; + for (auto varName: variations) { + int wgtIdx = weightIndexFromLabel(varName); + // Guess PS idx if not in label list + if (wgtIdx == -1 && guessPSWeightIdx_) + wgtIdx = psWeightIdxGuess(varName); + if (wgtIdx != -1) + std::cout << varName << " : " << wgtIdx << std::endl; + } + } + } // namespace gen From 8f74a2c0642870ca8f74f1697941b21d160b1e71 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 12 Nov 2020 21:20:46 +0100 Subject: [PATCH 171/186] Revert accidental changes --- .../Applications/python/ConfigBuilder.py | 2 +- GeneratorInterface/Core/BuildFile.xml | 24 +- GeneratorInterface/Core/files.txt | 72 ---- GeneratorInterface/Core/plugins/BuildFile.xml | 26 +- .../Core/plugins/ExternalGeneratorFilter.cc | 1 - .../LHEInterface/plugins/BuildFile.xml | 14 +- .../plugins/ExternalLHEProducer.cc | 354 ++++++++++-------- .../LHEInterface/plugins/LHESource.cc | 5 +- .../LHEInterface/plugins/LHESource.h | 1 - .../LHEInterface/test/test_Weights_cfg.py | 85 ----- PhysicsTools/NanoAOD/BuildFile.xml | 11 +- .../NanoAOD/python/genWeightsTable_cfi.py | 12 +- PhysicsTools/NanoAOD/python/nanogen_cff.py | 185 +++++---- PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py | 169 --------- .../GeneratorProducts/BuildFile.xml | 13 +- lhe_test.C | 57 --- 16 files changed, 345 insertions(+), 686 deletions(-) delete mode 100644 GeneratorInterface/Core/files.txt delete mode 100644 GeneratorInterface/LHEInterface/test/test_Weights_cfg.py delete mode 100644 PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py delete mode 100644 lhe_test.C diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index c8458b7fed8dc..672e4fef0d37a 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -988,7 +988,7 @@ def define_Configs(self): self.PATDefaultSeq='miniAOD' self.PATGENDefaultSeq='miniGEN' #TODO: Check based of file input - self.NANOGENDefaultSeq='nanogenSequence' if any([x in self.stepMap for x in ['LHE', 'GEN', 'AOD']]) else 'nanogenMiniSequence' + self.NANOGENDefaultSeq='nanogenSequence' self.NANODefaultSeq='nanoSequence' self.EVTCONTDefaultCFF="Configuration/EventContent/EventContent_cff" diff --git a/GeneratorInterface/Core/BuildFile.xml b/GeneratorInterface/Core/BuildFile.xml index 8849e7f0e31a9..eb5953775844c 100644 --- a/GeneratorInterface/Core/BuildFile.xml +++ b/GeneratorInterface/Core/BuildFile.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/GeneratorInterface/Core/files.txt b/GeneratorInterface/Core/files.txt deleted file mode 100644 index cb8a796b4f0e1..0000000000000 --- a/GeneratorInterface/Core/files.txt +++ /dev/null @@ -1,72 +0,0 @@ -M Configuration/Applications/python/ConfigBuilder.py -M DataFormats/NanoAOD/src/classes_def.xml -M GeneratorInterface/Core/BuildFile.xml -A GeneratorInterface/Core/interface/GenWeightHelper.h -A GeneratorInterface/Core/interface/LHEWeightHelper.h -A GeneratorInterface/Core/interface/WeightHelper.h -M GeneratorInterface/Core/plugins/BuildFile.xml -A GeneratorInterface/Core/plugins/GenWeightProductProducer.cc -A GeneratorInterface/Core/plugins/LHEWeightProductProducer.cc -A GeneratorInterface/Core/src/GenWeightHelper.cc -A GeneratorInterface/Core/src/LHEWeightHelper.cc -A GeneratorInterface/Core/src/WeightHelper.cc -A GeneratorInterface/Core/test/dumpWeightInfo.py -A GeneratorInterface/Core/test/testGenWeightProducer_cfg.py -M GeneratorInterface/LHEInterface/plugins/BuildFile.xml -M GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc -M GeneratorInterface/LHEInterface/plugins/LHESource.cc -M GeneratorInterface/LHEInterface/plugins/LHESource.h -A GeneratorInterface/LHEInterface/test/test_Weights_cfg.py -M GeneratorInterface/PhotosInterface/plugins/PhotosppInterface.cc -M GeneratorInterface/PhotosInterface/test/DYphotospp_Tune4C_13TeV_pythia8.py -M PhysicsTools/NanoAOD/BuildFile.xml -M PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc -A PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc -M PhysicsTools/NanoAOD/plugins/NanoAODOutputModule.cc -M PhysicsTools/NanoAOD/plugins/TableOutputBranches.cc -M PhysicsTools/NanoAOD/plugins/TableOutputBranches.h -M PhysicsTools/NanoAOD/python/NanoAODEDMEventContent_cff.py -A PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py -M PhysicsTools/NanoAOD/python/nano_cff.py -A PhysicsTools/NanoAOD/python/nanogen_cff.py -A PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py -A SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h -A SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h -A SimDataFormats/GeneratorProducts/interface/MEParamWeightGroupInfo.h -A SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h -A SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h -A SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h -A SimDataFormats/GeneratorProducts/interface/UnknownWeightGroupInfo.h -A SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h -A SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc -A SimDataFormats/GeneratorProducts/src/MEParamWeightGroupInfo.cc -A SimDataFormats/GeneratorProducts/src/PartonShowerWeights.cc -A SimDataFormats/GeneratorProducts/src/PdfWeightGroupInfo.cc -A SimDataFormats/GeneratorProducts/src/ScaleWeightGroupInfo.cc -A SimDataFormats/GeneratorProducts/src/UnknownWeightGroupInfo.cc -A SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc -M SimDataFormats/GeneratorProducts/src/classes.h -M SimDataFormats/GeneratorProducts/src/classes_def.xml -A Test/Test/BuildFile.xml -A Test/Test/interface/test.h -A Test/Test/src/classes.h -A Test/Test/src/classes_def.xml -A Test/Test/src/test.cc -A lhe_test.C -A testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt -A testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt -A testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt -A testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt -A testFiles/VVV_2017_weight_info.txt -A testFiles/W1jet_260_simplescale_weight_info.txt -A testFiles/W1jet_260_weight_info.txt -A testFiles/WJ_MiNNLO_weightinfo.txt -A testFiles/WJ_NNLOPS_weightinfo.txt -A testFiles/WZVBS_2017_weightInfo.txt -A testFiles/WZVBS_private_weightInfo.txt -A testFiles/ZJ_MiNNLO_weightinfo.txt -A testFiles/ZMiNNLO.txt -A testFiles/ZZTo4L_powheg_2016_weightInfo.txt -A testFiles/ZZTo4L_powheg_2017_weightInfo.txt -A testFiles/overview.txt -A testFiles/susyweights.txt diff --git a/GeneratorInterface/Core/plugins/BuildFile.xml b/GeneratorInterface/Core/plugins/BuildFile.xml index cfd9a43ca8f8a..a8c9a22737fc6 100644 --- a/GeneratorInterface/Core/plugins/BuildFile.xml +++ b/GeneratorInterface/Core/plugins/BuildFile.xml @@ -1,17 +1,11 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc b/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc index 4ac0ef07bab68..7d9d1e70d3a36 100644 --- a/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc +++ b/GeneratorInterface/Core/plugins/ExternalGeneratorFilter.cc @@ -13,7 +13,6 @@ #include "SimDataFormats/GeneratorProducts/interface/ExternalGeneratorEventInfo.h" #include "SimDataFormats/GeneratorProducts/interface/ExternalGeneratorLumiInfo.h" -#include "FWCore/SharedMemory/interface/BufferInfo.h" #include "FWCore/SharedMemory/interface/ReadBuffer.h" #include "FWCore/SharedMemory/interface/WriteBuffer.h" #include "FWCore/SharedMemory/interface/ControllerChannel.h" diff --git a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml index 59f4fdea19863..f43689ef148df 100644 --- a/GeneratorInterface/LHEInterface/plugins/BuildFile.xml +++ b/GeneratorInterface/LHEInterface/plugins/BuildFile.xml @@ -3,18 +3,24 @@ - - - - + + + + + + + + + + diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 86d8b1e60c8ec..546d04099c058 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -18,18 +18,19 @@ Description: [one line class summary] // system include files #include +#include +#include +#include +#include #include -#include #include -#include +#include #include -#include -#include +#include #include #include #include - -#include "boost/bind.hpp" +#include "tbb/task_arena.h" #include "boost/ptr_container/ptr_deque.hpp" @@ -42,19 +43,24 @@ Description: [one line class summary] #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Concurrency/interface/FunctorTask.h" + #include "FWCore/ParameterSet/interface/FileInPath.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEXMLStringProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "GeneratorInterface/LHEInterface/interface/LHERunInfo.h" #include "GeneratorInterface/LHEInterface/interface/LHEEvent.h" #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" + +#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" #include "GeneratorInterface/Core/interface/LHEWeightHelper.h" #include "FWCore/ServiceRegistry/interface/Service.h" @@ -66,11 +72,10 @@ Description: [one line class summary] // class declaration // -class ExternalLHEProducer +class ExternalLHEProducer : public edm::one::EDProducer { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); - ~ExternalLHEProducer() override; static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); @@ -81,40 +86,44 @@ class ExternalLHEProducer void beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) override; void preallocThreads(unsigned int) override; - int closeDescriptors(int preserve); - void executeScript(); - int findWeightGroup(std::string wgtId, int weightIndex, int previousGroupIndex); - std::unique_ptr readOutput(); + std::vector makeArgs(uint32_t nEvents, unsigned int nThreads, std::uint32_t seed) const; + int closeDescriptors(int preserve) const; + void executeScript(std::vector const& args, int id) const; void nextEvent(); // ----------member data --------------------------- std::string scriptName_; std::string outputFile_; - std::vector args_; + const std::vector args_; uint32_t npars_; uint32_t nEvents_; bool storeXML_; unsigned int nThreads_{1}; std::string outputContents_; + bool generateConcurrently_{false}; // Used only if nPartonMapping is in the configuration std::map> nPartonMapping_{}; std::unique_ptr reader_; gen::LHEWeightHelper weightHelper_; - std::shared_ptr runInfoLast; - std::shared_ptr runInfo; - std::shared_ptr partonLevel; - boost::ptr_deque runInfoProducts; + std::shared_ptr runInfoLast_; + std::shared_ptr runInfo_; + std::shared_ptr partonLevel_; + std::deque> runInfoProducts_; bool wasMerged; - class FileCloseSentry : private boost::noncopyable { + class FileCloseSentry { public: explicit FileCloseSentry(int fd) : fd_(fd){}; ~FileCloseSentry() { close(fd_); } + //Make this noncopyable + FileCloseSentry(const FileCloseSentry&) = delete; + FileCloseSentry& operator=(const FileCloseSentry&) = delete; + private: int fd_; }; @@ -129,7 +138,8 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) args_(iConfig.getParameter>("args")), npars_(iConfig.getParameter("numberOfParameters")), nEvents_(iConfig.getUntrackedParameter("nEvents")), - storeXML_(iConfig.getUntrackedParameter("storeXML")) { + storeXML_(iConfig.getUntrackedParameter("storeXML")), + generateConcurrently_(iConfig.getUntrackedParameter("generateConcurrently")) { if (npars_ != args_.size()) throw cms::Exception("ExternalLHEProducer") << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_; @@ -157,15 +167,13 @@ ExternalLHEProducer::ExternalLHEProducer(const edm::ParameterSet& iConfig) produces("LHEScriptOutput"); - produces(); produces(); + produces(); produces(); produces(); produces(); } -ExternalLHEProducer::~ExternalLHEProducer() {} - // // member functions // @@ -176,7 +184,7 @@ void ExternalLHEProducer::preallocThreads(unsigned int iThreads) { nThreads_ = i // ------------ method called to produce the data ------------ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { nextEvent(); - if (!partonLevel) { + if (!partonLevel_) { throw edm::Exception(edm::errors::EventGenerationFailure) << "No lhe event found in ExternalLHEProducer::produce(). " << "The likely cause is that the lhe file contains fewer events than were requested, which is possible " @@ -184,25 +192,24 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe } std::unique_ptr product( - new LHEEventProduct(*partonLevel->getHEPEUP(), partonLevel->originalXWGTUP())); - if (partonLevel->getPDF()) { - product->setPDF(*partonLevel->getPDF()); + new LHEEventProduct(*partonLevel_->getHEPEUP(), partonLevel_->originalXWGTUP())); + if (partonLevel_->getPDF()) { + product->setPDF(*partonLevel_->getPDF()); } - std::for_each(partonLevel->weights().begin(), - partonLevel->weights().end(), - boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); + std::for_each(partonLevel_->weights().begin(), + partonLevel_->weights().end(), + std::bind(&LHEEventProduct::addWeight, product.get(), std::placeholders::_1)); - // Should also zero out the weights in the GenInfoProduct - auto weightProduct = weightHelper_.weightProduct(partonLevel->weights(), partonLevel->originalXWGTUP()); + auto weightProduct = weightHelper_.weightProduct(partonLevel_->weights(), partonLevel_->originalXWGTUP()); iEvent.put(std::move(weightProduct)); - product->setScales(partonLevel->scales()); + product->setScales(partonLevel_->scales()); if (nPartonMapping_.empty()) { - product->setNpLO(partonLevel->npLO()); - product->setNpNLO(partonLevel->npNLO()); + product->setNpLO(partonLevel_->npLO()); + product->setNpNLO(partonLevel_->npNLO()); } else { // overwrite npLO and npNLO values by user-specified mapping - unsigned processId(partonLevel->getHEPEUP()->IDPRUP); + unsigned processId(partonLevel_->getHEPEUP()->IDPRUP); unsigned order(0); unsigned np(0); try { @@ -211,7 +218,7 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe np = procDef.second; } catch (std::out_of_range&) { throw cms::Exception("ExternalLHEProducer") - << "Unexpected IDPRUP encountered: " << partonLevel->getHEPEUP()->IDPRUP; + << "Unexpected IDPRUP encountered: " << partonLevel_->getHEPEUP()->IDPRUP; } switch (order) { @@ -228,44 +235,40 @@ void ExternalLHEProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe } } - std::for_each(partonLevel->getComments().begin(), - partonLevel->getComments().end(), - boost::bind(&LHEEventProduct::addComment, product.get(), _1)); + std::for_each(partonLevel_->getComments().begin(), + partonLevel_->getComments().end(), + std::bind(&LHEEventProduct::addComment, product.get(), std::placeholders::_1)); iEvent.put(std::move(product)); - if (runInfo) { - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); - - if (!runInfoProducts.empty()) { - runInfoProducts.front().mergeProduct(*product); + if (runInfo_) { + std::unique_ptr product(new LHERunInfoProduct(*runInfo_->getHEPRUP())); + std::for_each(runInfo_->getHeaders().begin(), + runInfo_->getHeaders().end(), + std::bind(&LHERunInfoProduct::addHeader, product.get(), std::placeholders::_1)); + std::for_each(runInfo_->getComments().begin(), + runInfo_->getComments().end(), + std::bind(&LHERunInfoProduct::addComment, product.get(), std::placeholders::_1)); + + if (!runInfoProducts_.empty()) { + runInfoProducts_.front()->mergeProduct(*product); if (!wasMerged) { - runInfoProducts.pop_front(); - runInfoProducts.push_front(product.release()); + runInfoProducts_.pop_front(); + runInfoProducts_.emplace_front(product.release()); wasMerged = true; } } - runInfo.reset(); + runInfo_.reset(); } - partonLevel.reset(); + partonLevel_.reset(); return; } // ------------ method called when starting to processes a run ------------ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& es) { // pass the number of events as previous to last argument - std::ostringstream eventStream; - eventStream << nEvents_; - // args_.push_back(eventStream.str()); - args_.insert(args_.begin() + 1, eventStream.str()); // pass the random number generator seed as last argument @@ -277,24 +280,68 @@ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& "which is not present in the configuration file. You must add the service\n" "in the configuration file if you want to run ExternalLHEProducer"; } - std::ostringstream randomStream; - randomStream << rng->mySeed(); - args_.insert(args_.begin() + 2, randomStream.str()); - - args_.insert(args_.begin() + 3, std::to_string(nThreads_)); - for (unsigned int iArg = 0; iArg < args_.size(); iArg++) { - LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg]; + std::vector infiles; + auto const seed = rng->mySeed(); + if (generateConcurrently_) { + infiles.resize(nThreads_); + auto const nEventsAve = nEvents_ / nThreads_; + unsigned int const overflow = nThreads_ - (nEvents_ % nThreads_); + std::exception_ptr except; + std::atomic exceptSet{0}; + + tbb::this_task_arena::isolate([this, &except, &infiles, &exceptSet, nEventsAve, overflow, seed]() { + tbb::empty_task* waitTask = new (tbb::task::allocate_root()) tbb::empty_task; + waitTask->set_ref_count(1 + nThreads_); + + for (unsigned int t = 0; t < nThreads_; ++t) { + uint32_t nEvents = nEventsAve; + if (nEvents_ % nThreads_ != 0 and t >= overflow) { + nEvents += 1; + } + auto task = edm::make_functor_task(tbb::task::allocate_root(), + [t, this, &infiles, seed, nEvents, &except, &exceptSet, waitTask]() { + CMS_SA_ALLOW try { + using namespace std::filesystem; + using namespace std::string_literals; + auto out = path("thread"s + std::to_string(t)) / path(outputFile_); + infiles[t] = out.native(); + executeScript(makeArgs(nEvents, 1, seed + t), t); + } catch (...) { + char expected = 0; + if (exceptSet.compare_exchange_strong(expected, 1)) { + except = std::current_exception(); + exceptSet.store(2); + } + } + waitTask->decrement_ref_count(); + }); + tbb::task::spawn(*task); + } + waitTask->wait_for_all(); + tbb::task::destroy(*waitTask); + }); + if (exceptSet != 0) { + std::rethrow_exception(except); + } + } else { + infiles = std::vector(1, outputFile_); + executeScript(makeArgs(nEvents_, nThreads_, seed), 0); } - executeScript(); - //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory) std::unique_ptr p(new LHEXMLStringProduct); //store the XML file only if explictly requested if (storeXML_) { - std::ifstream instream(outputFile_); + std::string file; + if (generateConcurrently_) { + using namespace std::filesystem; + file = (path("thread0") / path(outputFile_)).native(); + } else { + file = outputFile_; + } + std::ifstream instream(file); if (!instream) { throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << "."; } @@ -309,65 +356,41 @@ void ExternalLHEProducer::beginRunProduce(edm::Run& run, edm::EventSetup const& // LHE C++ classes translation // (read back uncompressed file from disk in streaming mode again to save memory) - std::vector infiles(1, outputFile_); unsigned int skip = 0; reader_ = std::make_unique(infiles, skip); nextEvent(); - if (runInfoLast) { - runInfo = runInfoLast; - - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); - - // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); - wasMerged = false; - - run.put(std::move(product)); - - runInfo.reset(); - } - - nextEvent(); - if (runInfoLast) { - runInfo = runInfoLast; + if (runInfoLast_) { + runInfo_ = runInfoLast_; - std::unique_ptr product(new LHERunInfoProduct(*runInfo->getHEPRUP())); - std::for_each(runInfo->getHeaders().begin(), - runInfo->getHeaders().end(), - boost::bind(&LHERunInfoProduct::addHeader, product.get(), _1)); - std::for_each(runInfo->getComments().begin(), - runInfo->getComments().end(), - boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); + std::unique_ptr product(new LHERunInfoProduct(*runInfo_->getHEPRUP())); + std::for_each(runInfo_->getHeaders().begin(), + runInfo_->getHeaders().end(), + std::bind(&LHERunInfoProduct::addHeader, product.get(), std::placeholders::_1)); + std::for_each(runInfo_->getComments().begin(), + runInfo_->getComments().end(), + std::bind(&LHERunInfoProduct::addComment, product.get(), std::placeholders::_1)); // keep a copy around in case of merging - runInfoProducts.push_back(new LHERunInfoProduct(*product)); + runInfoProducts_.emplace_back(new LHERunInfoProduct(*product)); wasMerged = false; run.put(std::move(product)); - weightHelper_.setHeaderLines(runInfo->findHeader("initrwgt")); - weightHelper_.parseWeights(); - - runInfo.reset(); + runInfo_.reset(); } } // ------------ method called when ending the processing of a run ------------ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es) { - if (!runInfoProducts.empty()) { - std::unique_ptr product(runInfoProducts.pop_front().release()); + if (!runInfoProducts_.empty()) { + std::unique_ptr product(runInfoProducts_.front().release()); + runInfoProducts_.pop_front(); run.put(std::move(product)); } nextEvent(); - if (partonLevel) { + if (partonLevel_) { throw edm::Exception(edm::errors::EventGenerationFailure) << "Error in ExternalLHEProducer::endRunProduce(). " << "Event loop is over, but there are still lhe events to process." @@ -375,13 +398,46 @@ void ExternalLHEProducer::endRunProduce(edm::Run& run, edm::EventSetup const& es } reader_.reset(); + if (generateConcurrently_) { + for (unsigned int t = 0; t < nThreads_; ++t) { + using namespace std::filesystem; + using namespace std::string_literals; + auto out = path("thread"s + std::to_string(t)) / path(outputFile_); + if (unlink(out.c_str())) { + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << out + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } + } + } else { + if (unlink(outputFile_.c_str())) { + throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ + << " (errno=" << errno << ", " << strerror(errno) << ")."; + } + } +} + +std::vector ExternalLHEProducer::makeArgs(uint32_t nEvents, + unsigned int nThreads, + std::uint32_t seed) const { + std::vector args; + args.reserve(3 + args_.size()); + + args.push_back(args_.front()); + args.push_back(std::to_string(nEvents)); + + args.push_back(std::to_string(seed)); + + args.push_back(std::to_string(nThreads)); + std::copy(args_.begin() + 1, args_.end(), std::back_inserter(args)); - if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ - << " (errno=" << errno << ", " << strerror(errno) << ")."; + for (unsigned int iArg = 0; iArg < args.size(); iArg++) { + LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args[iArg]; } + + return args; } + void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { @@ -391,7 +447,7 @@ void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi } // ------------ Close all the open file descriptors ------------ -int ExternalLHEProducer::closeDescriptors(int preserve) { +int ExternalLHEProducer::closeDescriptors(int preserve) const { int maxfd = 1024; int fd; #ifdef __linux__ @@ -428,12 +484,11 @@ int ExternalLHEProducer::closeDescriptors(int preserve) { } // ------------ Execute the script associated with this producer ------------ -void ExternalLHEProducer::executeScript() { +void ExternalLHEProducer::executeScript(std::vector const& args, int id) const { // Fork a script, wait until it finishes. int rc = 0, rc2 = 0; int filedes[2], fd_flags; - unsigned int argc; if (pipe(filedes)) { throw cms::Exception("Unable to create a new pipe"); @@ -449,12 +504,12 @@ void ExternalLHEProducer::executeScript() { << "Failed to set pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")"; } - argc = 1 + args_.size(); + unsigned int argc = 1 + args.size(); // TODO: assert that we have a reasonable number of arguments char** argv = new char*[argc + 1]; argv[0] = strdup(scriptName_.c_str()); for (unsigned int i = 1; i < argc; i++) { - argv[i] = strdup(args_[i - 1].c_str()); + argv[i] = strdup(args[i - 1].c_str()); } argv[argc] = nullptr; @@ -462,6 +517,14 @@ void ExternalLHEProducer::executeScript() { if (pid == 0) { // The child process if (!(rc = closeDescriptors(filedes[1]))) { + if (generateConcurrently_) { + using namespace std::filesystem; + using namespace std::string_literals; + std::error_code ec; + auto newDir = path("thread"s + std::to_string(id)); + create_directory(newDir, ec); + current_path(newDir, ec); + } execvp(argv[0], argv); // If execv returns, we have an error. rc = errno; } @@ -471,7 +534,7 @@ void ExternalLHEProducer::executeScript() { } // Free the arg vector ASAP - for (unsigned int i = 0; i < args_.size() + 1; i++) { + for (unsigned int i = 0; i < args.size() + 1; i++) { free(argv[i]); } delete[] argv; @@ -516,36 +579,6 @@ void ExternalLHEProducer::executeScript() { } } -// ------------ Read the output script ------------ -#define BUFSIZE 4096 -std::unique_ptr ExternalLHEProducer::readOutput() { - int fd; - ssize_t n; - char buf[BUFSIZE]; - - if ((fd = open(outputFile_.c_str(), O_RDONLY)) == -1) { - throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ - << " (errno=" << errno << ", " << strerror(errno) << ")."; - } - - std::stringstream ss; - while ((n = read(fd, buf, BUFSIZE)) > 0 || (n == -1 && errno == EINTR)) { - if (n > 0) - ss.write(buf, n); - } - if (n == -1) { - throw cms::Exception("OutputOpenError") << "Unable to read from script output file " << outputFile_ - << " (errno=" << errno << ", " << strerror(errno) << ")."; - } - - if (unlink(outputFile_.c_str())) { - throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ - << " (errno=" << errno << ", " << strerror(errno) << ")."; - } - - return std::make_unique(ss.str()); -} - // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void ExternalLHEProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { //The following says we do not know what parameters are allowed so do no validation @@ -560,6 +593,8 @@ void ExternalLHEProducer::fillDescriptions(edm::ConfigurationDescriptions& descr desc.add("numberOfParameters"); desc.addUntracked("nEvents"); desc.addUntracked("storeXML", false); + desc.addUntracked("generateConcurrently", false) + ->setComment("If true, run the script concurrently in separate processes."); edm::ParameterSetDescription nPartonMappingDesc; nPartonMappingDesc.add("idprup"); @@ -571,20 +606,29 @@ void ExternalLHEProducer::fillDescriptions(edm::ConfigurationDescriptions& descr } void ExternalLHEProducer::nextEvent() { - if (partonLevel) + if (partonLevel_) return; if (not reader_) { return; } - partonLevel = reader_->next(); - if (!partonLevel) + + partonLevel_ = reader_->next(); + if (!partonLevel_) { + //see if we have another file to read; + bool newFileOpened; + do { + newFileOpened = false; + partonLevel_ = reader_->next(&newFileOpened); + } while (newFileOpened && !partonLevel_); + } + if (!partonLevel_) return; - std::shared_ptr runInfoThis = partonLevel->getRunInfo(); - if (runInfoThis != runInfoLast) { - runInfo = runInfoThis; - runInfoLast = runInfoThis; + std::shared_ptr runInfoThis = partonLevel_->getRunInfo(); + if (runInfoThis != runInfoLast_) { + runInfo_ = runInfoThis; + runInfoLast_ = runInfoThis; } } diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.cc b/GeneratorInterface/LHEInterface/plugins/LHESource.cc index b7c8e40968afe..fa3362b081866 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.cc +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.cc @@ -27,7 +27,6 @@ #include "GeneratorInterface/LHEInterface/interface/LHEReader.h" #include "LHESource.h" -#include using namespace lhef; @@ -146,13 +145,13 @@ void LHESource::readEvent_(edm::EventPrincipal& eventPrincipal) { } std::for_each(partonLevel_->weights().begin(), partonLevel_->weights().end(), - boost::bind(&LHEEventProduct::addWeight, product.get(), _1)); + std::bind(&LHEEventProduct::addWeight, product.get(), std::placeholders::_1)); product->setScales(partonLevel_->scales()); product->setNpLO(partonLevel_->npLO()); product->setNpNLO(partonLevel_->npNLO()); std::for_each(partonLevel_->getComments().begin(), partonLevel_->getComments().end(), - boost::bind(&LHEEventProduct::addComment, product.get(), _1)); + std::bind(&LHEEventProduct::addComment, product.get(), std::placeholders::_1)); std::unique_ptr edp(new edm::Wrapper(std::move(product))); eventPrincipal.put(lheProvenanceHelper_.eventProductBranchDescription_, diff --git a/GeneratorInterface/LHEInterface/plugins/LHESource.h b/GeneratorInterface/LHEInterface/plugins/LHESource.h index 5d70b7b5e404a..05208fdf03a6c 100644 --- a/GeneratorInterface/LHEInterface/plugins/LHESource.h +++ b/GeneratorInterface/LHEInterface/plugins/LHESource.h @@ -50,7 +50,6 @@ class LHESource : public edm::ProducerSourceFromFiles { void nextEvent(); void putRunInfoProduct(edm::RunPrincipal&); - void putWeightInfoProduct(edm::RunPrincipal&); void fillRunInfoProduct(lhef::LHERunInfo const&, LHERunInfoProduct&); std::unique_ptr reader_; diff --git a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py b/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py deleted file mode 100644 index b70c90b3ca2d0..0000000000000 --- a/GeneratorInterface/LHEInterface/test/test_Weights_cfg.py +++ /dev/null @@ -1,85 +0,0 @@ -# Auto generated configuration file -# using: -# Revision: 1.19 -# Source: /local/reps/CMSSW/CMSSW/Configuration/Applications/python/ConfigBuilder.py,v -# with command line options: Configuration/GenProduction/python/HIG-RunIIFall18wmLHEGS-00509-fragment.py --fileout file:HIG-RunIIFall18wmLHEGS-00509.root --mc --eventcontent LHE --datatier LHE --conditions 102X_upgrade2018_realistic_v11 --step LHE --python_filename HIG-RunIIFall18wmLHEGS-00509_1_cfg.py --no_exec -import FWCore.ParameterSet.Config as cms - - - -process = cms.Process('LHE') - -# import of standard configurations -process.load('Configuration.StandardSequences.Services_cff') -process.load('FWCore.MessageService.MessageLogger_cfi') -process.load('Configuration.EventContent.EventContent_cff') -process.load('Configuration.StandardSequences.EndOfProcess_cff') - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(10) -) - -# Input source -process.source = cms.Source("EmptySource") - -process.options = cms.untracked.PSet( - -) - -# Production Info -process.configurationMetadata = cms.untracked.PSet( - annotation = cms.untracked.string('Configuration/GenProduction/python/HIG-RunIIFall18wmLHEGS-00509-fragment.py nevts:10'), - name = cms.untracked.string('Applications'), - version = cms.untracked.string('$Revision: 1.19 $') -) - -# Output definition -process.LHEoutput = cms.OutputModule("PoolOutputModule", - dataset = cms.untracked.PSet( - dataTier = cms.untracked.string('LHE'), - filterName = cms.untracked.string('') - ), - fileName = cms.untracked.string('file:HIG-RunIIFall18wmLHEGS-00509.root'), - #outputCommands = process.LHEEventContent.outputCommands, - outputCommands = cms.untracked.vstring('keep *', - 'drop ME*_MEtoEDM*_*_*'), - splitLevel = cms.untracked.int32(0) -) - -# Additional output definition - -process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", - #args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), - args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/VVV_aQGCfs_dummy.tgz'), - nEvents = cms.untracked.uint32(10), - numberOfParameters = cms.uint32(1), - outputFile = cms.string('cmsgrid_final.lhe'), - scriptName = cms.FileInPath('GeneratorInterface/LHEInterface/data/run_generic_tarball_cvmfs.sh') -) - -# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/DarkMatter_MonoZPrime_V_Mx50_Mv500_gDMgQ1_LO_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), -# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/WLLJJ_WToLNu_EWK_4F_MLL-60_slc6_amd64_gcc481_CMSSW_7_1_30_tarball_Dummy.tgz'), -# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_4L_NNPDF30_13TeV_tarballDummy.tar.gz'), -# args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/ZZ_slc6_amd64_gcc630_CMSSW_9_3_0_ZZTo4L2017_pdf306000Dummy.tgz'), - - - -# Path and EndPath definitions -process.lhe_step = cms.Path(process.externalLHEProducer) -process.endjob_step = cms.EndPath(process.endOfProcess) -process.LHEoutput_step = cms.EndPath(process.LHEoutput) - -# Schedule definition -process.schedule = cms.Schedule(process.lhe_step,process.endjob_step,process.LHEoutput_step) -from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask -associatePatAlgosToolsTask(process) - - - - -# Customisation from command line - -# Add early deletion of temporary data products to reduce peak memory need -from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete -process = customiseEarlyDelete(process) -# End adding early deletion diff --git a/PhysicsTools/NanoAOD/BuildFile.xml b/PhysicsTools/NanoAOD/BuildFile.xml index 23857d65a270b..6cc75a882ba98 100644 --- a/PhysicsTools/NanoAOD/BuildFile.xml +++ b/PhysicsTools/NanoAOD/BuildFile.xml @@ -1,11 +1,6 @@ - - - - - - - - + + + diff --git a/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py index 15c2ea05d814b..e226f955e3f90 100644 --- a/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py +++ b/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py @@ -5,16 +5,24 @@ genLumiInfoHeader = cms.InputTag("generator"), lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html - cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), cms.PSet( name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000) ), + cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_hessian"), lhaid = cms.uint32(304400) ), + cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc_hessian_pdfas"), lhaid = cms.uint32(325300) ), + cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc"), lhaid = cms.uint32(316200) ), + cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4_mc_hessian"), lhaid = cms.uint32(325500) ), + cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4"), lhaid = cms.uint32(320900) ), cms.PSet( name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) + cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), + cms.PSet( name = cms.string("PDF4LHC15_nlo_30_pdfas"), lhaid = cms.uint32(90400) ), + cms.PSet( name = cms.string("PDF4LHC15_nlo_30"), lhaid = cms.uint32(90900) ), ), namedWeightIDs = cms.vstring(), namedWeightLabels = cms.vstring(), lheWeightPrecision = cms.int32(14), - maxPdfWeights = cms.uint32(150), + maxPdfWeights = cms.uint32(150), + keepAllPSWeights = cms.bool(False), debug = cms.untracked.bool(False), ) diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index b0a227c54752d..88878addd4506 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -1,60 +1,20 @@ from PhysicsTools.NanoAOD.taus_cff import * from PhysicsTools.NanoAOD.jets_cff import * -from PhysicsTools.NanoAOD.globals_cff import * +from PhysicsTools.NanoAOD.globals_cff import genTable +from PhysicsTools.NanoAOD.met_cff import metMCTable from PhysicsTools.NanoAOD.genparticles_cff import * from PhysicsTools.NanoAOD.particlelevel_cff import * from PhysicsTools.NanoAOD.lheInfoTable_cfi import * from PhysicsTools.NanoAOD.genWeightsTable_cfi import * -from PhysicsTools.NanoAOD.lheWeightsTable_cfi import * +from PhysicsTools.NanoAOD.common_cff import Var,CandVars -genWeights = cms.EDProducer("GenWeightProductProducer", - genInfo = cms.InputTag("generator"), - genLumiInfoHeader = cms.InputTag("generator")) - -lheWeights = cms.EDProducer("LHEWeightProductProducer", - lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]), - failIfInvalidXML = cms.untracked.bool(True) - #lheWeightSourceLabels = cms.vstring(["externalLHEProducer", "source"]) -) -''' -lheWeightsTable = cms.EDProducer( - "LHEWeightsTableProducer", - lheWeights = cms.VInputTag(["externalLHEProducer", "source", "lheWeights"]), - lheWeightPrecision = cms.int32(14), - genWeights = cms.InputTag("genWeights"), - # Warning: you can use a full string, but only the first character is read. - # Note also that the capitalization is important! For example, 'parton shower' - # must be lower case and 'PDF' must be capital - weightgroups = cms.vstring(['scale', 'PDF', 'matrix element', 'unknown', 'parton shower']), - # Max number of groups to store for each type above, -1 ==> store all found - maxGroupsPerType = cms.vint32([-1, -1, -1, -1, 1]), - # If empty or not specified, no critieria is applied to filter on LHAPDF IDs - #pdfIds = cms.untracked.vint32([91400, 306000, 260000]), - #unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), - #unknownOnlyIfAllEmpty = cms.untracked.bool(False), -) -''' nanoMetadata = cms.EDProducer("UniqueStringProducer", strings = cms.PSet( tag = cms.string("untagged"), ) ) -metGenTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("genMetTrue"), - name = cms.string("GenMET"), - doc = cms.string("Gen MET"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var("pt", float, doc="pt", precision=10), - phi = Var("phi", float, doc="phi", precision=10), - ), -) - nanogenSequence = cms.Sequence( - genWeights+ - lheWeights+ nanoMetadata+ particleLevel+ genJetTable+ @@ -69,84 +29,123 @@ genVisTaus+ genVisTauTable+ genTable+ - #genWeightsTable+ - lheWeightsTable+ genParticleTables+ tautagger+ rivetProducerHTXS+ particleLevelTables+ - metGenTable+ + metMCTable+ + genWeightsTable+ lheInfoTable ) -nanogenMiniSequence = cms.Sequence( - genWeights+ - lheWeights+ - nanoMetadata+ - mergedGenParticles+ - genParticles2HepMC+ - particleLevel+ - genJetTable+ - patJetPartons+ - genJetFlavourAssociation+ - genJetFlavourTable+ - genJetAK8Table+ - genJetAK8FlavourAssociation+ - genJetAK8FlavourTable+ - tauGenJets+ - tauGenJetsSelectorAllHadrons+ - genVisTaus+ - genVisTauTable+ - genTable+ - #genWeightsTable+ - lheWeightsTable+ - genParticleTables+ - tautagger+ - genParticles2HepMCHiggsVtx+ - rivetProducerHTXS+ - particleLevelTables+ - metGenTable+ - lheInfoTable -) +def nanoGenCommonCustomize(process): + process.rivetMetTable.extension = False + process.lheInfoTable.storeLHEParticles = True + process.lheInfoTable.precision = 14 + process.genWeightsTable.keepAllPSWeights = True + process.genJetFlavourAssociation.jets = process.genJetTable.src + process.genJetFlavourTable.src = process.genJetTable.src + process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src + process.genJetAK8FlavourTable.src = process.genJetAK8Table.src + process.particleLevel.particleMaxEta = 999. + process.particleLevel.lepMinPt = 0. + process.particleLevel.lepMaxEta = 999. + process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" + # Same as default RECO + setGenPtPrecision(process, CandVars.pt.precision) + setGenEtaPrecision(process, CandVars.eta.precision) + setGenPhiPrecision(process, CandVars.phi.precision) def customizeNanoGENFromMini(process): - # Why is this false by default?! - process.lheInfoTable.storeLHEParticles = True + process.nanoAOD_step.insert(0, process.genParticles2HepMCHiggsVtx) + process.nanoAOD_step.insert(0, process.genParticles2HepMC) + process.nanoAOD_step.insert(0, process.mergedGenParticles) + + process.metMCTable.src = "slimmedMETs" + process.metMCTable.variables.pt = Var("genMET.pt", float, doc="pt") + process.metMCTable.variables.phi = Var("genMET.phi", float, doc="phi") + process.metMCTable.variables.phi.precision = CandVars.phi.precision + + process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared" process.genParticleTable.src = "prunedGenParticles" process.patJetPartons.particles = "prunedGenParticles" process.particleLevel.src = "genParticles2HepMC:unsmeared" - process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared" process.genJetTable.src = "slimmedGenJets" - process.genJetFlavourAssociation.jets = process.genJetTable.src - process.genJetFlavourTable.src = process.genJetTable.src - process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" process.genJetAK8Table.src = "slimmedGenJetsAK8" - process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src - process.genJetAK8FlavourTable.src = process.genJetAK8Table.src process.tauGenJets.GenParticles = "prunedGenParticles" process.genVisTaus.srcGenParticles = "prunedGenParticles" + nanoGenCommonCustomize(process) return process def customizeNanoGEN(process): - process.lheInfoTable.storeLHEParticles = True + process.metMCTable.src = "genMetTrue" + process.metMCTable.variables = cms.PSet(PTVars) + + process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" process.genParticleTable.src = "genParticles" process.patJetPartons.particles = "genParticles" process.particleLevel.src = "generatorSmeared" - process.particleLevel.particleMaxEta = 999. - process.particleLevel.lepMinPt = 0. - process.particleLevel.lepMaxEta = 999. - process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" process.genJetTable.src = "ak4GenJets" - process.genJetFlavourAssociation.jets = process.genJetTable.src - process.genJetFlavourTable.src = process.genJetTable.src - process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" process.genJetAK8Table.src = "ak8GenJets" - process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src - process.genJetAK8FlavourTable.src = process.genJetAK8Table.src process.tauGenJets.GenParticles = "genParticles" process.genVisTaus.srcGenParticles = "genParticles" + # In case customizeNanoGENFromMini has already been called + process.nanoAOD_step.remove(process.genParticles2HepMCHiggsVtx) + process.nanoAOD_step.remove(process.genParticles2HepMC) + process.nanoAOD_step.remove(process.mergedGenParticles) + nanoGenCommonCustomize(process) + return process + +# Prune gen particles with tight conditions applied in usual NanoAOD +def pruneGenParticlesNano(process): + process.finalGenParticles = finalGenParticles.clone() + process.genParticleTable.src = "prunedGenParticles" + process.patJetPartons.particles = "prunedGenParticles" + process.nanoAOD_step.insert(0, process.finalGenParticles) + return process + +# Prune gen particles with conditions applied in usual MiniAOD +def pruneGenParticlesMini(process): + from PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi import prunedGenParticles + process.prunedGenParticles = prunedGenParticles.clone() + if process.nanoAOD_step.contains(process.nanogenMiniSequence): + raise ValueError("Applying the MiniAOD genParticle pruner to MiniAOD is redunant. " \ + "Use a different customization.") + process.genParticleTable.src = "prunedGenParticles" + process.patJetPartons.particles = "prunedGenParticles" + process.nanoAOD_step.insert(0, process.prunedGenParticles) + return process + +def setGenFullPrecision(process): + setGenPtPrecision(process, 23) + setGenEtaPrecision(process, 23) + setGenPhiPrecision(process, 23) + +def setGenPtPrecision(process, precision): + process.genParticleTable.variables.pt.precision = precision + process.genJetTable.variables.pt.precision = precision + process.metMCTable.variables.pt.precision = precision + return process + +def setGenEtaPrecision(process, precision): + process.genParticleTable.variables.eta.precision = precision + process.genJetTable.variables.eta.precision = precision + return process + +def setGenPhiPrecision(process, precision): + process.genParticleTable.variables.phi.precision = precision + process.genJetTable.variables.phi.precision = precision + process.metMCTable.variables.phi.precision = precision + return process + +def setLHEFullPrecision(process): + process.lheInfoTable.precision = 23 + return process + +def setGenWeightsFullPrecision(process): + process.genWeightsTable.lheWeightPrecision = 23 return process diff --git a/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py b/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py deleted file mode 100644 index bf6124b75a66f..0000000000000 --- a/PhysicsTools/NanoAOD/test/nanoGen_test_cfg.py +++ /dev/null @@ -1,169 +0,0 @@ -import FWCore.ParameterSet.Config as cms - - - -process = cms.Process('GEN') - -# import of standard configurations -process.load('Configuration.StandardSequences.Services_cff') -process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') -process.load('FWCore.MessageService.MessageLogger_cfi') -process.load('Configuration.EventContent.EventContent_cff') -process.load('SimGeneral.MixingModule.mixNoPU_cfi') -process.load('Configuration.StandardSequences.GeometryRecoDB_cff') -process.load('Configuration.StandardSequences.Generator_cff') -process.load('IOMC.EventVertexGenerators.VtxSmearedRealistic50ns13TeVCollision_cfi') -process.load('GeneratorInterface.Core.genFilterSummary_cff') -process.load('PhysicsTools.NanoAOD.nanogen_cff') -process.load('Configuration.StandardSequences.EndOfProcess_cff') -process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(10), - output = cms.optional.untracked.allowed(cms.int32,cms.PSet) -) - -# Input source -process.source = cms.Source("EmptySource") - -process.options = cms.untracked.PSet( - FailPath = cms.untracked.vstring(), - IgnoreCompletely = cms.untracked.vstring(), - Rethrow = cms.untracked.vstring(), - SkipEvent = cms.untracked.vstring(), - allowUnscheduled = cms.obsolete.untracked.bool, - canDeleteEarly = cms.untracked.vstring(), - emptyRunLumiMode = cms.obsolete.untracked.string, - eventSetup = cms.untracked.PSet( - forceNumberOfConcurrentIOVs = cms.untracked.PSet( - - ), - numberOfConcurrentIOVs = cms.untracked.uint32(1) - ), - fileMode = cms.untracked.string('FULLMERGE'), - forceEventSetupCacheClearOnNewRun = cms.untracked.bool(False), - makeTriggerResults = cms.obsolete.untracked.bool, - numberOfConcurrentLuminosityBlocks = cms.untracked.uint32(1), - numberOfConcurrentRuns = cms.untracked.uint32(1), - numberOfStreams = cms.untracked.uint32(0), - numberOfThreads = cms.untracked.uint32(1), - printDependencies = cms.untracked.bool(False), - sizeOfStackForThreadsInKB = cms.optional.untracked.uint32, - throwIfIllegalParameter = cms.untracked.bool(True), - wantSummary = cms.untracked.bool(False) -) - -# Production Info -process.configurationMetadata = cms.untracked.PSet( - annotation = cms.untracked.string('Configuration/GenProduction/python/SMP-RunIISummer15wmLHEGS-00344-fragment.py nevts:10'), - name = cms.untracked.string('Applications'), - version = cms.untracked.string('$Revision: 1.19 $') -) - -# Other statements -process.genstepfilter.triggerConditions=cms.vstring("generation_step") - -process.generator = cms.EDFilter("Pythia8HadronizerFilter", - PythiaParameters = cms.PSet( - parameterSets = cms.vstring( - 'pythia8CommonSettings', - 'pythia8CUEP8M1Settings', - 'pythia8PowhegEmissionVetoSettings', - 'pythia8PSweightsSettings', - 'processParameters' - ), - processParameters = cms.vstring( - 'POWHEG:nFinal = 2', - 'ParticleDecays:allowPhotonRadiation = on', - 'TimeShower:QEDshowerByL = on' - ), - pythia8CUEP8M1Settings = cms.vstring( - 'Tune:pp 14', - 'Tune:ee 7', - 'MultipartonInteractions:pT0Ref=2.4024', - 'MultipartonInteractions:ecmPow=0.25208', - 'MultipartonInteractions:expPow=1.6' - ), - pythia8CommonSettings = cms.vstring( - 'Tune:preferLHAPDF = 2', - 'Main:timesAllowErrors = 10000', - 'Check:epTolErr = 0.01', - 'Beams:setProductionScalesFromLHEF = off', - 'SLHA:keepSM = on', - 'SLHA:minMassSM = 1000.', - 'ParticleDecays:limitTau0 = on', - 'ParticleDecays:tau0Max = 10', - 'ParticleDecays:allowPhotonRadiation = on' - ), - pythia8PSweightsSettings = cms.vstring( - 'UncertaintyBands:doVariations = on', - 'UncertaintyBands:List = {isrRedHi isr:muRfac=0.707,fsrRedHi fsr:muRfac=0.707,isrRedLo isr:muRfac=1.414,fsrRedLo fsr:muRfac=1.414,isrDefHi isr:muRfac=0.5,fsrDefHi fsr:muRfac=0.5,isrDefLo isr:muRfac=2.0,fsrDefLo fsr:muRfac=2.0,isrConHi isr:muRfac=0.25,fsrConHi fsr:muRfac=0.25,isrConLo isr:muRfac=4.0,fsrConLo fsr:muRfac=4.0,fsr_G2GG_muR_dn fsr:G2GG:muRfac=0.5,fsr_G2GG_muR_up fsr:G2GG:muRfac=2.0,fsr_G2QQ_muR_dn fsr:G2QQ:muRfac=0.5,fsr_G2QQ_muR_up fsr:G2QQ:muRfac=2.0,fsr_Q2QG_muR_dn fsr:Q2QG:muRfac=0.5,fsr_Q2QG_muR_up fsr:Q2QG:muRfac=2.0,fsr_X2XG_muR_dn fsr:X2XG:muRfac=0.5,fsr_X2XG_muR_up fsr:X2XG:muRfac=2.0,fsr_G2GG_cNS_dn fsr:G2GG:cNS=-2.0,fsr_G2GG_cNS_up fsr:G2GG:cNS=2.0,fsr_G2QQ_cNS_dn fsr:G2QQ:cNS=-2.0,fsr_G2QQ_cNS_up fsr:G2QQ:cNS=2.0,fsr_Q2QG_cNS_dn fsr:Q2QG:cNS=-2.0,fsr_Q2QG_cNS_up fsr:Q2QG:cNS=2.0,fsr_X2XG_cNS_dn fsr:X2XG:cNS=-2.0,fsr_X2XG_cNS_up fsr:X2XG:cNS=2.0,isr_G2GG_muR_dn isr:G2GG:muRfac=0.5,isr_G2GG_muR_up isr:G2GG:muRfac=2.0,isr_G2QQ_muR_dn isr:G2QQ:muRfac=0.5,isr_G2QQ_muR_up isr:G2QQ:muRfac=2.0,isr_Q2QG_muR_dn isr:Q2QG:muRfac=0.5,isr_Q2QG_muR_up isr:Q2QG:muRfac=2.0,isr_X2XG_muR_dn isr:X2XG:muRfac=0.5,isr_X2XG_muR_up isr:X2XG:muRfac=2.0,isr_G2GG_cNS_dn isr:G2GG:cNS=-2.0,isr_G2GG_cNS_up isr:G2GG:cNS=2.0,isr_G2QQ_cNS_dn isr:G2QQ:cNS=-2.0,isr_G2QQ_cNS_up isr:G2QQ:cNS=2.0,isr_Q2QG_cNS_dn isr:Q2QG:cNS=-2.0,isr_Q2QG_cNS_up isr:Q2QG:cNS=2.0,isr_X2XG_cNS_dn isr:X2XG:cNS=-2.0,isr_X2XG_cNS_up isr:X2XG:cNS=2.0}', - 'UncertaintyBands:nFlavQ = 4', - 'UncertaintyBands:MPIshowers = on', - 'UncertaintyBands:overSampleFSR = 10.0', - 'UncertaintyBands:overSampleISR = 10.0', - 'UncertaintyBands:FSRpTmin2Fac = 20', - 'UncertaintyBands:ISRpTmin2Fac = 1' - ), - pythia8PowhegEmissionVetoSettings = cms.vstring( - 'POWHEG:veto = 1', - 'POWHEG:pTdef = 1', - 'POWHEG:emitted = 0', - 'POWHEG:pTemt = 0', - 'POWHEG:pThard = 0', - 'POWHEG:vetoCount = 100', - 'SpaceShower:pTmaxMatch = 2', - 'TimeShower:pTmaxMatch = 2' - ) - ), - comEnergy = cms.double(13000.0), - filterEfficiency = cms.untracked.double(1.0), - maxEventsToPrint = cms.untracked.int32(1), - pythiaHepMCVerbosity = cms.untracked.bool(False), - pythiaPylistVerbosity = cms.untracked.int32(1) -) - -process.externalLHEProducer = cms.EDProducer("ExternalLHEProducer", - args = cms.vstring('/afs/cern.ch/user/k/kelong/work/public/DummyGridpacks/VVV_aQGCfs_dummy.tgz'), - nEvents = cms.untracked.uint32(10), - numberOfParameters = cms.uint32(1), - outputFile = cms.string('cmsgrid_final.lhe'), - scriptName = cms.FileInPath('GeneratorInterface/LHEInterface/data/run_generic_tarball_cvmfs.sh') -) - -# Other statements -from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_mc', '') - -process.ProductionFilterSequence = cms.Sequence(process.generator) - -# Path and EndPath definitions -process.lhe_step = cms.Path(process.externalLHEProducer) -process.generation_step = cms.Path(process.pgen) -process.genfiltersummary_step = cms.EndPath(process.genFilterSummary) - -# Path and EndPath definitions -process.nanoGEN_step = cms.Path(process.genWeights*process.nanogenSequence) -process.endjob_step = cms.EndPath(process.endOfProcess) -process.NANOAODGENoutput_step = cms.EndPath(process.NANOAODGENoutput) - -# Schedule definition -process.schedule = cms.Schedule(process.lhe_step,process.generation_step,process.genfiltersummary_step,process.nanoGEN_step,process.endjob_step,process.NANOAODGENoutput_step) - -# filter all path with the production filter sequence -for path in process.paths: - if path in ['lhe_step']: continue - getattr(process,path).insert(0, process.ProductionFilterSequence) - - -process.RandomNumberGeneratorService.externalLHEProducer.initialSeed=int(96) -# Customisation from command line -from PhysicsTools.NanoAOD.nanogen_cff import customizeNanoGEN -process = customizeNanoGEN(process) - - -# Add early deletion of temporary data products to reduce peak memory need -from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete -process = customiseEarlyDelete(process) -# End adding early deletion - diff --git a/SimDataFormats/GeneratorProducts/BuildFile.xml b/SimDataFormats/GeneratorProducts/BuildFile.xml index 962e90bee6a3f..b35ce8e95f1ff 100644 --- a/SimDataFormats/GeneratorProducts/BuildFile.xml +++ b/SimDataFormats/GeneratorProducts/BuildFile.xml @@ -1,10 +1,9 @@ - - - - - - - + + + + + + diff --git a/lhe_test.C b/lhe_test.C deleted file mode 100644 index f601cd50eba70..0000000000000 --- a/lhe_test.C +++ /dev/null @@ -1,57 +0,0 @@ -/* - - "testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt"; - "testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt"; - - - "testFiles/W1jet_260_weight_info.txt"; - "testFiles/WJ_MiNNLO_weightinfo.txt"; - "testFiles/WJ_NNLOPS_weightinfo.txt"; - "testFiles/WZVBS_2017_weightInfo.txt"; - "testFiles/WZVBS_aQGCFM_weightInfo.txt"; - "testFiles/WZVBS_aQGC_weightInfo.txt"; - "testFiles/WZVBS_private_weightInfo.txt"; - "testFiles/ZJ_MiNNLO_weightinfo.txt"; - "testFiles/ZZTo4L_powheg_2016_weightInfo.txt"; - "testFiles/ZZTo4L_powheg_2017_weightInfo.txt"; - "testFiles/susyweights.txt"; - - - "testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt"; - - - - "testFiles/VVV_2017_weight_info.txt"; // possibly bad file? -*/ - -void lhe_test() { - - vector files = {//"testFiles/DrellYan_LO_MGMLMv233_2016_weightInfo.txt", - "testFiles/DrellYan_LO_MGMLMv242_2017_weightInfo.txt", - // "testFiles/W1jet_260_weight_info.txt", - // "testFiles/WJ_MiNNLO_weightinfo.txt", - // "testFiles/WJ_NNLOPS_weightinfo.txt", - // "testFiles/WZVBS_2017_weightInfo.txt", - // "testFiles/WZVBS_aQGCFM_weightInfo.txt", - // "testFiles/WZVBS_aQGC_weightInfo.txt", - // "testFiles/WZVBS_private_weightInfo.txt", - // "testFiles/ZJ_MiNNLO_weightinfo.txt", - // "testFiles/ZZTo4L_powheg_2016_weightInfo.txt", - // "testFiles/ZZTo4L_powheg_2017_weightInfo.txt", - // "testFiles/susyweights.txt", - // "testFiles/DrellYan_NLO_MGFXFXv242_2017_weightInfo.txt" - }; - for(auto infile: files) { - test::Test_LHEWeightHelper a; - std::cout << "-------------------------------------------\n"; - std::cout << infile << "\n"; - a.add_file(infile); - a.weight_.parseWeights(); - } - -} - - -/* Tested - "testFiles/DrellYan_NLO_MGFXFXv233_2016_weightInfo.txt"; -*/ From 48fcabd86936600d60a9957c591819f952e068af Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 12 Nov 2020 22:22:04 +0100 Subject: [PATCH 172/186] Move GenWeightsTableProducer, reorganize --- .../plugins/GenWeightsTableProducer.cc | 1420 +++++------------ .../plugins/LHEWeightsTableProducer.cc | 434 ----- .../NanoAOD/python/genWeightsTable_cfi.py | 28 - ...eWeightsTable_cfi.py => genWeights_cff.py} | 15 +- PhysicsTools/NanoAOD/python/nano_cff.py | 3 +- PhysicsTools/NanoAOD/python/nanogen_cff.py | 5 +- .../GeneratorProducts/BuildFile.xml | 1 + 7 files changed, 388 insertions(+), 1518 deletions(-) delete mode 100644 PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc delete mode 100644 PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py rename PhysicsTools/NanoAOD/python/{lheWeightsTable_cfi.py => genWeights_cff.py} (73%) diff --git a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc index 0cc12dd7d94e4..9604a2ee6a5e7 100644 --- a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc @@ -6,1001 +6,112 @@ #include "DataFormats/NanoAOD/interface/MergeableCounterTable.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" -#include "FWCore/Utilities/interface/transform.h" -#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" #include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoHeader.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "boost/algorithm/string.hpp" - -#include - -#include -#include +#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoHeader.h" +#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" +#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" +#include "FWCore/Utilities/interface/transform.h" +#include "PhysicsTools/NanoAOD/interface/GenWeightCounters.h" +#include #include -#include +#include namespace { - /// ---- Cache object for running sums of weights ---- - struct Counter { - Counter() : num(0), sumw(0), sumw2(0), sumPDF(), sumScale(), sumRwgt(), sumNamed(), sumPS() {} - - // the counters - long long num; - long double sumw; - long double sumw2; - std::vector sumPDF, sumScale, sumRwgt, sumNamed, sumPS; - - void clear() { - num = 0; - sumw = 0; - sumw2 = 0; - sumPDF.clear(); - sumScale.clear(); - sumRwgt.clear(); - sumNamed.clear(), sumPS.clear(); - } - - // inc the counters - void incGenOnly(double w) { - num++; - sumw += w; - sumw2 += (w * w); - } - - void incPSOnly(double w0, const std::vector& wPS) { - if (!wPS.empty()) { - if (sumPS.empty()) - sumPS.resize(wPS.size(), 0); - for (unsigned int i = 0, n = wPS.size(); i < n; ++i) - sumPS[i] += (w0 * wPS[i]); - } - } - - void incLHE(double w0, - const std::vector& wScale, - const std::vector& wPDF, - const std::vector& wRwgt, - const std::vector& wNamed, - const std::vector& wPS) { - // add up weights - incGenOnly(w0); - // then add up variations - if (!wScale.empty()) { - if (sumScale.empty()) - sumScale.resize(wScale.size(), 0); - for (unsigned int i = 0, n = wScale.size(); i < n; ++i) - sumScale[i] += (w0 * wScale[i]); - } - if (!wPDF.empty()) { - if (sumPDF.empty()) - sumPDF.resize(wPDF.size(), 0); - for (unsigned int i = 0, n = wPDF.size(); i < n; ++i) - sumPDF[i] += (w0 * wPDF[i]); - } - if (!wRwgt.empty()) { - if (sumRwgt.empty()) - sumRwgt.resize(wRwgt.size(), 0); - for (unsigned int i = 0, n = wRwgt.size(); i < n; ++i) - sumRwgt[i] += (w0 * wRwgt[i]); - } - if (!wNamed.empty()) { - if (sumNamed.empty()) - sumNamed.resize(wNamed.size(), 0); - for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) - sumNamed[i] += (w0 * wNamed[i]); - } - incPSOnly(w0, wPS); - } - - void merge(const Counter& other) { - num += other.num; - sumw += other.sumw; - sumw2 += other.sumw2; - if (sumScale.empty() && !other.sumScale.empty()) - sumScale.resize(other.sumScale.size(), 0); - if (sumPDF.empty() && !other.sumPDF.empty()) - sumPDF.resize(other.sumPDF.size(), 0); - if (sumRwgt.empty() && !other.sumRwgt.empty()) - sumRwgt.resize(other.sumRwgt.size(), 0); - if (sumNamed.empty() && !other.sumNamed.empty()) - sumNamed.resize(other.sumNamed.size(), 0); - if (sumPS.empty() && !other.sumPS.empty()) - sumPS.resize(other.sumPS.size(), 0); - if (!other.sumScale.empty()) - for (unsigned int i = 0, n = sumScale.size(); i < n; ++i) - sumScale[i] += other.sumScale[i]; - if (!other.sumPDF.empty()) - for (unsigned int i = 0, n = sumPDF.size(); i < n; ++i) - sumPDF[i] += other.sumPDF[i]; - if (!other.sumRwgt.empty()) - for (unsigned int i = 0, n = sumRwgt.size(); i < n; ++i) - sumRwgt[i] += other.sumRwgt[i]; - if (!other.sumNamed.empty()) - for (unsigned int i = 0, n = sumNamed.size(); i < n; ++i) - sumNamed[i] += other.sumNamed[i]; - if (!other.sumPS.empty()) - for (unsigned int i = 0, n = sumPS.size(); i < n; ++i) - sumPS[i] += other.sumPS[i]; - } - }; - - struct CounterMap { - std::map countermap; - Counter* active_el = nullptr; - std::string active_label = ""; - void merge(const CounterMap& other) { - for (const auto& y : other.countermap) - countermap[y.first].merge(y.second); - active_el = nullptr; - } - void clear() { - for (auto x : countermap) - x.second.clear(); - active_el = nullptr; - active_label = ""; - } - void setLabel(std::string label) { - active_el = &(countermap[label]); - active_label = label; - } - void checkLabelSet() { - if (!active_el) - throw cms::Exception("LogicError", "Called CounterMap::get() before setting the active label\n"); - } - Counter* get() { - checkLabelSet(); - return active_el; - } - std::string& getLabel() { - checkLabelSet(); - return active_label; - } - }; - - /// ---- RunCache object for dynamic choice of LHE IDs ---- - struct DynamicWeightChoice { - // choice of LHE weights - // ---- scale ---- - std::vector scaleWeightIDs; - std::string scaleWeightsDoc; - // ---- pdf ---- - std::vector pdfWeightIDs; - std::string pdfWeightsDoc; - // ---- rwgt ---- - std::vector rwgtIDs; - std::string rwgtWeightDoc; - }; - - struct DynamicWeightChoiceGenInfo { - // choice of LHE weights - // ---- scale ---- - std::vector scaleWeightIDs; - std::string scaleWeightsDoc; - // ---- pdf ---- - std::vector pdfWeightIDs; - std::string pdfWeightsDoc; - // ---- ps ---- - std::vector psWeightIDs; - }; - - struct LumiCacheInfoHolder { - CounterMap countermap; - DynamicWeightChoiceGenInfo weightChoice; - void clear() { - countermap.clear(); - weightChoice = DynamicWeightChoiceGenInfo(); - } - }; - - float stof_fortrancomp(const std::string& str) { - std::string::size_type match = str.find('d'); - if (match != std::string::npos) { - std::string pre = str.substr(0, match); - std::string post = str.substr(match + 1); - return std::stof(pre) * std::pow(10.0f, std::stof(post)); - } else { - return std::stof(str); - } - } - /// -------------- temporary objects -------------- - struct ScaleVarWeight { - std::string wid, label; - std::pair scales; - ScaleVarWeight(const std::string& id, const std::string& text, const std::string& muR, const std::string& muF) - : wid(id), label(text), scales(stof_fortrancomp(muR), stof_fortrancomp(muF)) {} - bool operator<(const ScaleVarWeight& other) { - return (scales == other.scales ? wid < other.wid : scales < other.scales); - } - }; - struct PDFSetWeights { - std::vector wids; - std::pair lhaIDs; - PDFSetWeights(const std::string& wid, unsigned int lhaID) : wids(1, wid), lhaIDs(lhaID, lhaID) {} - bool operator<(const PDFSetWeights& other) const { return lhaIDs < other.lhaIDs; } - void add(const std::string& wid, unsigned int lhaID) { - wids.push_back(wid); - lhaIDs.second = lhaID; - } - bool maybe_add(const std::string& wid, unsigned int lhaID) { - if (lhaID == lhaIDs.second + 1) { - lhaIDs.second++; - wids.push_back(wid); - return true; - } else { - return false; - } - } - }; + typedef std::vector WeightGroupDataContainer; + typedef std::array, 2> WeightGroupsToStore; } // namespace +using CounterMap = genCounter::CounterMap; +using Counter = genCounter::Counter; -class GenWeightsTableProducer : public edm::global::EDProducer, - edm::RunCache, +class LHEWeightsTableProducer : public edm::global::EDProducer, + edm::StreamCache, edm::RunSummaryCache, edm::EndRunProducer> { public: - GenWeightsTableProducer(edm::ParameterSet const& params) - : genTag_(consumes(params.getParameter("genEvent"))), - lheLabel_(params.getParameter>("lheInfo")), - lheTag_(edm::vector_transform(lheLabel_, - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - lheRunTag_(edm::vector_transform( - lheLabel_, [this](const edm::InputTag& tag) { return mayConsume(tag); })), - genLumiInfoHeadTag_( - mayConsume(params.getParameter("genLumiInfoHeader"))), - namedWeightIDs_(params.getParameter>("namedWeightIDs")), - namedWeightLabels_(params.getParameter>("namedWeightLabels")), - lheWeightPrecision_(params.getParameter("lheWeightPrecision")), - maxPdfWeights_(params.getParameter("maxPdfWeights")), - keepAllPSWeights_(params.getParameter("keepAllPSWeights")), - debug_(params.getUntrackedParameter("debug", false)), - debugRun_(debug_.load()), - hasIssuedWarning_(false) { - produces(); - produces("genModel"); - produces("LHEScale"); - produces("LHEPdf"); - produces("LHEReweighting"); - produces("LHENamed"); - produces("PS"); - produces(); - if (namedWeightIDs_.size() != namedWeightLabels_.size()) { - throw cms::Exception("Configuration", "Size mismatch between namedWeightIDs & namedWeightLabels"); - } - for (const edm::ParameterSet& pdfps : params.getParameter>("preferredPDFs")) { - const std::string& name = pdfps.getParameter("name"); - uint32_t lhaid = pdfps.getParameter("lhaid"); - preferredPDFLHAIDs_.push_back(lhaid); - lhaNameToID_[name] = lhaid; - lhaNameToID_[name + ".LHgrid"] = lhaid; - } - } - - ~GenWeightsTableProducer() override {} - - void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override { - // get my counter for weights - Counter* counter = streamCache(id)->countermap.get(); - - // generator information (always available) - edm::Handle genInfo; - iEvent.getByToken(genTag_, genInfo); - double weight = genInfo->weight(); - - // table for gen info, always available - auto out = std::make_unique(1, "genWeight", true); - out->setDoc("generator weight"); - out->addColumnValue("", weight, "generator weight"); - iEvent.put(std::move(out)); - - std::string model_label = streamCache(id)->countermap.getLabel(); - auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); - iEvent.put(std::move(outM), "genModel"); - bool getLHEweightsFromGenInfo = !model_label.empty(); - - // tables for LHE weights, may not be filled - std::unique_ptr lheScaleTab, lhePdfTab, lheRwgtTab, lheNamedTab; - std::unique_ptr genPSTab; - - edm::Handle lheInfo; - for (const auto& lheTag : lheTag_) { - iEvent.getByToken(lheTag, lheInfo); - if (lheInfo.isValid()) { - break; - } - } - if (lheInfo.isValid()) { - if (getLHEweightsFromGenInfo) - edm::LogWarning("LHETablesProducer") - << "Found both a LHEEventProduct and a GenLumiInfoHeader: will only save weights from LHEEventProduct.\n"; - // get the dynamic choice of weights - const DynamicWeightChoice* weightChoice = runCache(iEvent.getRun().index()); - // go fill tables - fillLHEWeightTables( - counter, weightChoice, weight, *lheInfo, *genInfo, lheScaleTab, lhePdfTab, lheRwgtTab, lheNamedTab, genPSTab); - } else if (getLHEweightsFromGenInfo) { - const DynamicWeightChoiceGenInfo* weightChoice = &(streamCache(id)->weightChoice); - fillLHEPdfWeightTablesFromGenInfo( - counter, weightChoice, weight, *genInfo, lheScaleTab, lhePdfTab, lheNamedTab, genPSTab); - lheRwgtTab = std::make_unique(1, "LHEReweightingWeights", true); - //lheNamedTab.reset(new nanoaod::FlatTable(1, "LHENamedWeights", true)); - //genPSTab.reset(new nanoaod::FlatTable(1, "PSWeight", true)); - } else { - // Still try to add the PS weights - fillOnlyPSWeightTable(counter, weight, *genInfo, genPSTab); - // make dummy values - lheScaleTab = std::make_unique(1, "LHEScaleWeights", true); - lhePdfTab = std::make_unique(1, "LHEPdfWeights", true); - lheRwgtTab = std::make_unique(1, "LHEReweightingWeights", true); - lheNamedTab = std::make_unique(1, "LHENamedWeights", true); - if (!hasIssuedWarning_.exchange(true)) { - edm::LogWarning("LHETablesProducer") << "No LHEEventProduct, so there will be no LHE Tables\n"; - } - } - - iEvent.put(std::move(lheScaleTab), "LHEScale"); - iEvent.put(std::move(lhePdfTab), "LHEPdf"); - iEvent.put(std::move(lheRwgtTab), "LHEReweighting"); - iEvent.put(std::move(lheNamedTab), "LHENamed"); - iEvent.put(std::move(genPSTab), "PS"); - } - - void fillLHEWeightTables(Counter* counter, - const DynamicWeightChoice* weightChoice, - double genWeight, - const LHEEventProduct& lheProd, - const GenEventInfoProduct& genProd, - std::unique_ptr& outScale, - std::unique_ptr& outPdf, - std::unique_ptr& outRwgt, - std::unique_ptr& outNamed, - std::unique_ptr& outPS) const { - bool lheDebug = debug_.exchange( - false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) - - const std::vector& scaleWeightIDs = weightChoice->scaleWeightIDs; - const std::vector& pdfWeightIDs = weightChoice->pdfWeightIDs; - const std::vector& rwgtWeightIDs = weightChoice->rwgtIDs; - - double w0 = lheProd.originalXWGTUP(); - - std::vector wScale(scaleWeightIDs.size(), 1), wPDF(pdfWeightIDs.size(), 1), wRwgt(rwgtWeightIDs.size(), 1), - wNamed(namedWeightIDs_.size(), 1); - for (auto& weight : lheProd.weights()) { - if (lheDebug) - printf("Weight %+9.5f rel %+9.5f for id %s\n", weight.wgt, weight.wgt / w0, weight.id.c_str()); - // now we do it slowly, can be optimized - auto mScale = std::find(scaleWeightIDs.begin(), scaleWeightIDs.end(), weight.id); - if (mScale != scaleWeightIDs.end()) - wScale[mScale - scaleWeightIDs.begin()] = weight.wgt / w0; - - auto mPDF = std::find(pdfWeightIDs.begin(), pdfWeightIDs.end(), weight.id); - if (mPDF != pdfWeightIDs.end()) - wPDF[mPDF - pdfWeightIDs.begin()] = weight.wgt / w0; - - auto mRwgt = std::find(rwgtWeightIDs.begin(), rwgtWeightIDs.end(), weight.id); - if (mRwgt != rwgtWeightIDs.end()) - wRwgt[mRwgt - rwgtWeightIDs.begin()] = weight.wgt / w0; - - auto mNamed = std::find(namedWeightIDs_.begin(), namedWeightIDs_.end(), weight.id); - if (mNamed != namedWeightIDs_.end()) - wNamed[mNamed - namedWeightIDs_.begin()] = weight.wgt / w0; - } - - std::size_t vectorSize = - (genProd.weights().size() > 2) - ? (keepAllPSWeights_ ? (genProd.weights().size() - 2) - : ((genProd.weights().size() == 14 || genProd.weights().size() == 46) ? 4 : 1)) - : 1; - std::vector wPS(vectorSize, 1); - std::string psWeightDocStr; - if (vectorSize > 1) { - double nominal = genProd.weights()[1]; // Called 'Baseline' in GenLumiInfoHeader - if (keepAllPSWeights_) { - for (std::size_t i = 0; i < vectorSize; i++) { - wPS[i] = (genProd.weights()[i + 2]) / nominal; - } - psWeightDocStr = "All PS weights (w_var / w_nominal)"; - } else { - for (std::size_t i = 6; i < 10; i++) { - wPS[i - 6] = (genProd.weights()[i]) / nominal; - } - psWeightDocStr = - "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " - "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 "; - } - } else { - psWeightDocStr = "dummy PS weight (1.0) "; - } - outPS = std::make_unique(wPS.size(), "PSWeight", false); - outPS->addColumn("", wPS, psWeightDocStr, lheWeightPrecision_); - - outScale = std::make_unique(wScale.size(), "LHEScaleWeight", false); - outScale->addColumn("", wScale, weightChoice->scaleWeightsDoc, lheWeightPrecision_); - - outPdf = std::make_unique(wPDF.size(), "LHEPdfWeight", false); - outPdf->addColumn("", wPDF, weightChoice->pdfWeightsDoc, lheWeightPrecision_); - - outRwgt = std::make_unique(wRwgt.size(), "LHEReweightingWeight", false); - outRwgt->addColumn("", wRwgt, weightChoice->rwgtWeightDoc, lheWeightPrecision_); - - outNamed = std::make_unique(1, "LHEWeight", true); - outNamed->addColumnValue("originalXWGTUP", lheProd.originalXWGTUP(), "Nominal event weight in the LHE file"); - for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) { - outNamed->addColumnValue(namedWeightLabels_[i], - wNamed[i], - "LHE weight for id " + namedWeightIDs_[i] + ", relative to nominal", - lheWeightPrecision_); - } - - counter->incLHE(genWeight, wScale, wPDF, wRwgt, wNamed, wPS); - } - - void fillLHEPdfWeightTablesFromGenInfo(Counter* counter, - const DynamicWeightChoiceGenInfo* weightChoice, - double genWeight, - const GenEventInfoProduct& genProd, - std::unique_ptr& outScale, - std::unique_ptr& outPdf, - std::unique_ptr& outNamed, - std::unique_ptr& outPS) const { - const std::vector& scaleWeightIDs = weightChoice->scaleWeightIDs; - const std::vector& pdfWeightIDs = weightChoice->pdfWeightIDs; - const std::vector& psWeightIDs = weightChoice->psWeightIDs; - - auto weights = genProd.weights(); - double w0 = (weights.size() > 1) ? weights.at(1) : 1.; - double originalXWGTUP = (weights.size() > 1) ? weights.at(1) : 1.; - - std::vector wScale, wPDF, wPS; - for (auto id : scaleWeightIDs) - wScale.push_back(weights.at(id) / w0); - for (auto id : pdfWeightIDs) { - wPDF.push_back(weights.at(id) / w0); - } - if (!psWeightIDs.empty()) { - double psNom = - weights.at(psWeightIDs.at(0)); // normalise PS weights by "Baseline", which should be the first entry - for (std::size_t i = 1; i < psWeightIDs.size(); i++) - wPS.push_back(weights.at(psWeightIDs.at(i)) / psNom); - } else - wPS.push_back(1.0); - std::string psWeightDocStr; - if (keepAllPSWeights_) { - psWeightDocStr = "All PS weights (w_var / w_nominal)"; - } else { - psWeightDocStr = - "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " - "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 "; - } - - outScale = std::make_unique(wScale.size(), "LHEScaleWeight", false); - outScale->addColumn("", wScale, weightChoice->scaleWeightsDoc, lheWeightPrecision_); - - outPdf = std::make_unique(wPDF.size(), "LHEPdfWeight", false); - outPdf->addColumn("", wPDF, weightChoice->pdfWeightsDoc, lheWeightPrecision_); - - outPS = std::make_unique(wPS.size(), "PSWeight", false); - outPS->addColumn("", wPS, wPS.size() > 1 ? psWeightDocStr : "dummy PS weight (1.0) ", lheWeightPrecision_); - - outNamed = std::make_unique(1, "LHEWeight", true); - outNamed->addColumnValue("originalXWGTUP", originalXWGTUP, "Nominal event weight in the LHE file"); - /*for (unsigned int i = 0, n = wNamed.size(); i < n; ++i) { - outNamed->addColumnValue(namedWeightLabels_[i], wNamed[i], "LHE weight for id "+namedWeightIDs_[i]+", relative to nominal", lheWeightPrecision_); - }*/ - - counter->incLHE(genWeight, wScale, wPDF, std::vector(), std::vector(), wPS); - } - - void fillOnlyPSWeightTable(Counter* counter, - double genWeight, - const GenEventInfoProduct& genProd, - std::unique_ptr& outPS) const { - std::size_t vectorSize = - (genProd.weights().size() > 2) - ? (keepAllPSWeights_ ? (genProd.weights().size() - 2) - : ((genProd.weights().size() == 14 || genProd.weights().size() == 46) ? 4 : 1)) - : 1; - std::vector wPS(vectorSize, 1); - std::string psWeightDocStr; - if (vectorSize > 1) { - double nominal = genProd.weights()[1]; // Called 'Baseline' in GenLumiInfoHeader - if (keepAllPSWeights_) { - for (std::size_t i = 0; i < vectorSize; i++) { - wPS[i] = (genProd.weights()[i + 2]) / nominal; - } - psWeightDocStr = "All PS weights (w_var / w_nominal)"; - } else { - for (std::size_t i = 6; i < 10; i++) { - wPS[i - 6] = (genProd.weights()[i]) / nominal; - } - psWeightDocStr = - "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 " - "FSR=0.5; [2] is ISR=2 FSR=1; [3] is ISR=1 FSR=2 "; - } - } else { - psWeightDocStr = "dummy PS weight (1.0) "; - } - outPS = std::make_unique(wPS.size(), "PSWeight", false); - outPS->addColumn("", wPS, psWeightDocStr, lheWeightPrecision_); - - counter->incGenOnly(genWeight); - counter->incPSOnly(genWeight, wPS); - } - - // create an empty counter - std::shared_ptr globalBeginRun(edm::Run const& iRun, edm::EventSetup const&) const override { - edm::Handle lheInfo; - - bool lheDebug = debugRun_.exchange( - false); // make sure only the first thread dumps out this (even if may still be mixed up with other output, but nevermind) - auto weightChoice = std::make_shared(); - - // getByToken throws since we're not in the endRun (see https://github.com/cms-sw/cmssw/pull/18499) - //if (iRun.getByToken(lheRunTag_, lheInfo)) { - for (const auto& lheLabel : lheLabel_) { - iRun.getByLabel(lheLabel, lheInfo); - if (lheInfo.isValid()) { + LHEWeightsTableProducer(edm::ParameterSet const& params); + + void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override; + //func changed//sroychow + void addWeightGroupToTable(std::map>& lheWeightTables, + std::map>& weightVecsizes, + std::map& weightlabels, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights, + Counter& counter, + double genWeight) const; + WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const; + + std::vector orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo& scaleGroup) const; + + std::vector preferredPSweights(const std::vector& psWeights, + const gen::PartonShowerWeightGroupInfo& pswV) const; + + //Lumiblock + std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, + edm::EventSetup const&) const override { + // Set equal to the max number of groups + // subtrack 1 for each weight group you find + bool foundLheWeights = false; + edm::Handle lheWeightInfoHandle; + for (auto& token : lheWeightInfoTokens_) { + iLumi.getByToken(token, lheWeightInfoHandle); + if (lheWeightInfoHandle.isValid()) { + foundLheWeights = true; break; } } - if (lheInfo.isValid()) { - std::vector scaleVariationIDs; - std::vector pdfSetWeightIDs; - std::vector lheReweighingIDs; - - std::regex weightgroupmg26x(""); - std::regex weightgroup(""); - std::regex weightgroupRwgt(""); - std::regex endweightgroup(""); - std::regex scalewmg26x( - ""); - std::regex scalew( - "\\s*(?:lhapdf=\\d+|dyn=\\s*-?\\d+)?\\s*((?:mu[rR]|renscfact)=(\\S+)\\s+(" - "?:mu[Ff]|facscfact)=(\\S+)(\\s+.*)?)"); - std::regex pdfw( - "\\s*(?:PDF set|lhapdf|PDF|pdfset)\\s*=\\s*(\\d+)\\s*(?:\\s.*)?"); - std::regex pdfwOld("\\s*Member \\s*(\\d+)\\s*(?:.*)"); - std::regex pdfwmg26x( - "\\s*(?:PDF=(\\d+)\\s*MemberID=(\\d+))?\\s*(?:\\s.*)?"); - std::regex rwgt("(.+)?()?"); - std::smatch groups; - for (auto iter = lheInfo->headers_begin(), end = lheInfo->headers_end(); iter != end; ++iter) { - if (iter->tag() != "initrwgt") { - if (lheDebug) - std::cout << "Skipping LHE header with tag" << iter->tag() << std::endl; - continue; - } - if (lheDebug) - std::cout << "Found LHE header with tag" << iter->tag() << std::endl; - std::vector lines = iter->lines(); - bool missed_weightgroup = - false; //Needed because in some of the samples ( produced with MG26X ) a small part of the header info is ordered incorrectly - bool ismg26x = false; - for (unsigned int iLine = 0, nLines = lines.size(); iLine < nLines; - ++iLine) { //First start looping through the lines to see which weightgroup pattern is matched - boost::replace_all(lines[iLine], "<", "<"); - boost::replace_all(lines[iLine], ">", ">"); - if (std::regex_search(lines[iLine], groups, weightgroupmg26x)) { - ismg26x = true; - } - } - for (unsigned int iLine = 0, nLines = lines.size(); iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << lines[iLine]; - if (std::regex_search(lines[iLine], groups, ismg26x ? weightgroupmg26x : weightgroup)) { - std::string groupname = groups.str(2); - if (ismg26x) - groupname = groups.str(1); - if (lheDebug) - std::cout << ">>> Looks like the beginning of a weight group for '" << groupname << "'" << std::endl; - if (groupname.find("scale_variation") == 0 || groupname == "Central scale variation") { - if (lheDebug) - std::cout << ">>> Looks like scale variation for theory uncertainties" << std::endl; - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, ismg26x ? scalewmg26x : scalew)) { - if (lheDebug) - std::cout << " >>> Scale weight " << groups[1].str() << " for " << groups[3].str() << " , " - << groups[4].str() << " , " << groups[5].str() << std::endl; - scaleVariationIDs.emplace_back(groups.str(1), groups.str(2), groups.str(3), groups.str(4)); - } else if (std::regex_search(lines[iLine], endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - if (!missed_weightgroup) { - break; - } else - missed_weightgroup = false; - } else if (std::regex_search(lines[iLine], ismg26x ? weightgroupmg26x : weightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the beginning of a new weight group, I will assume I missed the end " - "of the group." - << std::endl; - if (ismg26x) - missed_weightgroup = true; - --iLine; // rewind by one, and go back to the outer loop - break; - } - } - } else if (groupname == "PDF_variation" || groupname.find("PDF_variation ") == 0) { - if (lheDebug) - std::cout << ">>> Looks like a new-style block of PDF weights for one or more pdfs" << std::endl; - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, pdfw)) { - unsigned int lhaID = std::stoi(groups.str(2)); - if (lheDebug) - std::cout << " >>> PDF weight " << groups.str(1) << " for " << groups.str(2) << " = " << lhaID - << std::endl; - if (pdfSetWeightIDs.empty() || !pdfSetWeightIDs.back().maybe_add(groups.str(1), lhaID)) { - pdfSetWeightIDs.emplace_back(groups.str(1), lhaID); - } - } else if (std::regex_search(lines[iLine], endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - if (!missed_weightgroup) { - break; - } else - missed_weightgroup = false; - } else if (std::regex_search(lines[iLine], ismg26x ? weightgroupmg26x : weightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the beginning of a new weight group, I will assume I missed the end " - "of the group." - << std::endl; - if (ismg26x) - missed_weightgroup = true; - --iLine; // rewind by one, and go back to the outer loop - break; - } - } - } else if (groupname == "PDF_variation1" || groupname == "PDF_variation2") { - if (lheDebug) - std::cout << ">>> Looks like a new-style block of PDF weights for multiple pdfs" << std::endl; - unsigned int lastid = 0; - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, pdfw)) { - unsigned int id = std::stoi(groups.str(1)); - unsigned int lhaID = std::stoi(groups.str(2)); - if (lheDebug) - std::cout << " >>> PDF weight " << groups.str(1) << " for " << groups.str(2) << " = " << lhaID - << std::endl; - if (id != (lastid + 1) || pdfSetWeightIDs.empty()) { - pdfSetWeightIDs.emplace_back(groups.str(1), lhaID); - } else { - pdfSetWeightIDs.back().add(groups.str(1), lhaID); - } - lastid = id; - } else if (std::regex_search(lines[iLine], endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - if (!missed_weightgroup) { - break; - } else - missed_weightgroup = false; - } else if (std::regex_search(lines[iLine], ismg26x ? weightgroupmg26x : weightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the beginning of a new weight group, I will assume I missed the end " - "of the group." - << std::endl; - if (ismg26x) - missed_weightgroup = true; - --iLine; // rewind by one, and go back to the outer loop - break; - } - } - } else if (lhaNameToID_.find(groupname) != lhaNameToID_.end()) { - if (lheDebug) - std::cout << ">>> Looks like an old-style PDF weight for an individual pdf" << std::endl; - unsigned int firstLhaID = lhaNameToID_.find(groupname)->second; - bool first = true; - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, ismg26x ? pdfwmg26x : pdfwOld)) { - unsigned int member = 0; - if (ismg26x == 0) { - member = std::stoi(groups.str(2)); - } else { - if (!groups.str(4).empty()) { - member = std::stoi(groups.str(4)); - } - } - unsigned int lhaID = member + firstLhaID; - if (lheDebug) - std::cout << " >>> PDF weight " << groups.str(1) << " for " << member << " = " << lhaID - << std::endl; - //if (member == 0) continue; // let's keep also the central value for now - if (first) { - pdfSetWeightIDs.emplace_back(groups.str(1), lhaID); - first = false; - } else { - pdfSetWeightIDs.back().add(groups.str(1), lhaID); - } - } else if (std::regex_search(lines[iLine], endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - if (!missed_weightgroup) { - break; - } else - missed_weightgroup = false; - } else if (std::regex_search(lines[iLine], ismg26x ? weightgroupmg26x : weightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the beginning of a new weight group, I will assume I missed the end " - "of the group." - << std::endl; - if (ismg26x) - missed_weightgroup = true; - --iLine; // rewind by one, and go back to the outer loop - break; - } - } - } else if (groupname == "mass_variation" || groupname == "sthw2_variation" || - groupname == "width_variation") { - if (lheDebug) - std::cout << ">>> Looks like an EW parameter weight" << std::endl; - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, rwgt)) { - std::string rwgtID = groups.str(1); - if (lheDebug) - std::cout << " >>> LHE reweighting weight: " << rwgtID << std::endl; - if (std::find(lheReweighingIDs.begin(), lheReweighingIDs.end(), rwgtID) == lheReweighingIDs.end()) { - // we're only interested in the beggining of the block - lheReweighingIDs.emplace_back(rwgtID); - } - } else if (std::regex_search(lines[iLine], endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - } - } - } else { - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - if (!missed_weightgroup) { - break; - } else - missed_weightgroup = false; - } else if (std::regex_search(lines[iLine], ismg26x ? weightgroupmg26x : weightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the beginning of a new weight group, I will assume I missed the end " - "of the group." - << std::endl; - if (ismg26x) - missed_weightgroup = true; - --iLine; // rewind by one, and go back to the outer loop - break; - } - } - } - } else if (std::regex_search(lines[iLine], groups, weightgroupRwgt)) { - std::string groupname = groups.str(1); - if (groupname == "mg_reweighting") { - if (lheDebug) - std::cout << ">>> Looks like a LHE weights for reweighting" << std::endl; - for (++iLine; iLine < nLines; ++iLine) { - if (lheDebug) - std::cout << " " << lines[iLine]; - if (std::regex_search(lines[iLine], groups, rwgt)) { - std::string rwgtID = groups.str(1); - if (lheDebug) - std::cout << " >>> LHE reweighting weight: " << rwgtID << std::endl; - if (std::find(lheReweighingIDs.begin(), lheReweighingIDs.end(), rwgtID) == lheReweighingIDs.end()) { - // we're only interested in the beggining of the block - lheReweighingIDs.emplace_back(rwgtID); - } - } else if (std::regex_search(lines[iLine], endweightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the end of a weight group" << std::endl; - if (!missed_weightgroup) { - break; - } else - missed_weightgroup = false; - } else if (std::regex_search(lines[iLine], ismg26x ? weightgroupmg26x : weightgroup)) { - if (lheDebug) - std::cout << ">>> Looks like the beginning of a new weight group, I will assume I missed the end " - "of the group." - << std::endl; - if (ismg26x) - missed_weightgroup = true; - --iLine; // rewind by one, and go back to the outer loop - break; - } - } - } - } - } - //std::cout << "============= END [ " << iter->tag() << " ] ============ \n\n" << std::endl; - - // ----- SCALE VARIATIONS ----- - std::sort(scaleVariationIDs.begin(), scaleVariationIDs.end()); - if (lheDebug) - std::cout << "Found " << scaleVariationIDs.size() << " scale variations: " << std::endl; - std::stringstream scaleDoc; - scaleDoc << "LHE scale variation weights (w_var / w_nominal); "; - for (unsigned int isw = 0, nsw = scaleVariationIDs.size(); isw < nsw; ++isw) { - const auto& sw = scaleVariationIDs[isw]; - if (isw) - scaleDoc << "; "; - scaleDoc << "[" << isw << "] is " << sw.label; - weightChoice->scaleWeightIDs.push_back(sw.wid); - if (lheDebug) - printf(" id %s: scales ren = % .2f fact = % .2f text = %s\n", - sw.wid.c_str(), - sw.scales.first, - sw.scales.second, - sw.label.c_str()); - } - if (!scaleVariationIDs.empty()) - weightChoice->scaleWeightsDoc = scaleDoc.str(); - - // ------ PDF VARIATIONS (take the preferred one) ----- - if (lheDebug) { - std::cout << "Found " << pdfSetWeightIDs.size() << " PDF set errors: " << std::endl; - for (const auto& pw : pdfSetWeightIDs) - printf("lhaIDs %6d - %6d (%3lu weights: %s, ... )\n", - pw.lhaIDs.first, - pw.lhaIDs.second, - pw.wids.size(), - pw.wids.front().c_str()); - } - - // ------ LHE REWEIGHTING ------- - if (lheDebug) { - std::cout << "Found " << lheReweighingIDs.size() << " reweighting weights" << std::endl; - } - std::copy(lheReweighingIDs.begin(), lheReweighingIDs.end(), std::back_inserter(weightChoice->rwgtIDs)); - - std::stringstream pdfDoc; - pdfDoc << "LHE pdf variation weights (w_var / w_nominal) for LHA IDs "; - bool found = false; - for (uint32_t lhaid : preferredPDFLHAIDs_) { - for (const auto& pw : pdfSetWeightIDs) { - if (pw.lhaIDs.first != lhaid && pw.lhaIDs.first != (lhaid + 1)) - continue; // sometimes the first weight is not saved if that PDF is the nominal one for the sample - if (pw.wids.size() == 1) - continue; // only consider error sets - pdfDoc << pw.lhaIDs.first << " - " << pw.lhaIDs.second; - weightChoice->pdfWeightIDs = pw.wids; - if (maxPdfWeights_ < pw.wids.size()) { - weightChoice->pdfWeightIDs.resize(maxPdfWeights_); // drop some replicas - pdfDoc << ", truncated to the first " << maxPdfWeights_ << " replicas"; - } - weightChoice->pdfWeightsDoc = pdfDoc.str(); - found = true; - break; - } - if (found) - break; - } + edm::Handle genWeightInfoHandle; + iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); + + std::unordered_map storePerType; + for (size_t i = 0; i < weightgroups_.size(); i++) + storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); + + WeightGroupsToStore weightsToStore; + for (auto weightType : gen::allWeightTypes) { + if (foundLheWeights) { + auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); + for (auto& w : lheWeights) + weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); } + auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); + for (auto& w : genWeights) + weightsToStore.at(inGen).push_back({w.index, std::move(w.group)}); } - return weightChoice; + return std::make_shared(weightsToStore); } + // nothing to do here + void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} // create an empty counter - std::unique_ptr beginStream(edm::StreamID) const override { - return std::make_unique(); - } + std::unique_ptr beginStream(edm::StreamID) const override { return std::make_unique(); } // inizialize to zero at begin run void streamBeginRun(edm::StreamID id, edm::Run const&, edm::EventSetup const&) const override { streamCache(id)->clear(); } + void streamBeginLuminosityBlock(edm::StreamID id, edm::LuminosityBlock const& lumiBlock, edm::EventSetup const& eventSetup) const override { - auto counterMap = &(streamCache(id)->countermap); + auto counterMap = streamCache(id); edm::Handle genLumiInfoHead; lumiBlock.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); if (!genLumiInfoHead.isValid()) edm::LogWarning("LHETablesProducer") << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; - std::string label; - if (genLumiInfoHead.isValid()) { - label = genLumiInfoHead->configDescription(); - boost::replace_all(label, "-", "_"); - boost::replace_all(label, "/", "_"); - } - counterMap->setLabel(label); - - if (genLumiInfoHead.isValid()) { - auto weightChoice = &(streamCache(id)->weightChoice); - - std::vector scaleVariationIDs; - std::vector pdfSetWeightIDs; - weightChoice->psWeightIDs.clear(); - - std::regex scalew("LHE,\\s+id\\s+=\\s+(\\d+),\\s+(.+)\\,\\s+mur=(\\S+)\\smuf=(\\S+)"); - std::regex pdfw("LHE,\\s+id\\s+=\\s+(\\d+),\\s+(.+),\\s+Member\\s+(\\d+)\\s+of\\ssets\\s+(\\w+\\b)"); - std::smatch groups; - auto weightNames = genLumiInfoHead->weightNames(); - std::unordered_map knownPDFSetsFromGenInfo_; - unsigned int weightIter = 0; - for (const auto& line : weightNames) { - if (std::regex_search(line, groups, scalew)) { // scale variation - auto id = groups.str(1); - auto group = groups.str(2); - auto mur = groups.str(3); - auto muf = groups.str(4); - if (group.find("Central scale variation") != std::string::npos) - scaleVariationIDs.emplace_back(groups.str(1), groups.str(2), groups.str(3), groups.str(4)); - } else if (std::regex_search(line, groups, pdfw)) { // PDF variation - auto id = groups.str(1); - auto group = groups.str(2); - auto memberid = groups.str(3); - auto pdfset = groups.str(4); - if (group.find(pdfset) != std::string::npos) { - if (knownPDFSetsFromGenInfo_.find(pdfset) == knownPDFSetsFromGenInfo_.end()) { - knownPDFSetsFromGenInfo_[pdfset] = std::atoi(id.c_str()); - pdfSetWeightIDs.emplace_back(id, std::atoi(id.c_str())); - } else - pdfSetWeightIDs.back().add(id, std::atoi(id.c_str())); - } - } else if (line.find("Baseline") != std::string::npos || line.find("isr") != std::string::npos || - line.find("fsr") != std::string::npos) { - if (keepAllPSWeights_ || line.find("Baseline") != std::string::npos || - line.find("Def") != std::string::npos) { - weightChoice->psWeightIDs.push_back(weightIter); // PS variations - } - } - weightIter++; - } - - weightChoice->scaleWeightIDs.clear(); - weightChoice->pdfWeightIDs.clear(); - - std::sort(scaleVariationIDs.begin(), scaleVariationIDs.end()); - std::stringstream scaleDoc; - scaleDoc << "LHE scale variation weights (w_var / w_nominal); "; - for (unsigned int isw = 0, nsw = scaleVariationIDs.size(); isw < nsw; ++isw) { - const auto& sw = scaleVariationIDs[isw]; - if (isw) - scaleDoc << "; "; - scaleDoc << "[" << isw << "] is " << sw.label; - weightChoice->scaleWeightIDs.push_back(std::atoi(sw.wid.c_str())); - } - if (!scaleVariationIDs.empty()) - weightChoice->scaleWeightsDoc = scaleDoc.str(); - std::stringstream pdfDoc; - pdfDoc << "LHE pdf variation weights (w_var / w_nominal) for LHA names "; - bool found = false; - for (const auto& pw : pdfSetWeightIDs) { - if (pw.wids.size() == 1) - continue; // only consider error sets - for (const auto& wantedpdf : lhaNameToID_) { - auto pdfname = wantedpdf.first; - if (knownPDFSetsFromGenInfo_.find(pdfname) == knownPDFSetsFromGenInfo_.end()) - continue; - uint32_t lhaid = knownPDFSetsFromGenInfo_.at(pdfname); - if (pw.lhaIDs.first != lhaid) - continue; - pdfDoc << pdfname; - for (const auto& x : pw.wids) - weightChoice->pdfWeightIDs.push_back(std::atoi(x.c_str())); - if (maxPdfWeights_ < pw.wids.size()) { - weightChoice->pdfWeightIDs.resize(maxPdfWeights_); // drop some replicas - pdfDoc << ", truncated to the first " << maxPdfWeights_ << " replicas"; - } - weightChoice->pdfWeightsDoc = pdfDoc.str(); - found = true; - break; - } - if (found) - break; - } - } + counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); + std::string label = genLumiInfoHead.isValid() ? counterMap->getLabel() : "NULL"; } // create an empty counter std::shared_ptr globalBeginRunSummary(edm::Run const&, edm::EventSetup const&) const override { @@ -1010,105 +121,314 @@ class GenWeightsTableProducer : public edm::global::EDProducermerge(streamCache(id)->countermap); - } + CounterMap* runCounterMap) const override; // nothing to do per se void globalEndRunSummary(edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const override {} // write the total to the run - void globalEndRunProduce(edm::Run& iRun, edm::EventSetup const&, CounterMap const* runCounterMap) const override { - auto out = std::make_unique(); + void globalEndRunProduce(edm::Run& iRun, edm::EventSetup const& es, CounterMap const* runCounterMap) const override; + // nothing to do here + //void globalEndRun(edm::Run const& iRun, edm::EventSetup const& es, CounterMap* runCounterMap) const override {} - for (const auto& x : runCounterMap->countermap) { - auto runCounter = &(x.second); - std::string label = (!x.first.empty()) ? (std::string("_") + x.first) : ""; - std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - out->addInt("genEventCount" + label, "event count" + doclabel, runCounter->num); - out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter->sumw); - out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter->sumw2); +protected: + const std::vector> lheWeightTokens_; + const std::vector> lheWeightInfoTokens_; + const edm::EDGetTokenT genWeightToken_; + const edm::EDGetTokenT genWeightInfoToken_; + const edm::EDGetTokenT genEventInfoToken_; + const edm::EDGetTokenT genLumiInfoHeadTag_; + const std::vector weightgroups_; + const std::vector maxGroupsPerType_; + const std::vector pdfIds_; + const std::unordered_map weightTypeNames_ = { + {gen::WeightType::kScaleWeights, "LHEScaleWeight"}, + {gen::WeightType::kPdfWeights, "LHEPdfWeight"}, + {gen::WeightType::kMEParamWeights, "MEParamWeight"}, + {gen::WeightType::kPartonShowerWeights, "PSWeight"}, + {gen::WeightType::kUnknownWeights, "UnknownWeight"}, + }; + //std::unordered_map weightGroupIndices_; + int lheWeightPrecision_; + bool keepAllPSWeights_; - double norm = runCounter->sumw ? 1.0 / runCounter->sumw : 1; - auto sumScales = runCounter->sumScale; - for (auto& val : sumScales) - val *= norm; - out->addVFloatWithNorm("LHEScaleSumw" + label, - "Sum of genEventWeight * LHEScaleWeight[i], divided by genEventSumw" + doclabel, - sumScales, - runCounter->sumw); - auto sumPDFs = runCounter->sumPDF; - for (auto& val : sumPDFs) - val *= norm; - out->addVFloatWithNorm("LHEPdfSumw" + label, - "Sum of genEventWeight * LHEPdfWeight[i], divided by genEventSumw" + doclabel, - sumPDFs, - runCounter->sumw); - if (!runCounter->sumRwgt.empty()) { - auto sumRwgts = runCounter->sumRwgt; - for (auto& val : sumRwgts) - val *= norm; - out->addVFloatWithNorm("LHEReweightingSumw" + label, - "Sum of genEventWeight * LHEReweightingWeight[i], divided by genEventSumw" + doclabel, - sumRwgts, - runCounter->sumw); - } - if (!runCounter->sumNamed.empty()) { // it could be empty if there's no LHE info in the sample - for (unsigned int i = 0, n = namedWeightLabels_.size(); i < n; ++i) { - out->addFloatWithNorm( - "LHESumw_" + namedWeightLabels_[i] + label, - "Sum of genEventWeight * LHEWeight_" + namedWeightLabels_[i] + ", divided by genEventSumw" + doclabel, - runCounter->sumNamed[i] * norm, - runCounter->sumw); - } - } + enum { inLHE, inGen }; +}; +//put back if needed; till now not used +LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params) + : lheWeightTokens_( + edm::vector_transform(params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + lheWeightInfoTokens_(edm::vector_transform( + params.getParameter>("lheWeights"), + [this](const edm::InputTag& tag) { return mayConsume(tag); })), + genWeightToken_(consumes(params.getParameter("genWeights"))), + genWeightInfoToken_( + consumes(params.getParameter("genWeights"))), + genEventInfoToken_(consumes(params.getParameter("genEvent"))), + genLumiInfoHeadTag_( + mayConsume(params.getParameter("genLumiInfoHeader"))), + weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), + [](auto& c) { return gen::WeightType(c.at(0)); })), + maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), + pdfIds_(params.getUntrackedParameter>("pdfIds", {})), + lheWeightPrecision_(params.getParameter("lheWeightPrecision")), + keepAllPSWeights_(params.getParameter("keepAllPSWeights")) { + if (weightgroups_.size() != maxGroupsPerType_.size()) + throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); + for (auto& wg : weightTypeNames_) { + produces(wg.second); + produces(wg.second + "sizes"); + } + produces("GENWeight"); + produces(); + produces("genModel"); +} + +void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const { + //access counter for weight sums + Counter& counter = *streamCache(id)->get(); + edm::Handle lheWeightHandle; + bool foundLheWeights = false; + for (auto& token : lheWeightTokens_) { + iEvent.getByToken(token, lheWeightHandle); + if (lheWeightHandle.isValid()) { + foundLheWeights = true; + break; } - iRun.put(std::move(out)); } - // nothing to do here - void globalEndRun(edm::Run const&, edm::EventSetup const&) const override {} + //Taken from genweight producer //Added sroychow + // generator information (always available) + auto const& genInfo = iEvent.get(genEventInfoToken_); + const double genWeight = genInfo.weight(); + // table for gen info, always available + auto outGeninfo = std::make_unique(1, "genWeight", true); + outGeninfo->setDoc("generator weight"); + outGeninfo->addColumnValue("", genInfo.weight(), "generator weight"); + iEvent.put(std::move(outGeninfo), "GENWeight"); + //this will take care of sum of genWeights + counter.incGenOnly(genWeight); + + std::string& model_label = streamCache(id)->getLabel(); + auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); + iEvent.put(std::move(outM), "genModel"); + + WeightsContainer lheWeights; + if (foundLheWeights) { + const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); + lheWeights = lheWeightProduct->weights(); + } - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add("genEvent", edm::InputTag("generator")) - ->setComment("tag for the GenEventInfoProduct, to get the main weight"); - desc.add("genLumiInfoHeader", edm::InputTag("generator")) - ->setComment("tag for the GenLumiInfoProduct, to get the model string"); - desc.add>("lheInfo", std::vector{{"externalLHEProducer"}, {"source"}}) - ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + edm::Handle genWeightHandle; + iEvent.getByToken(genWeightToken_, genWeightHandle); + const GenWeightProduct* genWeightProduct = genWeightHandle.product(); + WeightsContainer genWeights = genWeightProduct->weights(); + + auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); + + //create a container with dummy weight vector + std::map> lheWeightTables; + std::map> weightVecsizes; + std::map weightlabels; + for (auto& wg : weightTypeNames_) { + lheWeightTables.insert(std::make_pair(wg.first, std::vector())); + weightVecsizes.insert(std::make_pair(wg.first, std::vector())); + weightlabels.insert(std::make_pair(wg.first, "")); + } + if (foundLheWeights) { + addWeightGroupToTable( + lheWeightTables, weightVecsizes, weightlabels, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); + } - edm::ParameterSetDescription prefpdf; - prefpdf.add("name"); - prefpdf.add("lhaid"); - desc.addVPSet("preferredPDFs", prefpdf, std::vector()) - ->setComment( - "LHA PDF Ids of the preferred PDF sets, in order of preference (the first matching one will be used)"); - desc.add>("namedWeightIDs")->setComment("set of LHA weight IDs for named LHE weights"); - desc.add>("namedWeightLabels") - ->setComment("output names for the namedWeightIDs (in the same order)"); - desc.add("lheWeightPrecision")->setComment("Number of bits in the mantissa for LHE weights"); - desc.add("maxPdfWeights")->setComment("Maximum number of PDF weights to save (to crop NN replicas)"); - desc.add("keepAllPSWeights")->setComment("Store all PS weights found"); - desc.addOptionalUntracked("debug")->setComment("dump out all LHE information for one event"); - descriptions.add("genWeightsTable", desc); + addWeightGroupToTable( + lheWeightTables, weightVecsizes, weightlabels, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); + + for (auto& wg : weightTypeNames_) { + std::string wname = wg.second; + auto& weightVec = lheWeightTables[wg.first]; + counter.incLHE(genWeight, weightVec, wname); + auto outTable = std::make_unique(weightVec.size(), wname, false); + outTable->addColumn("", weightVec, weightlabels[wg.first], lheWeightPrecision_); + + //now add the vector containing the sizes of alt sets + auto outTableSizes = + std::make_unique(weightVecsizes[wg.first].size(), wname + "_AltSetSizes", false); + outTableSizes->addColumn( + "", weightVecsizes[wg.first], "Sizes of weight arrays for weight type:" + wname, lheWeightPrecision_); + iEvent.put(std::move(outTable), wname); + iEvent.put(std::move(outTableSizes), wname + "sizes"); } +} + +/* + +*/ +void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, + std::map>& weightVecsizes, + std::map& weightlabels, + const char* typeName, + const WeightGroupDataContainer& weightInfos, + WeightsContainer& allWeights, + Counter& counter, + double genWeight) const { + std::unordered_map typeCount = {}; + for (auto& type : gen::allWeightTypes) + typeCount[type] = 0; + + for (const auto& groupInfo : weightInfos) { + //std::string entryName = typeName; + gen::WeightType weightType = groupInfo.group->weightType(); + std::string name = weightTypeNames_.at(weightType); + std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->description(); + label.append("["); + label.append(std::to_string(lheWeightTables[weightType].size())); //to append the start index of this set + label.append("]; "); + auto& weights = allWeights.at(groupInfo.index); + //std::cout << "Group name is " << groupInfo.group->name() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; + if (weightType == gen::WeightType::kScaleWeights) { + if (groupInfo.group->isWellFormed() && false) { + const auto scaleGroup = *static_cast(groupInfo.group.get()); + std::cout << "They're well formed, will be ordered as expected\n"; + weights = orderedScaleWeights(weights, scaleGroup); + label.append( + "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" + " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" + " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); + } else { + std::cout << "NOT WELL FORMED!\n"; + size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); + weights = std::vector(weights.begin(), weights.begin() + nstore); + label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + + " elements of weights vector, unordered"); + } + // TODO: Handle storeAllWeights and !isWellFormed + } else if (!keepAllPSWeights_ && weightType == gen::WeightType::kPartonShowerWeights && + groupInfo.group->isWellFormed()) { + const auto psGroup = *static_cast(groupInfo.group.get()); + weights = preferredPSweights(weights, psGroup); + label.append( + "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is " + "ISR=1 FSR=2"); + } + //else + // label.append(groupInfo.group->description()); + lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); + weightVecsizes[weightType].emplace_back(weights.size()); -protected: - const edm::EDGetTokenT genTag_; - const std::vector lheLabel_; - const std::vector> lheTag_; - const std::vector> lheRunTag_; - const edm::EDGetTokenT genLumiInfoHeadTag_; + if (weightlabels[weightType].empty()) + weightlabels[weightType].append("[idx in AltSetSizes array] Name [start idx in weight array];\n"); - std::vector preferredPDFLHAIDs_; - std::unordered_map lhaNameToID_; - std::vector namedWeightIDs_; - std::vector namedWeightLabels_; - int lheWeightPrecision_; - unsigned int maxPdfWeights_; - bool keepAllPSWeights_; + weightlabels[weightType].append(label); + typeCount[weightType]++; + } +} + +WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle& weightsHandle, + gen::WeightType weightType, + int& maxStore) const { + std::vector allgroups; + if (weightType == gen::WeightType::kPdfWeights && !pdfIds_.empty()) { + allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); + } else + allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); + + int toStore = maxStore; + if (maxStore < 0 || static_cast(allgroups.size()) <= maxStore) { + // Modify size in case one type of weight is present in multiple products + maxStore -= allgroups.size(); + toStore = allgroups.size(); + } - mutable std::atomic debug_, debugRun_, hasIssuedWarning_; -}; + WeightGroupDataContainer out; + for (int i = 0; i < toStore; i++) { + auto& group = allgroups.at(i); + gen::SharedWeightGroupData temp = {group.index, std::move(group.group)}; + out.push_back(temp); + } + return out; +} + +std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, + const gen::ScaleWeightGroupInfo& scaleGroup) const { + std::vector weights; + weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR1muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.centralIndex())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR1muF2Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF05Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF1Index())); + weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF2Index())); + + return weights; +} + +std::vector LHEWeightsTableProducer::preferredPSweights(const std::vector& psWeights, + const gen::PartonShowerWeightGroupInfo& pswV) const { + std::vector psTosave; + + double baseline = psWeights.at(pswV.weightIndexFromLabel("Baseline")); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, true, gen::PSVarType::def)) / baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, true, gen::PSVarType::def)) / baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, false, gen::PSVarType::def)) / baseline); + psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, false, gen::PSVarType::def)) / baseline); + return psTosave; +} + +void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, + edm::Run const&, + edm::EventSetup const&, + CounterMap* runCounterMap) const { + //this takes care for mergeing all the weight sums + runCounterMap->mergeSumMap(*streamCache(id)); +} + +void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, + edm::EventSetup const&, + CounterMap const* runCounterMap) const { + auto out = std::make_unique(); + + for (auto x : runCounterMap->countermap) { + auto& runCounter = x.second; + std::string label = std::string("_") + x.first; + std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; + + out->addInt("genEventCount" + label, "event count" + doclabel, runCounter.num_); + out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter.sumw_); + out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); + + double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; + //Sum from map + for (auto& sumw : runCounter.weightSumMap_) { + //Normalize with genEventSumw + for (auto& val : sumw.second) + val *= norm; + out->addVFloat(sumw.first + "Sumw" + label, + "Sum of genEventWeight *" + sumw.first + "[i]/genEventSumw" + doclabel, + sumw.second); + } + } + iRun.put(std::move(out)); +} +void LHEWeightsTableProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add>("lheWeights"); + desc.add>("lheInfo", std::vector{{"externalLHEProducer"}, {"source"}}) + ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); + //desc.add>("genWeights"); + desc.add("genWeights"); + desc.add("genEvent", edm::InputTag("generator")) + ->setComment("tag for the GenEventInfoProduct, to get the main weight"); + desc.add("genLumiInfoHeader", edm::InputTag("generator")) + ->setComment("tag for the GenLumiInfoProduct, to get the model string"); + desc.add>("weightgroups"); + desc.add>("maxGroupsPerType"); + desc.addOptionalUntracked>("pdfIds"); + desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); + desc.add("keepAllPSWeights", false)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); + descriptions.addDefault(desc); +} #include "FWCore/Framework/interface/MakerMacros.h" -DEFINE_FWK_MODULE(GenWeightsTableProducer); +DEFINE_FWK_MODULE(LHEWeightsTableProducer); diff --git a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc deleted file mode 100644 index fd1080eaf865a..0000000000000 --- a/PhysicsTools/NanoAOD/plugins/LHEWeightsTableProducer.cc +++ /dev/null @@ -1,434 +0,0 @@ -#include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Run.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/NanoAOD/interface/FlatTable.h" -#include "DataFormats/NanoAOD/interface/MergeableCounterTable.h" -#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" -#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" -#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/LHERunInfoProduct.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightInfoProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoHeader.h" -#include "SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h" -#include "SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/ScaleWeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/PdfWeightGroupInfo.h" -#include "SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h" -#include "FWCore/Utilities/interface/transform.h" -#include "PhysicsTools/NanoAOD/interface/GenWeightCounters.h" -#include -#include -#include - -namespace { - typedef std::vector WeightGroupDataContainer; - typedef std::array, 2> WeightGroupsToStore; -} // namespace -using CounterMap = genCounter::CounterMap; -using Counter = genCounter::Counter; - -class LHEWeightsTableProducer : public edm::global::EDProducer, - edm::StreamCache, - edm::RunSummaryCache, - edm::EndRunProducer> { -public: - LHEWeightsTableProducer(edm::ParameterSet const& params); - - void produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const override; - //func changed//sroychow - void addWeightGroupToTable(std::map>& lheWeightTables, - std::map>& weightVecsizes, - std::map& weightlabels, - const char* typeName, - const WeightGroupDataContainer& weightInfos, - WeightsContainer& allWeights, - Counter& counter, - double genWeight) const; - WeightGroupDataContainer weightDataPerType(edm::Handle& weightsHandle, - gen::WeightType weightType, - int& maxStore) const; - - std::vector orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo& scaleGroup) const; - - std::vector preferredPSweights(const std::vector& psWeights, - const gen::PartonShowerWeightGroupInfo& pswV) const; - - //Lumiblock - std::shared_ptr globalBeginLuminosityBlock(edm::LuminosityBlock const& iLumi, - edm::EventSetup const&) const override { - // Set equal to the max number of groups - // subtrack 1 for each weight group you find - bool foundLheWeights = false; - edm::Handle lheWeightInfoHandle; - for (auto& token : lheWeightInfoTokens_) { - iLumi.getByToken(token, lheWeightInfoHandle); - if (lheWeightInfoHandle.isValid()) { - foundLheWeights = true; - break; - } - } - edm::Handle genWeightInfoHandle; - iLumi.getByToken(genWeightInfoToken_, genWeightInfoHandle); - - std::unordered_map storePerType; - for (size_t i = 0; i < weightgroups_.size(); i++) - storePerType[weightgroups_.at(i)] = maxGroupsPerType_.at(i); - - WeightGroupsToStore weightsToStore; - for (auto weightType : gen::allWeightTypes) { - if (foundLheWeights) { - auto lheWeights = weightDataPerType(lheWeightInfoHandle, weightType, storePerType[weightType]); - for (auto& w : lheWeights) - weightsToStore.at(inLHE).push_back({w.index, std::move(w.group)}); - } - auto genWeights = weightDataPerType(genWeightInfoHandle, weightType, storePerType[weightType]); - for (auto& w : genWeights) - weightsToStore.at(inGen).push_back({w.index, std::move(w.group)}); - } - return std::make_shared(weightsToStore); - } - - // nothing to do here - void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override {} - // create an empty counter - std::unique_ptr beginStream(edm::StreamID) const override { return std::make_unique(); } - // inizialize to zero at begin run - void streamBeginRun(edm::StreamID id, edm::Run const&, edm::EventSetup const&) const override { - streamCache(id)->clear(); - } - - void streamBeginLuminosityBlock(edm::StreamID id, - edm::LuminosityBlock const& lumiBlock, - edm::EventSetup const& eventSetup) const override { - auto counterMap = streamCache(id); - edm::Handle genLumiInfoHead; - lumiBlock.getByToken(genLumiInfoHeadTag_, genLumiInfoHead); - if (!genLumiInfoHead.isValid()) - edm::LogWarning("LHETablesProducer") - << "No GenLumiInfoHeader product found, will not fill generator model string.\n"; - counterMap->setLabel(genLumiInfoHead.isValid() ? genLumiInfoHead->configDescription() : ""); - std::string label = genLumiInfoHead.isValid() ? counterMap->getLabel() : "NULL"; - } - // create an empty counter - std::shared_ptr globalBeginRunSummary(edm::Run const&, edm::EventSetup const&) const override { - return std::make_shared(); - } - // add this stream to the summary - void streamEndRunSummary(edm::StreamID id, - edm::Run const&, - edm::EventSetup const&, - CounterMap* runCounterMap) const override; - // nothing to do per se - void globalEndRunSummary(edm::Run const&, edm::EventSetup const&, CounterMap* runCounterMap) const override {} - // write the total to the run - void globalEndRunProduce(edm::Run& iRun, edm::EventSetup const& es, CounterMap const* runCounterMap) const override; - // nothing to do here - //void globalEndRun(edm::Run const& iRun, edm::EventSetup const& es, CounterMap* runCounterMap) const override {} - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - -protected: - const std::vector> lheWeightTokens_; - const std::vector> lheWeightInfoTokens_; - const edm::EDGetTokenT genWeightToken_; - const edm::EDGetTokenT genWeightInfoToken_; - const edm::EDGetTokenT genEventInfoToken_; - const edm::EDGetTokenT genLumiInfoHeadTag_; - const std::vector weightgroups_; - const std::vector maxGroupsPerType_; - const std::vector pdfIds_; - const std::unordered_map weightTypeNames_ = { - {gen::WeightType::kScaleWeights, "LHEScaleWeight"}, - {gen::WeightType::kPdfWeights, "LHEPdfWeight"}, - {gen::WeightType::kMEParamWeights, "MEParamWeight"}, - {gen::WeightType::kPartonShowerWeights, "PSWeight"}, - {gen::WeightType::kUnknownWeights, "UnknownWeight"}, - }; - //std::unordered_map weightGroupIndices_; - int lheWeightPrecision_; - bool storeAllPSweights_; - - enum { inLHE, inGen }; -}; -//put back if needed; till now not used -LHEWeightsTableProducer::LHEWeightsTableProducer(edm::ParameterSet const& params) - : lheWeightTokens_( - edm::vector_transform(params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - lheWeightInfoTokens_(edm::vector_transform( - params.getParameter>("lheWeights"), - [this](const edm::InputTag& tag) { return mayConsume(tag); })), - genWeightToken_(consumes(params.getParameter("genWeights"))), - genWeightInfoToken_( - consumes(params.getParameter("genWeights"))), - genEventInfoToken_(consumes(params.getParameter("genEvent"))), - genLumiInfoHeadTag_( - mayConsume(params.getParameter("genLumiInfoHeader"))), - weightgroups_(edm::vector_transform(params.getParameter>("weightgroups"), - [](auto& c) { return gen::WeightType(c.at(0)); })), - maxGroupsPerType_(params.getParameter>("maxGroupsPerType")), - pdfIds_(params.getUntrackedParameter>("pdfIds", {})), - lheWeightPrecision_(params.getParameter("lheWeightPrecision")), - storeAllPSweights_(params.getParameter("storeAllPSweights")) { - if (weightgroups_.size() != maxGroupsPerType_.size()) - throw std::invalid_argument("Inputs 'weightgroups' and 'weightgroupNums' must have equal size"); - for (auto& wg : weightTypeNames_) { - produces(wg.second); - produces(wg.second + "sizes"); - } - produces("GENWeight"); - produces(); - produces("genModel"); -} - -void LHEWeightsTableProducer::produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const { - //access counter for weight sums - Counter& counter = *streamCache(id)->get(); - edm::Handle lheWeightHandle; - bool foundLheWeights = false; - for (auto& token : lheWeightTokens_) { - iEvent.getByToken(token, lheWeightHandle); - if (lheWeightHandle.isValid()) { - foundLheWeights = true; - break; - } - } - //Taken from genweight producer //Added sroychow - // generator information (always available) - auto const& genInfo = iEvent.get(genEventInfoToken_); - const double genWeight = genInfo.weight(); - // table for gen info, always available - auto outGeninfo = std::make_unique(1, "genWeight", true); - outGeninfo->setDoc("generator weight"); - outGeninfo->addColumnValue("", genInfo.weight(), "generator weight"); - iEvent.put(std::move(outGeninfo), "GENWeight"); - //this will take care of sum of genWeights - counter.incGenOnly(genWeight); - - std::string& model_label = streamCache(id)->getLabel(); - auto outM = std::make_unique((!model_label.empty()) ? std::string("GenModel_") + model_label : ""); - iEvent.put(std::move(outM), "genModel"); - - WeightsContainer lheWeights; - if (foundLheWeights) { - const GenWeightProduct* lheWeightProduct = lheWeightHandle.product(); - lheWeights = lheWeightProduct->weights(); - } - - edm::Handle genWeightHandle; - iEvent.getByToken(genWeightToken_, genWeightHandle); - const GenWeightProduct* genWeightProduct = genWeightHandle.product(); - WeightsContainer genWeights = genWeightProduct->weights(); - - auto const& weightInfos = *luminosityBlockCache(iEvent.getLuminosityBlock().index()); - - //create a container with dummy weight vector - std::map> lheWeightTables; - std::map> weightVecsizes; - std::map weightlabels; - for (auto& wg : weightTypeNames_) { - lheWeightTables.insert(std::make_pair(wg.first, std::vector())); - weightVecsizes.insert(std::make_pair(wg.first, std::vector())); - weightlabels.insert(std::make_pair(wg.first, "")); - } - if (foundLheWeights) { - addWeightGroupToTable( - lheWeightTables, weightVecsizes, weightlabels, "LHE", weightInfos.at(inLHE), lheWeights, counter, genWeight); - } - - addWeightGroupToTable( - lheWeightTables, weightVecsizes, weightlabels, "Gen", weightInfos.at(inGen), genWeights, counter, genWeight); - - for (auto& wg : weightTypeNames_) { - std::string wname = wg.second; - auto& weightVec = lheWeightTables[wg.first]; - counter.incLHE(genWeight, weightVec, wname); - auto outTable = std::make_unique(weightVec.size(), wname, false); - outTable->addColumn("", weightVec, weightlabels[wg.first], lheWeightPrecision_); - - //now add the vector containing the sizes of alt sets - auto outTableSizes = - std::make_unique(weightVecsizes[wg.first].size(), wname + "_AltSetSizes", false); - outTableSizes->addColumn( - "", weightVecsizes[wg.first], "Sizes of weight arrays for weight type:" + wname, lheWeightPrecision_); - iEvent.put(std::move(outTable), wname); - iEvent.put(std::move(outTableSizes), wname + "sizes"); - } -} - -/* - -*/ -void LHEWeightsTableProducer::addWeightGroupToTable(std::map>& lheWeightTables, - std::map>& weightVecsizes, - std::map& weightlabels, - const char* typeName, - const WeightGroupDataContainer& weightInfos, - WeightsContainer& allWeights, - Counter& counter, - double genWeight) const { - std::unordered_map typeCount = {}; - for (auto& type : gen::allWeightTypes) - typeCount[type] = 0; - - for (const auto& groupInfo : weightInfos) { - //std::string entryName = typeName; - gen::WeightType weightType = groupInfo.group->weightType(); - std::string name = weightTypeNames_.at(weightType); - std::string label = "[" + std::to_string(typeCount[weightType]) + "] " + groupInfo.group->description(); - label.append("["); - label.append(std::to_string(lheWeightTables[weightType].size())); //to append the start index of this set - label.append("]; "); - auto& weights = allWeights.at(groupInfo.index); - //std::cout << "Group name is " << groupInfo.group->name() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; - if (weightType == gen::WeightType::kScaleWeights) { - if (groupInfo.group->isWellFormed() && false) { - const auto scaleGroup = *static_cast(groupInfo.group.get()); - std::cout << "They're well formed, will be ordered as expected\n"; - weights = orderedScaleWeights(weights, scaleGroup); - label.append( - "[1] is mur=0.5 muf=1; [2] is mur=0.5 muf=2; [3] is mur=1 muf=0.5 ;" - " [4] is mur=1 muf=1; [5] is mur=1 muf=2; [6] is mur=2 muf=0.5;" - " [7] is mur=2 muf=1 ; [8] is mur=2 muf=2)"); - } else { - std::cout << "NOT WELL FORMED!\n"; - size_t nstore = std::min(gen::ScaleWeightGroupInfo::MIN_SCALE_VARIATIONS, weights.size()); - weights = std::vector(weights.begin(), weights.begin() + nstore); - label.append("WARNING: Unexpected format found. Contains first " + std::to_string(nstore) + - " elements of weights vector, unordered"); - } - // TODO: Handle storeAllWeights and !isWellFormed - } else if (!storeAllPSweights_ && weightType == gen::WeightType::kPartonShowerWeights && - groupInfo.group->isWellFormed()) { - const auto psGroup = *static_cast(groupInfo.group.get()); - weights = preferredPSweights(weights, psGroup); - label.append( - "PS weights (w_var / w_nominal); [0] is ISR=0.5 FSR=1; [1] is ISR=1 FSR=0.5; [2] is ISR=2 FSR=1; [3] is " - "ISR=1 FSR=2"); - } - //else - // label.append(groupInfo.group->description()); - lheWeightTables[weightType].insert(lheWeightTables[weightType].end(), weights.begin(), weights.end()); - weightVecsizes[weightType].emplace_back(weights.size()); - - if (weightlabels[weightType].empty()) - weightlabels[weightType].append("[idx in AltSetSizes array] Name [start idx in weight array];\n"); - - weightlabels[weightType].append(label); - typeCount[weightType]++; - } -} - -WeightGroupDataContainer LHEWeightsTableProducer::weightDataPerType(edm::Handle& weightsHandle, - gen::WeightType weightType, - int& maxStore) const { - std::vector allgroups; - if (weightType == gen::WeightType::kPdfWeights && !pdfIds_.empty()) { - allgroups = weightsHandle->pdfGroupsWithIndicesByLHAIDs(pdfIds_); - } else - allgroups = weightsHandle->weightGroupsAndIndicesByType(weightType); - - int toStore = maxStore; - if (maxStore < 0 || static_cast(allgroups.size()) <= maxStore) { - // Modify size in case one type of weight is present in multiple products - maxStore -= allgroups.size(); - toStore = allgroups.size(); - } - - WeightGroupDataContainer out; - for (int i = 0; i < toStore; i++) { - auto& group = allgroups.at(i); - gen::SharedWeightGroupData temp = {group.index, std::move(group.group)}; - out.push_back(temp); - } - return out; -} - -std::vector LHEWeightsTableProducer::orderedScaleWeights(const std::vector& scaleWeights, - const gen::ScaleWeightGroupInfo& scaleGroup) const { - std::vector weights; - weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF1Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR05muF2Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR1muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.centralIndex())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR1muF2Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF05Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF1Index())); - weights.emplace_back(scaleWeights.at(scaleGroup.muR2muF2Index())); - - return weights; -} - -std::vector LHEWeightsTableProducer::preferredPSweights(const std::vector& psWeights, - const gen::PartonShowerWeightGroupInfo& pswV) const { - std::vector psTosave; - - double baseline = psWeights.at(pswV.weightIndexFromLabel("Baseline")); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, true, gen::PSVarType::def)) / baseline); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, true, gen::PSVarType::def)) / baseline); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(true, false, gen::PSVarType::def)) / baseline); - psTosave.emplace_back(psWeights.at(pswV.variationIndex(false, false, gen::PSVarType::def)) / baseline); - return psTosave; -} - -void LHEWeightsTableProducer::streamEndRunSummary(edm::StreamID id, - edm::Run const&, - edm::EventSetup const&, - CounterMap* runCounterMap) const { - //this takes care for mergeing all the weight sums - runCounterMap->mergeSumMap(*streamCache(id)); -} - -void LHEWeightsTableProducer::globalEndRunProduce(edm::Run& iRun, - edm::EventSetup const&, - CounterMap const* runCounterMap) const { - auto out = std::make_unique(); - - for (auto x : runCounterMap->countermap) { - auto& runCounter = x.second; - std::string label = std::string("_") + x.first; - std::string doclabel = (!x.first.empty()) ? (std::string(", for model label ") + x.first) : ""; - - out->addInt("genEventCount" + label, "event count" + doclabel, runCounter.num_); - out->addFloat("genEventSumw" + label, "sum of gen weights" + doclabel, runCounter.sumw_); - out->addFloat("genEventSumw2" + label, "sum of gen (weight^2)" + doclabel, runCounter.sumw2_); - - double norm = runCounter.sumw_ ? 1.0 / runCounter.sumw_ : 1; - //Sum from map - for (auto& sumw : runCounter.weightSumMap_) { - //Normalize with genEventSumw - for (auto& val : sumw.second) - val *= norm; - out->addVFloat(sumw.first + "Sumw" + label, - "Sum of genEventWeight *" + sumw.first + "[i]/genEventSumw" + doclabel, - sumw.second); - } - } - iRun.put(std::move(out)); -} -void LHEWeightsTableProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { - edm::ParameterSetDescription desc; - desc.add>("lheWeights"); - desc.add>("lheInfo", std::vector{{"externalLHEProducer"}, {"source"}}) - ->setComment("tag(s) for the LHE information (LHEEventProduct and LHERunInfoProduct)"); - //desc.add>("genWeights"); - desc.add("genWeights"); - desc.add("genEvent", edm::InputTag("generator")) - ->setComment("tag for the GenEventInfoProduct, to get the main weight"); - desc.add("genLumiInfoHeader", edm::InputTag("generator")) - ->setComment("tag for the GenLumiInfoProduct, to get the model string"); - desc.add>("weightgroups"); - desc.add>("maxGroupsPerType"); - desc.addOptionalUntracked>("pdfIds"); - desc.add("lheWeightPrecision", -1)->setComment("Number of bits in the mantissa for LHE weights"); - desc.add("storeAllPSweights", false)->setComment("True:stores all 45 PS weights; False:saves preferred 4"); - descriptions.addDefault(desc); -} - -#include "FWCore/Framework/interface/MakerMacros.h" -DEFINE_FWK_MODULE(LHEWeightsTableProducer); diff --git a/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py deleted file mode 100644 index e226f955e3f90..0000000000000 --- a/PhysicsTools/NanoAOD/python/genWeightsTable_cfi.py +++ /dev/null @@ -1,28 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -genWeightsTable = cms.EDProducer("GenWeightsTableProducer", - genEvent = cms.InputTag("generator"), - genLumiInfoHeader = cms.InputTag("generator"), - lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), - preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html - cms.PSet( name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_hessian"), lhaid = cms.uint32(304400) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc_hessian_pdfas"), lhaid = cms.uint32(325300) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc"), lhaid = cms.uint32(316200) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4_mc_hessian"), lhaid = cms.uint32(325500) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4"), lhaid = cms.uint32(320900) ), - cms.PSet( name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... - cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) - cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) - cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) - cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), - cms.PSet( name = cms.string("PDF4LHC15_nlo_30_pdfas"), lhaid = cms.uint32(90400) ), - cms.PSet( name = cms.string("PDF4LHC15_nlo_30"), lhaid = cms.uint32(90900) ), - ), - namedWeightIDs = cms.vstring(), - namedWeightLabels = cms.vstring(), - lheWeightPrecision = cms.int32(14), - maxPdfWeights = cms.uint32(150), - keepAllPSWeights = cms.bool(False), - debug = cms.untracked.bool(False), -) diff --git a/PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/genWeights_cff.py similarity index 73% rename from PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py rename to PhysicsTools/NanoAOD/python/genWeights_cff.py index 2fc13f7e22486..ba5cd8c7bc4f1 100644 --- a/PhysicsTools/NanoAOD/python/lheWeightsTable_cfi.py +++ b/PhysicsTools/NanoAOD/python/genWeights_cff.py @@ -1,6 +1,15 @@ import FWCore.ParameterSet.Config as cms -lheWeightsTable = cms.EDProducer( +genWeights = cms.EDProducer("GenWeightProductProducer", + genInfo = cms.InputTag("generator"), + genLumiInfoHeader = cms.InputTag("generator")) + +lheWeights = cms.EDProducer("LHEWeightProductProducer", + lheSourceLabels = cms.vstring(["externalLHEProducer", "source"]), + failIfInvalidXML = cms.untracked.bool(True) +) + +genWeightsTable = cms.EDProducer( "LHEWeightsTableProducer", lheWeights = cms.VInputTag(["externalLHEProducer", "source", "lheWeights"]), lheWeightPrecision = cms.int32(14), @@ -15,5 +24,7 @@ #pdfIds = cms.untracked.vint32([91400, 306000, 260000]), #unknownOnlyIfEmpty = cms.untracked.vstring(['scale', 'PDF']), #unknownOnlyIfAllEmpty = cms.untracked.bool(False), - storeAllPSweights = cms.bool(False) + keepAllPSWeights = cms.bool(False) ) + +genWeightsTables = cms.Sequence(lheWeights*genWeights*genWeightsTable) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index a9651bcab7e45..78d1b041484a7 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -11,13 +11,12 @@ from PhysicsTools.NanoAOD.ttbarCategorization_cff import * from PhysicsTools.NanoAOD.genparticles_cff import * from PhysicsTools.NanoAOD.particlelevel_cff import * -from PhysicsTools.NanoAOD.genWeightsTable_cfi import * +from PhysicsTools.NanoAOD.genWeights_cff import * from PhysicsTools.NanoAOD.vertices_cff import * from PhysicsTools.NanoAOD.met_cff import * from PhysicsTools.NanoAOD.triggerObjects_cff import * from PhysicsTools.NanoAOD.isotracks_cff import * from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * -from PhysicsTools.NanoAOD.genWeightsTable_cfi import * from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff import run2_nanoAOD_94X2016 diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 88878addd4506..7ff656bc58d17 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -5,7 +5,7 @@ from PhysicsTools.NanoAOD.genparticles_cff import * from PhysicsTools.NanoAOD.particlelevel_cff import * from PhysicsTools.NanoAOD.lheInfoTable_cfi import * -from PhysicsTools.NanoAOD.genWeightsTable_cfi import * +from PhysicsTools.NanoAOD.genWeights_cff import * from PhysicsTools.NanoAOD.common_cff import Var,CandVars nanoMetadata = cms.EDProducer("UniqueStringProducer", @@ -34,13 +34,14 @@ rivetProducerHTXS+ particleLevelTables+ metMCTable+ - genWeightsTable+ + genWeightsTables+ lheInfoTable ) def nanoGenCommonCustomize(process): process.rivetMetTable.extension = False process.lheInfoTable.storeLHEParticles = True + process.lheInfoTable.storeAllLHEInfo = True process.lheInfoTable.precision = 14 process.genWeightsTable.keepAllPSWeights = True process.genJetFlavourAssociation.jets = process.genJetTable.src diff --git a/SimDataFormats/GeneratorProducts/BuildFile.xml b/SimDataFormats/GeneratorProducts/BuildFile.xml index b35ce8e95f1ff..b35e098a0995a 100644 --- a/SimDataFormats/GeneratorProducts/BuildFile.xml +++ b/SimDataFormats/GeneratorProducts/BuildFile.xml @@ -3,6 +3,7 @@ + From d3be328930770642c5882d29468aff05fb2bc2d6 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Thu, 12 Nov 2020 22:49:14 +0100 Subject: [PATCH 173/186] Fix formatting --- .../interface/WeightGroupInfo.h | 75 +++++++++---------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h index 4e239018ab629..e9058546d584c 100644 --- a/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/WeightGroupInfo.h @@ -46,46 +46,45 @@ namespace gen { : isWellFormed_(false), headerEntry_(header), name_(name), firstId_(-1), lastId_(-1) {} WeightGroupInfo(std::string header) : isWellFormed_(false), headerEntry_(header), name_(header), firstId_(-1), lastId_(-1) {} - WeightGroupInfo(const WeightGroupInfo& other) { - copy(other); } - WeightGroupInfo& operator=(const WeightGroupInfo& other) { - copy(other); - return *this; - } - virtual ~WeightGroupInfo(){}; - void copy(const WeightGroupInfo& other); - virtual WeightGroupInfo* clone() const; - WeightMetaInfo weightMetaInfo(int weightEntry) const; - WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; - int weightVectorEntry(std::string& wgtId) const; - bool containsWeight(std::string& wgtId, int weightEntry) const; - int weightVectorEntry(std::string& wgtId, int weightEntry) const; - void addContainedId(int weightEntry, std::string id, std::string label); - std::vector containedIds() const; - bool indexInRange(int index) const; + WeightGroupInfo(const WeightGroupInfo& other) { copy(other); } + WeightGroupInfo& operator=(const WeightGroupInfo& other) { + copy(other); + return *this; + } + virtual ~WeightGroupInfo(){}; + void copy(const WeightGroupInfo& other); + virtual WeightGroupInfo* clone() const; + WeightMetaInfo weightMetaInfo(int weightEntry) const; + WeightMetaInfo weightMetaInfoByGlobalIndex(std::string wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId) const; + bool containsWeight(std::string& wgtId, int weightEntry) const; + int weightVectorEntry(std::string& wgtId, int weightEntry) const; + void addContainedId(int weightEntry, std::string id, std::string label); + std::vector containedIds() const; + bool indexInRange(int index) const; - void setName(std::string name) { name_ = name; } - void setDescription(std::string description) { description_ = description; } - void appendDescription(std::string description) { description_ += description; } - void setHeaderEntry(std::string header) { headerEntry_ = header; } - void setWeightType(WeightType type) { weightType_ = type; } - void setFirstId(int firstId) { firstId_ = firstId; } - void setLastId(int lastId) { lastId_ = lastId; } - // Call before doing lots of searches by label - void cacheWeightIndicesByLabel(); + void setName(std::string name) { name_ = name; } + void setDescription(std::string description) { description_ = description; } + void appendDescription(std::string description) { description_ += description; } + void setHeaderEntry(std::string header) { headerEntry_ = header; } + void setWeightType(WeightType type) { weightType_ = type; } + void setFirstId(int firstId) { firstId_ = firstId; } + void setLastId(int lastId) { lastId_ = lastId; } + // Call before doing lots of searches by label + void cacheWeightIndicesByLabel(); - std::string name() const { return name_; } - std::string description() const { return description_; } - std::string headerEntry() const { return headerEntry_; } - WeightType weightType() const { return weightType_; } - std::vector idsContained() const { return idsContained_; } - size_t nIdsContained() const { return idsContained_.size(); } - int firstId() const { return firstId_; } - int lastId() const { return lastId_; } - // Store whether the group was fully parsed succesfully - void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } - bool isWellFormed() const { return isWellFormed_; } - int weightIndexFromLabel(std::string weightLabel) const; + std::string name() const { return name_; } + std::string description() const { return description_; } + std::string headerEntry() const { return headerEntry_; } + WeightType weightType() const { return weightType_; } + std::vector idsContained() const { return idsContained_; } + size_t nIdsContained() const { return idsContained_.size(); } + int firstId() const { return firstId_; } + int lastId() const { return lastId_; } + // Store whether the group was fully parsed succesfully + void setIsWellFormed(bool wellFormed) { isWellFormed_ = wellFormed; } + bool isWellFormed() const { return isWellFormed_; } + int weightIndexFromLabel(std::string weightLabel) const; std::vector weightLabels() const; protected: From 70855a9ab551c7c0e2815e39420e18678327f41e Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 17 Nov 2020 23:01:19 +0100 Subject: [PATCH 174/186] code format --- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc | 2 +- SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h | 2 +- .../GeneratorProducts/interface/PartonShowerWeightGroupInfo.h | 4 ++-- .../GeneratorProducts/src/PartonShowerWeightGroupInfo.cc | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index d612ae8b8aacd..4441705dd93ab 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -161,7 +161,7 @@ namespace gen { void WeightHelper::updatePartonShowerInfo(gen::PartonShowerWeightGroupInfo& psGroup, const ParsedWeight& weight) { if (psGroup.containedIds().size() == DEFAULT_PSWEIGHT_LENGTH) psGroup.setIsWellFormed(true); - if (weight.content.find(":") != std::string::npos && weight.content.find("=") != std::string::npos) + if (weight.content.find(':') != std::string::npos && weight.content.find('=') != std::string::npos) psGroup.setNameIsPythiaSyntax(true); } diff --git a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc index 9604a2ee6a5e7..de4a95333cddb 100644 --- a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc @@ -286,7 +286,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapname() << " is it wellFormed? " << groupInfo.group->isWellFormed() << std::endl; if (weightType == gen::WeightType::kScaleWeights) { - if (groupInfo.group->isWellFormed() && false) { + if (groupInfo.group->isWellFormed()) { const auto scaleGroup = *static_cast(groupInfo.group.get()); std::cout << "They're well formed, will be ordered as expected\n"; weights = orderedScaleWeights(weights, scaleGroup); diff --git a/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h index c2af82bf3ab90..1a7f0884488d1 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h @@ -27,7 +27,7 @@ class LHEEventProduct { ~LHEEventProduct() = default; - void setPDF(const PDF &pdf) { pdf_.reset(new PDF(pdf)); } + void setPDF(const PDF &pdf) { pdf_ = std::makemake_unique>(pdf); } void addWeight(const WGT &wgt) { weights_.push_back(wgt); } void addComment(const std::string &line) { comments_.push_back(line); } diff --git a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h index 546c158cc24ae..feb8face8658b 100644 --- a/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h +++ b/SimDataFormats/GeneratorProducts/interface/PartonShowerWeightGroupInfo.h @@ -13,9 +13,9 @@ namespace gen { PartonShowerWeightGroupInfo(std::string header, std::string name); PartonShowerWeightGroupInfo(std::string header) : PartonShowerWeightGroupInfo(header, header) {} PartonShowerWeightGroupInfo(const PartonShowerWeightGroupInfo &other) { copy(other); } - virtual ~PartonShowerWeightGroupInfo() override {} + ~PartonShowerWeightGroupInfo() override {} void copy(const PartonShowerWeightGroupInfo &other); - virtual PartonShowerWeightGroupInfo *clone() const override; + PartonShowerWeightGroupInfo *clone() const override; void setNameIsPythiaSyntax(bool isPythiaSyntax) { nameIsPythiaSyntax_ = isPythiaSyntax; } bool nameIsPythiaSyntax() const { return nameIsPythiaSyntax_; } int variationIndex(bool isISR, bool isUp, PSVarType variationType, PSSplittingType splittingType) const; diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index eba4d4571ce26..3201e286696a6 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -108,7 +108,7 @@ namespace gen { void PartonShowerWeightGroupInfo::printVariables() const { const auto& variations = (nameIsPythiaSyntax_) ? expectedOrderPythiaSyntax_ : expectedOrder_; - for (auto varName: variations) { + for (const auto& varName: variations) { int wgtIdx = weightIndexFromLabel(varName); // Guess PS idx if not in label list if (wgtIdx == -1 && guessPSWeightIdx_) From 30ae52f27954aafbb0c6def4290cea3df73ad692 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Tue, 17 Nov 2020 23:07:45 +0100 Subject: [PATCH 175/186] Code format --- .../plugins/ExternalLHEProducer.cc | 3 +- .../NanoAOD/interface/GenWeightCounters.h | 30 +++++++++---------- .../plugins/GenWeightsTableProducer.cc | 2 +- .../interface/GenWeightProduct.h | 2 +- .../interface/LHEEventProduct.h | 2 +- .../src/GenWeightInfoProduct.cc | 9 ++++-- .../src/PartonShowerWeightGroupInfo.cc | 2 +- .../GeneratorProducts/src/WeightGroupInfo.cc | 8 +++-- 8 files changed, 31 insertions(+), 27 deletions(-) diff --git a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc index 546d04099c058..d50e95666d562 100644 --- a/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc +++ b/GeneratorInterface/LHEInterface/plugins/ExternalLHEProducer.cc @@ -72,7 +72,7 @@ Description: [one line class summary] // class declaration // -class ExternalLHEProducer +class ExternalLHEProducer : public edm::one::EDProducer { public: explicit ExternalLHEProducer(const edm::ParameterSet& iConfig); @@ -437,7 +437,6 @@ std::vector ExternalLHEProducer::makeArgs(uint32_t nEvents, return args; } - void ExternalLHEProducer::beginLuminosityBlockProduce(edm::LuminosityBlock& lumi, edm::EventSetup const& es) { auto weightInfoProduct = std::make_unique(); for (auto& weightGroup : weightHelper_.weightGroups()) { diff --git a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h index 1e815e2d5f414..35446d7172e78 100644 --- a/PhysicsTools/NanoAOD/interface/GenWeightCounters.h +++ b/PhysicsTools/NanoAOD/interface/GenWeightCounters.h @@ -46,24 +46,24 @@ namespace genCounter { //incPSOnly(w0, wPS); } - void mergeSumMap(const Counter& other) { - num_ += other.num_; - sumw_ += other.sumw_; - sumw2_ += other.sumw2_; - //if weightMap_ for "this" is empty, create map elements with empty - //vectors before merging - if(weightSumMap_.empty() && !other.weightSumMap_.empty()) { - for(auto& wmap : other.weightSumMap_) { - std::vector temp; - weightSumMap_.insert({wmap.first, temp}); - } + void mergeSumMap(const Counter& other) { + num_ += other.num_; + sumw_ += other.sumw_; + sumw2_ += other.sumw2_; + //if weightMap_ for "this" is empty, create map elements with empty + //vectors before merging + if (weightSumMap_.empty() && !other.weightSumMap_.empty()) { + for (auto& wmap : other.weightSumMap_) { + std::vector temp; + weightSumMap_.insert({wmap.first, temp}); } + } - for(auto& wmap : weightSumMap_) { - if (other.weightSumMap_.find(wmap.first) != other.weightSumMap_.end()) - mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); - } + for (auto& wmap : weightSumMap_) { + if (other.weightSumMap_.find(wmap.first) != other.weightSumMap_.end()) + mergeSumVectors(wmap.second, other.weightSumMap_.at(wmap.first)); } + } //private: // the counters diff --git a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc index de4a95333cddb..e069c4fb12c6b 100644 --- a/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/GenWeightsTableProducer.cc @@ -301,7 +301,7 @@ void LHEWeightsTableProducer::addWeightGroupToTable(std::mapisWellFormed()) { const auto psGroup = *static_cast(groupInfo.group.get()); diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index 1720ff917f1e4..0110600384e6c 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -34,7 +34,7 @@ class GenWeightProduct { if (weightsVector_.empty() && setEntry == 0) addWeightSet(); if (static_cast(weightsVector_.size()) <= setEntry) - throw cms::Exception("GenWeightProduct") << "Trying to add weight index outside the range of weights expected"; + throw cms::Exception("GenWeightProduct") << "Trying to add weight index outside the range of weights expected"; auto& weights = weightsVector_.at(setEntry); if (static_cast(weights.size()) <= weightNum) { weights.resize(weightNum + 1); diff --git a/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h index 1a7f0884488d1..ae6b7e989401b 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h @@ -27,7 +27,7 @@ class LHEEventProduct { ~LHEEventProduct() = default; - void setPDF(const PDF &pdf) { pdf_ = std::makemake_unique>(pdf); } + void setPDF(const PDF &pdf) { pdf_ = std::makemake_unique > (pdf); } void addWeight(const WGT &wgt) { weights_.push_back(wgt); } void addComment(const std::string &line) { comments_.push_back(line); } diff --git a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc index f80cd0033b63d..f54ced13fc6d7 100644 --- a/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc +++ b/SimDataFormats/GeneratorProducts/src/GenWeightInfoProduct.cc @@ -33,7 +33,8 @@ std::unique_ptr GenWeightInfoProduct::containingWeig std::unique_ptr GenWeightInfoProduct::orderedWeightGroupInfo(int weightGroupIndex) const { if (weightGroupIndex >= static_cast(weightGroupsInfo_.size())) - throw cms::Exception("GenWeightInfoProduct") << "Weight index requested is outside the range of weights in the product"; + throw cms::Exception("GenWeightInfoProduct") + << "Weight index requested is outside the range of weights in the product"; return std::unique_ptr(weightGroupsInfo_[weightGroupIndex].clone()); } @@ -61,7 +62,8 @@ std::optional GenWeightInfoProduct::pdfGroupWithIndexByLHA std::vector pdfGroups = weightGroupsAndIndicesByType(gen::WeightType::kPdfWeights); auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = std::unique_ptr(static_cast(data.group.release())); + auto pdfGroup = std::unique_ptr( + static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); @@ -77,7 +79,8 @@ std::vector GenWeightInfoProduct::pdfGroupsWithIndicesByLH for (auto lhaid : lhaids) { auto matchingPdfSet = std::find_if(pdfGroups.begin(), pdfGroups.end(), [lhaid](gen::WeightGroupData& data) { - auto pdfGroup = std::unique_ptr(static_cast(data.group.release())); + auto pdfGroup = std::unique_ptr( + static_cast(data.group.release())); return pdfGroup->containsLhapdfId(lhaid); }); if (matchingPdfSet != pdfGroups.end()) { diff --git a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc index 3201e286696a6..d54d00212e7b1 100644 --- a/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/PartonShowerWeightGroupInfo.cc @@ -108,7 +108,7 @@ namespace gen { void PartonShowerWeightGroupInfo::printVariables() const { const auto& variations = (nameIsPythiaSyntax_) ? expectedOrderPythiaSyntax_ : expectedOrder_; - for (const auto& varName: variations) { + for (const auto& varName : variations) { int wgtIdx = weightIndexFromLabel(varName); // Guess PS idx if not in label list if (wgtIdx == -1 && guessPSWeightIdx_) diff --git a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc index 641270ad36d02..90ad7c284aca5 100644 --- a/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc +++ b/SimDataFormats/GeneratorProducts/src/WeightGroupInfo.cc @@ -18,7 +18,8 @@ namespace gen { } WeightGroupInfo* WeightGroupInfo::clone() const { - throw cms::Exception("WeightGroupInfo") << "WeightGroupInfo is abstract, so it's clone() method can't be implemented."; + throw cms::Exception("WeightGroupInfo") + << "WeightGroupInfo is abstract, so it's clone() method can't be implemented."; } WeightMetaInfo WeightGroupInfo::weightMetaInfo(int weightEntry) const { return idsContained_.at(weightEntry); } @@ -28,8 +29,9 @@ namespace gen { wgtId = std::to_string(weightEntry); int entry = weightVectorEntry(wgtId, weightEntry); if (entry < 0 || entry >= static_cast(idsContained_.size())) - throw cms::Exception("WeightGroupInfo") << "Weight entry " << std::to_string(weightEntry) << " is not a member of group " - << name_ << ". \n firstID = " << std::to_string(firstId_) << " lastId = " << std::to_string(lastId_); + throw cms::Exception("WeightGroupInfo") + << "Weight entry " << std::to_string(weightEntry) << " is not a member of group " << name_ + << ". \n firstID = " << std::to_string(firstId_) << " lastId = " << std::to_string(lastId_); return idsContained_.at(entry); } From 45323bb8e501e9132b8ede0a5289873ec2429a22 Mon Sep 17 00:00:00 2001 From: Kenneth Long Date: Wed, 18 Nov 2020 09:41:11 +0100 Subject: [PATCH 176/186] Fix merge mistakes --- PhysicsTools/NanoAOD/python/nano_cff.py | 4 ---- SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 57117685262b2..b98faffe69fb2 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -102,12 +102,8 @@ lheInfoTable = cms.EDProducer("LHETablesProducer", lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), precision = cms.int32(14), -<<<<<<< HEAD - storeLHEParticles = cms.bool(True) -======= storeLHEParticles = cms.bool(True), storeAllLHEInfo = cms.bool(False), ->>>>>>> kdlong/GenWeightRefactor_master ) l1bits=cms.EDProducer("L1TriggerResultsConverter", src=cms.InputTag("gtStage2Digis"), legacyL1=cms.bool(False), diff --git a/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h b/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h index ae6b7e989401b..b2b8e1358b08f 100644 --- a/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h @@ -27,7 +27,7 @@ class LHEEventProduct { ~LHEEventProduct() = default; - void setPDF(const PDF &pdf) { pdf_ = std::makemake_unique > (pdf); } + void setPDF(const PDF &pdf) { pdf_ = std::make_unique(pdf); } void addWeight(const WGT &wgt) { weights_.push_back(wgt); } void addComment(const std::string &line) { comments_.push_back(line); } From 7553ecbf1073d18cf2798005711a62335367aa25 Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Wed, 18 Nov 2020 17:27:30 +0100 Subject: [PATCH 177/186] fixing issues in build --- GeneratorInterface/Core/interface/WeightHelper.h | 2 +- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/GeneratorInterface/Core/interface/WeightHelper.h b/GeneratorInterface/Core/interface/WeightHelper.h index ed857f07bd8dc..517e57181d650 100644 --- a/GeneratorInterface/Core/interface/WeightHelper.h +++ b/GeneratorInterface/Core/interface/WeightHelper.h @@ -110,7 +110,7 @@ namespace gen { i++; } } - return std::move(weightProduct); + return weightProduct; } } // namespace gen diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 4441705dd93ab..bf5890eb4b4d7 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -329,7 +329,7 @@ namespace gen { if (weight.wgtGroup_idx == numGroups) { weightGroups_.push_back(*buildGroup(weight)); } else if (weight.wgtGroup_idx >= numGroups) - throw std::range_error("Invalid group index " + weight.wgtGroup_idx); + throw std::range_error("Invalid group index " + std::to_string(weight.wgtGroup_idx)); // split PDF groups if (splitPdfWeight(weight)) diff --git a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h index 0110600384e6c..601b37ca46bc9 100644 --- a/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h +++ b/SimDataFormats/GeneratorProducts/interface/GenWeightProduct.h @@ -8,6 +8,7 @@ #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h" #include "SimDataFormats/GeneratorProducts/interface/WeightsInfo.h" +#include "FWCore/Utilities/interface/Exception.h" typedef std::vector> WeightsContainer; From f672f4690670225f031803655a2a8be40d908a79 Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Wed, 18 Nov 2020 18:26:00 +0100 Subject: [PATCH 178/186] moving throw to exception --- GeneratorInterface/Core/src/WeightHelper.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index bf5890eb4b4d7..6e72d8b77e8e3 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -1,5 +1,6 @@ #include "GeneratorInterface/Core/interface/WeightHelper.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/Utilities/interface/Exception.h" #include namespace gen { @@ -253,8 +254,9 @@ namespace gen { counter++; } // Needs to be properly handled - throw std::range_error("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + - "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); + cms::Exception("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); + return -1; } void WeightHelper::printWeights() { @@ -329,7 +331,7 @@ namespace gen { if (weight.wgtGroup_idx == numGroups) { weightGroups_.push_back(*buildGroup(weight)); } else if (weight.wgtGroup_idx >= numGroups) - throw std::range_error("Invalid group index " + std::to_string(weight.wgtGroup_idx)); + cms::Exception("Invalid group index " + std::to_string(weight.wgtGroup_idx)); // split PDF groups if (splitPdfWeight(weight)) From 7fd9c2c002b33312d9cb2640357e2ec387b4ac6e Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Fri, 20 Nov 2020 13:43:28 +0100 Subject: [PATCH 179/186] attempt to delete extra kets after the last --- GeneratorInterface/Core/src/LHEWeightHelper.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 4be51105c9cec..5534070acb059 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -35,6 +35,14 @@ namespace gen { xmlError = xmlDoc.Parse(fullHeader.c_str()); } + // delete extra strings after the last (occasionally contain '<' or '>') + if (xmlError !=0 && !failIfInvalidXML_) { + std::string theKet = ""; + std::size_t theLastKet = fullHeader.rfind(theKet) + theKet.length(); + fullHeader = fullHeader.substr(0, theLastKet); + xmlError = xmlDoc.Parse(fullHeader.c_str()); + } + // error persists (how to handle error?) if (xmlError != 0) { std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; From 0ef65ec62b8dc54905be59a6fb1d11e99c773d7b Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Fri, 20 Nov 2020 13:49:30 +0100 Subject: [PATCH 180/186] fix runtime error --- PhysicsTools/NanoAOD/python/nanogen_cff.py | 1 + 1 file changed, 1 insertion(+) diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index bcff05f2416c0..53978e512e11d 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -7,6 +7,7 @@ from PhysicsTools.NanoAOD.lheInfoTable_cfi import * from PhysicsTools.NanoAOD.genVertex_cff import * from PhysicsTools.NanoAOD.common_cff import Var,CandVars +from PhysicsTools.NanoAOD.genWeights_cff import * nanoMetadata = cms.EDProducer("UniqueStringProducer", strings = cms.PSet( From 3db8cfcc02fd3badc9b610009d882c41e25ec1d0 Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Fri, 20 Nov 2020 17:01:12 +0100 Subject: [PATCH 181/186] failIfInvalidXML_ cleanup --- .../Core/interface/LHEWeightHelper.h | 2 + .../Core/src/LHEWeightHelper.cc | 65 +++++++++++-------- 2 files changed, 39 insertions(+), 28 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 80bd3cf14af19..2f50509bb79c1 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -32,6 +32,8 @@ namespace gen { std::string parseGroupName(tinyxml2::XMLElement* el); void addGroup(tinyxml2::XMLElement* inner, std::string groupName, int groupIndex, int& weightIndex); bool parseLHE(tinyxml2::XMLDocument& xmlDoc); + tinyxml2::XMLError tryReplaceHtmlStyle(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader); + tinyxml2::XMLError tryRemoveTrailings(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index 5534070acb059..b11ae20d1cf80 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -12,11 +12,12 @@ namespace gen { bool LHEWeightHelper::parseLHE(tinyxml2::XMLDocument& xmlDoc) { parsedWeights_.clear(); - if (!isConsistent() && failIfInvalidXML_) { - throw cms::Exception("LHEWeightHelper") - << "XML in LHE is not consistent: Most likely, XML tags are out of order."; - } else if (!isConsistent()) { - swapHeaders(); + // line-by-line checks + if (!isConsistent()) { + if (failIfInvalidXML_) { + throw cms::Exception("LHEWeightHelper") + << "XML in LHE is not consistent: Most likely, XML tags are out of order."; + } else swapHeaders(); } std::string fullHeader = boost::algorithm::join(headerLines_, ""); @@ -24,30 +25,21 @@ namespace gen { std::cout << "Full header is \n" << fullHeader << std::endl; int xmlError = xmlDoc.Parse(fullHeader.c_str()); - // in case of > instead of < - if (xmlError != 0 && failIfInvalidXML_) { - xmlDoc.PrintError(); - throw cms::Exception("LHEWeightHelper") - << "The LHE header is not valid XML! Weight information was not properly parsed."; - } else if (xmlError != 0 && !failIfInvalidXML_) { - boost::replace_all(fullHeader, "<", "<"); - boost::replace_all(fullHeader, ">", ">"); - xmlError = xmlDoc.Parse(fullHeader.c_str()); - } - - // delete extra strings after the last (occasionally contain '<' or '>') - if (xmlError !=0 && !failIfInvalidXML_) { - std::string theKet = ""; - std::size_t theLastKet = fullHeader.rfind(theKet) + theKet.length(); - fullHeader = fullHeader.substr(0, theLastKet); - xmlError = xmlDoc.Parse(fullHeader.c_str()); - } - - // error persists (how to handle error?) + // letter-by-letter checks if (xmlError != 0) { - std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; - error += xmlDoc.ErrorStr(); - throw cms::Exception("LHEWeightHelper") << error; + if (failIfInvalidXML_) { + xmlDoc.PrintError(); + throw cms::Exception("LHEWeightHelper") + << "The LHE header is not valid XML! Weight information was not properly parsed."; + } + + xmlError = tryReplaceHtmlStyle(xmlDoc, fullHeader); + if (xmlError != 0) xmlError = tryRemoveTrailings(xmlDoc, fullHeader); + else if (xmlError != 0) { + std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; + error += xmlDoc.ErrorStr(); + throw cms::Exception("LHEWeightHelper") << error; + } } return true; @@ -159,4 +151,21 @@ namespace gen { } } } + + tinyxml2::XMLError LHEWeightHelper::tryReplaceHtmlStyle(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader) { + // in case of > instead of < + boost::replace_all(fullHeader, "<", "<"); + boost::replace_all(fullHeader, ">", ">"); + + return xmlDoc.Parse(fullHeader.c_str()); + } + + tinyxml2::XMLError LHEWeightHelper::tryRemoveTrailings(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader) { + // delete extra strings after the last (occasionally contain '<' or '>') + std::string theKet = ""; + std::size_t theLastKet = fullHeader.rfind(theKet) + theKet.length(); + fullHeader = fullHeader.substr(0, theLastKet); + + return xmlDoc.Parse(fullHeader.c_str()); + } } // namespace gen From 5db30d3b4ee7d960c5fb641373828799ff6710ff Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Sat, 21 Nov 2020 08:33:49 +0100 Subject: [PATCH 182/186] failIfInvalidXML_ cleanup (2) --- .../Core/interface/LHEWeightHelper.h | 5 ++ .../Core/src/LHEWeightHelper.cc | 48 +++++++++++-------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/GeneratorInterface/Core/interface/LHEWeightHelper.h b/GeneratorInterface/Core/interface/LHEWeightHelper.h index 2f50509bb79c1..0418823095f2e 100644 --- a/GeneratorInterface/Core/interface/LHEWeightHelper.h +++ b/GeneratorInterface/Core/interface/LHEWeightHelper.h @@ -20,6 +20,9 @@ namespace gen { class LHEWeightHelper : public WeightHelper { public: LHEWeightHelper() : WeightHelper(){}; + + enum ErrorType { SWAPHEADER, HTMLSTYLE, TRAILINGSTR, UNKNOWN }; + void setHeaderLines(std::vector headerLines); void parseWeights(); bool isConsistent(); @@ -28,12 +31,14 @@ namespace gen { private: std::vector headerLines_; + std::string weightgroupKet_ = ""; bool failIfInvalidXML_ = false; std::string parseGroupName(tinyxml2::XMLElement* el); void addGroup(tinyxml2::XMLElement* inner, std::string groupName, int groupIndex, int& weightIndex); bool parseLHE(tinyxml2::XMLDocument& xmlDoc); tinyxml2::XMLError tryReplaceHtmlStyle(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader); tinyxml2::XMLError tryRemoveTrailings(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader); + ErrorType findErrorType(std::string& fullHeader); }; } // namespace gen diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index b11ae20d1cf80..e85de47d85afc 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -12,33 +12,34 @@ namespace gen { bool LHEWeightHelper::parseLHE(tinyxml2::XMLDocument& xmlDoc) { parsedWeights_.clear(); - // line-by-line checks - if (!isConsistent()) { - if (failIfInvalidXML_) { - throw cms::Exception("LHEWeightHelper") - << "XML in LHE is not consistent: Most likely, XML tags are out of order."; - } else swapHeaders(); - } - std::string fullHeader = boost::algorithm::join(headerLines_, ""); if (debug_) std::cout << "Full header is \n" << fullHeader << std::endl; int xmlError = xmlDoc.Parse(fullHeader.c_str()); - // letter-by-letter checks - if (xmlError != 0) { + while ( !isConsistent() || xmlError != 0 ) { if (failIfInvalidXML_) { xmlDoc.PrintError(); throw cms::Exception("LHEWeightHelper") << "The LHE header is not valid XML! Weight information was not properly parsed."; } - - xmlError = tryReplaceHtmlStyle(xmlDoc, fullHeader); - if (xmlError != 0) xmlError = tryRemoveTrailings(xmlDoc, fullHeader); - else if (xmlError != 0) { - std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; - error += xmlDoc.ErrorStr(); - throw cms::Exception("LHEWeightHelper") << error; + + switch (findErrorType(fullHeader)) { + case ErrorType::SWAPHEADER: + swapHeaders(); + fullHeader = boost::algorithm::join(headerLines_, ""); + xmlError = xmlDoc.Parse(fullHeader.c_str()); + break; + case ErrorType::HTMLSTYLE: + xmlError = tryReplaceHtmlStyle(xmlDoc, fullHeader); + break; + case ErrorType::TRAILINGSTR: + xmlError = tryRemoveTrailings(xmlDoc, fullHeader); + break; + case ErrorType::UNKNOWN: + std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; + error += xmlDoc.ErrorStr(); + throw cms::Exception("LHEWeightHelper") << error; } } @@ -162,10 +163,19 @@ namespace gen { tinyxml2::XMLError LHEWeightHelper::tryRemoveTrailings(tinyxml2::XMLDocument& xmlDoc, std::string& fullHeader) { // delete extra strings after the last (occasionally contain '<' or '>') - std::string theKet = ""; - std::size_t theLastKet = fullHeader.rfind(theKet) + theKet.length(); + std::size_t theLastKet = fullHeader.rfind(weightgroupKet_) + weightgroupKet_.length(); fullHeader = fullHeader.substr(0, theLastKet); return xmlDoc.Parse(fullHeader.c_str()); } + + LHEWeightHelper::ErrorType LHEWeightHelper::findErrorType(std::string& fullHeader) { + if ( !isConsistent() ) return LHEWeightHelper::ErrorType::SWAPHEADER; + if ( fullHeader.find("<")!=std::string::npos || fullHeader.find(">")!=std::string::npos ) return LHEWeightHelper::ErrorType::HTMLSTYLE; + + std::string trailingCand = fullHeader.substr( fullHeader.rfind(weightgroupKet_) + std::string(weightgroupKet_).length() ); + if ( trailingCand.find("<")!=std::string::npos || trailingCand.find(">")!=std::string::npos ) return LHEWeightHelper::ErrorType::TRAILINGSTR; + + return LHEWeightHelper::ErrorType::UNKNOWN; + } } // namespace gen From 26e4edd902a5ee810a753dea896ebbc233b9570f Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Tue, 24 Nov 2020 10:01:28 +0100 Subject: [PATCH 183/186] scram b code-format --- .../Core/src/LHEWeightHelper.cc | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/GeneratorInterface/Core/src/LHEWeightHelper.cc b/GeneratorInterface/Core/src/LHEWeightHelper.cc index e85de47d85afc..290b8fd77f268 100644 --- a/GeneratorInterface/Core/src/LHEWeightHelper.cc +++ b/GeneratorInterface/Core/src/LHEWeightHelper.cc @@ -17,13 +17,13 @@ namespace gen { std::cout << "Full header is \n" << fullHeader << std::endl; int xmlError = xmlDoc.Parse(fullHeader.c_str()); - while ( !isConsistent() || xmlError != 0 ) { + while (!isConsistent() || xmlError != 0) { if (failIfInvalidXML_) { xmlDoc.PrintError(); throw cms::Exception("LHEWeightHelper") << "The LHE header is not valid XML! Weight information was not properly parsed."; } - + switch (findErrorType(fullHeader)) { case ErrorType::SWAPHEADER: swapHeaders(); @@ -37,7 +37,8 @@ namespace gen { xmlError = tryRemoveTrailings(xmlDoc, fullHeader); break; case ErrorType::UNKNOWN: - std::string error = "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; + std::string error = + "Fatal error when parsing the LHE header. The header is not valid XML! Parsing error was "; error += xmlDoc.ErrorStr(); throw cms::Exception("LHEWeightHelper") << error; } @@ -165,16 +166,20 @@ namespace gen { // delete extra strings after the last (occasionally contain '<' or '>') std::size_t theLastKet = fullHeader.rfind(weightgroupKet_) + weightgroupKet_.length(); fullHeader = fullHeader.substr(0, theLastKet); - + return xmlDoc.Parse(fullHeader.c_str()); } LHEWeightHelper::ErrorType LHEWeightHelper::findErrorType(std::string& fullHeader) { - if ( !isConsistent() ) return LHEWeightHelper::ErrorType::SWAPHEADER; - if ( fullHeader.find("<")!=std::string::npos || fullHeader.find(">")!=std::string::npos ) return LHEWeightHelper::ErrorType::HTMLSTYLE; - - std::string trailingCand = fullHeader.substr( fullHeader.rfind(weightgroupKet_) + std::string(weightgroupKet_).length() ); - if ( trailingCand.find("<")!=std::string::npos || trailingCand.find(">")!=std::string::npos ) return LHEWeightHelper::ErrorType::TRAILINGSTR; + if (!isConsistent()) + return LHEWeightHelper::ErrorType::SWAPHEADER; + if (fullHeader.find("<") != std::string::npos || fullHeader.find(">") != std::string::npos) + return LHEWeightHelper::ErrorType::HTMLSTYLE; + + std::string trailingCand = + fullHeader.substr(fullHeader.rfind(weightgroupKet_) + std::string(weightgroupKet_).length()); + if (trailingCand.find('<') != std::string::npos || trailingCand.find('>') != std::string::npos) + return LHEWeightHelper::ErrorType::TRAILINGSTR; return LHEWeightHelper::ErrorType::UNKNOWN; } From 239fa5deece856dc861168f23e5a7423cddea1de Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Thu, 26 Nov 2020 08:36:09 +0100 Subject: [PATCH 184/186] fix Sherpa crashes --- GeneratorInterface/Core/src/WeightHelper.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 6e72d8b77e8e3..c98b18a692ed7 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -209,7 +209,7 @@ namespace gen { bool isUnassociated = false; try { groupIndex = findContainingWeightGroup(name, weightNum, groupIndex); - } catch (const std::range_error& e) { + } catch (const cms::Exception& e) { std::cerr << "WARNING: " << e.what() << std::endl; isUnassociated = true; @@ -254,7 +254,7 @@ namespace gen { counter++; } // Needs to be properly handled - cms::Exception("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + + throw cms::Exception("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); return -1; } From 6036cab58ab7225e9fd6a3d7ffff9bf8997cf8c5 Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Thu, 26 Nov 2020 08:46:01 +0100 Subject: [PATCH 185/186] code-formats --- GeneratorInterface/Core/src/WeightHelper.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index c98b18a692ed7..82ff1d810e251 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -255,7 +255,7 @@ namespace gen { } // Needs to be properly handled throw cms::Exception("Unmatched Generator weight! ID was " + wgtId + " index was " + std::to_string(weightIndex) + - "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); + "\nNot found in any of " + std::to_string(weightGroups_.size()) + " weightGroups."); return -1; } From a28751af3abe56ff95075e453d9ce7936450d489 Mon Sep 17 00:00:00 2001 From: Sanghyun Ko Date: Thu, 26 Nov 2020 09:04:15 +0100 Subject: [PATCH 186/186] prevent underflow --- GeneratorInterface/Core/src/WeightHelper.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GeneratorInterface/Core/src/WeightHelper.cc b/GeneratorInterface/Core/src/WeightHelper.cc index 82ff1d810e251..234f041ec0cfa 100644 --- a/GeneratorInterface/Core/src/WeightHelper.cc +++ b/GeneratorInterface/Core/src/WeightHelper.cc @@ -213,6 +213,8 @@ namespace gen { std::cerr << "WARNING: " << e.what() << std::endl; isUnassociated = true; + // initialize index to 0, prevent underflow when accessing vector + groupIndex = 0; bool foundUnassocGroup = false; while (!foundUnassocGroup && groupIndex < static_cast(weightGroups_.size())) { auto& g = weightGroups_[groupIndex];