Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:12:07

0001 from optparse import OptionParser
0002 import time
0003 import os
0004 import pwd
0005 import sys
0006 import re
0007 import shutil
0008 
0009 def dir_empty(dir_path):
0010     return not any((True for _ in os.scandir(dir_path)))
0011 
0012 if __name__ == '__main__':
0013     parser = OptionParser(usage="usage: %prog ver [options -h]")
0014     parser.add_option("--isdata", dest="isdata", action="store_true", default=False, help="Is data")
0015     parser.add_option("--filedesc", dest="filedesc", default='HIJING_ana398_xvtx-0p04cm_yvtx0p24cm_zvtx-20cm_dummyAlignParams', help="File description")
0016     parser.add_option("--nEvents", dest="nEvents", default=200, help="Number of events per job")
0017     parser.add_option("--nJob", dest="nJob", default=400, help="nJob")
0018     parser.add_option("--drcut", dest="drcut", default=0.5, help="Delta R cut for tracklets")
0019     parser.add_option("--randomvtxz", dest="randomvtxz", action="store_true", default=False, help="Randomize vtx z (for geometric acceptance correction)")
0020     parser.add_option("--randomclusset", dest="randomclusset", default=0, help="Random cluster set (for systematic uncertainty)")
0021     parser.add_option("--clusadccutset", dest="clusadccutset", default=0, help="Cluster ADC cut set (for systematic uncertainty)")
0022     parser.add_option("--clusphisizecutset", dest="clusphisizecutset", default=0, help="Cluster phisize cut set (for systematic uncertainty)")
0023     parser.add_option("--submitcondor", dest="submitcondor", action="store_true", default=False, help="Submit condor jobs")
0024 
0025     (opt, args) = parser.parse_args()
0026     print('opt: {}'.format(opt)) 
0027 
0028     isdata = opt.isdata
0029     filedesc = opt.filedesc
0030     nEvents = int(opt.nEvents)
0031     drcut = float(opt.drcut)
0032     nJob = int(opt.nJob)
0033     randomvtxz = opt.randomvtxz
0034     randomclusset = int(opt.randomclusset)
0035     clusadccutset = int(opt.clusadccutset)
0036     clusphisizecutset = int(opt.clusphisizecutset)
0037     submitcondor = opt.submitcondor
0038     username = pwd.getpwuid(os.getuid())[0]
0039 
0040     twolevelup = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir))
0041     infiledir = '{}/production/{}'.format(twolevelup, filedesc)
0042     print ('infiledir: {}'.format(infiledir))
0043     parentdir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
0044     tgspacedir = '/sphenix/tg/tg01/hf/hjheng/ppg02'
0045     finaloutfiledir = '{}/minitree/TrackletMinitree_{}/{}'.format(tgspacedir, filedesc, 'dRcut'+str(drcut).replace('.', 'p')+('_RandomVtxZ' if randomvtxz else '_NominalVtxZ')+('_RandomClusSet'+str(randomclusset))+('_clusAdcCutSet'+str(clusadccutset))+('_clusPhiSizeCutSet'+str(clusphisizecutset)))
0046     print ('finaloutfiledir: {}'.format(finaloutfiledir))
0047     os.makedirs(finaloutfiledir, exist_ok=True)
0048 
0049     if os.path.exists('./log_recotracklet/'):
0050         try:
0051             os.system('find ./log_recotracklet/ -type f -delete')
0052         except Exception as e:
0053             print('Failed to delete ./log_recotracklet/. Reason: %s' % e)
0054     os.makedirs('./log_recotracklet/', exist_ok=True)
0055 
0056     condorFileName = "submitCondor_recotracklet_{}_{}.job".format('data' if isdata else 'sim', 'dRcut'+str(drcut).replace('.', 'p')+('_RandomVtxZ' if randomvtxz else '_NominalVtxZ')+('_RandomClusSet'+str(randomclusset))+('_clusAdcCutSet'+str(clusadccutset))+('_clusPhiSizeCutSet'+str(clusphisizecutset)))
0057     condorFile = open("{}".format(condorFileName), "w")
0058     condorFile.write("Universe           = vanilla\n")
0059     condorFile.write("InitialDir         = {}\n".format(parentdir))
0060     condorFile.write("Executable         = $(InitialDir)/condor_recotracklet.sh\n")
0061     condorFile.write("PeriodicHold       = (NumJobStarts>=1 && JobStatus == 1)\n")
0062     # condorFile.write("concurrency_limits = CONCURRENCY_LIMIT_DEFAULT:100\n")
0063     if isdata:
0064         condorFile.write("request_memory       = 6GB\n")
0065     else:
0066         condorFile.write("request_memory       = 4GB\n")
0067     condorFile.write("Priority           = 20\n")
0068     condorFile.write("job_lease_duration = 3600\n")
0069     condorFile.write("Myindex            = $(Process)\n")
0070     condorFile.write("Extension          = $INT(Myindex,%05d)\n")
0071     condorFile.write("isdata             = {}\n".format(1 if isdata else 0))
0072     condorFile.write("evtvtxmap          = {}/minitree/VtxEvtMap_{}/minitree_$(Extension).root\n".format(parentdir, filedesc))
0073     if isdata:
0074         condorFile.write("infilename         = /sphenix/tg/tg01/hf/hjheng/ppg02/dst/{}/ntuple_wEvtBcoDiff_$(Extension).root\n".format(filedesc))
0075     else:
0076         condorFile.write("infilename         = /sphenix/tg/tg01/hf/hjheng/ppg02/dst/{}/ntuple_$(Extension).root\n".format(filedesc))
0077         
0078     condorFile.write("outfilename        = {}/minitree_$(Extension).root\n".format(finaloutfiledir))
0079     condorFile.write("nevt               = {}\n".format(nEvents))
0080     condorFile.write("drcut              = {:.3g}\n".format(drcut))
0081     condorFile.write("randomvtxz         = {}\n".format(1 if randomvtxz else 0))
0082     condorFile.write("randomclusset      = {}\n".format(randomclusset))
0083     condorFile.write("clusadccutset      = {}\n".format(clusadccutset))
0084     condorFile.write("clusphisizecutset  = {}\n".format(clusphisizecutset))
0085     condorFile.write("Output             = $(Initialdir)/condor/log_recotracklet/condorlog_$(Process).out\n")
0086     condorFile.write("Error              = $(Initialdir)/condor/log_recotracklet/condorlog_$(Process).err\n")
0087     # condorFile.write("Log                = $(Initialdir)/condor/log_recotracklet/condorlog_$(Process).log\n")
0088     condorFile.write("Log                = /tmp/condorlog_hjheng_recotracklet_$(Process).log\n")
0089     condorFile.write("Arguments          = \"$(isdata) $(evtvtxmap) $(infilename) $(outfilename) $(nevt) $(drcut) $(randomvtxz) $(randomclusset) $(clusadccutset) $(clusphisizecutset)\"\n")
0090     condorFile.write("Queue {}\n".format(nJob))
0091     condorFile.close() # Close the file before submitting the job
0092 
0093     if submitcondor:
0094         cmd = 'condor_submit ' + condorFileName
0095         os.system(cmd)