13import modularAnalysis 
as ma
 
   16path = b2.create_path()
 
   19ma.inputMdst(filename=b2.find_file(
'mdst16.root', 
'validation', 
False),
 
   23b2.conditions.prepend_globaltag(ma.getAnalysisGlobaltag())
 
   27particles = fei.get_default_channels(removeSLD=
True)
 
   30configuration = fei.config.FeiConfiguration(prefix=
'FEIv1_2025_MC16ri_aldebaran_200', training=
False, monitor=
False, cache=0)
 
   33feistate = fei.get_path(particles, configuration)
 
   36path.add_path(feistate.path)
 
   39path.add_module(
'MCMatcherParticles', listName=
'B+:generic', looseMCMatching=
True)
 
   40path.add_module(
'MCMatcherParticles', listName=
'B+:semileptonic', looseMCMatching=
True)
 
   41path.add_module(
'MCMatcherParticles', listName=
'B0:generic', looseMCMatching=
True)
 
   42path.add_module(
'MCMatcherParticles', listName=
'B0:semileptonic', looseMCMatching=
True)
 
   44commonVariables = [
'mcErrors', 
'extraInfo(decayModeID)', 
'extraInfo(uniqueSignal)', 
'extraInfo(SignalProbability)']
 
   45genericVariables = [
'Mbc', 
'deltaE', 
'isSignal'] + commonVariables
 
   46semiLeptonicVariables = [
'cosThetaBetweenParticleAndNominalB', 
'isSignalAcceptMissingNeutrino'] + commonVariables
 
   49ma.variablesToNtuple(
'B+:generic',
 
   52                     filename=
'B_charged_hadronic.root',
 
   54ma.variablesToNtuple(
'B+:semileptonic',
 
   55                     semiLeptonicVariables,
 
   57                     filename=
'B_charged_semileptonic.root',
 
   60ma.variablesToNtuple(
'B0:generic',
 
   63                     filename=
'B_mixed_hadronic.root',
 
   65ma.variablesToNtuple(
'B0:semileptonic',
 
   66                     semiLeptonicVariables,
 
   68                     filename=
'B_mixed_semileptonic.root',
 
   72b2.process(path, max_event=100)