ATLAS Offline Software
LArCalib_PileUpAutoCorrConfig.py
Go to the documentation of this file.
1 
2 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
6 
8 
9  #Get basic services and cond-algos
10  from LArCalibProcessing.LArCalibBaseConfig import LArCalibBaseCfg,chanSelStr
11  result=LArCalibBaseCfg(flags)
12 
13  from IOVDbSvc.IOVDbSvcConfig import addFolders
14 
15  #load fsampl, MinBias Average and PulseShape 32 samples from OFLP200
16  if flags.LArCalib.isSC:
17  from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBMCSCCfg
18  # for the SC we need uA2MeV also from MC, because the one used for data are weighted with E->ET conversion
19  result.merge(LArElecCalibDBMCSCCfg(flags,["fSamplSC","ShapeSC","MinBiasSC","uA2MeVSC"]))
20  else:
21  result.merge(addFolders(flags,"/LAR/ElecCalibMC/Shape",detDb="LAR_OFL", db="OFLP200",tag="LARElecCalibMCShapeLArPileupShape-RUN2-2018",className="LArShape32MC",modifiers="<key>LArShapeMC</key>"))
22  result.merge(addFolders(flags,"/LAR/ElecCalibMC/fSampl",detDb="LAR_OFL", db="OFLP200",tag="LARElecCalibMCfSampl-G4101-20371-FTFP_BERT_BIRK_v2",className="LArfSamplMC"))
23  result.merge(addFolders(flags,"/LAR/ElecCalibMC/MinBias",detDb="LAR_OFL", db="OFLP200",tag="LARElecCalibMCMinBias-mc16-Epos-A3-s3687",className="LArMinBiasMC"))
24 
25  result.addCondAlgo(CompFactory.LArMCSymCondAlg())
26 
27  LArShapeSymAlg = CompFactory.getComp("LArSymConditionsAlg<LArShape32MC, LArShape32Sym>")
28  result.addCondAlgo(LArShapeSymAlg(ReadKey="LArShapeMC",WriteKey="LArShapeSym"))
29 
30  LArfSamplSymAlg = CompFactory.getComp("LArSymConditionsAlg<LArfSamplMC, LArfSamplSym>")
31  result.addCondAlgo(LArfSamplSymAlg(ReadKey="LArfSampl", WriteKey="LArfSamplSym"))
32 
33  LArMinBiasSymAlg = CompFactory.getComp("LArSymConditionsAlg<LArMinBiasMC, LArMinBiasSym>")
34  result.addCondAlgo(LArMinBiasSymAlg(ReadKey="LArMinBias",WriteKey="LArMinBiasSym"))
35 
36  from LArCalibProcessing.utils import FolderTagResolver
37  FolderTagResolver._globalTag=flags.IOVDb.GlobalTag
38  if flags.LArCalib.isSC:
39  FolderTagResolver._defaultSuffix="-UPD3-00"
40  rs=FolderTagResolver(dbname="sqlite://;schema=%s;dbname=CONDBR2"%flags.LArCalib.Input.Database)
41  AutoCorrTag=rs.getFolderTag(flags.LArCalib.AutoCorr.Folder)
42  PedestalTag=rs.getFolderTag(flags.LArCalib.Pedestal.Folder)
43  RampTag=rs.getFolderTag(flags.LArCalib.Ramp.Folder)
44  MpMcTag=rs.getFolderTag(flags.LArCalib.MphysOverMcal.Folder)
45  rsac=FolderTagResolver(dbname="COOLOFL_LAR/CONDBR2")
46  PhysAutoCorrTag= rsac.getFolderTag(flags.LArCalib.PhysAutoCorr.Folder)
47  nColl=flags.LArCalib.OFC.Ncoll
48  if (nColl>0 and "mu" not in PhysAutoCorrTag):
49  #Insert mu in tag-name:
50  elems=PhysAutoCorrTag.split("-")
51  PhysAutoCorrTag="-".join([elems[0]+"_mu_%i"%nColl,]+elems[1:])
52  del elems
53 
54  del rs
55 
56  result.merge(addFolders(flags,flags.LArCalib.AutoCorr.Folder,detDb=flags.LArCalib.Input.Database, tag=AutoCorrTag, modifiers=chanSelStr(flags)+"<key>LArAutoCorr</key>",
57  className="LArAutoCorrComplete"))
58  result.merge(addFolders(flags,flags.LArCalib.Pedestal.Folder,detDb=flags.LArCalib.Input.Database, tag=PedestalTag, modifiers=chanSelStr(flags)+"<key>LArPedestal</key>",
59  className="LArPedestalComplete"))
60  result.merge(addFolders(flags,flags.LArCalib.Ramp.Folder,detDb=flags.LArCalib.Input.Database, tag=RampTag, modifiers=chanSelStr(flags),
61  className="LArRampComplete"))
62  result.merge(addFolders(flags,flags.LArCalib.MphysOverMcal.Folder,detDb=flags.LArCalib.Input.Database, tag=MpMcTag, modifiers=chanSelStr(flags),
63  className="LArMphysOverMcalComplete"))
64 
65  #Need ADC2MeV values for AutoCorrCondAlg ...
66  #use current production values as input conditions
67  if flags.LArCalib.isSC:
68  requiredConditions=["DAC2uA","HVScaleCorr"]
69  else:
70  #requiredConditions=["DAC2uA","uA2MeV","HVScaleCorr","Ramp","Pedestal","MphysOverMcal"]
71  # in 2024 put:
72  requiredConditions=["DAC2uA","uA2MeV","HVScaleCorr"]
73  if flags.LArCalib.isSC:
74  from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBSCCfg
75  result.merge(LArElecCalibDBSCCfg(flags,requiredConditions))
76  mapKey="LArOnOffIdMapSC"
77  bcKey = "LArBadChannelSC"
78  uAKey = "LAruA2MeVSC"
79  DACKey = "LArDAC2uASC"
80  HVKey = "LArHVScaleCorrSC"
81  else:
82  from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
83  result.merge(LArElecCalibDBCfg(flags,requiredConditions))
84  mapKey="LArOnOffIdMap"
85  bcKey = "LArBadChannel"
86  uAKey = "LAruA2MeV"
87  DACKey = "LArDAC2uA"
88  HVKey = "LArHVScaleCorr"
89 
90  result.addCondAlgo(CompFactory.LArADC2MeVCondAlg(UseFEBGainTresholds=False,LArOnOffIdMappingKey=mapKey,CompleteDetector=False,LAruA2MeVKey=uAKey,LArDAC2uAKey=DACKey,LArHVScaleCorrKey=HVKey,isSuperCell=flags.LArCalib.isSC))
91 
92  theLArAutoCorrTotalCondAlg=CompFactory.LArAutoCorrTotalCondAlg()
93  theLArAutoCorrTotalCondAlg.Nsamples=flags.LArCalib.OFC.Nsamples
94  from AthenaCommon.SystemOfUnits import ns
95  theLArAutoCorrTotalCondAlg.deltaBunch=int(flags.Beam.BunchSpacing/( 25.*ns)+0.5)
96  theLArAutoCorrTotalCondAlg.isSuperCell=flags.LArCalib.isSC
97  theLArAutoCorrTotalCondAlg.isMC=False
98  theLArAutoCorrTotalCondAlg.LArAutoCorrObjKey="LArAutoCorr"
99  theLArAutoCorrTotalCondAlg.LArAutoCorrTotalObjKey="LArPhysAutoCorr"
100  theLArAutoCorrTotalCondAlg.LArOnOffIdMappingObjKey=mapKey
101  theLArAutoCorrTotalCondAlg.LArPedestalObjKey="LArPedestal"
102  if flags.LArCalib.isSC:
103  theLArAutoCorrTotalCondAlg.LArShapeObjKey = "LArShapeSC"
104  theLArAutoCorrTotalCondAlg.LArfSamplObjKey = "LArfSamplSC"
105  theLArAutoCorrTotalCondAlg.LArMinBiasObjKey = "LArMinBiasSC"
106 
107  result.addCondAlgo(theLArAutoCorrTotalCondAlg)
108 
109  result.addEventAlgo(CompFactory.LArAutoCorrAlgToDB(GroupingType=flags.LArCalib.GroupingType,
110  NMinbias=nColl,isSC=flags.LArCalib.isSC))
111 
112 
113  #Ntuple writing
114  rootfile=flags.LArCalib.Output.ROOTFile
115  if rootfile != "":
116  result.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey="LArPhysAutoCorr",OffId=True,isSC=flags.LArCalib.isSC,
117  BadChanKey=bcKey, AddCalib=True))
118  import os
119  if os.path.exists(rootfile):
120  os.remove(rootfile)
121  result.addService(CompFactory.NTupleSvc(Output = [ "FILE1 DATAFILE='"+rootfile+"' OPT='NEW'" ]))
122  result.setAppProperty("HistogramPersistency","ROOT")
123  pass # end if ROOT ntuple writing
124 
125 
126 
127  from RegistrationServices.OutputConditionsAlgConfig import OutputConditionsAlgCfg
128  result.merge(OutputConditionsAlgCfg(flags,
129  outputFile=flags.LArCalib.Output.POOLFile,
130  ObjectList=["LArAutoCorrComplete#LArPhysAutoCorr#"+flags.LArCalib.PhysAutoCorr.Folder,],
131  IOVTagList=[PhysAutoCorrTag,],
132  Run1=flags.LArCalib.IOVStart,
133  Run2=flags.LArCalib.IOVEnd
134  ))
135 
136 
137  #RegistrationSvc
138  result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders = False))
139  result.getService("IOVDbSvc").DBInstance=""
140 
141 
142  #MC Event selector since we have no input data file
143  from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
144  result.merge(McEventSelectorCfg(flags,
145  RunNumber = flags.LArCalib.Input.RunNumbers[0],
146  EventsPerRun = 1,
147  FirstEvent = 1,
148  InitialTimeStamp = 0,
149  TimeStampInterval = 1))
150 
151 
152  from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg
153  result.merge(PerfMonMTSvcCfg(flags))
154 
155  return result
156 
157 
158 
159 
160 if __name__ == "__main__":
161 
162  import sys
163  from AthenaConfiguration.AllConfigFlags import initConfigFlags
164  ConfigFlags=initConfigFlags()
165  from LArCalibProcessing.LArCalibConfigFlags import addLArCalibFlags
166  addLArCalibFlags(ConfigFlags)
167  from AthenaConfiguration.TestDefaults import defaultGeometryTags
168 
169  ConfigFlags.Input.Files=[]
170  ConfigFlags.LArCalib.Input.RunNumbers=[400939,]
171  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"
172  ConfigFlags.LArCalib.Input.SubDet="EM"
173  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"
174  ConfigFlags.LArCalib.BadChannelTag="-RUN2-UPD3-00"
175  ConfigFlags.LArCalib.Output.ROOTFile="physAC.root"
176  ConfigFlags.IOVDb.DatabaseInstance="CONDBR2"
177  ConfigFlags.IOVDb.DBConnection="sqlite://;schema=output.sqlite;dbname=CONDBR2"
178  ConfigFlags.IOVDb.GlobalTag="LARCALIB-RUN2-02"
179  ConfigFlags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
180  #ConfigFlags.Exec.OutputLevel=1
181  ConfigFlags.LArCalib.OFC.Ncoll=20
182  ConfigFlags.LArCalib.OFC.Nsamples=5
183 
184  ConfigFlags.fillFromArgs()
185  ConfigFlags.lock()
186 
187  cfg=MainServicesCfg(ConfigFlags)
188  cfg.merge(LArPileUpAutoCorrCfg(ConfigFlags))
189 
190 
191  print("Folders:")
192  print(cfg.getService("IOVDbSvc").Folders)
193  print("ADC2MeV:")
194  print(cfg.getCondAlgo("LArADC2MeVCondAlg"))
195  print("AutoCorrTotal:")
196  print(cfg.getCondAlgo("LArAutoCorrTotalCondAlg"))
197 
198 
199  print("Start running...")
200  sys.exit(cfg.run(1).isFailure())
python.LArElecCalibDBConfig.LArElecCalibDBCfg
def LArElecCalibDBCfg(flags, condObjs)
Definition: LArElecCalibDBConfig.py:47
SystemOfUnits
python.LArElecCalibDBConfig.LArElecCalibDBMCSCCfg
def LArElecCalibDBMCSCCfg(flags, folders, detdb="LAR_OFL")
Definition: LArElecCalibDBConfig.py:241
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
OutputConditionsAlgConfig.OutputConditionsAlgCfg
def OutputConditionsAlgCfg(flags, name="OutputConditionsAlg", outputFile='condobjs.root', **kwargs)
Definition: OutputConditionsAlgConfig.py:5
python.PerfMonCompsConfig.PerfMonMTSvcCfg
def PerfMonMTSvcCfg(flags, **kwargs)
A minimal new-style configuration for PerfMonMTSvc.
Definition: PerfMonCompsConfig.py:10
python.LArElecCalibDBConfig.LArMinBiasSymAlg
LArMinBiasSymAlg
Definition: LArElecCalibDBConfig.py:13
python.LArCalibBaseConfig.chanSelStr
def chanSelStr(flags)
Definition: LArCalibBaseConfig.py:33
python.LArElecCalibDBConfig.LArShapeSymAlg
LArShapeSymAlg
Definition: LArElecCalibDBConfig.py:19
python.LArCalib_PileUpAutoCorrConfig.LArPileUpAutoCorrCfg
def LArPileUpAutoCorrCfg(flags)
Definition: LArCalib_PileUpAutoCorrConfig.py:7
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:260
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
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.LArCalibBaseConfig.LArCalibBaseCfg
def LArCalibBaseCfg(flags)
Definition: LArCalibBaseConfig.py:5
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.LArElecCalibDBConfig.LArElecCalibDBSCCfg
def LArElecCalibDBSCCfg(flags, condObjs, sqlite=None)
Definition: LArElecCalibDBConfig.py:126
python.LArCalibConfigFlags.addLArCalibFlags
def addLArCalibFlags(flags, isSC=False)
Definition: LArCalibConfigFlags.py:3
python.LArElecCalibDBConfig.LArfSamplSymAlg
LArfSamplSymAlg
Definition: LArElecCalibDBConfig.py:16