11 from basf2
import register_module
12 from 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 Please do not mix PDG id and particle names in massConstraint list (valid only for massfourC).
46 recoilMass (float): invariant mass of recoil in GeV (valid only for recoilmass)
47 daughtersUpdate (bool): make copy of the daughters and update them after the vertex fit
48 smearing (float) : IP tube width is smeared by this value (cm). meaningful only with 'KFit/vertex/iptube' option.
49 path (basf2.Path): modules are added to this path
53 "Direct use of fitVertex is not recommended unless you know what you are doing.\n"
54 "Please use treeFit or kFit.\n"
55 "See documentation at https://software.belle2.org"
61 list_name, conf_level, decay_string, fitter, fit_type, constraint,
62 massConstraint, recoilMass, daughtersUpdate, smearing, path)
74 daughtersUpdate=False,
79 An internal function, performs the specified fit for each Particle in the given ParticleList.
82 This is a private function, please use one of the aliases provided.
85 list_name (str): name of the input ParticleList
86 conf_level (float): minimum value of the confidence level to accept the fit.
87 Setting this parameter to -1 selects all particle candidates.
88 The value of 0 rejects the particle candidates with failed fit.
89 decay_string (str): select particles used for the vertex fit
90 fitter (str): Rave or KFit
91 fit_type (str): type of the kinematic fit (valid options are vertex/massvertex/mass/fourC/massfourC/recoilmass)
92 constraint (str): add additional constraint to the fit (valid options are empty string/ipprofile/iptube/mother)
93 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
94 Please do not mix PDG id and particle names in massConstraint list (valid only for massfourC).
95 recoilMass (float): invariant mass of recoil in GeV (valid only for recoilmass)
96 daughtersUpdate (bool): make copy of the daughters and update them after the vertex fit
97 smearing (float) : IP tube width is smeared by this value (cm). meaningful only with 'KFit/vertex/iptube' option.
98 path (basf2.Path): modules are added to this path
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 if isinstance(massConstraint[0], str):
114 pvfit.param(
'massConstraintListParticlename', massConstraint)
116 pvfit.param(
'massConstraintList', massConstraint)
117 path.add_module(pvfit)
124 daughtersUpdate=False,
131 Perform KFit for each Particle in the given ParticleList.
134 list_name (str): name of the input ParticleList
135 conf_level (float): minimum value of the confidence level to accept the fit
136 Setting this parameter to -1 selects all particle candidates.
137 The value of 0 rejects particle candidates with a failed fit.
138 fit_type (str): type of the kinematic fit. Valid options are
140 * ``mass`` for a mass-constrained fit
141 * ``vertex`` for a vertex fit
142 * ``massvertex`` for a vertex fit with a mass constraint on the mother particle
143 * ``fourC`` for a vertex fit in which the mother particle's four-momentum is constrained to the beam four-momentum
144 * ``massfourC`` for a vertex fit with a 4-momentum constraint and mass constraints on the specified daughter particles
145 * ``recoilmass`` for kinematic fit in which the mass of the mother particle's recoil four-momentum with respect
146 to the beam four-momentum is constrained
148 constraint (str): add an additional constraint to the fit (valid options are ipprofile or iptube)
149 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
150 Please do not mix PDG id and particle names in massConstraint list (valid only for massfourC).
151 recoilMass (float): invariant mass of recoil in GeV (valid only for recoilmass)
152 daughtersUpdate (bool): make copy of the daughters and update them after the KFit
153 decay_string (str): select particles used for the KFit
154 smearing (float) : IP tube width is smeared by this value (cm). meaningful only with 'iptube' constraint.
155 path (basf2.Path): modules are added to this path
159 list_name, conf_level, decay_string,
'KFit', fit_type, constraint,
160 massConstraint, recoilMass, daughtersUpdate, smearing, path)
169 daughtersUpdate=False,
171 silence_warning=False,
174 Performs a vertex fit using `RAVE <https://github.com/rave-package>`_
175 for each Particle in the given ParticleList.
178 `RAVE <https://github.com/rave-package>`_ is deprecated since it is not maintained.
179 Whilst we will not remove RAVE, it is not recommended for analysis use, other than benchmarking or legacy studies.
180 Instead, we recommend :doc:`TreeFitter` (`vertex.treeFit`) or `vertex.kFit`.
183 list_name (str): name of the input ParticleList
184 conf_level (float): minimum value of the confidence level to accept the fit.
185 Setting this parameter to -1 selects all particle candidates.
186 The value of 0 rejects the particle candidates with failed fit.
187 fit_type (str): type of the RAVE vertex fit.Valid options are
189 * ``mass`` for a mass-constrained fit (the 7x7 error matrix of the mother particle has to be defined)
190 * ``vertex`` for a vertex fit without any mass constraint
191 * ``massvertex`` for a mass-constrained vertex fit
193 decay_string (str): select particles used for the vertex fit
194 constraint (str): add additional constraint to the fit
195 (valid options are ipprofile or iptube).
196 daughtersUpdate (bool): make copy of the daughters and update them after the Rave vertex fit
197 path (basf2.Path): modules are added to this path
198 silence_warning (bool): silence the warning advertising TreeFitter use
203 "RAVE is deprecated since it is not maintained.\n"
204 "Whilst we will not remove RAVE, it is not recommended for analysis use, other than benchmarking or legacy studies.\n"
205 "Instead, we recommend TreeFitter (treeFit) or KFit.\n"
206 "Try: \n treeFit(\'" + list_name +
"\'," + str(conf_level) +
207 ", updateAllDaughters=False, path=mypath)\n"
209 message_b =
"To silence this warning, add silence_warning=True when you call this function."
216 "Please consult the documentation at https://software.belle2.org \n"
217 "(search for TreeFitter) for special constraints.\n"
220 if not silence_warning:
221 B2WARNING(message_a + message_if + message_b)
223 _fitVertex(list_name, conf_level, decay_string,
'Rave', fit_type, constraint,
None, 0, daughtersUpdate, 0, path)
231 updateAllDaughters=False,
232 customOriginConstraint=False,
233 customOriginVertex=[0.001, 0, 0.0116],
234 customOriginCovariance=[0.0048, 0, 0, 0, 0.003567, 0, 0, 0, 0.0400],
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)
251 list_name (str): name of the input ParticleList
252 conf_level (float): minimum value of the confidence level to accept the fit.
253 Setting this parameter to -1 selects all particle candidates.
254 The value of 0 rejects the particle candidates with failed fit.
255 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
256 Please do not mix PDG id and particle names in massConstraint list.
257 ipConstraint (bool): constrain head production vertex to IP (x-y-z) constraint
258 customOriginConstraint (bool): use a custom origin vertex as the production vertex of your particle.
259 This is useful when fitting D*/D without wanting to fit a B but constraining the process to be B-decay-like.
260 (think of semileptonic modes and stuff with a neutrino in the B decay).
261 customOriginVertex (list(float)): 3d vector of the vertex coordinates you want to use as custom origin.
262 Default numbers are taken for B-mesons
263 customOriginCovariance (list(float)): 3x3 covariance matrix for the custom vertex (type: vector).
264 Default numbers extracted from generator distribution width of B-mesons.
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 originDimension (int): If the origin or IP constraint (``customOriginVertex`` or ``ipConstraint``) are used,
270 this specifies the dimension of the constraint (3D or 2D).
271 path (basf2.Path): modules are added to this path
273 treeFitter = register_module(
"TreeFitter")
274 treeFitter.set_name(
'TreeFitter_' + list_name)
276 if isinstance(massConstraint[0], str):
277 treeFitter.param(
'massConstraintListParticlename', massConstraint)
279 treeFitter.param(
'massConstraintList', massConstraint)
280 treeFitter.param(
'particleList', list_name)
281 treeFitter.param(
'confidenceLevel', conf_level)
282 treeFitter.param(
'ipConstraint', ipConstraint)
283 treeFitter.param(
'updateAllDaughters', updateAllDaughters)
284 treeFitter.param(
'customOriginConstraint', customOriginConstraint)
285 treeFitter.param(
'customOriginVertex', customOriginVertex)
286 treeFitter.param(
'customOriginCovariance', customOriginCovariance)
287 treeFitter.param(
'originDimension', originDimension)
288 path.add_module(treeFitter)
295 trackFindingType="standard_PXD",
306 For each Particle in the given Breco ParticleList:
307 perform the fit of tag side using the track list from the RestOfEvent dataobject
308 save the MC Btag in case of signal MC
312 list_name (str): name of the input Breco ParticleList
313 MCassociation (str): use standard MC association or the internal one
314 confidenceLevel (float): minimum value of the ConfidenceLevel to accept the fit. 0 selects CL > 0
315 constraintType (str): choose the constraint used in the fit. Can be set to
318 * IP: **default**, tag B constrained to be on the IP;
319 * tube: tube along the tag B line of flight, only for fully reconstructed signal B;
320 * boost: long tube along the boost direction;
321 * (breco): deprecated, but similar to tube;
323 trackFindingType (str): choose how to look for tag tracks. Can be set to
325 * standard: all tracks except from Kshorts;
326 * standard_PXD: **default**, same as above but consider only tracks with at least 1 PXD hit.
327 If the fit fails, attempt again with the standard option;
329 fitAlgorithm (str): Fitter used for the tag vertex fit: Rave (default) or KFit
330 askMCInfo (bool): True when requesting MC Information from the tracks performing the vertex fit
331 reqPXDHits (int): minimum N PXD hits for a track (default is 0)
332 maskName (str): get particles from a specified ROE mask
333 useTruthInFit (bool): True when the tag vertex fit is performed with the true momentum and
334 position of the tracks (default is false). The variable :b2:var:`TagVFitTruthStatus` is set to 1
335 if the truth-matching succeeds and 2 otherwise.
336 useRollBack (bool): True when the tag vertex fit is performed with position of tracks rolled back to
337 position of the mother B (default is false). The variable :b2:var:`TagVRollBackStatus` is set to 1
338 if the truth-matching succeeds and 2 otherwise.
339 path (basf2.Path): modules are added to this path
342 Note that the useFitAlgorithm (str) parameter is deprecated and replaced by constraintType (str)
343 and trackFindingType (str)
346 The trackFindingType ``singleTrack`` and ``singleTrack_PXD`` are broken and **cannot** be used any more.
349 tvfit = register_module(
'TagVertex')
350 tvfit.set_name(
'TagVertex_' + list_name)
351 tvfit.param(
'listName', list_name)
352 tvfit.param(
'maskName', maskName)
353 tvfit.param(
'confidenceLevel', confidenceLevel)
354 tvfit.param(
'MCAssociation', MCassociation)
355 tvfit.param(
'trackFindingType', trackFindingType)
356 tvfit.param(
'constraintType', constraintType)
357 tvfit.param(
'askMCInformation', askMCInfo)
358 tvfit.param(
'reqPXDHits', reqPXDHits)
359 tvfit.param(
'fitAlgorithm', fitAlgorithm)
360 tvfit.param(
'useTruthInFit', useTruthInFit)
361 tvfit.param(
'useRollBack', useRollBack)
362 path.add_module(tvfit)
370 Add a pseudo \"vertex fit\" which adds a covariance matrix from the combination of the four-vectors of the daughters.
371 This is similar to BaBar's "Add4" function.
372 It is commonly used for :math:`\\pi^0\\to\\gamma\\gamma` reconstruction where a vertex fit is not possible.
374 Here is the basic usage:
378 from modularAnalysis import fitPseudo
379 from stdPi0s import stdPi0s
380 stdPi0s("eff40_May2020", path=mypath)
381 fitPseudo("pi0:eff40_May2020", path=mypath)
384 list_name (str): the name of the list to add the covariance matrix to
385 path (basf2.Path): modules are added to this path
387 pseudofit = register_module(
'PseudoVertexFitter')
388 pseudofit.set_name(
'PseudoVertexFitter_' + list_name)
389 pseudofit.param(
'listName', list_name)
390 path.add_module(pseudofit)
393 if __name__ ==
'__main__':
395 pretty_print_module(__name__,
"vertex")