From 47b8a59e1d4a26a13df67f45f0c380a1447a4441 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Wed, 7 Sep 2016 15:26:58 +0300
Subject: [PATCH 01/12] Setting ForcePositive flag in PdfSet info file to 0 or
 1 after processing

---
 tools/process/combine.c | 20 ++++++++++++++++++--
 tools/process/profile.c |  4 ++++
 tools/process/rotate.c  |  4 ++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index cdfdeee6e..2ce3bf532 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -46,7 +46,9 @@ int combine(int argc, char* argv[0]){
   Member_List** member_lists;
   Info_Node * alphas_qs;
   Info_Node * alphas_vals;
-  for (i_added_set = 0; i_added_set<n_added_sets; i_added_set++) {
+  int forcepositive = 1;
+
+  for (i_added_set = 0; i_added_set < n_added_sets; i_added_set++) {
     args[i_added_set] = argv[i_added_set+2];
   }
 
@@ -63,6 +65,11 @@ int combine(int argc, char* argv[0]){
     if (member_lists[i_added_set]->in_path == NULL) puts("NULLL");
     if (load_lhapdf6_set(&Set2, member_lists[i_added_set]->in_path)) return 1;    
 
+    Info_Node* FP_par = info_node_where(Set2.info, "ForcePositive");
+    if (FP_par == NULL || FP_par->value.string == "0") {
+      forcepositive = 0;
+    }
+
     char * setname = basename(member_lists[i_added_set]->in_path);
     if (member_lists[i_added_set]->n_pdfs == 0) {
       member_lists[i_added_set]->n_pdfs = Set2.n_members;
@@ -136,6 +143,14 @@ int combine(int argc, char* argv[0]){
   
   info_node_update_str(info_node_where(SetOut->info, "NumMembers"), tot_pdf_number_str);  
   
+  Info_Node* FP_par_orig = info_node_where(Set1.info, "ForcePositive");
+  //printf("forcepositive = %i\n", forcepositive);
+  if (FP_par_orig != NULL) {
+    if (!strcmp(FP_par_orig->value.string, "1") && forcepositive == 0) {
+      info_node_update_str (info_node_where (SetOut->info, "ForcePositive"), "0");  
+    }
+  }
+
   save_lhapdf6_set(SetOut, out_path);
 
   tot_pdf_number=0;
@@ -175,6 +190,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
     exit(1);
   }
   for (i_added_set=0; i_added_set<n_added_sets; i_added_set++){
+    i = 0;    
     colon = strchr(args[i_added_set], ':');
     member_lists[i_added_set]=malloc(sizeof(Member_List)); 
     if( !member_lists[i_added_set] ) {
@@ -198,7 +214,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
         printf("Memory could not be allocated!");
         exit(1);
       }
-      i=0;
+     
       while (comma2 != NULL) {
         strncpy(pdf_number, comma1+1, comma2 - comma1-1);
         member_lists[i_added_set]->pdf_numbers = realloc(member_lists[i_added_set]->pdf_numbers,(i+1)*sizeof(int));
diff --git a/tools/process/profile.c b/tools/process/profile.c
index cb5675b27..ad057beba 100644
--- a/tools/process/profile.c
+++ b/tools/process/profile.c
@@ -150,6 +150,10 @@ int profile(int argc, char* argv[]) {
                 exit(1);
         }
 
+	Info_Node* FP = info_node_where(shifted.info, "ForcePositive");
+	if(FP == NULL) shifted.info = info_add_node_str(shifted.info, "ForcePositive", "0");
+	else info_node_update_str(FP, "0");
+
         save_lhapdf6_set(&shifted, out_path);       
         puts("profiled\n");
         free(in_path_tmp);
diff --git a/tools/process/rotate.c b/tools/process/rotate.c
index 84ebbfd54..1b846bde1 100644
--- a/tools/process/rotate.c
+++ b/tools/process/rotate.c
@@ -86,6 +86,10 @@ int rotate(int argc,char* argv[]) {
                 exit(1);
         }
 
+        Info_Node* FP = info_node_where(rotated.info, "ForcePositive");
+        if(FP == NULL) rotated.info = info_add_node_str(rotated.info, "ForcePositive", "0");
+        else info_node_update_str(FP, "0");
+
         save_lhapdf6_set(&rotated, out_path);
         
         return EXIT_SUCCESS;
-- 
GitLab


From e8f7b3a63a1fee15998296ffb6ad58a05660c11c Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Thu, 8 Sep 2016 11:53:37 +0300
Subject: [PATCH 02/12] Setting ForcePositive flag in PdfSet info file to 0 or
 1 after processing

---
 tools/process/combine.c | 20 ++++++++++++++++++--
 tools/process/profile.c |  4 ++++
 tools/process/rotate.c  |  4 ++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index cdfdeee6e..2ce3bf532 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -46,7 +46,9 @@ int combine(int argc, char* argv[0]){
   Member_List** member_lists;
   Info_Node * alphas_qs;
   Info_Node * alphas_vals;
-  for (i_added_set = 0; i_added_set<n_added_sets; i_added_set++) {
+  int forcepositive = 1;
+
+  for (i_added_set = 0; i_added_set < n_added_sets; i_added_set++) {
     args[i_added_set] = argv[i_added_set+2];
   }
 
@@ -63,6 +65,11 @@ int combine(int argc, char* argv[0]){
     if (member_lists[i_added_set]->in_path == NULL) puts("NULLL");
     if (load_lhapdf6_set(&Set2, member_lists[i_added_set]->in_path)) return 1;    
 
+    Info_Node* FP_par = info_node_where(Set2.info, "ForcePositive");
+    if (FP_par == NULL || FP_par->value.string == "0") {
+      forcepositive = 0;
+    }
+
     char * setname = basename(member_lists[i_added_set]->in_path);
     if (member_lists[i_added_set]->n_pdfs == 0) {
       member_lists[i_added_set]->n_pdfs = Set2.n_members;
@@ -136,6 +143,14 @@ int combine(int argc, char* argv[0]){
   
   info_node_update_str(info_node_where(SetOut->info, "NumMembers"), tot_pdf_number_str);  
   
+  Info_Node* FP_par_orig = info_node_where(Set1.info, "ForcePositive");
+  //printf("forcepositive = %i\n", forcepositive);
+  if (FP_par_orig != NULL) {
+    if (!strcmp(FP_par_orig->value.string, "1") && forcepositive == 0) {
+      info_node_update_str (info_node_where (SetOut->info, "ForcePositive"), "0");  
+    }
+  }
+
   save_lhapdf6_set(SetOut, out_path);
 
   tot_pdf_number=0;
@@ -175,6 +190,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
     exit(1);
   }
   for (i_added_set=0; i_added_set<n_added_sets; i_added_set++){
+    i = 0;    
     colon = strchr(args[i_added_set], ':');
     member_lists[i_added_set]=malloc(sizeof(Member_List)); 
     if( !member_lists[i_added_set] ) {
@@ -198,7 +214,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
         printf("Memory could not be allocated!");
         exit(1);
       }
-      i=0;
+     
       while (comma2 != NULL) {
         strncpy(pdf_number, comma1+1, comma2 - comma1-1);
         member_lists[i_added_set]->pdf_numbers = realloc(member_lists[i_added_set]->pdf_numbers,(i+1)*sizeof(int));
diff --git a/tools/process/profile.c b/tools/process/profile.c
index cb5675b27..ad057beba 100644
--- a/tools/process/profile.c
+++ b/tools/process/profile.c
@@ -150,6 +150,10 @@ int profile(int argc, char* argv[]) {
                 exit(1);
         }
 
+	Info_Node* FP = info_node_where(shifted.info, "ForcePositive");
+	if(FP == NULL) shifted.info = info_add_node_str(shifted.info, "ForcePositive", "0");
+	else info_node_update_str(FP, "0");
+
         save_lhapdf6_set(&shifted, out_path);       
         puts("profiled\n");
         free(in_path_tmp);
diff --git a/tools/process/rotate.c b/tools/process/rotate.c
index 84ebbfd54..1b846bde1 100644
--- a/tools/process/rotate.c
+++ b/tools/process/rotate.c
@@ -86,6 +86,10 @@ int rotate(int argc,char* argv[]) {
                 exit(1);
         }
 
+        Info_Node* FP = info_node_where(rotated.info, "ForcePositive");
+        if(FP == NULL) rotated.info = info_add_node_str(rotated.info, "ForcePositive", "0");
+        else info_node_update_str(FP, "0");
+
         save_lhapdf6_set(&rotated, out_path);
         
         return EXIT_SUCCESS;
-- 
GitLab


From a5cf0f39c03aa2a1c943f8e28b8bc10ab5f0e0db Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Thu, 27 Oct 2016 15:19:09 +0300
Subject: [PATCH 03/12] combine help mesg fix

---
 tools/process/combine.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index 2ce3bf532..a527b6317 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -5,7 +5,7 @@
 
 
 static void help() {
-  puts("usage: postproc combine outdir dir1 dir2[:pdfs]");
+  puts("usage: xfitter-process combine outdir dir1 dir2[:pdfs]");
   puts("          outdir -  path to output set");
   puts("          dir1 - path to pdf containing grid");
   puts("          dir2 - path to interpolated pdfs");
-- 
GitLab


From a68a6124368a7ebd95471105c54450a5562299e1 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Thu, 27 Oct 2016 14:23:43 +0200
Subject: [PATCH 04/12] combine help message fix

---
 tools/process/combine.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index 2ce3bf532..a527b6317 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -5,7 +5,7 @@
 
 
 static void help() {
-  puts("usage: postproc combine outdir dir1 dir2[:pdfs]");
+  puts("usage: xfitter-process combine outdir dir1 dir2[:pdfs]");
   puts("          outdir -  path to output set");
   puts("          dir1 - path to pdf containing grid");
   puts("          dir2 - path to interpolated pdfs");
-- 
GitLab


From 3693a0f89bf483061d6e1039d92b38dd92ff7bcb Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Mon, 31 Oct 2016 13:11:17 +0300
Subject: [PATCH 05/12] combine help message fix

---
 tools/process/combine.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index a527b6317..62610d94f 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -5,10 +5,10 @@
 
 
 static void help() {
-  puts("usage: xfitter-process combine outdir dir1 dir2[:pdfs]");
-  puts("          outdir -  path to output set");
-  puts("          dir1 - path to pdf containing grid");
-  puts("          dir2 - path to interpolated pdfs");
+  puts("usage: xfitter-process combine pdf_dir_out base_pdf_dir added_pdf_dirs[:pdfs]");
+  puts("          pdf_dir_out -  path to output set");
+  puts("          base_pdf_dir - path to pdf containing grid");
+  puts("          added_pdf_dirs - paths to interpolated pdfs");
   puts("          pdfs - numbers of interpolated pdfs, separated by commas");
   puts("          e.g. 2,7,15");
   puts("          there should be no space between number and comma");
-- 
GitLab


From 8ed0db13634c7b806d5637c3f5c71f3d66c2212f Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Mon, 31 Oct 2016 15:55:58 +0300
Subject: [PATCH 06/12] Revert "Setting ForcePositive flag in PdfSet info file
 to 0 or 1 after processing"

This reverts commit e8f7b3a63a1fee15998296ffb6ad58a05660c11c.
---
 tools/process/combine.c | 20 ++------------------
 tools/process/profile.c |  4 ----
 tools/process/rotate.c  |  4 ----
 3 files changed, 2 insertions(+), 26 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index 62610d94f..ed573f68e 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -46,9 +46,7 @@ int combine(int argc, char* argv[0]){
   Member_List** member_lists;
   Info_Node * alphas_qs;
   Info_Node * alphas_vals;
-  int forcepositive = 1;
-
-  for (i_added_set = 0; i_added_set < n_added_sets; i_added_set++) {
+  for (i_added_set = 0; i_added_set<n_added_sets; i_added_set++) {
     args[i_added_set] = argv[i_added_set+2];
   }
 
@@ -65,11 +63,6 @@ int combine(int argc, char* argv[0]){
     if (member_lists[i_added_set]->in_path == NULL) puts("NULLL");
     if (load_lhapdf6_set(&Set2, member_lists[i_added_set]->in_path)) return 1;    
 
-    Info_Node* FP_par = info_node_where(Set2.info, "ForcePositive");
-    if (FP_par == NULL || FP_par->value.string == "0") {
-      forcepositive = 0;
-    }
-
     char * setname = basename(member_lists[i_added_set]->in_path);
     if (member_lists[i_added_set]->n_pdfs == 0) {
       member_lists[i_added_set]->n_pdfs = Set2.n_members;
@@ -143,14 +136,6 @@ int combine(int argc, char* argv[0]){
   
   info_node_update_str(info_node_where(SetOut->info, "NumMembers"), tot_pdf_number_str);  
   
-  Info_Node* FP_par_orig = info_node_where(Set1.info, "ForcePositive");
-  //printf("forcepositive = %i\n", forcepositive);
-  if (FP_par_orig != NULL) {
-    if (!strcmp(FP_par_orig->value.string, "1") && forcepositive == 0) {
-      info_node_update_str (info_node_where (SetOut->info, "ForcePositive"), "0");  
-    }
-  }
-
   save_lhapdf6_set(SetOut, out_path);
 
   tot_pdf_number=0;
@@ -190,7 +175,6 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
     exit(1);
   }
   for (i_added_set=0; i_added_set<n_added_sets; i_added_set++){
-    i = 0;    
     colon = strchr(args[i_added_set], ':');
     member_lists[i_added_set]=malloc(sizeof(Member_List)); 
     if( !member_lists[i_added_set] ) {
@@ -214,7 +198,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
         printf("Memory could not be allocated!");
         exit(1);
       }
-     
+      i=0;
       while (comma2 != NULL) {
         strncpy(pdf_number, comma1+1, comma2 - comma1-1);
         member_lists[i_added_set]->pdf_numbers = realloc(member_lists[i_added_set]->pdf_numbers,(i+1)*sizeof(int));
diff --git a/tools/process/profile.c b/tools/process/profile.c
index ad057beba..cb5675b27 100644
--- a/tools/process/profile.c
+++ b/tools/process/profile.c
@@ -150,10 +150,6 @@ int profile(int argc, char* argv[]) {
                 exit(1);
         }
 
-	Info_Node* FP = info_node_where(shifted.info, "ForcePositive");
-	if(FP == NULL) shifted.info = info_add_node_str(shifted.info, "ForcePositive", "0");
-	else info_node_update_str(FP, "0");
-
         save_lhapdf6_set(&shifted, out_path);       
         puts("profiled\n");
         free(in_path_tmp);
diff --git a/tools/process/rotate.c b/tools/process/rotate.c
index 1b846bde1..84ebbfd54 100644
--- a/tools/process/rotate.c
+++ b/tools/process/rotate.c
@@ -86,10 +86,6 @@ int rotate(int argc,char* argv[]) {
                 exit(1);
         }
 
-        Info_Node* FP = info_node_where(rotated.info, "ForcePositive");
-        if(FP == NULL) rotated.info = info_add_node_str(rotated.info, "ForcePositive", "0");
-        else info_node_update_str(FP, "0");
-
         save_lhapdf6_set(&rotated, out_path);
         
         return EXIT_SUCCESS;
-- 
GitLab


From 69f47c668f4e7cc936f895589f0f969ac8a5ed8a Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Mon, 31 Oct 2016 16:16:02 +0300
Subject: [PATCH 07/12] combine help message fix

---
 tools/process/combine.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index 62610d94f..90a77946e 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -5,12 +5,11 @@
 
 
 static void help() {
-  puts("usage: xfitter-process combine pdf_dir_out base_pdf_dir added_pdf_dirs[:pdfs]");
+  puts("usage: xfitter-process combine pdf_dir_out base_pdf_dir added_pdf_dir1[:pdfs] added_pdf_dir2[:pdfs] ...");
   puts("          pdf_dir_out -  path to output set");
   puts("          base_pdf_dir - path to pdf containing grid");
-  puts("          added_pdf_dirs - paths to interpolated pdfs");
-  puts("          pdfs - numbers of interpolated pdfs, separated by commas");
-  puts("          e.g. 2,7,15");
+  puts("          added_pdf_dir1,2,... - paths to interpolated pdfs from 1 or more sets");
+  puts("          pdfs - numbers of interpolated pdfs, separated by commas, e.g. 2,7,15");
   puts("          there should be no space between number and comma");
   exit(0);
 }
-- 
GitLab


From 2054b81a8ad4dd80a4b0aa0d8061f0d844644d66 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Mon, 31 Oct 2016 17:20:45 +0300
Subject: [PATCH 08/12] c

---
 steering.txt | 383 ---------------------------------------------------
 1 file changed, 383 deletions(-)
 delete mode 100644 steering.txt

diff --git a/steering.txt b/steering.txt
deleted file mode 100644
index c5985f1d7..000000000
--- a/steering.txt
+++ /dev/null
@@ -1,383 +0,0 @@
-*  Namelist to control input data
-*
-
-&InFiles
-  ! Number of intput files
-    NInputFiles = 7
- 
-  ! Input files:
-
-    InputFileNames(1) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_920.dat'
-    InputFileNames(2) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_820.dat'
-    InputFileNames(3) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_575.dat'
-    InputFileNames(4) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_460.dat'
-    InputFileNames(5) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCem.dat'
-    InputFileNames(6) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_CCep.dat'
-    InputFileNames(7) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_CCem.dat'
-
-
-&End
-
-&InCorr
-  ! Number of correlation (statistical, systematical or full) files
-    NCorrFiles = 0
- 
-  ! Correlation files:
-  !  CorrFileNames(1) = 'datafiles/hera/h1/jets/0904.3870/H1_NormInclJets_HighQ2_99-07___H1_NormInclJets_HighQ2_99-07.corr'
-&End
-
-&CovarToNuisance
-   ! Global switch for using nuisance param representation for covariance mat.
-  LConvertCovToNui = .false.
-
-   ! Tolerance -- zero means exact transformation
-  Tolerance = 0.0
-
-   ! The following lines allow to adjust error scaling properties (default: :M)
-  DataName     = 'CMS electon Asymmetry rapidity', 'CMS W muon asymmetry'
-  DataSystType = ':A', ':A'
-&End
-
-&QCDNUM
-   ! do not re-compute QCDNUM tables if they are present and match grid definition
-  Read_QCDNUM_Tables = .true.
-&End 
-
-
-&OutDir
-  ! Name of the directory where output will be stored (max 22 characters)
-    OutDirName = 'output'
-&End
-*
-* (Optional) Modify renormalisation/factorisation scales, dataset
-* dependently. The numbering follows sequential numbering of input files
-*
-&Scales 
-    DataSetMuR  = 7*1.0     ! Set muR scale to 1 for all 4 datasets
-    DataSetMuF  = 7*1.0     ! Set muF scale to 1 for all 4 datasets
- !   DataSetTheoryOrder = 7*'NNLO',"NLO",'NNLO'
- !   DataSetMaxNF(2) = 4    ! Enable the H-VFNS (requires APFEL)
- !   DataSetMaxNF = 9*5
-&End
-
-*
-* (Optional) List systematic sources, modify their scaling properties:
-*
-&Systematics
- !C      List sources, Results.txt file would list them first. Use the usual :A, :P, 
- !C      qualifiers to change the scalling properties
- !  ListOfSources = 'ATLAS_lumi2010', 'ATL_WZ2010_Source_13:A'
- !C      Modify the prior in chi2 definition (1.0 is default):
- !  PriorScaleName = 'ATLAS_lumi2010', 'ATL_WZ2010_Source_13'
- !  PriorScaleFactor = 0.0, 0.0 
-&End
-
-
-*
-* Main steering cards
-*
-&xFitter 
-  RunningMode = 'Fit'  
-                ! 'Fit'             -- standard MINUIT-minimization of PDF and other parameters
-                ! 'LHAPDF Analysis' -- Evalutate input LHAPDF set uncertaitnies, chi2, profiling or reweighting
-                !                      Requires &LHAPDF namelist to specify the set name. If PDFSTYLE is not
-                !                      set to LHAPDFQ0, LHAPDF or LHAPDFNATIVE, sets it to LHAPDF
-                ! 'PDF Rotate'      -- performs PDF re-diagonalization. Requires theo.in files to operate properly  
-
-  TheoryType = 'DGLAP' ! 'DGLAP'  -- colinear evolution
-                       ! 'DGLAP_APFEL'      -- collinear evolution with APFEL
-                       ! 'DGLAP_QEDEVOL'    -- collinear evolution with QEDEVOL
-                       ! 'DGLAP_APFEL_QED'  -- collinear evolution with APFEL with QED corrections
-                       ! 'DIPOLE' -- dipole model 
-                       ! 'uPDF'   -- un-integrated PDFs
-                                !uPDF1 fit with kernel ccfm-grid.dat file
-                                !uPDF2 fit evolved uPDF, fit just normalisation
-                                !uPDF3 fit using precalculated grid of sigma_hat
-                                !uPDF4 fit calculating kernel on fly, grid of sigma_hat
-
-
-  Order  = 'NNLO'       ! 'LO', 'NLO' or 'NNLO', used for DGLAP evolution.
-
-  Q02     = 1.9 ! Evolution starting scale
-
- ! --- Scheme for heavy flavors 
- ! ---  HF_SCHEME = 'ZMVFNS'           : ZM-VFNS (massless) from QCDNUM,
- ! ---  HF_SCHEME = 'ZMVFNS MELA'      : ZM-VFNS (massless) from MELA (N-space),
- ! ---  HF_SCHEME = 'RT'               : Thorne-Roberts VFNS (massive)
- ! ---  HF_SCHEME = 'RT FAST'          : Fast approximate TR VFNS scheme, usign k-factor
- ! ---  HF_SCHEME = 'RT OPT'           : Thorne-Roberts VFNS (massive)
- ! ---  HF_SCHEME = 'RT OPT FAST'      : Fast approximate TR VFNS scheme, usign k-factor
- ! ---  HF_SCHEME = 'ACOT Full'        : ACOT - F.Olness Version (massive), using k-factors  
- ! ---  HF_SCHEME = 'ACOT Full +N2LO'  : ACOT - F.Olness Version (massive) adding N2LO approx, using k-factors  
- ! ---  HF_SCHEME = 'ACOT Full +N3LO'  : ACOT - F.Olness Version (massive) adding N3LO approx, using k-factors  
- ! ---  HF_SCHEME = 'ACOT Chi'         : ACOT - F.Olness Version (massive), using k-factors  
- ! ---  HF_SCHEME = 'ACOT Chi +N2LO'   : ACOT - F.Olness Version (massive) adding N2LO approx, using k-factors  
- ! ---  HF_SCHEME = 'ACOT Chi +N3LO'   : ACOT - F.Olness Version (massive) adding N3LO approx, using k-factors  
- ! ---  HF_SCHEME = 'ACOT ZM'          : ACOT - F.Olness Version (massless), using k-factors  
- ! ---  HF_SCHEME = 'ACOT ZM +N2LO'    : ACOT - F.Olness Version (massless), using k-factors  
- ! ---  HF_SCHEME = 'ACOT ZM +N3LO'    : ACOT - F.Olness Version (massless), using k-factors  
- ! ---  HF_SCHEME = 'S-ACOT Chi RC'    : S-ACOT-chi scheme - CTEQ-TEA Version, using reduced cross section
- ! ---  HF_SCHEME = 'FF'               : Fixed Flavour Number Scheme (qcdnum)
- ! ---  HF_SCHEME = 'FF ABM'           : Fixed Flavour Number Scheme (ABM)
- ! ---  HF_SCHEME = 'FF ABM RUNM'      : Fixed Flavour Number Scheme (ABM) using run mass def
- ! ---  HF_SCHEME = 'FONLL-A'          : FONLL-A mass scheme provided by APFEL with pole masses (available only at NLO)
- ! ---  HF_SCHEME = 'FONLL-A RUNM OFF' : FONLL-A mass scheme provided by APFEL with MSbar masses running OFF (available only at NLO)
- ! ---  HF_SCHEME = 'FONLL-A RUNM ON'  : FONLL-A mass scheme provided by APFEL with MSbar masses running ON (available only at NLO)
- ! ---  HF_SCHEME = 'FONLL-B'          : FONLL-B mass scheme provided by APFEL with pole masses (available only at NLO)
- ! ---  HF_SCHEME = 'FONLL-B RUNM OFF' : FONLL-B mass scheme provided by APFEL with MSbar masses running OFF (available only at NLO)
- ! ---  HF_SCHEME = 'FONLL-B RUNM ON'  : FONLL-B mass scheme provided by APFEL with MSbar masses running ON (available only at NLO)
- ! ---  HF_SCHEME = 'FONLL-C'          : FONLL-C mass scheme provided by APFEL with pole masses (available only at NNLO)
- ! ---  HF_SCHEME = 'FONLL-C RUNM OFF' : FONLL-C mass scheme provided by APFEL with MSbar masses running OFF (available only at NNLO)
- ! ---  HF_SCHEME = 'FONLL-C RUNM ON'  : FONLL-C mass scheme provided by APFEL with MSbar masses running ON (available only at NNLO)
-                                       ! (Any of the FONLL schemes at LO is equivalent to the ZM-VFNS)
-  HF_SCHEME = 'RT OPT'
-
- ! PDF type. Possible types are currently available:
- ! 'proton'  -- default (fitting proton data)
- ! 'lead'    -- fitting ONLY lead data (can't be used in combination with proton data)
-
- PDFType = 'proton'
-
- ! PDF parameterisation style. Possible styles are currently available:
- !  'HERAPDF' -- HERAPDF-like with uval, dval, Ubar, Dbar, glu evolved pdfs
- !  'CTEQ'        -- CTEQ-like parameterisation
- !  'CTEQHERA'    -- Hybrid: valence like CTEQ, rest like HERAPDF
- !  'CHEB'        -- CHEBYSHEV parameterisation based on glu,sea, uval,dval evolved pdfs
- !  'LHAPDFQ0'    -- use lhapdf library to define pdfs at starting scale and evolve with local qcdnum parameters
- !  'LHAPDF'      -- use lhapdf library to define pdfs at all scales
- !  'LHAPDFNATIVE'-- use lhapdf library to access pdfs and alphas
- !  'DDIS'        -- use Diffractive DIS 
- !  'BiLog'       -- bi-lognormal parametrisation 
-
-  PDFStyle = 'HERAPDF'
-
- ! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- !
- ! Chi2 definition. Following options are supported:
- !  
- ! -- Bias corrections for uncertainties --
- ! 'StatScale'    :  'Poisson',  'NoRescale' ( see also 'ExtraSystRescale' below )
- ! 'UncorSysScale':  'Poisson',  'Linear',  'NoRescale'
- ! 'CorSysScale'  :  'Linear',   'NoRescale'
- ! 
- ! -- Treatment of systematics in chi2 ---
- ! 'UncorChi2Type':  'Diagonal'  
- ! 'CorChi2Type'  :  'Hessian', 'Matrix', 'Offset'
- !
- ! -- Extra corrections ---
- !   are given as comma separated list for Chi2ExtraParam, they are off by default.
- !  'PoissonCorr'            : extra log correction accounting for changing uncertainties 
- !  'FirstIterationRescale' : re-scale uncertainties at the first iteration only 
- !  'ExtraSystRescale'      : additional re-scaling of stat. uncertainty to account for syst. shifts.
-
-   CHI2SettingsName = 'StatScale', 'UncorSysScale', 'CorSysScale', 'UncorChi2Type', 'CorChi2Type'
-   Chi2Settings     = 'Poisson'  , 'Linear',        'Linear'     , 'Diagonal'     , 'Hessian'
-   Chi2ExtraParam = 'PoissonCorr'
-
- ! Flag to define if native APPLgrid CKM values should be kept.
- LUseAPPLgridCKM = True
-
- ! Debug flag
-  LDEBUG     = False
-
- ! Quadratic approximation for asymmetric uncertainties
- ! AsymErrorsIterations = 10
-&End
-
-
-
-*
-* Add extra to minuit parameters. These MUST include alpha_S and fs
-*
-&ExtraMinimisationParameters
-   name  = 'alphas',   'fs',   'fcharm'
-   value =  0.118 ,   0.4,      0.
-   step  =  0.0    ,   0.0 ,      0.     ! set to 0 to avoid minimisation 
-&End
-
-
-*
-* Output steering cards
-*
-&Output 
-  ! -- Error bands on parton distributions
-  DoBands = False        ! asymmetric bands (J. Pumplin)
-  DoBandsSym = False     ! symmetric bands ( HESSE )
-
-  ! -- Q2 values at which the pdfs & errors are done (up to 20)
-  Q2VAL = 1.9, 3.0, 4.0, 5., 10., 100., 6464, 8317 
-!  Q2VAL = 1.9, 4., 10., 100., 6464, 8317 
-
-  ! How many x points to write (standard = 101)
-  OUTNX = 101
-
-  ! x-range of output (standard = 1E-4 1.0)
-  OUTXRANGE = 1E-4, 0.9999
-
-  ! Do not write out LHAPDF6 output
-  ! WriteLHAPDF6 = false
-
-  ! Write out LHAPDF5 output
-  ! WriteLHAPDF5 = false
-&End
-
-
-
-*
-* Process dependent cuts
-*
-&Cuts
-
-  !--------------------- NC ep  --------------------------
-
-  ! Rule #1: Q2 cuts
-   ProcessName(1)     = 'NC e+-p'
-   Variable(1)        = 'Q2'
-   CutValueMin(1)     = 3.5
-   CutValueMax(1)     = 1000000.0
-
-  ! Rule #2: x cuts
-   ProcessName(2)     = 'NC e+-p'
-   Variable(2)        = 'x'
-   CutValueMin(2)     = 0.000001 
-   CutValueMax(2)     = 1.0
-
-  !---------------------  CC ep  ------------------
-
-   ProcessName(3)     = 'CC e+-p'
-   Variable(3)        = 'Q2'
-   CutValueMin(3)     = 3.5
-   CutValueMax(3)     = 1000000.0
-
-   ProcessName(4)     = 'CC e+-p'
-   Variable(4)        = 'x'
-   CutValueMin(4)     = 0.000001 
-   CutValueMax(4)     = 1.0
-
-  !-------------------- DY pp  ----------------------
-
-   ProcessName(5)     = 'CC pp'
-   Variable(5)        = 'eta1'
-   CutValueMin(5)     = -1.
-   CutValueMax(5)     = 100.
-
-  !------------------- Jets ---------------------------
-   
-   ProcessName(6)     = 'pp jets APPLGRID'
-   Variable(6)        = 'pt1'
-   CutValueMin(6)     = 20.
-   CutValueMax(6)     = 1000000.
-
-  !--------------------- Fixed target --------------------------
-
-  ! Rule #7: Whad2 cut
-   ProcessName(7)     = 'muon p'
-   Variable(7)        = 'Whad2'
-   CutValueMin(7)     = 15.   
-
-  !--------------------- Fastnlo jets ----------------------
-
-   ProcessName(8)     = 'FastNLO ep jets'
-   Variable(8)        = 'kfac'
-   CutValueMin(8)     = 0.0
-   CutValueMax(8)     = 2.5
-
-  !--------------------- NC ep charm ----------------
-
-   ProcessName(9)     = 'NC e+-p charm'
-   Variable(9)        = 'Q2'
-   CutValueMin(9)     = 3.5 
-   CutValueMax(9)     = 10000.0
-
-   ProcessName(10)     = 'NC e+-p charm'
-   Variable(10)        = 'x'
-   CutValueMin(10)     = 0.000001 
-   CutValueMax(10)     = 1.0
-
-   
-&End
-
-*
-* (Optional) MC errors steering cards
-*
-&MCErrors
-  ! Activate MC method for error estimation if lRand = True
-  lRAND   = False
-  
-  ! Use data (true, default) or theory (false) for the central values of the MC replica
-  lRANDDATA = True
-
-  ! MC method Seed
-  ISeedMC = 123456 
-
-  ! --- Choose what distribution for the random number generator 
-  ! STATYPE (SYS_TYPE)  =   1  gauss
-  ! STATYPE (SYS_TYPE)  =   2  uniform
-  ! STATYPE (SYS_TYPE)  =   3  lognormal
-  ! STATYPE (SYS_TYPE)  =   4  poisson (only for lRANDDATA = False !)
-  STATYPE =  1
-  SYSTYPE =  1
-&End
-
-*
-* (Optional) Chebyshev study namelist
-*
-&Cheb
-  ! Set following > 0 to turn on:
-   NCHEBGLU = 0   ! number of parameters for the gluon (max 15)
-   NCHEBSEA = 0   ! number of parameters for the sea   (max 15)
-
-  ! Cheb. polynomial type: multiply by (1-x) (1) or not (0)  
-   ichebtypeGlu = 1 
-   ichebtypeSea = 1 
-
-  ! Starting point in x:
-   chebxmin = 1.E-5
-
-   ILENPDF  = 0   ! use pdf length constraint
-
-  ! PDF length constraint strength for different PDFs:
-   PDFLenWeight = 1., 1., 1., 1., 1.     
-
-  ! Range in W where length constraint is applied:
-   WMNLen =  20.
-   WMXLen = 320.
-
-&End
-
-*
-* (Optional) pure polynomial parameterisation for valence quarks
-*
-&Poly
-  ! Set to > zero to activate
-  NPolyVal = 0 
-  IZPOPOLY = 1  ! ( times (1-x) for 0 and (1-x)^2 for 1) 
-  IPOLYSQR = 0  ! ( ensure positivity of PDFs by squaring them )
-&End
-
-*
-* (Optional) choose the factorisation scale for HQs
-* tuned via parameters:    mu_f^2 = scalea1 * Q^2 + scaleb1 * 4*m_h^2
-* Available for 'FF', 'FF ABM' options (heavy quarks scale)
-* Also defines scale for 'ZMVFNS'.'ACOT Full' and 'ACOT Chi' options ( for these options scale is being set for heavy quarks and light quarks).  
-&HQScale
-   scalea1    =  1. 
-   scaleb1    =  0.  
-   MassHQ = 'mc' ! (available: mc, mb), relevant for 'FF', 'ZMVFNS', 'ACOT Full' and  'ACOT chi'
-&End
-
-*
-* (Optional) LHAPDF sttering card
-*
-&lhapdf
-  LHAPDFSET  = 'CT10nlo'               ! LHAPDF grid file 
-  ILHAPDFSET = 0                       ! Set a PDF member of the PDF set (use together with LHAPDFPROFILE = False)
-  ! LHAPDFVARSET = 'HERAPDF20_NLO_VAR' ! Add a PDF set with model and parametrisation uncertainties
-  ! NPARVAR = 3                        ! Number of parametrisation uncertainties in the LHAPDFVARSET set
-  ! LHAPDFPROFILE = False              ! run only on the set specified by ILHAPDFSET
-  ! LHASCALEPROFILE = True             ! Add QCD scale variations as nuisance parameters
-  ! SCALE68 = false                    ! Scale PDF uncertainties by a factor 1/1.645
-  ! WriteAlphaSToMemberPDF = false
-  ! NREMOVEPRIORS = 0                  ! Remove prior from the last n PDF nuisance parameters
-  ! DataToTheo = True                  ! reset data to predictions corresponding to member 0, for sensitivity studies
-&End
-- 
GitLab


From f63e1fb166bc0391f4eeaf9838761fd8bd6448c6 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Mon, 31 Oct 2016 18:09:53 +0300
Subject: [PATCH 09/12] Revert "Setting ForcePositive flag in PdfSet info file
 to 0 or 1 after processing"

This reverts commit e8f7b3a63a1fee15998296ffb6ad58a05660c11c.
---
 tools/process/combine.c | 20 ++------------------
 1 file changed, 2 insertions(+), 18 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index 90a77946e..69f9ca7d0 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -45,9 +45,7 @@ int combine(int argc, char* argv[0]){
   Member_List** member_lists;
   Info_Node * alphas_qs;
   Info_Node * alphas_vals;
-  int forcepositive = 1;
-
-  for (i_added_set = 0; i_added_set < n_added_sets; i_added_set++) {
+  for (i_added_set = 0; i_added_set<n_added_sets; i_added_set++) {
     args[i_added_set] = argv[i_added_set+2];
   }
 
@@ -64,11 +62,6 @@ int combine(int argc, char* argv[0]){
     if (member_lists[i_added_set]->in_path == NULL) puts("NULLL");
     if (load_lhapdf6_set(&Set2, member_lists[i_added_set]->in_path)) return 1;    
 
-    Info_Node* FP_par = info_node_where(Set2.info, "ForcePositive");
-    if (FP_par == NULL || FP_par->value.string == "0") {
-      forcepositive = 0;
-    }
-
     char * setname = basename(member_lists[i_added_set]->in_path);
     if (member_lists[i_added_set]->n_pdfs == 0) {
       member_lists[i_added_set]->n_pdfs = Set2.n_members;
@@ -142,14 +135,6 @@ int combine(int argc, char* argv[0]){
   
   info_node_update_str(info_node_where(SetOut->info, "NumMembers"), tot_pdf_number_str);  
   
-  Info_Node* FP_par_orig = info_node_where(Set1.info, "ForcePositive");
-  //printf("forcepositive = %i\n", forcepositive);
-  if (FP_par_orig != NULL) {
-    if (!strcmp(FP_par_orig->value.string, "1") && forcepositive == 0) {
-      info_node_update_str (info_node_where (SetOut->info, "ForcePositive"), "0");  
-    }
-  }
-
   save_lhapdf6_set(SetOut, out_path);
 
   tot_pdf_number=0;
@@ -189,7 +174,6 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
     exit(1);
   }
   for (i_added_set=0; i_added_set<n_added_sets; i_added_set++){
-    i = 0;    
     colon = strchr(args[i_added_set], ':');
     member_lists[i_added_set]=malloc(sizeof(Member_List)); 
     if( !member_lists[i_added_set] ) {
@@ -213,7 +197,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
         printf("Memory could not be allocated!");
         exit(1);
       }
-     
+      i=0;
       while (comma2 != NULL) {
         strncpy(pdf_number, comma1+1, comma2 - comma1-1);
         member_lists[i_added_set]->pdf_numbers = realloc(member_lists[i_added_set]->pdf_numbers,(i+1)*sizeof(int));
-- 
GitLab


From b408a7e6ffec983f2ec65329c080d8eedf300a70 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Mon, 31 Oct 2016 21:35:39 +0300
Subject: [PATCH 10/12] final commit!

---
 tools/process/combine.c | 20 ++++++++++++++++++--
 tools/process/profile.c |  4 ++++
 tools/process/rotate.c  |  4 ++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/tools/process/combine.c b/tools/process/combine.c
index 69f9ca7d0..90a77946e 100644
--- a/tools/process/combine.c
+++ b/tools/process/combine.c
@@ -45,7 +45,9 @@ int combine(int argc, char* argv[0]){
   Member_List** member_lists;
   Info_Node * alphas_qs;
   Info_Node * alphas_vals;
-  for (i_added_set = 0; i_added_set<n_added_sets; i_added_set++) {
+  int forcepositive = 1;
+
+  for (i_added_set = 0; i_added_set < n_added_sets; i_added_set++) {
     args[i_added_set] = argv[i_added_set+2];
   }
 
@@ -62,6 +64,11 @@ int combine(int argc, char* argv[0]){
     if (member_lists[i_added_set]->in_path == NULL) puts("NULLL");
     if (load_lhapdf6_set(&Set2, member_lists[i_added_set]->in_path)) return 1;    
 
+    Info_Node* FP_par = info_node_where(Set2.info, "ForcePositive");
+    if (FP_par == NULL || FP_par->value.string == "0") {
+      forcepositive = 0;
+    }
+
     char * setname = basename(member_lists[i_added_set]->in_path);
     if (member_lists[i_added_set]->n_pdfs == 0) {
       member_lists[i_added_set]->n_pdfs = Set2.n_members;
@@ -135,6 +142,14 @@ int combine(int argc, char* argv[0]){
   
   info_node_update_str(info_node_where(SetOut->info, "NumMembers"), tot_pdf_number_str);  
   
+  Info_Node* FP_par_orig = info_node_where(Set1.info, "ForcePositive");
+  //printf("forcepositive = %i\n", forcepositive);
+  if (FP_par_orig != NULL) {
+    if (!strcmp(FP_par_orig->value.string, "1") && forcepositive == 0) {
+      info_node_update_str (info_node_where (SetOut->info, "ForcePositive"), "0");  
+    }
+  }
+
   save_lhapdf6_set(SetOut, out_path);
 
   tot_pdf_number=0;
@@ -174,6 +189,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
     exit(1);
   }
   for (i_added_set=0; i_added_set<n_added_sets; i_added_set++){
+    i = 0;    
     colon = strchr(args[i_added_set], ':');
     member_lists[i_added_set]=malloc(sizeof(Member_List)); 
     if( !member_lists[i_added_set] ) {
@@ -197,7 +213,7 @@ Member_List ** arg_parser(int n_added_sets, char ** args) {
         printf("Memory could not be allocated!");
         exit(1);
       }
-      i=0;
+     
       while (comma2 != NULL) {
         strncpy(pdf_number, comma1+1, comma2 - comma1-1);
         member_lists[i_added_set]->pdf_numbers = realloc(member_lists[i_added_set]->pdf_numbers,(i+1)*sizeof(int));
diff --git a/tools/process/profile.c b/tools/process/profile.c
index cb5675b27..ad057beba 100644
--- a/tools/process/profile.c
+++ b/tools/process/profile.c
@@ -150,6 +150,10 @@ int profile(int argc, char* argv[]) {
                 exit(1);
         }
 
+	Info_Node* FP = info_node_where(shifted.info, "ForcePositive");
+	if(FP == NULL) shifted.info = info_add_node_str(shifted.info, "ForcePositive", "0");
+	else info_node_update_str(FP, "0");
+
         save_lhapdf6_set(&shifted, out_path);       
         puts("profiled\n");
         free(in_path_tmp);
diff --git a/tools/process/rotate.c b/tools/process/rotate.c
index 84ebbfd54..1b846bde1 100644
--- a/tools/process/rotate.c
+++ b/tools/process/rotate.c
@@ -86,6 +86,10 @@ int rotate(int argc,char* argv[]) {
                 exit(1);
         }
 
+        Info_Node* FP = info_node_where(rotated.info, "ForcePositive");
+        if(FP == NULL) rotated.info = info_add_node_str(rotated.info, "ForcePositive", "0");
+        else info_node_update_str(FP, "0");
+
         save_lhapdf6_set(&rotated, out_path);
         
         return EXIT_SUCCESS;
-- 
GitLab


From d41fb9975f7cb8b75d484a2dc84abdfa0caf2d79 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Tue, 1 Nov 2016 00:12:26 +0300
Subject: [PATCH 11/12] undo steering.txt deletion

---
 steering.txt | 385 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 385 insertions(+)
 create mode 100644 steering.txt

diff --git a/steering.txt b/steering.txt
new file mode 100644
index 000000000..d17d81697
--- /dev/null
+++ b/steering.txt
@@ -0,0 +1,385 @@
+
+
+*  Namelist to control input data
+*
+
+&InFiles
+  ! Number of intput files
+    NInputFiles = 7
+ 
+  ! Input files:
+
+    InputFileNames(1) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_920.dat'
+    InputFileNames(2) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_820.dat'
+    InputFileNames(3) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_575.dat'
+    InputFileNames(4) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCep_460.dat'
+    InputFileNames(5) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_NCem.dat'
+    InputFileNames(6) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_CCep.dat'
+    InputFileNames(7) = 'datafiles/hera/h1zeusCombined/inclusiveDis/1506.06042/HERA1+2_CCem.dat'
+
+
+&End
+
+&InCorr
+  ! Number of correlation (statistical, systematical or full) files
+    NCorrFiles = 0
+ 
+  ! Correlation files:
+  !  CorrFileNames(1) = 'datafiles/hera/h1/jets/0904.3870/H1_NormInclJets_HighQ2_99-07___H1_NormInclJets_HighQ2_99-07.corr'
+&End
+
+&CovarToNuisance
+   ! Global switch for using nuisance param representation for covariance mat.
+  LConvertCovToNui = .false.
+
+   ! Tolerance -- zero means exact transformation
+  Tolerance = 0.0
+
+   ! The following lines allow to adjust error scaling properties (default: :M)
+  DataName     = 'CMS electon Asymmetry rapidity', 'CMS W muon asymmetry'
+  DataSystType = ':A', ':A'
+&End
+
+&QCDNUM
+   ! do not re-compute QCDNUM tables if they are present and match grid definition
+  Read_QCDNUM_Tables = .true.
+&End 
+
+
+&OutDir
+  ! Name of the directory where output will be stored (max 22 characters)
+    OutDirName = 'output'
+&End
+*
+* (Optional) Modify renormalisation/factorisation scales, dataset
+* dependently. The numbering follows sequential numbering of input files
+*
+&Scales 
+    DataSetMuR  = 7*1.0     ! Set muR scale to 1 for all 4 datasets
+    DataSetMuF  = 7*1.0     ! Set muF scale to 1 for all 4 datasets
+ !   DataSetTheoryOrder = 7*'NNLO',"NLO",'NNLO'
+ !   DataSetMaxNF(2) = 4    ! Enable the H-VFNS (requires APFEL)
+ !   DataSetMaxNF = 9*5
+&End
+
+*
+* (Optional) List systematic sources, modify their scaling properties:
+*
+&Systematics
+ !C      List sources, Results.txt file would list them first. Use the usual :A, :P, 
+ !C      qualifiers to change the scalling properties
+ !  ListOfSources = 'ATLAS_lumi2010', 'ATL_WZ2010_Source_13:A'
+ !C      Modify the prior in chi2 definition (1.0 is default):
+ !  PriorScaleName = 'ATLAS_lumi2010', 'ATL_WZ2010_Source_13'
+ !  PriorScaleFactor = 0.0, 0.0 
+&End
+
+
+*
+* Main steering cards
+*
+&xFitter 
+  RunningMode = 'Fit'  
+                ! 'Fit'             -- standard MINUIT-minimization of PDF and other parameters
+                ! 'LHAPDF Analysis' -- Evalutate input LHAPDF set uncertaitnies, chi2, profiling or reweighting
+                !                      Requires &LHAPDF namelist to specify the set name. If PDFSTYLE is not
+                !                      set to LHAPDFQ0, LHAPDF or LHAPDFNATIVE, sets it to LHAPDF
+                ! 'PDF Rotate'      -- performs PDF re-diagonalization. Requires theo.in files to operate properly  
+
+  TheoryType = 'DGLAP' ! 'DGLAP'  -- colinear evolution
+                       ! 'DGLAP_APFEL'      -- collinear evolution with APFEL
+                       ! 'DGLAP_QEDEVOL'    -- collinear evolution with QEDEVOL
+                       ! 'DGLAP_APFEL_QED'  -- collinear evolution with APFEL with QED corrections
+                       ! 'DIPOLE' -- dipole model 
+                       ! 'uPDF'   -- un-integrated PDFs
+                                !uPDF1 fit with kernel ccfm-grid.dat file
+                                !uPDF2 fit evolved uPDF, fit just normalisation
+                                !uPDF3 fit using precalculated grid of sigma_hat
+                                !uPDF4 fit calculating kernel on fly, grid of sigma_hat
+
+
+  Order  = 'NNLO'       ! 'LO', 'NLO' or 'NNLO', used for DGLAP evolution.
+
+  Q02     = 1.9 ! Evolution starting scale
+
+ ! --- Scheme for heavy flavors 
+ ! ---  HF_SCHEME = 'ZMVFNS'           : ZM-VFNS (massless) from QCDNUM,
+ ! ---  HF_SCHEME = 'ZMVFNS MELA'      : ZM-VFNS (massless) from MELA (N-space),
+ ! ---  HF_SCHEME = 'RT'               : Thorne-Roberts VFNS (massive)
+ ! ---  HF_SCHEME = 'RT FAST'          : Fast approximate TR VFNS scheme, usign k-factor
+ ! ---  HF_SCHEME = 'RT OPT'           : Thorne-Roberts VFNS (massive)
+ ! ---  HF_SCHEME = 'RT OPT FAST'      : Fast approximate TR VFNS scheme, usign k-factor
+ ! ---  HF_SCHEME = 'ACOT Full'        : ACOT - F.Olness Version (massive), using k-factors  
+ ! ---  HF_SCHEME = 'ACOT Full +N2LO'  : ACOT - F.Olness Version (massive) adding N2LO approx, using k-factors  
+ ! ---  HF_SCHEME = 'ACOT Full +N3LO'  : ACOT - F.Olness Version (massive) adding N3LO approx, using k-factors  
+ ! ---  HF_SCHEME = 'ACOT Chi'         : ACOT - F.Olness Version (massive), using k-factors  
+ ! ---  HF_SCHEME = 'ACOT Chi +N2LO'   : ACOT - F.Olness Version (massive) adding N2LO approx, using k-factors  
+ ! ---  HF_SCHEME = 'ACOT Chi +N3LO'   : ACOT - F.Olness Version (massive) adding N3LO approx, using k-factors  
+ ! ---  HF_SCHEME = 'ACOT ZM'          : ACOT - F.Olness Version (massless), using k-factors  
+ ! ---  HF_SCHEME = 'ACOT ZM +N2LO'    : ACOT - F.Olness Version (massless), using k-factors  
+ ! ---  HF_SCHEME = 'ACOT ZM +N3LO'    : ACOT - F.Olness Version (massless), using k-factors  
+ ! ---  HF_SCHEME = 'S-ACOT Chi RC'    : S-ACOT-chi scheme - CTEQ-TEA Version, using reduced cross section
+ ! ---  HF_SCHEME = 'FF'               : Fixed Flavour Number Scheme (qcdnum)
+ ! ---  HF_SCHEME = 'FF ABM'           : Fixed Flavour Number Scheme (ABM)
+ ! ---  HF_SCHEME = 'FF ABM RUNM'      : Fixed Flavour Number Scheme (ABM) using run mass def
+ ! ---  HF_SCHEME = 'FONLL-A'          : FONLL-A mass scheme provided by APFEL with pole masses (available only at NLO)
+ ! ---  HF_SCHEME = 'FONLL-A RUNM OFF' : FONLL-A mass scheme provided by APFEL with MSbar masses running OFF (available only at NLO)
+ ! ---  HF_SCHEME = 'FONLL-A RUNM ON'  : FONLL-A mass scheme provided by APFEL with MSbar masses running ON (available only at NLO)
+ ! ---  HF_SCHEME = 'FONLL-B'          : FONLL-B mass scheme provided by APFEL with pole masses (available only at NLO)
+ ! ---  HF_SCHEME = 'FONLL-B RUNM OFF' : FONLL-B mass scheme provided by APFEL with MSbar masses running OFF (available only at NLO)
+ ! ---  HF_SCHEME = 'FONLL-B RUNM ON'  : FONLL-B mass scheme provided by APFEL with MSbar masses running ON (available only at NLO)
+ ! ---  HF_SCHEME = 'FONLL-C'          : FONLL-C mass scheme provided by APFEL with pole masses (available only at NNLO)
+ ! ---  HF_SCHEME = 'FONLL-C RUNM OFF' : FONLL-C mass scheme provided by APFEL with MSbar masses running OFF (available only at NNLO)
+ ! ---  HF_SCHEME = 'FONLL-C RUNM ON'  : FONLL-C mass scheme provided by APFEL with MSbar masses running ON (available only at NNLO)
+                                       ! (Any of the FONLL schemes at LO is equivalent to the ZM-VFNS)
+  HF_SCHEME = 'RT OPT'
+
+ ! PDF type. Possible types are currently available:
+ ! 'proton'  -- default (fitting proton data)
+ ! 'lead'    -- fitting ONLY lead data (can't be used in combination with proton data)
+
+ PDFType = 'proton'
+
+ ! PDF parameterisation style. Possible styles are currently available:
+ !  'HERAPDF' -- HERAPDF-like with uval, dval, Ubar, Dbar, glu evolved pdfs
+ !  'CTEQ'        -- CTEQ-like parameterisation
+ !  'CTEQHERA'    -- Hybrid: valence like CTEQ, rest like HERAPDF
+ !  'CHEB'        -- CHEBYSHEV parameterisation based on glu,sea, uval,dval evolved pdfs
+ !  'LHAPDFQ0'    -- use lhapdf library to define pdfs at starting scale and evolve with local qcdnum parameters
+ !  'LHAPDF'      -- use lhapdf library to define pdfs at all scales
+ !  'LHAPDFNATIVE'-- use lhapdf library to access pdfs and alphas
+ !  'DDIS'        -- use Diffractive DIS 
+ !  'BiLog'       -- bi-lognormal parametrisation 
+
+  PDFStyle = 'HERAPDF'
+
+ ! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ !
+ ! Chi2 definition. Following options are supported:
+ !  
+ ! -- Bias corrections for uncertainties --
+ ! 'StatScale'    :  'Poisson',  'NoRescale' ( see also 'ExtraSystRescale' below )
+ ! 'UncorSysScale':  'Poisson',  'Linear',  'NoRescale'
+ ! 'CorSysScale'  :  'Linear',   'NoRescale'
+ ! 
+ ! -- Treatment of systematics in chi2 ---
+ ! 'UncorChi2Type':  'Diagonal'  
+ ! 'CorChi2Type'  :  'Hessian', 'Matrix', 'Offset'
+ !
+ ! -- Extra corrections ---
+ !   are given as comma separated list for Chi2ExtraParam, they are off by default.
+ !  'PoissonCorr'            : extra log correction accounting for changing uncertainties 
+ !  'FirstIterationRescale' : re-scale uncertainties at the first iteration only 
+ !  'ExtraSystRescale'      : additional re-scaling of stat. uncertainty to account for syst. shifts.
+
+   CHI2SettingsName = 'StatScale', 'UncorSysScale', 'CorSysScale', 'UncorChi2Type', 'CorChi2Type'
+   Chi2Settings     = 'Poisson'  , 'Linear',        'Linear'     , 'Diagonal'     , 'Hessian'
+   Chi2ExtraParam = 'PoissonCorr'
+
+ ! Flag to define if native APPLgrid CKM values should be kept.
+ LUseAPPLgridCKM = True
+
+ ! Debug flag
+  LDEBUG     = False
+
+ ! Quadratic approximation for asymmetric uncertainties
+ ! AsymErrorsIterations = 10
+&End
+
+
+
+*
+* Add extra to minuit parameters. These MUST include alpha_S and fs
+*
+&ExtraMinimisationParameters
+   name  = 'alphas',   'fs',   'fcharm'
+   value =  0.118 ,   0.4,      0.
+   step  =  0.0    ,   0.0 ,      0.     ! set to 0 to avoid minimisation 
+&End
+
+
+*
+* Output steering cards
+*
+&Output 
+  ! -- Error bands on parton distributions
+  DoBands = False        ! asymmetric bands (J. Pumplin)
+  DoBandsSym = False     ! symmetric bands ( HESSE )
+
+  ! -- Q2 values at which the pdfs & errors are done (up to 20)
+  Q2VAL = 1.9, 3.0, 4.0, 5., 10., 100., 6464, 8317 
+!  Q2VAL = 1.9, 4., 10., 100., 6464, 8317 
+
+  ! How many x points to write (standard = 101)
+  OUTNX = 101
+
+  ! x-range of output (standard = 1E-4 1.0)
+  OUTXRANGE = 1E-4, 0.9999
+
+  ! Do not write out LHAPDF6 output
+  ! WriteLHAPDF6 = false
+
+  ! Write out LHAPDF5 output
+  ! WriteLHAPDF5 = false
+&End
+
+
+
+*
+* Process dependent cuts
+*
+&Cuts
+
+  !--------------------- NC ep  --------------------------
+
+  ! Rule #1: Q2 cuts
+   ProcessName(1)     = 'NC e+-p'
+   Variable(1)        = 'Q2'
+   CutValueMin(1)     = 3.5
+   CutValueMax(1)     = 1000000.0
+
+  ! Rule #2: x cuts
+   ProcessName(2)     = 'NC e+-p'
+   Variable(2)        = 'x'
+   CutValueMin(2)     = 0.000001 
+   CutValueMax(2)     = 1.0
+
+  !---------------------  CC ep  ------------------
+
+   ProcessName(3)     = 'CC e+-p'
+   Variable(3)        = 'Q2'
+   CutValueMin(3)     = 3.5
+   CutValueMax(3)     = 1000000.0
+
+   ProcessName(4)     = 'CC e+-p'
+   Variable(4)        = 'x'
+   CutValueMin(4)     = 0.000001 
+   CutValueMax(4)     = 1.0
+
+  !-------------------- DY pp  ----------------------
+
+   ProcessName(5)     = 'CC pp'
+   Variable(5)        = 'eta1'
+   CutValueMin(5)     = -1.
+   CutValueMax(5)     = 100.
+
+  !------------------- Jets ---------------------------
+   
+   ProcessName(6)     = 'pp jets APPLGRID'
+   Variable(6)        = 'pt1'
+   CutValueMin(6)     = 20.
+   CutValueMax(6)     = 1000000.
+
+  !--------------------- Fixed target --------------------------
+
+  ! Rule #7: Whad2 cut
+   ProcessName(7)     = 'muon p'
+   Variable(7)        = 'Whad2'
+   CutValueMin(7)     = 15.   
+
+  !--------------------- Fastnlo jets ----------------------
+
+   ProcessName(8)     = 'FastNLO ep jets'
+   Variable(8)        = 'kfac'
+   CutValueMin(8)     = 0.0
+   CutValueMax(8)     = 2.5
+
+  !--------------------- NC ep charm ----------------
+
+   ProcessName(9)     = 'NC e+-p charm'
+   Variable(9)        = 'Q2'
+   CutValueMin(9)     = 3.5 
+   CutValueMax(9)     = 10000.0
+
+   ProcessName(10)     = 'NC e+-p charm'
+   Variable(10)        = 'x'
+   CutValueMin(10)     = 0.000001 
+   CutValueMax(10)     = 1.0
+
+   
+&End
+
+*
+* (Optional) MC errors steering cards
+*
+&MCErrors
+  ! Activate MC method for error estimation if lRand = True
+  lRAND   = False
+  
+  ! Use data (true, default) or theory (false) for the central values of the MC replica
+  lRANDDATA = True
+
+  ! MC method Seed
+  ISeedMC = 123456 
+
+  ! --- Choose what distribution for the random number generator 
+  ! STATYPE (SYS_TYPE)  =   1  gauss
+  ! STATYPE (SYS_TYPE)  =   2  uniform
+  ! STATYPE (SYS_TYPE)  =   3  lognormal
+  ! STATYPE (SYS_TYPE)  =   4  poisson (only for lRANDDATA = False !)
+  STATYPE =  1
+  SYSTYPE =  1
+&End
+
+*
+* (Optional) Chebyshev study namelist
+*
+&Cheb
+  ! Set following > 0 to turn on:
+   NCHEBGLU = 0   ! number of parameters for the gluon (max 15)
+   NCHEBSEA = 0   ! number of parameters for the sea   (max 15)
+
+  ! Cheb. polynomial type: multiply by (1-x) (1) or not (0)  
+   ichebtypeGlu = 1 
+   ichebtypeSea = 1 
+
+  ! Starting point in x:
+   chebxmin = 1.E-5
+
+   ILENPDF  = 0   ! use pdf length constraint
+
+  ! PDF length constraint strength for different PDFs:
+   PDFLenWeight = 1., 1., 1., 1., 1.     
+
+  ! Range in W where length constraint is applied:
+   WMNLen =  20.
+   WMXLen = 320.
+
+&End
+
+*
+* (Optional) pure polynomial parameterisation for valence quarks
+*
+&Poly
+  ! Set to > zero to activate
+  NPolyVal = 0 
+  IZPOPOLY = 1  ! ( times (1-x) for 0 and (1-x)^2 for 1) 
+  IPOLYSQR = 0  ! ( ensure positivity of PDFs by squaring them )
+&End
+
+*
+* (Optional) choose the factorisation scale for HQs
+* tuned via parameters:    mu_f^2 = scalea1 * Q^2 + scaleb1 * 4*m_h^2
+* Available for 'FF', 'FF ABM' options (heavy quarks scale)
+* Also defines scale for 'ZMVFNS'.'ACOT Full' and 'ACOT Chi' options ( for these options scale is being set for heavy quarks and light quarks).  
+&HQScale
+   scalea1    =  1. 
+   scaleb1    =  0.  
+   MassHQ = 'mc' ! (available: mc, mb), relevant for 'FF', 'ZMVFNS', 'ACOT Full' and  'ACOT chi'
+&End
+
+*
+* (Optional) LHAPDF sttering card
+*
+&lhapdf
+  LHAPDFSET  = 'CT10nlo'               ! LHAPDF grid file 
+  ILHAPDFSET = 0                       ! Set a PDF member of the PDF set (use together with LHAPDFPROFILE = False)
+  ! LHAPDFVARSET = 'HERAPDF20_NLO_VAR' ! Add a PDF set with model and parametrisation uncertainties
+  ! NPARVAR = 3                        ! Number of parametrisation uncertainties in the LHAPDFVARSET set
+  ! LHAPDFPROFILE = False              ! run only on the set specified by ILHAPDFSET
+  ! LHASCALEPROFILE = True             ! Add QCD scale variations as nuisance parameters
+  ! SCALE68 = false                    ! Scale PDF uncertainties by a factor 1/1.645
+  ! WriteAlphaSToMemberPDF = false
+  ! NREMOVEPRIORS = 0                  ! Remove prior from the last n PDF nuisance parameters
+  ! DataToTheo = True                  ! reset data to predictions corresponding to member 0, for sensitivity studies
+&End
-- 
GitLab


From dc771ed44d90a886e59c24d22b5d6f7aa6a340c2 Mon Sep 17 00:00:00 2001
From: Pavel Shvydkin <pavel.shvydkin@cern.ch>
Date: Tue, 1 Nov 2016 00:14:23 +0300
Subject: [PATCH 12/12] undo steering.txt deletion

---
 steering.txt | 2 --
 1 file changed, 2 deletions(-)

diff --git a/steering.txt b/steering.txt
index d17d81697..c5985f1d7 100644
--- a/steering.txt
+++ b/steering.txt
@@ -1,5 +1,3 @@
-
-
 *  Namelist to control input data
 *
 
-- 
GitLab