diff --git a/CombineTools/input/job_prefixes/job_prefix_ic.txt b/CombineTools/input/job_prefixes/job_prefix_ic.txt new file mode 100644 index 00000000000..39779800651 --- /dev/null +++ b/CombineTools/input/job_prefixes/job_prefix_ic.txt @@ -0,0 +1,7 @@ +#!/bin/sh +ulimit -s unlimited +cd %(CMSSW_BASE)s/src +export SCRAM_ARCH=%(SCRAM_ARCH)s +source /vols/cms/grid/setup.sh +eval `scramv1 runtime -sh` +cd %(PWD)s diff --git a/CombineTools/input/job_prefixes/job_prefix_naf.txt b/CombineTools/input/job_prefixes/job_prefix_naf.txt new file mode 100644 index 00000000000..5c9d7c0ff56 --- /dev/null +++ b/CombineTools/input/job_prefixes/job_prefix_naf.txt @@ -0,0 +1,18 @@ +#!/bin/sh +ulimit -s unlimited +cd %(CMSSW_BASE)s/src +linux_ver=`lsb_release -s -r` +echo $linux_ver +if [[ $linux_ver < 6.0 ]]; +then + eval "`/afs/desy.de/common/etc/local/ini/ini.pl cmssw_cvmfs`" + export SCRAM_ARCH=slc5_amd64_gcc472 + export SCRAM_ARCH=%(SCRAM_ARCH)s +else + source /cvmfs/cms.cern.ch/cmsset_default.sh + export SCRAM_ARCH=slc6_amd64_gcc472 + export SCRAM_ARCH=%(SCRAM_ARCH)s +fi + +eval `scramv1 runtime -sh` +cd %(PWD)s diff --git a/CombineTools/python/combine/CombineToolBase.py b/CombineTools/python/combine/CombineToolBase.py index 2c7fc56ddf3..e7bbaadf9e7 100755 --- a/CombineTools/python/combine/CombineToolBase.py +++ b/CombineTools/python/combine/CombineToolBase.py @@ -17,29 +17,6 @@ 'PWD': os.environ['PWD'] }) -JOB_NAF_PREFIX = """#!/bin/sh -ulimit -s unlimited -cd %(CMSSW_BASE)s/src -linux_ver=`lsb_release -s -r` -echo $linux_ver -if [[ $linux_ver < 6.0 ]]; -then - eval "`/afs/desy.de/common/etc/local/ini/ini.pl cmssw_cvmfs`" - export SCRAM_ARCH=slc5_amd64_gcc472 - export SCRAM_ARCH=%(SCRAM_ARCH)s -else - source /cvmfs/cms.cern.ch/cmsset_default.sh - export SCRAM_ARCH=slc6_amd64_gcc472 - export SCRAM_ARCH=%(SCRAM_ARCH)s -fi - -eval `scramv1 runtime -sh` -cd %(PWD)s -""" % ({ - 'CMSSW_BASE': os.environ['CMSSW_BASE'], - 'SCRAM_ARCH': os.environ['SCRAM_ARCH'], - 'PWD': os.environ['PWD'] -}) CRAB_PREFIX = """ set -x @@ -100,6 +77,7 @@ def __init__(self): self.args = None self.passthru = [] self.job_mode = 'interactive' + self.prefix_file = '' self.parallel = 1 self.merge = 1 self.task_name = 'combine_task' @@ -109,7 +87,9 @@ def __init__(self): def attach_job_args(self, group): group.add_argument('--job-mode', default=self.job_mode, choices=[ - 'interactive', 'script', 'lxbatch', 'NAF', 'crab3'], help='Task execution mode') + 'interactive', 'script', 'lxbatch', 'SGE', 'crab3'], help='Task execution mode') + group.add_argument('--prefix-file', default=self.prefix_file, + help='Path to file containing job prefix') group.add_argument('--task-name', default=self.task_name, help='Task name, used for job script and log filenames for batch system tasks') group.add_argument('--parallel', type=int, default=self.parallel, @@ -136,6 +116,7 @@ def attach_args(self, group): def set_args(self, known, unknown): self.args = known self.job_mode = self.args.job_mode + self.prefix_file = self.args.prefix_file self.task_name = self.args.task_name self.parallel = self.args.parallel self.merge = self.args.merge @@ -167,10 +148,7 @@ def create_job_script(self, commands, script_filename, do_log = False): fname = script_filename logname = script_filename.replace('.sh', '.log') with open(fname, "w") as text_file: - if self.job_mode == 'NAF': - text_file.write(JOB_NAF_PREFIX) - else: - text_file.write(JOB_PREFIX) + text_file.write(JOB_PREFIX) for i, command in enumerate(commands): tee = 'tee' if i == 0 else 'tee -a' log_part = '\n' @@ -207,7 +185,19 @@ def flush_queue(self): result = pool.map( partial(run_command, self.dry_run), self.job_queue) script_list = [] - if self.job_mode in ['script', 'lxbatch', 'NAF']: + if self.job_mode in ['script', 'lxbatch', 'SGE']: + if self.prefix_file != '': + if self.prefix_file.endswith('.txt'): + job_prefix_file = open(self.prefix_file,'r') + else : + job_prefix_file = open(os.environ['CMSSW_BASE']+"/src/CombineHarvester/CombineTools/input/job_prefixes/job_prefix_"+self.prefix_file+".txt",'r') + global JOB_PREFIX + JOB_PREFIX=job_prefix_file.read() %({ + 'CMSSW_BASE': os.environ['CMSSW_BASE'], + 'SCRAM_ARCH': os.environ['SCRAM_ARCH'], + 'PWD': os.environ['PWD'] + }) + job_prefix_file.close() for i, j in enumerate(range(0, len(self.job_queue), self.merge)): script_name = 'job_%s_%i.sh' % (self.task_name, i) # each job is given a slice from the list of combine commands of length 'merge' @@ -221,7 +211,7 @@ def flush_queue(self): full_script = os.path.abspath(script) logname = full_script.replace('.sh', '_%J.log') run_command(self.dry_run, 'bsub -o %s %s %s' % (logname, self.bopts, full_script)) - if self.job_mode == 'NAF': + if self.job_mode == 'SGE': for script in script_list: full_script = os.path.abspath(script) logname = full_script.replace('.sh', '_%J.log') diff --git a/CombineTools/src/CombineHarvester_Python.cc b/CombineTools/src/CombineHarvester_Python.cc index 80669ca8085..d4d43ce4d56 100644 --- a/CombineTools/src/CombineHarvester_Python.cc +++ b/CombineTools/src/CombineHarvester_Python.cc @@ -316,6 +316,8 @@ BOOST_PYTHON_MODULE(libCombineHarvesterCombineTools) .def("InsertObservation", &CombineHarvester::InsertObservation) .def("InsertProcess", &CombineHarvester::InsertProcess) .def("InsertSystematic", &CombineHarvester::InsertSystematic) + .def("AddWorkspace", &CombineHarvester::AddWorkspace) + .def("ExtractPdfs", &CombineHarvester::ExtractPdfs) ; py::class_("Object")