Skip to content

Step 6: computeEffeciencies

pequegnot edited this page Feb 18, 2014 · 3 revisions

Presentation

The aim of this step is to compute the selection efficiency on your signal.

The script that fills this role is computeEfficiencies.cc. To put it in a nutshell, the selection efficiency is equal to n_sel / n_gen where:

  • n_sel is the number of selected events retrieved from the JSON file generating in the previous step (it contains the number of signal events and its error resulting from the signal fit) ;
  • n_gen is the number of generated events retrieved from the data/<analysisType>_gen.json file ( stands for zprime or higgs).

How to use it

The usage of the computeEfficiencies executable is:

./computeEfficiencies  [--pdf <nominal/JECup/JECdown>] [--pu
                          <nominal/JECup/JECdown>] [--jer
                          <nominal/JECup/JECdown>] [--jec
                          <nominal/JECup/JECdown>] --gen-file <filename>
                          [--trigger-eff <filename>] [--b-tag <int>] -m
                          <int> [--] [--version] [-h]


Where: 

   --pdf <nominal/JECup/JECdown>
     PDF

   --pu <nominal/JECup/JECdown>
     PU

   --jer <nominal/JECup/JECdown>
     JER

   --jec <nominal/JECup/JECdown>
     JEC

   --gen-file <filename>
     (required)  JSON file containing number of generated events for each
     signal point

   --trigger-eff <filename>
     JSON file containing trigger efficiencies

   --b-tag <int>
     Number of b-tagged jets

   -m <int>,  --mass <int>
     (required)  Signal mass

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

For example, to fit a Z' with a mass of 750 GeV associated to a large resonance, with one b-tagged jets, the command will be:

./computeEfficiencies -m 750 --b-tag 1 --gen-file data/zprime_large_gen.json --trigger-eff data/zprime_trigger_efficiencies.json

You have to redo this operation for each mass point and for each b-tagged jets number (1 and 2). Fortunately, a script is doing it automatically for you:

To run it on narrow signal datasets:

Fit> ./computeZprimeNarrowEfficiencyForAllMasses.py

To run it on large signal datasets:

Fit> ./computeZprimeLargeEfficiencyForAllMasses.py

This generates efficiencies.json file containng the signal and trigger efficiencies and their associated error, for each mass point and each b-tagged jets number, for a given analysis UUID. It is built as follow:

{
   "53df8306-9406-11e3-96c9-001e68a9d4e2" : {
      "1000" : {
         "1" : {
            "nominal" : {
               "eff_e" : 0.01514329016208649,
               "eff_mu" : 0.01725231483578682,
               "error_eff_e" : 0.0002701927442103624,
               "error_eff_mu" : 0.0002883948618546128,
               "trigger_eff_e" : 0.9592190384864807,
               "trigger_eff_mu" : 0.9189236164093018,
               "trigger_error_eff_e" : 0.003205575980246067,
               "trigger_error_eff_mu" : 0.004375487100332975
            }
         }
      }
   }
}

where:

  • first value: the UUID of your analysis ;
  • second line: your mass point ;
  • third line: the number of b-taged jets ;
  • "nominal": indicates if your are in the nominal analysis or in the systematic study ;
  • "eff_e" : signal efficiency in semi-e channel ;
  • "eff_mu" : signal efficiency in semi-mu channel ;
  • "error_eff_e" : error on signal efficiency in semi-e channel ;
  • "error_eff_mu" : error on signal efficiency in semi-mu channel ;
  • "trigger_eff_e" : trigger efficiency in semi-e channel ;
  • "trigger_eff_mu" : trigger efficiency in semi-mu channel ;
  • "trigger_error_eff_e" : error on trigger efficiency in semi-e channel ;
  • "trigger_error_eff_mu" : error on trigger efficiency in semi-mu channel.