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 numpy as np
0008
0009 def dir_empty(dir_path):
0010 return not any((True for _ in os.scandir(dir_path)))
0011
0012
0013 if __name__ == '__main__':
0014 parser = OptionParser(usage="usage: %prog ver [options -h]")
0015 parser.add_option("-d", "--isdata", dest="isdata", action="store_true", default=False, help="Is data")
0016 parser.add_option("-f", "--filedesc", dest="filedesc", default='ana398_xvtx-0p04cm_yvtx0p24cm_zvtx-20cm_dummyAlignParams', help="File description")
0017 parser.add_option("-n", "--nevents", dest="nevents", default=400, help="Number of events to process")
0018 parser.add_option("-p", "--dphicut", dest="dphicut", default=0.03, help="Delta phi cut [degree]")
0019 parser.add_option("-c", "--dcacut", dest="dcacut", default=0.15, help="DCA cut [cm]")
0020 parser.add_option("-g", "--debug", dest="debug", action="store_true", default=False, help="Debug mode")
0021 parser.add_option("-m", "--makedemoplot", dest="makedemoplot", action="store_true", default=False, help="Make demo plots")
0022 parser.add_option("-j", "--nJob", dest="nJob", default=400, help="nJob")
0023 parser.add_option("-s", "--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 dphicut = float(opt.dphicut)
0032 dcacut = float(opt.dcacut)
0033 debug = opt.debug
0034 makedemoplot = opt.makedemoplot
0035 nJob = int(opt.nJob)
0036 submitcondor = opt.submitcondor
0037 username = pwd.getpwuid(os.getuid())[0]
0038
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 finaloutfiledir = '{}/minitree/VtxEvtMap_{}'.format(parentdir, filedesc)
0045 print ('finaloutfiledir: {}'.format(finaloutfiledir))
0046 os.makedirs(finaloutfiledir, exist_ok=True)
0047
0048 os.makedirs('./log_recovtxz/', exist_ok=True)
0049 if not dir_empty('./log_recovtxz/'):
0050 os.system('rm -rf ./log_recovtxz/')
0051 os.makedirs('./log_recovtxz/', exist_ok=True)
0052
0053
0054 os.system('hadd -f -j 20 {}/minitree/BeamspotMinitree_{}/minitree_merged.root {}/minitree/BeamspotMinitree_{}/minitree_0*.root'.format(parentdir, filedesc, parentdir, filedesc))
0055
0056 condorFileName = "submitCondor_recovtxz_{}.job".format('data' if isdata else 'sim')
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_recovtxz.sh\n")
0061 condorFile.write("PeriodicHold = (NumJobStarts>=1 && JobStatus == 1)\n")
0062
0063 condorFile.write("request_memory = 4GB\n")
0064 condorFile.write("Priority = 20\n")
0065 condorFile.write("job_lease_duration = 3600\n")
0066 condorFile.write("Myindex = $(Process)\n")
0067 condorFile.write("Extension = $INT(Myindex,%05d)\n")
0068 condorFile.write("isdata = {}\n".format(1 if isdata else 0))
0069 condorFile.write("nevt = {}\n".format(nevents))
0070 condorFile.write("dphicut = {}\n".format(dphicut * (np.pi / 180.)))
0071 condorFile.write("dcacut = {}\n".format(dcacut))
0072 condorFile.write("bsresfilepath = {}/minitree/BeamspotMinitree_{}/\n".format(parentdir, filedesc))
0073 if isdata:
0074 condorFile.write("infilename = /sphenix/tg/tg01/hf/hjheng/ppg02/dst/{}/ntuple_$(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 condorFile.write("outfilename = {}/minitree_$(Extension).root\n".format(finaloutfiledir))
0078 condorFile.write("demoplotpath = ./plot/RecoPV_demo/RecoPV_{}/{}\n".format('data' if isdata else 'sim', filedesc))
0079 condorFile.write("debug = {}\n".format(1 if debug else 0))
0080 condorFile.write("makedemoplot = {}\n".format(1 if makedemoplot else 0))
0081 condorFile.write("Output = $(Initialdir)/condor/log_recovtxz/condorlog_$(Process).out\n")
0082 condorFile.write("Error = $(Initialdir)/condor/log_recovtxz/condorlog_$(Process).err\n")
0083
0084 condorFile.write("Log = /tmp/condorlog_hjheng_recovtx_$(Process).log\n")
0085 condorFile.write("Arguments = \"$(isdata) $(nevt) $(dphicut) $(dcacut) $(bsresfilepath) $(infilename) $(outfilename) $(demoplotpath) $(debug) $(makedemoplot)\"\n")
0086 condorFile.write("Queue {}\n".format(nJob))
0087 condorFile.close()
0088
0089 if submitcondor:
0090 cmd = 'condor_submit ' + condorFileName
0091 os.system(cmd)