BTagging workflow
The BTagging workflow is a slightly changed base workflow. The main difference is that the BTagging workflow includes derivation of BTagging efficiencies for a given analysis as recommended by [BTV](https://btv-wiki.docs.cern.ch/PerformanceCalibration/fixedWPSFRecommendations/#b-tagging-efficiencies-in-simulation). The processor that implements the main operations performed can be found at higgs_dna/workflows/btagging:BTaggingProcessor.
To use b-jet related variables and weights, one has to adhere to the following procedures:
Variables * Execute first pull_files.py –target bTag * Choose an appropriate btagging MVA: deepJet (all NanoAOD versions >= v11), particleNet (NanoAOD >= v12) and robustParticleTransformer (NanoAOD >= v12)
Set it in the processor variable self.bjet_mva
Choose the Working Point: L (Loose), M (Medium), T (Tight), XT (extra Tight) or XXT (extra extra Tight) * Set it in the processor variable self.bjet_wp
Weights * Execute first pull_files.py –target bTag * Since the btagging efficiency weights have to be computed per analysis, we have to produce them first with the BTagging processor
- Example Btagging processor found in ./higgs_dna/workflows
Important: You have to apply your selections before the indicated MANDATORY PART. The latter must not be changed.
Select in your runner.json for the workflow BTagging and run the processor with no systematics (they are not necessary for the BTagging processor) over all your samples of your analysis
Pickle .pkl files are produced that contain the btagging efficiencies binned as per recommendation by [BTV](https://btv-wiki.docs.cern.ch/PerformanceCalibration/fixedWPSFRecommendations/) * pT in [20, 30, 50, 70, 100, 140, 200, 300, 600, 1000] * abs(eta): No Binning * hadronFlavour: [0, 4, 5]
Once .pkl files are produced, generate the correctionlib file by calling btagging_eff.py –input path/to/BTagging/output –output-name analysis-name , where analysis-name is the name the correctionlib will be saved as (per default in ./higgs_dna/systematics/JSONs/bTagEff/year/analysis-name.json.gz )
When the correctionlib is produced and stored in ./higgs_dna/systematics/JSONs/bTagEff/year , we have to add an additional string to the dictionary in runner.json: “bTagEffFileName”: “analysis-name.json.gz” (Important: Only state the name of the file. Do not add the path, as HiggsDNA looks for it in ./higgs_dna/systematics/JSONs/bTagEff/ by itself!)
Now, you can add the desired corrections and systematics to your runner.json and launch the production of your samples * Currently only bTagFixedWP_PNetTight (MVA: ParticleNet, Tight WP) is implemented. But feel free to add more with the new function for fixed btagging working points bTagFixedWP found in higgs_dna/systematics/event_weight_systematics.py
If a systematic or correction from bTagFixedWP is used, the weights weight and weight_central are not containing the weight of the btagging scale factors. Instead it is added separately as weight_bTagFixedWP to be used later.
An example JSON for the BTaggingProcessor could look like this:
Then after the production of the .pkl files, the final runner.json for your analyis involving the Particle Net MVA with a tight working point could look like this:
Right now, the following btagging corrections and systematics are implemented:
- Particle Net
bTagFixedWP_PNetLoose (Loose WP)
bTagFixedWP_PNetMedium (Medium WP)
bTagFixedWP_PNetTight (Tight WP)
bTagFixedWP_PNetExtraTight (Extra Tight WP)
bTagFixedWP_PNetExtraExtraTight (Extra Extra Tight WP)
- Deep Jet
bTagFixedWP_deepJetLoose (Loose WP)
bTagFixedWP_deepJetMedium (Medium WP)
bTagFixedWP_deepJetTight (Tight WP)
bTagFixedWP_deepJetExtraTight (Extra Tight WP)
bTagFixedWP_deepJetExtraExtraTight (Extra Extra Tight WP)
- Robust Particle Transformer
bTagFixedWP_robustParticleTransformerLoose (Loose WP)
bTagFixedWP_robustParticleTransformerMedium (Medium WP)
bTagFixedWP_robustParticleTransformerTight (Tight WP)
bTagFixedWP_robustParticleTransformerExtraTight (Extra Tight WP)
bTagFixedWP_robustParticleTransformerExtraExtraTight (Extra Extra Tight WP)
IMPORTANT: When the systematics are applied, the weights weight and weight_central are not containing the weight of the btagging scale factors. Instead it is added separately as weight_bTagFixedWP to be used later.