ATLAS Offline Software
Loading...
Searching...
No Matches
BeamspotChainConfiguration.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
8
9from AthenaConfiguration.ComponentFactory import CompFactory
10from TrigStreamerHypo.TrigStreamerHypoConfig import StreamerHypoToolGenerator
11from TrigInDetConfig.utils import getFlagsForActiveConfig
12from TrigInDetConfig.TrigInDetConfig import trigInDetFastTrackingCfg
13from ..Config.MenuComponents import MenuSequence, SelectionCA, InEventRecoCA, InViewRecoCA
14from TriggerMenuMT.HLT.CommonSequences.RejectSequences import RejectSequence
15
16def allTE_trkfastSequenceGenCfg( flags, signature="FS" ):
17
18
19
20 _signature=signature
21 if(signature == "FS"):
22 _signature = "beamSpotFS"
23
24 beamspotSequence = InViewRecoCA('beamspotSequence_'+signature)
25
26 flagsWithTrk = getFlagsForActiveConfig(flags, _signature, log)
27 beamspotSequence.mergeReco(trigInDetFastTrackingCfg(flagsWithTrk,
28 roisKey=beamspotSequence.inputMaker().InViewRoIs,
29 signatureName=_signature))
30
31 from TrigT2BeamSpot.T2VertexBeamSpotConfig import T2VertexBeamSpot_activeAllTE
32 vertexAlg = T2VertexBeamSpot_activeAllTE(flags, "vertex_"+_signature )
33 vertexAlg.TrackCollection = flagsWithTrk.Tracking.ActiveConfig.trkTracks_FTF
34
35
36 beamspotSequence.addRecoAlgo(vertexAlg)
37 beamspotViewsSequence = SelectionCA('beamspotViewsSequence'+_signature)
38 beamspotViewsSequence.mergeReco(beamspotSequence)
39
40
41 #hypo
42 beamspotHypoAlg = CompFactory.TrigStreamerHypoAlg("BeamspotHypoAlg_"+_signature)
43 beamspotHypoAlg.RuntimeValidation = False #Needed to avoid the ERROR ! Decision has no 'feature' ElementLink
44
45 beamspotViewsSequence.addHypoAlgo(beamspotHypoAlg)
46
47 # Accept every event
48 beamspotHypoToolGen = StreamerHypoToolGenerator
49
50 return MenuSequence( flags,
51 beamspotViewsSequence,
52 HypoToolGen = beamspotHypoToolGen )
53
54
56 signature = "BeamspotJet"
57
58 # run at event level
59 inputMakerAlg = CompFactory.InputMakerForRoI("IM_beamspotJet_"+signature)
60 inputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool()
61
62 #-- Configuring Beamspot vertex alg
63 from TrigT2BeamSpot.T2VertexBeamSpotConfig import T2VertexBeamSpot_activeAllTE
64 vertexAlg = T2VertexBeamSpot_activeAllTE(flags, "vertex_"+signature )
65 vertexAlg.TrackCollection = flags.Trigger.InDetTracking.fullScan.trkTracks_FTF
66
67 #-- Setting up beamspotSequence
68 beamspotSequence = InEventRecoCA('beamspotJetSequence_'+signature,inputMaker=inputMakerAlg)
69 beamspotSequence.addRecoAlgo(vertexAlg)
70 beamspotViewsSequence = SelectionCA('beamspotJetViewsSequence'+signature)
71 beamspotViewsSequence.mergeReco(beamspotSequence)
72
73 #-- now use universal rejectsequence
74 HypoName = "BeamspotHypoAlg_"+signature
75 msca = RejectSequence(flags, HypoName, beamspotViewsSequence)
76
77 return msca
78
79
80#----------------------------------------------------------------
81# Class to configure chain
82#----------------------------------------------------------------
83class BeamspotChainConfiguration(ChainConfigurationBase):
84
85 def __init__(self, chainDict, jc_name = None):
86 ChainConfigurationBase.__init__(self,chainDict)
87 self.jc_name=jc_name
88
89
90 def assembleChainImpl(self, flags):
91 chainSteps = []
92 log.debug("Assembling chain for %s", self.chainName)
93 stepDictionary = self.getStepDictionary()
94 key = ''
95
96 if self.chainPart['beamspotChain'] != '':
97 stepName = f"Step4_{self.jc_name}_beamspotJet"
98 chainSteps = [self.getStep(flags, stepName, [getBeamspotVtxSequenceGenCfg])]
99
100 else:
101 key = self.chainPart['addInfo'][0] + "_" + self.chainPart['l2IDAlg'][0] #TODO: hardcoded index
102
103 steps=stepDictionary[key]
104 for step in steps:
105 chainstep = getattr(self, step)(flags)
106 chainSteps+=[chainstep]
107
108 myChain = self.buildChain(chainSteps)
109 return myChain
110
112 # --------------------
113 # define here the names of the steps and obtain the chainStep configuration
114 # --------------------
115 stepDictionary = {
116 "allTE_trkfast":['getAllTEStep'],
117 "trkFS_trkfast":['getTrkFSStep'],
118 }
119 return stepDictionary
120
121 # --------------------
122 # Configuration TrkFS step
123 # --------------------
124 def getTrkFSStep(self, flags):
125 return self.getStep(flags, "trkFS_trkfast",[allTE_trkfastSequenceGenCfg],signature="FS")
126
127 # --------------------
128 # Configuration of costmonitor (costmonitor ?? but isn't this is the actua chain configuration ??)
129 # --------------------
130 def getAllTEStep(self, flags):
131 return self.getStep(flags, "allTE_trkfast",[allTE_trkfastSequenceGenCfg],signature="beamSpot")
if(febId1==febId2)