ATLAS Offline Software
TrigHitDVHypoConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaCommon.Logging import logging
4 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
5 from AthenaConfiguration.ComponentFactory import CompFactory
6 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
8 
9 # Default name of HitDV output
10 hitDVName = "HLT_HitDV"
11 
12 def TrigHitDVHypoAlgCfg(flags : AthConfigFlags, name : str) -> ComponentAccumulator:
13  acc = ComponentAccumulator()
14 
15  # Setup the hypothesis algorithm
16  theHitDVHypo = CompFactory.TrigHitDVHypoAlg(name)
17 
18  from TrigEDMConfig.TriggerEDM import recordable
19  theHitDVHypo.HitDV = recordable(hitDVName)
20 
21  theHitDVHypo.isMC = flags.Input.isMC
22 
23  # monitoring
24  monTool = GenericMonitoringTool(flags, "IM_MonTool"+name,
25  HistPath = 'HitDVHypoAlg')
26 
27  monTool.defineHistogram('jet_pt', type='TH1F', path='EXPERT', title="p_{T}^{jet} [GeV];p_{T}^{jet} [GeV];Nevents", xbins=50, xmin=0, xmax=200)
28  monTool.defineHistogram('jet_eta', type='TH1F', path='EXPERT', title="#eta^{jet};#eta^{jet};Nevents", xbins=50, xmin=-5.0, xmax=5.0)
29  #
30  monTool.defineHistogram('n_dvtrks', type='TH1F', path='EXPERT', title="Nr of HitDVTrks;N HitDVTrks size;Nevents", xbins=50, xmin=0, xmax=1000)
31  monTool.defineHistogram('n_dvsps', type='TH1F', path='EXPERT', title="Nr of HitDVSPs;N HitDVSPs size;Nevents", xbins=50, xmin=0, xmax=100000)
32  monTool.defineHistogram('n_jetseeds', type='TH1F', path='EXPERT', title="Nr of Jet Seeds;N jet seeds;Nevents", xbins=25, xmin=0, xmax=25)
33  monTool.defineHistogram('n_jetseedsdel', type='TH1F', path='EXPERT', title="Nr of deleted jet seeds;N jet seeds;Nevents", xbins=25, xmin=0, xmax=25)
34  monTool.defineHistogram('n_spseeds', type='TH1F', path='EXPERT', title="Nr of Ly6/Ly7 SP-doublet Seeds;N SP seeds;Nevents", xbins=25, xmin=0, xmax=25)
35  monTool.defineHistogram('n_spseedsdel', type='TH1F', path='EXPERT', title="Nr of deleted Ly6/Ly7 SP-doublet seeds;N SP seeds;Nevents", xbins=25, xmin=0, xmax=25)
36  monTool.defineHistogram('average_mu', type='TH1F', path='EXPERT', title="Average mu;Average mu;Nevents", xbins=50, xmin=0, xmax=100)
37  #
38 
39  # Layer histograms for both eta bins
40  for i in range(8):
41  monTool.defineHistogram(f'ly{i}_spfr;eta1_ly{i}_spfr', type='TH1F', path='EXPERT',
42  title=f"Layer#{i} hit fraction (|#eta|<1);Hit fraction;Nevents",
43  xbins=50, xmin=0.0, xmax=1.0, cutmask='cutEta1')
44  monTool.defineHistogram(f'ly{i}_spfr;1eta2_ly{i}_spfr', type='TH1F', path='EXPERT',
45  title=f"Layer#{i} hit fraction (1<|#eta|<2);Hit fraction;Nevents",
46  xbins=50, xmin=0.0, xmax=1.0, cutmask='cut1Eta2')
47 
48  # |eta|<1
49  monTool.defineHistogram('n_qtrk;eta1_n_qtrk', type='TH1F', path='EXPERT', title="Nr of quality tracks (|#eta|<1);Nr of quality tracks;Nevents", xbins=20, xmin=0, xmax=20, cutmask='cutEta1')
50  monTool.defineHistogram('bdtscore;eta1_bdtscore', type='TH1F', path='EXPERT', title="BDT score (|#eta|<1);BDT score;Nevents", xbins=50, xmin=-1.0, xmax=1.0, cutmask='cutEta1')
51 
52  # 1<|eta|<2
53  monTool.defineHistogram('n_qtrk;1eta2_n_qtrk', type='TH1F', path='EXPERT', title="Nr of quality tracks (1<|#eta|<2);Nr of quality tracks;Nevents", xbins=20, xmin=0, xmax=20, cutmask='cut1Eta2')
54  monTool.defineHistogram('bdtscore;1eta2_bdtscore', type='TH1F', path='EXPERT', title="BDT score (1<|#eta|<2);BDT score;Nevents", xbins=50, xmin=-1.0, xmax=1.0, cutmask='cut1Eta2')
55 
56  theHitDVHypo.MonTool = monTool
57  theHitDVHypo.jFexSRJetRoI = "L1_jFexSRJetRoI"
58 
59  useNewLayerNumberScheme = False
60  from TrigFastTrackFinder.TrigFastTrackFinderConfig import TrigSpacePointConversionToolCfg
61  spTool = acc.popToolsAndMerge(TrigSpacePointConversionToolCfg(flags,
62  UseNewLayerScheme=useNewLayerNumberScheme,
63  DoPhiFiltering = False,
64  UseBeamTilt = False, ))
65 
66  theHitDVHypo.SpacePointProviderTool = spTool
67 
68  acc.addEventAlgo(theHitDVHypo)
69  return acc
70 
71 
72 def TrigHitDVHypoToolFromDict( flags, chainDict ):
73 
74  log = logging.getLogger('TrigHitDVHypoTool')
75 
76  """ Use menu decoded chain dictionary to configure the tool """
77  cparts = [i for i in chainDict['chainParts'] if i['signature']=='UnconventionalTracking']
78  thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], [])
79 
80  name = chainDict['chainName']
81  from AthenaConfiguration.ComponentFactory import CompFactory
82  tool = CompFactory.TrigHitDVHypoTool(name)
83 
84  # set thresholds
85 
86  strThr = ""
87 
88  thresholds = [ float(THR) for THR in thresholds]
89 
90  for THR in thresholds:
91  strThr += str(THR)+", "
92 
93  log.debug("Threshold Values are: %s",strThr)
94 
95  tool.cutJetPtGeV = thresholds
96 
97  jetEta=[]
98  doSPseed=[]
99  effBDT=[]
100 
101  for cpart in cparts:
102  if cpart['IDinfo'] =="loose":
103  log.debug("Loose ID working point is set")
104  jetEta.append(2.0)
105  doSPseed.append(True)
106  effBDT.append(0.9)
107  elif cpart['IDinfo'] =="tight":
108  log.debug("Tight ID working point is set")
109  jetEta.append(1.0)
110  doSPseed.append(False)
111  effBDT.append(0.75)
112  else:
113  if cpart['IDinfo'] =="medium":
114  log.debug("Medium ID working point is set")
115  else:
116  log.info("no working point specificed. setting medium working point")
117  jetEta.append(2.0)
118  doSPseed.append(False)
119  effBDT.append(0.75)
120 
121  tool.cutJetEta = jetEta
122  tool.doSPseed = doSPseed
123  tool.effBDT = effBDT
124 
125  return tool
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.TrigHitDVHypoConfig.TrigHitDVHypoToolFromDict
def TrigHitDVHypoToolFromDict(flags, chainDict)
Definition: TrigHitDVHypoConfig.py:72
python.TrigHitDVHypoConfig.TrigHitDVHypoAlgCfg
ComponentAccumulator TrigHitDVHypoAlgCfg(AthConfigFlags flags, str name)
Definition: TrigHitDVHypoConfig.py:12
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
GenericMonitoringTool
Definition: GenericMonitoringTool.py:1
TrigFastTrackFinderConfig.TrigSpacePointConversionToolCfg
ComponentAccumulator TrigSpacePointConversionToolCfg(AthConfigFlags flags, **kwargs)
Definition: TrigFastTrackFinderConfig.py:265
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
python.TriggerEDM.recordable
def recordable(arg, runVersion=3)
Definition: TriggerEDM.py:37
str
Definition: BTagTrackIpAccessor.cxx:11
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65