Skip to content

Latest commit

 

History

History
 
 

configs

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Configuration

Common configuration files, and examples, are stored here. Configuration files have the structure (note: comments are not valid JSON):

{
    // The efficiencies to be measured
    // represented as [numerator, denominator] pairs.
    // Each name must have a corresponding entry in the "definitions" object
    "efficiencies": [
        ["MyNum", "MyDen"]
    ],
    // Selection to apply on the input dataset.
    // For example, in a cut-and-count, you may want a narrow mass range
    // whereas for a fit, no cut on mass is necessary (it will be binned)
    "selection": "tag_pt>26 and tag_abseta<2.4",
    // Definitions of selections used.
    // They will produce a new column with the given name with value
    // given by the expression.
    // These will be loaded first (and in order), so they can be used in other
    // parts of the definitions or selection.
    // NOTE: numerator/denominator keys must evaluate to bools.
    "definitions": {
        "qOverP": "charge/p",
        "MyNum": "CutBasedIdTight == 1",
        "MyDen": "TM == 1"
    },
    // Binning of the efficiencies and fit variables.
    // Every variable used must be defined.
    // Strings will be evaluated using python's "eval()" method.
    // Numpy is loaded.
    "binning": {
        "pt": [15, 20, 25, 30, 40, 50, 60, 120],
        "abseta": [0, 0.9, 1.2, 2.1, 2.4],
        "eta": [-2.4, -2.1, -1.6, -1.2, -0.9, -0.3, -0.2, 0.2, 0.3, 0.9, 1.2, 1.6, 2.1, 2.4],
        "mass": "np.array(range(60*4, 140*4+1)) * 0.25",
        "mcMass": "np.array(range(60*4, 140*4+1)) * 0.25"
    },
    // The variableName-column map, with optional "pretty" representation
    // in the form of ROOT TText syntax
    "variables": {
        "pt": {"variable": "pt", "pretty": "p_{T} (GeV)"},
        "abseta": {"variable": "abseta", "pretty": "|#eta|"},
        "eta": {"variable": "eta", "pretty": "#eta"},
        "mass": {"variable": "mass", "pretty": "m(#mu#mu) (GeV)"},
        "mcMass": {"variable": "mcMass", "pretty": "m(#mu#mu) (GeV)"}
    },
    // the variable to fit, used when fitting, not necessary when
    // performing a cut-and-count efficiency
    "fitVariable": "mass",
    // similarly, the generator-level variable used in alternative background
    // model fits
    "fitVariableGen": "mcMass",
    // The bins to calculate efficiency in.
    // One set of efficiencies will be produced for each entry.
    // Up to 3 dimensions supported.
    // The N+1 dimension of the binning will be the fitVariable
    // (and should not be included)
    "binVariables": [
        ["abseta", "pt"],
        ["eta"]
    ],
    // an optional set of shifts
    // The above arguments refer to the "Nominal" shift
    // From the Nominal arguments above, each shift
    // will update the configuration with the given parameters
    "shifts": {
        // e.g. changing the tag definition
        "TagPtUp": {
            "selection": "tag_pt>30 and tag_abseta<2.4"
        }
    },
    // An optional set of alternative fits to perform
    // The nominal fit function is a template fit using the Nominal configuration
    // This can be overridden by redefining "Nominal"
    // Alternatively, new fits are implemented as:
    "fitShifts": {
        // Changing the fit type (PDF used)
        "AltSig": {"fitType": "AltSig"},
        // Changing the template fit procedure by analytical functions
        // Example: NominalOld, where signal is fitted by the sum of two-voigtians, and background by CMSShape
        // Different definitions can be implemented in run_single_fit.py with RooFit
        "NominalOld": {"fitType": "NominalOld"},
        // Changing the shift type (alternative fit inputs/configurations)
        "massBinUp": {"shiftType": "massBinUp"},
        "massBinDown": {"shiftType": "massBinDown"},
        // Changing the input flat histograms
        "tagIsoUp": {"inType": "TagIsoUp"}
        "tagIsoDown": {"inType": "TagIsoDown"}
        // or combinations of the above
    },
    // An optional set of systematics to include in the uncertainies
    // "Up" and "Down" (from above) should not be included
    "systematics" : {
        "SF": {
            "fitTypes": ["AltSig"],
            "shiftTypes": ["tagIso", "massBin"]
        },
        "dataEff": {
            "fitTypes": ["AltSig"],
            "shiftTypes": ["tagIso", "massBin"]
        },
        "mcEff": {
            "fitTypes": [],
            "shiftTypes": ["tagIso"]
        }
    }
}

Some examples can be found in: