ROOT logo
// author: Ionut Cristian Arsene
// Date:  01/09/2010

#include <iostream>
#include <fstream>
using namespace std;

#include <TObjArray.h>
#include <TNamed.h>
#include <TFile.h>
#include <TH1.h>
#include <TH1D.h>
#include <TH2D.h>
#include <TH3D.h>
#include <TGraphErrors.h>
#include <TSystem.h>
#include <TKey.h>
#include <TList.h>
#include <TMath.h>
#include <TString.h>

#include "AliCFContainer.h"
#include "AliDielectronCFdraw.h"

/*
This macro makes projections and saves histograms from a list of CF containers
generated with the dielectron package. These histograms can later be used to
calculate efficiencies.
To use it, the following modifications are needed:
1) Modify the global variables listed below according to your needs.
2) Make projections by applying as many cut sets as needed on the CF containers.
   Call the FillHistograms() after each cut set.
3) To extract efficiencies use the ExtractEfficiencies() function where one needs to 
   specify the indexes for the nominator and denominator histograms. The
   indexes are based on the CF step number, cut set number and histogram number
   as defined in the global variables below.
*/

// The CF variable indexes ------------------------------------------------
enum Variables {    // create an enumeration item for every variable from your CF container
  kNothing = -1,    // kNothing should be always here
  kPt = 0,
  kY,
  kThetaCS,
  kThetaHE,
  kM,
  kPairType,
  //  kPhi,
  kLeg1_Pt,
  kLeg1_NclsTPC,
  kLeg1_Eta,
  //kLeg1_Phi,
  //  kLeg1_TPC_nSigma_Electrons,
  //  kLeg1_P,
  //kLeg2_Phi,
  //  kLeg2_TPC_nSigma_Electrons,
  kLeg2_Pt,
  //  kLeg2_P,
  kLeg2_NclsTPC,
  kLeg2_Eta,
  kNVariables       // kNVariables should be always here!
};
const Char_t* gkVarNames[kNVariables] = {     // variable names to be put on histograms axes and titles
  "p_{T} [GeV/c]",
  "y",
  "cos #theta^{*}_{CS}",
  "cos #theta^{*}_{HE}",
  "M [GeV/c^{2}]",
  "Pair type (0=++; 1=+-; 2=--)",
  // "#phi(J/#Psi) [rad.]",
  //"#phi^{leg1}",
  //  "TPC n #sigma electrons (leg1)",
  "p_{T}^{leg1} [GeV/c]",
  //  "P^{leg1} [GeV/c]",
  "# TPC clusters (leg1)",
  "#eta^{leg1}",
  //"#phi^{leg2}",
  //  "TPC n #sigma electrons (leg2)",
  "p_{T}^{leg2} [GeV/c]",
  //  "P^{leg2} [GeV/c]",
  "# TPC clusters (leg2)"
  "#eta^{leg2}",
};
Int_t gNbins[kNVariables];           // number of bins for every variable --> filled automatically
Double_t* gBinLimits[kNVariables];   // bin limits for every variable --> filled automatically
// ------------------------------------------------------------------------

// Put here all the CF steps of interest ----------------------------------
enum Steps {        // step indexes in the CF containers to be analyzed
  kPureMC = 0,
  kESDSPDany = 2,
  kESDSPDfirst = 4,
  kESDv0SPDany = 6,
  kESDv0SPDfirst = 8,
  kFullSPDany = 10,
  kFullSPDfirst = 12,
  kNSteps = 7        // total number of steps (the number of steps above)
};
const Int_t gkStepNumbers[kNSteps] = {   // array with step indexes (all from the enumeration above)
  kPureMC, 
  kESDSPDany, kESDSPDfirst,
  kESDv0SPDany, kESDv0SPDfirst,
  kFullSPDany, kFullSPDfirst
};
const Char_t* gkStepNames[kNSteps][2] = {// names for each CF step
  {"PureMC",         "Pure MC"},         // NOTE: short names go to histo names, long names go to titles
  {"ESDSPDany",      "ESD track cuts, SPD any"}, 
  {"ESDSPDfirst",    "ESD track cuts, SPD first"},
  {"ESDv0SPDany",    "ESD track cuts, conv. cuts, SPD any"}, 
  {"ESDv0SPDfirst",  "ESD track cuts, conv. cuts, SPD first"},
  {"FullSPDany",     "All track cuts (with SPD any) and TPC-PID"},
  {"FullSPDfirst",   "All track cuts (with SPD first) and TPC-PID"}
};
//------------------------------------------------------------------------

