ATLAS Offline Software
Loading...
Searching...
No Matches
UnconventionalTrackingChainConfiguration.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaCommon.Logging import logging
4logging.getLogger().info("Importing %s",__name__)
5log = logging.getLogger(__name__)
6
7from TriggerMenuMT.HLT.Config.ChainConfigurationBase import ChainConfigurationBase
8from TrigLongLivedParticlesHypo.TrigDJHypoConfig import TrigDJComboHypoToolFromDict
9
10from TriggerMenuMT.HLT.UnconventionalTracking.CommonConfiguration import getFullScanRecoOnlySequenceGenCfg
11from TriggerMenuMT.HLT.UnconventionalTracking.DJTriggerConfiguration import DJPromptStepSequenceGenCfg, DJDispStepSequenceGenCfg
12from TriggerMenuMT.HLT.UnconventionalTracking.DVTriggerConfiguration import DVRecoSequenceGenCfg, DVTriggerEDSequenceGenCfg
13from TriggerMenuMT.HLT.UnconventionalTracking.DisTrkTriggerConfiguration import DisTrkTriggerHypoSequenceGenCfg
14from TriggerMenuMT.HLT.UnconventionalTracking.FullScanLRTTrackingConfiguration import FullScanLRTMenuSequenceGenCfg
15from TriggerMenuMT.HLT.UnconventionalTracking.HitDVConfiguration import HitDVHypoSequenceGenCfg, UTTJetRecoSequenceGenCfg
16from TriggerMenuMT.HLT.UnconventionalTracking.IsoHighPtTrackTriggerConfiguration import IsoHPtTrackTriggerHypoSequenceGenCfg
17from TriggerMenuMT.HLT.UnconventionalTracking.VrtSecInclusiveConfiguration import VrtSecInclusiveMenuSequenceGenCfg
18from TriggerMenuMT.HLT.UnconventionalTracking.dEdxTriggerConfiguration import dEdxTriggerHypoSequenceGenCfg
19
20#----------------------------------------------------------------
21# Class to configure chain
22#----------------------------------------------------------------
23class UnconventionalTrackingChainConfiguration(ChainConfigurationBase):
24
25 def __init__(self, chainDict):
26 ChainConfigurationBase.__init__(self,chainDict)
27
28 # ----------------------
29 # Assemble the chain depending on information from chainName
30 # ----------------------
31 def assembleChainImpl(self, flags):
32 log.debug("Assembling chain %s", self.chainName)
33
34 chainSteps = []
35
36 stepDictionary = self.getStepDictionary()
37
38 key = self.chainPart['trigType']
39 steps = stepDictionary[key]
40
41 for step in steps:
42 chainstep = getattr(self, step)(flags)
43 chainSteps += [chainstep]
44
45 myChain = self.buildChain(chainSteps)
46
47 return myChain
48
50
51 stepDictionary = {
52 "isotrk" : ['getIsoHPtTrackEmpty', 'getRoITrkEmpty', 'getFTFTrackReco', 'getIsoHPtTrackTrigger'],
53 "fslrt" : ['getFSLRTEmpty', 'getRoITrkEmpty', 'getFSLRTTrigger'],
54 "dedxtrk" : ['getdEdxEmpty', 'getRoITrkEmpty', 'getFTFTrackReco', 'getdEdxTrigger'],
55 "hitdvjet" : ['getJetReco', 'getRoITrkEmpty', 'getFTFTrackReco', 'getHitDVTrigger'],
56 "fsvsi" : ['getVSIEmpty', 'getRoITrkEmpty', 'getVSITrigger'],
57 "distrk" : ['getDisTrkEmpty', 'getRoITrkEmpty', 'getFTFTrackReco', 'getDisTrkTrigger'],
58 "dispvtx" : ['getJetReco', 'getRoITrkEmpty', 'getFTFTrackReco', 'getHitDVTrigger', 'getDVRecoStep', 'getDVEDStep'],
59 "dispjet" : ['getJetReco', 'getRoITrkEmpty', 'getFTFTrackReco', 'getDJPromptStep', 'getDJDispStep']
60 }
61
62 return stepDictionary
63
64 # --------------------
65 # Step definitions in alignment order
66 # Step 1
67 def getJetReco(self, flags):
68 return self.getStep(flags, 'JetRecoOnlyCfg',[UTTJetRecoSequenceGenCfg])
69 # Empty for alignment
70 def getIsoHPtTrackEmpty(self, flags):
71 return self.getEmptyStep('EmptyUncTrk')
72 def getFSLRTEmpty(self, flags):
73 return self.getEmptyStep('FSLRTEmptyStep')
74 def getDisTrkEmpty(self, flags):
75 return self.getEmptyStep('DisTrkEmptyStep')
76 def getVSIEmpty(self, flags):
77 return self.getEmptyStep('VSIEmptyStep')
78 def getdEdxEmpty(self, flags):
79 return self.getEmptyStep('dEdxEmptyStep')
80
81 # Step 2
82 def getFSLRTTrigger(self, flags):
83 return self.getStep(flags, 'FSLRT',[FullScanLRTMenuSequenceGenCfg])
84 # Empty for alignment with jets
85 def getRoITrkEmpty(self, flags):
86 return self.getEmptyStep('RoITrkEmptyStep')
87
88 # Step 3 -- all FTF tracking here
89 def getFTFTrackReco(self, flags):
90 return self.getStep(flags, 'FTFRecoOnly',[getFullScanRecoOnlySequenceGenCfg])
91
92 # Step 4+ -- everything post FTF tracking
93 def getIsoHPtTrackTrigger(self, flags):
94 return self.getStep(flags, 'IsoHPtTrack',[IsoHPtTrackTriggerHypoSequenceGenCfg])
95 def getdEdxTrigger(self, flags):
96 return self.getStep(flags, 'dEdx',[dEdxTriggerHypoSequenceGenCfg])
97 def getHitDVTrigger(self, flags):
98 return self.getStep(flags, 'HitDV',[HitDVHypoSequenceGenCfg])
99 def getDisTrkTrigger(self, flags):
100 return self.getStep(flags, 'DisTrk',[DisTrkTriggerHypoSequenceGenCfg])
101 def getVSITrigger(self, flags):
102 return self.getStep(flags, 'LRTVSI',[VrtSecInclusiveMenuSequenceGenCfg])
103 def getDJPromptStep(self, flags):
104 return self.getStep(flags, 'DJPromptStep',[DJPromptStepSequenceGenCfg], comboTools = [TrigDJComboHypoToolFromDict])
105 def getDJDispStep(self, flags):
106 return self.getStep(flags, 'DJDispStep',[DJDispStepSequenceGenCfg])
107 def getDVRecoStep(self, flags):
108 return self.getStep(flags, 'DVRecoStep',[DVRecoSequenceGenCfg])
109 def getDVEDStep(self, flags):
110 return self.getStep(flags, 'DVEDStep',[DVTriggerEDSequenceGenCfg])