23    def testCombination(self): 
   24        """Run the test fit"""
 
   26        testFile = tempfile.NamedTemporaryFile()
 
   27        # make logging more reproducible by replacing some strings.
 
   28        # Also make sure the testfile name is replaced if necessary
 
   29        b2test_utils.configure_logging_for_tests({testFile.name: "${testfile}"})
 
   31        basf2.set_random_seed("1234")
 
   32        main = basf2.create_path()
 
   33        inputfile = b2test_utils.require_file(
 
   34            'analysis/tests/mdst.root', py_case=self)
 
   37            inputFileNames=[inputfile],
 
   38            logLevel=basf2.LogLevel.ERROR)
 
   40        ma.fillParticleList('pi+:fromPV', 'dr < 2 and abs(dz) < 5', path=main)
 
   42        ma.variablesToExtraInfo('pi+:fromPV', {'medianValueInList(pi+:fromPV, dz)': 'medianDZ'}, path=main)
 
   43        variables.addAlias('medianDzFromPV', 'extraInfo(medianDZ)')
 
   44        variables.addAlias('dzFromMedianDz', 'formula(dz - medianDzFromPV)')
 
   45        ma.applyCuts('pi+:fromPV', 'abs(dzFromMedianDz) < 0.05', path=main)
 
   47        ma.combineAllParticles(['pi+:fromPV'], 'vpho:PVFit', path=main)
 
   49        kFit('vpho:PVFit', conf_level=-1, fit_type='vertex', constraint='iptube', path=main)
 
   51        variables.addAlias('PVX', 'x')
 
   52        variables.addAlias('PVY', 'y')
 
   53        variables.addAlias('PVZ', 'z')
 
   54        variables.addAlias('nGoodTracksFromPV', 'nParticlesInList(pi+:fromPV)')
 
   58            particleList='vpho:PVFit',
 
   59            fileName=testFile.name,
 
   68        ma.summaryOfLists(['vpho:PVFit'], path=main)
 
   72        ntuplefile = TFile(testFile.name)
 
   73        ntuple = ntuplefile.Get('ntuple')
 
   75        self.assertFalse(ntuple.GetEntries() == 0, "Ntuple is empty.")
 
   77        converged = ntuple.GetEntries("chiProb > 0")
 
   79        self.assertFalse(converged == 0, "No fit converged.")
 
   81        print("Test passed, cleaning up.")