// Put here info about the cut sets for which projections will be made ---
const Int_t gkNCutSets = 10*3;     // number of cut sets for which histos will be filled
const Char_t* gkCutSetNames[gkNCutSets][2] = {   // short and long names for all the cut sets
  // baseline
  {"Ycut",                 "|y_{J/#Psi}|<0.9 & 0<pt_{J/#Psi}<10.0"},
  {"Ycut1",                "|y_{J/#Psi}|<0.3 & 0<pt_{J/#Psi}<10.0"},
  {"Ycut2",                "0.3<y_{J/#Psi}<0.9 & 0<pt_{J/#Psi}<10.0"},
  {"Ycut3",                "-0.9<y_{J/#Psi}<-0.3 & 0<pt_{J/#Psi}<10.0"},
  {"YcutPt1",              "|y_{J/#Psi}|<0.9 & 0.0<p_{T J/#Psi}<1.0"},
  {"YcutPt2",              "|y_{J/#Psi}|<0.9 & 1.0<p_{T J/#Psi}<2.0"},
  {"YcutPt3",              "|y_{J/#Psi}|<0.9 & 2.0<p_{T J/#Psi}<3.0"},
  {"YcutPt4",              "|y_{J/#Psi}|<0.9 & 3.0<p_{T J/#Psi}<5.0"},
  {"YcutPt5",              "|y_{J/#Psi}|<0.9 & 5.0<p_{T J/#Psi}<7.0"},
  {"YcutPt6",              "|y_{J/#Psi}|<0.9 & 7.0<p_{T J/#Psi}<10.0"},
  // track cuts
  {"YcutLegsFull",       "|y_{J/#Psi}|<0.9 & 0<pt_{J/#Psi}<10.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"Ycut1LegsFull",      "|y_{J/#Psi}|<0.3 & 0<pt_{J/#Psi}<10.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"Ycut2LegsFull",      "0.3<y_{J/#Psi}<0.9 & 0<pt_{J/#Psi}<10.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"Ycut3LegsFull",      "-0.9<y_{J/#Psi}<-0.3 & 0<pt_{J/#Psi}<10.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt1LegsFull",    "|y_{J/#Psi}|<0.9 & 0<pt_{J/#Psi}<1.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt2LegsFull",    "|y_{J/#Psi}|<0.9 & 1.0<pt_{J/#Psi}<2.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt3LegsFull",    "|y_{J/#Psi}|<0.9 & 2.0<pt_{J/#Psi}<3.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt4LegsFull",    "|y_{J/#Psi}|<0.9 & 3.0<pt_{J/#Psi}<5.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt5LegsFull",    "|y_{J/#Psi}|<0.9 & 5.0<pt_{J/#Psi}<7.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt6LegsFull",    "|y_{J/#Psi}|<0.9 & 7.0<pt_{J/#Psi}<10.0 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  // track cuts + cut on signal integration range
  {"YcutMcutLegsFull",       "|y_{J/#Psi}|<0.9 & 0<pt_{J/#Psi}<10.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"Ycut1McutLegsFull",      "|y_{J/#Psi}|<0.3 & 0<pt_{J/#Psi}<10.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"Ycut2McutLegsFull",      "0.3<y_{J/#Psi}<0.9 & 0<pt_{J/#Psi}<10.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"Ycut3McutLegsFull",      "-0.9<y_{J/#Psi}<-0.3 & 0<pt_{J/#Psi}<10.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt1McutLegsFull",    "|y_{J/#Psi}|<0.9 & 0<pt_{J/#Psi}<1.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt2McutLegsFull",    "|y_{J/#Psi}|<0.9 & 1.0<pt_{J/#Psi}<2.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt3McutLegsFull",    "|y_{J/#Psi}|<0.9 & 2.0<pt_{J/#Psi}<3.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt4McutLegsFull",    "|y_{J/#Psi}|<0.9 & 3.0<pt_{J/#Psi}<5.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt5McutLegsFull",    "|y_{J/#Psi}|<0.9 & 5.0<pt_{J/#Psi}<7.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"},
  {"YcutPt6McutLegsFull",    "|y_{J/#Psi}|<0.9 & 7.0<pt_{J/#Psi}<10.0 & 2.92<M_{inv}<3.16 & |#eta_{legs}|<0.9 & p_{Tlegs}>1.0 GeV/c & Ncls_TPC>70"}
  
};
// -----------------------------------------------------------------------

// Put here info about the histograms to be filled -----------------------
const Int_t gkNhistos = 3;                        // how many histograms for every (step,cut set) combination
const Char_t* gkHistoNames[gkNhistos][2] = {      // short and long names of the histograms
  {"pt","p_{T}(J/#Psi)"},                         // NOTE: short names go to the histo name, long name goes to title
  //  {"y","y(J/#Psi)"}, 
  // {"pty","p_{T} vs y(J/#Psi)"},
  //  {"phi","#phi(J/#Psi) [rad.]"}, 
  //{"m","e^{+}e^{-} invariant mass"}, 
  {"ThetaCS","cos #theta^{*}_{CS}"}, 
  {"ThetaHE","cos #theta^{*}_{HE}"}
  // {"Minv", "Invariant mass"}
};
const Int_t gkDims[gkNhistos][4] = {      // dimensions and variables for histograms
// ndim  xVar      yVar      zVar
  {1,    kPt,      kNothing, kNothing},   // pt dependence
  //  {1,    kY,       kNothing, kNothing},   // y dependence
  //  {2,    kY,       kPt,      kNothing},   // pt,y dependence
  //  {1,    kPhi,     kNothing, kNothing},   // phi dependence
  //  {1,    kM,       kNothing, kNothing},   // inv. mass dependence
  {1,    kThetaCS, kNothing, kNothing},   // cos theta* CS dependence
  {1,    kThetaHE, kNothing, kNothing}    // cos theta* HE dependence
  //{1,    kM,       kNothing, kNothing}    // invariant mass
};
// -----------------------------------------------------------------------

// ******************************************************************************** 
// Define here all the efficiencies you want (if any)
// Efficiency = (nominator histogram)/(denominator histogram)
// A histogram is defined by its step,cut set, and number defined according the
// global variables above
// ********************************************************************************
const Int_t gkNeffs = 20*3*5;
const Int_t gkEffs[gkNeffs][6] = {
  //nominator: Step  Cut  Histo | denominator: Step  Cut  Histo     comment
  // full corrections, pt dependence
             { 5,    10,   0,                   0,    0,   0     },     // full correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 6,    10,   0,                   0,    0,   0     },     // full correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 5,    11,   0,                   0,    1,   0     },     // full correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    11,   0,                   0,    1,   0     },     // full correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    12,   0,                   0,    2,   0     },     // full correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    12,   0,                   0,    2,   0     },     // full correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    13,   0,                   0,    3,   0     },     // full correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    13,   0,                   0,    3,   0     },     // full correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    14,   0,                   0,    4,   0     },     // full correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 6,    14,   0,                   0,    4,   0     },     // full correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 5,    15,   0,                   0,    5,   0     },     // full correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 6,    15,   0,                   0,    5,   0     },     // full correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 5,    16,   0,                   0,    6,   0     },     // full correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 6,    16,   0,                   0,    6,   0     },     // full correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 5,    17,   0,                   0,    7,   0     },     // full correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 6,    17,   0,                   0,    7,   0     },     // full correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 5,    18,   0,                   0,    8,   0     },     // full correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 6,    18,   0,                   0,    8,   0     },     // full correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 5,    19,   0,                   0,    9,   0     },     // full correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 6,    19,   0,                   0,    9,   0     },     // full correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // full corrections, cosThetaCS dependence
             { 5,    10,   1,                   0,    0,   1     },     // full correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 6,    10,   1,                   0,    0,   1     },     // full correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 5,    11,   1,                   0,    1,   1     },     // full correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    11,   1,                   0,    1,   1     },     // full correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    12,   1,                   0,    2,   1     },     // full correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    12,   1,                   0,    2,   1     },     // full correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    13,   1,                   0,    3,   1     },     // full correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    13,   1,                   0,    3,   1     },     // full correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    14,   1,                   0,    1,   1     },     // full correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 6,    14,   1,                   0,    1,   1     },     // full correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 5,    15,   1,                   0,    2,   1     },     // full correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 6,    15,   1,                   0,    2,   1     },     // full correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 5,    16,   1,                   0,    3,   1     },     // full correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 6,    16,   1,                   0,    3,   1     },     // full correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 5,    17,   1,                   0,    4,   1     },     // full correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 6,    17,   1,                   0,    4,   1     },     // full correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 5,    18,   1,                   0,    5,   1     },     // full correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 6,    18,   1,                   0,    5,   1     },     // full correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 5,    19,   1,                   0,    6,   1     },     // full correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 6,    19,   1,                   0,    6,   1     },     // full correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // full corrections, cosThetaHE dependence
	     { 5,    10,   2,                   0,    0,   2     },     // full correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 6,    10,   2,                   0,    0,   2     },     // full correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 5,    11,   2,                   0,    1,   2     },     // full correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    11,   2,                   0,    1,   2     },     // full correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    12,   2,                   0,    2,   2     },     // full correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    12,   2,                   0,    2,   2     },     // full correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    13,   2,                   0,    3,   2     },     // full correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    13,   2,                   0,    3,   2     },     // full correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    14,   2,                   0,    4,   2     },     // full correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 6,    14,   2,                   0,    4,   2     },     // full correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 5,    15,   2,                   0,    5,   2     },     // full correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 6,    15,   2,                   0,    5,   2     },     // full correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 5,    16,   2,                   0,    6,   2     },     // full correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 6,    16,   2,                   0,    6,   2     },     // full correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 5,    17,   2,                   0,    7,   2     },     // full correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 6,    17,   2,                   0,    7,   2     },     // full correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 5,    18,   2,                   0,    8,   2     },     // full correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 6,    18,   2,                   0,    8,   2     },     // full correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 5,    19,   2,                   0,    9,   2     },     // full correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 6,    19,   2,                   0,    9,   2     },     // full correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0             


	     // tracking corrections, pt dependence
             { 1,    10,   0,                   0,    0,   0     },     // tracking correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 2,    10,   0,                   0,    0,   0     },     // tracking correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 1,    11,   0,                   0,    1,   0     },     // tracking correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 2,    11,   0,                   0,    1,   0     },     // tracking correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 1,    12,   0,                   0,    2,   0     },     // tracking correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 2,    12,   0,                   0,    2,   0     },     // tracking correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 1,    13,   0,                   0,    3,   0     },     // tracking correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 2,    13,   0,                   0,    3,   0     },     // tracking correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 1,    14,   0,                   0,    4,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 2,    14,   0,                   0,    4,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 1,    15,   0,                   0,    5,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 2,    15,   0,                   0,    5,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 1,    16,   0,                   0,    6,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 2,    16,   0,                   0,    6,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 1,    17,   0,                   0,    7,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 2,    17,   0,                   0,    7,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 1,    18,   0,                   0,    8,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 2,    18,   0,                   0,    8,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 1,    19,   0,                   0,    9,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 2,    19,   0,                   0,    9,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // tracking corrections, cosThetaCS dependence
             { 1,    10,   1,                   0,    0,   1     },     // tracking correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 2,    10,   1,                   0,    0,   1     },     // tracking correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 1,    11,   1,                   0,    1,   1     },     // tracking correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 2,    11,   1,                   0,    1,   1     },     // tracking correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 1,    12,   1,                   0,    2,   1     },     // tracking correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 2,    12,   1,                   0,    2,   1     },     // tracking correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 1,    13,   1,                   0,    3,   1     },     // tracking correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 2,    13,   1,                   0,    3,   1     },     // tracking correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 1,    14,   1,                   0,    4,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 2,    14,   1,                   0,    4,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 1,    15,   1,                   0,    5,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 2,    15,   1,                   0,    5,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 1,    16,   1,                   0,    6,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 2,    16,   1,                   0,    6,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 1,    17,   1,                   0,    7,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 2,    17,   1,                   0,    7,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 1,    18,   1,                   0,    8,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 2,    18,   1,                   0,    8,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 1,    19,   1,                   0,    9,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 2,    19,   1,                   0,    9,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // tracking corrections, cosThetaHE dependence
             { 1,    10,   2,                   0,    0,   2     },     // tracking correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 2,    10,   2,                   0,    0,   2     },     // tracking correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 1,    11,   2,                   0,    1,   2     },     // tracking correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 2,    11,   2,                   0,    1,   2     },     // tracking correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 1,    12,   2,                   0,    2,   2     },     // tracking correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 2,    12,   2,                   0,    2,   2     },     // tracking correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 1,    13,   2,                   0,    3,   2     },     // tracking correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 2,    13,   2,                   0,    3,   2     },     // tracking correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 1,    14,   2,                   0,    4,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 2,    14,   2,                   0,    4,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 1,    15,   2,                   0,    5,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 2,    15,   2,                   0,    5,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 1,    16,   2,                   0,    6,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 2,    16,   2,                   0,    6,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 1,    17,   2,                   0,    7,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 2,    17,   2,                   0,    7,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 1,    18,   2,                   0,    8,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 2,    18,   2,                   0,    8,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 1,    19,   2,                   0,    9,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 2,    19,   2,                   0,    9,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0


	     // tracking corrections with V0 rejection cut, pt dependence
             { 3,    10,   0,                   0,    0,   0     },     // tracking correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 4,    10,   0,                   0,    0,   0     },     // tracking correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 3,    11,   0,                   0,    1,   0     },     // tracking correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 4,    11,   0,                   0,    1,   0     },     // tracking correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 3,    12,   0,                   0,    2,   0     },     // tracking correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 4,    12,   0,                   0,    2,   0     },     // tracking correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 3,    13,   0,                   0,    3,   0     },     // tracking correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 4,    13,   0,                   0,    3,   0     },     // tracking correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 3,    14,   0,                   0,    4,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 4,    14,   0,                   0,    4,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 3,    15,   0,                   0,    5,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 4,    15,   0,                   0,    5,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 3,    16,   0,                   0,    6,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 4,    16,   0,                   0,    6,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 3,    17,   0,                   0,    7,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 4,    17,   0,                   0,    7,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 3,    18,   0,                   0,    8,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 4,    18,   0,                   0,    8,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 3,    19,   0,                   0,    9,   0     },     // tracking correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 4,    19,   0,                   0,    9,   0     },     // tracking correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // tracking corrections with V0 rejection cut, cosThetaCS dependence
             { 3,    10,   1,                   0,    0,   1     },     // tracking correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 4,    10,   1,                   0,    0,   1     },     // tracking correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 3,    11,   1,                   0,    1,   1     },     // tracking correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 4,    11,   1,                   0,    1,   1     },     // tracking correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 3,    12,   1,                   0,    2,   1     },     // tracking correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 4,    12,   1,                   0,    2,   1     },     // tracking correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 3,    13,   1,                   0,    3,   1     },     // tracking correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 4,    13,   1,                   0,    3,   1     },     // tracking correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 3,    14,   1,                   0,    4,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 4,    14,   1,                   0,    4,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 3,    15,   1,                   0,    5,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 4,    15,   1,                   0,    5,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 3,    16,   1,                   0,    6,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 4,    16,   1,                   0,    6,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 3,    17,   1,                   0,    7,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 4,    17,   1,                   0,    7,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 3,    18,   1,                   0,    8,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 4,    18,   1,                   0,    8,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 3,    19,   1,                   0,    9,   1     },     // tracking correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 4,    19,   1,                   0,    9,   1     },     // tracking correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // tracking corrections with V0 rejection cut, cosThetaHE dependence
             { 3,    10,   2,                   0,    0,   2     },     // tracking correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 4,    10,   2,                   0,    0,   2     },     // tracking correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 3,    11,   2,                   0,    1,   2     },     // tracking correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 4,    11,   2,                   0,    1,   2     },     // tracking correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 3,    12,   2,                   0,    2,   2     },     // tracking correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 4,    12,   2,                   0,    2,   2     },     // tracking correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 3,    13,   2,                   0,    3,   2     },     // tracking correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 4,    13,   2,                   0,    3,   2     },     // tracking correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 3,    14,   2,                   0,    4,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 4,    14,   2,                   0,    4,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 3,    15,   2,                   0,    5,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 4,    15,   2,                   0,    5,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 3,    16,   2,                   0,    6,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 4,    16,   2,                   0,    6,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 3,    17,   2,                   0,    7,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 4,    17,   2,                   0,    7,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 3,    18,   2,                   0,    8,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 4,    18,   2,                   0,    8,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 3,    19,   2,                   0,    9,   2     },     // tracking correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 4,    19,   2,                   0,    9,   2     },     // tracking correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0


	     // PID corrections, pt dependence
             { 5,    10,    0,                   1,    10,    0     },     // PID correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 6,    10,    0,                   2,    10,    0     },     // PID correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 5,    11,    0,                   1,    11,    0     },     // PID correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    11,    0,                   2,    11,    0     },     // PID correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    12,    0,                   1,    12,    0     },     // PID correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    12,    0,                   2,    12,    0     },     // PID correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    13,    0,                   1,    13,    0     },     // PID correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    13,    0,                   2,    13,    0     },     // PID correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    14,    0,                   1,    14,    0     },     // PID correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 6,    14,    0,                   2,    14,    0     },     // PID correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 5,    15,    0,                   1,    15,    0     },     // PID correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 6,    15,    0,                   2,    15,    0     },     // PID correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 5,    16,    0,                   1,    16,    0     },     // PID correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 6,    16,    0,                   2,    16,    0     },     // PID correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 5,    17,    0,                   1,    17,    0     },     // PID correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 6,    17,    0,                   2,    17,    0     },     // PID correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 5,    18,    0,                   1,    18,    0     },     // PID correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 6,    18,    0,                   2,    18,    0     },     // PID correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 5,    19,    0,                   1,    19,    0     },     // PID correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 6,    19,    0,                   2,    19,    0     },     // PID correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0

	     // PID corrections, cosThetaCS dependence
	     { 5,    10,    1,                   1,    10,    1     },     // PID correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 6,    10,    1,                   2,    10,    1     },     // PID correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 5,    11,    1,                   1,    11,    1     },     // PID correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    11,    1,                   2,    11,    1     },     // PID correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    12,    1,                   1,    12,    1     },     // PID correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    12,    1,                   2,    12,    1     },     // PID correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    13,    1,                   1,    13,    1     },     // PID correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    13,    1,                   2,    13,    1     },     // PID correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    14,    1,                   1,    14,    1     },     // PID correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 6,    14,    1,                   2,    14,    1     },     // PID correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 5,    15,    1,                   1,    15,    1     },     // PID correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 6,    15,    1,                   2,    15,    1     },     // PID correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 5,    16,    1,                   1,    16,    1     },     // PID correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 6,    16,    1,                   2,    16,    1     },     // PID correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 5,    17,    1,                   1,    17,    1     },     // PID correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 6,    17,    1,                   2,    17,    1     },     // PID correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 5,    18,    1,                   1,    18,    1     },     // PID correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 6,    18,    1,                   2,    18,    1     },     // PID correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 5,    19,    1,                   1,    19,    1     },     // PID correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 6,    19,    1,                   2,    19,    1     },     // PID correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0


	     // PID corrections, cosThetaHE dependence
             { 5,    10,    2,                   1,    10,    2     },     // PID correction, SPD any   -0.9<y<+0.9  0.0<pt<10
             { 6,    10,    2,                   2,    10,    2     },     // PID correction, SPD first -0.9<y<+0.9  0.0<pt<10
	     { 5,    11,    2,                   1,    11,    2     },     // PID correction, SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    11,    2,                   2,    11,    2     },     // PID correction, SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    12,    2,                   1,    12,    2     },     // PID correction, SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    12,    2,                   2,    12,    2     },     // PID correction, SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    13,    2,                   1,    13,    2     },     // PID correction, SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    13,    2,                   2,    13,    2     },     // PID correction, SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    14,    2,                   1,    14,    2     },     // PID correction, SPD any,  -0.9<y<+0.9  0.0<pt<1.0
             { 6,    14,    2,                   2,    14,    2     },     // PID correction, SPD first,-0.9<y<+0.9  0.0<pt<1.0
             { 5,    15,    2,                   1,    15,    2     },     // PID correction, SPD any,  -0.9<y<+0.9  1.0<pt<2.0
             { 6,    15,    2,                   2,    15,    2     },     // PID correction, SPD first,-0.9<y<+0.9  1.0<pt<2.0
	     { 5,    16,    2,                   1,    16,    2     },     // PID correction, SPD any,  -0.9<y<+0.9  2.0<pt<3.0
             { 6,    16,    2,                   2,    16,    2     },     // PID correction, SPD first,-0.9<y<+0.9  2.0<pt<3.0
	     { 5,    17,    2,                   1,    17,    2     },     // PID correction, SPD any,  -0.9<y<+0.9  3.0<pt<5.0
             { 6,    17,    2,                   2,    17,    2     },     // PID correction, SPD first,-0.9<y<+0.9  3.0<pt<5.0
	     { 5,    18,    2,                   1,    18,    2     },     // PID correction, SPD any,  -0.9<y<+0.9  5.0<pt<7.0
             { 6,    18,    2,                   2,    18,    2     },     // PID correction, SPD first,-0.9<y<+0.9  5.0<pt<7.0
	     { 5,    19,    2,                   1,    19,    2     },     // PID correction, SPD any,  -0.9<y<+0.9  7.0<pt<10.0
             { 6,    19,    2,                   2,    19,    2     },     // PID correction, SPD first,-0.9<y<+0.9  7.0<pt<10.0
             

	     // correction for the invariant mass integration range, pt dependence
	     { 5,    20,   0,                   5,   10,   0     },     // SPD any, -0.9<y<+0.9  0.0<pt<10
	     { 6,    20,   0,                   6,   10,   0     },     // SPD first, -0.9<y<+0.9  0.0<pt<10
	     { 5,    21,   0,                   5,   11,   0     },     // SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    21,   0,                   6,   11,   0     },     // SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    22,   0,                   5,   12,   0     },     // SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    22,   0,                   6,   12,   0     },     // SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    23,   0,                   5,   13,   0     },     // SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    23,   0,                   6,   13,   0     },     // SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    24,   0,                   5,   14,   0     },     // SPD any, -0.9<y<+0.9  0.0<pt<1.0
	     { 6,    24,   0,                   6,   14,   0     },     // SPD first, -0.9<y<+0.9  0.0<pt<1.0
	     { 5,    25,   0,                   5,   15,   0     },     // SPD any, -0.9<y<+0.9  1.0<pt<2.0
	     { 6,    25,   0,                   6,   15,   0     },     // SPD first, -0.9<y<+0.9  1.0<pt<2.0
	     { 5,    26,   0,                   5,   16,   0     },     // SPD any, -0.9<y<+0.9  2.0<pt<3.0
	     { 6,    26,   0,                   6,   16,   0     },     // SPD first, -0.9<y<+0.9  2.0<pt<3.0
	     { 5,    27,   0,                   5,   17,   0     },     // SPD any, -0.9<y<+0.9  3.0<pt<5.0
	     { 6,    27,   0,                   6,   17,   0     },     // SPD first, -0.9<y<+0.9  3.0<pt<5.0
	     { 5,    28,   0,                   5,   18,   0     },     // SPD any, -0.9<y<+0.9  5.0<pt<7
	     { 6,    28,   0,                   6,   18,   0     },     // SPD first, -0.9<y<+0.9  5.0<pt<7
	     { 5,    29,   0,                   5,   19,   0     },     // SPD any, -0.9<y<+0.9  7<pt<10
	     { 6,    29,   0,                   6,   19,   0     },      // SPD first, -0.9<y<+0.9  7.0<pt<10


	     // correction for the invariant mass integration range, cosThetaCS dependence
	     { 5,    20,   1,                   5,   10,   1     },     // SPD any, -0.9<y<+0.9  0.0<pt<10
	     { 6,    20,   1,                   6,   10,   1     },     // SPD first, -0.9<y<+0.9  0.0<pt<10
	     { 5,    21,   1,                   5,   11,   1     },     // SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    21,   1,                   6,   11,   1     },     // SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    22,   1,                   5,   12,   1     },     // SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    22,   1,                   6,   12,   1     },     // SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    23,   1,                   5,   13,   1     },     // SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    23,   1,                   6,   13,   1     },     // SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    24,   1,                   5,   14,   1     },     // SPD any, -0.9<y<+0.9  0.0<pt<1.0
	     { 6,    24,   1,                   6,   14,   1     },     // SPD first, -0.9<y<+0.9  0.0<pt<1.0
	     { 5,    25,   1,                   5,   15,   1     },     // SPD any, -0.9<y<+0.9  1.0<pt<2.0
	     { 6,    25,   1,                   6,   15,   1     },     // SPD first, -0.9<y<+0.9  1.0<pt<2.0
	     { 5,    26,   1,                   5,   16,   1     },     // SPD any, -0.9<y<+0.9  2.0<pt<3.0
	     { 6,    26,   1,                   6,   16,   1     },     // SPD first, -0.9<y<+0.9  2.0<pt<3.0
	     { 5,    27,   1,                   5,   17,   1     },     // SPD any, -0.9<y<+0.9  3.0<pt<5.0
	     { 6,    27,   1,                   6,   17,   1     },     // SPD first, -0.9<y<+0.9  3.0<pt<5.0
	     { 5,    28,   1,                   5,   18,   1     },     // SPD any, -0.9<y<+0.9  5.0<pt<7
	     { 6,    28,   1,                   6,   18,   1     },     // SPD first, -0.9<y<+0.9  5.0<pt<7
	     { 5,    29,   1,                   5,   19,   1     },     // SPD any, -0.9<y<+0.9  7<pt<10
	     { 6,    29,   1,                   6,   19,   1     },      // SPD first, -0.9<y<+0.9  7.0<pt<10
	     

	     // correction for the invariant mass integration range, cosThetaHE dependence
	     { 5,    20,   2,                   5,   10,   2     },     // SPD any, -0.9<y<+0.9  0.0<pt<10
	     { 6,    20,   2,                   6,   10,   2     },     // SPD first, -0.9<y<+0.9  0.0<pt<10
	     { 5,    21,   2,                   5,   11,   2     },     // SPD any   -0.3<y<+0.3  0.0<pt<10
             { 6,    21,   2,                   6,   11,   2     },     // SPD first -0.3<y<+0.3  0.0<pt<10
	     { 5,    22,   2,                   5,   12,   2     },     // SPD any    0.3<y<+0.9  0.0<pt<10
             { 6,    22,   2,                   6,   12,   2     },     // SPD first  0.3<y<+0.9  0.0<pt<10
	     { 5,    23,   2,                   5,   13,   2     },     // SPD any   -0.9<y<-0.3  0.0<pt<10
             { 6,    23,   2,                   6,   13,   2     },     // SPD first -0.9<y<-0.3  0.0<pt<10
	     { 5,    24,   2,                   5,   14,   2     },     // SPD any, -0.9<y<+0.9  0.0<pt<1.0
	     { 6,    24,   2,                   6,   14,   2     },     // SPD first, -0.9<y<+0.9  0.0<pt<1.0
	     { 5,    25,   2,                   5,   15,   2     },     // SPD any, -0.9<y<+0.9  1.0<pt<2.0
	     { 6,    25,   2,                   6,   15,   2     },     // SPD first, -0.9<y<+0.9  1.0<pt<2.0
	     { 5,    26,   2,                   5,   16,   2     },     // SPD any, -0.9<y<+0.9  2.0<pt<3.0
	     { 6,    26,   2,                   6,   16,   2     },     // SPD first, -0.9<y<+0.9  2.0<pt<3.0
	     { 5,    27,   2,                   5,   17,   2     },     // SPD any, -0.9<y<+0.9  3.0<pt<5.0
	     { 6,    27,   2,                   6,   17,   2     },     // SPD first, -0.9<y<+0.9  3.0<pt<5.0
	     { 5,    28,   2,                   5,   18,   2     },     // SPD any, -0.9<y<+0.9  5.0<pt<7
	     { 6,    28,   2,                   6,   18,   2     },     // SPD first, -0.9<y<+0.9  5.0<pt<7
	     { 5,    29,   2,                   5,   19,   2     },     // SPD any, -0.9<y<+0.9  7<pt<10
	     { 6,    29,   2,                   6,   19,   2     }      // SPD first, -0.9<y<+0.9  7.0<pt<10
	     

};
// custom names and titles for efficiency histograms
const Char_t* gkEffNames[gkNeffs][3] = {
  // full corrections, pt dependence
  {"fullCorrectionSPDany_pt",      "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       "any,-0.9,0.9,0.0,10.0"},
  {"fullCorrectionSPDfirst_pt",    "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     "first,-0.9,0.9,0.0,10.0"},
  {"fullCorrectionY1SPDany_pt",    "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       "any,-0.3,0.3,0.0,10.0"},
  {"fullCorrectionY1SPDfirst_pt",  "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     "first,-0.3,0.3,0.0,10.0"},
  {"fullCorrectionY2SPDany_pt",    "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     "any,0.3,0.9,0.0,10.0"},
  {"fullCorrectionY2SPDfirst_pt",  "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   "first,0.3,0.9,0.0,10.0"},
  {"fullCorrectionY3SPDany_pt",    "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   "any,-0.9,-0.3,0.0,10.0"},
  {"fullCorrectionY3SPDfirst_pt",  "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", "first,-0.9,-0.3,0.0,10.0"},
  {"fullCorrectionPt1SPDany_pt",   "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              "any,-0.9,0.9,0.0,1.0"},
  {"fullCorrectionPt1SPDfirst_pt", "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            "first,-0.9,0.9,0.0,1.0"},
  {"fullCorrectionPt2SPDany_pt",   "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            "any,-0.9,0.9,1.0,2.0"},
  {"fullCorrectionPt2SPDfirst_pt", "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          "first,-0.9,0.9,1.0,2.0"},
  {"fullCorrectionPt3SPDany_pt",   "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            "any,-0.9,0.9,2.0,3.0"},
  {"fullCorrectionPt3SPDfirst_pt", "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          "first,-0.9,0.9,2.0,3.0"},
  {"fullCorrectionPt4SPDany_pt",   "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            "any,-0.9,0.9,3.0,5.0"},
  {"fullCorrectionPt4SPDfirst_pt", "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          "first,-0.9,0.9,3.0,5.0"},
  {"fullCorrectionPt5SPDany_pt",   "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            "any,-0.9,0.9,5.0,7.0"},
  {"fullCorrectionPt5SPDfirst_pt", "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          "first,-0.9,0.9,5.0,7.0"},
  {"fullCorrectionPt6SPDany_pt",   "Eff. vs. pt, (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           "any,-0.9,0.9,7.0,10.0"},
  {"fullCorrectionPt6SPDfirst_pt", "Eff. vs. pt, (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         "first,-0.9,0.9,7.0,10.0"},
  // full corrections, cosThetaCS dependence
  {"fullCorrectionSPDany_ThetaCS",      "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"fullCorrectionSPDfirst_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"fullCorrectionY1SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"fullCorrectionY1SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"fullCorrectionY2SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"fullCorrectionY2SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"fullCorrectionY3SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"fullCorrectionY3SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"fullCorrectionPt1SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"fullCorrectionPt1SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"fullCorrectionPt2SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"fullCorrectionPt2SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"fullCorrectionPt3SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"fullCorrectionPt3SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"fullCorrectionPt4SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"fullCorrectionPt4SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"fullCorrectionPt5SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"fullCorrectionPt5SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"fullCorrectionPt6SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"fullCorrectionPt6SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // full corrections, cosThetaHE dependence
  {"fullCorrectionSPDany_ThetaHE",      "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"fullCorrectionSPDfirst_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"fullCorrectionY1SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"fullCorrectionY1SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"fullCorrectionY2SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"fullCorrectionY2SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"fullCorrectionY3SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"fullCorrectionY3SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"fullCorrectionPt1SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"fullCorrectionPt1SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"fullCorrectionPt2SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"fullCorrectionPt2SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"fullCorrectionPt3SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"fullCorrectionPt3SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"fullCorrectionPt4SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"fullCorrectionPt4SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"fullCorrectionPt5SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"fullCorrectionPt5SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"fullCorrectionPt6SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (full cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"fullCorrectionPt6SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (full cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // tracking corrections, pt dependence
  {"trackingCorrectionSPDany_pt",      "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionSPDfirst_pt",    "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY1SPDany_pt",    "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionY1SPDfirst_pt",  "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2SPDany_pt",    "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2SPDfirst_pt",  "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3SPDany_pt",    "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3SPDfirst_pt",  "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"trackingCorrectionPt1SPDany_pt",   "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"trackingCorrectionPt1SPDfirst_pt", "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"trackingCorrectionPt2SPDany_pt",   "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"trackingCorrectionPt2SPDfirst_pt", "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"trackingCorrectionPt3SPDany_pt",   "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"trackingCorrectionPt3SPDfirst_pt", "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"trackingCorrectionPt4SPDany_pt",   "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"trackingCorrectionPt4SPDfirst_pt", "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"trackingCorrectionPt5SPDany_pt",   "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"trackingCorrectionPt5SPDfirst_pt", "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"trackingCorrectionPt6SPDany_pt",   "Eff. vs. pt, (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"trackingCorrectionPt6SPDfirst_pt", "Eff. vs. pt, (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // tracking corrections, cosThetaCS dependence
  {"trackingCorrectionSPDany_ThetaCS",      "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionSPDfirst_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY1SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionY1SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"trackingCorrectionPt1SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"trackingCorrectionPt1SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"trackingCorrectionPt2SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"trackingCorrectionPt2SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"trackingCorrectionPt3SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"trackingCorrectionPt3SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"trackingCorrectionPt4SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"trackingCorrectionPt4SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"trackingCorrectionPt5SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"trackingCorrectionPt5SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"trackingCorrectionPt6SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"trackingCorrectionPt6SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // tracking corrections, cosThetaHE dependence
  {"trackingCorrectionSPDany_ThetaHE",      "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionSPDfirst_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY1SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionY1SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"trackingCorrectionPt1SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"trackingCorrectionPt1SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"trackingCorrectionPt2SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"trackingCorrectionPt2SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"trackingCorrectionPt3SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"trackingCorrectionPt3SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"trackingCorrectionPt4SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"trackingCorrectionPt4SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"trackingCorrectionPt5SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"trackingCorrectionPt5SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"trackingCorrectionPt6SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"trackingCorrectionPt6SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // tracking corrections with V0 cuts, pt dependence
  {"trackingCorrectionV0SPDany_pt",      "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionV0SPDfirst_pt",    "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY1V0SPDany_pt",    "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionY1V0SPDfirst_pt",  "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2V0SPDany_pt",    "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2V0SPDfirst_pt",  "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3V0SPDany_pt",    "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3V0SPDfirst_pt",  "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"trackingCorrectionV0Pt1SPDany_pt",   "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"trackingCorrectionV0Pt1SPDfirst_pt", "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"trackingCorrectionV0Pt2SPDany_pt",   "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"trackingCorrectionV0Pt2SPDfirst_pt", "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"trackingCorrectionV0Pt3SPDany_pt",   "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"trackingCorrectionV0Pt3SPDfirst_pt", "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"trackingCorrectionV0Pt4SPDany_pt",   "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"trackingCorrectionV0Pt4SPDfirst_pt", "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"trackingCorrectionV0Pt5SPDany_pt",   "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"trackingCorrectionV0Pt5SPDfirst_pt", "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"trackingCorrectionV0Pt6SPDany_pt",   "Eff. vs. pt, (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"trackingCorrectionV0Pt6SPDfirst_pt", "Eff. vs. pt, (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // tracking corrections with V0 cuts, cosThetaCS dependence
  {"trackingCorrectionV0SPDany_ThetaCS",      "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionV0SPDfirst_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY1V0SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionY1V0SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2V0SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2V0SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3V0SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3V0SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"trackingCorrectionV0Pt1SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"trackingCorrectionV0Pt1SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"trackingCorrectionV0Pt2SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"trackingCorrectionV0Pt2SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"trackingCorrectionV0Pt3SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"trackingCorrectionV0Pt3SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"trackingCorrectionV0Pt4SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"trackingCorrectionV0Pt4SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"trackingCorrectionV0Pt5SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"trackingCorrectionV0Pt5SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"trackingCorrectionV0Pt6SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"trackingCorrectionV0Pt6SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // tracking corrections with V0 cuts, cosThetaHE dependence
  {"trackingCorrectionV0SPDany_ThetaHE",      "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionV0SPDfirst_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY1V0SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"trackingCorrectionY1V0SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2V0SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"trackingCorrectionY2V0SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3V0SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"trackingCorrectionY3V0SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"trackingCorrectionV0Pt1SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"trackingCorrectionV0Pt1SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"trackingCorrectionV0Pt2SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"trackingCorrectionV0Pt2SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"trackingCorrectionV0Pt3SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"trackingCorrectionV0Pt3SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"trackingCorrectionV0Pt4SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"trackingCorrectionV0Pt4SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"trackingCorrectionV0Pt5SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"trackingCorrectionV0Pt5SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"trackingCorrectionV0Pt6SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"trackingCorrectionV0Pt6SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (tracking +V0 cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},

  // pid corrections, pt dependence
  {"pidCorrectionSPDany_pt",      "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"pidCorrectionSPDfirst_pt",    "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY1SPDany_pt",    "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"pidCorrectionY1SPDfirst_pt",  "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY2SPDany_pt",    "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY2SPDfirst_pt",  "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"pidCorrectionY3SPDany_pt",    "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"pidCorrectionY3SPDfirst_pt",  "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"pidCorrectionPt1SPDany_pt",   "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"pidCorrectionPt1SPDfirst_pt", "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"pidCorrectionPt2SPDany_pt",   "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"pidCorrectionPt2SPDfirst_pt", "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"pidCorrectionPt3SPDany_pt",   "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"pidCorrectionPt3SPDfirst_pt", "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"pidCorrectionPt4SPDany_pt",   "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"pidCorrectionPt4SPDfirst_pt", "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"pidCorrectionPt5SPDany_pt",   "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"pidCorrectionPt5SPDfirst_pt", "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"pidCorrectionPt6SPDany_pt",   "Eff. vs. pt, (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"pidCorrectionPt6SPDfirst_pt", "Eff. vs. pt, (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // pid corrections, cosThetaCS dependence
  {"pidCorrectionSPDany_ThetaCS",      "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"pidCorrectionSPDfirst_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY1SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"pidCorrectionY1SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY2SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY2SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"pidCorrectionY3SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"pidCorrectionY3SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"pidCorrectionPt1SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"pidCorrectionPt1SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"pidCorrectionPt2SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"pidCorrectionPt2SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"pidCorrectionPt3SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"pidCorrectionPt3SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"pidCorrectionPt4SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"pidCorrectionPt4SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"pidCorrectionPt5SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"pidCorrectionPt5SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"pidCorrectionPt6SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"pidCorrectionPt6SPDfirst_ThataCS", "Eff. vs. cos(#theta_{CS}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // pid corrections, cosThetaHE dependence
  {"pidCorrectionSPDany_ThetaHE",      "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",       ""},
  {"pidCorrectionSPDfirst_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY1SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",       ""},
  {"pidCorrectionY1SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.3 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY2SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",     ""},
  {"pidCorrectionY2SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in 0.3<y<0.9 & 0<pt<10.0 GeV/c)",   ""},
  {"pidCorrectionY3SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)",   ""},
  {"pidCorrectionY3SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c)", ""},
  {"pidCorrectionPt1SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",              ""},
  {"pidCorrectionPt1SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 0<pt<1.0)",            ""},
  {"pidCorrectionPt2SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",            ""},
  {"pidCorrectionPt2SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 1.0<pt<2.0)",          ""},
  {"pidCorrectionPt3SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",            ""},
  {"pidCorrectionPt3SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 2.0<pt<3.0)",          ""},
  {"pidCorrectionPt4SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",            ""},
  {"pidCorrectionPt4SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 3.0<pt<5.0)",          ""},
  {"pidCorrectionPt5SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",            ""},
  {"pidCorrectionPt5SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 5.0<pt<7.0)",          ""},
  {"pidCorrectionPt6SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD any, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",           ""},
  {"pidCorrectionPt6SPDfirst_ThataHE", "Eff. vs. cos(#theta_{HE}), (pid cuts, SPD first, TPC PID)/(J/#Psi in |y|<0.9 & 7.0<pt<10.0)",         ""},
  // correction for the invariant mass integration range, pt dependence
  {"signalFractionSPDany_pt",      "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 0<pt<10.0 GeV/c",      "any,-0.9,0.9,0.0,10.0"},
  {"signalFractionSPDfirst_pt",    "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 0<pt<10.0 GeV/c",    "first,-0.9,0.9,0.0,10.0"},
  {"signalFractionY1SPDany_pt",    "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.3<y<+0.3 & 0<pt<10.0 GeV/c",      "any,-0.3,0.3,0.0,10.0"},
  {"signalFractionY1SPDfirst_pt",  "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.3<y<+0.3 & 0<pt<10.0 GeV/c",    "first,-0.3,0.3,0.0,10.0"},
  {"signalFractionY2SPDany_pt",    "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in 0.3<y<+0.9 & 0<pt<10.0 GeV/c",       "any,0.3,0.9,0.0,10.0"},
  {"signalFractionY2SPDfirst_pt",  "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in 0.3<y<+0.9 & 0<pt<10.0 GeV/c",     "first,0.3,0.9,0.0,10.0"},
  {"signalFractionY3SPDany_pt",    "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c",      "any,-0.9,-0.3,0.0,10.0"},
  {"signalFractionY3SPDfirst_pt",  "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c",    "first,-0.9,-0.3,0.0,10.0"},
  {"signalFractionPt1SPDany_pt",   "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 0<pt<1.0 GeV/c",       "any,-0.9,0.9,0.0,1.0"},
  {"signalFractionPt1SPDfirst_pt", "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 0<pt<1.0 GeV/c",     "first,-0.9,0.9,0.0,1.0"},
  {"signalFractionPt2SPDany_pt",   "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 1.0<pt<2.0 GeV/c",     "any,-0.9,0.9,1.0,2.0"},
  {"signalFractionPt2SPDfirst_pt", "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 1.0<pt<2.0 GeV/c",   "first,-0.9,0.9,1.0,2.0"},
  {"signalFractionPt3SPDany_pt",   "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 2.0<pt<3.0 GeV/c",     "any,-0.9,0.9,2.0,3.0"},
  {"signalFractionPt3SPDfirst_pt", "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 2.0<pt<3.0 GeV/c",   "first,-0.9,0.9,2.0,3.0"},
  {"signalFractionPt4SPDany_pt",   "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 3.0<pt<5.0 GeV/c",     "any,-0.9,0.9,3.0,5.0"},
  {"signalFractionPt4SPDfirst_pt", "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 3.0<pt<5.0 GeV/c",   "first,-0.9,0.9,3.0,5.0"},
  {"signalFractionPt5SPDany_pt",   "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 5.0<pt<7.0 GeV/c",    "any,-0.9,0.9,5.0,7.0"},
  {"signalFractionPt5SPDfirst_pt", "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 5.0<pt<7.0 GeV/c",  "first,-0.9,0.9,5.0,7.0"},
  {"signalFractionPt6SPDany_pt",   "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 7.0<pt<10.0 GeV/c",    "any,-0.9,0.9,7.0,10.0"},
  {"signalFractionPt6SPDfirst_pt", "Eff. vs. pt, (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 7.0<pt<10.0 GeV/c",  "first,-0.9,0.9,7.0,10.0"},
  // correction for the invariant mass integration range, cosThetaCS dependence
  {"signalFractionSPDany_ThetaCS",      "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 0<pt<10.0 GeV/c",      ""},
  {"signalFractionSPDfirst_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 0<pt<10.0 GeV/c",    ""},
  {"signalFractionY1SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.3<y<+0.3 & 0<pt<10.0 GeV/c",      ""},
  {"signalFractionY1SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.3<y<+0.3 & 0<pt<10.0 GeV/c",    ""},
  {"signalFractionY2SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in 0.3<y<+0.9 & 0<pt<10.0 GeV/c",       ""},
  {"signalFractionY2SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in 0.3<y<+0.9 & 0<pt<10.0 GeV/c",     ""},
  {"signalFractionY3SPDany_ThetaCS",    "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c",      ""},
  {"signalFractionY3SPDfirst_ThetaCS",  "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c",    ""},
  {"signalFractionPt1SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 0<pt<1.0 GeV/c",       ""},
  {"signalFractionPt1SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 0<pt<1.0 GeV/c",     ""},
  {"signalFractionPt2SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 1.0<pt<2.0 GeV/c",     ""},
  {"signalFractionPt2SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 1.0<pt<2.0 GeV/c",   ""},
  {"signalFractionPt3SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 2.0<pt<3.0 GeV/c",     ""},
  {"signalFractionPt3SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 2.0<pt<3.0 GeV/c",   ""},
  {"signalFractionPt4SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 3.0<pt<5.0 GeV/c",     ""},
  {"signalFractionPt4SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 3.0<pt<5.0 GeV/c",   ""},
  {"signalFractionPt5SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 5.0<pt<7.0 GeV/c",    ""},
  {"signalFractionPt5SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 5.0<pt<7.0 GeV/c",  ""},
  {"signalFractionPt6SPDany_ThetaCS",   "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 7.0<pt<10.0 GeV/c",    ""},
  {"signalFractionPt6SPDfirst_ThetaCS", "Eff. vs. cos(#theta_{CS}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 7.0<pt<10.0 GeV/c",  ""},  

  // correction for the invariant mass integration range, cosThetaHE dependence
  {"signalFractionSPDany_ThetaHE",      "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 0<pt<10.0 GeV/c",      ""},
  {"signalFractionSPDfirst_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 0<pt<10.0 GeV/c",    ""},
  {"signalFractionY1SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.3<y<+0.3 & 0<pt<10.0 GeV/c",      ""},
  {"signalFractionY1SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.3<y<+0.3 & 0<pt<10.0 GeV/c",    ""},
  {"signalFractionY2SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in 0.3<y<+0.9 & 0<pt<10.0 GeV/c",       ""},
  {"signalFractionY2SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in 0.3<y<+0.9 & 0<pt<10.0 GeV/c",     ""},
  {"signalFractionY3SPDany_ThetaHE",    "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c",      ""},
  {"signalFractionY3SPDfirst_ThetaHE",  "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<-0.3 & 0<pt<10.0 GeV/c",    ""},
  {"signalFractionPt1SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 0<pt<1.0 GeV/c",       ""},
  {"signalFractionPt1SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 0<pt<1.0 GeV/c",     ""},
  {"signalFractionPt2SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 1.0<pt<2.0 GeV/c",     ""},
  {"signalFractionPt2SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 1.0<pt<2.0 GeV/c",   ""},
  {"signalFractionPt3SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 2.0<pt<3.0 GeV/c",     ""},
  {"signalFractionPt3SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 2.0<pt<3.0 GeV/c",   ""},
  {"signalFractionPt4SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 3.0<pt<5.0 GeV/c",     ""},
  {"signalFractionPt4SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 3.0<pt<5.0 GeV/c",   ""},
  {"signalFractionPt5SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 5.0<pt<7.0 GeV/c",    ""},
  {"signalFractionPt5SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 5.0<pt<7.0 GeV/c",  ""},
  {"signalFractionPt6SPDany_ThetaHE",   "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD any, J/#Psi in -0.9<y<+0.9 & 7.0<pt<10.0 GeV/c",    ""},
  {"signalFractionPt6SPDfirst_ThetaHE", "Eff. vs. cos(#theta_{HE}), (2.92<M_{inv}<3.16) / (0.0<M_{inv}<5.0), SPD first, J/#Psi in -0.9<y<+0.9 & 7.0<pt<10.0 GeV/c",  ""}

};


// Function prototypes ---------------------------------------------------
Double_t* GetBinning(AliCFContainer* cont, Int_t variable, Int_t& nBins);
void FillHistograms(TObjArray* histosArray, AliCFContainer* cont, Int_t currentRangeStep, Bool_t firstTime);
void GetBinLimits(AliCFContainer* cont);
void DefineHistograms(TObjArray* objArray, Int_t iCutSet);
void AddHistogram(TObjArray* objArray, Int_t ndim, 
		  const Char_t* name, const Char_t* title, 
		  Int_t nbinsx, Double_t* binsx, const Char_t* xLabel = "",
		  Int_t nbinsy=0, Double_t* binsy=0, const Char_t* yLabel = "",
		  Int_t nbinsz=0, Double_t* binsz=0, const Char_t* zLabel = "");
void ProjectManyRuns(const Char_t* runList, const Char_t* pattern, Int_t howMany=1, Int_t offset = 0);
void ProjectAll(const Char_t* inputList, const Char_t* outfilename="HistosFromCFs.root", 
		Int_t howMany=1, Int_t offset=0);
void ExtractEfficienciesMany(const Char_t* runList, const Char_t* pattern, const Char_t* outAscii, Int_t howMany=1, Int_t offset=0);
void ExtractEfficiencies(const Char_t* inputFile, const Char_t* outfilename="Efficiencies.root", const Char_t* numbersFile="");
TH1* DivideHists(TH1* nominator, TH1* denominator, Int_t dimension);
//-------------------------------------------------------------------------


//_______________________________________________________________________________________
void ProjectManyRuns(const Char_t* runList,
		     const Char_t* pattern, 
		     Int_t howMany, Int_t offset) {
  //
  //
  //
  
  // loop over all runs -----------------------
  ifstream input; input.open(runList);
  Int_t runCounter = 0;
  while(input.good()) {
    Char_t readString[256];
    input.getline(readString, 256, '\n');  // get a chunk
    TString runStr = readString;
    Int_t run = runStr.Atoi();
    if(run<=0) continue;

    if(runCounter<offset) {
      runCounter++;
      continue;
    }
    if(runCounter>=offset+howMany) 
      break;

    cout << "=================== run " << run << " ============================" << endl;

    ProjectAll(Form("%s/%s/listCF.txt", pattern, readString), 
	       Form("%s/%s/Projections.root",pattern, readString), 
	       100, 0);
    runCounter++;
  }
}


//_______________________________________________________________________________________
void ProjectAll(const Char_t* inputList, 
		const Char_t* outfilename, 
		Int_t howMany, Int_t offset) {
  //
  //  Main function for making projections from a list of CF containers (inputList).
  //  The resulting histograms are placed in the ROOT file specified by outfilename
  //
  //  Modify the global variables above to match your requirements
  //

  // open the output file
  TFile *outFile = new TFile(outfilename,"RECREATE");
  // -----------------------------------------------------------------------------

  // copy the current ExtractEfficiency macro in the same dir as the output file
  TString outStr = "";
  outStr += outfilename;
  outStr.ReplaceAll(".root", "_ExtractEfficienciesMacro.C");
  gSystem->Exec(Form("cp ExtractEfficiencies.C %s", outStr.Data()));
  // ---------------------------------------------------------------------------
  
  // create the container for all the histograms ---------------------
  TObjArray *histoArray=new TObjArray();
  histoArray->SetOwner();
  //------------------------------------------------------------------

  
  // loop over all CF files, project and merge -----------------------
  ifstream input; input.open(inputList);
  Int_t currentFile=0;
  Bool_t firstTime = kTRUE;
  while(input.good()) {
    Char_t readString[256];
    input.getline(readString, 256, '\n');  // get a chunk
    TString readStringString = readString;
    if(readStringString[0]!='/') continue;
    if(!readStringString.Contains(".root")) continue;

    if(currentFile<offset) {
      currentFile++;
      continue;
    }
    if(currentFile>=offset+howMany) 
      break;

    cout << "file: " << readString << endl;

    AliDielectronCFdraw *cf=new AliDielectronCFdraw(readString);
    AliCFContainer* cont=cf->GetCFContainer();

    // ****************************************************************************
    // Below apply all your cut sets then call the FillHistograms() function
    // Don't forget to increment the "currentCutSet" variable after every cut set
    // ****************************************************************************

    // pair type (0 ++, 1 +-, 2 --) ----------------------------------
    cf->SetRangeUser("PairType", 1.1, 1.9);
    // Pair rapidity cut
    cf->SetRangeUser("Y", -0.899, 0.899);
    cf->SetRangeUser("Pt", 0.001, 9.999);
    Int_t currentCutSet = 0;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi -0.3<y<0.3 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.299, 0.299);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 0.3<y<0.9 ----------------------------------------------------
    cf->SetRangeUser("Y", 0.301, 0.899);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi -0.9<y<-0.3 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.899, -0.301);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 0<pt<1.0 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.899, 0.899);
    cf->SetRangeUser("Pt", 0.001, 0.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 1.0<pt<2.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 1.001, 1.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 2.0<pt<3.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 2.001, 2.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 3.0<pt<5.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 3.001, 4.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 5.0<pt<7.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 5.001, 6.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 7.0<pt<10.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 7.001, 9.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // Leg pseudo-rapidity cut ---------------------------------------
    cf->SetRangeUser("Pt", 0.001, 9.999);
    cf->SetRangeUser("Y", -0.899, 0.899);
    cf->SetRangeUser("Leg1_Eta", -0.899, 0.899);
    cf->SetRangeUser("Leg2_Eta", -0.899, 0.899);
    cf->SetRangeUser("Leg1_Pt", 1.001, 10.0);
    cf->SetRangeUser("Leg2_Pt", 1.001, 10.0);
    cf->SetRangeUser("Leg1_NclsTPC", 70.1, 160.0);
    cf->SetRangeUser("Leg2_NclsTPC", 70.1, 160.0);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi -0.3<y<0.3 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.299, 0.299);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 0.3<y<0.9 ----------------------------------------------------
    cf->SetRangeUser("Y", 0.301, 0.899);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi -0.9<y<-0.3 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.899, -0.301);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 0<pt<1.0 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.899, 0.899);
    cf->SetRangeUser("Pt", 0.001, 0.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 1.0<pt<2.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 1.001, 1.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 2.0<pt<3.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 2.001, 2.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 3.0<pt<5.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 3.001, 4.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 5.0<pt<7.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 5.001, 6.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 7.0<pt<10.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 7.001, 9.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    
    // j/psi 2.92<M<3.16
    cf->SetRangeUser("Pt", 0.001, 9.999);
    cf->SetRangeUser("Y", -0.899, 0.899);
    cf->SetRangeUser("M", 2.9201, 3.1599);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi -0.3<y<0.3 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.299, 0.299);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 0.3<y<0.9 ----------------------------------------------------
    cf->SetRangeUser("Y", 0.301, 0.899);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi -0.9<y<-0.3 ----------------------------------------------------
    cf->SetRangeUser("Y", -0.899, -0.301);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 0<pt<1.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 0.001, 0.999);
    cf->SetRangeUser("Y", -0.899, 0.899);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 1.0<pt<2.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 1.001, 1.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 2.0<pt<3.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 2.001, 2.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 3.0<pt<5.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 3.001, 4.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 5.0<pt<7.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 5.001, 6.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);

    // j/psi 7.0<pt<10.0 ----------------------------------------------------
    cf->SetRangeUser("Pt", 7.001, 9.999);
    currentCutSet++;
    FillHistograms(histoArray, cont, currentCutSet, firstTime);
    

    currentFile++;
    firstTime = kFALSE;
    delete cont;
    delete cf;
  }  // end loop over CF files

  outFile->cd();  
  histoArray->Write();
  outFile->Close();
  delete histoArray;
  return;
}


//_______________________________________________________________________________________
void ExtractEfficienciesMany(const Char_t* runList, const Char_t* pattern, const Char_t* outAscii, Int_t howMany, Int_t offset) {
  //
  //
  //

  // loop over all runs -----------------------
  ifstream input; input.open(runList);
  Int_t runCounter = 0;

  TGraphErrors* trends[gkNeffs];
  Double_t weightedEffs[gkNeffs];
  Double_t weightedErrs[gkNeffs];
  Int_t nPoints[gkNeffs];
  Double_t nTotalEvents[gkNeffs];
  for(Int_t iTrend=0; iTrend<gkNeffs; iTrend++) {
    trends[iTrend] = new TGraphErrors();
    trends[iTrend]->SetName(gkEffNames[iTrend][0]);
    trends[iTrend]->SetTitle(gkEffNames[iTrend][1]);
    weightedEffs[iTrend] = 0.0; weightedErrs[iTrend] = 0.0;
    nPoints[iTrend] = 0;
    nTotalEvents[iTrend] = 0;
  }
  TFile* file=0x0;
  TFile* normalizationFile=0x0;
  TNamed* object;
  
  while(input.good()) {
    Char_t readString[256];
    input.getline(readString, 256, '\n');  // get a chunk
    TString runStr = readString;
    Int_t run = runStr.Atoi();

    if(run<=0) continue;

    if(runCounter<offset) {
      runCounter++;
      continue;
    }
    if(runCounter>=offset+howMany) 
      break;

    cout << "=================== run " << run << " ============================" << endl;
    TString periodStr;
    if(run<=117222) periodStr = "LHC10b.pass2";
    if(run>117222 && run<=120829) periodStr = "LHC10c.pass2";
    if(run>121000 && run<=126437) periodStr = "LHC10d.pass2";
    Double_t nPhysicsEvents = 0;
    normalizationFile = TFile::Open(Form("/lustre/alice/train/V006.pp/2011-03-18_2242.6024/mergedRuns/pp/7TeV/%s/%d.ana/iarsene_normalization.root", periodStr.Data(), run));
    cout << "# physics events = ";
    if(normalizationFile) {
      TObjArray *histos=(TObjArray*)normalizationFile->Get("iarsene_normalization");
      TH1I* triggers=(TH1I*)histos->FindObject("TriggersHistogram");
      nPhysicsEvents = triggers->GetBinContent(2);   // PHYSICS events
      cout << nPhysicsEvents;
      normalizationFile->Close();
    }
    else
      cout << " NOT FOUND";
    cout << endl;

    ExtractEfficiencies(Form("%s/%s/Projections.root",pattern,readString), 
			Form("%s/%s/Efficiencies.root",pattern,readString));
    file = TFile::Open(Form("%s/%s/Efficiencies.root",pattern,readString));
    if(file && !file->IsZombie()) {   
      for(Int_t iTrend=0; iTrend<gkNeffs; iTrend++) {
	object = (TNamed*)file->Get(Form("%s_value",gkEffNames[iTrend][0]));
	if(!object) continue;
	Float_t eff = (TString(object->GetTitle())).Atof();
	trends[iTrend]->SetPoint(nPoints[iTrend], run, eff);
	object = (TNamed*)file->Get(Form("%s_error",gkEffNames[iTrend][0]));
	if(!object) continue;
	Float_t err = (TString(object->GetTitle())).Atof();
	trends[iTrend]->SetPointError(nPoints[iTrend], 0.0, err);
	weightedEffs[iTrend] += nPhysicsEvents*eff;
	weightedErrs[iTrend] += nPhysicsEvents*nPhysicsEvents*err*err;
	nTotalEvents[iTrend] += nPhysicsEvents;
	//	cout << "trend " << iTrend << "; eff = " << eff << endl;
	nPoints[iTrend]+=1;
      }
      file->Close();
    }
    if(normalizationFile)
      normalizationFile->Close();
    runCounter++;
  }

  // write the efficiencies also in an ascii file
  ofstream asciiOut;
  asciiOut.open(outAscii);

  TFile *saveTrend = new TFile(Form("%s.trend.root", runList), "RECREATE");
  TNamed *weightedFactors;
  TNamed *weightedErrors;
  TNamed *nEventsObject;
  for(Int_t iTrend=0; iTrend<gkNeffs; iTrend++) {
    trends[iTrend]->Write();
    weightedEffs[iTrend] /= nTotalEvents[iTrend];
    weightedErrs[iTrend] = TMath::Sqrt(weightedErrs[gkNeffs])/nTotalEvents[iTrend];
    weightedFactors = new TNamed(Form("%s_weighted", gkEffNames[iTrend][0]),
				 Form("%f", weightedEffs[iTrend]));
    weightedErrors = new TNamed(Form("%s_weightedErr", gkEffNames[iTrend][0]),
				 Form("%f", weightedErrs[iTrend]));
    weightedFactors->Write();
    weightedErrors->Write();
    nEventsObject = new TNamed(Form("TotalEvents_%s",gkEffNames[iTrend][0]), Form("%f",nTotalEvents[iTrend]));
    nEventsObject->Write();
    // write a table into an ascii file ---------------------------------
    TString effNameStr(gkEffNames[iTrend][2]);
    // The array contains y,pt rapidity intervals for this efficiency, and/or other variables
    // Always, the first element of the array should be "any" or "first"
    TObjArray* array = effNameStr.Tokenize(",");
    if(array->GetEntries()<=1) continue;
    asciiOut << iTrend << "\t";
    if(((TObjString*)array->At(0))->GetString()=="any")
      asciiOut << "1";
    else if(((TObjString*)array->At(0))->GetString()=="first")
      asciiOut << "2";
    for(Int_t iStr=1; iStr<array->GetEntries(); iStr++)
      asciiOut << "\t" << ((TObjString*)array->At(iStr))->GetString().Data();
    asciiOut << "\t " << weightedEffs[iTrend] << endl;
  }
  // At the end of the ascii file write the format and brief explanations
  asciiOut << endl;
  asciiOut << "# Format:  efficiencyId    SPD(1-any/2-first)     yLow       yHigh      ptLow      ptHigh      efficiency" << endl;
  asciiOut << "# Efficiency descriptions (based on efficiencyId) : " << endl;
  for(Int_t iTrend=0; iTrend<gkNeffs; iTrend++) {
    TString effNameStr(gkEffNames[iTrend][2]);
    TObjArray* array = effNameStr.Tokenize(",");
    if(array->GetEntries()<=1) continue;
    asciiOut << "# " << iTrend << " - " << gkEffNames[iTrend][1] << endl;
  }

  saveTrend->Close();
}

//_______________________________________________________________________________________
void ExtractEfficiencies(const Char_t* inputFilename,
			 const Char_t* outfilename,
			 const Char_t* numbersFile) {
  //
  // Main function to extract efficiencies
  //

  // Open the output file
  TFile *output = new TFile(outfilename, "RECREATE");
  // ---------------------------------------------------------------------------

  // copy the current ExtractEfficiency macro in the same dir as the output file
  TString outStr = "";
  outStr += outfilename;
  outStr.ReplaceAll(".root", "_ExtractEfficienciesMacro.C");
  gSystem->Exec(Form("cp ExtractEfficiencies.C %s", outStr.Data()));
  // ---------------------------------------------------------------------------

  // open the input file and read out all the histograms
  TFile *file = TFile::Open(inputFilename);
  if(!file || file->IsZombie()) return;
  
  TObjArray *effArray = new TObjArray();
  effArray->SetOwner();
  TH1* nominator;
  TH1* denominator;
  TNamed* effValue;
  TNamed* effError;
  ofstream asciiOut;
  if(numbersFile[0]!='\0') {
    asciiOut.open(numbersFile);
    asciiOut << "#Format:  Name  |  Value   |   Abs. Error" << endl;
  }
  for(Int_t iEff=0; iEff<gkNeffs; iEff++) {
    //    cout << gkEffNames[iEff][0] << " (" << gkEffNames[iEff][1] << " )" << endl;
    if(gkDims[gkEffs[iEff][2]][0]==1) {      // 1-dim histos
      nominator = (TH1D*)(file->Get(Form("%s_%s_%s",gkStepNames[gkEffs[iEff][0]][0],
					  gkCutSetNames[gkEffs[iEff][1]][0],
					  gkHistoNames[gkEffs[iEff][2]][0])));
      denominator = (TH1D*)(file->Get(Form("%s_%s_%s",gkStepNames[gkEffs[iEff][3]][0],
					    gkCutSetNames[gkEffs[iEff][4]][0],
					    gkHistoNames[gkEffs[iEff][5]][0])));
      if(!nominator) continue;
      if(!denominator) continue;
      nominator->GetYaxis()->SetTitle("efficiency");
    }
    if(gkDims[gkEffs[iEff][2]][0]==2) {      // 2-dim histos
      nominator = (TH2D*)(file->Get(Form("%s_%s_%s",gkStepNames[gkEffs[iEff][0]][0],
					  gkCutSetNames[gkEffs[iEff][1]][0],
					  gkHistoNames[gkEffs[iEff][2]][0])));
      denominator = (TH2D*)(file->Get(Form("%s_%s_%s",gkStepNames[gkEffs[iEff][3]][0],
					    gkCutSetNames[gkEffs[iEff][4]][0],
					    gkHistoNames[gkEffs[iEff][5]][0])));
      if(!nominator) continue;
      if(!denominator) continue;
      nominator->GetZaxis()->SetTitle("efficiency");
    }
    if(gkDims[gkEffs[iEff][2]][0]==3) {      // 3-dim histos
      nominator = (TH3D*)(file->Get(Form("%s_%s_%s",gkStepNames[gkEffs[iEff][0]][0],
					  gkCutSetNames[gkEffs[iEff][1]][0],
					  gkHistoNames[gkEffs[iEff][2]][0])));
      denominator = (TH3D*)(file->Get(Form("%s_%s_%s",gkStepNames[gkEffs[iEff][3]][0],
					    gkCutSetNames[gkEffs[iEff][4]][0],
					    gkHistoNames[gkEffs[iEff][5]][0])));
      if(!nominator) continue;
      if(!denominator) continue;
    }
    Double_t nomIntegral = nominator->Integral();
    Double_t denomIntegral = denominator->Integral();
    Double_t eff = (denomIntegral>0 ? nomIntegral/denomIntegral : 0);
    // Error calculation: take into account that nominator and denominator are correlated.
    // The nominator is a subset of denominator
    Double_t error = eff;
    if(nomIntegral>0 && denomIntegral>0)
      error = eff*TMath::Sqrt(TMath::Abs(denomIntegral-nomIntegral)/nomIntegral/denomIntegral);
    //nominator->Divide(denominator);
    TH1* ratio = DivideHists(nominator, denominator, gkDims[gkEffs[iEff][2]][0]);
    //    cout << "efficiency = " << nomIntegral << " / " << denomIntegral << " = "
    //	 << eff << " +/- " << error << endl;
    TString title = gkEffNames[iEff][1];
    title += Form(", integrated eff. = %f #pm %f", eff, error);
    ratio->SetTitle(title.Data());
    ratio->SetName(gkEffNames[iEff][0]);
    effArray->Add(ratio);

    if(numbersFile[0]!='\0') {
      asciiOut << gkEffNames[iEff][0] << "\t" << eff << "\t" << error << endl;
    }
    effValue = new TNamed(Form("%s_value", gkEffNames[iEff][0]),
    			  Form("%f", eff));
    effArray->Add(effValue);
    effError = new TNamed(Form("%s_error", gkEffNames[iEff][0]),
			  Form("%f", error));
    effArray->Add(effError);
  }

  output->cd();
  effArray->Write();
  output->Close();
  file->Close();
  asciiOut.close();
}


//________________________________________________________________________________________
void DefineHistograms(TObjArray* histoArray, Int_t iCutSet) {
  //
  // Define the histograms to be filled for every step and a given cut set
  // This function is called by the FillHistograms() if the firstTime flag is set

  for(Int_t iStep=0; iStep<kNSteps; iStep++) {
    for(Int_t iHisto = 0; iHisto<gkNhistos; iHisto++) {
      AddHistogram(histoArray, gkDims[iHisto][0],
		   Form("%s_%s_%s", gkStepNames[iStep][0], gkCutSetNames[iCutSet][0], gkHistoNames[iHisto][0]),
		   Form("%s, %s, %s", gkHistoNames[iHisto][1], gkStepNames[iStep][1], gkCutSetNames[iCutSet][1]),
		   gNbins[gkDims[iHisto][1]], gBinLimits[gkDims[iHisto][1]], gkVarNames[gkDims[iHisto][1]],
		   (gkDims[iHisto][2]!=kNothing ? gNbins[gkDims[iHisto][2]] : 0), 
		   (gkDims[iHisto][2]!=kNothing ? gBinLimits[gkDims[iHisto][2]] : 0),
		   (gkDims[iHisto][2]!=kNothing ? gkVarNames[gkDims[iHisto][2]] : ""),
		   (gkDims[iHisto][3]!=kNothing ? gNbins[gkDims[iHisto][3]] : 0), 
		   (gkDims[iHisto][3]!=kNothing ? gBinLimits[gkDims[iHisto][3]] : 0),
		   (gkDims[iHisto][3]!=kNothing ? gkVarNames[gkDims[iHisto][3]] : ""));
      
    }  // end loop over histos
  }   // end loop over steps
}


//_________________________________________________________________________________________
void AddHistogram(TObjArray* histoArray, Int_t ndim, 
		  const Char_t* name, const Char_t* title, 
		  Int_t nbinsx, Double_t* binsx, const Char_t* xLabel,
		  Int_t nbinsy, Double_t* binsy, const Char_t* yLabel,
		  Int_t nbinsz, Double_t* binsz, const Char_t* zLabel) {
  //
  // Create a 1,2 or 3 - dimensional histogram and add it to the object array
  //
  if(ndim<1 || ndim>3) return;
  TH1* histo;
  if(ndim==1) {
    histo = new TH1D(name, title, nbinsx, binsx);
    histo->Sumw2();
    histo->GetXaxis()->SetTitle(xLabel);
  }
  if(ndim==2) {
    histo = new TH2D(name, title, nbinsx, binsx, nbinsy, binsy);
    histo->Sumw2();
    histo->GetXaxis()->SetTitle(xLabel);
    histo->GetYaxis()->SetTitle(yLabel);
  }
  if(ndim==3) {
    histo = new TH3D(name, title, nbinsx, binsx, nbinsy, binsy, nbinsz, binsz);
    histo->Sumw2();
    histo->GetXaxis()->SetTitle(xLabel);
    histo->GetYaxis()->SetTitle(yLabel);
    histo->GetZaxis()->SetTitle(zLabel);
  }
  histoArray->Add(histo);
}

//__________________________________________________________________________________________
void FillHistograms(TObjArray* histosArray, AliCFContainer* cont, Int_t currentCutSet, Bool_t firstTime) {
  //
  // Fill the user defined histograms for a given cut set
  // 
  // If the firstTime flag is on then update the bin limits and call DefineHistograms()
  if(firstTime) {
    GetBinLimits(cont);
    DefineHistograms(histosArray, currentCutSet);
  }

  TH1* histo;
  for(Int_t iStep=0; iStep<kNSteps; ++iStep) {  // loop over CF container steps
    for(Int_t iHisto=0; iHisto<gkNhistos; iHisto++) {
      // fill 1-dim histos
      if(gkDims[iHisto][0]==1) {
	histo = (TH1D*)histosArray->FindObject(Form("%s_%s_%s",gkStepNames[iStep][0],
						    gkCutSetNames[currentCutSet][0],
						    gkHistoNames[iHisto][0]));
	//histo->Add(cont->Project(gkDims[iHisto][1],gkStepNumbers[iStep]));

	//cout << "Histo: " << Form("%s_%s_%s",gkStepNames[iStep][0],gkCutSetNames[currentCutSet][0],gkHistoNames[iHisto][0]) << endl;
	//cout << "bin lims x: ";
	//for(Int_t iBinx=1; iBinx<=histo->GetXaxis()->GetNbins(); iBinx++)
	//  cout << histo->GetXaxis()->GetBinLowEdge(iBinx) << "  ";
	//cout << histo->GetXaxis()->GetBinUpEdge(histo->GetXaxis()->GetNbins()) << endl;
	histo->Add(cont->Project(gkStepNumbers[iStep],gkDims[iHisto][1]));
      }
      // fill 2-dim histos
      if(gkDims[iHisto][0]==2) {
	histo = (TH2D*)histosArray->FindObject(Form("%s_%s_%s",gkStepNames[iStep][0],
						    gkCutSetNames[currentCutSet][0],
						    gkHistoNames[iHisto][0]));
	//histo->Add(cont->Project(gkDims[iHisto][1], gkDims[iHisto][2], gkStepNumbers[iStep]));
	//cout << "Histo: " << Form("%s_%s_%s",gkStepNames[iStep][0],gkCutSetNames[currentCutSet][0],gkHistoNames[iHisto][0]) << endl;
	//cout << "bin lims x: ";
	//for(Int_t iBinx=1; iBinx<=histo->GetXaxis()->GetNbins(); iBinx++)
	//  cout << histo->GetXaxis()->GetBinLowEdge(iBinx) << "  ";
	//cout << histo->GetXaxis()->GetBinUpEdge(histo->GetXaxis()->GetNbins()) << endl;
	//cout << "bin lims y: ";
	//for(Int_t iBiny=1; iBiny<=histo->GetYaxis()->GetNbins(); iBiny++)
	//  cout << histo->GetYaxis()->GetBinLowEdge(iBiny) << "  ";
	//cout << histo->GetYaxis()->GetBinUpEdge(histo->GetYaxis()->GetNbins()) << endl;
	histo->Add(cont->Project(gkStepNumbers[iStep], gkDims[iHisto][1], gkDims[iHisto][2]));
      }
      // fill 3-dim histos
      if(gkDims[iHisto][0]==3) {
	histo = (TH3D*)histosArray->FindObject(Form("%s_%s_%s",gkStepNames[iStep][0],
						    gkCutSetNames[currentCutSet][0],
						    gkHistoNames[iHisto][0]));
	//histo->Add(cont->Project(gkDims[iHisto][1], gkDims[iHisto][2], gkDims[iHisto][3], gkStepNumbers[iStep]));
	histo->Add(cont->Project(gkStepNumbers[iStep], gkDims[iHisto][1], gkDims[iHisto][2], gkDims[iHisto][3]));
      }
    }   // end loop over histos
  }  // end loop over steps
}

//____________________________________________________________________________________________
void GetBinLimits(AliCFContainer* cont) {
  //
  // Extract the bin limits from the CF container
  //
  cout << "********* New cut set ****************" << endl;
  for(Int_t iVar=0; iVar<kNVariables; iVar++) {
    gNbins[iVar] = 0;
    gBinLimits[iVar] = GetBinning(cont, iVar, gNbins[iVar]);
    cout << "n bins on " << cont->GetVarTitle(iVar) << " : " << gNbins[iVar];
    cout << "; range = " << gBinLimits[iVar][0] << " --> " << gBinLimits[iVar][gNbins[iVar]] << endl;
    //cout << "bin limits = ";
    //for(Int_t iBin=0; iBin<=gNbins[iVar]; iBin++) 
    //  cout << gBinLimits[iVar][iBin] << "  ";
    //cout << endl;
  }
}

//________________________________________________________________________________________
Double_t* GetBinning(AliCFContainer* cont, Int_t variable, 
		     Int_t& nBins) {
  //
  // Get the number of bins and the bin limits for the projection of a given variable
  //
  //TH1D* tempHist = cont->Project(variable, kPureMC);
  TH1* tempHist = cont->Project(kPureMC, variable);
  nBins = tempHist->GetXaxis()->GetNbins();
  Double_t* binLimits = new Double_t[nBins+1];
  for(Int_t i=1; i<=nBins; i++)
    binLimits[i-1]=tempHist->GetXaxis()->GetBinLowEdge(i);
  binLimits[nBins] = tempHist->GetXaxis()->GetBinLowEdge(nBins) + 
    tempHist->GetXaxis()->GetBinWidth(nBins);
  return binLimits;
}

//________________________________________________________________________________________
TH1* DivideHists(TH1* nominator, TH1* denominator, Int_t dimension) {
  //
  // divide 2 histograms with error propagation
  //
  TH1* ratio;
  if(dimension==3) {
    Int_t nBinsXNom = nominator->GetXaxis()->GetNbins();
    Int_t nBinsXDenom = denominator->GetXaxis()->GetNbins();
    Int_t nBinsYNom = nominator->GetYaxis()->GetNbins();
    Int_t nBinsYDenom = denominator->GetYaxis()->GetNbins();
    Int_t nBinsZNom = nominator->GetZaxis()->GetNbins();
    Int_t nBinsZDenom = denominator->GetZaxis()->GetNbins();
    if(nBinsXNom!=nBinsXDenom || nBinsYNom!=nBinsYDenom || nBinsZNom!=nBinsZDenom) {
      cout << "Trying to divide histograms with different number of bins" << endl;
      return 0x0;
    }
    ratio = (TH3D*)nominator->Clone("ratio");
    ratio->Reset();
    for(Int_t iXbin=1; iXbin<=nBinsXNom; ++iXbin) {
      for(Int_t iYbin=1; iYbin<=nBinsYNom; ++iYbin) {
	for(Int_t iZbin=1; iZbin<=nBinsZNom; ++iZbin) {
	  Double_t countsN = nominator->GetBinContent(iXbin, iYbin, iZbin);
	  Double_t countsD = denominator->GetBinContent(iXbin, iYbin, iZbin);
	  if(countsN<1 || countsD<1) continue;    // zero entry bins
	  Double_t eff = countsN/countsD;
	  Double_t error = eff*TMath::Sqrt(TMath::Abs(countsD-countsN)/countsN/countsD);
	  ratio->SetBinContent(iXbin, iYbin, iZbin, eff);
	  ratio->SetBinError(iXbin, iYbin, iZbin, error);
	}
      }
    }
    return ratio;
  }

  if(dimension==2) {
    Int_t nBinsXNom = nominator->GetXaxis()->GetNbins();
    Int_t nBinsXDenom = denominator->GetXaxis()->GetNbins();
    Int_t nBinsYNom = nominator->GetYaxis()->GetNbins();
    Int_t nBinsYDenom = denominator->GetYaxis()->GetNbins();
    if(nBinsXNom!=nBinsXDenom || nBinsYNom!=nBinsYDenom) {
      cout << "Trying to divide histograms with different number of bins" << endl;
      return 0x0;
    }
    ratio = (TH2D*)nominator->Clone("ratio");
    ratio->Reset();
    for(Int_t iXbin=1; iXbin<=nBinsXNom; ++iXbin) {
      for(Int_t iYbin=1; iYbin<=nBinsYNom; ++iYbin) {
	Double_t countsN = nominator->GetBinContent(iXbin, iYbin);
	Double_t countsD = denominator->GetBinContent(iXbin, iYbin);
	if(countsN<1 || countsD<1) continue;    // zero entry bins
	Double_t eff = countsN/countsD;
	Double_t error = eff*TMath::Sqrt(TMath::Abs(countsD-countsN)/countsN/countsD);
	ratio->SetBinContent(iXbin, iYbin, eff);
	ratio->SetBinError(iXbin, iYbin, error);
      }
    }
    return ratio;
  }

  if(dimension==1) {
    Int_t nBinsXNom = nominator->GetXaxis()->GetNbins();
    Int_t nBinsXDenom = denominator->GetXaxis()->GetNbins();
    if(nBinsXNom!=nBinsXDenom) {
      cout << "Trying to divide histograms with different number of bins" << endl;
      return 0x0;
    }
    ratio = (TH1D*)nominator->Clone("ratio");
    ratio->Reset();
    for(Int_t iXbin=1; iXbin<=nBinsXNom; ++iXbin) {
      Double_t countsN = nominator->GetBinContent(iXbin);
      Double_t countsD = denominator->GetBinContent(iXbin);
      if(countsN<1 || countsD<1) continue;    // zero entry bins
      Double_t eff = countsN/countsD;
      Double_t error = eff*TMath::Sqrt(TMath::Abs(countsD-countsN)/countsN/countsD);
      ratio->SetBinContent(iXbin, eff);
      ratio->SetBinError(iXbin, error);
    }
    return ratio;
  }
    
  return 0x0;
}
 ExtractEfficiencies.C:1
 ExtractEfficiencies.C:2
 ExtractEfficiencies.C:3
 ExtractEfficiencies.C:4
 ExtractEfficiencies.C:5
 ExtractEfficiencies.C:6
 ExtractEfficiencies.C:7
 ExtractEfficiencies.C:8
 ExtractEfficiencies.C:9
 ExtractEfficiencies.C:10
 ExtractEfficiencies.C:11
 ExtractEfficiencies.C:12
 ExtractEfficiencies.C:13
 ExtractEfficiencies.C:14
 ExtractEfficiencies.C:15
 ExtractEfficiencies.C:16
 ExtractEfficiencies.C:17
 ExtractEfficiencies.C:18
 ExtractEfficiencies.C:19
 ExtractEfficiencies.C:20
 ExtractEfficiencies.C:21
 ExtractEfficiencies.C:22
 ExtractEfficiencies.C:23
 ExtractEfficiencies.C:24
 ExtractEfficiencies.C:25
 ExtractEfficiencies.C:26
 ExtractEfficiencies.C:27
 ExtractEfficiencies.C:28
 ExtractEfficiencies.C:29
 ExtractEfficiencies.C:30
 ExtractEfficiencies.C:31
 ExtractEfficiencies.C:32
 ExtractEfficiencies.C:33
 ExtractEfficiencies.C:34
 ExtractEfficiencies.C:35
 ExtractEfficiencies.C:36
 ExtractEfficiencies.C:37
 ExtractEfficiencies.C:38
 ExtractEfficiencies.C:39
 ExtractEfficiencies.C:40
 ExtractEfficiencies.C:41
 ExtractEfficiencies.C:42
 ExtractEfficiencies.C:43
 ExtractEfficiencies.C:44
 ExtractEfficiencies.C:45
 ExtractEfficiencies.C:46
 ExtractEfficiencies.C:47
 ExtractEfficiencies.C:48
 ExtractEfficiencies.C:49
 ExtractEfficiencies.C:50
 ExtractEfficiencies.C:51
 ExtractEfficiencies.C:52
 ExtractEfficiencies.C:53
 ExtractEfficiencies.C:54
 ExtractEfficiencies.C:55
 ExtractEfficiencies.C:56
 ExtractEfficiencies.C:57
 ExtractEfficiencies.C:58
 ExtractEfficiencies.C:59
 ExtractEfficiencies.C:60
 ExtractEfficiencies.C:61
 ExtractEfficiencies.C:62
 ExtractEfficiencies.C:63
 ExtractEfficiencies.C:64
 ExtractEfficiencies.C:65
 ExtractEfficiencies.C:66
 ExtractEfficiencies.C:67
 ExtractEfficiencies.C:68
 ExtractEfficiencies.C:69
 ExtractEfficiencies.C:70
 ExtractEfficiencies.C:71
 ExtractEfficiencies.C:72
 ExtractEfficiencies.C:73
 ExtractEfficiencies.C:74
 ExtractEfficiencies.C:75
 ExtractEfficiencies.C:76
 ExtractEfficiencies.C:77
 ExtractEfficiencies.C:78
 ExtractEfficiencies.C:79
 ExtractEfficiencies.C:80
 ExtractEfficiencies.C:81
 ExtractEfficiencies.C:82
 ExtractEfficiencies.C:83
 ExtractEfficiencies.C:84
 ExtractEfficiencies.C:85
 ExtractEfficiencies.C:86
 ExtractEfficiencies.C:87
 ExtractEfficiencies.C:88
 ExtractEfficiencies.C:89
 ExtractEfficiencies.C:90
 ExtractEfficiencies.C:91
 ExtractEfficiencies.C:92
 ExtractEfficiencies.C:93
 ExtractEfficiencies.C:94
 ExtractEfficiencies.C:95
 ExtractEfficiencies.C:96
 ExtractEfficiencies.C:97
 ExtractEfficiencies.C:98
 ExtractEfficiencies.C:99
 ExtractEfficiencies.C:100
 ExtractEfficiencies.C:101
 ExtractEfficiencies.C:102
 ExtractEfficiencies.C:103
 ExtractEfficiencies.C:104
 ExtractEfficiencies.C:105
 ExtractEfficiencies.C:106
 ExtractEfficiencies.C:107
 ExtractEfficiencies.C:108
 ExtractEfficiencies.C:109
 ExtractEfficiencies.C:110
 ExtractEfficiencies.C:111
 ExtractEfficiencies.C:112
 ExtractEfficiencies.C:113
 ExtractEfficiencies.C:114
 ExtractEfficiencies.C:115
 ExtractEfficiencies.C:116
 ExtractEfficiencies.C:117
 ExtractEfficiencies.C:118
 ExtractEfficiencies.C:119
 ExtractEfficiencies.C:120
 ExtractEfficiencies.C:121
 ExtractEfficiencies.C:122
 ExtractEfficiencies.C:123
 ExtractEfficiencies.C:124
 ExtractEfficiencies.C:125
 ExtractEfficiencies.C:126
 ExtractEfficiencies.C:127
 ExtractEfficiencies.C:128
 ExtractEfficiencies.C:129
 ExtractEfficiencies.C:130
 ExtractEfficiencies.C:131
 ExtractEfficiencies.C:132
 ExtractEfficiencies.C:133
 ExtractEfficiencies.C:134
 ExtractEfficiencies.C:135
 ExtractEfficiencies.C:136
 ExtractEfficiencies.C:137
 ExtractEfficiencies.C:138
 ExtractEfficiencies.C:139
 ExtractEfficiencies.C:140
 ExtractEfficiencies.C:141
 ExtractEfficiencies.C:142
 ExtractEfficiencies.C:143
 ExtractEfficiencies.C:144
 ExtractEfficiencies.C:145
 ExtractEfficiencies.C:146
 ExtractEfficiencies.C:147
 ExtractEfficiencies.C:148
 ExtractEfficiencies.C:149
 ExtractEfficiencies.C:150
 ExtractEfficiencies.C:151
 ExtractEfficiencies.C:152
 ExtractEfficiencies.C:153
 ExtractEfficiencies.C:154
 ExtractEfficiencies.C:155
 ExtractEfficiencies.C:156
 ExtractEfficiencies.C:157
 ExtractEfficiencies.C:158
 ExtractEfficiencies.C:159
 ExtractEfficiencies.C:160
 ExtractEfficiencies.C:161
 ExtractEfficiencies.C:162
 ExtractEfficiencies.C:163
 ExtractEfficiencies.C:164
 ExtractEfficiencies.C:165
 ExtractEfficiencies.C:166
 ExtractEfficiencies.C:167
 ExtractEfficiencies.C:168
 ExtractEfficiencies.C:169
 ExtractEfficiencies.C:170
 ExtractEfficiencies.C:171
 ExtractEfficiencies.C:172
 ExtractEfficiencies.C:173
 ExtractEfficiencies.C:174
 ExtractEfficiencies.C:175
 ExtractEfficiencies.C:176
 ExtractEfficiencies.C:177
 ExtractEfficiencies.C:178
 ExtractEfficiencies.C:179
 ExtractEfficiencies.C:180
 ExtractEfficiencies.C:181
 ExtractEfficiencies.C:182
 ExtractEfficiencies.C:183
 ExtractEfficiencies.C:184
 ExtractEfficiencies.C:185
 ExtractEfficiencies.C:186
 ExtractEfficiencies.C:187
 ExtractEfficiencies.C:188
 ExtractEfficiencies.C:189
 ExtractEfficiencies.C:190
 ExtractEfficiencies.C:191
 ExtractEfficiencies.C:192
 ExtractEfficiencies.C:193
 ExtractEfficiencies.C:194
 ExtractEfficiencies.C:195
 ExtractEfficiencies.C:196
 ExtractEfficiencies.C:197
 ExtractEfficiencies.C:198
 ExtractEfficiencies.C:199
 ExtractEfficiencies.C:200
 ExtractEfficiencies.C:201
 ExtractEfficiencies.C:202
 ExtractEfficiencies.C:203
 ExtractEfficiencies.C:204
 ExtractEfficiencies.C:205
 ExtractEfficiencies.C:206
 ExtractEfficiencies.C:207
 ExtractEfficiencies.C:208
 ExtractEfficiencies.C:209
 ExtractEfficiencies.C:210
 ExtractEfficiencies.C:211
 ExtractEfficiencies.C:212
 ExtractEfficiencies.C:213
 ExtractEfficiencies.C:214
 ExtractEfficiencies.C:215
 ExtractEfficiencies.C:216
 ExtractEfficiencies.C:217
 ExtractEfficiencies.C:218
 ExtractEfficiencies.C:219
 ExtractEfficiencies.C:220
 ExtractEfficiencies.C:221
 ExtractEfficiencies.C:222
 ExtractEfficiencies.C:223
 ExtractEfficiencies.C:224
 ExtractEfficiencies.C:225
 ExtractEfficiencies.C:226
 ExtractEfficiencies.C:227
 ExtractEfficiencies.C:228
 ExtractEfficiencies.C:229
 ExtractEfficiencies.C:230
 ExtractEfficiencies.C:231
 ExtractEfficiencies.C:232
 ExtractEfficiencies.C:233
 ExtractEfficiencies.C:234
 ExtractEfficiencies.C:235
 ExtractEfficiencies.C:236
 ExtractEfficiencies.C:237
 ExtractEfficiencies.C:238
 ExtractEfficiencies.C:239
 ExtractEfficiencies.C:240
 ExtractEfficiencies.C:241
 ExtractEfficiencies.C:242
 ExtractEfficiencies.C:243
 ExtractEfficiencies.C:244
 ExtractEfficiencies.C:245
 ExtractEfficiencies.C:246
 ExtractEfficiencies.C:247
 ExtractEfficiencies.C:248
 ExtractEfficiencies.C:249
 ExtractEfficiencies.C:250
 ExtractEfficiencies.C:251
 ExtractEfficiencies.C:252
 ExtractEfficiencies.C:253
 ExtractEfficiencies.C:254
 ExtractEfficiencies.C:255
 ExtractEfficiencies.C:256
 ExtractEfficiencies.C:257
 ExtractEfficiencies.C:258
 ExtractEfficiencies.C:259
 ExtractEfficiencies.C:260
 ExtractEfficiencies.C:261
 ExtractEfficiencies.C:262
 ExtractEfficiencies.C:263
 ExtractEfficiencies.C:264
 ExtractEfficiencies.C:265
 ExtractEfficiencies.C:266
 ExtractEfficiencies.C:267
 ExtractEfficiencies.C:268
 ExtractEfficiencies.C:269
 ExtractEfficiencies.C:270
 ExtractEfficiencies.C:271
 ExtractEfficiencies.C:272
 ExtractEfficiencies.C:273
 ExtractEfficiencies.C:274
 ExtractEfficiencies.C:275
 ExtractEfficiencies.C:276
 ExtractEfficiencies.C:277
 ExtractEfficiencies.C:278
 ExtractEfficiencies.C:279
 ExtractEfficiencies.C:280
 ExtractEfficiencies.C:281
 ExtractEfficiencies.C:282
 ExtractEfficiencies.C:283
 ExtractEfficiencies.C:284
 ExtractEfficiencies.C:285
 ExtractEfficiencies.C:286
 ExtractEfficiencies.C:287
 ExtractEfficiencies.C:288
 ExtractEfficiencies.C:289
 ExtractEfficiencies.C:290
 ExtractEfficiencies.C:291
 ExtractEfficiencies.C:292
 ExtractEfficiencies.C:293
 ExtractEfficiencies.C:294
 ExtractEfficiencies.C:295
 ExtractEfficiencies.C:296
 ExtractEfficiencies.C:297
 ExtractEfficiencies.C:298
 ExtractEfficiencies.C:299
 ExtractEfficiencies.C:300
 ExtractEfficiencies.C:301
 ExtractEfficiencies.C:302
 ExtractEfficiencies.C:303
 ExtractEfficiencies.C:304
 ExtractEfficiencies.C:305
 ExtractEfficiencies.C:306
 ExtractEfficiencies.C:307
 ExtractEfficiencies.C:308
 ExtractEfficiencies.C:309
 ExtractEfficiencies.C:310
 ExtractEfficiencies.C:311
 ExtractEfficiencies.C:312
 ExtractEfficiencies.C:313
 ExtractEfficiencies.C:314
 ExtractEfficiencies.C:315
 ExtractEfficiencies.C:316
 ExtractEfficiencies.C:317
 ExtractEfficiencies.C:318
 ExtractEfficiencies.C:319
 ExtractEfficiencies.C:320
 ExtractEfficiencies.C:321
 ExtractEfficiencies.C:322
 ExtractEfficiencies.C:323
 ExtractEfficiencies.C:324
 ExtractEfficiencies.C:325
 ExtractEfficiencies.C:326
 ExtractEfficiencies.C:327
 ExtractEfficiencies.C:328
 ExtractEfficiencies.C:329
 ExtractEfficiencies.C:330
 ExtractEfficiencies.C:331
 ExtractEfficiencies.C:332
 ExtractEfficiencies.C:333
 ExtractEfficiencies.C:334
 ExtractEfficiencies.C:335
 ExtractEfficiencies.C:336
 ExtractEfficiencies.C:337
 ExtractEfficiencies.C:338
 ExtractEfficiencies.C:339
 ExtractEfficiencies.C:340
 ExtractEfficiencies.C:341
 ExtractEfficiencies.C:342
 ExtractEfficiencies.C:343
 ExtractEfficiencies.C:344
 ExtractEfficiencies.C:345
 ExtractEfficiencies.C:346
 ExtractEfficiencies.C:347
 ExtractEfficiencies.C:348
 ExtractEfficiencies.C:349
 ExtractEfficiencies.C:350
 ExtractEfficiencies.C:351
 ExtractEfficiencies.C:352
 ExtractEfficiencies.C:353
 ExtractEfficiencies.C:354
 ExtractEfficiencies.C:355
 ExtractEfficiencies.C:356
 ExtractEfficiencies.C:357
 ExtractEfficiencies.C:358
 ExtractEfficiencies.C:359
 ExtractEfficiencies.C:360
 ExtractEfficiencies.C:361
 ExtractEfficiencies.C:362
 ExtractEfficiencies.C:363
 ExtractEfficiencies.C:364
 ExtractEfficiencies.C:365
 ExtractEfficiencies.C:366
 ExtractEfficiencies.C:367
 ExtractEfficiencies.C:368
 ExtractEfficiencies.C:369
 ExtractEfficiencies.C:370
 ExtractEfficiencies.C:371
 ExtractEfficiencies.C:372
 ExtractEfficiencies.C:373
 ExtractEfficiencies.C:374
 ExtractEfficiencies.C:375
 ExtractEfficiencies.C:376
 ExtractEfficiencies.C:377
 ExtractEfficiencies.C:378
 ExtractEfficiencies.C:379
 ExtractEfficiencies.C:380
 ExtractEfficiencies.C:381
 ExtractEfficiencies.C:382
 ExtractEfficiencies.C:383
 ExtractEfficiencies.C:384
 ExtractEfficiencies.C:385
 ExtractEfficiencies.C:386
 ExtractEfficiencies.C:387
 ExtractEfficiencies.C:388
 ExtractEfficiencies.C:389
 ExtractEfficiencies.C:390
 ExtractEfficiencies.C:391
 ExtractEfficiencies.C:392
 ExtractEfficiencies.C:393
 ExtractEfficiencies.C:394
 ExtractEfficiencies.C:395
 ExtractEfficiencies.C:396
 ExtractEfficiencies.C:397
 ExtractEfficiencies.C:398
 ExtractEfficiencies.C:399
 ExtractEfficiencies.C:400
 ExtractEfficiencies.C:401
 ExtractEfficiencies.C:402
 ExtractEfficiencies.C:403
 ExtractEfficiencies.C:404
 ExtractEfficiencies.C:405
 ExtractEfficiencies.C:406
 ExtractEfficiencies.C:407
 ExtractEfficiencies.C:408
 ExtractEfficiencies.C:409
 ExtractEfficiencies.C:410
 ExtractEfficiencies.C:411
 ExtractEfficiencies.C:412
 ExtractEfficiencies.C:413
 ExtractEfficiencies.C:414
 ExtractEfficiencies.C:415
 ExtractEfficiencies.C:416
 ExtractEfficiencies.C:417
 ExtractEfficiencies.C:418
 ExtractEfficiencies.C:419
 ExtractEfficiencies.C:420
 ExtractEfficiencies.C:421
 ExtractEfficiencies.C:422
 ExtractEfficiencies.C:423
 ExtractEfficiencies.C:424
 ExtractEfficiencies.C:425
 ExtractEfficiencies.C:426
 ExtractEfficiencies.C:427
 ExtractEfficiencies.C:428
 ExtractEfficiencies.C:429
 ExtractEfficiencies.C:430
 ExtractEfficiencies.C:431
 ExtractEfficiencies.C:432
 ExtractEfficiencies.C:433
 ExtractEfficiencies.C:434
 ExtractEfficiencies.C:435
 ExtractEfficiencies.C:436
 ExtractEfficiencies.C:437
 ExtractEfficiencies.C:438
 ExtractEfficiencies.C:439
 ExtractEfficiencies.C:440
 ExtractEfficiencies.C:441
 ExtractEfficiencies.C:442
 ExtractEfficiencies.C:443
 ExtractEfficiencies.C:444
 ExtractEfficiencies.C:445
 ExtractEfficiencies.C:446
 ExtractEfficiencies.C:447
 ExtractEfficiencies.C:448
 ExtractEfficiencies.C:449
 ExtractEfficiencies.C:450
 ExtractEfficiencies.C:451
 ExtractEfficiencies.C:452
 ExtractEfficiencies.C:453
 ExtractEfficiencies.C:454
 ExtractEfficiencies.C:455
 ExtractEfficiencies.C:456
 ExtractEfficiencies.C:457
 ExtractEfficiencies.C:458
 ExtractEfficiencies.C:459
 ExtractEfficiencies.C:460
 ExtractEfficiencies.C:461
 ExtractEfficiencies.C:462
 ExtractEfficiencies.C:463
 ExtractEfficiencies.C:464
 ExtractEfficiencies.C:465
 ExtractEfficiencies.C:466
 ExtractEfficiencies.C:467
 ExtractEfficiencies.C:468
 ExtractEfficiencies.C:469
 ExtractEfficiencies.C:470
 ExtractEfficiencies.C:471
 ExtractEfficiencies.C:472
 ExtractEfficiencies.C:473
 ExtractEfficiencies.C:474
 ExtractEfficiencies.C:475
 ExtractEfficiencies.C:476
 ExtractEfficiencies.C:477
 ExtractEfficiencies.C:478
 ExtractEfficiencies.C:479
 ExtractEfficiencies.C:480
 ExtractEfficiencies.C:481
 ExtractEfficiencies.C:482
 ExtractEfficiencies.C:483
 ExtractEfficiencies.C:484
 ExtractEfficiencies.C:485
 ExtractEfficiencies.C:486
 ExtractEfficiencies.C:487
 ExtractEfficiencies.C:488
 ExtractEfficiencies.C:489
 ExtractEfficiencies.C:490
 ExtractEfficiencies.C:491
 ExtractEfficiencies.C:492
 ExtractEfficiencies.C:493
 ExtractEfficiencies.C:494
 ExtractEfficiencies.C:495
 ExtractEfficiencies.C:496
 ExtractEfficiencies.C:497
 ExtractEfficiencies.C:498
 ExtractEfficiencies.C:499
 ExtractEfficiencies.C:500
 ExtractEfficiencies.C:501
 ExtractEfficiencies.C:502
 ExtractEfficiencies.C:503
 ExtractEfficiencies.C:504
 ExtractEfficiencies.C:505
 ExtractEfficiencies.C:506
 ExtractEfficiencies.C:507
 ExtractEfficiencies.C:508
 ExtractEfficiencies.C:509
 ExtractEfficiencies.C:510
 ExtractEfficiencies.C:511
 ExtractEfficiencies.C:512
 ExtractEfficiencies.C:513
 ExtractEfficiencies.C:514
 ExtractEfficiencies.C:515
 ExtractEfficiencies.C:516
 ExtractEfficiencies.C:517
 ExtractEfficiencies.C:518
 ExtractEfficiencies.C:519
 ExtractEfficiencies.C:520
 ExtractEfficiencies.C:521
 ExtractEfficiencies.C:522
 ExtractEfficiencies.C:523
 ExtractEfficiencies.C:524
 ExtractEfficiencies.C:525
 ExtractEfficiencies.C:526
 ExtractEfficiencies.C:527
 ExtractEfficiencies.C:528
 ExtractEfficiencies.C:529
 ExtractEfficiencies.C:530
 ExtractEfficiencies.C:531
 ExtractEfficiencies.C:532
 ExtractEfficiencies.C:533
 ExtractEfficiencies.C:534
 ExtractEfficiencies.C:535
 ExtractEfficiencies.C:536
 ExtractEfficiencies.C:537
 ExtractEfficiencies.C:538
 ExtractEfficiencies.C:539
 ExtractEfficiencies.C:540
 ExtractEfficiencies.C:541
 ExtractEfficiencies.C:542
 ExtractEfficiencies.C:543
 ExtractEfficiencies.C:544
 ExtractEfficiencies.C:545
 ExtractEfficiencies.C:546
 ExtractEfficiencies.C:547
 ExtractEfficiencies.C:548
 ExtractEfficiencies.C:549
 ExtractEfficiencies.C:550
 ExtractEfficiencies.C:551
 ExtractEfficiencies.C:552
 ExtractEfficiencies.C:553
 ExtractEfficiencies.C:554
 ExtractEfficiencies.C:555
 ExtractEfficiencies.C:556
 ExtractEfficiencies.C:557
 ExtractEfficiencies.C:558
 ExtractEfficiencies.C:559
 ExtractEfficiencies.C:560
 ExtractEfficiencies.C:561
 ExtractEfficiencies.C:562
 ExtractEfficiencies.C:563
 ExtractEfficiencies.C:564
 ExtractEfficiencies.C:565
 ExtractEfficiencies.C:566
 ExtractEfficiencies.C:567
 ExtractEfficiencies.C:568
 ExtractEfficiencies.C:569
 ExtractEfficiencies.C:570
 ExtractEfficiencies.C:571
 ExtractEfficiencies.C:572
 ExtractEfficiencies.C:573
 ExtractEfficiencies.C:574
 ExtractEfficiencies.C:575
 ExtractEfficiencies.C:576
 ExtractEfficiencies.C:577
 ExtractEfficiencies.C:578
 ExtractEfficiencies.C:579
 ExtractEfficiencies.C:580
 ExtractEfficiencies.C:581
 ExtractEfficiencies.C:582
 ExtractEfficiencies.C:583
 ExtractEfficiencies.C:584
 ExtractEfficiencies.C:585
 ExtractEfficiencies.C:586
 ExtractEfficiencies.C:587
 ExtractEfficiencies.C:588
 ExtractEfficiencies.C:589
 ExtractEfficiencies.C:590
 ExtractEfficiencies.C:591
 ExtractEfficiencies.C:592
 ExtractEfficiencies.C:593
 ExtractEfficiencies.C:594
 ExtractEfficiencies.C:595
 ExtractEfficiencies.C:596
 ExtractEfficiencies.C:597
 ExtractEfficiencies.C:598
 ExtractEfficiencies.C:599
 ExtractEfficiencies.C:600
 ExtractEfficiencies.C:601
 ExtractEfficiencies.C:602
 ExtractEfficiencies.C:603
 ExtractEfficiencies.C:604
 ExtractEfficiencies.C:605
 ExtractEfficiencies.C:606
 ExtractEfficiencies.C:607
 ExtractEfficiencies.C:608
 ExtractEfficiencies.C:609
 ExtractEfficiencies.C:610
 ExtractEfficiencies.C:611
 ExtractEfficiencies.C:612
 ExtractEfficiencies.C:613
 ExtractEfficiencies.C:614
 ExtractEfficiencies.C:615
 ExtractEfficiencies.C:616
 ExtractEfficiencies.C:617
 ExtractEfficiencies.C:618
 ExtractEfficiencies.C:619
 ExtractEfficiencies.C:620
 ExtractEfficiencies.C:621
 ExtractEfficiencies.C:622
 ExtractEfficiencies.C:623
 ExtractEfficiencies.C:624
 ExtractEfficiencies.C:625
 ExtractEfficiencies.C:626
 ExtractEfficiencies.C:627
 ExtractEfficiencies.C:628
 ExtractEfficiencies.C:629
 ExtractEfficiencies.C:630
 ExtractEfficiencies.C:631
 ExtractEfficiencies.C:632
 ExtractEfficiencies.C:633
 ExtractEfficiencies.C:634
 ExtractEfficiencies.C:635
 ExtractEfficiencies.C:636
 ExtractEfficiencies.C:637
 ExtractEfficiencies.C:638
 ExtractEfficiencies.C:639
 ExtractEfficiencies.C:640
 ExtractEfficiencies.C:641
 ExtractEfficiencies.C:642
 ExtractEfficiencies.C:643
 ExtractEfficiencies.C:644
 ExtractEfficiencies.C:645
 ExtractEfficiencies.C:646
 ExtractEfficiencies.C:647
 ExtractEfficiencies.C:648
 ExtractEfficiencies.C:649
 ExtractEfficiencies.C:650
 ExtractEfficiencies.C:651
 ExtractEfficiencies.C:652
 ExtractEfficiencies.C:653
 ExtractEfficiencies.C:654
 ExtractEfficiencies.C:655
 ExtractEfficiencies.C:656
 ExtractEfficiencies.C:657
 ExtractEfficiencies.C:658
 ExtractEfficiencies.C:659
 ExtractEfficiencies.C:660
 ExtractEfficiencies.C:661
 ExtractEfficiencies.C:662
 ExtractEfficiencies.C:663
 ExtractEfficiencies.C:664
 ExtractEfficiencies.C:665
 ExtractEfficiencies.C:666
 ExtractEfficiencies.C:667
 ExtractEfficiencies.C:668
 ExtractEfficiencies.C:669
 ExtractEfficiencies.C:670
 ExtractEfficiencies.C:671
 ExtractEfficiencies.C:672
 ExtractEfficiencies.C:673
 ExtractEfficiencies.C:674
 ExtractEfficiencies.C:675
 ExtractEfficiencies.C:676
 ExtractEfficiencies.C:677
 ExtractEfficiencies.C:678
 ExtractEfficiencies.C:679
 ExtractEfficiencies.C:680
 ExtractEfficiencies.C:681
 ExtractEfficiencies.C:682
 ExtractEfficiencies.C:683
 ExtractEfficiencies.C:684
 ExtractEfficiencies.C:685
 ExtractEfficiencies.C:686
 ExtractEfficiencies.C:687
 ExtractEfficiencies.C:688
 ExtractEfficiencies.C:689
 ExtractEfficiencies.C:690
 ExtractEfficiencies.C:691
 ExtractEfficiencies.C:692
 ExtractEfficiencies.C:693
 ExtractEfficiencies.C:694
 ExtractEfficiencies.C:695
 ExtractEfficiencies.C:696
 ExtractEfficiencies.C:697
 ExtractEfficiencies.C:698
 ExtractEfficiencies.C:699
 ExtractEfficiencies.C:700
 ExtractEfficiencies.C:701
 ExtractEfficiencies.C:702
 ExtractEfficiencies.C:703
 ExtractEfficiencies.C:704
 ExtractEfficiencies.C:705
 ExtractEfficiencies.C:706
 ExtractEfficiencies.C:707
 ExtractEfficiencies.C:708
 ExtractEfficiencies.C:709
 ExtractEfficiencies.C:710
 ExtractEfficiencies.C:711
 ExtractEfficiencies.C:712
 ExtractEfficiencies.C:713
 ExtractEfficiencies.C:714
 ExtractEfficiencies.C:715
 ExtractEfficiencies.C:716
 ExtractEfficiencies.C:717
 ExtractEfficiencies.C:718
 ExtractEfficiencies.C:719
 ExtractEfficiencies.C:720
 ExtractEfficiencies.C:721
 ExtractEfficiencies.C:722
 ExtractEfficiencies.C:723
 ExtractEfficiencies.C:724
 ExtractEfficiencies.C:725
 ExtractEfficiencies.C:726
 ExtractEfficiencies.C:727
 ExtractEfficiencies.C:728
 ExtractEfficiencies.C:729
 ExtractEfficiencies.C:730
 ExtractEfficiencies.C:731
 ExtractEfficiencies.C:732
 ExtractEfficiencies.C:733
 ExtractEfficiencies.C:734
 ExtractEfficiencies.C:735
 ExtractEfficiencies.C:736
 ExtractEfficiencies.C:737
 ExtractEfficiencies.C:738
 ExtractEfficiencies.C:739
 ExtractEfficiencies.C:740
 ExtractEfficiencies.C:741
 ExtractEfficiencies.C:742
 ExtractEfficiencies.C:743
 ExtractEfficiencies.C:744
 ExtractEfficiencies.C:745
 ExtractEfficiencies.C:746
 ExtractEfficiencies.C:747
 ExtractEfficiencies.C:748
 ExtractEfficiencies.C:749
 ExtractEfficiencies.C:750
 ExtractEfficiencies.C:751
 ExtractEfficiencies.C:752
 ExtractEfficiencies.C:753
 ExtractEfficiencies.C:754
 ExtractEfficiencies.C:755
 ExtractEfficiencies.C:756
 ExtractEfficiencies.C:757
 ExtractEfficiencies.C:758
 ExtractEfficiencies.C:759
 ExtractEfficiencies.C:760
 ExtractEfficiencies.C:761
 ExtractEfficiencies.C:762
 ExtractEfficiencies.C:763
 ExtractEfficiencies.C:764
 ExtractEfficiencies.C:765
 ExtractEfficiencies.C:766
 ExtractEfficiencies.C:767
 ExtractEfficiencies.C:768
 ExtractEfficiencies.C:769
 ExtractEfficiencies.C:770
 ExtractEfficiencies.C:771
 ExtractEfficiencies.C:772
 ExtractEfficiencies.C:773
 ExtractEfficiencies.C:774
 ExtractEfficiencies.C:775
 ExtractEfficiencies.C:776
 ExtractEfficiencies.C:777
 ExtractEfficiencies.C:778
 ExtractEfficiencies.C:779
 ExtractEfficiencies.C:780
 ExtractEfficiencies.C:781
 ExtractEfficiencies.C:782
 ExtractEfficiencies.C:783
 ExtractEfficiencies.C:784
 ExtractEfficiencies.C:785
 ExtractEfficiencies.C:786
 ExtractEfficiencies.C:787
 ExtractEfficiencies.C:788
 ExtractEfficiencies.C:789
 ExtractEfficiencies.C:790
 ExtractEfficiencies.C:791
 ExtractEfficiencies.C:792
 ExtractEfficiencies.C:793
 ExtractEfficiencies.C:794
 ExtractEfficiencies.C:795
 ExtractEfficiencies.C:796
 ExtractEfficiencies.C:797
 ExtractEfficiencies.C:798
 ExtractEfficiencies.C:799
 ExtractEfficiencies.C:800
 ExtractEfficiencies.C:801
 ExtractEfficiencies.C:802
 ExtractEfficiencies.C:803
 ExtractEfficiencies.C:804
 ExtractEfficiencies.C:805
 ExtractEfficiencies.C:806
 ExtractEfficiencies.C:807
 ExtractEfficiencies.C:808
 ExtractEfficiencies.C:809
 ExtractEfficiencies.C:810
 ExtractEfficiencies.C:811
 ExtractEfficiencies.C:812
 ExtractEfficiencies.C:813
 ExtractEfficiencies.C:814
 ExtractEfficiencies.C:815
 ExtractEfficiencies.C:816
 ExtractEfficiencies.C:817
 ExtractEfficiencies.C:818
 ExtractEfficiencies.C:819
 ExtractEfficiencies.C:820
 ExtractEfficiencies.C:821
 ExtractEfficiencies.C:822
 ExtractEfficiencies.C:823
 ExtractEfficiencies.C:824
 ExtractEfficiencies.C:825
 ExtractEfficiencies.C:826
 ExtractEfficiencies.C:827
 ExtractEfficiencies.C:828
 ExtractEfficiencies.C:829
 ExtractEfficiencies.C:830
 ExtractEfficiencies.C:831
 ExtractEfficiencies.C:832
 ExtractEfficiencies.C:833
 ExtractEfficiencies.C:834
 ExtractEfficiencies.C:835
 ExtractEfficiencies.C:836
 ExtractEfficiencies.C:837
 ExtractEfficiencies.C:838
 ExtractEfficiencies.C:839
 ExtractEfficiencies.C:840
 ExtractEfficiencies.C:841
 ExtractEfficiencies.C:842
 ExtractEfficiencies.C:843
 ExtractEfficiencies.C:844
 ExtractEfficiencies.C:845
 ExtractEfficiencies.C:846
 ExtractEfficiencies.C:847
 ExtractEfficiencies.C:848
 ExtractEfficiencies.C:849
 ExtractEfficiencies.C:850
 ExtractEfficiencies.C:851
 ExtractEfficiencies.C:852
 ExtractEfficiencies.C:853
 ExtractEfficiencies.C:854
 ExtractEfficiencies.C:855
 ExtractEfficiencies.C:856
 ExtractEfficiencies.C:857
 ExtractEfficiencies.C:858
 ExtractEfficiencies.C:859
 ExtractEfficiencies.C:860
 ExtractEfficiencies.C:861
 ExtractEfficiencies.C:862
 ExtractEfficiencies.C:863
 ExtractEfficiencies.C:864
 ExtractEfficiencies.C:865
 ExtractEfficiencies.C:866
 ExtractEfficiencies.C:867
 ExtractEfficiencies.C:868
 ExtractEfficiencies.C:869
 ExtractEfficiencies.C:870
 ExtractEfficiencies.C:871
 ExtractEfficiencies.C:872
 ExtractEfficiencies.C:873
 ExtractEfficiencies.C:874
 ExtractEfficiencies.C:875
 ExtractEfficiencies.C:876
 ExtractEfficiencies.C:877
 ExtractEfficiencies.C:878
 ExtractEfficiencies.C:879
 ExtractEfficiencies.C:880
 ExtractEfficiencies.C:881
 ExtractEfficiencies.C:882
 ExtractEfficiencies.C:883
 ExtractEfficiencies.C:884
 ExtractEfficiencies.C:885
 ExtractEfficiencies.C:886
 ExtractEfficiencies.C:887
 ExtractEfficiencies.C:888
 ExtractEfficiencies.C:889
 ExtractEfficiencies.C:890
 ExtractEfficiencies.C:891
 ExtractEfficiencies.C:892
 ExtractEfficiencies.C:893
 ExtractEfficiencies.C:894
 ExtractEfficiencies.C:895
 ExtractEfficiencies.C:896
 ExtractEfficiencies.C:897
 ExtractEfficiencies.C:898
 ExtractEfficiencies.C:899
 ExtractEfficiencies.C:900
 ExtractEfficiencies.C:901
 ExtractEfficiencies.C:902
 ExtractEfficiencies.C:903
 ExtractEfficiencies.C:904
 ExtractEfficiencies.C:905
 ExtractEfficiencies.C:906
 ExtractEfficiencies.C:907
 ExtractEfficiencies.C:908
 ExtractEfficiencies.C:909
 ExtractEfficiencies.C:910
 ExtractEfficiencies.C:911
 ExtractEfficiencies.C:912
 ExtractEfficiencies.C:913
 ExtractEfficiencies.C:914
 ExtractEfficiencies.C:915
 ExtractEfficiencies.C:916
 ExtractEfficiencies.C:917
 ExtractEfficiencies.C:918
 ExtractEfficiencies.C:919
 ExtractEfficiencies.C:920
 ExtractEfficiencies.C:921
 ExtractEfficiencies.C:922
 ExtractEfficiencies.C:923
 ExtractEfficiencies.C:924
 ExtractEfficiencies.C:925
 ExtractEfficiencies.C:926
 ExtractEfficiencies.C:927
 ExtractEfficiencies.C:928
 ExtractEfficiencies.C:929
 ExtractEfficiencies.C:930
 ExtractEfficiencies.C:931
 ExtractEfficiencies.C:932
 ExtractEfficiencies.C:933
 ExtractEfficiencies.C:934
 ExtractEfficiencies.C:935
 ExtractEfficiencies.C:936
 ExtractEfficiencies.C:937
 ExtractEfficiencies.C:938
 ExtractEfficiencies.C:939
 ExtractEfficiencies.C:940
 ExtractEfficiencies.C:941
 ExtractEfficiencies.C:942
 ExtractEfficiencies.C:943
 ExtractEfficiencies.C:944
 ExtractEfficiencies.C:945
 ExtractEfficiencies.C:946
 ExtractEfficiencies.C:947
 ExtractEfficiencies.C:948
 ExtractEfficiencies.C:949
 ExtractEfficiencies.C:950
 ExtractEfficiencies.C:951
 ExtractEfficiencies.C:952
 ExtractEfficiencies.C:953
 ExtractEfficiencies.C:954
 ExtractEfficiencies.C:955
 ExtractEfficiencies.C:956
 ExtractEfficiencies.C:957
 ExtractEfficiencies.C:958
 ExtractEfficiencies.C:959
 ExtractEfficiencies.C:960
 ExtractEfficiencies.C:961
 ExtractEfficiencies.C:962
 ExtractEfficiencies.C:963
 ExtractEfficiencies.C:964
 ExtractEfficiencies.C:965
 ExtractEfficiencies.C:966
 ExtractEfficiencies.C:967
 ExtractEfficiencies.C:968
 ExtractEfficiencies.C:969
 ExtractEfficiencies.C:970
 ExtractEfficiencies.C:971
 ExtractEfficiencies.C:972
 ExtractEfficiencies.C:973
 ExtractEfficiencies.C:974
 ExtractEfficiencies.C:975
 ExtractEfficiencies.C:976
 ExtractEfficiencies.C:977
 ExtractEfficiencies.C:978
 ExtractEfficiencies.C:979
 ExtractEfficiencies.C:980
 ExtractEfficiencies.C:981
 ExtractEfficiencies.C:982
 ExtractEfficiencies.C:983
 ExtractEfficiencies.C:984
 ExtractEfficiencies.C:985
 ExtractEfficiencies.C:986
 ExtractEfficiencies.C:987
 ExtractEfficiencies.C:988
 ExtractEfficiencies.C:989
 ExtractEfficiencies.C:990
 ExtractEfficiencies.C:991
 ExtractEfficiencies.C:992
 ExtractEfficiencies.C:993
 ExtractEfficiencies.C:994
 ExtractEfficiencies.C:995
 ExtractEfficiencies.C:996
 ExtractEfficiencies.C:997
 ExtractEfficiencies.C:998
 ExtractEfficiencies.C:999
 ExtractEfficiencies.C:1000
 ExtractEfficiencies.C:1001
 ExtractEfficiencies.C:1002
 ExtractEfficiencies.C:1003
 ExtractEfficiencies.C:1004
 ExtractEfficiencies.C:1005
 ExtractEfficiencies.C:1006
 ExtractEfficiencies.C:1007
 ExtractEfficiencies.C:1008
 ExtractEfficiencies.C:1009
 ExtractEfficiencies.C:1010
 ExtractEfficiencies.C:1011
 ExtractEfficiencies.C:1012
 ExtractEfficiencies.C:1013
 ExtractEfficiencies.C:1014
 ExtractEfficiencies.C:1015
 ExtractEfficiencies.C:1016
 ExtractEfficiencies.C:1017
 ExtractEfficiencies.C:1018
 ExtractEfficiencies.C:1019
 ExtractEfficiencies.C:1020
 ExtractEfficiencies.C:1021
 ExtractEfficiencies.C:1022
 ExtractEfficiencies.C:1023
 ExtractEfficiencies.C:1024
 ExtractEfficiencies.C:1025
 ExtractEfficiencies.C:1026
 ExtractEfficiencies.C:1027
 ExtractEfficiencies.C:1028
 ExtractEfficiencies.C:1029
 ExtractEfficiencies.C:1030
 ExtractEfficiencies.C:1031
 ExtractEfficiencies.C:1032
 ExtractEfficiencies.C:1033
 ExtractEfficiencies.C:1034
 ExtractEfficiencies.C:1035
 ExtractEfficiencies.C:1036
 ExtractEfficiencies.C:1037
 ExtractEfficiencies.C:1038
 ExtractEfficiencies.C:1039
 ExtractEfficiencies.C:1040
 ExtractEfficiencies.C:1041
 ExtractEfficiencies.C:1042
 ExtractEfficiencies.C:1043
 ExtractEfficiencies.C:1044
 ExtractEfficiencies.C:1045
 ExtractEfficiencies.C:1046
 ExtractEfficiencies.C:1047
 ExtractEfficiencies.C:1048
 ExtractEfficiencies.C:1049
 ExtractEfficiencies.C:1050
 ExtractEfficiencies.C:1051
 ExtractEfficiencies.C:1052
 ExtractEfficiencies.C:1053
 ExtractEfficiencies.C:1054
 ExtractEfficiencies.C:1055
 ExtractEfficiencies.C:1056
 ExtractEfficiencies.C:1057
 ExtractEfficiencies.C:1058
 ExtractEfficiencies.C:1059
 ExtractEfficiencies.C:1060
 ExtractEfficiencies.C:1061
 ExtractEfficiencies.C:1062
 ExtractEfficiencies.C:1063
 ExtractEfficiencies.C:1064
 ExtractEfficiencies.C:1065
 ExtractEfficiencies.C:1066
 ExtractEfficiencies.C:1067
 ExtractEfficiencies.C:1068
 ExtractEfficiencies.C:1069
 ExtractEfficiencies.C:1070
 ExtractEfficiencies.C:1071
 ExtractEfficiencies.C:1072
 ExtractEfficiencies.C:1073
 ExtractEfficiencies.C:1074
 ExtractEfficiencies.C:1075
 ExtractEfficiencies.C:1076
 ExtractEfficiencies.C:1077
 ExtractEfficiencies.C:1078
 ExtractEfficiencies.C:1079
 ExtractEfficiencies.C:1080
 ExtractEfficiencies.C:1081
 ExtractEfficiencies.C:1082
 ExtractEfficiencies.C:1083
 ExtractEfficiencies.C:1084
 ExtractEfficiencies.C:1085
 ExtractEfficiencies.C:1086
 ExtractEfficiencies.C:1087
 ExtractEfficiencies.C:1088
 ExtractEfficiencies.C:1089
 ExtractEfficiencies.C:1090
 ExtractEfficiencies.C:1091
 ExtractEfficiencies.C:1092
 ExtractEfficiencies.C:1093
 ExtractEfficiencies.C:1094
 ExtractEfficiencies.C:1095
 ExtractEfficiencies.C:1096
 ExtractEfficiencies.C:1097
 ExtractEfficiencies.C:1098
 ExtractEfficiencies.C:1099
 ExtractEfficiencies.C:1100
 ExtractEfficiencies.C:1101
 ExtractEfficiencies.C:1102
 ExtractEfficiencies.C:1103
 ExtractEfficiencies.C:1104
 ExtractEfficiencies.C:1105
 ExtractEfficiencies.C:1106
 ExtractEfficiencies.C:1107
 ExtractEfficiencies.C:1108
 ExtractEfficiencies.C:1109
 ExtractEfficiencies.C:1110
 ExtractEfficiencies.C:1111
 ExtractEfficiencies.C:1112
 ExtractEfficiencies.C:1113
 ExtractEfficiencies.C:1114
 ExtractEfficiencies.C:1115
 ExtractEfficiencies.C:1116
 ExtractEfficiencies.C:1117
 ExtractEfficiencies.C:1118
 ExtractEfficiencies.C:1119
 ExtractEfficiencies.C:1120
 ExtractEfficiencies.C:1121
 ExtractEfficiencies.C:1122
 ExtractEfficiencies.C:1123
 ExtractEfficiencies.C:1124
 ExtractEfficiencies.C:1125
 ExtractEfficiencies.C:1126
 ExtractEfficiencies.C:1127
 ExtractEfficiencies.C:1128
 ExtractEfficiencies.C:1129
 ExtractEfficiencies.C:1130
 ExtractEfficiencies.C:1131
 ExtractEfficiencies.C:1132
 ExtractEfficiencies.C:1133
 ExtractEfficiencies.C:1134
 ExtractEfficiencies.C:1135
 ExtractEfficiencies.C:1136
 ExtractEfficiencies.C:1137
 ExtractEfficiencies.C:1138
 ExtractEfficiencies.C:1139
 ExtractEfficiencies.C:1140
 ExtractEfficiencies.C:1141
 ExtractEfficiencies.C:1142
 ExtractEfficiencies.C:1143
 ExtractEfficiencies.C:1144
 ExtractEfficiencies.C:1145
 ExtractEfficiencies.C:1146
 ExtractEfficiencies.C:1147
 ExtractEfficiencies.C:1148
 ExtractEfficiencies.C:1149
 ExtractEfficiencies.C:1150
 ExtractEfficiencies.C:1151
 ExtractEfficiencies.C:1152
 ExtractEfficiencies.C:1153
 ExtractEfficiencies.C:1154
 ExtractEfficiencies.C:1155
 ExtractEfficiencies.C:1156
 ExtractEfficiencies.C:1157
 ExtractEfficiencies.C:1158
 ExtractEfficiencies.C:1159
 ExtractEfficiencies.C:1160
 ExtractEfficiencies.C:1161
 ExtractEfficiencies.C:1162
 ExtractEfficiencies.C:1163
 ExtractEfficiencies.C:1164
 ExtractEfficiencies.C:1165
 ExtractEfficiencies.C:1166
 ExtractEfficiencies.C:1167
 ExtractEfficiencies.C:1168
 ExtractEfficiencies.C:1169
 ExtractEfficiencies.C:1170
 ExtractEfficiencies.C:1171
 ExtractEfficiencies.C:1172
 ExtractEfficiencies.C:1173
 ExtractEfficiencies.C:1174
 ExtractEfficiencies.C:1175
 ExtractEfficiencies.C:1176
 ExtractEfficiencies.C:1177
 ExtractEfficiencies.C:1178
 ExtractEfficiencies.C:1179
 ExtractEfficiencies.C:1180
 ExtractEfficiencies.C:1181
 ExtractEfficiencies.C:1182
 ExtractEfficiencies.C:1183
 ExtractEfficiencies.C:1184
 ExtractEfficiencies.C:1185
 ExtractEfficiencies.C:1186
 ExtractEfficiencies.C:1187
 ExtractEfficiencies.C:1188
 ExtractEfficiencies.C:1189
 ExtractEfficiencies.C:1190
 ExtractEfficiencies.C:1191
 ExtractEfficiencies.C:1192
 ExtractEfficiencies.C:1193
 ExtractEfficiencies.C:1194
 ExtractEfficiencies.C:1195
 ExtractEfficiencies.C:1196
 ExtractEfficiencies.C:1197
 ExtractEfficiencies.C:1198
 ExtractEfficiencies.C:1199
 ExtractEfficiencies.C:1200
 ExtractEfficiencies.C:1201
 ExtractEfficiencies.C:1202
 ExtractEfficiencies.C:1203
 ExtractEfficiencies.C:1204
 ExtractEfficiencies.C:1205
 ExtractEfficiencies.C:1206
 ExtractEfficiencies.C:1207
 ExtractEfficiencies.C:1208
 ExtractEfficiencies.C:1209
 ExtractEfficiencies.C:1210
 ExtractEfficiencies.C:1211
 ExtractEfficiencies.C:1212
 ExtractEfficiencies.C:1213
 ExtractEfficiencies.C:1214
 ExtractEfficiencies.C:1215
 ExtractEfficiencies.C:1216
 ExtractEfficiencies.C:1217
 ExtractEfficiencies.C:1218
 ExtractEfficiencies.C:1219
 ExtractEfficiencies.C:1220
 ExtractEfficiencies.C:1221
 ExtractEfficiencies.C:1222
 ExtractEfficiencies.C:1223
 ExtractEfficiencies.C:1224
 ExtractEfficiencies.C:1225
 ExtractEfficiencies.C:1226
 ExtractEfficiencies.C:1227
 ExtractEfficiencies.C:1228
 ExtractEfficiencies.C:1229
 ExtractEfficiencies.C:1230
 ExtractEfficiencies.C:1231
 ExtractEfficiencies.C:1232
 ExtractEfficiencies.C:1233
 ExtractEfficiencies.C:1234
 ExtractEfficiencies.C:1235
 ExtractEfficiencies.C:1236
 ExtractEfficiencies.C:1237
 ExtractEfficiencies.C:1238
 ExtractEfficiencies.C:1239
 ExtractEfficiencies.C:1240
 ExtractEfficiencies.C:1241
 ExtractEfficiencies.C:1242
 ExtractEfficiencies.C:1243
 ExtractEfficiencies.C:1244
 ExtractEfficiencies.C:1245
 ExtractEfficiencies.C:1246
 ExtractEfficiencies.C:1247
 ExtractEfficiencies.C:1248
 ExtractEfficiencies.C:1249
 ExtractEfficiencies.C:1250
 ExtractEfficiencies.C:1251
 ExtractEfficiencies.C:1252
 ExtractEfficiencies.C:1253
 ExtractEfficiencies.C:1254
 ExtractEfficiencies.C:1255
 ExtractEfficiencies.C:1256
 ExtractEfficiencies.C:1257
 ExtractEfficiencies.C:1258
 ExtractEfficiencies.C:1259
 ExtractEfficiencies.C:1260
 ExtractEfficiencies.C:1261
 ExtractEfficiencies.C:1262
 ExtractEfficiencies.C:1263
 ExtractEfficiencies.C:1264
 ExtractEfficiencies.C:1265
 ExtractEfficiencies.C:1266
 ExtractEfficiencies.C:1267
 ExtractEfficiencies.C:1268
 ExtractEfficiencies.C:1269
 ExtractEfficiencies.C:1270
 ExtractEfficiencies.C:1271
 ExtractEfficiencies.C:1272
 ExtractEfficiencies.C:1273
 ExtractEfficiencies.C:1274
 ExtractEfficiencies.C:1275
 ExtractEfficiencies.C:1276
 ExtractEfficiencies.C:1277
 ExtractEfficiencies.C:1278
 ExtractEfficiencies.C:1279
 ExtractEfficiencies.C:1280
 ExtractEfficiencies.C:1281
 ExtractEfficiencies.C:1282
 ExtractEfficiencies.C:1283
 ExtractEfficiencies.C:1284
 ExtractEfficiencies.C:1285
 ExtractEfficiencies.C:1286
 ExtractEfficiencies.C:1287
 ExtractEfficiencies.C:1288
 ExtractEfficiencies.C:1289
 ExtractEfficiencies.C:1290
 ExtractEfficiencies.C:1291
 ExtractEfficiencies.C:1292
 ExtractEfficiencies.C:1293
 ExtractEfficiencies.C:1294
 ExtractEfficiencies.C:1295
 ExtractEfficiencies.C:1296
 ExtractEfficiencies.C:1297
 ExtractEfficiencies.C:1298
 ExtractEfficiencies.C:1299
 ExtractEfficiencies.C:1300
 ExtractEfficiencies.C:1301
 ExtractEfficiencies.C:1302
 ExtractEfficiencies.C:1303
 ExtractEfficiencies.C:1304
 ExtractEfficiencies.C:1305
 ExtractEfficiencies.C:1306
 ExtractEfficiencies.C:1307
 ExtractEfficiencies.C:1308
 ExtractEfficiencies.C:1309
 ExtractEfficiencies.C:1310
 ExtractEfficiencies.C:1311
 ExtractEfficiencies.C:1312
 ExtractEfficiencies.C:1313
 ExtractEfficiencies.C:1314
 ExtractEfficiencies.C:1315
 ExtractEfficiencies.C:1316
 ExtractEfficiencies.C:1317
 ExtractEfficiencies.C:1318
 ExtractEfficiencies.C:1319
 ExtractEfficiencies.C:1320
 ExtractEfficiencies.C:1321
 ExtractEfficiencies.C:1322
 ExtractEfficiencies.C:1323
 ExtractEfficiencies.C:1324
 ExtractEfficiencies.C:1325
 ExtractEfficiencies.C:1326
 ExtractEfficiencies.C:1327
 ExtractEfficiencies.C:1328
 ExtractEfficiencies.C:1329
 ExtractEfficiencies.C:1330
 ExtractEfficiencies.C:1331
 ExtractEfficiencies.C:1332
 ExtractEfficiencies.C:1333
 ExtractEfficiencies.C:1334
 ExtractEfficiencies.C:1335
 ExtractEfficiencies.C:1336
 ExtractEfficiencies.C:1337
 ExtractEfficiencies.C:1338
 ExtractEfficiencies.C:1339
 ExtractEfficiencies.C:1340
 ExtractEfficiencies.C:1341
 ExtractEfficiencies.C:1342
 ExtractEfficiencies.C:1343
 ExtractEfficiencies.C:1344
 ExtractEfficiencies.C:1345
 ExtractEfficiencies.C:1346
 ExtractEfficiencies.C:1347
 ExtractEfficiencies.C:1348
 ExtractEfficiencies.C:1349
 ExtractEfficiencies.C:1350
 ExtractEfficiencies.C:1351
 ExtractEfficiencies.C:1352
 ExtractEfficiencies.C:1353
 ExtractEfficiencies.C:1354
 ExtractEfficiencies.C:1355
 ExtractEfficiencies.C:1356
 ExtractEfficiencies.C:1357
 ExtractEfficiencies.C:1358
 ExtractEfficiencies.C:1359
 ExtractEfficiencies.C:1360
 ExtractEfficiencies.C:1361
 ExtractEfficiencies.C:1362
 ExtractEfficiencies.C:1363
 ExtractEfficiencies.C:1364
 ExtractEfficiencies.C:1365
 ExtractEfficiencies.C:1366
 ExtractEfficiencies.C:1367
 ExtractEfficiencies.C:1368
 ExtractEfficiencies.C:1369
 ExtractEfficiencies.C:1370
 ExtractEfficiencies.C:1371
 ExtractEfficiencies.C:1372
 ExtractEfficiencies.C:1373
 ExtractEfficiencies.C:1374
 ExtractEfficiencies.C:1375
 ExtractEfficiencies.C:1376
 ExtractEfficiencies.C:1377
 ExtractEfficiencies.C:1378
 ExtractEfficiencies.C:1379
 ExtractEfficiencies.C:1380
 ExtractEfficiencies.C:1381
 ExtractEfficiencies.C:1382
 ExtractEfficiencies.C:1383
 ExtractEfficiencies.C:1384
 ExtractEfficiencies.C:1385
 ExtractEfficiencies.C:1386
 ExtractEfficiencies.C:1387
 ExtractEfficiencies.C:1388
 ExtractEfficiencies.C:1389
 ExtractEfficiencies.C:1390
 ExtractEfficiencies.C:1391
 ExtractEfficiencies.C:1392
 ExtractEfficiencies.C:1393
 ExtractEfficiencies.C:1394
 ExtractEfficiencies.C:1395
 ExtractEfficiencies.C:1396
 ExtractEfficiencies.C:1397
 ExtractEfficiencies.C:1398
 ExtractEfficiencies.C:1399
 ExtractEfficiencies.C:1400
 ExtractEfficiencies.C:1401
 ExtractEfficiencies.C:1402
 ExtractEfficiencies.C:1403
 ExtractEfficiencies.C:1404
 ExtractEfficiencies.C:1405
 ExtractEfficiencies.C:1406
 ExtractEfficiencies.C:1407
 ExtractEfficiencies.C:1408
 ExtractEfficiencies.C:1409
 ExtractEfficiencies.C:1410
 ExtractEfficiencies.C:1411
 ExtractEfficiencies.C:1412
 ExtractEfficiencies.C:1413
 ExtractEfficiencies.C:1414
 ExtractEfficiencies.C:1415
 ExtractEfficiencies.C:1416
 ExtractEfficiencies.C:1417
 ExtractEfficiencies.C:1418
 ExtractEfficiencies.C:1419
 ExtractEfficiencies.C:1420
 ExtractEfficiencies.C:1421
 ExtractEfficiencies.C:1422
 ExtractEfficiencies.C:1423
 ExtractEfficiencies.C:1424
 ExtractEfficiencies.C:1425
 ExtractEfficiencies.C:1426
 ExtractEfficiencies.C:1427
 ExtractEfficiencies.C:1428
 ExtractEfficiencies.C:1429
 ExtractEfficiencies.C:1430
 ExtractEfficiencies.C:1431
 ExtractEfficiencies.C:1432
 ExtractEfficiencies.C:1433
 ExtractEfficiencies.C:1434
 ExtractEfficiencies.C:1435
 ExtractEfficiencies.C:1436
 ExtractEfficiencies.C:1437
 ExtractEfficiencies.C:1438
 ExtractEfficiencies.C:1439
 ExtractEfficiencies.C:1440
 ExtractEfficiencies.C:1441
 ExtractEfficiencies.C:1442
 ExtractEfficiencies.C:1443
 ExtractEfficiencies.C:1444
 ExtractEfficiencies.C:1445
 ExtractEfficiencies.C:1446
 ExtractEfficiencies.C:1447
 ExtractEfficiencies.C:1448
 ExtractEfficiencies.C:1449
 ExtractEfficiencies.C:1450
 ExtractEfficiencies.C:1451
 ExtractEfficiencies.C:1452
 ExtractEfficiencies.C:1453
 ExtractEfficiencies.C:1454
 ExtractEfficiencies.C:1455
 ExtractEfficiencies.C:1456
 ExtractEfficiencies.C:1457
 ExtractEfficiencies.C:1458
 ExtractEfficiencies.C:1459
 ExtractEfficiencies.C:1460
 ExtractEfficiencies.C:1461
 ExtractEfficiencies.C:1462
 ExtractEfficiencies.C:1463
 ExtractEfficiencies.C:1464
 ExtractEfficiencies.C:1465
 ExtractEfficiencies.C:1466
 ExtractEfficiencies.C:1467
 ExtractEfficiencies.C:1468
 ExtractEfficiencies.C:1469
 ExtractEfficiencies.C:1470
 ExtractEfficiencies.C:1471
 ExtractEfficiencies.C:1472
 ExtractEfficiencies.C:1473
 ExtractEfficiencies.C:1474
 ExtractEfficiencies.C:1475
 ExtractEfficiencies.C:1476
 ExtractEfficiencies.C:1477
 ExtractEfficiencies.C:1478
 ExtractEfficiencies.C:1479
 ExtractEfficiencies.C:1480
 ExtractEfficiencies.C:1481
 ExtractEfficiencies.C:1482
 ExtractEfficiencies.C:1483
 ExtractEfficiencies.C:1484
 ExtractEfficiencies.C:1485
 ExtractEfficiencies.C:1486
 ExtractEfficiencies.C:1487
 ExtractEfficiencies.C:1488
 ExtractEfficiencies.C:1489
 ExtractEfficiencies.C:1490
 ExtractEfficiencies.C:1491
 ExtractEfficiencies.C:1492
 ExtractEfficiencies.C:1493
 ExtractEfficiencies.C:1494
 ExtractEfficiencies.C:1495
 ExtractEfficiencies.C:1496
 ExtractEfficiencies.C:1497
 ExtractEfficiencies.C:1498
 ExtractEfficiencies.C:1499
 ExtractEfficiencies.C:1500
 ExtractEfficiencies.C:1501
 ExtractEfficiencies.C:1502
 ExtractEfficiencies.C:1503
 ExtractEfficiencies.C:1504
 ExtractEfficiencies.C:1505
 ExtractEfficiencies.C:1506
 ExtractEfficiencies.C:1507
 ExtractEfficiencies.C:1508
 ExtractEfficiencies.C:1509
 ExtractEfficiencies.C:1510
 ExtractEfficiencies.C:1511
 ExtractEfficiencies.C:1512
 ExtractEfficiencies.C:1513
 ExtractEfficiencies.C:1514
 ExtractEfficiencies.C:1515
 ExtractEfficiencies.C:1516
 ExtractEfficiencies.C:1517
 ExtractEfficiencies.C:1518
 ExtractEfficiencies.C:1519
 ExtractEfficiencies.C:1520
 ExtractEfficiencies.C:1521
 ExtractEfficiencies.C:1522
 ExtractEfficiencies.C:1523
 ExtractEfficiencies.C:1524
 ExtractEfficiencies.C:1525
 ExtractEfficiencies.C:1526
 ExtractEfficiencies.C:1527
 ExtractEfficiencies.C:1528
 ExtractEfficiencies.C:1529
 ExtractEfficiencies.C:1530
 ExtractEfficiencies.C:1531
 ExtractEfficiencies.C:1532
 ExtractEfficiencies.C:1533
 ExtractEfficiencies.C:1534
 ExtractEfficiencies.C:1535
 ExtractEfficiencies.C:1536
 ExtractEfficiencies.C:1537
 ExtractEfficiencies.C:1538
 ExtractEfficiencies.C:1539
 ExtractEfficiencies.C:1540
 ExtractEfficiencies.C:1541
 ExtractEfficiencies.C:1542
 ExtractEfficiencies.C:1543
 ExtractEfficiencies.C:1544
 ExtractEfficiencies.C:1545
 ExtractEfficiencies.C:1546
 ExtractEfficiencies.C:1547
 ExtractEfficiencies.C:1548
 ExtractEfficiencies.C:1549
 ExtractEfficiencies.C:1550
 ExtractEfficiencies.C:1551
 ExtractEfficiencies.C:1552
 ExtractEfficiencies.C:1553
 ExtractEfficiencies.C:1554
 ExtractEfficiencies.C:1555
 ExtractEfficiencies.C:1556
 ExtractEfficiencies.C:1557
 ExtractEfficiencies.C:1558
 ExtractEfficiencies.C:1559
 ExtractEfficiencies.C:1560
 ExtractEfficiencies.C:1561
 ExtractEfficiencies.C:1562
 ExtractEfficiencies.C:1563
 ExtractEfficiencies.C:1564
 ExtractEfficiencies.C:1565
 ExtractEfficiencies.C:1566
 ExtractEfficiencies.C:1567
 ExtractEfficiencies.C:1568
 ExtractEfficiencies.C:1569
 ExtractEfficiencies.C:1570
 ExtractEfficiencies.C:1571
 ExtractEfficiencies.C:1572
 ExtractEfficiencies.C:1573
 ExtractEfficiencies.C:1574
 ExtractEfficiencies.C:1575
 ExtractEfficiencies.C:1576
 ExtractEfficiencies.C:1577
 ExtractEfficiencies.C:1578
 ExtractEfficiencies.C:1579
 ExtractEfficiencies.C:1580
 ExtractEfficiencies.C:1581
 ExtractEfficiencies.C:1582
 ExtractEfficiencies.C:1583
 ExtractEfficiencies.C:1584
 ExtractEfficiencies.C:1585
 ExtractEfficiencies.C:1586
 ExtractEfficiencies.C:1587
 ExtractEfficiencies.C:1588
 ExtractEfficiencies.C:1589
 ExtractEfficiencies.C:1590
 ExtractEfficiencies.C:1591
 ExtractEfficiencies.C:1592
 ExtractEfficiencies.C:1593
 ExtractEfficiencies.C:1594
 ExtractEfficiencies.C:1595
 ExtractEfficiencies.C:1596
 ExtractEfficiencies.C:1597
 ExtractEfficiencies.C:1598
 ExtractEfficiencies.C:1599
 ExtractEfficiencies.C:1600
 ExtractEfficiencies.C:1601
 ExtractEfficiencies.C:1602
 ExtractEfficiencies.C:1603
 ExtractEfficiencies.C:1604
 ExtractEfficiencies.C:1605
 ExtractEfficiencies.C:1606
 ExtractEfficiencies.C:1607
 ExtractEfficiencies.C:1608
 ExtractEfficiencies.C:1609
 ExtractEfficiencies.C:1610
 ExtractEfficiencies.C:1611
 ExtractEfficiencies.C:1612
 ExtractEfficiencies.C:1613
 ExtractEfficiencies.C:1614
 ExtractEfficiencies.C:1615