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],
240 Perform a :doc:`TreeFitter` fit for each Particle in the given ParticleList.
243 An example of usage for the decay chain :math:`B^0\\to\\pi^+\\pi^-\\pi^0` is the following:
247 reconstructDecay('pi0:A -> gamma:pi0 gamma:pi0', '0.130 < InvM < 0.14', path=mypath)
248 reconstructDecay('B0:treefit -> pi+:my pi-:my pi0:A ', '', path=mypath)
249 treeFit('B0:treefit', ipConstraint=True, path=mypath)
252 list_name (str): name of the input ParticleList
253 conf_level (float): minimum value of the confidence level to accept the fit.
254 Setting this parameter to -1 selects all particle candidates.
255 The value of 0 rejects the particle candidates with failed fit.
256 massConstraint (list(int) or list(str)): list of PDG ids or Names of the particles which are mass-constrained
257 Please do not mix PDG id and particle names in massConstraint list.
258 ipConstraint (bool): constrain head production vertex to IP (x-y-z) constraint
259 customOriginConstraint (bool): use a custom origin vertex as the production vertex of your particle.
260 This is useful when fitting D*/D without wanting to fit a B but constraining the process to be B-decay-like.
261 (think of semileptonic modes and stuff with a neutrino in the B decay).
262 customOriginVertex (list(float)): 3d vector of the vertex coordinates you want to use as custom origin.
263 Default numbers are taken for B-mesons
264 customOriginCovariance (list(float)): 3x3 covariance matrix for the custom vertex (type: vector).
265 Default numbers extracted from generator distribution width of B-mesons.
266 updateAllDaughters (bool): if true the entire tree will be updated with the fitted values
267 for momenta and vertex position. Otherwise only the momenta of the head of the tree will be updated,
268 however for all daughters we also update the vertex position with the fit results as this would
269 otherwise be set to {0, 0, 0} contact us if this causes any hardship/confusion.
270 originDimension (int): If the origin or IP constraint (``customOriginVertex`` or ``ipConstraint``) are used,
271 this specifies the dimension of the constraint (3D or 2D).
272 treatAsInvisible (str): Decay string to select one particle that will be treated as invisible in the fit.
273 path (basf2.Path): modules are added to this path
275 treeFitter = register_module(
"TreeFitter")
276 treeFitter.set_name(
'TreeFitter_' + list_name)
278 if isinstance(massConstraint[0], str):
279 treeFitter.param(
'massConstraintListParticlename', massConstraint)
281 treeFitter.param(
'massConstraintList', massConstraint)
282 treeFitter.param(
'particleList', list_name)
283 treeFitter.param(
'confidenceLevel', conf_level)
284 treeFitter.param(
'ipConstraint', ipConstraint)
285 treeFitter.param(
'updateAllDaughters', updateAllDaughters)
286 treeFitter.param(
'customOriginConstraint', customOriginConstraint)
287 treeFitter.param(
'customOriginVertex', customOriginVertex)
288 treeFitter.param(
'customOriginCovariance', customOriginCovariance)
289 treeFitter.param(
'originDimension', originDimension)
290 treeFitter.param(
'treatAsInvisible', treatAsInvisible)
291 path.add_module(treeFitter)
298 trackFindingType="standard_PXD",
299 constraintType="tube",
304 kFitReqReducedChi2=5.0,
310 For each Particle in the given Breco ParticleList:
311 perform the fit of tag side using the track list from the RestOfEvent dataobject
312 save the MC Btag in case of signal MC
316 list_name (str): name of the input Breco ParticleList
317 MCassociation (str): use standard MC association or the internal one
318 confidenceLevel (float): minimum value of the ConfidenceLevel to accept the fit. 0 selects CL > 0
319 constraintType (str): choose the constraint used in the fit. Can be set to
322 * IP: **default**, tag B constrained to be on the IP;
323 * tube: tube along the tag B line of flight, only for fully reconstructed signal B;
324 * boost: long tube along the boost direction;
325 * (breco): deprecated, but similar to tube;
327 trackFindingType (str): choose how to look for tag tracks. Can be set to
329 * standard: all tracks except from Kshorts;
330 * standard_PXD: **default**, same as above but consider only tracks with at least 1 PXD hit.
331 If the fit fails, attempt again with the standard option;
333 fitAlgorithm (str): Fitter used for the tag vertex fit: Rave or KFit (default)
334 kFitReqReducedChi2 (float): The required chi2/ndf to accept the kFit result, if it is higher, iteration procedure is applied
335 askMCInfo (bool): True when requesting MC Information from the tracks performing the vertex fit
336 reqPXDHits (int): minimum N PXD hits for a track (default is 0)
337 maskName (str): get particles from a specified ROE mask
338 useTruthInFit (bool): True when the tag vertex fit is performed with the true momentum and
339 position of the tracks (default is false). The variable :b2:var:`TagVFitTruthStatus` is set to 1
340 if the truth-matching succeeds and 2 otherwise.
341 useRollBack (bool): True when the tag vertex fit is performed with position of tracks rolled back to
342 position of the mother B (default is false). The variable :b2:var:`TagVRollBackStatus` is set to 1
343 if the truth-matching succeeds and 2 otherwise.
344 path (basf2.Path): modules are added to this path
347 Note that the useFitAlgorithm (str) parameter is deprecated and replaced by constraintType (str)
348 and trackFindingType (str)
351 The trackFindingType ``singleTrack`` and ``singleTrack_PXD`` are broken and **cannot** be used any more.
354 tvfit = register_module(
'TagVertex')
355 tvfit.set_name(
'TagVertex_' + list_name)
356 tvfit.param(
'listName', list_name)
357 tvfit.param(
'maskName', maskName)
358 tvfit.param(
'confidenceLevel', confidenceLevel)
359 tvfit.param(
'MCAssociation', MCassociation)
360 tvfit.param(
'trackFindingType', trackFindingType)
361 tvfit.param(
'constraintType', constraintType)
362 tvfit.param(
'askMCInformation', askMCInfo)
363 tvfit.param(
'reqPXDHits', reqPXDHits)
364 tvfit.param(
'fitAlgorithm', fitAlgorithm)
365 tvfit.param(
'kFitReqReducedChi2', kFitReqReducedChi2)
366 tvfit.param(
'useTruthInFit', useTruthInFit)
367 tvfit.param(
'useRollBack', useRollBack)
368 path.add_module(tvfit)
376 Add a pseudo \"vertex fit\" which adds a covariance matrix from the combination of the four-vectors of the daughters.
377 This is similar to BaBar's "Add4" function.
378 It is commonly used for :math:`\\pi^0\\to\\gamma\\gamma` reconstruction where a vertex fit is not possible.
380 Here is the basic usage:
384 from modularAnalysis import fitPseudo
385 from stdPi0s import stdPi0s
386 stdPi0s("eff40_May2020", path=mypath)
387 fitPseudo("pi0:eff40_May2020", path=mypath)
390 list_name (str): the name of the list to add the covariance matrix to
391 path (basf2.Path): modules are added to this path
393 pseudofit = register_module(
'PseudoVertexFitter')
394 pseudofit.set_name(
'PseudoVertexFitter_' + list_name)
395 pseudofit.param(
'listName', list_name)
396 path.add_module(pseudofit)
399 if __name__ ==
'__main__':
401 pretty_print_module(__name__,
"vertex")