Back to home page

sPhenix code displayed by LXR

 
 

    


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() # Close the file before submitting the job
0074 
0075     if submitcondor:
0076         cmd = 'condor_submit ' + condorFileName
0077         os.system(cmd)