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)