6 #include "art/Framework/Core/EDProducer.h"
7 #include "art/Framework/Principal/Event.h"
8 #include "art/Framework/Principal/Handle.h"
9 #include "art/Framework/Services/Registry/ServiceHandle.h"
10 #include "art/Persistency/Common/PtrMaker.h"
11 #include "art/Utilities/ToolMacros.h"
12 #include "cetlib/cpu_timer.h"
13 #include "fhiclcpp/ParameterSet.h"
14 #include "messagefacility/MessageLogger/MessageLogger.h"
15 #include "CLHEP/Random/RandFlat.h"
25 #include "nugen/EventGeneratorBase/GENIE/EvtTimeShiftFactory.h"
26 #include "nugen/EventGeneratorBase/GENIE/EvtTimeShiftI.h"
36 #include "TDatabasePDG.h"
62 void configure(
const fhicl::ParameterSet&)
override;
94 double higgs_momentum(
double kaon_mass,
double pion_mass,
double higs_mass) {
95 return sqrt(kaon_mass * kaon_mass * kaon_mass * kaon_mass
96 -2 * kaon_mass * kaon_mass * pion_mass * pion_mass
97 -2 * kaon_mass * kaon_mass * higs_mass * higs_mass
98 + pion_mass * pion_mass * pion_mass * pion_mass
99 + higs_mass * higs_mass * higs_mass * higs_mass
100 -2 * pion_mass * pion_mass * higs_mass * higs_mass) / ( 2 * kaon_mass );
114 double M_KP = (1. / 2.) * ( 3. / (16. * M_PI * M_PI * higgs_vev * higgs_vev * higgs_vev)) * (kplus_mass * kplus_mass) * (tquark_mass * tquark_mass) * mixing;
115 double M_KP2 = M_KP * M_KP * abs_VtsVtd_squared;
117 double kplus_width = (2 *
higgs_momentum(kplus_mass, piplus_mass, higs_mass)/kplus_mass) * M_KP2 / (16 * M_PI * kplus_mass);
135 double M_KL = (1. / 2.) * (3. / (16. * M_PI * M_PI * higgs_vev * higgs_vev * higgs_vev)) * (klong_mass * klong_mass) * (tquark_mass * tquark_mass) * mixing;
136 double M_KL2 = M_KL * M_KL * rel_VtsVtd_squared;
138 double klong_width = (2 *
higgs_momentum(klong_mass, pizero_mass, higs_mass) / klong_mass) * M_KL2 / (16 * M_PI * klong_mass);
157 return 0.6339 + 0.0559 + 0.0330 ;
159 return 0.6339 + 0.0559 + 0.0330 ;
161 return 0.2020 + 0.2020 + 0.1348 + 0.1348 ;
183 fM = pset.get<
double>(
"M");
186 fKDAROnly = pset.get<
bool>(
"KDAROnly",
false);
187 fKDIFOnly = pset.get<
bool>(
"KDIFOnly",
false);
193 throw cet::exception(
"Kaon2HiggsFlux Tool: BAD MASS. Configured mass (" +
std::to_string(
fM) +
221 if (
fKDAROnly && (kaon.
mom.P() > 1
e-3 || kaon.
pos.Z() < 72000.))
return false;
224 std::cout <<
"found KDAR, skipping to next event\n";
239 double kaon_mass = kaon.
mom.M();
240 double higs_mass =
fM;
241 double pion_mass = TDatabasePDG::Instance()->GetParticle(
PionPdg(kaon.
kaon_pdg))->Mass();
244 if (kaon_mass - pion_mass < higs_mass)
return false;
252 mom.SetVectM(kaon_frame_momentum, higs_mass);
253 mom.Boost(kaon.
mom.BoostVector());
268 weight = weight *
fKLBR;
271 weight = weight *
fKPBR;
TLorentzVector pos_beamcoord
TLorentzVector sec_beamcoord
double KaonLongBranchingRatio(double higs_mass, double mixing)
double abs_VtsVtd_squared
void configure(const fhicl::ParameterSet &) override
Interface for configuring the particular algorithm tool.
double KaonPlusBranchingRatio(double higs_mass, double mixing)
TLorentzVector mom_beamcoord
double MaxWeight() override
Kaon2HiggsFlux(fhicl::ParameterSet const &pset)
Constructor.
~Kaon2HiggsFlux()
Destructor.
double fMixingAngle
Mixing angle of dark higgs.
bool fIgnoreParentDecayTime
double fM
Mass of Higgs [GeV].
double higgs_momentum(double kaon_mass, double pion_mass, double higs_mass)
IMeVPrtlStage interface class definiton. General interface behind each stage. Provides random number ...
static const Constants & Instance()
double rel_VtsVtd_squared
double SMKaonBR(int kaon_pdg)
TLorentzVector BeamOrigin()
Kaon2HiggsFlux class definiton Implementation of model taken from: https://arxiv.org/abs/1909.11670.
std::string to_string(WindowPattern const &pattern)
This is an interface for an art Tool which turns MCFlux objects (which is a meson decay to neutrinos)...
TVector3 RandomUnitVector()
double EnuLab(double enucm, TLorentzVector meson_mom, TLorentzVector meson_pos)
IMeVPrtlFlux interface class definiton.
TLorentzVector kmom_beamcoord
int PionPdg(int kaon_pdg)
BEGIN_PROLOG could also be cout
bool MakeFlux(const simb::MCFlux &flux, MeVPrtlFlux &higgs, double &weight) override