ATLAS Offline Software
Loading...
Searching...
No Matches
LArCalib_RTMParamsConfig.py
Go to the documentation of this file.
1#!/usr/bin/env python3
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.MainServicesConfig import MainServicesCfg
6
7def LArRTMParamsCfg(flags):
8
9 #Get basic services and cond-algos
10 from LArCalibProcessing.LArCalibBaseConfig import LArCalibBaseCfg,chanSelStr
11 result=LArCalibBaseCfg(flags)
12
13
14 #Get basic services and cond-algos
15 from LArCalibProcessing.utils import FolderTagResolver
16 FolderTagResolver._globalTag=flags.IOVDb.GlobalTag
17 rs=FolderTagResolver(flags.LArCalib.Input.CoolOflP1Replica)
18 DetCellParamsTag=rs.getFolderTag(flags.LArCalib.DetCellParams.Folder)
19 CaliPulseParamsTag=rs.getFolderTag(flags.LArCalib.CaliPulseParams.Folder)
20 if (flags.LArCalib.Input.Database == "LAR_OFL" and flags.LArCalib.Input.Database2 == "LAR_OFL"):
21 CaliWaveTag=rs.getFolderTag(flags.LArCalib.CaliWave.Folder)
22 else:
23 CaliWaveTag=None
24 del rs #Close database
25
26 #Retrieve CaliWave:
27 from IOVDbSvc.IOVDbSvcConfig import addFolders
28 result.merge(addFolders(flags,flags.LArCalib.CaliWave.Folder,detDb=flags.LArCalib.Input.Database, tag=CaliWaveTag, modifiers=chanSelStr(flags)))
29
30 if not flags.LArCalib.RTM.ExtractAll:
31 #Get information from database:
32 result.merge(addFolders(flags,flags.LArCalib.DetCellParams.Folder,detDb=flags.LArCalib.Input.Database, tag=DetCellParamsTag))
33 result.merge(addFolders(flags,flags.LArCalib.CaliPulseParams.Folder,detDb=flags.LArCalib.Input.Database, tag=CaliPulseParamsTag))
34
35
36 LArRTMParamExtractor = CompFactory.LArRTMParamExtractor()
37
38 LArRTMParamExtractor.KeyList = ["LArCaliWave"]
39 LArRTMParamExtractor.TestMode = False
40 LArRTMParamExtractor.GroupingType = flags.LArCalib.GroupingType
41 LArRTMParamExtractor.IgnoreDACSelection = True
42 LArRTMParamExtractor.isSC = flags.LArCalib.isSC
43
44 LArRTMParamExtractor.ExtractTaur = True
45 LArRTMParamExtractor.ExtractTcal = flags.LArCalib.RTM.ExtractAll
46 LArRTMParamExtractor.ExtractFstep = flags.LArCalib.RTM.ExtractAll
47 LArRTMParamExtractor.ExtractOmega0 = flags.LArCalib.RTM.ExtractAll
48
49 LArRTMParamExtractor.FT = flags.LArCalib.Preselection.FT
50 LArRTMParamExtractor.PosNeg = 0 if len(flags.LArCalib.Preselection.Side)==0 else flags.LArCalib.Preselection.Side[0]
51 LArRTMParamExtractor.Slot = flags.LArCalib.Preselection.Slot
52
53 LArRTMParamExtractor.DumpOmegaScan = flags.LArCalib.RTM.DumpOmegaScan
54 LArRTMParamExtractor.DumpResOscill = flags.LArCalib.RTM.DumpResOscill
55
56
57 theLArWFParamTool = CompFactory.LArWFParamTool()
58 theLArWFParamTool.isSC = flags.LArCalib.isSC
59
60 theLArWFParamTool.UseOmegaScanHelper = True
61 theLArWFParamTool.CosRespScan = [ False , True , False , False ] # Strips only
62 theLArWFParamTool.Omega0Min = [ 0.100 , 0.220 , 0.060 , 0.100 ]
63 theLArWFParamTool.Omega0Max = [ 0.600 , 0.310 , 0.215 , 0.700 ]
64 theLArWFParamTool.NpointScan = [ 800 , 900 , 310 , 120 ]
65 theLArWFParamTool.StoreResOscill = [True * 4] if flags.LArCalib.RTM.DumpResOscill else [False *4]
66
67 LArRTMParamExtractor.LArWFParamTool=theLArWFParamTool
68
69 result.addEventAlgo(LArRTMParamExtractor)
70
71 rootfile=flags.LArCalib.Output.ROOTFile
72 bcKey = "LArBadChannelSC" if flags.LArCalib.isSC else "LArBadChannel"
73 if rootfile != "":
74 LArWFParams2Ntuple = CompFactory.LArWFParams2Ntuple("LArWFParams2Ntuple")
75 LArWFParams2Ntuple.DumpCaliPulseParams = True
76 LArWFParams2Ntuple.DumpDetCellParams = True
77 LArWFParams2Ntuple.CaliPulseParamsKey="LArCaliPulseParams_RTM"
78 LArWFParams2Ntuple.DetCellParamsKey="LArDetCellParams_RTM"
79 LArWFParams2Ntuple.BadChanKey = bcKey
80 LArWFParams2Ntuple.isSC = flags.LArCalib.isSC
81 LArWFParams2Ntuple.AddCalib = True
82 result.addEventAlgo(LArWFParams2Ntuple)
83
84 if flags.LArCalib.RTM.DumpOmegaScan:
85 LArOmegaScans2Ntuple = CompFactory.LArCaliWaves2Ntuple("LArOmegaScans2Ntuple")
86 LArOmegaScans2Ntuple.NtupleName = "OMEGASCAN"
87 LArOmegaScans2Ntuple.BadChanKey = bcKey
88 LArOmegaScans2Ntuple.isSC = flags.LArCalib.isSC
89 LArOmegaScans2Ntuple.KeyList = ["OmegaScan"]
90 result.addEventAlgo(LArOmegaScans2Ntuple)
91
92 if ( flags.LArCalib.RTM.DumpResOscill ):
93 LArResOscillsBefore2Ntuple = CompFactory.LArCaliWaves2Ntuple("LArResOscillsBefore2Ntuple")
94 LArResOscillsBefore2Ntuple.NtupleName = "RESOSCILLBEFORE"
95 LArResOscillsBefore2Ntuple.BadChanKey = bcKey
96 LArResOscillsBefore2Ntuple.isSC = flags.LArCalib.isSC
97 LArResOscillsBefore2Ntuple.KeyList = ["ResOscillBefore"]
98 result.addEventAlgo(LArResOscillsBefore2Ntuple)
99
100 LArResOscillsAfter2Ntuple = CompFactory.LArCaliWaves2Ntuple("LArResOscillsAfter2Ntuple")
101 LArResOscillsAfter2Ntuple.NtupleName = "RESOSCILLAFTER"
102 LArResOscillsAfter2Ntuple.BadChanKey = bcKey
103 LArResOscillsAfter2Ntuple.KeyList = ["ResOscillAfter"]
104 result.addEventAlgo(LArResOscillsAfter2Ntuple)
105
106 import os
107 if os.path.exists(rootfile):
108 os.remove(rootfile)
109 result.addService(CompFactory.NTupleSvc(Output = [ "FILE1 DATAFILE='"+rootfile+"' OPT='NEW'" ]))
110 result.setAppProperty("HistogramPersistency","ROOT")
111 pass # end if ROOT ntuple writing
112
113
114
115 from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
116 result.merge(OutputConditionsAlgCfg(flags,
117 outputFile=flags.LArCalib.Output.POOLFile,
118 ObjectList=["LArCaliPulseParamsComplete#"+"LArCaliPulseParams_RTM#"+flags.LArCalib.CaliPulseParams.Folder,
119 "LArDetCellParamsComplete#"+"LArDetCellParams_RTM#"+flags.LArCalib.DetCellParams.Folder,],
120 IOVTagList=[CaliPulseParamsTag,DetCellParamsTag],
121 Run1=flags.LArCalib.IOVStart,
122 Run2=flags.LArCalib.IOVEnd
123 ))
124
125 #RegistrationSvc
126 result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders = False))
127 result.getService("IOVDbSvc").DBInstance=""
128
129
130 #MC Event selector since we have no input data file
131 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
132 result.merge(McEventSelectorCfg(flags,
133 RunNumber = flags.LArCalib.Input.RunNumbers[0],
134 EventsPerRun = 1,
135 FirstEvent = 1,
136 InitialTimeStamp = 0,
137 TimeStampInterval = 1))
138
139 from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg
140 result.merge(PerfMonMTSvcCfg(flags))
141
142 return result
143
144if __name__ == "__main__":
145
146
147 from AthenaConfiguration.AllConfigFlags import initConfigFlags
148 ConfigFlags=initConfigFlags()
149 from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
150 addLArCalibFlags(ConfigFlags)
151
152 ConfigFlags.Input.Files=[]
153 ConfigFlags.LArCalib.Input.RunNumbers=[401351,]
154 ConfigFlags.LArCalib.Input.Database="/home/wlampl/calibTest/00400939_00400943_00400945_Barrel-EMB-EMEC_HIGH_40_21.0.20_1/poolFiles/myDB200_00400939_00400943_00400945_EB-EMBA_one.db_Delay"
155 ConfigFlags.LArCalib.Input.SubDet="EM"
156 ConfigFlags.LArCalib.BadChannelDB="/home/wlampl/calibTest/00400939_00400943_00400945_Barrel-EMB-EMEC_HIGH_40_21.0.20_1/poolFiles/SnapshotBadChannel_00400939_00400943_00400945_EB-EMBA.db"
157 ConfigFlags.LArCalib.BadChannelTag="-RUN2-UPD3-00"
158 ConfigFlags.LArCalib.Output.ROOTFile="larparams.root"
159 ConfigFlags.IOVDb.DatabaseInstance="CONDBR2"
160 ConfigFlags.IOVDb.DBConnection="sqlite://;schema=output.sqlite;dbname=CONDBR2"
161 ConfigFlags.IOVDb.GlobalTag="LARCALIB-RUN2-02"
162 from AthenaConfiguration.TestDefaults import defaultGeometryTags
163 ConfigFlags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
164 ConfigFlags.IOVDb.DatabaseInstance="CONDBR2"
165 ConfigFlags.LAr.doAlign=False
166 ConfigFlags.Input.RunNumbers=ConfigFlags.LArCalib.Input.RunNumbers
167 #ConfigFlags.Exec.OutputLevel=1
168
169 ConfigFlags.lock()
170 ConfigFlags.fillFromArgs()
171 cfg=MainServicesCfg(ConfigFlags)
172 cfg.merge(LArRTMParamsCfg(ConfigFlags))
173
174 print("Start running...")
175 import sys
176 sys.exit(cfg.run(1).isFailure())
void print(char *figname, TCanvas *c1)