3 from AthenaConfiguration.ComponentFactory
import CompFactory
4 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
5 from LArCalibProcessing.utils
import FolderTagResolver
6 from IOVDbSvc.IOVDbSvcConfig
import addFolders
8 def _OFPhasePickerCfg(flags, inputSuffix="4samples3bins17phases",outputSuffix="4samples1phase",keySuffix="",nColl=0,loadInputs=True, storeShape=True, InputSCOFCPhaseDb = "", SCOFCPhaseTag = "", InputSCOFCWeightDb="", SCOFCWeightTag=""):
11 FolderTagResolver._globalTag=flags.IOVDb.GlobalTag
12 if flags.LArCalib.isSC:
13 FolderTagResolver._defaultSuffix=
"-UPD3-00"
14 rs=FolderTagResolver(dbname=
"sqlite://;schema=%s;dbname=CONDBR2"%flags.LArCalib.Input.Database)
16 tagstr=rs.getFolderTag(flags.LArCalib.OFCPhys.Folder+inputSuffix)
17 tagpref=tagstr[0:tagstr.find(inputSuffix)+len(inputSuffix)]
18 tagpost=tagstr[tagstr.find(inputSuffix)+len(inputSuffix):]
20 if 'mu' not in tagstr:
21 inputOFCTag=f
'{tagpref}-mu-{nc}{tagpost}'
24 tagstr=rs.getFolderTag(flags.LArCalib.OFCPhys.Folder+outputSuffix)
25 tagpref=tagstr[0:tagstr.find(outputSuffix)+len(outputSuffix)]
26 tagpost=tagstr[tagstr.find(outputSuffix)+len(outputSuffix):]
27 outputOFCTag=f
'{tagpref}-mu-{nc}{tagpost}'
29 inputOFCTag=rs.getFolderTag(flags.LArCalib.OFCPhys.Folder+inputSuffix)
30 outputOFCTag=rs.getFolderTag(flags.LArCalib.OFCPhys.Folder+outputSuffix)
32 inputShapeTag=rs.getFolderTag(flags.LArCalib.Shape.Folder+inputSuffix)
33 if flags.LArCalib.OFC.ShapeCorrection:
34 tagstr=rs.getFolderTag(flags.LArCalib.Shape.Folder+outputSuffix)
35 tagpref=tagstr[0:tagstr.find(outputSuffix)+len(outputSuffix)]
36 tagpost=tagstr[tagstr.find(outputSuffix)+len(outputSuffix):]
37 outputShapeTag=f
'{tagpref}-corr{tagpost}'
39 outputShapeTag=rs.getFolderTag(flags.LArCalib.Shape.Folder+outputSuffix)
44 from LArCalibProcessing.LArCalibBaseConfig
import chanSelStr
46 result.merge(
addFolders(flags,flags.LArCalib.OFCPhys.Folder+inputSuffix,detDb=flags.LArCalib.Input.Database,
47 tag=inputOFCTag, modifiers=
chanSelStr(flags)+
"<key>LArOFC"+keySuffix+
"</key>"))
48 result.merge(
addFolders(flags,flags.LArCalib.Shape.Folder+inputSuffix,detDb=flags.LArCalib.Input.Database,
49 tag=inputShapeTag, modifiers=
chanSelStr(flags)+
"<key>LArShape"+keySuffix+
"</key>"))
51 LArOFPhasePick = CompFactory.LArOFPhasePicker(
"LArOFPhasePicker"+keySuffix)
52 if flags.LArCalib.isSC:
53 LArOFPhasePick.KeyPhase =
"LArSCOFCPhase"
55 if InputSCOFCPhaseDb !=
"" and SCOFCPhaseTag !=
"":
56 result.merge(
addFolders(flags,
"/LAR/ElecCalibOflSC/OFCBin/PhysShift",detDb=InputSCOFCPhaseDb,tag=SCOFCPhaseTag,
57 modifiers=
"<key>LArSCOFCPhase</key>"))
59 result.merge(
addFolders(flags,
"/LAR/ElecCalibOflSC/OFCBin/PhysShift", detDb=
"LAR_OFL",modifiers=
"<key>LArSCOFCPhase</key>"))
61 if InputSCOFCWeightDb !=
"" and SCOFCWeightTag !=
"":
62 result.merge(
addFolders(flags,
"/LAR/ElecCalibOflSC/OFCFactor",detDb=InputSCOFCWeightDb,tag=SCOFCWeightTag,className=
"CondAttrListCollection"))
63 LArOFCWeightCondAlg=CompFactory.getComp(
"LArFlatConditionsAlg<LArOFCweightSC>")
64 result.addCondAlgo(LArOFCWeightCondAlg(ReadKey=
"/LAR/ElecCalibOflSC/OFCFactor", WriteKey=
"LArOFCbWSC"))
65 LArOFPhasePick.OFCbWeightKey=
"LArOFCbWSC"
68 LArOFPhasePick.KeyPhase =
""
75 LArOFPhasePick.KeyOFC_new =
"LArOFC"+muSuffix
76 LArOFPhasePick.KeyOFC =
"LArOFC"+keySuffix
78 LArOFPhasePick.KeyShape_new =
"LArShape"+
"_uncorr" if flags.LArCalib.OFC.ShapeCorrection
else "LArShape"
79 LArOFPhasePick.KeyShape =
"LArShape"+keySuffix
81 LArOFPhasePick.doShape =
False
82 LArOFPhasePick.GroupingType = flags.LArCalib.GroupingType
83 LArOFPhasePick.DefaultPhase = 4
84 LArOFPhasePick.TimeOffsetCorrection = 12
85 LArOFPhasePick.isSC = flags.LArCalib.isSC
87 LArOFPhasePick.OutputLevel=DEBUG
89 result.addEventAlgo(LArOFPhasePick)
91 if flags.LArCalib.OFC.ShapeCorrection
and storeShape:
92 result.merge(
addFolders(flags,
"/LAR/ElecCalibOfl/Shape/Residuals/5samples",
"LAR_OFL"))
93 resShapeCorr=CompFactory.LArShapeCorrector(
"LArShapeCorr"+keySuffix)
94 resShapeCorr.KeyShape=
"LArShape_uncorr"
95 resShapeCorr.KeyShape_newcorr=
"LArShape"
96 result.addEventAlgo(resShapeCorr)
98 from RegistrationServices.OutputConditionsAlgConfig
import OutputConditionsAlgCfg
99 Obj=[
"LArOFCComplete#LArOFC"+muSuffix+
"#"+flags.LArCalib.OFCPhys.Folder+outputSuffix,]
102 Obj+=[
"LArShapeComplete#LArShape#"+flags.LArCalib.Shape.Folder+outputSuffix,]
103 Tag+=[outputShapeTag,]
106 outputFile=flags.LArCalib.Output.POOLFile,
109 Run1=flags.LArCalib.IOVStart,
110 Run2=flags.LArCalib.IOVEnd
114 rootfile=flags.LArCalib.Output.ROOTFile
116 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
117 OFC2Ntup=CompFactory.LArOFC2Ntuple(
"LArOFC2Ntuple"+muSuffix)
118 OFC2Ntup.ContainerKey =
"LArOFC"+muSuffix
119 OFC2Ntup.NtupleName =
"OFC"+muSuffix
120 OFC2Ntup.AddFEBTempInfo =
False
121 OFC2Ntup.AddCalib =
True
122 OFC2Ntup.isSC = flags.LArCalib.isSC
123 OFC2Ntup.BadChanKey = bcKey
124 result.addEventAlgo(OFC2Ntup)
126 Shape2Ntup=CompFactory.LArShape2Ntuple(
"LArShape2Ntuple")
127 Shape2Ntup.ContainerKey=
"LArShape"
128 Shape2Ntup.NtupleName=
"SHAPE"
129 Shape2Ntup.AddFEBTempInfo =
False
130 Shape2Ntup.AddCalib =
True
131 Shape2Ntup.isSC = flags.LArCalib.isSC
132 Shape2Ntup.BadChanKey = bcKey
133 result.addEventAlgo(Shape2Ntup)
138 def LArOFPhasePickerCfg(flags,loadInputs=True,InputSCOFCPhaseDb = "",SCOFCPhaseTag="",InputSCOFCWeightDb="",SCOFCWeightTag=""):
141 from LArCalibProcessing.LArCalibBaseConfig
import LArCalibBaseCfg
144 if flags.LArCalib.isSC:
145 result.merge(
_OFPhasePickerCfg(flags, inputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples",outputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples1phase",keySuffix=
"_1ns", nColl=0, loadInputs=loadInputs,InputSCOFCPhaseDb=InputSCOFCPhaseDb,SCOFCPhaseTag=SCOFCPhaseTag,InputSCOFCWeightDb=InputSCOFCWeightDb,SCOFCWeightTag=SCOFCWeightTag))
146 if flags.LArCalib.OFC.Ncoll > 0:
147 result.merge(
_OFPhasePickerCfg(flags, inputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples",outputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples1phase",keySuffix=
"_1ns_mu", nColl=flags.LArCalib.OFC.Ncoll, loadInputs=loadInputs, storeShape=
False,InputSCOFCPhaseDb=InputSCOFCPhaseDb,SCOFCPhaseTag=SCOFCPhaseTag,InputSCOFCWeightDb=InputSCOFCWeightDb,SCOFCWeightTag=SCOFCWeightTag))
149 result.merge(
_OFPhasePickerCfg(flags, inputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples3bins17phases",outputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples1phase",keySuffix=
"_3ns", nColl=0, loadInputs=loadInputs))
150 if flags.LArCalib.OFC.Ncoll > 0:
151 result.merge(
_OFPhasePickerCfg(flags, inputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples3bins17phases",outputSuffix=
str(flags.LArCalib.OFC.Nsamples)+
"samples1phase",keySuffix=
"_3ns_mu", nColl=flags.LArCalib.OFC.Ncoll, loadInputs=loadInputs, storeShape=
False))
154 result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders =
False))
155 result.getService(
"IOVDbSvc").DBInstance=
""
158 rootfile=flags.LArCalib.Output.ROOTFile
161 if os.path.exists(rootfile):
163 result.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
164 result.setAppProperty(
"HistogramPersistency",
"ROOT")
169 from McEventSelector.McEventSelectorConfig
import McEventSelectorCfg
171 RunNumber = flags.LArCalib.Input.RunNumbers[0],
174 InitialTimeStamp = 0,
175 TimeStampInterval = 1))
177 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
187 from LArCalibProcessing.LArCalibBaseConfig
import LArCalibBaseCfg
190 FolderTagResolver._globalTag=flags.IOVDb.GlobalTag
191 if flags.LArCalib.isSC:
192 FolderTagResolver._defaultSuffix=
"-UPD3-00"
193 rs=FolderTagResolver(dbname=
"sqlite://;schema=%s;dbname=CONDBR2"%flags.LArCalib.Input.Database)
194 inputOFCTag=rs.getFolderTag(flags.LArCalib.OFCCali.Folder)
195 outputOFCTag=rs.getFolderTag(flags.LArCalib.OFCCali.Folder+
"1phase")
198 from LArCalibProcessing.LArCalibBaseConfig
import chanSelStr
200 result.merge(
addFolders(flags,flags.LArCalib.OFCCali.Folder,detDb=flags.LArCalib.Input.Database,
201 tag=inputOFCTag, modifiers=
chanSelStr(flags)))
203 LArOFPhasePick = CompFactory.LArOFPhasePicker(
"LArCaliOFPhasePicker")
204 LArOFPhasePick.KeyPhase =
""
205 LArOFPhasePick.KeyOFC_new =
"LArOFC1phase"
206 LArOFPhasePick.KeyOFC =
"LArOFCCali"
207 LArOFPhasePick.doShape =
False
208 LArOFPhasePick.GroupingType = flags.LArCalib.GroupingType
209 LArOFPhasePick.DefaultPhase = DefaultPhase
210 LArOFPhasePick.isSC = flags.LArCalib.isSC
212 LArOFPhasePick.OutputLevel=DEBUG
214 result.addEventAlgo(LArOFPhasePick)
216 from RegistrationServices.OutputConditionsAlgConfig
import OutputConditionsAlgCfg
217 Obj=[
"LArOFCComplete#LArOFC1phase#"+flags.LArCalib.OFCCali.Folder+
"1phase",]
221 outputFile=flags.LArCalib.Output.POOLFile,
224 Run1=flags.LArCalib.IOVStart,
225 Run2=flags.LArCalib.IOVEnd
228 rootfile=flags.LArCalib.Output.ROOTFile
230 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
231 OFC2Ntup=CompFactory.LArOFC2Ntuple(
"LArCaliOFC2Ntuple")
232 OFC2Ntup.ContainerKey =
"LArOFC1phase"
233 OFC2Ntup.NtupleName =
"OFC1phase"
234 OFC2Ntup.AddFEBTempInfo =
False
235 OFC2Ntup.AddCalib =
True
236 OFC2Ntup.isSC = flags.LArCalib.isSC
237 OFC2Ntup.BadChanKey = bcKey
238 result.addEventAlgo(OFC2Ntup)
240 if os.path.exists(rootfile):
241 print(
"Warning, removing existing file: ",rootfile)
243 result.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
244 result.setAppProperty(
"HistogramPersistency",
"ROOT")
249 result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders =
False))
250 result.getService(
"IOVDbSvc").DBInstance=
""
253 from McEventSelector.McEventSelectorConfig
import McEventSelectorCfg
255 RunNumber = flags.LArCalib.Input.RunNumbers[0],
258 InitialTimeStamp = 0,
259 TimeStampInterval = 1))
261 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg