Skip to content
Snippets Groups Projects
Commit c3535312 authored by Jiahui Zhuo's avatar Jiahui Zhuo :penguin: Committed by Sebastien Ponce
Browse files

Add MCPrimaries and more MC functors

parent 260cfec8
No related branches found
No related tags found
2 merge requests!1103Draft: Add AnalysisHelpers to DaVinci Stack,!815Add MCPrimaries and more MC functors
......@@ -14,7 +14,7 @@ This example is also used to test all available functor collections.
"""
from Gaudi.Configuration import INFO
from PyConf.Algorithms import WeightedRelTableAlg
from PyConf.reading import get_particles, get_mc_particles, get_mc_track_info
from PyConf.reading import get_particles, get_mc_particles, get_mc_track_info, get_mc_header
import Functors as F
from DaVinciMCTools import MCReconstructible as MCRectible, MCReconstructed as MCRected
from FunTuple import FunctorCollection, functorcollections as functorcollections_original
......@@ -39,20 +39,7 @@ class check_wrapper:
self.called.add(func.__name__)
return func
def number_of_functor_collection(self):
fc = tuple([
entry for entry in self.functorcollection.__all__
if entry not in exclude_functor_collections
])
return len(fc)
def number_of_called_functor_collection(self):
return len(self.called)
def check(self):
if self.number_of_functor_collection(
) != self.number_of_called_functor_collection():
return False
sorted_set_all = sorted(
set([
entry for entry in self.functorcollection.__all__
......@@ -60,22 +47,25 @@ class check_wrapper:
]))
sorted_set_called = sorted(self.called)
if sorted_set_all != sorted_set_called:
return False
return True
diff = sorted_set_all - sorted_set_called
raise Exception(
f"Oh no! Did you forget to add a new collection to this test? Missing collections: {diff}"
)
def main(options: Options):
line_name = 'Hlt2Charm_D0ToKmPip_Line'
d02kpi_data = get_particles(f"/Event/HLT2/{line_name}/Particles")
MC_data = get_mc_particles("/Event/HLT2/MC/Particles")
mc_data = get_mc_particles("/Event/HLT2/MC/Particles")
mc_header = get_mc_header()
# Get variables related to reconstructible information.
mcrtible = MCRectible(
input_mctrackinfo=get_mc_track_info()) # tes location of MC track info
# Get variables related to reconstructed information.
mcrted_all = MCRected(input_mcparticles=MC_data, use_best_mcmatch=True)
mcrted_all = MCRected(input_mcparticles=mc_data, use_best_mcmatch=True)
# get configured "MCTruthAndBkgCatAlg" algorithm for HLT2 output
MCTRUTH = MCTruthAndBkgCat(d02kpi_data, name='MCTruthAndBkgCat_coll')
......@@ -102,7 +92,7 @@ def main(options: Options):
FC.ParticleID()
]
MC_collections = [
mc_collections = [
FC.MCReconstructible(mcreconstructible_alg=mcrtible, extra_info=True),
FC.MCReconstructed(mcreconstructed_alg=mcrted_all, extra_info=False),
FC.MCHierarchy(),
......@@ -115,20 +105,28 @@ def main(options: Options):
FC.SelectionInfo(selection_type="Hlt2", trigger_lines=[line_name])
]
assert FC.check(
), "Oh no! Did you forget to add a new collection to this test?"
mc_evt_collections = [
FC.EventInfo(),
FC.MCPrimaries(mc_header=mc_header),
]
FC.check()
field_vars = FunctorCollection()
for coll in collections:
field_vars += coll
mc_field_vars = FunctorCollection()
for coll in mc_collections:
mc_field_vars += coll
evt_vars = FunctorCollection()
for coll in evt_collections:
evt_vars += coll
MC_field_vars = FunctorCollection()
for coll in MC_collections:
MC_field_vars += coll
mc_evt_vars = FunctorCollection()
for coll in mc_evt_collections:
mc_evt_vars += coll
fields = {
"D0": "[D0 -> K- pi+]CC",
......@@ -138,7 +136,7 @@ def main(options: Options):
#For now remove: The 'Hlt2' line decision tuples fine but breaks unit test with an error. (Why?)
#see linked issue here: https://gitlab.cern.ch/lhcb/DaVinci/-/merge_requests/654#note_5320732
print(evt_vars.pop(['Hlt2']))
evt_vars.pop(['Hlt2'])
variables = {
"D0": field_vars,
......@@ -146,10 +144,10 @@ def main(options: Options):
"piplus": field_vars,
}
MC_variables = {
"D0": MC_field_vars,
"Kminus": MC_field_vars,
"piplus": MC_field_vars,
mc_variables = {
"D0": mc_field_vars,
"Kminus": mc_field_vars,
"piplus": mc_field_vars,
}
my_tuple = Funtuple(
......@@ -166,7 +164,8 @@ def main(options: Options):
name="MCTuple",
tuple_name="DecayTree",
fields=fields,
variables=MC_variables,
inputs=MC_data)
variables=mc_variables,
event_variables=mc_evt_vars,
inputs=mc_data)
return make_config(options, [mc_tuple, my_filter, my_tuple])
return make_config(options, [my_filter, my_tuple, mc_tuple])
......@@ -12,10 +12,11 @@
Read and process a .xgen file with the new DaVinci configuration.
"""
from FunTuple import FunctorCollection, FunTuple_MCParticles as FuntupleMC
import FunTuple.functorcollections as FC
from PyConf.Algorithms import PrintMCTree
import Functors as F
from DaVinci import Options, make_config
from PyConf.reading import get_mc_particles
from PyConf.reading import get_mc_particles, get_mc_header
def main(options: Options):
......@@ -32,6 +33,7 @@ def main(options: Options):
variables_B = FunctorCollection({
'ETA': F.ETA,
'PHI': F.PHI,
"TAU": F.MC_LIFETIME,
'ORIGIN_VX': F.ORIGIN_VX,
'ORIGIN_VY': F.ORIGIN_VY,
'ORIGIN_VZ': F.ORIGIN_VZ,
......@@ -49,8 +51,13 @@ def main(options: Options):
'Bu': variables_B,
}
#FunTuple: define input data
bu2jpsik_line = get_mc_particles("/Event/MC/Particles")
#FunTuple: define event-level variables using functor collections
mc_header = get_mc_header(extra_inputs=[bu2jpsik_line])
evt_vars = FC.MCPrimaries(mc_header=mc_header)
printMC = PrintMCTree(
MCParticles=bu2jpsik_line, ParticleNames=["B+", "B-"], OutputLevel=4)
......@@ -59,6 +66,7 @@ def main(options: Options):
tuple_name="DecayTree",
fields=fields,
variables=variables,
event_variables=evt_vars,
inputs=bu2jpsik_line)
return make_config(options, {"BuJpsiK": [printMC, tuple_BuJpsiK]})
......@@ -18,6 +18,8 @@
<text>DaVinciExamples.tupling.option_davinci_tupling_from_collections:main</text>
</set></argument>
<argument name="options_yaml_fn"><text>$DAVINCIEXAMPLESROOT/example_data/FEST_November_2021_dst_newPacking.yaml</text></argument>
<argument name="reference"><text>../refs/test_davinci_tupling_from_collections.ref</text></argument>
<argument name="error_reference"><text>../refs/empty.ref</text></argument>
<argument name="extra_options_yaml"><text>
histo_file: histo_D0_Kpi_10evts_collections.root
ntuple_file: tuple_D0_Kpi_10evts_collections.root
......@@ -27,5 +29,39 @@
from DaVinciTests.QMTest.DaVinciExclusions import remove_known_warnings
countErrorLines({"FATAL": 0, "WARNING": 0, "ERROR": 0},
stdout=remove_known_warnings(stdout))
import sys, os
from ROOT import TFile
expected_branches = ['BUNCHCROSSING_ID', 'BUNCHCROSSING_TYPE', 'D0_CaloClusterMass', 'D0_CaloNeutral1To9EnergyRatio', 'D0_CaloNeutral4To9EnergyRatio', 'D0_CaloNeutralEcalEnergy', 'D0_CaloNeutralHcal2EcalEnergyRatio', 'D0_CaloNeutralID', 'D0_CaloNeutralShowerShape', 'D0_CaloNumSaturatedCells', 'D0_CaloTrackMatchChi2', 'D0_ENERGY', 'D0_HEAD_CMULT', 'D0_HEAD_CP', 'D0_HEAD_CPT', 'D0_HEAD_CPX', 'D0_HEAD_CPY', 'D0_HEAD_CPZ', 'D0_HEAD_DETA', 'D0_HEAD_DPHI', 'D0_HEAD_PASY', 'D0_HEAD_PTASY', 'D0_HEAD_PXASY', 'D0_HEAD_PYASY', 'D0_HEAD_PZASY', 'D0_M', 'D0_MC_GD_GD_MOTHER_ID', 'D0_MC_GD_GD_MOTHER_KEY', 'D0_MC_GD_MOTHER_ID', 'D0_MC_GD_MOTHER_KEY', 'D0_MC_ISPROMPT', 'D0_MC_LONGLIVED_ID', 'D0_MC_LONGLIVED_KEY', 'D0_MC_MOTHER_ID', 'D0_MC_MOTHER_KEY', 'D0_P', 'D0_PARTICLE_ID', 'D0_PROBNN_D', 'D0_PROBNN_E', 'D0_PROBNN_GHOST', 'D0_PROBNN_K', 'D0_PROBNN_MU', 'D0_PROBNN_P', 'D0_PROBNN_PI', 'D0_PT', 'D0_PX', 'D0_PY', 'D0_PZ', 'D0_TRUEENDVERTEX_X', 'D0_TRUEENDVERTEX_Y', 'D0_TRUEENDVERTEX_Z', 'D0_TRUEENERGY', 'D0_TRUEID', 'D0_TRUEORIGINVERTEX_X', 'D0_TRUEORIGINVERTEX_Y', 'D0_TRUEORIGINVERTEX_Z', 'D0_TRUEP', 'D0_TRUEPT', 'D0_TRUEPX', 'D0_TRUEPY', 'D0_TRUEPZ', 'EVENTNUMBER', 'GPSTIME', 'Hlt2_TCK', 'Kminus_CaloClusterMass', 'Kminus_CaloNeutral1To9EnergyRatio', 'Kminus_CaloNeutral4To9EnergyRatio', 'Kminus_CaloNeutralEcalEnergy', 'Kminus_CaloNeutralHcal2EcalEnergyRatio', 'Kminus_CaloNeutralID', 'Kminus_CaloNeutralShowerShape', 'Kminus_CaloNumSaturatedCells', 'Kminus_CaloTrackMatchChi2', 'Kminus_ENERGY', 'Kminus_HEAD_CMULT', 'Kminus_HEAD_CP', 'Kminus_HEAD_CPT', 'Kminus_HEAD_CPX', 'Kminus_HEAD_CPY', 'Kminus_HEAD_CPZ', 'Kminus_HEAD_DETA', 'Kminus_HEAD_DPHI', 'Kminus_HEAD_PASY', 'Kminus_HEAD_PTASY', 'Kminus_HEAD_PXASY', 'Kminus_HEAD_PYASY', 'Kminus_HEAD_PZASY', 'Kminus_M', 'Kminus_MC_GD_GD_MOTHER_ID', 'Kminus_MC_GD_GD_MOTHER_KEY', 'Kminus_MC_GD_MOTHER_ID', 'Kminus_MC_GD_MOTHER_KEY', 'Kminus_MC_ISPROMPT', 'Kminus_MC_LONGLIVED_ID', 'Kminus_MC_LONGLIVED_KEY', 'Kminus_MC_MOTHER_ID', 'Kminus_MC_MOTHER_KEY', 'Kminus_P', 'Kminus_PARTICLE_ID', 'Kminus_PROBNN_D', 'Kminus_PROBNN_E', 'Kminus_PROBNN_GHOST', 'Kminus_PROBNN_K', 'Kminus_PROBNN_MU', 'Kminus_PROBNN_P', 'Kminus_PROBNN_PI', 'Kminus_PT', 'Kminus_PX', 'Kminus_PY', 'Kminus_PZ', 'Kminus_TRUEENDVERTEX_X', 'Kminus_TRUEENDVERTEX_Y', 'Kminus_TRUEENDVERTEX_Z', 'Kminus_TRUEENERGY', 'Kminus_TRUEID', 'Kminus_TRUEORIGINVERTEX_X', 'Kminus_TRUEORIGINVERTEX_Y', 'Kminus_TRUEORIGINVERTEX_Z', 'Kminus_TRUEP', 'Kminus_TRUEPT', 'Kminus_TRUEPX', 'Kminus_TRUEPY', 'Kminus_TRUEPZ', 'ODINTCK', 'RUNNUMBER', 'indx', 'piplus_CaloClusterMass', 'piplus_CaloNeutral1To9EnergyRatio', 'piplus_CaloNeutral4To9EnergyRatio', 'piplus_CaloNeutralEcalEnergy', 'piplus_CaloNeutralHcal2EcalEnergyRatio', 'piplus_CaloNeutralID', 'piplus_CaloNeutralShowerShape', 'piplus_CaloNumSaturatedCells', 'piplus_CaloTrackMatchChi2', 'piplus_ENERGY', 'piplus_HEAD_CMULT', 'piplus_HEAD_CP', 'piplus_HEAD_CPT', 'piplus_HEAD_CPX', 'piplus_HEAD_CPY', 'piplus_HEAD_CPZ', 'piplus_HEAD_DETA', 'piplus_HEAD_DPHI', 'piplus_HEAD_PASY', 'piplus_HEAD_PTASY', 'piplus_HEAD_PXASY', 'piplus_HEAD_PYASY', 'piplus_HEAD_PZASY', 'piplus_M', 'piplus_MC_GD_GD_MOTHER_ID', 'piplus_MC_GD_GD_MOTHER_KEY', 'piplus_MC_GD_MOTHER_ID', 'piplus_MC_GD_MOTHER_KEY', 'piplus_MC_ISPROMPT', 'piplus_MC_LONGLIVED_ID', 'piplus_MC_LONGLIVED_KEY', 'piplus_MC_MOTHER_ID', 'piplus_MC_MOTHER_KEY', 'piplus_P', 'piplus_PARTICLE_ID', 'piplus_PROBNN_D', 'piplus_PROBNN_E', 'piplus_PROBNN_GHOST', 'piplus_PROBNN_K', 'piplus_PROBNN_MU', 'piplus_PROBNN_P', 'piplus_PROBNN_PI', 'piplus_PT', 'piplus_PX', 'piplus_PY', 'piplus_PZ', 'piplus_TRUEENDVERTEX_X', 'piplus_TRUEENDVERTEX_Y', 'piplus_TRUEENDVERTEX_Z', 'piplus_TRUEENERGY', 'piplus_TRUEID', 'piplus_TRUEORIGINVERTEX_X', 'piplus_TRUEORIGINVERTEX_Y', 'piplus_TRUEORIGINVERTEX_Z', 'piplus_TRUEP', 'piplus_TRUEPT', 'piplus_TRUEPX', 'piplus_TRUEPY', 'piplus_TRUEPZ']
expected_mc_branches = ['BUNCHCROSSING_ID', 'BUNCHCROSSING_TYPE', 'D0_MC_ACCT', 'D0_MC_ACCT1', 'D0_MC_ACCT1S', 'D0_MC_ACCT1X', 'D0_MC_ACCT2', 'D0_MC_ACCT2S', 'D0_MC_ACCT2X', 'D0_MC_ACCT3', 'D0_MC_ACCT3S', 'D0_MC_ACCT3X', 'D0_MC_ACCUT', 'D0_MC_ACCUT1', 'D0_MC_ACCUT2', 'D0_MC_ACCVELO', 'D0_MC_ACCVELO_AND_T', 'D0_MC_GD_GD_MOTHER_ID', 'D0_MC_GD_GD_MOTHER_KEY', 'D0_MC_GD_MOTHER_ID', 'D0_MC_GD_MOTHER_KEY', 'D0_MC_HAST', 'D0_MC_HAST1', 'D0_MC_HAST1S', 'D0_MC_HAST1X', 'D0_MC_HAST2', 'D0_MC_HAST2S', 'D0_MC_HAST2X', 'D0_MC_HAST3', 'D0_MC_HAST3S', 'D0_MC_HAST3X', 'D0_MC_HASUT', 'D0_MC_HASUT1', 'D0_MC_HASUT2', 'D0_MC_HASVELO', 'D0_MC_HASVELO_AND_T', 'D0_MC_ISPROMPT', 'D0_MC_LONGLIVED_ID', 'D0_MC_LONGLIVED_KEY', 'D0_MC_MOTHER_ID', 'D0_MC_MOTHER_KEY', 'D0_MC_RECONSTRUCTIBLE', 'D0_RECONSTRUCTED', 'D0_TRUEENDVERTEX_X', 'D0_TRUEENDVERTEX_Y', 'D0_TRUEENDVERTEX_Z', 'D0_TRUEID', 'D0_TRUEORIGINVERTEX_X', 'D0_TRUEORIGINVERTEX_Y', 'D0_TRUEORIGINVERTEX_Z', 'GPSTIME', 'Kminus_MC_ACCT', 'Kminus_MC_ACCT1', 'Kminus_MC_ACCT1S', 'Kminus_MC_ACCT1X', 'Kminus_MC_ACCT2', 'Kminus_MC_ACCT2S', 'Kminus_MC_ACCT2X', 'Kminus_MC_ACCT3', 'Kminus_MC_ACCT3S', 'Kminus_MC_ACCT3X', 'Kminus_MC_ACCUT', 'Kminus_MC_ACCUT1', 'Kminus_MC_ACCUT2', 'Kminus_MC_ACCVELO', 'Kminus_MC_ACCVELO_AND_T', 'Kminus_MC_GD_GD_MOTHER_ID', 'Kminus_MC_GD_GD_MOTHER_KEY', 'Kminus_MC_GD_MOTHER_ID', 'Kminus_MC_GD_MOTHER_KEY', 'Kminus_MC_HAST', 'Kminus_MC_HAST1', 'Kminus_MC_HAST1S', 'Kminus_MC_HAST1X', 'Kminus_MC_HAST2', 'Kminus_MC_HAST2S', 'Kminus_MC_HAST2X', 'Kminus_MC_HAST3', 'Kminus_MC_HAST3S', 'Kminus_MC_HAST3X', 'Kminus_MC_HASUT', 'Kminus_MC_HASUT1', 'Kminus_MC_HASUT2', 'Kminus_MC_HASVELO', 'Kminus_MC_HASVELO_AND_T', 'Kminus_MC_ISPROMPT', 'Kminus_MC_LONGLIVED_ID', 'Kminus_MC_LONGLIVED_KEY', 'Kminus_MC_MOTHER_ID', 'Kminus_MC_MOTHER_KEY', 'Kminus_MC_RECONSTRUCTIBLE', 'Kminus_RECONSTRUCTED', 'Kminus_TRUEENDVERTEX_X', 'Kminus_TRUEENDVERTEX_Y', 'Kminus_TRUEENDVERTEX_Z', 'Kminus_TRUEID', 'Kminus_TRUEORIGINVERTEX_X', 'Kminus_TRUEORIGINVERTEX_Y', 'Kminus_TRUEORIGINVERTEX_Z', 'MCPVT', 'MCPVX', 'MCPVY', 'MCPVZ', 'MCPV_IDX', 'MCPV_SIZE', 'ODINTCK', 'piplus_MC_ACCT', 'piplus_MC_ACCT1', 'piplus_MC_ACCT1S', 'piplus_MC_ACCT1X', 'piplus_MC_ACCT2', 'piplus_MC_ACCT2S', 'piplus_MC_ACCT2X', 'piplus_MC_ACCT3', 'piplus_MC_ACCT3S', 'piplus_MC_ACCT3X', 'piplus_MC_ACCUT', 'piplus_MC_ACCUT1', 'piplus_MC_ACCUT2', 'piplus_MC_ACCVELO', 'piplus_MC_ACCVELO_AND_T', 'piplus_MC_GD_GD_MOTHER_ID', 'piplus_MC_GD_GD_MOTHER_KEY', 'piplus_MC_GD_MOTHER_ID', 'piplus_MC_GD_MOTHER_KEY', 'piplus_MC_HAST', 'piplus_MC_HAST1', 'piplus_MC_HAST1S', 'piplus_MC_HAST1X', 'piplus_MC_HAST2', 'piplus_MC_HAST2S', 'piplus_MC_HAST2X', 'piplus_MC_HAST3', 'piplus_MC_HAST3S', 'piplus_MC_HAST3X', 'piplus_MC_HASUT', 'piplus_MC_HASUT1', 'piplus_MC_HASUT2', 'piplus_MC_HASVELO', 'piplus_MC_HASVELO_AND_T', 'piplus_MC_ISPROMPT', 'piplus_MC_LONGLIVED_ID', 'piplus_MC_LONGLIVED_KEY', 'piplus_MC_MOTHER_ID', 'piplus_MC_MOTHER_KEY', 'piplus_MC_RECONSTRUCTIBLE', 'piplus_RECONSTRUCTED', 'piplus_TRUEENDVERTEX_X', 'piplus_TRUEENDVERTEX_Y', 'piplus_TRUEENDVERTEX_Z', 'piplus_TRUEID', 'piplus_TRUEORIGINVERTEX_X', 'piplus_TRUEORIGINVERTEX_Y', 'piplus_TRUEORIGINVERTEX_Z']
#sort the expected vars
expected_branches = sorted(expected_branches)
expected_mc_branches = sorted(expected_mc_branches)
#open the TFile and TTree
ntuple = './tuple_D0_Kpi_10evts_collections.root'
if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!")
f = TFile.Open(ntuple)
t_tuple = f.Get('Tuple/DecayTree')
t_mctuple = f.Get('MCTuple/DecayTree')
def check_tree(t_B, B_vars_stored):
#sort the stores vars
b_names = sorted([b.GetName() for b in t_B.GetListOfLeaves()])
B_excluded_1 = set(B_vars_stored) - set(b_names)
B_excluded_2 = set(b_names) - set(B_vars_stored)
if len(B_excluded_1) != 0: raise Exception('Number of stored variables is less than what is expected. The extra variables expected are: ' , B_excluded_1)
if len(B_excluded_2) != 0: raise Exception('Number of stored variables is greater than what is expected. The extra variables stored are: ', B_excluded_2)
check_tree(t_tuple , expected_branches)
check_tree(t_mctuple , expected_mc_branches)
f.Close()
print('Test successfully completed!')
os.system(f"rm {ntuple}")
</text></argument>
</extension>
......@@ -25,5 +25,35 @@
from DaVinciTests.QMTest.DaVinciExclusions import preprocessor, counter_preprocessor
validateWithReference(preproc = preprocessor, counter_preproc = counter_preprocessor)
countErrorLines({"FATAL":0})
import sys, os
from ROOT import TFile
expected_branches = ['Bu_END_VX', 'Bu_END_VY', 'Bu_END_VZ', 'Bu_ETA', 'Bu_ORIGIN_VX', 'Bu_ORIGIN_VY', 'Bu_ORIGIN_VZ', 'Bu_PE', 'Bu_PHI', 'Bu_PT', 'Bu_PX', 'Bu_PY', 'Bu_PZ', 'Bu_TAU', 'Jpsi_PE', 'Jpsi_PT', 'Jpsi_PX', 'Jpsi_PY', 'Jpsi_PZ', 'Kplus_PE', 'Kplus_PT', 'Kplus_PX', 'Kplus_PY', 'Kplus_PZ', 'MCPVT', 'MCPVX', 'MCPVY', 'MCPVZ', 'MCPV_IDX', 'MCPV_SIZE', 'muminus_PE', 'muminus_PT', 'muminus_PX', 'muminus_PY', 'muminus_PZ', 'muplus_PE', 'muplus_PT', 'muplus_PX', 'muplus_PY', 'muplus_PZ']
#sort the expected vars
expected_branches = sorted(expected_branches)
#open the TFile and TTree
ntuple = './DV_tuple_xgen.root'
if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!")
f = TFile.Open(ntuple)
tree = f.Get('BuJpsiK_MCTuple/DecayTree')
def check_tree(t_B, B_vars_stored):
#sort the stores vars
b_names = sorted([b.GetName() for b in t_B.GetListOfLeaves()])
B_excluded_1 = set(B_vars_stored) - set(b_names)
B_excluded_2 = set(b_names) - set(B_vars_stored)
if len(B_excluded_1) != 0: raise Exception('Number of stored variables is less than what is expected. The extra variables expected are: ' , B_excluded_1)
if len(B_excluded_2) != 0: raise Exception('Number of stored variables is greater than what is expected. The extra variables stored are: ', B_excluded_2)
check_tree(tree, expected_branches)
f.Close()
print('Test successfully completed!')
os.system(f"rm {ntuple}")
</text></argument>
</extension>
......@@ -13,7 +13,7 @@ RCWNTupleCnv INFO Booked TTree with ID: DecayTree "Dec
ApplicationMgr INFO Application Manager Stopped successfully
BuJpsiK_MCTuple SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections
BuJpsiK_MCTuple SUCCESS List of booked N-Tuples in directory "FILE1/BuJpsiK_MCTuple"
BuJpsiK_MCTuple SUCCESS ID=DecayTree Title="DecayTree" #items=33 {Bu_ETA,Bu_PHI,Bu_ORIGIN_VX,Bu_ORIGIN_VY,Bu_ORIGIN_VZ,Bu_END_VX,Bu_END_VY,Bu_END_V}
BuJpsiK_MCTuple SUCCESS ID=DecayTree Title="DecayTree" #items=40 {MCPV_IDX,MCPVT[1]/V,MCPVX[1]/V,MCPVY[1]/V,MCPVZ[1]/V,MCPV_SIZE,Bu_ETA,Bu_PHI,Bu_T}
LAZY_AND: DaVinci #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%|
NONLAZY_OR: UserAnalysis #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%|
LAZY_AND: BuJpsiK #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%|
......
......@@ -13,7 +13,7 @@ RCWNTupleCnv INFO Booked TTree with ID: DecayTree "Dec
ApplicationMgr INFO Application Manager Stopped successfully
BuJpsiK_MCTuple SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections
BuJpsiK_MCTuple SUCCESS List of booked N-Tuples in directory "FILE1/BuJpsiK_MCTuple"
BuJpsiK_MCTuple SUCCESS ID=DecayTree Title="DecayTree" #items=33 {Bu_ETA,Bu_PHI,Bu_ORIGIN_VX,Bu_ORIGIN_VY,Bu_ORIGIN_VZ,Bu_END_VX,Bu_END_VY,Bu_END_V}
BuJpsiK_MCTuple SUCCESS ID=DecayTree Title="DecayTree" #items=40 {MCPV_IDX,MCPVT[1]/V,MCPVX[1]/V,MCPVY[1]/V,MCPVZ[1]/V,MCPV_SIZE,Bu_ETA,Bu_PHI,Bu_T}
LAZY_AND: DaVinci #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%|
NONLAZY_OR: UserAnalysis #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%|
LAZY_AND: BuJpsiK #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%|
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment