ATLAS Offline Software
BTaggingConfigFlags.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
4 from AthenaConfiguration.Enums import LHCPeriod, ProductionStep
5 
6 Run1Grades = [ "Good", "BlaShared", "PixShared", "SctShared", "0HitBLayer" ]
7 Run2Grades = [ "0HitIn0HitNInExp2","0HitIn0HitNInExpIn","0HitIn0HitNInExpNIn","0HitIn0HitNIn",
8  "0HitInExp", "0HitIn",
9  "0HitNInExp", "0HitNIn",
10  "InANDNInShared", "PixShared", "SctShared",
11  "InANDNInSplit", "PixSplit",
12  "Good" ]
13 Run4Grades = [ "A01","A02","A03","A04","A05","A06","A07","A08","A14_1","A14_2","A14_3","A14_4",
14  "B01","B02","B03","B04","B05","B06","B07","B08","B14_1","B14_2","B14_3","B14_4",
15  "C01","C02030405","C06","C07","C08","C14_1","C14_2","C14_3","C14_4" ]
16 calibrationChannelAliases = [
17  "AntiKt4EMTopo->AntiKt4EMTopo,AntiKt4EMPFlow",
18  "AntiKt4EMPFlow->AntiKt4EMPFlow,AntiKt4EMTopo",
19  "AntiKt4HI->AntiKt4HI,AntiKt4EMPFlow,AntiKt4EMTopo,AntiKt4LCTopo",
20  "AntiKtVR30Rmax4Rmin02PV0Track->AntiKtVR30Rmax4Rmin02PV0Track,AntiKt4EMPFlow,AntiKt4EMTopo",
21  "AntiKt4PFlowCustomVtx->AntiKt4EMTopo",
22  "AntiKtVR30Rmax4Rmin02Track->AntiKtVR30Rmax4Rmin02PV0Track,AntiKt4EMPFlow,AntiKt4EMTopo",
23 
24 ]
25 
26 def getGrades(flags):
27  if flags.GeoModel.Run is LHCPeriod.Run1:
28  return Run1Grades
29  elif flags.GeoModel.Run in [LHCPeriod.Run2, LHCPeriod.Run3]:
30  return Run2Grades
31  else:
32  return Run4Grades
33 
34 
35 def getTaggerList(flags):
36  base = ['IP2D','IP3D','SV1','JetFitterNN']
37  if flags.Trigger.doHLT:
38  base = ['SV1','JetFitterNN']
39  if flags.GeoModel.Run >= LHCPeriod.Run4:
40  base += ['MV2c10']
41  flip = ['IP2DNeg', 'IP3DNeg','IP2DFlip', 'IP3DFlip','SV1Flip']
42  if flags.BTagging.RunFlipTaggers:
43  return base + flip
44  return base
45 
46 
48  if flags.Trigger.doHLT:
49  return 5e3
50  return 4e3
51 
52 
53 def calibrationTag(flags):
54  if flags.GeoModel.Run >= LHCPeriod.Run4:
55  return "BTagCalibITk-23-00-03-v1"
56  return ""
57 
58 
59 def saveSv1(prevFlags):
60  return prevFlags.Common.ProductionStep is ProductionStep.Derivation or prevFlags.GeoModel.Run >= LHCPeriod.Run4
61 
62 
63 def runOldSecVrtSecIncl(prevFlags):
64  return prevFlags.Common.ProductionStep is ProductionStep.Derivation
65 
66 
67 def isRun3Derivation(flags):
68  derivation = flags.Common.ProductionStep is ProductionStep.Derivation
69  before_the_future = flags.GeoModel.Run < LHCPeriod.Run4
70  return derivation and before_the_future
71 
72 
73 def runFlipTag(flags):
74  return isRun3Derivation(flags)
75 
76 def getNNs(flags):
77  # dummy for now
78  caldir = 'BTagging/20231205/GN2v01/antikt4empflow'
79  pf_nns = [f'{caldir}/network_fold{n}.onnx' for n in range(4)]
80  if isRun3Derivation(flags):
81  return {
82  'AntiKt4EMPFlowJets': [
83  {
84  'folds': pf_nns,
85  },
86  ]
87  }
88  return {}
89 
90 
92  btagcf = AthConfigFlags()
93 
94  btagcf.addFlag("BTagging.taggerList", getTaggerList)
95  btagcf.addFlag("BTagging.databaseScheme", '')
96  btagcf.addFlag("BTagging.calibrationChannelAliases",
97  calibrationChannelAliases)
98  btagcf.addFlag("BTagging.forcedCalibrationChannel", '')
99  btagcf.addFlag("BTagging.calibrationTag",
100  calibrationTag)
101 
102  # the track association minimum is set to 4 GeV because of track
103  # jets in offline reconstruction.
104  btagcf.addFlag("BTagging.minimumJetPtForTrackAssociation",
105  minimumJetPtForTrackAssociation)
106 
107  # these are only used for IPxD and SV1 likelihoods
108  btagcf.addFlag("BTagging.RunModus", "analysis") # reference mode used in FlavourTagPerformanceFramework (RetagFragment.py)
109  btagcf.addFlag("BTagging.ReferenceType", "ALL") # reference type for IP and SV taggers (B, UDSG, ALL)
110  btagcf.addFlag("BTagging.JetPtMinRef", 15e3) # in MeV for uncalibrated pt
111  btagcf.addFlag("BTagging.Grades", getGrades)
112 
113 
114  # Taggers for validation
115  btagcf.addFlag("BTagging.SaveSV1Probabilities", saveSv1)
116  #Do we really need this in AthConfigFlags?
117  #Comments in BTaggingConfiguration.py
118  btagcf.addFlag("BTagging.OutputFiles.Prefix", "BTagging_")
119  btagcf.addFlag("BTagging.GeneralToolSuffix",'') #Not sure it will stay like that later on. Was '', 'Trig, or 'AODFix'
120  # Run the flip taggers
121  btagcf.addFlag("BTagging.RunFlipTaggers", runFlipTag)
122 
123  # Trackless approach
124  btagcf.addFlag("BTagging.Trackless", False)
125  btagcf.addFlag("BTagging.Trackless_JetCollection", "AntiKt4EMPFlowJets")
126  btagcf.addFlag("BTagging.Trackless_JetPtMin", 250) #in GeV
127  btagcf.addFlag("BTagging.Trackless_dR", 0.4)
128 
129  # more aggressive trackless approach
130  btagcf.addFlag("BTagging.savePixelHits", False)
131  btagcf.addFlag("BTagging.saveSCTHits", False)
132 
133  # experimental flags
134  btagcf.addFlag("BTagging.Pseudotrack", False)
135 
136  #NewVrtSecInclusiveAlg
137  btagcf.addFlag("BTagging.RunNewVrtSecInclusive", runOldSecVrtSecIncl)
138 
139  # track classification tool flags
140  btagcf.addFlag("BTagging.TrkClassFiveBinMode",False)
141 
142  # a flag to add V0finder
143  btagcf.addFlag("BTagging.AddV0Finder", False)
144 
145  # GNN vertex fitter
146  btagcf.addFlag("BTagging.GNNVertexFitter", False)
147 
148  # (multifold) NN trainings, each jet collection maps to a list of
149  # dicts. The dict has several keys:
150  # - folds: list of NNs to run
151  # - remapping (optional): any variable remapping
152  btagcf.addFlag("BTagging.NNs", getNNs)
153 
154  return btagcf
BTaggingConfigFlags.isRun3Derivation
def isRun3Derivation(flags)
Definition: BTaggingConfigFlags.py:67
BTaggingConfigFlags.getNNs
def getNNs(flags)
Definition: BTaggingConfigFlags.py:76
BTaggingConfigFlags.createBTaggingConfigFlags
def createBTaggingConfigFlags()
Definition: BTaggingConfigFlags.py:91
BTaggingConfigFlags.saveSv1
def saveSv1(prevFlags)
Definition: BTaggingConfigFlags.py:59
BTaggingConfigFlags.calibrationTag
def calibrationTag(flags)
Definition: BTaggingConfigFlags.py:53
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
BTaggingConfigFlags.getGrades
def getGrades(flags)
Definition: BTaggingConfigFlags.py:26
BTaggingConfigFlags.minimumJetPtForTrackAssociation
def minimumJetPtForTrackAssociation(flags)
Definition: BTaggingConfigFlags.py:47
BTaggingConfigFlags.getTaggerList
def getTaggerList(flags)
Definition: BTaggingConfigFlags.py:35
BTaggingConfigFlags.runOldSecVrtSecIncl
def runOldSecVrtSecIncl(prevFlags)
Definition: BTaggingConfigFlags.py:63
BTaggingConfigFlags.runFlipTag
def runFlipTag(flags)
Definition: BTaggingConfigFlags.py:73