@@ -82,6 +82,7 @@ class HiggsMakeDecay : public IMeVPrtlDecay {
8282 bool fAllowMuonDecay ;
8383 bool fAllowPionDecay ;
8484 bool fAllowPi0Decay ;
85+ bool fNewFormFactor ;
8586 bool fAddTimeOfFlight ;
8687
8788};
@@ -127,24 +128,34 @@ double MuonPartialWidth(double higs_mass, double mixing) {
127128 return LeptonPartialWidth (Constants::Instance ().muon_mass , higs_mass, mixing);
128129}
129130
130- double PionPartialWidth (double pion_mass, double higs_mass, double mixing) {
131+ double PionPartialWidth (double pion_mass, double higs_mass, double mixing, bool use_new_ff ) {
131132 if (pion_mass * 2 >= higs_mass) return 0 .;
132133
133134 double higgs_vev = Constants::Instance ().higgs_vev ;
134135
135- double form_factor = (2 . / 9 .) * higs_mass * higs_mass + (11 . / 9 .) * pion_mass * pion_mass;
136+ double form_factor = 0 .;
137+ if (use_new_ff) {
138+ // New, improved form factor based on the plot in arXiv:1909.11670v4
139+ // This form factor is significnatly different than in older versions
140+ // The expression is a fit to the Fig. 1 left panel in arXiv:1909.11670v4
141+ form_factor = 0.537569 * pow (higs_mass - 2 * Constants::Instance ().pizero_mass ,0.75 );
142+ }
143+ else {
144+ // Old form factor
145+ form_factor = (2 . / 9 .) * higs_mass * higs_mass + (11 . / 9 .) * pion_mass * pion_mass;
146+ }
136147
137148 double width = (mixing * mixing * 3 * form_factor * form_factor / (32 * M_PI * higgs_vev * higgs_vev * higs_mass)) * pow (1 - 4 . * pion_mass * pion_mass / (higs_mass * higs_mass), 1 . / 2 .);
138149
139150 return width;
140151}
141152
142- double PiPlusPartialWidth (double higs_mass, double mixing) {
143- return 2 *PionPartialWidth (Constants::Instance ().piplus_mass , higs_mass, mixing);
153+ double PiPlusPartialWidth (double higs_mass, double mixing, bool use_new_ff ) {
154+ return 2 *PionPartialWidth (Constants::Instance ().piplus_mass , higs_mass, mixing, use_new_ff );
144155}
145156
146- double PiZeroPartialWidth (double higs_mass, double mixing) {
147- return PionPartialWidth (Constants::Instance ().pizero_mass , higs_mass, mixing);
157+ double PiZeroPartialWidth (double higs_mass, double mixing, bool use_new_ff ) {
158+ return PionPartialWidth (Constants::Instance ().pizero_mass , higs_mass, mixing, use_new_ff );
148159}
149160
150161HiggsMakeDecay::HiggsMakeDecay (fhicl::ParameterSet const &pset):
@@ -173,6 +184,7 @@ void HiggsMakeDecay::configure(fhicl::ParameterSet const &pset)
173184 fAllowMuonDecay = pset.get <bool >(" AllowMuonDecay" , true );
174185 fAllowPionDecay = pset.get <bool >(" AllowPionDecay" , true );
175186 fAllowPi0Decay = pset.get <bool >(" AllowPi0Decay" , true );
187+ fNewFormFactor = pset.get <bool >(" NewFormFactor" , true );
176188 fAddTimeOfFlight = pset.get <bool >(" AddTimeOfFlight" , true );
177189
178190 if (fReferenceHiggsEnergy < 0 . && fReferenceHiggsKaonEnergy > 0 .) {
@@ -185,8 +197,8 @@ void HiggsMakeDecay::configure(fhicl::ParameterSet const &pset)
185197 // Get each partial width
186198 double width_elec = ElectronPartialWidth (fReferenceHiggsMass , fReferenceHiggsMixing );
187199 double width_muon = MuonPartialWidth (fReferenceHiggsMass , fReferenceHiggsMixing );
188- double width_piplus = PiPlusPartialWidth (fReferenceHiggsMass , fReferenceHiggsMixing );
189- double width_pizero = PiZeroPartialWidth (fReferenceHiggsMass , fReferenceHiggsMixing );
200+ double width_piplus = PiPlusPartialWidth (fReferenceHiggsMass , fReferenceHiggsMixing , fNewFormFactor );
201+ double width_pizero = PiZeroPartialWidth (fReferenceHiggsMass , fReferenceHiggsMixing , fNewFormFactor );
190202
191203 // total lifetime
192204 double lifetime_ns = Constants::Instance ().hbar / (width_elec + width_muon + width_piplus + width_pizero);
@@ -241,8 +253,8 @@ bool HiggsMakeDecay::Decay(const MeVPrtlFlux &flux, const TVector3 &in, const TV
241253 // Get each partial width
242254 double width_elec = ElectronPartialWidth (flux.mass , mixing);
243255 double width_muon = MuonPartialWidth (flux.mass , mixing);
244- double width_piplus = PiPlusPartialWidth (flux.mass , mixing);
245- double width_pizero = PiZeroPartialWidth (flux.mass , mixing);
256+ double width_piplus = PiPlusPartialWidth (flux.mass , mixing, fNewFormFactor );
257+ double width_pizero = PiZeroPartialWidth (flux.mass , mixing, fNewFormFactor );
246258
247259 // total lifetime
248260 double lifetime_ns = Constants::Instance ().hbar / (width_elec + width_muon + width_piplus + width_pizero);
0 commit comments