Ejemplo n.º 1
0
// cascade decay for parent -> mediator + X, mediator > daughter1 + daughter 2
//This assumes no meaningful propagation before the decay occurs
void DecayDM(Particle &daughter1, Particle &daughter2, Particle &mediator, Particle &parent){
	double pmx, pmy, pmz, Em, pm;
	double ym, zm, thetam, phim;	
	double pdx, pdy, pdz, Ed, pd;
	double yd, zd, thetad, phid;	
	double lam;	
	//double polarX1, polarX2;
	//Particle darkphoton(MV);
	ym = Random::Flat(0,1);
	zm = Random::Flat(0,1);
    thetam = acos(-1+2*ym);
	phim = 2.0*pi*zm;
	double Md, Mm, Mp;
	Md = daughter1.m;
	Mm = mediator.m;
	Mp = parent.m;
	lam = lambda(1,Mm*Mm/Mp/Mp,0);
	Em = Mp/2.0*(1.0+Mm*Mm/Mp/Mp);
	pm = Mp/2.0*sqrt(lam);
	pmx = pm*sin(thetam)*cos(phim);
	pmy = pm*sin(thetam)*sin(phim);
	pmz = pm*cos(thetam);
	mediator.FourMomentum(pmx,pmy,pmz,Em);
    // boost darkphoton to lab frame
	mediator.Lorentz(parent);	
    // generate dark matter momentum in dark photon rest frame
    yd = Random::Flat(0,1);
	zd = Random::Flat(0,1);
	thetad = acos(-1+2*yd);
	phid = 2.0*pi*zd;
	lam = lambda(1,Md*Md/Mm/Mm,Md*Md/Mm/Mm);
	Ed = Mm/2.0;
	pd = Mm/2.0*sqrt(lam);
	pdx = pd*sin(thetad)*cos(phid);
	pdy = pd*sin(thetad)*sin(phid);
	pdz = pd*cos(thetad);
	daughter1.FourMomentum(pdx,pdy,pdz,Ed);
	daughter2.FourMomentum(-pdx,-pdy,-pdz,Ed);
	// boost dark matter particles to lab frame
	daughter1.Lorentz(mediator);	
	daughter2.Lorentz(mediator);
	//cout << parent.name << " " << parent.end_coords[0] << " " << parent.end_coords[1] << " " << parent.end_coords[2] << endl;
	Link_Particles(parent,mediator);
	Link_Particles_Immediate(mediator,daughter1);
	Link_Particles_Immediate(mediator,daughter2);
	//cout << daughter1.name << " " << daughter1.end_coords[0] << " " << daughter1.end_coords[1] << " " << daughter1.end_coords[2] << endl;
	//cout << daughter2.name << " " << daughter2.end_coords[0] << " " << daughter2.end_coords[1] << " " << daughter2.end_coords[2] << endl;
}
Ejemplo n.º 2
0
// two body decay of parent ->  daughter + X (e.g. Pi0 -> gamma + V)
// output momentum of daughter particle in the lab frame
void DecayDP(Particle &daughter, Particle &parent){
	double pdx, pdy, pdz, Ed, pd;
	double thetad, phid;		
	double lam;	
	thetad = acos(-1+2*Random::Flat(0,1));
	phid = Random::Flat(0,2.0*pi*Random::Flat(0,1));
	double Md, Mp;
	Md = daughter.m;
	Mp = parent.m;
	lam = lambda(1,Md*Md/Mp/Mp,0);
	Ed = Mp/2.0*(1.0+Md*Md/Mp/Mp);
	pd = Mp/2.0*sqrt(lam);
	pdx = pd*sin(thetad)*cos(phid);
	pdy = pd*sin(thetad)*sin(phid);
	pdz = pd*cos(thetad);
	daughter.FourMomentum(pdx,pdy,pdz,Ed);
	// boost darkphoton to lab frame
	daughter.Lorentz(parent);
	Link_Particles(parent,daughter);	
}