Ejemplo n.º 1
0
    def test_complex_mass_scheme(self):
        """check that auto-width and Madspin works nicely with complex-mass-scheme"""
        mg_cmd = MGCmd.MasterCmd()
        mg_cmd.no_notification()
        mg_cmd.exec_cmd('set automatic_html_opening False --save')
        mg_cmd.exec_cmd('set complex_mass_scheme', precmd=True)
        mg_cmd.exec_cmd('generate g g  > t t~', precmd=True)
        mg_cmd.exec_cmd('output %s' % self.run_dir, precmd=True)

        self.cmd_line = MECmd.MadEventCmdShell(me_dir=self.run_dir)
        self.cmd_line.no_notification()
        self.cmd_line.exec_cmd('set automatic_html_opening False')

        #modify run_card
        run_card = banner_mod.RunCard(
            pjoin(self.run_dir, 'Cards', 'run_card.dat'))
        run_card.set('nevents', 100)
        run_card.write(pjoin(self.run_dir, 'Cards', 'run_card.dat'))

        # check the auto-width
        self.cmd_line.exec_cmd('compute_widths 6 -f')

        # check value for the width
        import models.check_param_card as check_param_card
        param_card = check_param_card.ParamCard(
            pjoin(self.run_dir, 'Cards', 'param_card.dat'))
        self.assertTrue(misc.equal(1.491257, param_card['decay'].get(6).value),
                        3)

        # generate events
        self.cmd_line.exec_cmd('launch -f')
        val1 = self.cmd_line.results.current['cross']
        err1 = self.cmd_line.results.current['error']
        target = 440.779
        self.assertTrue(misc.equal(target, val1, 4 * err1))

        # run madspin
        fsock = open(pjoin(self.run_dir, 'Cards', 'madspin_card.dat'), 'w')
        fsock.write('decay t > w+ b \n launch')
        fsock.close()

        self.cmd_line.exec_cmd('decay_events run_01 -f')
        val1 = self.cmd_line.results.current['cross']
        err1 = self.cmd_line.results.current['error']
        target = 440.779
        self.assertTrue(misc.equal(target, val1, 4 * err1))
Ejemplo n.º 2
0
 def create_diff(self, new_card):
     """return a text file allowing to pass from this card to the new one
        via the set command"""
     
     diff = ''
     for blockname, block in self.items():
         for param in block:
             lhacode = param.lhacode
             value = param.value
             new_value = new_card[blockname].get(lhacode).value
             if not misc.equal(value, new_value, 6, zero_limit=False):
                 lhacode = ' '.join([str(i) for i in lhacode])
                 diff += 'set param_card %s %s %s # orig: %s\n' % \
                                    (blockname, lhacode , new_value, value)
     return diff 
Ejemplo n.º 3
0
    def create_diff(self, new_card):
        """return a text file allowing to pass from this card to the new one
           via the set command"""

        diff = ''
        for blockname, block in self.items():
            for param in block:
                lhacode = param.lhacode
                value = param.value
                new_value = new_card[blockname].get(lhacode).value
                if not misc.equal(value, new_value, 6, zero_limit=False):
                    lhacode = ' '.join([str(i) for i in lhacode])
                    diff += 'set param_card %s %s %s # orig: %s\n' % \
                                       (blockname, lhacode , new_value, value)
        return diff