 |
ATLAS Offline Software
|
Loading...
Searching...
No Matches
Go to the documentation of this file.
2"""Define functions for LAr Cluster Cell Dumper with ComponentAccumulator"""
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaCommon.Logging import logging
8from AthenaConfiguration.Enums import LHCPeriod
10def EventReaderAlgCfg(flags, name="EventReaderAlgCfg", **kwargs):
11 from IOVDbSvc.IOVDbSvcConfig import addFolders
13 acc = ComponentAccumulator()
15 isMC = flags.Input.isMC
17 # -- Dump variables Selection --
18 kwargs.setdefault("doAssocTopoCluster711Dump", False) # dump the 7x11 window built from the hottest cell in an electron cluster.
19 kwargs.setdefault("doClusterDump", False) # Dump only a cluster container. (override the electron cluster)
20 kwargs.setdefault("doPhotonDump", False) # Perform a photon particle dump based on offline Photons Container.
21 kwargs.setdefault("doTruthEventDump", isMC) # Dump the Truth Event variables.
22 kwargs.setdefault("doTruthPartDump", isMC) # Perform a truth particle dump.
23 kwargs.setdefault("doLArEMBHitsDump", isMC) # Dump MC Hits for LAr EMB partition.
25 kwargs.setdefault("skipEmptyEvents", True) # If true, do not fill the event that has no reco electrons.
26 kwargs.setdefault("noBadCells", False) # If True, skip the cells tagged as badCells/channels.
27 kwargs.setdefault("printCellsClus", False) # Debugging
29 # Electrons and crosstalk studies
30 kwargs.setdefault("electronEtaCut", 1.4) # Electron |eta| cut value
31 kwargs.setdefault("doTagAndProbe", True) # select by tag and probe method, electron pairs (start the chain of selection: track + T&P)
32 kwargs.setdefault("doElecSelectByTrackOnly", True) # select only single electrons which pass track criteria (only track), overrides T&P
33 kwargs.setdefault("getAssociatedTopoCluster", True) # Get the topo cluster associated to a super cluster, which was linked to an Electron
34 kwargs.setdefault("getLArCalibConstants", True) # Get the LAr calorimeter calibration constants, related to cells energy and time (online and offline).
35 kwargs.setdefault("etMinProbe", 15) # Min electron Pt value for Zee probe selection loose (GeV).
36 kwargs.setdefault("etMinTag", 15) # Min Et value for the electrons in Zee tag selection (GeV).
37 kwargs.setdefault("minZeeMassTP", 66) # Minimum value of Zee mass for checking the TP pairs (GeV).
38 kwargs.setdefault("maxZeeMassTP", 116) # Maximum value of Zee mass for checking the TP pairs (GeV).
41 kwargs.setdefault("EventInfoContainerKey" , "EventInfo")
42 kwargs.setdefault("PrimaryVertexContainerKey" , "PrimaryVertices")
43 kwargs.setdefault("CaloClusterContainerKey" , "CaloCalTopoClusters")
44 kwargs.setdefault("TruthParticleContainerKey" , "TruthParticles")
45 kwargs.setdefault("ElectronContainerKey" , "Electrons")
46 kwargs.setdefault("TruthEventContainerKey" , "TruthEvents")
47 kwargs.setdefault("LArEMBHitContainerKey" , "LArHitEMB_ClusterThinned")
48 kwargs.setdefault("LArRawChannelContainerKey" , "LArRawChannels_ClusterThinned")
49 kwargs.setdefault("CaloCellContainerKey" , "AllCalo_ClusterThinned")
50 kwargs.setdefault("LArDigitContainerKey" , "LArDigitContainer_ClusterThinned")
52 if (kwargs.get("doElecSelectByTrackOnly")):
53 kwargs.setdefault("MyElectronSelectionKey" , "MySelectedElectrons")
55 kwargs.setdefault("MyElectronSelectionKey" , "MyTagAndProbeElectrons")
57 kwargs.setdefault("isMC", isMC) # set to True in case of MC sample.
59 #------------------------------------------------------------------------------------------------------
60 # Condition Database Access
61 #------------------------------------------------------------------------------------------------------
64 from LArCabling.LArCablingConfig import LArFebRodMappingCfg, LArOnOffIdMappingCfg
65 acc.merge (LArFebRodMappingCfg (flags))
66 acc.merge (LArOnOffIdMappingCfg (flags))
69 from CaloCellCorrection.CaloCellCorrectionConfig import CaloCellPedestalCorrCfg
70 acc.popToolsAndMerge(CaloCellPedestalCorrCfg(flags))
72 obj = "AthenaAttributeList"
77 if 'COMP200' in flags.IOVDb.DatabaseInstance:
78 obj='LArDSPThresholdsComplete'
80 fldThr='/LAR/Configuration/DSPThreshold/Thresholds'
81 obj='LArDSPThresholdsComplete'
83 kwargs.setdefault("Run2DSPThresholdsKey", fldThr)
84 acc.merge(addFolders(flags,fldThr, "LAR_ONL", className=obj, db=dbString))
87 fldThr="/LAR/Configuration/DSPThresholdFlat/Thresholds"
88 fldOflEneResc="/LAR/CellCorrOfl/EnergyCorr"
89 fsampl="/LAR/ElecCalibMC/fSampl"
92 kwargs.setdefault("Run2DSPThresholdsKey", fldThr)#flags.EventReaderAlg.Run2DSPThresholdsKey)
93 kwargs.setdefault("OflEneRescalerKey", fldOflEneResc)#flags.EventReaderAlg.OflEneRescalerKey)
94 kwargs.setdefault("fSamplKey", fsampl)
96 acc.merge(addFolders(flags,fldThr, "LAR_ONL", className=obj, db=dbString))
97 acc.merge(addFolders(flags,[fldOflEneResc,], "LAR_OFL", className="AthenaAttributeList"))
99 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg ## Version 24+
100 acc.merge(LArElecCalibDBCfg(flags, ["OFC", "Pedestal", "Shape"]))
104 from LArRecUtils.LArRecUtilsConfig import LArOFCCondAlgCfg
105 acc.merge(LArOFCCondAlgCfg(flags))
107 if flags.GeoModel.Run is LHCPeriod.Run1: # back to flat threshold
114 kwargs.setdefault("Run2DSPThresholdsKey",fldThr)
115 kwargs.setdefault("OflEneRescalerKey", fldOflEneResc)
117 ## Further calibration constants and electronics conditions
118 from LArRecUtils.LArADC2MeVCondAlgConfig import LArADC2MeVCondAlgCfg
119 acc.merge(LArADC2MeVCondAlgCfg(flags))
121 from LArBadChannelTool.LArBadChannelConfig import LArBadChannelCfg, LArBadFebCfg
122 acc.merge(LArBadFebCfg(flags))
123 acc.merge(LArBadChannelCfg(flags))
126 EventReaderAlg = CompFactory.EventReaderAlg(name, **kwargs)
127 acc.addEventAlgo(EventReaderAlg)
132def CaloCablingAndGeometryCfg(flags,name='CaloCablingAndGeometryCfg',**kwargs):
133 mlog = logging.getLogger('CaloCablingAndGeometryCfg...')
135 from LArCabling.LArCablingConfig import LArFebRodMappingCfg, LArOnOffIdMappingCfg
136 from AtlasGeoModel.GeoModelConfig import GeoModelCfg
138 acc = ComponentAccumulator()
140 acc.merge(LArFebRodMappingCfg (flags))
141 acc.merge(LArOnOffIdMappingCfg (flags))
142 acc.merge(GeoModelCfg(flags))
144 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
145 acc.merge(LArGMCfg(flags))
147 from TileGeoModel.TileGMConfig import TileGMCfg
148 acc.merge(TileGMCfg(flags))
150 mlog.info("CaloCablingAndGeometryCfg added to CA.")
155def CaloNoiseCfg(flags,name='CaloNoiseCfg',**kwargs):
156 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
157 from CaloRec.CaloBCIDCoeffsCondAlgConfig import CaloBCIDCoeffsCondAlgCfg
159 acc = ComponentAccumulator()
161 acc.merge(CaloNoiseCondAlgCfg(flags,noisetype="totalNoise"))
162 acc.merge(CaloNoiseCondAlgCfg(flags,noisetype="electronicNoise"))
163 acc.merge(CaloNoiseCondAlgCfg(flags,noisetype="pileupNoise"))
165 acc.merge (CaloBCIDCoeffsCondAlgCfg (flags))
168 from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
169 acc.merge (BunchCrossingCondAlgCfg(flags))
171 from LumiBlockComps.LuminosityCondAlgConfig import LuminosityCondAlgCfg
172 acc.merge (LuminosityCondAlgCfg (flags))
176def LArClusterCellDumperCfg(flags, name='LArClusterCellDumperCfg'):
178 mlog = logging.getLogger('LArClusterCellDumperCfg')
179 mlog.info("merging LArClusterCellDumperCfg config files...")
181 CaloNoise = CaloNoiseCfg(flags)
182 CaloCablingAndGeo = CaloCablingAndGeometryCfg(flags)
183 EventReaderAlg = EventReaderAlgCfg(flags)
185 acc = ComponentAccumulator()
188 acc.merge(CaloCablingAndGeo)
189 acc.merge(EventReaderAlg)
191 mlog.info("All algorithms merged successfully!")
195if __name__ == "__main__":
196 mlog = logging.getLogger('LArClusterCellDumperCfg')
198 from AthenaConfiguration.AllConfigFlags import initConfigFlags
199 flags = initConfigFlags()
200 from AthenaConfiguration.TestDefaults import defaultTestFiles
201 flags.Input.Files = defaultTestFiles.ESD
202 flags.Exec.MaxEvents = 50
203 flags.Common.MsgSuppression = False
208 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
209 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
210 acc = MainServicesCfg(flags)
212 acc.merge(PoolReadCfg(flags)) # athena service required for POOL file reading
213 acc.addService(CompFactory.THistSvc(
214 Output = ["rec DATAFILE='dumper_outputMC.root', OPT='RECREATE'"]))
215 acc.merge(LArClusterCellDumperCfg(flags))
217 mlog.info("Executing LArClusterCellDumperCfg...")
220 sys.exit(acc.run().isFailure())