File indexing completed on 2024-11-28 23:10:44
0001
0002 """
0003 _RunAlcaSkimming_
0004
0005 Test wrapper to generate an alca skimming config and push it into cmsRun for
0006 testing with a few input files etc from the command line
0007
0008 """
0009
0010 import sys
0011 import getopt
0012 import pickle
0013
0014 from Configuration.DataProcessing.GetScenario import getScenario
0015
0016
0017
0018 class RunAlcaSkimming:
0019
0020 def __init__(self):
0021 self.scenario = None
0022 self.skims = []
0023 self.inputLFN = None
0024
0025 def __call__(self):
0026 if self.scenario == None:
0027 msg = "No --scenario specified"
0028 raise RuntimeError(msg)
0029 if self.inputLFN == None:
0030 msg = "No --lfn specified"
0031 raise RuntimeError(msg)
0032
0033 if len(self.skims) == 0:
0034 msg = "No --skims provided, need at least one"
0035 raise RuntimeError(msg)
0036
0037 if self.globalTag == None:
0038 msg = "No --global-tag specified"
0039 raise RuntimeError(msg)
0040
0041 try:
0042 scenario = getScenario(self.scenario)
0043 except Exception as ex:
0044 msg = "Error getting Scenario implementation for %s\n" % (
0045 self.scenario,)
0046 msg += str(ex)
0047 raise RuntimeError(msg)
0048
0049 print("Retrieved Scenario: %s" % self.scenario)
0050 print("Creating ALCA skimming config with skims:")
0051 for skim in self.skims:
0052 print(" => %s" % skim)
0053
0054 try:
0055 process = scenario.alcaSkim(self.skims, globaltag = self.globalTag)
0056 except NotImplementedError as ex:
0057 print("This scenario does not support Alca Skimming:\n")
0058 return
0059 except Exception as ex:
0060 msg = "Error creating Alca Skimming config:\n"
0061 msg += str(ex)
0062 raise RuntimeError(msg)
0063
0064 process.source.fileNames.append(self.inputLFN)
0065
0066 import FWCore.ParameterSet.Config as cms
0067
0068 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10) )
0069
0070 pklFile = open("RunAlcaSkimmingCfg.pkl", "wb")
0071 psetFile = open("RunAlcaSkimmingCfg.py", "w")
0072 try:
0073 pickle.dump(process, pklFile, protocol=0)
0074 psetFile.write("import FWCore.ParameterSet.Config as cms\n")
0075 psetFile.write("import pickle\n")
0076 psetFile.write("handle = open('RunAlcaSkimmingCfg.pkl','rb')\n")
0077 psetFile.write("process = pickle.load(handle)\n")
0078 psetFile.write("handle.close()\n")
0079 psetFile.close()
0080 except Exception as ex:
0081 print("Error writing out PSet:")
0082 print(traceback.format_exc())
0083 raise ex
0084 finally:
0085 psetFile.close()
0086 pklFile.close()
0087
0088 cmsRun = "cmsRun -e RunAlcaSkimmingCfg.py"
0089 print("Now do:\n%s" % cmsRun)
0090
0091
0092
0093 if __name__ == '__main__':
0094 valid = ["scenario=", "skims=", "lfn=","global-tag="]
0095
0096 usage = \
0097 """
0098 RunAlcaSkimming.py <options>
0099
0100 Where options are:
0101 --scenario=ScenarioName
0102 --lfn=/store/input/lfn
0103 --skims=comma,separated,list
0104 --global-tag=GlobalTag
0105
0106 Example:
0107 python2.4 RunAlcaSkimming.py --scenario=Cosmics --lfn=/store/whatever --skims=MuAlStandAloneCosmics
0108
0109 """
0110 try:
0111 opts, args = getopt.getopt(sys.argv[1:], "", valid)
0112 except getopt.GetoptError as ex:
0113 print(usage)
0114 print(str(ex))
0115 sys.exit(1)
0116
0117
0118 skimmer = RunAlcaSkimming()
0119
0120 for opt, arg in opts:
0121 if opt == "--scenario":
0122 skimmer.scenario = arg
0123 if opt == "--lfn" :
0124 skimmer.inputLFN = arg
0125 if opt == "--skims":
0126 skimmer.skims = [ x for x in arg.split('+') if len(x) > 0 ]
0127 if opt == "--global-tag":
0128 skimmer.globalTag = arg
0129
0130 skimmer()