ATLAS Offline Software
Loading...
Searching...
No Matches
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
4from AthenaConfiguration.ComponentFactory import CompFactory
5
6
7if __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
51 flags=initConfigFlags()
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 L1CaloFolderList = []
104 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Calibration/PpmDeadChannels"]
105 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/DisabledTowers"]
106 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/RunParameters"]
107 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Configuration/PprChanDefaults"]
108 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Configuration/PprChanDefaults"]
109
110 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Configuration/PprChanStrategy"]
111 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Calibration/Physics/PprChanCalib"]
112
113 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib"]
114 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCommon"]
115 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanLowMu"]
116 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanHighMu"]
117
118 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanCalib"]
119 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanCommon"]
120 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanLowMu"]
121 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib1/PprChanHighMu"]
122
123 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanCalib"]
124 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanCommon"]
125 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanLowMu"]
126 L1CaloFolderList += ["/TRIGGER/L1Calo/V2/Calibration/Calib2/PprChanHighMu"]
127
128 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/RunParameters"]
129 L1CaloFolderList += ["/TRIGGER/L1Calo/V1/Conditions/DerivedRunPars"]
130 L1CaloFolderList += ["/TRIGGER/Receivers/Conditions/VgaDac"]
131 L1CaloFolderList += ["/TRIGGER/Receivers/Conditions/Strategy"]
132
133 from IOVDbSvc.IOVDbSvcConfig import addFolders
134 for l1calofolder in L1CaloFolderList:
135 cfg.merge(addFolders(flags,l1calofolder, db="TRIGGER", tag="HEAD", className="CondAttrListCollection"))
136 cfg.addCondAlgo(CompFactory.L1CaloCondAlg(UsePhysicsRegime = True, UseCalib1Regime = False, UseCalib2Regime = False))
137
138 from CaloConditions.CaloConditionsConfig import CaloTTIdMapCfg
139 cfg.merge(CaloTTIdMapCfg(flags))
140
141 l1hvcorr = CompFactory.L1CaloHVCorrectionsForDB()
142
143 from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import L1CaloCells2TriggerTowersCfg
144 cfg.merge(L1CaloCells2TriggerTowersCfg(flags,'L1CaloCells2TriggerTowers'))
145
146 # set up tools
147 #from TrigT1CaloTools.TrigT1CaloToolsConf import LVL1__L1TriggerTowerTool
148 #ToolSvc += LVL1__L1TriggerTowerTool("L1TriggerTowerTool")
149 #from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import LVL1__L1CaloLArTowerEnergy
150 #ToolSvc += LVL1__L1CaloLArTowerEnergy("L1CaloLArTowerEnergy")
151 #from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import LVL1__L1CaloOfflineTriggerTowerTools
152 #ToolSvc += LVL1__L1CaloOfflineTriggerTowerTools("L1CaloOfflineTriggerTowerTools")
153
154 cfg.addEventAlgo(l1hvcorr)
155
156 # configure writing of calib database
157 from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
158 cfg.merge(OutputConditionsAlgCfg(flags, "HVCorrectionsOutput", outputFile="dummy.root",
159 ObjectList = [ "CondAttrListCollection#/TRIGGER/L1Calo/V1/Results/RxLayers",
160 "CondAttrListCollection#/TRIGGER/L1Calo/V1/Results/HVCorrections"],
161 WriteIOV = WriteIOV,
162 RunNumber=RunNumber
163 )
164 )
165 #RegistrationSvc
166 cfg.addService(CompFactory.IOVRegistrationSvc(RecreateFolders = True,
167 SVFolder=True,
168 ))
169
170 cfg.getService("IOVDbSvc").DBInstance=""
171
172 print("Start running...")
173 cfg.run(1)
void print(char *figname, TCanvas *c1)