11from basf2
import register_module
12from basf2
import B2WARNING
24 daughtersUpdate=False,
29 Perform the specified fit for each Particle in the given ParticleList.
32 Direct use of `fitVertex` is not recommended unless you know what you are doing.
33 If you're unsure, you probably want to use `treeFit` or `kFit`.
36 list_name (str): name of the input ParticleList
37 conf_level (float): minimum value of the confidence level to accept the fit.
38 Setting this parameter to -1 selects all particle candidates.
39 The value of 0 rejects the particle candidates with failed fit.
40 decay_string (str): select particles used for the vertex fit
41 fitter (str): Rave or KFit
42 fit_type (str): type of the kinematic fit (valid options are vertex/massvertex/mass/fourC/massfourC/recoilmass)
43 constraint (str): add additional constraint to the fit (valid options are empty string/ipprofile/iptube/mother)
44 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
45 recoilMass (float): invariant mass of recoil in GeV (valid only for recoilmass)
46 daughtersUpdate (bool): make copy of the daughters and update them after the vertex fit
47 smearing (float) : IP tube width is smeared by this value (cm). meaningful only with 'KFit/vertex/iptube' option.
48 path (basf2.Path): modules are added to this path
52 "Direct use of fitVertex is not recommended unless you know what you are doing.\n"
53 "Please use treeFit or kFit.\n"
54 "See documentation at https://software.belle2.org"
60 list_name, conf_level, decay_string, fitter, fit_type, constraint,
61 massConstraint, recoilMass, daughtersUpdate, smearing, path)
73 daughtersUpdate=False,
78 An internal function, performs the specified fit for each Particle in the given ParticleList.
81 This is a private function, please use one of the aliases provided.
84 list_name (str): name of the input ParticleList
85 conf_level (float): minimum value of the confidence level to accept the fit.
86 Setting this parameter to -1 selects all particle candidates.
87 The value of 0 rejects the particle candidates with failed fit.
88 decay_string (str): select particles used for the vertex fit
89 fitter (str): Rave or KFit
90 fit_type (str): type of the kinematic fit (valid options are vertex/massvertex/mass/fourC/massfourC/recoilmass)
91 constraint (str): add additional constraint to the fit (valid options are empty string/ipprofile/iptube/mother)
92 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
93 recoilMass (float): invariant mass of recoil in GeV (valid only for recoilmass)
94 daughtersUpdate (bool): make copy of the daughters and update them after the vertex fit
95 smearing (float) : IP tube width is smeared by this value (cm). meaningful only with 'KFit/vertex/iptube' option.
96 path (basf2.Path): modules are added to this path
99 from pdg
import from_names
101 pvfit = register_module(
'ParticleVertexFitter')
102 pvfit.set_name(
'ParticleVertexFitter_' + list_name)
103 pvfit.param(
'listName', list_name)
104 pvfit.param(
'confidenceLevel', conf_level)
105 pvfit.param(
'vertexFitter', fitter)
106 pvfit.param(
'fitType', fit_type)
107 pvfit.param(
'withConstraint', constraint)
108 pvfit.param(
'updateDaughters', daughtersUpdate)
109 pvfit.param(
'decayString', decay_string)
110 pvfit.param(
'recoilMass', recoilMass)
111 pvfit.param(
'smearing', smearing)
113 pvfit.param(
'massConstraintList', from_names(massConstraint))
114 path.add_module(pvfit)
121 daughtersUpdate=False,
128 Perform KFit for each Particle in the given ParticleList.
131 list_name (str): name of the input ParticleList
132 conf_level (float): minimum value of the confidence level to accept the fit
133 Setting this parameter to -1 selects all particle candidates.
134 The value of 0 rejects particle candidates with a failed fit.
135 fit_type (str): type of the kinematic fit. Valid options are
137 * ``mass`` for a mass-constrained fit
138 * ``vertex`` for a vertex fit
139 * ``massvertex`` for a vertex fit with a mass constraint on the mother particle
140 * ``fourC`` for a vertex fit in which the mother particle's four-momentum is constrained to the beam four-momentum
141 * ``massfourC`` for a vertex fit with a 4-momentum constraint and mass constraints on the specified daughter particles
142 * ``recoilmass`` for kinematic fit in which the mass of the mother particle's recoil four-momentum with respect
143 to the beam four-momentum is constrained
145 constraint (str): add an additional constraint to the fit (valid options are ipprofile or iptube)
146 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
147 recoilMass (float): invariant mass of recoil in GeV (valid only for recoilmass)
148 daughtersUpdate (bool): make copy of the daughters and update them after the KFit
149 decay_string (str): select particles used for the KFit
150 smearing (float) : IP tube width is smeared by this value (cm). meaningful only with 'iptube' constraint.
151 path (basf2.Path): modules are added to this path
155 list_name, conf_level, decay_string,
'KFit', fit_type, constraint,
156 massConstraint, recoilMass, daughtersUpdate, smearing, path)
165 daughtersUpdate=False,
167 silence_warning=False,
170 Performs a vertex fit using `RAVE <https://github.com/rave-package>`_
171 for each Particle in the given ParticleList.
174 `RAVE <https://github.com/rave-package>`_ is deprecated since it is not maintained.
175 Whilst we will not remove RAVE, it is not recommended for analysis use, other than benchmarking or legacy studies.
176 Instead, we recommend :doc:`TreeFitter` (`vertex.treeFit`) or `vertex.kFit`.
179 list_name (str): name of the input ParticleList
180 conf_level (float): minimum value of the confidence level to accept the fit.
181 Setting this parameter to -1 selects all particle candidates.
182 The value of 0 rejects the particle candidates with failed fit.
183 fit_type (str): type of the RAVE vertex fit.Valid options are
185 * ``mass`` for a mass-constrained fit (the 7x7 error matrix of the mother particle has to be defined)
186 * ``vertex`` for a vertex fit without any mass constraint
187 * ``massvertex`` for a mass-constrained vertex fit
189 decay_string (str): select particles used for the vertex fit
190 constraint (str): add additional constraint to the fit
191 (valid options are ipprofile or iptube).
192 daughtersUpdate (bool): make copy of the daughters and update them after the Rave vertex fit
193 path (basf2.Path): modules are added to this path
194 silence_warning (bool): silence the warning advertising TreeFitter use
199 "RAVE is deprecated since it is not maintained.\n"
200 "Whilst we will not remove RAVE, it is not recommended for analysis use, other than benchmarking or legacy studies.\n"
201 "Instead, we recommend TreeFitter (treeFit) or KFit.\n"
202 "Try: \n treeFit(\'" + list_name +
"\'," + str(conf_level) +
203 ", updateAllDaughters=False, path=mypath)\n"
205 message_b =
"To silence this warning, add silence_warning=True when you call this function."
212 "Please consult the documentation at https://software.belle2.org \n"
213 "(search for TreeFitter) for special constraints.\n"
216 if not silence_warning:
217 B2WARNING(message_a + message_if + message_b)
219 _fitVertex(list_name, conf_level, decay_string,
'Rave', fit_type, constraint,
None, 0, daughtersUpdate, 0, path)
227 updateAllDaughters=False,
228 massConstraintDecayString='',
229 massConstraintMassValues=[],
230 customOriginConstraint=False,
231 customOriginVertex=[0.001, 0, 0.0116],
232 customOriginCovariance=[0.0048, 0, 0, 0, 0.003567, 0, 0, 0, 0.0400],
235 ignoreFromVertexFit='',
239 Perform a :doc:`TreeFitter` fit for each Particle in the given ParticleList.
242 An example of usage for the decay chain :math:`B^0\\to\\pi^+\\pi^-\\pi^0` is the following:
246 reconstructDecay('pi0:A -> gamma:pi0 gamma:pi0', '0.130 < InvM < 0.14', path=mypath)
247 reconstructDecay('B0:treefit -> pi+:my pi-:my pi0:A ', '', path=mypath)
248 treeFit('B0:treefit', ipConstraint=True, path=mypath)
252 The Particle object loaded from the KLMCluster does not have proper covariance matrix yet (by release-06 at least).
253 The performance of TreeFit with these particles is not guaranteed.
254 Alternatively, one can perform the TreeFit ignoring these particles from the vertex fit with
255 the option ``ignoreFromVertexFit``.
259 list_name (str): name of the input ParticleList
260 conf_level (float): minimum value of the confidence level to accept the fit.
261 Setting this parameter to -1 selects all particle candidates.
262 The value of 0 rejects the particle candidates with failed fit.
263 massConstraint (list(int, str)): list of PDG ids or names of the particles which are mass-constrained
264 ipConstraint (bool): constrain head production vertex to IP (x-y-z) constraint
265 updateAllDaughters (bool): if true the entire tree will be updated with the fitted values
266 for momenta and vertex position. Otherwise only the momenta of the head of the tree will be updated,
267 however for all daughters we also update the vertex position with the fit results as this would
268 otherwise be set to {0, 0, 0} contact us if this causes any hardship/confusion.
269 massConstraintDecayString (str): Decay string to select which particles' mass should be constrained
270 massConstraintMassValues (list(float, int, str)): list of invariant masses to be used for the mass constraints
271 of the particles selected via the decay string massConstraintDecayString. A floating point value is taken directly
272 while an integer or string is interpreted as defining the PDG id or name of a particle
273 and the corresponding PDG value is taken
274 customOriginConstraint (bool): use a custom origin vertex as the production vertex of your particle.
275 This is useful when fitting D*/D without wanting to fit a B but constraining the process to be B-decay-like.
276 (think of semileptonic modes and stuff with a neutrino in the B decay).
277 customOriginVertex (list(float)): 3d vector of the vertex coordinates you want to use as custom origin.
278 Default numbers are taken for B-mesons
279 customOriginCovariance (list(float)): 3x3 covariance matrix for the custom vertex (type: vector).
280 Default numbers extracted from generator distribution width of B-mesons.
281 originDimension (int): If the origin or IP constraint (``customOriginVertex`` or ``ipConstraint``) are used,
282 this specifies the dimension of the constraint (3D or 2D).
283 treatAsInvisible (str): Decay string to select one particle that will be treated as invisible in the fit.
284 ignoreFromVertexFit (str): Decay string to select particles that will be ignored to determine the vertex position.
285 path (basf2.Path): modules are added to this path
290 treeFitter = register_module(
"TreeFitter")
291 treeFitter.set_name(
'TreeFitter_' + list_name)
293 treeFitter.param(
'massConstraintList',
pdg.from_names(massConstraint))
294 treeFitter.param(
'particleList', list_name)
295 treeFitter.param(
'confidenceLevel', conf_level)
296 treeFitter.param(
'ipConstraint', ipConstraint)
297 treeFitter.param(
'updateAllDaughters', updateAllDaughters)
298 treeFitter.param(
'customOriginConstraint', customOriginConstraint)
299 treeFitter.param(
'customOriginVertex', customOriginVertex)
300 treeFitter.param(
'customOriginCovariance', customOriginCovariance)
301 treeFitter.param(
'originDimension', originDimension)
302 treeFitter.param(
'treatAsInvisible', treatAsInvisible)
303 treeFitter.param(
'ignoreFromVertexFit', ignoreFromVertexFit)
304 treeFitter.param(
'massConstraintDecayString', massConstraintDecayString)
305 if massConstraintMassValues:
306 treeFitter.param(
'massConstraintMassValues', [
307 pdg.get(item).Mass()
if isinstance(item, (int, str))
else item
for item
in massConstraintMassValues])
308 path.add_module(treeFitter)
315 trackFindingType="standard_PXD",
316 constraintType="tube",
321 kFitReqReducedChi2=5.0,
327 For each Particle in the given Breco ParticleList:
328 perform the fit of tag side using the track list from the RestOfEvent dataobject
329 save the MC Btag in case of signal MC
333 list_name (str): name of the input Breco ParticleList
334 MCassociation (str): use standard MC association or the internal one
335 confidenceLevel (float): minimum value of the ConfidenceLevel to accept the fit. 0 selects CL > 0
336 constraintType (str): choose the constraint used in the fit. Can be set to
339 * IP: **default**, tag B constrained to be on the IP;
340 * tube: tube along the tag B line of flight, only for fully reconstructed signal B;
341 * boost: long tube along the boost direction;
342 * (breco): deprecated, but similar to tube;
344 trackFindingType (str): choose how to look for tag tracks. Can be set to
346 * standard: all tracks except from Kshorts;
347 * standard_PXD: **default**, same as above but consider only tracks with at least 1 PXD hit.
348 If the fit fails, attempt again with the standard option;
350 fitAlgorithm (str): Fitter used for the tag vertex fit: Rave or KFit (default)
351 kFitReqReducedChi2 (float): The required chi2/ndf to accept the kFit result, if it is higher, iteration procedure is applied
352 askMCInfo (bool): True when requesting MC Information from the tracks performing the vertex fit
353 reqPXDHits (int): minimum N PXD hits for a track (default is 0)
354 maskName (str): get particles from a specified ROE mask
355 useTruthInFit (bool): True when the tag vertex fit is performed with the true momentum and
356 position of the tracks (default is false). The variable :b2:var:`TagVFitTruthStatus` is set to 1
357 if the truth-matching succeeds and 2 otherwise.
358 useRollBack (bool): True when the tag vertex fit is performed with position of tracks rolled back to
359 position of the mother B (default is false). The variable :b2:var:`TagVRollBackStatus` is set to 1
360 if the truth-matching succeeds and 2 otherwise.
361 path (basf2.Path): modules are added to this path
364 Note that the useFitAlgorithm (str) parameter is deprecated and replaced by constraintType (str)
365 and trackFindingType (str)
368 The trackFindingType ``singleTrack`` and ``singleTrack_PXD`` are broken and **cannot** be used any more.
371 tvfit = register_module(
'TagVertex')
372 tvfit.set_name(
'TagVertex_' + list_name)
373 tvfit.param(
'listName', list_name)
374 tvfit.param(
'maskName', maskName)
375 tvfit.param(
'confidenceLevel', confidenceLevel)
376 tvfit.param(
'MCAssociation', MCassociation)
377 tvfit.param(
'trackFindingType', trackFindingType)
378 tvfit.param(
'constraintType', constraintType)
379 tvfit.param(
'askMCInformation', askMCInfo)
380 tvfit.param(
'reqPXDHits', reqPXDHits)
381 tvfit.param(
'fitAlgorithm', fitAlgorithm)
382 tvfit.param(
'kFitReqReducedChi2', kFitReqReducedChi2)
383 tvfit.param(
'useTruthInFit', useTruthInFit)
384 tvfit.param(
'useRollBack', useRollBack)
385 path.add_module(tvfit)
393 Add a pseudo \"vertex fit\" which adds a covariance matrix from the combination of the four-vectors of the daughters.
394 This is similar to BaBar's "Add4" function.
395 It is commonly used for :math:`\\pi^0\\to\\gamma\\gamma` reconstruction where a vertex fit is not possible.
397 Here is the basic usage:
401 from modularAnalysis import fitPseudo
402 from stdPi0s import stdPi0s
403 stdPi0s("eff40_May2020", path=mypath)
404 fitPseudo("pi0:eff40_May2020", path=mypath)
407 list_name (str): the name of the list to add the covariance matrix to
408 path (basf2.Path): modules are added to this path
410 pseudofit = register_module(
'PseudoVertexFitter')
411 pseudofit.set_name(
'PseudoVertexFitter_' + list_name)
412 pseudofit.param(
'listName', list_name)
413 path.add_module(pseudofit)
416if __name__ ==
'__main__':
418 pretty_print_module(__name__,
"vertex")