516 def findBranchingRatio(self, decayString):
517 """
518 Returns the branching ratio of the selected HNL decay channel
519
520 Inputs:
521 - decayString is a string describing the decay, in the form 'N -> stuff1 ... stuffN'
522 """
523 br = 0.0
524 totalWidth = self.NDecayWidth()
525
526 if (decayString not in self.decays) and (decayString not in ["N -> hadrons", "N -> charged hadrons"]):
527 print("findBranchingRatio ERROR: unknown decay %s" % decayString)
528 quit()
529
530 if decayString == "N -> nu nu nu" or decayString == "N -> 3nu":
531 br = self.Width_3nu() / totalWidth
532 if decayString == "N -> e- e+ nu_e":
533 br = self.Width_nu_f_fbar(1, 1) / totalWidth
534 if decayString == "N -> e- e+ nu_mu":
535 br = self.Width_nu_f_fbar(2, 1) / totalWidth
536 if decayString == "N -> e- e+ nu_tau":
537 br = self.Width_nu_f_fbar(3, 1) / totalWidth
538 if decayString == "N -> e- mu+ nu_mu":
539 br = self.Width_l1_l2_nu2(1, 2) / totalWidth
540 if decayString == "N -> mu- e+ nu_e":
541 br = self.Width_l1_l2_nu2(2, 1) / totalWidth
542 if decayString == "N -> pi0 nu_e":
543 br = self.Width_H0_nu("pi0", 1) / totalWidth
544 if decayString == "N -> pi0 nu_mu":
545 br = self.Width_H0_nu("pi0", 2) / totalWidth
546 if decayString == "N -> pi0 nu_tau":
547 br = self.Width_H0_nu("pi0", 3) / totalWidth
548 if decayString == "N -> pi+ e-":
549 br = self.Width_H_l("pi+", 1) / totalWidth
550 if decayString == "N -> mu- mu+ nu_e":
551 br = self.Width_nu_f_fbar(1, 2) / totalWidth
552 if decayString == "N -> mu- mu+ nu_mu":
553 br = self.Width_nu_f_fbar(2, 2) / totalWidth
554 if decayString == "N -> mu- mu+ nu_tau":
555 br = self.Width_nu_f_fbar(3, 2) / totalWidth
556 if decayString == "N -> pi+ mu-":
557 br = self.Width_H_l("pi+", 2) / totalWidth
558 if decayString == "N -> eta nu_e":
559 br = self.Width_H0_nu("eta", 1) / totalWidth
560 if decayString == "N -> eta nu_mu":
561 br = self.Width_H0_nu("eta", 2) / totalWidth
562 if decayString == "N -> eta nu_tau":
563 br = self.Width_H0_nu("eta", 3) / totalWidth
564 if decayString == "N -> rho0 nu_e":
565 br = self.Width_H0_nu("rho0", 1) / totalWidth
566 if decayString == "N -> rho0 nu_mu":
567 br = self.Width_H0_nu("rho0", 2) / totalWidth
568 if decayString == "N -> rho0 nu_tau":
569 br = self.Width_H0_nu("rho0", 3) / totalWidth
570 if decayString == "N -> rho+ e-":
571 br = self.Width_H_l("rho+", 1) / totalWidth
572 if decayString == "N -> omega nu_e":
573 br = self.Width_H0_nu("omega", 1) / totalWidth
574 if decayString == "N -> omega nu_mu":
575 br = self.Width_H0_nu("omega", 2) / totalWidth
576 if decayString == "N -> omega nu_tau":
577 br = self.Width_H0_nu("omega", 3) / totalWidth
578 if decayString == "N -> rho+ mu-":
579 br = self.Width_H_l("rho+", 2) / totalWidth
580 if decayString == "N -> eta1 nu_e":
581 br = self.Width_H0_nu("eta1", 1) / totalWidth
582 if decayString == "N -> eta1 nu_mu":
583 br = self.Width_H0_nu("eta1", 2) / totalWidth
584 if decayString == "N -> eta1 nu_tau":
585 br = self.Width_H0_nu("eta1", 3) / totalWidth
586 if decayString == "N -> phi nu_e":
587 br = self.Width_H0_nu("phi", 1) / totalWidth
588 if decayString == "N -> phi nu_mu":
589 br = self.Width_H0_nu("phi", 2) / totalWidth
590 if decayString == "N -> phi nu_tau":
591 br = self.Width_H0_nu("phi", 3) / totalWidth
592 if decayString == "N -> e- tau+ nu_tau":
593 br = self.Width_l1_l2_nu2(1, 3) / totalWidth
594 if decayString == "N -> tau- e+ nu_e":
595 br = self.Width_l1_l2_nu2(3, 1) / totalWidth
596 if decayString == "N -> mu- tau+ nu_tau":
597 br = self.Width_l1_l2_nu2(2, 3) / totalWidth
598 if decayString == "N -> tau- mu+ nu_mu":
599 br = self.Width_l1_l2_nu2(3, 2) / totalWidth
600 if decayString == "N -> D_s+ e-":
601 br = self.Width_H_l("D_s+", 1) / totalWidth
602 if decayString == "N -> D_s+ mu-":
603 br = self.Width_H_l("D_s+", 2) / totalWidth
604 if decayString == "N -> D*_s+ e-":
605 br = self.Width_H_l("D*_s+", 1) / totalWidth
606 if decayString == "N -> D*_s+ mu-":
607 br = self.Width_H_l("D*_s+", 2) / totalWidth
608 if decayString == "N -> eta_c nu_e":
609 br = self.Width_H0_nu("eta_c", 1) / totalWidth
610 if decayString == "N -> eta_c nu_mu":
611 br = self.Width_H0_nu("eta_c", 2) / totalWidth
612 if decayString == "N -> eta_c nu_tau":
613 br = self.Width_H0_nu("eta_c", 3) / totalWidth
614
615 if decayString == "N -> hadrons":
616 mesonWidth = self.Width_neutral_mesons() + self.Width_charged_mesons()
617 quarkWidth = self.Width_quarks_neutrino() + self.Width_quarks_lepton()
618 br = max([mesonWidth, quarkWidth]) / totalWidth
619 if decayString == "N -> charged hadrons":
620 br = max([self.Width_charged_mesons(), self.Width_quarks_lepton()]) / totalWidth
621 return br
622