15def mc_gen_topo(n=200):
17 Gets the list of variables containing the raw topology information of MC generated events.
18 To be specific, the list including the following variables:
20 * ``nMCGen``: number of MC generated particles in a given event,
21 * ``MCGenPDG_i`` (i=0, 1, ... n-2, n-1):
22 PDG code of the :math:`{\\rm i}^{\\rm th}` MC generated particle
in a given event,
23 * ``MCGenMothIndex_i`` (i=0, 1, ... n-2, n-1):
24 mother index of the :math:`{\\rm i}^{\\rm th}` MC generated particle
in a given event.
28 * Internally, ``nMCGen``, ``MCGenPDG_i``
and ``MCGenMothIndex_i`` are just aliases of
29 ``nMCParticles``, ``genParticle(i, varForMCGen(PDG))``
30 and ``genParticle(i, varForMCGen(mcMother(mdstIndex)))``, respectively.
31 * For more details on the variables, please refer to the documentations of
32 :b2:var:`nMCParticles`, :b2:var:`genParticle`, :b2:var:`varForMCGen`,
33 :b2:var:`PDG`, :b2:var:`mcMother`,
and :b2:var:`mdstIndex`.
36 n (int): number of ``MCGenPDG_i``/``MCGenMothIndex_i`` variables. Its default value
is 200.
40 * To completely examine the topology information of the events
in an MC sample,
41 the parameter ``n`` should be greater than
or equal to the maximum of ``nMCGen``
in the sample.
42 * Normally, the maximum of ``nMCGen``
in the MC samples at Belle II
is less than 200.
43 Hence,
if you have no idea about the maximum of ``nMCGen``
in your own MC sample,
44 it
is usually a safe choice to use the default parameter value 200.
45 * However, an overlarge parameter value leads to unnecessary waste of disk space
and
46 redundant variables
with inelegant ``nan`` values.
47 Hence,
if you know the maximum of ``nMCGen``
in your own MC sample,
48 it
is a better choice to assign the parameter a proper value.
50 list_of_indexes = [str(i) for i
in range(n)]
51 wrapper =
'genParticle({variable}, varForMCGen(PDG))'
53 MCGenPDG = create_aliases(list_of_indexes, wrapper, prefix)
54 wrapper =
'genParticle({variable}, varForMCGen(mcMother(mdstIndex)))'
55 prefix =
'MCGenMothIndex'
56 MCGenMothIndex = create_aliases(list_of_indexes, wrapper, prefix)
57 variables.variables.addAlias(
'nMCGen',
'nMCParticles')
58 list_of_variables = [
'nMCGen']
60 list_of_variables.append(MCGenPDG[i])
61 list_of_variables.append(MCGenMothIndex[i])
62 return list_of_variables