17 runListDir =
"./YearStats-common"
19 parser = argparse.ArgumentParser(description=
'')
20 parser.add_argument(
'-y',
'--year',dest=
'parser_year',default =
"2024",help=
'Year [Default: 2024].',action=
'store')
21 parser.add_argument(
'-t',
'--tag',dest=
'parser_tag',help=
'DeMo tag',action=
'store')
22 parser.add_argument(
'-s',
'--system',dest=
'parser_system',default=
"",help=
'System: LAr, CaloCP... [Default : all systems : LAr,Pixel,SCT,TRT,Tile,MDT,TGC,RPC,Trig_L1,Trig_HLT,Lumi,Global,ALFA,AFP,LUCID,ZDC,IDGlobal,BTag,CaloCP,MuonCP]',action=
'store')
23 parser.add_argument(
'--description',dest=
'parser_description',default =
"",help=
'Short description for DeMo plots',action=
'store')
24 parser.add_argument(
'--defectTag',dest=
'parser_defectTag',default =
"",help=
'Defect tag',action=
'store')
25 parser.add_argument(
'--vetoTag',dest=
'parser_vetoTag',default =
"",help=
'Veto tag (relevant only for LAr)',action=
'store')
26 parser.add_argument(
'--oflLumiTag',dest=
'parser_oflLumiTag',default =
"",help=
'Veto tag (relevant only for LAr)',action=
'store')
27 parser.add_argument(
'--oflLumiAcctTag',dest=
'parser_oflLumiAcctTag',default =
"",help=
'Veto tag (relevant only for LAr)',action=
'store')
28 parser.add_argument(
'--xmlGRL',dest=
'parser_xmlGRL',default =
"",help=
'xml good run list used to create a run list in YearStats-common. Files stored on the web (starting with https) are allowed',action=
'store')
30 args = parser.parse_args()
34 if args.parser_system ==
"":
35 systems = [
"LAr",
"Pixel",
"SCT",
"TRT",
"Tile",
"MDT",
"TGC",
"RPC",
"Trig_L1",
"Trig_HLT",
"Lumi",
"Global",
"ALFA",
"AFP",
"LUCID",
"ZDC",
"IDGlobal",
"BTag",
"CaloCP",
"MuonCP"]
37 systems.append(args.parser_system)
39 b_createDeMoConfig =
True
41 configFilename =
"%s/%s/DeMoConfig-%s-%s.dat"%(runListDir,args.parser_year,args.parser_year,args.parser_tag)
42 if os.path.exists(configFilename):
43 print(
"Warning: this year/tag apparently already exists. As the database tags must be uniform among systems, I will keep the already defined tags:")
44 os.system(
"cat %s"%configFilename)
45 confirm = input(
"Please type OK to agree and proceed with the creation of missing system directories: ")
46 b_createDeMoConfig =
False
47 if (
"OK" not in confirm):
52 if b_createDeMoConfig:
53 print(
"=========== Treatment of tags")
54 config =
open(configFilename,
'w')
56 if (args.parser_description) ==
"":
57 tmp_d = args.parser_tag
58 print(
"No description provided. Tag name used -> %s"%tmp_d)
60 tmp_d = args.parser_description
61 config.write(
"Description: %s\n"%tmp_d)
63 if (args.parser_defectTag) ==
"":
64 if (args.parser_year ==
"2015"): tmp_d =
"DetStatus-v105-pro22-13"
65 elif (args.parser_year ==
"2016"): tmp_d =
"DetStatus-v105-pro22-13"
66 elif (args.parser_year ==
"2017"): tmp_d =
"DetStatus-v105-pro22-13"
67 elif (args.parser_year ==
"2018"): tmp_d =
"DetStatus-v105-pro22-13"
68 elif (args.parser_year ==
"2022"): tmp_d =
"HEAD"
69 elif (args.parser_year ==
"2023"): tmp_d =
"HEAD"
70 elif (args.parser_year ==
"2024"): tmp_d =
"HEAD"
71 print(
"No defect tag provided. Default year tag used -> %s"%tmp_d)
73 tmp_d = args.parser_defectTag
74 config.write(
"Defect tag: %s\n"%tmp_d)
76 if (args.parser_vetoTag) ==
"":
77 if (args.parser_year ==
"2015" or args.parser_year ==
"2016" or args.parser_year ==
"2017" or args.parser_year ==
"2018"): tmp_d =
"LARBadChannelsOflEventVeto-RUN2-UPD4-11"
78 elif (args.parser_year ==
"2022"): tmp_d =
"LARBadChannelsOflEventVeto-RUN2-UPD4-11"
79 elif (args.parser_year ==
"2023"): tmp_d =
"LARBadChannelsOflEventVeto-RUN2-UPD4-11"
80 elif (args.parser_year ==
"2024"): tmp_d =
"LARBadChannelsOflEventVeto-RUN2-UPD4-13"
81 print(
"No veto tag provided. Default year tag used -> %s"%tmp_d)
83 tmp_d = args.parser_vetoTag
84 config.write(
"Veto tag: %s\n"%tmp_d)
86 if (args.parser_oflLumiTag) ==
"":
87 if (args.parser_year ==
"2015"): tmp_d =
"OflLumi-13TeV-004"
88 elif (args.parser_year ==
"2016"): tmp_d =
"OflLumi-13TeV-009"
89 elif (args.parser_year ==
"2017"): tmp_d =
"OflLumi-13TeV-010"
90 elif (args.parser_year ==
"2018"): tmp_d =
"OflLumi-13TeV-010"
91 elif (args.parser_year ==
"2022"): tmp_d =
"OflLumi-Run3-002"
92 elif (args.parser_year ==
"2023"): tmp_d =
"OflLumi-Run3-002"
93 elif (args.parser_year ==
"2024"): tmp_d =
"OflPrefLumi-RUN3-UPD4-02"
94 print(
"No oflLumi tag provided. Default year tag used -> %s"%tmp_d)
96 tmp_d = args.parser_oflLumiTag
97 config.write(
"OflLumi tag: %s\n"%tmp_d)
99 if (args.parser_oflLumiAcctTag) ==
"":
100 if (args.parser_year ==
"2015" or args.parser_year ==
"2016" or args.parser_year ==
"2017" or args.parser_year ==
"2018"): tmp_d =
"Unknown"
101 elif (args.parser_year ==
"2022"): tmp_d =
"OflLumiAcct-Run3-002"
102 elif (args.parser_year ==
"2023"): tmp_d =
"OflLumiAcct-Run3-002"
103 elif (args.parser_year ==
"2024"): tmp_d =
"OflLumiAcct-Run3-005"
104 print(
"No OflLumiAcct tag provided. Default year tag used -> %s"%tmp_d)
106 tmp_d = args.parser_oflLumiAcctTag
107 config.write(
"OflLumiAcct tag: %s\n"%tmp_d)
112 for iSystem
in systems:
113 print(
"== System: %s"%iSystem)
114 direct =
"YearStats-%s"%iSystem
115 if not os.path.exists(direct):
116 print(
"%s system directory does not exists. Creating it"%direct)
117 os.system(
"mkdir %s"%direct)
119 direct =
"YearStats-%s/%s"%(iSystem,args.parser_year)
120 if not os.path.exists(direct):
121 print(
"%s year directory does not exists. Creating it"%direct)
122 os.system(
"mkdir %s"%direct)
124 direct =
"YearStats-%s/%s/%s"%(iSystem,args.parser_year,args.parser_tag)
125 if not os.path.exists(direct):
126 print(
"%s tag directory does not exists. Creating it"%direct)
127 os.system(
"mkdir %s"%direct)
128 os.system(
"mkdir %s/Run"%direct)
129 os.system(
"mkdir %s/Weekly"%direct)
133 print(
"=========== Treatment of run list")
134 newRunListName =
"%s/%s/runlist-%s-%s.dat"%(runListDir,args.parser_year,args.parser_year,args.parser_tag)
136 if args.parser_xmlGRL !=
"":
137 if "https" in args.parser_xmlGRL:
138 os.system(
"wget %s -P %s"%(args.parser_xmlGRL,runListDir))
139 file_xmlGRL =
open(
"%s/%s"%(runListDir,args.parser_xmlGRL.split(
"/")[-1]))
141 file_xmlGRL =
open(args.parser_xmlGRL)
143 newRunList =
open(newRunListName,
'w')
145 for iline
in file_xmlGRL.readlines():
146 if (
"<Run>" in iline
and "</Run>" in iline):
147 runNumber = (iline.split(
"<Run>")[1]).
split(
"</Run>")[0]
148 newRunList.write(
"%s\n"%runNumber)
152 if not os.path.exists(newRunListName):
153 print(
"Warning: the %s file does not exist yet. Please create it by hand or with the --xmlGRL option."%newRunListName)