ATLAS Offline Software
LArL1Calo_ComputeHVCorr.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 
6 
7 if __name__=="__main__":
8 
9  import sys
10  import argparse
11  from time import strptime
12  from calendar import timegm
13 
14  # now process the CL options and assign defaults
15  parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
16  parser.add_argument('-d','--date', dest='date', default='2024-04-30:00:00:00', help='date', type=str)
17  parser.add_argument('-o','--outsqlite', dest='outsql', default="hvcorrections.sqlite", help='Output sqlite file', type=str)
18  parser.add_argument('-t','--tag', dest='glbtag', default='CONDBR2-BLKPA-2024-02', help='Global tag to use', type=str)
19 
20  args = parser.parse_args()
21  if help in args and args.help is not None and args.help:
22  parser.print_help()
23  sys.exit(0)
24 
25  try:
26  ts=strptime(args.date+'/UTC','%Y-%m-%d:%H:%M:%S/%Z')
27  TimeStamp=int(timegm(ts))*1000000000
28  except ValueError:
29  print("ERROR in time specification,",args.date," use e.g. 2024-05-25:14:01:00")
30 
31 
32  from LArCalibProcessing.TimeStampToRunLumi import TimeStampToRunLumi
33 
34  rlb=TimeStampToRunLumi(TimeStamp)
35  if rlb is None:
36  print("WARNING: Failed to convert time",TimeStamp,"into a run/lumi number")
37  RunNumber=999999
38  LumiBlock=0
39  else:
40  RunNumber=rlb[0]
41  LumiBlock=rlb[1]
42 
43  print("Working on run",RunNumber,"LB",LumiBlock,"Timestamp:",TimeStamp)
44 
45  #Import the MainServices (boilerplate)
46  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
47 
48  #Import the flag-container that is the arguemnt to the configuration methods
49  from AthenaConfiguration.AllConfigFlags import initConfigFlags
50  from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
52  addLArCalibFlags(flags)
53 
54  # database folder
55  LArHVScaleCorrFolder = "/LAR/ElecCalibOfl/HVScaleCorr"
56 
57  # output key
58  keyOutput = "LArHVScaleCorr"
59 
60  # write IOV
61  WriteIOV = True
62 
63  # flags settings
64  flags.IOVDb.DBConnection="sqlite://;schema="+args.outsql +";dbname=L1CALO"
65  flags.IOVDb.GlobalTag = args.glbtag
66  # geometry
67  from AthenaConfiguration.TestDefaults import defaultGeometryTags
68  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
69 
70  flags.Input.Files=[]
71  flags.Input.RunNumbers=[RunNumber,]
72 
73  flags.Debug.DumpDetStore=True
74  flags.Debug.DumpCondStore=True
75  flags.Debug.DumpEvtStore=True
76 
77  flags.dump()
78  flags.lock()
79 
80  cfg=MainServicesCfg(flags)
81  from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg
82  cfg.merge(LArOnOffIdMappingCfg(flags))
83 
84  #MC Event selector since we have no input data file
85  from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
86  cfg.merge(McEventSelectorCfg(flags,
87  RunNumber = flags.Input.RunNumbers[0],
88  EventsPerRun = 1,
89  FirstEvent = 1,
90  InitialTimeStamp = 0,
91  TimeStampInterval = 1))
92 
93 
94  from LArCalibUtils.LArHVScaleConfig import LArHVScaleCfg
95  cfg.merge(LArHVScaleCfg(flags))
96 
97  cfg.addEventAlgo(CompFactory.L1CaloHVDummyContainers())
98 
99  # setup l1calo database
100  # FIXME:
101  #include('TrigT1CaloCalibConditions/L1CaloCalibConditionsRun2_jobOptions.py')
102  # hack because of deleted files from trigger:
103  cfg.addService(CompFactory.L1CaloCondSvc())
104  L1CaloFolderList = []
105  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Calibration/PpmDeadChannels"]
106  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/DisabledTowers"]
107  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/RunParameters"]
108  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Configuration/PprChanDefaults"]
109  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Configuration/PprChanDefaults"]
110 
111  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Configuration/PprChanStrategy"]
112  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Calibration/Physics/PprChanCalib"]
113 
114  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib"]
115  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCommon"]
116  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanLowMu"]
117  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanHighMu"]
118 
119  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanCalib"]
120  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanCommon"]
121  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanLowMu"]
122  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanHighMu"]
123 
124  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanCalib"]
125  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanCommon"]
126  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanLowMu"]
127  L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanHighMu"]
128 
129  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/RunParameters"]
130  L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/DerivedRunPars"]
131  L1CaloFolderList += ["/TRIGGER/Receivers/Conditions/VgaDac"]
132  L1CaloFolderList += ["/TRIGGER/Receivers/Conditions/Strategy"]
133 
134  from IOVDbSvc.IOVDbSvcConfig import addFolders
135  for l1calofolder in L1CaloFolderList:
136  cfg.merge(addFolders(flags,l1calofolder, db="TRIGGER", tag="HEAD", className="CondAttrListCollection"))
137  cfg.addCondAlgo(CompFactory.L1CaloCondAlg(UsePhysicsRegime = True, UseCalib1Regime = False, UseCalib2Regime = False))
138 
139  from CaloConditions.CaloConditionsConfig import CaloTTIdMapCfg
140  cfg.merge(CaloTTIdMapCfg(flags))
141 
142  l1hvcorr = CompFactory.L1CaloHVCorrectionsForDB()
143 
144  from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import L1CaloCells2TriggerTowersCfg
145  cfg.merge(L1CaloCells2TriggerTowersCfg(flags,'L1CaloCells2TriggerTowers'))
146 
147  # set up tools
148  #from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1TriggerTowerTool
149  #ToolSvc += LVL1__L1TriggerTowerTool("L1TriggerTowerTool")
150  #from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import LVL1__L1CaloLArTowerEnergy
151  #ToolSvc += LVL1__L1CaloLArTowerEnergy("L1CaloLArTowerEnergy")
152  #from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import LVL1__L1CaloOfflineTriggerTowerTools
153  #ToolSvc += LVL1__L1CaloOfflineTriggerTowerTools("L1CaloOfflineTriggerTowerTools")
154 
155  cfg.addEventAlgo(l1hvcorr)
156 
157  # configure writing of calib database
158  from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
159  cfg.merge(OutputConditionsAlgCfg(flags, "HVCorrectionsOutput", outputFile="dummy.root",
160  ObjectList = [ "CondAttrListCollection#/TRIGGER/L1Calo/V1/Results/RxLayers",
161  "CondAttrListCollection#/TRIGGER/L1Calo/V1/Results/HVCorrections"],
162  WriteIOV = WriteIOV,
163  RunNumber=RunNumber
164  )
165  )
166  #RegistrationSvc
167  cfg.addService(CompFactory.IOVRegistrationSvc(RecreateFolders = True,
168  SVFolder=True,
169  ))
170 
171  cfg.getService("IOVDbSvc").DBInstance=""
172 
173  print("Start running...")
174  cfg.run(1)
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
OutputConditionsAlgConfig.OutputConditionsAlgCfg
def OutputConditionsAlgCfg(flags, name="OutputConditionsAlg", outputFile='condobjs.root', **kwargs)
Definition: OutputConditionsAlgConfig.py:5
L1CaloCalibToolsConfig.L1CaloCells2TriggerTowersCfg
def L1CaloCells2TriggerTowersCfg(flags, name, **kwargs)
Definition: L1CaloCalibToolsConfig.py:34
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
python.McEventSelectorConfig.McEventSelectorCfg
def McEventSelectorCfg(flags, **kwargs)
Definition: McEventSelectorConfig.py:5
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:72
LArCablingConfig.LArOnOffIdMappingCfg
def LArOnOffIdMappingCfg(configFlags)
Definition: LArCablingConfig.py:62
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
python.LArHVScaleConfig.LArHVScaleCfg
def LArHVScaleCfg(configFlags)
Definition: LArHVScaleConfig.py:8
python.CaloConditionsConfig.CaloTTIdMapCfg
def CaloTTIdMapCfg(flags)
Definition: CaloConditionsConfig.py:31
python.LArCalibConfigFlags.addLArCalibFlags
def addLArCalibFlags(flags, isSC=False)
Definition: LArCalibConfigFlags.py:3
python.TimeStampToRunLumi.TimeStampToRunLumi
def TimeStampToRunLumi(tmstmp, guard=1, dbInstance="CONDBR2")
Definition: TimeStampToRunLumi.py:3