462 def findBranchingRatio(self, decayString):
463 """
464 Returns the branching ratio of the selected HNL decay channel
465
466 Inputs:
467 - decayString is a string describing the decay, in the form 'N -> stuff1 ... stuffN'
468 """
469 br = 0.
470 totalWidth = self.NDecayWidth()
471
472 if (decayString not in self.decays) and (decayString not in ['N -> hadrons','N -> charged hadrons']):
473 print('findBranchingRatio ERROR: unknown decay %s'%decayString)
474 quit()
475
476 if decayString == 'N -> nu nu nu' or decayString == 'N -> 3nu': br = self.Width_3nu() / totalWidth
477 if decayString == 'N -> e- e+ nu_e': br = self.Width_nu_f_fbar(1,1) / totalWidth
478 if decayString == 'N -> e- e+ nu_mu': br = self.Width_nu_f_fbar(2,1) / totalWidth
479 if decayString == 'N -> e- e+ nu_tau': br = self.Width_nu_f_fbar(3,1) / totalWidth
480 if decayString == 'N -> e- mu+ nu_mu': br = self.Width_l1_l2_nu2(1,2) / totalWidth
481 if decayString == 'N -> mu- e+ nu_e': br = self.Width_l1_l2_nu2(2,1) / totalWidth
482 if decayString == 'N -> pi0 nu_e': br = self.Width_H0_nu('pi0',1) / totalWidth
483 if decayString == 'N -> pi0 nu_mu': br = self.Width_H0_nu('pi0',2) / totalWidth
484 if decayString == 'N -> pi0 nu_tau': br = self.Width_H0_nu('pi0',3) / totalWidth
485 if decayString == 'N -> pi+ e-': br = self.Width_H_l('pi+',1) / totalWidth
486 if decayString == 'N -> mu- mu+ nu_e': br = self.Width_nu_f_fbar(1,2) / totalWidth
487 if decayString == 'N -> mu- mu+ nu_mu': br = self.Width_nu_f_fbar(2,2) / totalWidth
488 if decayString == 'N -> mu- mu+ nu_tau': br = self.Width_nu_f_fbar(3,2) / totalWidth
489 if decayString == 'N -> pi+ mu-': br = self.Width_H_l('pi+',2) / totalWidth
490 if decayString == 'N -> eta nu_e': br = self.Width_H0_nu('eta',1) / totalWidth
491 if decayString == 'N -> eta nu_mu': br = self.Width_H0_nu('eta',2) / totalWidth
492 if decayString == 'N -> eta nu_tau': br = self.Width_H0_nu('eta',3) / totalWidth
493 if decayString == 'N -> rho0 nu_e': br = self.Width_H0_nu('rho0',1) / totalWidth
494 if decayString == 'N -> rho0 nu_mu': br = self.Width_H0_nu('rho0',2) / totalWidth
495 if decayString == 'N -> rho0 nu_tau': br = self.Width_H0_nu('rho0',3) / totalWidth
496 if decayString == 'N -> rho+ e-': br = self.Width_H_l('rho+',1) / totalWidth
497 if decayString == 'N -> omega nu_e': br = self.Width_H0_nu('omega',1) / totalWidth
498 if decayString == 'N -> omega nu_mu': br = self.Width_H0_nu('omega',2) / totalWidth
499 if decayString == 'N -> omega nu_tau': br = self.Width_H0_nu('omega',3) / totalWidth
500 if decayString == 'N -> rho+ mu-': br = self.Width_H_l('rho+',2) / totalWidth
501 if decayString == 'N -> eta1 nu_e': br = self.Width_H0_nu('eta1',1) / totalWidth
502 if decayString == 'N -> eta1 nu_mu': br = self.Width_H0_nu('eta1',2) / totalWidth
503 if decayString == 'N -> eta1 nu_tau': br = self.Width_H0_nu('eta1',3) / totalWidth
504 if decayString == 'N -> phi nu_e': br = self.Width_H0_nu('phi',1) / totalWidth
505 if decayString == 'N -> phi nu_mu': br = self.Width_H0_nu('phi',2) / totalWidth
506 if decayString == 'N -> phi nu_tau': br = self.Width_H0_nu('phi',3) / totalWidth
507 if decayString == 'N -> e- tau+ nu_tau': br = self.Width_l1_l2_nu2(1,3) / totalWidth
508 if decayString == 'N -> tau- e+ nu_e': br = self.Width_l1_l2_nu2(3,1) / totalWidth
509 if decayString == 'N -> mu- tau+ nu_tau': br = self.Width_l1_l2_nu2(2,3) / totalWidth
510 if decayString == 'N -> tau- mu+ nu_mu': br = self.Width_l1_l2_nu2(3,2) / totalWidth
511 if decayString == 'N -> D_s+ e-': br = self.Width_H_l('D_s+',1) / totalWidth
512 if decayString == 'N -> D_s+ mu-': br = self.Width_H_l('D_s+',2) / totalWidth
513 if decayString == 'N -> D*_s+ e-': br = self.Width_H_l('D*_s+',1) / totalWidth
514 if decayString == 'N -> D*_s+ mu-': br = self.Width_H_l('D*_s+',2) / totalWidth
515 if decayString == 'N -> eta_c nu_e': br = self.Width_H0_nu('eta_c',1) / totalWidth
516 if decayString == 'N -> eta_c nu_mu': br = self.Width_H0_nu('eta_c',2) / totalWidth
517 if decayString == 'N -> eta_c nu_tau': br = self.Width_H0_nu('eta_c',3) / totalWidth
518
519 if decayString == 'N -> hadrons':
520 mesonWidth = self.Width_neutral_mesons() + self.Width_charged_mesons()
521 quarkWidth = self.Width_quarks_neutrino() + self.Width_quarks_lepton()
522 br = max([mesonWidth, quarkWidth]) / totalWidth
523 if decayString == 'N -> charged hadrons':
524 br = max([self.Width_charged_mesons(), self.Width_quarks_lepton()]) / totalWidth
525 return br
526