File indexing completed on 2025-08-06 08:12:50
0001 from optparse import OptionParser
0002 import time
0003 import os
0004 import pwd
0005 import sys
0006 import re
0007
0008 def dir_empty(dir_path):
0009 return not any((True for _ in os.scandir(dir_path)))
0010
0011 if __name__ == '__main__':
0012 parser = OptionParser(usage="usage: %prog ver [options -h]")
0013 parser.add_option("-d", "--data", dest="data", action="store_true", default=False, help="Is data or simulation")
0014 parser.add_option("-i", "--runInttData", dest="runInttData", action="store_true", default=False, help="Run INTT data (MBD data otherwise)")
0015 parser.add_option("-r", "--runnumber", dest="runnumber", default=20869, help="Run number")
0016 parser.add_option("-p", "--productiontag", dest="productiontag", default="ProdA_2023", help="Production tag")
0017 parser.add_option("-g", "--generator", dest="generator", default="HIJING", help="Generator type (HIJING, EPOS, AMPT, SIMPLE)")
0018 parser.add_option("-n", "--eventPerJob", dest="eventPerJob", default=200, help="Number of events per job")
0019 parser.add_option("-j", "--nJob", dest="nJob", default=400, help="Number of jobs (queues)")
0020 parser.add_option("-o", "--outputdir", dest="outputdir", default="HIJING_ana398_zvtx-20cm_dummyAlignParams", help="Output directory (full path required)")
0021 parser.add_option("-s", "--softwareversion", dest="softwareversion", default="new", help="Software version (new, ana.3xx)")
0022 parser.add_option("-c", "--submitcondor", dest="submitcondor", action="store_true", default=False, help="Submit condor jobs")
0023
0024 (opt, args) = parser.parse_args()
0025 print('opt: {}'.format(opt))
0026
0027 data = opt.data
0028 runInttData = opt.runInttData
0029 runnumber = int(opt.runnumber)
0030 productiontag = opt.productiontag
0031 generator = opt.generator
0032 eventPerJob = int(opt.eventPerJob)
0033 nJob = int(opt.nJob)
0034 outputdir = opt.outputdir
0035 softwareversion = opt.softwareversion
0036 submitcondor = opt.submitcondor
0037
0038 parentdir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
0039 os.makedirs(outputdir, exist_ok=True)
0040 os.makedirs('./condorLog/', exist_ok=True)
0041 if not dir_empty('./condorLog/'):
0042 os.system('rm ./condorLog/*')
0043
0044 submitfilelabel = ''
0045 if data:
0046 submitfilelabel = 'DataINTT' if runInttData else 'DataMBD'
0047 else:
0048 submitfilelabel = 'Sim{}'.format(generator)
0049 condorFileName = "submitCondor_process{}.job".format(submitfilelabel)
0050 condorFile = open("{}".format(condorFileName), "w")
0051 condorFile.write("Universe = vanilla\n")
0052 condorFile.write("initialDir = {}\n".format(parentdir))
0053 condorFile.write("Executable = $(initialDir)/production_INTT.sh\n".format(parentdir))
0054 condorFile.write("PeriodicHold = (NumJobStarts>=1 && JobStatus == 1)\n")
0055 condorFile.write("request_memory = 10GB\n")
0056 condorFile.write("Priority = 20\n")
0057 condorFile.write("job_lease_duration = 3600\n")
0058 condorFile.write("runData = {}\n".format(1 if data else 0))
0059 condorFile.write("runInttData = {}\n".format(1 if runInttData else 0))
0060 condorFile.write("runnumber = {}\n".format(runnumber))
0061 condorFile.write("productiontag = {}\n".format(productiontag))
0062 condorFile.write("generator = {}\n".format(generator))
0063 condorFile.write("nEvents = {}\n".format(eventPerJob))
0064 condorFile.write("Myindex = $(Process)\n")
0065 condorFile.write("Extension = $INT(Myindex,%05d)\n")
0066 condorFile.write("softwareversion = {}\n".format(softwareversion))
0067 condorFile.write("filename = {}/ntuple_$(Extension).root\n".format(outputdir))
0068 condorFile.write("Output = $(initialDir)/condor/condorLog/process{}_$(Process).out\n".format('Data' if data else 'Sim{}'.format(generator)))
0069 condorFile.write("Error = $(initialDir)/condor/condorLog/process{}_$(Process).err\n".format('Data' if data else 'Sim{}'.format(generator)))
0070 condorFile.write("Log = $(initialDir)/condor/condorLog/process{}_$(Process).log\n".format('Data' if data else 'Sim{}'.format(generator)))
0071 condorFile.write("Arguments = \"$(runData) $(runInttData) $(runnumber) $(productiontag) $(generator) $(nEvents) $(filename) $(Process) $(softwareversion)\"\n")
0072 condorFile.write("Queue {}\n".format(nJob))
0073 condorFile.close()
0074
0075 if submitcondor:
0076 cmd = 'condor_submit ' + condorFileName
0077 os.system(cmd)