ATLAS Offline Software
Loading...
Searching...
No Matches
PrecisionPhotonRecoSequences.py
Go to the documentation of this file.
1# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from TriggerMenuMT.HLT.Egamma.TrigEgammaKeys import getTrigEgammaKeys
6#logging
7from AthenaCommon.Logging import logging
8log = logging.getLogger(__name__)
9
10def precisionPhotonVDVCfg(flags, name, InViewRoIs, ion=False):
11 acc = ComponentAccumulator()
12 TrigEgammaKeys = getTrigEgammaKeys(flags, ion=ion)
13 caloClusters = TrigEgammaKeys.precisionPhotonCaloClusterContainer
14 dataObjects = [( 'xAOD::CaloClusterContainer' , 'StoreGateSvc+%s' % caloClusters ),
15 ( 'EgammaRecContainer', 'StoreGateSvc+%s' % TrigEgammaKeys.precisionPhotonSuperClusterCollection),
16 ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),
17 ]
18 if ion:
19 dataObjects += [( 'CaloCellContainer' , 'StoreGateSvc+CorrectedRoICaloCells' )]
20 else:
21 dataObjects += [( 'CaloCellContainer' , 'StoreGateSvc+CaloCells' )]
22
23 precisionPhotonVDV = CompFactory.AthViews.ViewDataVerifier(name)
24 precisionPhotonVDV.DataObjects = dataObjects
25 acc.addEventAlgo(precisionPhotonVDV)
26 return acc
27
28
29def precisionPhotonRecoSequence(flags, RoIs, name = None, ion=False):
30 """ With this function we will setup the sequence of offline EgammaAlgorithms so to make a photon for TrigEgamma
31
32 Sequence of algorithms is the following:
33 - egammaRecBuilder/TrigEgammaRecPhoton creates egammaObjects out of clusters and tracks. Here, at HLT photons we will only use clusters.
34 - photonSuperClusterBuilder algorithm will create superclusters out of the toposlusters and tracks in egammaRec under the photon hypothesis
35 https://gitlab.cern.ch/atlas/athena/blob/master/Reconstruction/egamma/egammaAlgs/python/egammaSuperClusterBuilder.py#L26
36 - TopoEgammBuilder will create photons and electrons out of trakcs and SuperClusters. Here at HLT photons the aim is to ignore electrons and not use tracks at all.
37 https://gitlab.cern.ch/atlas/athena/blob/master/Reconstruction/egamma/egammaAlgs/src/xAODEgammaBuilder.cxx
38 """
39
40 log.debug('precisionPhotonRecoSequence(RoIs = %s)',RoIs)
41
42 acc= ComponentAccumulator()
43
44 # Retrieve the factories now
45 from TriggerMenuMT.HLT.Photon.TrigPhotonFactoriesCfg import TrigTopoEgammaPhotonCfg, TrigTopoEgammaPhotonCfg_HI
46
47 log.debug('retrieve(precisionPhotonRecoSequence,None,RoIs = %s)',RoIs)
48
49 acc.merge(precisionPhotonVDVCfg(flags, name+'VDV',RoIs,ion))
50
51 if ion:
52 TrigTopoEgammaPhoton = TrigTopoEgammaPhotonCfg_HI(flags)
53 else:
54 TrigTopoEgammaPhoton = TrigTopoEgammaPhotonCfg(flags)
55
56 acc.merge(TrigTopoEgammaPhoton)
57
58 #online monitoring for xAODEgammaBuilder
59 from TriggerMenuMT.HLT.Photon.TrigPhotonFactoriesCfg import PrecisionPhotonTopoMonitorCfg
60 PrecisionPhotonTopoRecoMonAlgo = PrecisionPhotonTopoMonitorCfg(flags,ion=ion)
61 acc.merge(PrecisionPhotonTopoRecoMonAlgo)
62
63 #online monitoring for TrigPhotonSuperClusterBuilder
64 from TriggerMenuMT.HLT.Photon.TrigPhotonFactoriesCfg import PrecisionPhotonSuperClusterMonitorCfg
65 PrecisionPhotonSuperClusterMonAlgo = PrecisionPhotonSuperClusterMonitorCfg(flags, ion=ion)
66 acc.merge(PrecisionPhotonSuperClusterMonAlgo)
67
68 return acc
69
70
precisionPhotonVDVCfg(flags, name, InViewRoIs, ion=False)
precisionPhotonRecoSequence(flags, RoIs, name=None, ion=False)