pdict['beam_input_2']['USER_spectrum_on'] = 'T' pdict['beam_input_2']['ISR_on'] = 'T' pdict['beam_input_2']['USER_spectrum_mode'] = -spectrum pdict['beam_input_2']['EPA_on'] = proddict['epa_b2'] prod_name+= "_"+proddict['pname1']+proddict['epa_b1']+"_"+proddict['pname2']+proddict['epa_b2'] wh.setFullParameterDict(pdict) #wh.setGlobalEvtType("aa_e3e3nn") #process = "aa_e3e3nn" if globname: wh.setGlobalEvtType(globname) process = globname if whcutdict: wh.setGeneratorLevelCuts(whcutdict) if cut: wh.willCut() if gridfiles: wh.usingGridFiles() if javacut: stdhepc = StdhepCutJava() stdhepc.setVersion('1.0') else: stdhepc = StdhepCut() stdhepc.setVersion("V7") if cut and not cutfile: print "No cut file defined, cannot proceed"
class TestWhizard(unittest.TestCase): """ Tests the Whizard class """ EXPECTED_PRINTOUT = '&process_input\n process_id = ""\n cm_frame = T\n sqrts = 3000\n luminosity = 0\n polarized_beams = T\n structured_beams = T\n beam_recoil = F\n recoil_conserve_momentum = F\n filename = "whizard"\n directory = ""\n input_file = ""\n input_slha_format = F\n/\n&integration_input\n calls = 1 50000 10 50000 1 1500000\n seed = \n reset_seed_each_process = F\n accuracy_goal = 0\n efficiency_goal = 100\n time_limit_adaptation = 0\n stratified = T\n use_efficiency = F\n weights_power = 0.25\n min_bins = 3\n max_bins = 20\n min_calls_per_bin = 10\n min_calls_per_channel = 0\n write_grids = T\n write_grids_raw = F\n write_grids_file = ""\n write_all_grids = F\n write_all_grids_file = ""\n read_grids = F\n read_grids_raw = F\n read_grids_force = T\n read_grids_file = ""\n generate_phase_space = T\n read_model_file = ""\n write_phase_space_file = ""\n read_phase_space = T\n read_phase_space_file = ""\n phase_space_only = F\n use_equivalences = T\n azimuthal_dependence = F\n write_phase_space_channels_file = ""\n off_shell_lines = 1\n extra_off_shell_lines = 1\n splitting_depth = 1\n exchange_lines = 3\n show_deleted_channels = F\n single_off_shell_decays = T\n double_off_shell_decays = F\n single_off_shell_branchings = T\n double_off_shell_branchings = T\n massive_fsr = T\n threshold_mass = -10\n threshold_mass_t = -10\n default_jet_cut = 10\n default_mass_cut = 4\n default_energy_cut = 10\n default_q_cut = 4\n write_default_cuts_file = ""\n read_cuts_file = ""\n user_cut_mode = 0\n user_weight_mode = 0\n/\n&simulation_input\n n_events = 0\n n_calls = 0\n n_events_warmup = 0\n unweighted = T\n normalize_weight = T\n write_weights = F\n write_weights_file = ""\n safety_factor = 1\n write_events = T\n write_events_format = 20\n write_events_file = ""\n events_per_file = 5000000\n bytes_per_file = 0\n min_file_count = 1\n max_file_count = 999\n write_events_raw = F\n write_events_raw_file = ""\n read_events = F\n read_events_force = T\n read_events_raw_file = ""\n keep_beam_remnants = T\n keep_initials = T\n guess_color_flow = F\n recalculate = F\n fragment = T\n fragmentation_method = 3\n user_fragmentation_mode = 0\n pythia_parameters = "PMAS(25,1)=120.; PMAS(25,2)=0.3605E-02; MSTU(22)=20 ;MSTJ(28)=2 ;PARJ(21)=0.40000;PARJ(41)=0.11000; PARJ(42)=0.52000; PARJ(81)=0.25000; PARJ(82)=1.90000; MSTJ(11)=3; PARJ(54)=-0.03100; PARJ(55)=-0.00200;PARJ(1)=0.08500; PARJ(3)=0.45000; PARJ(4)=0.02500; PARJ(2)=0.31000; PARJ(11)=0.60000; PARJ(12)=0.40000; PARJ(13)=0.72000;PARJ(14)=0.43000; PARJ(15)=0.08000; PARJ(16)=0.08000; PARJ(17)=0.17000; MSTP(3)=1;"\n pythia_processes = ""\n shower = F\n shower_nf = 5\n shower_running_alpha_s = F\n shower_alpha_s = 0.2\n shower_lambda = 0.29\n shower_t_min = 1.0\n shower_md = 0.330\n shower_mu = 0.330\n shower_ms = 0.500\n shower_mc = 1.5\n shower_mb = 4.8\n/\n&diagnostics_input\n chattiness = 4\n catch_signals = T\n time_limit = 0\n warn_empty_channel = F\n screen_events = F\n screen_histograms = F\n screen_diagnostics = F\n show_pythia_banner = T\n show_pythia_initialization = T\n show_pythia_statistics = T\n write_logfile = T\n write_logfile_file = ""\n show_input = T\n show_results = T\n show_phase_space = F\n show_cuts = T\n show_histories = F\n show_history = T\n show_weights = T\n show_event = F\n show_histograms = F\n show_overflow = F\n show_excess = T\n read_analysis_file = ""\n plot_width = 130\n plot_height = 90\n plot_excess = T\n plot_history = T\n plot_grids_channels = ""\n plot_grids_logscale = 10\n slha_rewrite_input = T\n slha_ignore_errors = F\n/\n¶meter_input\n/\n&beam_input\n energy = 0\n angle = 0\n direction = 0 0 0\n vector_polarization = F\n polarization = 0.0 0.0\n particle_code = 0\n particle_name = "e1"\n USER_spectrum_on = T\n USER_spectrum_mode = 11\n ISR_on = T\n ISR_alpha = 0.0072993\n ISR_m_in = 0.000511\n ISR_LLA_order = 3\n ISR_map = T\n EPA_on = F\n EPA_map = T\n EPA_alpha = 0.0072993\n EPA_m_in = 0.000511\n EPA_mX = 4\n EPA_Q_max = 4\n EPA_x0 = 0\n EPA_x1 = 0\n/\n&beam_input\n energy = 0\n angle = 0\n direction = 0 0 0\n vector_polarization = F\n polarization = 0.0 0.0\n particle_code = 0\n particle_name = "E1"\n USER_spectrum_on = T\n USER_spectrum_mode = -11\n ISR_on = T\n ISR_alpha = 0.0072993\n ISR_m_in = 0.000511\n ISR_LLA_order = 3\n ISR_map = T\n EPA_on = F\n EPA_map = T\n EPA_alpha = 0.0072993\n EPA_m_in = 0.000511\n EPA_mX = 4\n EPA_Q_max = 4\n EPA_x0 = 0\n EPA_x1 = 0\n/' def setUp(self): self.whiz = Whizard() def test_getters(self): from ILCDIRAC.Core.Utilities.WhizardOptions import WhizardOptions expected_pdict = { 'OK': True, 'Value': { 'integration_input': {}, 'simulation_input': {}, 'diagnostics_input': {}, 'process_input': {}, 'beam_input_1': {}, 'beam_input_2': {} } } pdict = self.whiz.getPDict() self.whiz.setEvtType('myevent_test') self.assertIsNotNone(pdict) self.whiz.setGlobalEvtType('test_myglobalevt') self.whiz.setLuminosity(138.312) self.whiz.setRandomSeed(9024) self.whiz.setParameterDict({ 'mytestval': True, 'more_entres': 'value', 'something': 9103 }) self.whiz.setGeneratorLevelCuts({ 'generator': False, 'cuts': 123, 'level': 'OK' }) assert not self.whiz.willBeCut self.whiz.willCut() assert not self.whiz.useGridFiles self.whiz.usingGridFiles() self.whiz.setJobIndex('mytestJobIndexS&P500') self.whiz.setModel('mytestSModel') self.whiz._wo = WhizardOptions(self.whiz.model) with patch('__builtin__.open', mock_open(), create=True) as mo: self.whiz.addedtojob = True self.whiz.dumpWhizardDotIn('someFile.in') self.whiz.addedtojob = False mo.assert_called_once_with('someFile.in', 'w') assertMockCalls(mo().write, [TestWhizard.EXPECTED_PRINTOUT, '\n'], self) assertEqualsImproved( (pdict, self.whiz.eventType, self.whiz.globalEventType, self.whiz.luminosity, self.whiz.randomSeed, self.whiz.parameterDict, self.whiz.generatorLevelCuts, self.whiz.willBeCut, self.whiz.useGridFiles, self.whiz.jobIndex, self.whiz.model), (expected_pdict, 'myevent_test', 'test_myglobalevt', 138.312, 9024, { 'mytestval': True, 'more_entres': 'value', 'something': 9103 }, { 'generator': False, 'cuts': 123, 'level': 'OK' }, True, True, 'mytestJobIndexS&P500', 'mytestSModel'), self) assert not self.whiz._errorDict def test_setevttype_nostring(self): assert not self.whiz._errorDict self.whiz.setEvtType(123) assertEqualsImproved(self.whiz.eventType, 123, self) assert self.whiz._errorDict def test_setevttype_already_added(self): self.whiz.addedtojob = True assertDiracFailsWith( self.whiz.setEvtType( 'myothertestevent' ), \ 'cannot modify', self ) def test_dumpwhizarddotin(self): assert not self.whiz._errorDict self.whiz.dumpWhizardDotIn() assert self.whiz._errorDict def test_setfullparamdict(self): self.whiz.setFullParameterDict({ 'some_entry': True, 'myParamDict': {}, 123: 2 }) assert not self.whiz._errorDict assertEqualsImproved(self.whiz.fullParameterDict, { 'some_entry': True, 'myParamDict': {}, 123: 2 }, self) def test_setfullparamdict_wrongtype(self): assert not self.whiz._errorDict self.whiz.setFullParameterDict('eihnff') assert self.whiz._errorDict def test_checkconsistency(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': 'myprocessid', 'sqrts': 81 }, 'simulation_input': { 'n_events': 41 } }) plist_mock = Mock() plist_mock.existsProcess.return_value = S_OK(True) plist_mock.getCSPath.return_value = 'some_dir/some_cs_path/whizardv874.tgz' self.whiz._processlist = plist_mock self.whiz._generatormodels.models['sm'] = True assertDiracSucceeds(self.whiz._checkConsistency(), self) def test_checkconsistency_noenergy(self): assertDiracFailsWith(self.whiz._checkConsistency(), 'energy not set', self) def test_checkconsistency_nonbevts(self): self.whiz.energy = 'blabla' assertDiracFailsWith(self.whiz._checkConsistency(), 'number of events not set', self) def test_checkconsistency_noprocess(self): self.whiz.energy = 'blabla' self.whiz.numberOfEvents = 13 assertDiracFailsWith(self.whiz._checkConsistency(), 'process not defined', self) def test_checkconsistency_noprocesslist(self): self.whiz.energy = 'blabla' self.whiz.numberOfEvents = 13 self.whiz.eventType = 'mytype' assertDiracFailsWith(self.whiz._checkConsistency(), 'process list was not given', self) def test_checkconsistency_checkfields_fails(self): self.whiz.setFullParameterDict({'something': 'something_else'}) assertDiracFailsWith( self.whiz._checkConsistency(), 'element something is not in the allowed parameters', self) def test_checkconsistency_noevttype(self): self.whiz.setFullParameterDict({'process_input': {'process_id': ''}}) assertDiracFailsWith(self.whiz._checkConsistency(), 'event type not specified', self) def test_checkconsistency_energyzero(self): self.whiz.setFullParameterDict( {'process_input': { 'process_id': '', 'sqrts': 0 }}) self.whiz.eventType = 'some_test_evttype' self.whiz.energy = 0 assertDiracFailsWith(self.whiz._checkConsistency(), 'energy set to 0', self) def test_checkconsistency_nbevts_zero(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': '', 'sqrts': 0 }, 'simulation_input': { 'n_events': 0 } }) self.whiz.eventType = 'some_test_evttype' self.whiz.energy = 341 self.whiz.numberOfEvents = 0 assertDiracFailsWith(self.whiz._checkConsistency(), 'number of events set to 0', self) def test_checkconsistency_genlevelcut_invalid(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': '', 'sqrts': 0 }, 'simulation_input': { 'n_events': 0 } }) self.whiz.eventType = 'some_test_evttype' self.whiz.energy = 341 self.whiz.numberOfEvents = 1235 self.whiz._processlist = Mock() self.whiz.setGeneratorLevelCuts({'something': True}) assertDiracFailsWith(self.whiz._checkConsistency(), 'type of True is not a list', self) def test_checkconsistency_noglobalevt(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': 'process_1 some_test_process more_stuff', 'sqrts': 0 }, 'simulation_input': { 'n_events': 0 } }) self.whiz.setEvtType('some_test_evttype other_types ignore_us') self.whiz.setGlobalEvtType('') self.whiz.energy = 341 self.whiz.numberOfEvents = 1235 self.whiz._processlist = Mock() self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracFailsWith(self.whiz._checkConsistency(), 'global name must be defined', self) def test_checkconsistency_process_not_found(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': 'process_1 some_test_process more_stuff', 'sqrts': 0 }, 'simulation_input': { 'n_events': 0 } }) self.whiz.setEvtType('some_test_evttype other_types ignore_us') self.whiz.setGlobalEvtType('myGlobalTestEvent') self.whiz.energy = 341 self.whiz.numberOfEvents = 1235 exists_dict = {'process_1': True, 'some_test_process': False} plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process: S_OK( exists_dict[process]) self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracFailsWith(self.whiz._checkConsistency(), 'process some_test_process does not exist', self) def test_checkconsistency_process_version_incompatible(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': 'process_1 some_test_process more_stuff', 'sqrts': 0 }, 'simulation_input': { 'n_events': 0 } }) self.whiz.setEvtType('some_test_evttype other_types ignore_us') self.whiz.setGlobalEvtType('myGlobalTestEvent') self.whiz.energy = 341 self.whiz.version = 'v248' self.whiz.numberOfEvents = 1235 exists_dict = {'process_1': True, 'some_test_process': True} plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process: S_OK( exists_dict[process]) plist_mock.getCSPath.side_effect = [ 'some_dir/whizardv248.tgz', 'whizard418.tar.gz' ] self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracFailsWith(self.whiz._checkConsistency(), 'not available in the same whizard version', self) def test_checkconsistency_unknownmodel(self): self.whiz.setFullParameterDict({ 'process_input': { 'process_id': 'process_1 some_test_process more_stuff', 'sqrts': 0 }, 'simulation_input': { 'n_events': 0 } }) self.whiz.setEvtType('some_test_evttype other_types ignore_us') self.whiz.setGlobalEvtType('myGlobalTestEvent') self.whiz.energy = 341 self.whiz.model = 'myObscureModel' self.whiz.version = '248' self.whiz.numberOfEvents = 1235 exists_dict = { 'process_1': True, 'some_test_process': True, 'more_stuff': True } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process: S_OK( exists_dict[process]) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracFailsWith(self.whiz._checkConsistency(), 'unknown model myobscuremodel', self) def test_checkconsistency_illegaloutputfile(self): self.whiz.setFullParameterDict({'integration_input': {}}) self.whiz.setEvtType('some_type') self.whiz.globalEventType = '' self.whiz.energy = 341 self.whiz.model = '' self.whiz.version = '248' self.whiz.outputFile = 'some_dir/more_dirs/output.file' self.whiz.numberOfEvents = 1235 exists_dict = {'some_type': True} plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process: S_OK( exists_dict[process]) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracFailsWith(self.whiz._checkConsistency(), 'is a file name, not a path', self) def test_checkconsistency_unknownparam(self): self.whiz.setFullParameterDict({}) self.whiz.setEvtType('some_type') self.whiz.setParameterDict({'illegal_key': 'illegal_value'}) self.whiz.globalEventType = '' self.whiz.energy = 341 self.whiz.model = '' self.whiz.version = '248' self.whiz.outputFile = '' self.whiz.numberOfEvents = 1235 exists_dict = {'some_type': True} plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process: S_OK( exists_dict[process]) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._jobtype = 'User' self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracFailsWith(self.whiz._checkConsistency(), 'unknown parameter illegal_key', self) def test_checkconsistency_cornercases(self): self.whiz.setFullParameterDict({}) self.whiz.setEvtType('some_type') self.whiz.setParameterDict({'PNAME1': 'mytestpname'}) self.whiz.globalEventType = '' self.whiz.energy = 341 self.whiz.model = '' self.whiz.version = '248' self.whiz.outputFile = 'output.file' self.whiz.numberOfEvents = 1235 exists_dict = {'some_type': True} plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process: S_OK( exists_dict[process]) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._jobtype = 'User' self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts({'some_test_process': ['testlist']}) assertDiracSucceeds(self.whiz._checkConsistency(), self) def test_applicationmodule(self): result = self.whiz._applicationModule() self.assertIsNotNone(result) def test_applicationmodulevalues(self): module_mock = Mock() self.whiz._applicationModuleValues(module_mock) self.assertTrue(module_mock.setValue.called) assertEqualsImproved(len(module_mock.mock_calls), 11, self) def test_userjobmodules(self): module_mock = Mock() assertDiracSucceeds(self.whiz._userjobmodules(module_mock), self) def test_prodjobmodules(self): module_mock = Mock() assertDiracSucceeds(self.whiz._prodjobmodules(module_mock), self) def test_userjobmodules_fails(self): with patch('%s._setUserJobFinalization' % MODULE_NAME, new=Mock(return_value=S_OK('something'))),\ patch('%s._setApplicationModuleAndParameters' % MODULE_NAME, new=Mock(return_value=S_ERROR('some_test_err'))): assertDiracFailsWith(self.whiz._userjobmodules(None), 'userjobmodules failed', self) def test_prodjobmodules_fails(self): with patch('%s._setApplicationModuleAndParameters' % MODULE_NAME, new=Mock(return_value=S_OK('something'))), \ patch('%s._setOutputComputeDataList' % MODULE_NAME, new=Mock(return_value=S_ERROR('some_other_test_err'))): assertDiracFailsWith(self.whiz._prodjobmodules(None), 'prodjobmodules failed', self)
class TestWhizard( unittest.TestCase ): """ Tests the Whizard class """ EXPECTED_PRINTOUT = '&process_input\n process_id = ""\n cm_frame = T\n sqrts = 3000\n luminosity = 0\n polarized_beams = T\n structured_beams = T\n beam_recoil = F\n recoil_conserve_momentum = F\n filename = "whizard"\n directory = ""\n input_file = ""\n input_slha_format = F\n/\n&integration_input\n calls = 1 50000 10 50000 1 1500000\n seed = \n reset_seed_each_process = F\n accuracy_goal = 0\n efficiency_goal = 100\n time_limit_adaptation = 0\n stratified = T\n use_efficiency = F\n weights_power = 0.25\n min_bins = 3\n max_bins = 20\n min_calls_per_bin = 10\n min_calls_per_channel = 0\n write_grids = T\n write_grids_raw = F\n write_grids_file = ""\n write_all_grids = F\n write_all_grids_file = ""\n read_grids = F\n read_grids_raw = F\n read_grids_force = T\n read_grids_file = ""\n generate_phase_space = T\n read_model_file = ""\n write_phase_space_file = ""\n read_phase_space = T\n read_phase_space_file = ""\n phase_space_only = F\n use_equivalences = T\n azimuthal_dependence = F\n write_phase_space_channels_file = ""\n off_shell_lines = 1\n extra_off_shell_lines = 1\n splitting_depth = 1\n exchange_lines = 3\n show_deleted_channels = F\n single_off_shell_decays = T\n double_off_shell_decays = F\n single_off_shell_branchings = T\n double_off_shell_branchings = T\n massive_fsr = T\n threshold_mass = -10\n threshold_mass_t = -10\n default_jet_cut = 10\n default_mass_cut = 4\n default_energy_cut = 10\n default_q_cut = 4\n write_default_cuts_file = ""\n read_cuts_file = ""\n user_cut_mode = 0\n user_weight_mode = 0\n/\n&simulation_input\n n_events = 0\n n_calls = 0\n n_events_warmup = 0\n unweighted = T\n normalize_weight = T\n write_weights = F\n write_weights_file = ""\n safety_factor = 1\n write_events = T\n write_events_format = 20\n write_events_file = ""\n events_per_file = 5000000\n bytes_per_file = 0\n min_file_count = 1\n max_file_count = 999\n write_events_raw = F\n write_events_raw_file = ""\n read_events = F\n read_events_force = T\n read_events_raw_file = ""\n keep_beam_remnants = T\n keep_initials = T\n guess_color_flow = F\n recalculate = F\n fragment = T\n fragmentation_method = 3\n user_fragmentation_mode = 0\n pythia_parameters = "PMAS(25,1)=120.; PMAS(25,2)=0.3605E-02; MSTU(22)=20 ;MSTJ(28)=2 ;PARJ(21)=0.40000;PARJ(41)=0.11000; PARJ(42)=0.52000; PARJ(81)=0.25000; PARJ(82)=1.90000; MSTJ(11)=3; PARJ(54)=-0.03100; PARJ(55)=-0.00200;PARJ(1)=0.08500; PARJ(3)=0.45000; PARJ(4)=0.02500; PARJ(2)=0.31000; PARJ(11)=0.60000; PARJ(12)=0.40000; PARJ(13)=0.72000;PARJ(14)=0.43000; PARJ(15)=0.08000; PARJ(16)=0.08000; PARJ(17)=0.17000; MSTP(3)=1;"\n pythia_processes = ""\n shower = F\n shower_nf = 5\n shower_running_alpha_s = F\n shower_alpha_s = 0.2\n shower_lambda = 0.29\n shower_t_min = 1.0\n shower_md = 0.330\n shower_mu = 0.330\n shower_ms = 0.500\n shower_mc = 1.5\n shower_mb = 4.8\n/\n&diagnostics_input\n chattiness = 4\n catch_signals = T\n time_limit = 0\n warn_empty_channel = F\n screen_events = F\n screen_histograms = F\n screen_diagnostics = F\n show_pythia_banner = T\n show_pythia_initialization = T\n show_pythia_statistics = T\n write_logfile = T\n write_logfile_file = ""\n show_input = T\n show_results = T\n show_phase_space = F\n show_cuts = T\n show_histories = F\n show_history = T\n show_weights = T\n show_event = F\n show_histograms = F\n show_overflow = F\n show_excess = T\n read_analysis_file = ""\n plot_width = 130\n plot_height = 90\n plot_excess = T\n plot_history = T\n plot_grids_channels = ""\n plot_grids_logscale = 10\n slha_rewrite_input = T\n slha_ignore_errors = F\n/\n¶meter_input\n/\n&beam_input\n energy = 0\n angle = 0\n direction = 0 0 0\n vector_polarization = F\n polarization = 0.0 0.0\n particle_code = 0\n particle_name = "e1"\n USER_spectrum_on = T\n USER_spectrum_mode = 11\n ISR_on = T\n ISR_alpha = 0.0072993\n ISR_m_in = 0.000511\n ISR_LLA_order = 3\n ISR_map = T\n EPA_on = F\n EPA_map = T\n EPA_alpha = 0.0072993\n EPA_m_in = 0.000511\n EPA_mX = 4\n EPA_Q_max = 4\n EPA_x0 = 0\n EPA_x1 = 0\n/\n&beam_input\n energy = 0\n angle = 0\n direction = 0 0 0\n vector_polarization = F\n polarization = 0.0 0.0\n particle_code = 0\n particle_name = "E1"\n USER_spectrum_on = T\n USER_spectrum_mode = -11\n ISR_on = T\n ISR_alpha = 0.0072993\n ISR_m_in = 0.000511\n ISR_LLA_order = 3\n ISR_map = T\n EPA_on = F\n EPA_map = T\n EPA_alpha = 0.0072993\n EPA_m_in = 0.000511\n EPA_mX = 4\n EPA_Q_max = 4\n EPA_x0 = 0\n EPA_x1 = 0\n/' def setUp(self): self.whiz = Whizard() def test_getters( self ): from ILCDIRAC.Core.Utilities.WhizardOptions import WhizardOptions expected_pdict = { 'OK' : True, 'Value' : { 'integration_input' : {}, 'simulation_input' : {}, 'diagnostics_input' : {}, 'process_input' : {}, 'beam_input_1' : {}, 'beam_input_2' : {} } } pdict = self.whiz.getPDict() self.whiz.setEvtType( 'myevent_test' ) self.assertIsNotNone( pdict ) self.whiz.setGlobalEvtType( 'test_myglobalevt' ) self.whiz.setLuminosity( 138.312 ) self.whiz.setRandomSeed( 9024 ) self.whiz.setParameterDict( { 'mytestval' : True, 'more_entres' : 'value', 'something' : 9103 } ) self.whiz.setGeneratorLevelCuts( { 'generator' : False, 'cuts' : 123, 'level' : 'OK' } ) assert not self.whiz.willBeCut self.whiz.willCut() assert not self.whiz.useGridFiles self.whiz.usingGridFiles() self.whiz.setJobIndex( 'mytestJobIndexS&P500' ) self.whiz.setModel( 'mytestSModel' ) self.whiz._wo = WhizardOptions( self.whiz.model ) with patch('__builtin__.open', mock_open(), create=True) as mo: self.whiz.addedtojob = True self.whiz.dumpWhizardDotIn( 'someFile.in' ) self.whiz.addedtojob = False mo.assert_called_once_with( 'someFile.in', 'w' ) assertMockCalls( mo().write, [ TestWhizard.EXPECTED_PRINTOUT, '\n' ], self ) assertEqualsImproved( ( pdict, self.whiz.eventType, self.whiz.globalEventType, self.whiz.luminosity, self.whiz.randomSeed, self.whiz.parameterDict, self.whiz.generatorLevelCuts, self.whiz.willBeCut, self.whiz.useGridFiles, self.whiz.jobIndex, self.whiz.model ), ( expected_pdict, 'myevent_test', 'test_myglobalevt', 138.312, 9024, { 'mytestval' : True, 'more_entres' : 'value', 'something' : 9103 }, { 'generator' : False, 'cuts' : 123, 'level' : 'OK' }, True, True, 'mytestJobIndexS&P500', 'mytestSModel' ) , self ) assert not self.whiz._errorDict def test_setevttype_nostring( self ): assert not self.whiz._errorDict self.whiz.setEvtType( 123 ) assertEqualsImproved( self.whiz.eventType, 123, self ) assert self.whiz._errorDict def test_setevttype_already_added( self ): self.whiz.addedtojob = True assertDiracFailsWith( self.whiz.setEvtType( 'myothertestevent' ), \ 'cannot modify', self ) def test_dumpwhizarddotin( self ): assert not self.whiz._errorDict self.whiz.dumpWhizardDotIn() assert self.whiz._errorDict def test_setfullparamdict( self ): self.whiz.setFullParameterDict( { 'some_entry' : True, 'myParamDict' : {}, 123 : 2 } ) assert not self.whiz._errorDict assertEqualsImproved( self.whiz.fullParameterDict, { 'some_entry' : True, 'myParamDict' : {}, 123 : 2 }, self ) def test_setfullparamdict_wrongtype( self ): assert not self.whiz._errorDict self.whiz.setFullParameterDict( 'eihnff' ) assert self.whiz._errorDict def test_checkconsistency( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : 'myprocessid', 'sqrts' : 81 }, 'simulation_input' : { 'n_events' : 41 } } ) plist_mock = Mock() plist_mock.existsProcess.return_value = S_OK( True ) plist_mock.getCSPath.return_value = 'some_dir/some_cs_path/whizardv874.tgz' self.whiz._processlist = plist_mock self.whiz._generatormodels.models['sm'] = True assertDiracSucceeds( self.whiz._checkConsistency(), self ) def test_checkconsistency_noenergy( self ): assertDiracFailsWith( self.whiz._checkConsistency(), 'energy not set', self ) def test_checkconsistency_nonbevts( self ): self.whiz.energy = 'blabla' assertDiracFailsWith( self.whiz._checkConsistency(), 'number of events not set', self ) def test_checkconsistency_noprocess( self ): self.whiz.energy = 'blabla' self.whiz.numberOfEvents = 13 assertDiracFailsWith( self.whiz._checkConsistency(), 'process not defined', self ) def test_checkconsistency_noprocesslist( self ): self.whiz.energy = 'blabla' self.whiz.numberOfEvents = 13 self.whiz.eventType = 'mytype' assertDiracFailsWith( self.whiz._checkConsistency(), 'process list was not given', self ) def test_checkconsistency_checkfields_fails( self ): self.whiz.setFullParameterDict( { 'something' : 'something_else' } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'element something is not in the allowed parameters', self ) def test_checkconsistency_noevttype( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : '' } } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'event type not specified', self ) def test_checkconsistency_energyzero( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : '', 'sqrts' : 0 } } ) self.whiz.eventType = 'some_test_evttype' self.whiz.energy = 0 assertDiracFailsWith( self.whiz._checkConsistency(), 'energy set to 0', self ) def test_checkconsistency_nbevts_zero( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : '', 'sqrts' : 0 }, 'simulation_input' : { 'n_events' : 0 } } ) self.whiz.eventType = 'some_test_evttype' self.whiz.energy = 341 self.whiz.numberOfEvents = 0 assertDiracFailsWith( self.whiz._checkConsistency(), 'number of events set to 0', self ) def test_checkconsistency_genlevelcut_invalid( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : '', 'sqrts' : 0 }, 'simulation_input' : { 'n_events' : 0 } } ) self.whiz.eventType = 'some_test_evttype' self.whiz.energy = 341 self.whiz.numberOfEvents = 1235 self.whiz._processlist = Mock() self.whiz.setGeneratorLevelCuts( { 'something' : True } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'type of True is not a list', self ) def test_checkconsistency_noglobalevt( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : 'process_1 some_test_process more_stuff', 'sqrts' : 0 }, 'simulation_input' : { 'n_events' : 0 } } ) self.whiz.setEvtType( 'some_test_evttype other_types ignore_us' ) self.whiz.setGlobalEvtType( '' ) self.whiz.energy = 341 self.whiz.numberOfEvents = 1235 self.whiz._processlist = Mock() self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'global name must be defined', self ) def test_checkconsistency_process_not_found( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : 'process_1 some_test_process more_stuff', 'sqrts' : 0 }, 'simulation_input' : { 'n_events' : 0 } } ) self.whiz.setEvtType( 'some_test_evttype other_types ignore_us' ) self.whiz.setGlobalEvtType( 'myGlobalTestEvent' ) self.whiz.energy = 341 self.whiz.numberOfEvents = 1235 exists_dict = { 'process_1' : True, 'some_test_process' : False } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process : S_OK( exists_dict[process] ) self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'process some_test_process does not exist', self ) def test_checkconsistency_process_version_incompatible( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : 'process_1 some_test_process more_stuff', 'sqrts' : 0 }, 'simulation_input' : { 'n_events' : 0 } } ) self.whiz.setEvtType( 'some_test_evttype other_types ignore_us' ) self.whiz.setGlobalEvtType( 'myGlobalTestEvent' ) self.whiz.energy = 341 self.whiz.version = 'v248' self.whiz.numberOfEvents = 1235 exists_dict = { 'process_1' : True, 'some_test_process' : True } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process : S_OK( exists_dict[process] ) plist_mock.getCSPath.side_effect = [ 'some_dir/whizardv248.tgz', 'whizard418.tar.gz' ] self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'not available in the same whizard version', self ) def test_checkconsistency_unknownmodel( self ): self.whiz.setFullParameterDict( { 'process_input' : { 'process_id' : 'process_1 some_test_process more_stuff', 'sqrts' : 0 }, 'simulation_input' : { 'n_events' : 0 } } ) self.whiz.setEvtType( 'some_test_evttype other_types ignore_us' ) self.whiz.setGlobalEvtType( 'myGlobalTestEvent' ) self.whiz.energy = 341 self.whiz.model = 'myObscureModel' self.whiz.version = '248' self.whiz.numberOfEvents = 1235 exists_dict = { 'process_1' : True, 'some_test_process' : True, 'more_stuff' : True } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process : S_OK( exists_dict[process] ) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'unknown model myobscuremodel', self ) def test_checkconsistency_illegaloutputfile( self ): self.whiz.setFullParameterDict( { 'integration_input' : {} } ) self.whiz.setEvtType( 'some_type' ) self.whiz.globalEventType = '' self.whiz.energy = 341 self.whiz.model = '' self.whiz.version = '248' self.whiz.outputFile = 'some_dir/more_dirs/output.file' self.whiz.numberOfEvents = 1235 exists_dict = { 'some_type' : True } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process : S_OK( exists_dict[process] ) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'is a file name, not a path', self ) def test_checkconsistency_unknownparam( self ): self.whiz.setFullParameterDict( {} ) self.whiz.setEvtType( 'some_type' ) self.whiz.setParameterDict( { 'illegal_key' : 'illegal_value' } ) self.whiz.globalEventType = '' self.whiz.energy = 341 self.whiz.model = '' self.whiz.version = '248' self.whiz.outputFile = '' self.whiz.numberOfEvents = 1235 exists_dict = { 'some_type' : True } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process : S_OK( exists_dict[process] ) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._jobtype = 'User' self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracFailsWith( self.whiz._checkConsistency(), 'unknown parameter illegal_key', self ) def test_checkconsistency_cornercases( self ): self.whiz.setFullParameterDict( {} ) self.whiz.setEvtType( 'some_type' ) self.whiz.setParameterDict( { 'PNAME1' : 'mytestpname' } ) self.whiz.globalEventType = '' self.whiz.energy = 341 self.whiz.model = '' self.whiz.version = '248' self.whiz.outputFile = 'output.file' self.whiz.numberOfEvents = 1235 exists_dict = { 'some_type' : True } plist_mock = Mock() plist_mock.existsProcess.side_effect = lambda process : S_OK( exists_dict[process] ) plist_mock.getCSPath.return_value = 'some_dir/whizard248.tgz' self.whiz._generatormodels.models = {} self.whiz._jobtype = 'User' self.whiz._processlist = plist_mock self.whiz.setGeneratorLevelCuts( { 'some_test_process' : [ 'testlist' ] } ) assertDiracSucceeds( self.whiz._checkConsistency(), self ) def test_applicationmodule( self ): result = self.whiz._applicationModule() self.assertIsNotNone( result ) def test_applicationmodulevalues( self ): module_mock = Mock() self.whiz._applicationModuleValues( module_mock ) self.assertTrue( module_mock.setValue.called ) assertEqualsImproved( len(module_mock.mock_calls), 11, self ) def test_userjobmodules( self ): module_mock = Mock() assertDiracSucceeds( self.whiz._userjobmodules( module_mock ), self ) def test_prodjobmodules( self ): module_mock = Mock() assertDiracSucceeds( self.whiz._prodjobmodules( module_mock ), self ) def test_userjobmodules_fails( self ): with patch('%s._setUserJobFinalization' % MODULE_NAME, new=Mock(return_value=S_OK('something'))),\ patch('%s._setApplicationModuleAndParameters' % MODULE_NAME, new=Mock(return_value=S_ERROR('some_test_err'))): assertDiracFailsWith( self.whiz._userjobmodules( None ), 'userjobmodules failed', self ) def test_prodjobmodules_fails( self ): with patch('%s._setApplicationModuleAndParameters' % MODULE_NAME, new=Mock(return_value=S_OK('something'))), \ patch('%s._setOutputComputeDataList' % MODULE_NAME, new=Mock(return_value=S_ERROR('some_other_test_err'))): assertDiracFailsWith( self.whiz._prodjobmodules( None ), 'prodjobmodules failed', self )