30 alpha_em = (1./137.036);
31 vacmass_pi0 = 0.1349764;
32 mass_electron = 0.00051099906;
33 mass_nucleon = 0.93827231;
34 vacmass_eta = 0.54745;
35 vacmass_etaprime = 0.9577;
37 vacmass_omega = 0.78194;
38 vacmass_phi = 1.019413;
39 vacmass_delta = 1.2320;
46 gamma_photon = 0.00075561;
54 lambda_etaprime = 0.76;
68void PHUrDilep::Output(TString infile,TString outfile) {
69 if(outfile.CompareTo(
"") != 0) {
70 out = fopen(outfile.Data(),
"w");
71 fprintf(
out,
"# InputFile : %s\n", infile.Data());
72 fprintf(
out,
"# OutputFile : %s\n", outfile.Data());
73 fprintf(
out,
"# ityp weight mres p0_el_lab px_el_lab py_el_lab pz_el_lab p0_po_lab px_po_lab py_po_lab pz_po_lab tau time_start time_end flag dens_cre dens_abs noe bev acce accp\n");
89 Double_t ebeam = (
evtheader->E_beam+mass_nucleon);
90 Double_t pbeam = sqrt(pow(ebeam,2) - pow(mass_nucleon,2));
92 Double_t beta = pbeam/(ebeam+mass_nucleon);
93 Double_t gamma = 1./sqrt(1.-beta*beta);
96 Double_t smin, smax, tmax;
97 smin = smax = tmax = 0;
101 Double_t xgstar, ygstar, zgstar, tgstar;
102 Double_t xgamma, ygamma, zgamma;
106 Double_t p0_gstar, p0_nucleon, p0_pion, p0_gamma;
110 weight, smin, smax, tmax);
126 Double_t weight_omegadir = 0;
127 for(Int_t
n = 1;
n <= multi;
n++) {
138 while(validm < multi){
142 gamma_star(smin, smax, tmax,
144 xgstar, ygstar, zgstar, tgstar,
145 xgamma, ygamma, zgamma, tgamma);
162 if(p0_gstar > mgstar) {
165 lobo_dal(p0_gstar, p0_pion,
167 xgstar, ygstar, zgstar, tgstar, xgamma, ygamma, zgamma,
particleOut->mass);
169 Output(
omegadal, weight, mgstar, multi, tau);
178 for(Int_t
n = 1;
n <= multi;
n++){
191 for(Int_t
n = 1;
n <= multi;
n++){
206 while(validm < multi) {
207 gamma_star(smin, smax, tmax,
209 xgstar, ygstar, zgstar, tgstar,
210 xgamma, ygamma, zgamma, tgamma);
216 Double_t mass_gamma = 0;
224 lobo_dal(p0_gstar,p0_gamma,
226 xgstar,ygstar,zgstar,tgstar,xgamma,ygamma,zgamma,
particleOut->mass);
228 Output (
pion,weight,mgstar,multi,tau);
237 while (validm < multi) {
238 gamma_star(smin, smax, tmax,
240 xgstar, ygstar, zgstar, tgstar,
241 xgamma, ygamma, zgamma, tgamma);
247 Double_t mass_gamma = 0;
255 lobo_dal(p0_gstar, p0_gamma,
257 xgstar, ygstar, zgstar, tgstar, xgamma, ygamma, zgamma,
particleOut->mass);
259 Output(
etaprime, weight, mgstar, multi, tau);
269 while(validm < multi) {
270 gamma_star(smin, smax, tmax,
272 xgstar, ygstar, zgstar, tgstar,
273 xgamma, ygamma, zgamma, tgamma);
279 Double_t mass_gamma = 0;
287 lobo_dal(p0_gstar, p0_gamma, mgstar, beta, gamma,
288 xgstar, ygstar, zgstar, tgstar, xgamma, ygamma, zgamma,
particleOut->mass);
290 Output (
eta, weight, mgstar, multi, tau);
305 while(validm < multi) {
310 gamma_star(smin, smax, tmax,
312 xgstar, ygstar, zgstar, tgstar,
313 xgamma, ygamma, zgamma, tgamma);
328 lobo_dal(p0_gstar, p0_nucleon,
330 xgstar, ygstar, zgstar, tgstar, xgamma, ygamma, zgamma,
particleOut->mass);
332 Output(
delta, weight, mgstar, multi, tau);
339void PHUrDilep::dalpi(Double_t mx, Double_t &dgamma) {
342 Double_t t1 = ((4.*alpha_em)/(3.*TMath::Pi()*mx))*
343 sqrt(1.-(4.*pow(mass_electron,2))/(pow(mx,2)))*
344 (1.+(2.*pow(mass_electron,2))/(pow(mx,2)));
345 Double_t t2 = pow((1.-(pow(mx,2))/(pow(vacmass_pi0,2))),3);
346 Double_t
f1 = pow((1.+b_pi0*pow(mx,2)),2);
347 dgamma = t1*t2*
f1*br_pi0;
350void PHUrDilep::daleta(Double_t mx, Double_t &dgamma) {
354 Double_t t1 =((4.*alpha_em)/(3.*TMath::Pi()*mx))*
355 sqrt(1.-(4.*pow(mass_electron,2))/(pow(mx,2)))*(1.+
356 (2.*pow(mass_electron,2))/(pow(mx,2)));
357 Double_t t2 = pow((1.-(pow(mx,2))/(pow(vacmass_eta,2))),3);
361 Double_t
f1 = pow((1./(1.-(pow(mx,2))/(pow(lambda_eta,2)))),2);
363 dgamma = t1*t2*
f1*br_eta;
366void PHUrDilep::daletaprime(Double_t mx, Double_t &dgamma) {
371 Double_t t1 = ((4.*alpha_em)/(3.*TMath::Pi()*mx))
372 *sqrt(1.-(4.*pow(mass_electron,2))/(pow(mx,2)))*(1.+
373 (2.*pow(mass_electron,2))/(pow(mx,2)));
374 Double_t t2 = pow((1.-(pow(mx,2))/(pow(vacmass_etaprime,2))),3);
378 Double_t
f1 = (pow(lambda_etaprime,2)*
379 (pow(lambda_etaprime,2)+pow(gamma_etaprime,2)))/
380 (pow((pow(lambda_etaprime,2)-pow(mx,2)),2)+
381 (pow(lambda_etaprime,2)*pow(gamma_etaprime,2)));
383 dgamma = t1*t2*
f1*br_etaprime;
386void PHUrDilep::daldelta(Double_t tau, Double_t mx, Double_t mres, Double_t &dgamma) {
392 Double_t pf = sqrt((pow(mres,2)-pow((mass_nucleon+mx),2))*
393 (pow(mres,2)-pow((mass_nucleon-mx),2)))/2./mres;
395 Double_t q0 = sqrt(pow(mx,2)+pow(pf,2));
398 Double_t
f = (-3./2.)*(mres+mass_nucleon)/(mass_nucleon*
399 (pow((mres+mass_nucleon),2)-pow(mx,2)));
401 Double_t e = sqrt(4.*TMath::Pi()*alpha_em);
403 Double_t mt = pow(e*
f*g,2)*pow(mres,2)/9./mass_nucleon *(q0*q0*(5.*mres-3.*
404 (q0+mass_nucleon))-pow(mx,2)*(mres+mass_nucleon+q0));
406 Double_t ml = pow(e*
f*g,2)*pow(mres,2)/9./mass_nucleon*pow(mx,2)*4.*
407 (mres-mass_nucleon-q0);
409 Double_t lambda = pow(mx,4)+pow(mass_nucleon,4)+pow(mres,4)-2.*
410 (pow(mx,2)*pow(mass_nucleon,2)+pow(mx,2)*pow(mres,2)+pow(mass_nucleon,2)*pow(mres,2));
412 Double_t gamma0 = sqrt(lambda)/(16.*TMath::Pi()*pow(mres,2))*mass_nucleon*(2.*mt+ml);
413 dgamma = (2.*alpha_em)/(3.*TMath::Pi()*mx)*gamma0*(tau/gev);
417void PHUrDilep::dalomega(Double_t tau, Double_t mx, Double_t &dgamma) {
421 Double_t t1 = ((2.*alpha_em)/(3.*TMath::Pi()*mx))*
422 sqrt(1.-(4.*pow(mass_electron,2))/(pow(mx,2)))*(1.+
423 (2.*pow(mass_electron,2))/(pow(mx,2)));
425 Double_t t2 = sqrt(pow((1.+(pow(mx,2))/(pow(vacmass_omega,2)-pow(vacmass_pi0,2))),2)-
426 pow(((2.*vacmass_omega*mx)/(pow(vacmass_omega,2)-pow(vacmass_pi0,2))),2));
428 Double_t
f1 =(pow(lambda_omega,2)*(pow(lambda_omega,2)+pow(gamma_omega,2)))/
429 (pow((pow(lambda_omega,2)-pow(mx,2)),2)+(pow(lambda_omega,2)*pow(gamma_omega,2)));
431 dgamma = t1*pow(t2,3)*
f1*gamma_photon*(tau/gev);
434void PHUrDilep::diromega(Double_t tau, Double_t mres, Int_t multi, Double_t &weight) {
436 const Double_t cv = 0.000000778869;
438 Double_t dwidth = cv/pow(mres,3)*pow(vacmass_omega,4);
439 Double_t br = dwidth*(tau/gev);
444void PHUrDilep::dirphi(Double_t, Double_t mres, Int_t multi, Double_t &weight) {
446 const Double_t gamma_tot = 0.00426;
447 const Double_t cv = 0.0000012411;
449 Double_t dwidth = cv/pow(mres,3)*pow(vacmass_phi,4);
450 Double_t br = dwidth/gamma_tot;
455void PHUrDilep::dirrho(Double_t tau, Double_t mres, Int_t multi, Double_t &weight) {
457 const Double_t cv = 0.0000090545;
459 Double_t dwidth = (cv/ pow(mres,3))*pow(vacmass_rho,4);
460 Double_t br = dwidth*(tau/gev);
465void PHUrDilep::lobo_dal(Double_t p0_gstar, Double_t,
466 Double_t m_gstar, Double_t beta, Double_t gamma,
467 Double_t x_gstar, Double_t y_gstar, Double_t z_gstar, Double_t,
468 Double_t, Double_t, Double_t,
477 Double_t p_gstar = sqrt(p0_gstar*p0_gstar - m_gstar*m_gstar);
478 Double_t px_gstar = x_gstar*p_gstar;
479 Double_t py_gstar = y_gstar*p_gstar;
480 Double_t pz_gstar = z_gstar*p_gstar;
482 Double_t phi_el = 2.*TMath::Pi()*rndfunc();
483 Double_t x = rndfunc();
484 Double_t sin_theta_el = (x-0.5)*2.;
485 Double_t theta_el = asin(sin_theta_el)+TMath::PiOver2();
487 Double_t phi_po = phi_el + TMath::Pi() ;
489 if(phi_po > 2*TMath::Pi()){
490 phi_po = phi_po-2*TMath::Pi();
492 Double_t theta_po = 0;
493 if(theta_el <= TMath::Pi()){
494 theta_po = TMath::Pi()-theta_el;
499 Double_t x_el = sin(theta_el)*cos(phi_el);
500 Double_t y_el = sin(theta_el)*sin(phi_el);
501 Double_t z_el = cos(theta_el);
503 Double_t x_po = sin(theta_po)*cos(phi_po);
504 Double_t y_po = sin(theta_po)*sin(phi_po);
505 Double_t z_po = cos(theta_po);
508 Double_t p0_el = m_gstar/2.;
509 Double_t p0_po = m_gstar/2.;
511 Double_t p_el = sqrt(p0_el*p0_el-mass_electron*mass_electron);
512 Double_t p_po = sqrt(p0_po*p0_po-mass_electron*mass_electron);
515 Double_t px_el = x_el*p_el;
516 Double_t py_el = y_el*p_el;
517 Double_t pz_el = z_el*p_el;
519 Double_t px_po = x_po*p_po;
520 Double_t py_po = y_po*p_po;
521 Double_t pz_po = z_po*p_po;
524 Double_t beta_x_gstar = -px_gstar/p0_gstar;
525 Double_t beta_y_gstar = -py_gstar/p0_gstar;
526 Double_t beta_z_gstar = -pz_gstar/p0_gstar;
528 Double_t beta_gstar = sqrt(beta_x_gstar*beta_x_gstar+beta_y_gstar*beta_y_gstar+beta_z_gstar*beta_z_gstar);
529 Double_t gamma_gstar = 1./sqrt(1-beta_gstar*beta_gstar);
531 Double_t p0_el_res = gamma_gstar*p0_el - beta_x_gstar*gamma_gstar*px_el -
532 beta_y_gstar*gamma_gstar*py_el -beta_z_gstar*gamma_gstar*pz_el;
534 Double_t px_el_res = (-beta_x_gstar*gamma_gstar)*p0_el +
535 (1+(gamma_gstar-1)*((beta_x_gstar*beta_x_gstar)/
536 (beta_gstar*beta_gstar)))*px_el +
537 (gamma_gstar-1)*((beta_x_gstar*beta_y_gstar)/
538 (beta_gstar*beta_gstar))*py_el +
539 (gamma_gstar-1)*((beta_x_gstar*beta_z_gstar)/
540 (beta_gstar*beta_gstar))*pz_el;
542 Double_t py_el_res = (-beta_y_gstar*gamma_gstar)*p0_el +
543 (gamma_gstar-1)*((beta_x_gstar*beta_y_gstar)/
544 (beta_gstar*beta_gstar))*px_el +
545 (1+(gamma_gstar-1)*((beta_y_gstar*beta_y_gstar)/
546 (beta_gstar*beta_gstar)))*py_el +
547 (gamma_gstar-1)*((beta_y_gstar*beta_z_gstar)/
548 (beta_gstar*beta_gstar))*pz_el;
550 Double_t pz_el_res = (-beta_z_gstar*gamma_gstar)*p0_el +
551 (gamma_gstar-1)*((beta_x_gstar*beta_z_gstar)/
552 (beta_gstar*beta_gstar))*px_el +
553 (gamma_gstar-1)*((beta_y_gstar*beta_z_gstar)/
554 (beta_gstar*beta_gstar))*py_el +
555 (1+(gamma_gstar-1)*((beta_z_gstar*beta_z_gstar)/
556 (beta_gstar*beta_gstar)))*pz_el;
558 Double_t p0_po_res = gamma_gstar*p0_po - beta_x_gstar*gamma_gstar*px_po -
559 beta_y_gstar*gamma_gstar*py_po -beta_z_gstar*gamma_gstar*pz_po;
561 Double_t px_po_res = (-beta_x_gstar*gamma_gstar)*p0_po +
562 (1+(gamma_gstar-1)*((beta_x_gstar*beta_x_gstar)/
563 (beta_gstar*beta_gstar)))*px_po +
564 (gamma_gstar-1)*((beta_x_gstar*beta_y_gstar)/
565 (beta_gstar*beta_gstar))*py_po +
566 (gamma_gstar-1)*((beta_x_gstar*beta_z_gstar)/
567 (beta_gstar*beta_gstar))*pz_po;
569 Double_t py_po_res = (-beta_y_gstar*gamma_gstar)*p0_po +
570 (gamma_gstar-1)*((beta_x_gstar*beta_y_gstar)/
571 (beta_gstar*beta_gstar))*px_po +
572 (1+(gamma_gstar-1)*((beta_y_gstar*beta_y_gstar)/
573 (beta_gstar*beta_gstar)))*py_po +
574 (gamma_gstar-1)*((beta_y_gstar*beta_z_gstar)/
575 (beta_gstar*beta_gstar))*pz_po;
577 Double_t pz_po_res = (-beta_z_gstar*gamma_gstar)*p0_po +
578 (gamma_gstar-1)*((beta_x_gstar*beta_z_gstar)/
579 (beta_gstar*beta_gstar))*px_po +
580 (gamma_gstar-1)*((beta_y_gstar*beta_z_gstar)/
581 (beta_gstar*beta_gstar))*py_po +
582 (1+(gamma_gstar-1)*((beta_z_gstar*beta_z_gstar)/
583 (beta_gstar*beta_gstar)))*pz_po;
587 Double_t beta_x_res = -px_res/p0_res;
588 Double_t beta_y_res = -py_res/p0_res;
589 Double_t beta_z_res = -pz_res/p0_res;
591 Double_t beta_res = sqrt(beta_x_res*beta_x_res+beta_y_res*beta_y_res+beta_z_res*beta_z_res);
593 Double_t gamma_res = 1./sqrt(1-beta_res*beta_res);
595 Double_t p0_el_cm = gamma_res*p0_el_res-beta_x_res*gamma_res*px_el_res-
596 beta_y_res*gamma_res*py_el_res-beta_z_res*gamma_res*pz_el_res;
598 Double_t px_el_cm = (-beta_x_res*gamma_res)*p0_el_res+
599 (1+(gamma_res-1)*((beta_x_res*beta_x_res)/
600 (beta_res*beta_res)))*px_el_res +
601 (gamma_res-1)*((beta_x_res*beta_y_res)/
602 (beta_res*beta_res))*py_el_res +
603 (gamma_res-1)*((beta_x_res*beta_z_res)/
604 (beta_res*beta_res))*pz_el_res;
606 Double_t py_el_cm = (-beta_y_res*gamma_res)*p0_el_res+
607 (gamma_res-1)*((beta_x_res*beta_y_res)/
608 (beta_res*beta_res))*px_el_res+
609 (1+(gamma_res-1)*((beta_y_res*beta_y_res)/
610 (beta_res*beta_res)))*py_el_res+
611 (gamma_res-1)*((beta_y_res*beta_z_res)/
612 (beta_res*beta_res))*pz_el_res;
614 Double_t pz_el_cm = (-beta_z_res*gamma_res)*p0_el_res+
615 (gamma_res-1)*((beta_x_res*beta_z_res)/
616 (beta_res*beta_res))*px_el_res+
617 (gamma_res-1)*((beta_y_res*beta_z_res)/
618 (beta_res*beta_res))*py_el_res+
619 (1+(gamma_res-1)*((beta_z_res*beta_z_res)/
620 (beta_res*beta_res)))*pz_el_res;
623 Double_t p0_po_cm = gamma_res*p0_po_res-beta_x_res*gamma_res*px_po_res-
624 beta_y_res*gamma_res*py_po_res -beta_z_res*gamma_res*pz_po_res;
626 Double_t px_po_cm = (-beta_x_res*gamma_res)*p0_po_res+
627 (1+(gamma_res-1)*((beta_x_res*beta_x_res)/
628 (beta_res*beta_res)))*px_po_res+
629 (gamma_res-1)*((beta_x_res*beta_y_res)/
630 (beta_res*beta_res))*py_po_res+
631 (gamma_res-1)*((beta_x_res*beta_z_res)/
632 (beta_res*beta_res))*pz_po_res;
634 Double_t py_po_cm = (-beta_y_res*gamma_res)*p0_po_res+
635 (gamma_res-1)*((beta_x_res*beta_y_res)/
636 (beta_res*beta_res))*px_po_res+
637 (1+(gamma_res-1)*((beta_y_res*beta_y_res)/
638 (beta_res*beta_res)))*py_po_res+
639 (gamma_res-1)*((beta_y_res*beta_z_res)/
640 (beta_res*beta_res))*pz_po_res;
642 Double_t pz_po_cm = (-beta_z_res*gamma_res)*p0_po_res+
643 (gamma_res-1)*((beta_x_res*beta_z_res)/
644 (beta_res*beta_res))*px_po_res+
645 (gamma_res-1)*((beta_y_res*beta_z_res)/
646 (beta_res*beta_res))*py_po_res+
647 (1+(gamma_res-1)*((beta_z_res*beta_z_res)/
648 (beta_res*beta_res)))*pz_po_res;
651 Double_t beta_x_urqmd = 0;
652 Double_t beta_y_urqmd = 0;
653 Double_t beta_z_urqmd = -beta;
656 Double_t beta_urqmd = beta;
657 Double_t gamma_urqmd = gamma;
661 Double_t p0_el_lab = gamma_urqmd*p0_el_cm-beta_x_urqmd*gamma_urqmd*px_el_cm-
662 beta_y_urqmd*gamma_urqmd*py_el_cm-beta_z_urqmd*gamma_urqmd*
665 Double_t px_el_lab = (-beta_x_urqmd*gamma)*p0_el_cm +
666 (1+(gamma_urqmd-1)*((beta_x_urqmd*beta_x_urqmd)/
667 (beta_urqmd*beta_urqmd)))*px_el_cm +
668 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
669 (beta_urqmd*beta_urqmd))*py_el_cm +
670 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
671 (beta_urqmd*beta_urqmd))*pz_el_cm;
673 Double_t py_el_lab = (-beta_y_urqmd*gamma)*p0_el_cm+
674 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
675 (beta_urqmd*beta_urqmd))*px_el_cm+
676 (1+(gamma_urqmd-1)*((beta_y_urqmd*beta_y_urqmd)/
677 (beta_urqmd*beta_urqmd)))*py_el_cm+
678 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
679 (beta_urqmd*beta_urqmd))*pz_el_cm;
681 Double_t pz_el_lab = (-beta_z_urqmd*gamma)*p0_el_cm+
682 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
683 (beta_urqmd*beta_urqmd))*px_el_cm+
684 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
685 (beta_urqmd*beta_urqmd))*py_el_cm+
686 (1+(gamma_urqmd-1)*((beta_z_urqmd*beta_z_urqmd)/
687 (beta_urqmd*beta_urqmd)))*pz_el_cm;
689 Double_t p0_po_lab = gamma_urqmd*p0_po_cm-beta_x_urqmd*gamma_urqmd*px_po_cm-
690 beta_y_urqmd*gamma_urqmd*py_po_cm -beta_z_urqmd*gamma_urqmd*
693 Double_t px_po_lab = (-beta_x_urqmd*gamma)*p0_po_cm+
694 (1+(gamma_urqmd-1)*((beta_x_urqmd*beta_x_urqmd)/
695 (beta_urqmd*beta_urqmd)))*px_po_cm+
696 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
697 (beta_urqmd*beta_urqmd))*py_po_cm+
698 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
699 (beta_urqmd*beta_urqmd))*pz_po_cm;
701 Double_t py_po_lab = (-beta_y_urqmd*gamma)*p0_po_cm+
702 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
703 (beta_urqmd*beta_urqmd))*px_po_cm+
704 (1+(gamma_urqmd-1)*((beta_y_urqmd*beta_y_urqmd)/
705 (beta_urqmd*beta_urqmd)))*py_po_cm+
706 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
707 (beta_urqmd*beta_urqmd))*pz_po_cm;
709 Double_t pz_po_lab = (-beta_z_urqmd*gamma)*p0_po_cm+
710 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
711 (beta_urqmd*beta_urqmd))*px_po_cm+
712 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
713 (beta_urqmd*beta_urqmd))*py_po_cm+
714 (1+(gamma_urqmd-1)*((beta_z_urqmd*beta_z_urqmd)/
715 (beta_urqmd*beta_urqmd)))*pz_po_cm;
717 em.SetPxPyPzE(px_el_lab,py_el_lab,pz_el_lab,p0_el_lab);
718 ep.SetPxPyPzE(px_po_lab,py_po_lab,pz_po_lab,p0_po_lab);
721void PHUrDilep::lobo_dir(Double_t beta, Double_t gamma, Double_t m_res) {
728 Double_t phi_el = 2.*TMath::Pi()*rndfunc();
729 Double_t x = rndfunc();
730 Double_t sin_theta_el = (x-0.5)*2.;
731 Double_t theta_el = asin(sin_theta_el)+TMath::PiOver2();
733 Double_t phi_po = phi_el + TMath::Pi();
734 if(phi_po > 2*TMath::Pi()) {
735 phi_po = phi_po-2*TMath::Pi();
737 Double_t theta_po = 0;
738 if(theta_el <= TMath::Pi()) {
739 theta_po = TMath::Pi()-theta_el;
744 Double_t x_el = sin(theta_el)*cos(phi_el);
745 Double_t y_el = sin(theta_el)*sin(phi_el);
746 Double_t z_el = cos(theta_el);
748 Double_t x_po = sin(theta_po)*cos(phi_po);
749 Double_t y_po = sin(theta_po)*sin(phi_po);
750 Double_t z_po = cos(theta_po);
753 Double_t p0_el = m_res/2.;
754 Double_t p0_po = m_res/2.;
756 Double_t p_el = sqrt(pow(p0_el,2)-pow(mass_electron,2));
757 Double_t p_po = sqrt(pow(p0_po,2)-pow(mass_electron,2));
759 Double_t px_el = x_el*p_el;
760 Double_t py_el = y_el*p_el;
761 Double_t pz_el = z_el*p_el;
763 Double_t px_po = x_po*p_po;
764 Double_t py_po = y_po*p_po;
765 Double_t pz_po = z_po*p_po;
768 Double_t beta_x_res = -px_res/p0_res;
769 Double_t beta_y_res = -py_res/p0_res;
770 Double_t beta_z_res = -pz_res/p0_res;
772 Double_t beta_res = sqrt(beta_x_res*beta_x_res+beta_y_res*beta_y_res+beta_z_res*beta_z_res);
774 Double_t gamma_res = 1./sqrt(1-beta_res*beta_res);
776 Double_t p0_el_cm = gamma_res*p0_el-beta_x_res*gamma_res*px_el-
777 beta_y_res*gamma_res*py_el-beta_z_res*gamma_res*pz_el;
779 Double_t px_el_cm = (-beta_x_res*gamma_res)*p0_el+
780 (1+(gamma_res-1)*((beta_x_res*beta_x_res)/
781 (beta_res*beta_res)))*px_el+
782 (gamma_res-1)*((beta_x_res*beta_y_res)/
783 (beta_res*beta_res))*py_el+
784 (gamma_res-1)*((beta_x_res*beta_z_res)/
785 (beta_res*beta_res))*pz_el;
787 Double_t py_el_cm = (-beta_y_res*gamma_res)*p0_el+
788 (gamma_res-1)*((beta_x_res*beta_y_res)/
789 (beta_res*beta_res))*px_el+
790 (1+(gamma_res-1)*((beta_y_res*beta_y_res)/
791 (beta_res*beta_res)))*py_el+
792 (gamma_res-1)*((beta_y_res*beta_z_res)/
793 (beta_res*beta_res))*pz_el;
795 Double_t pz_el_cm = (-beta_z_res*gamma_res)*p0_el+
796 (gamma_res-1)*((beta_x_res*beta_z_res)/
797 (beta_res*beta_res))*px_el+
798 (gamma_res-1)*((beta_y_res*beta_z_res)/
799 (beta_res*beta_res))*py_el+
800 (1+(gamma_res-1)*((beta_z_res*beta_z_res)/
801 (beta_res*beta_res)))*pz_el;
803 Double_t p0_po_cm = gamma_res*p0_po-beta_x_res*gamma_res*px_po-
804 beta_y_res*gamma_res*py_po -beta_z_res*gamma_res*pz_po;
806 Double_t px_po_cm = (-beta_x_res*gamma_res)*p0_po+
807 (1+(gamma_res-1)*((beta_x_res*beta_x_res)/
808 (beta_res*beta_res)))*px_po+
809 (gamma_res-1)*((beta_x_res*beta_y_res)/
810 (beta_res*beta_res))*py_po+
811 (gamma_res-1)*((beta_x_res*beta_z_res)/
812 (beta_res*beta_res))*pz_po;
814 Double_t py_po_cm = (-beta_y_res*gamma_res)*p0_po+
815 (gamma_res-1)*((beta_x_res*beta_y_res)/
816 (beta_res*beta_res))*px_po+
817 (1+(gamma_res-1)*((beta_y_res*beta_y_res)/
818 (beta_res*beta_res)))*py_po+
819 (gamma_res-1)*((beta_y_res*beta_z_res)/
820 (beta_res*beta_res))*pz_po;
822 Double_t pz_po_cm = (-beta_z_res*gamma_res)*p0_po+
823 (gamma_res-1)*((beta_x_res*beta_z_res)/
824 (beta_res*beta_res))*px_po+
825 (gamma_res-1)*((beta_y_res*beta_z_res)/
826 (beta_res*beta_res))*py_po+
827 (1+(gamma_res-1)*((beta_z_res*beta_z_res)/
828 (beta_res*beta_res)))*pz_po;
831 Double_t beta_x_urqmd = 0;
832 Double_t beta_y_urqmd = 0;
833 Double_t beta_z_urqmd = -beta;
835 Double_t beta_urqmd = beta;
836 Double_t gamma_urqmd = gamma;
840 Double_t p0_el_lab = gamma_urqmd*p0_el_cm-beta_x_urqmd*gamma_urqmd*px_el_cm-
841 beta_y_urqmd*gamma_urqmd*py_el_cm-beta_z_urqmd*gamma_urqmd*
844 Double_t px_el_lab = (-beta_x_urqmd*gamma)*p0_el_cm +
845 (1+(gamma_urqmd-1)*((beta_x_urqmd*beta_x_urqmd)/
846 (beta_urqmd*beta_urqmd)))*px_el_cm +
847 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
848 (beta_urqmd*beta_urqmd))*py_el_cm +
849 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
850 (beta_urqmd*beta_urqmd))*pz_el_cm;
852 Double_t py_el_lab = (-beta_y_urqmd*gamma)*p0_el_cm+
853 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
854 (beta_urqmd*beta_urqmd))*px_el_cm+
855 (1+(gamma_urqmd-1)*((beta_y_urqmd*beta_y_urqmd)/
856 (beta_urqmd*beta_urqmd)))*py_el_cm+
857 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
858 (beta_urqmd*beta_urqmd))*pz_el_cm;
860 Double_t pz_el_lab = (-beta_z_urqmd*gamma)*p0_el_cm+
861 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
862 (beta_urqmd*beta_urqmd))*px_el_cm+
863 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
864 (beta_urqmd*beta_urqmd))*py_el_cm+
865 (1+(gamma_urqmd-1)*((beta_z_urqmd*beta_z_urqmd)/
866 (beta_urqmd*beta_urqmd)))*pz_el_cm;
868 Double_t p0_po_lab = gamma_urqmd*p0_po_cm-beta_x_urqmd*gamma_urqmd*px_po_cm-
869 beta_y_urqmd*gamma_urqmd*py_po_cm -beta_z_urqmd*gamma_urqmd*
872 Double_t px_po_lab = (-beta_x_urqmd*gamma)*p0_po_cm+
873 (1+(gamma_urqmd-1)*((beta_x_urqmd*beta_x_urqmd)/
874 (beta_urqmd*beta_urqmd)))*px_po_cm+
875 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
876 (beta_urqmd*beta_urqmd))*py_po_cm+
877 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
878 (beta_urqmd*beta_urqmd))*pz_po_cm;
880 Double_t py_po_lab = (-beta_y_urqmd*gamma)*p0_po_cm+
881 (gamma_urqmd-1)*((beta_x_urqmd*beta_y_urqmd)/
882 (beta_urqmd*beta_urqmd))*px_po_cm+
883 (1+(gamma_urqmd-1)*((beta_y_urqmd*beta_y_urqmd)/
884 (beta_urqmd*beta_urqmd)))*py_po_cm+
885 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
886 (beta_urqmd*beta_urqmd))*pz_po_cm;
888 Double_t pz_po_lab = (-beta_z_urqmd*gamma)*p0_po_cm+
889 (gamma_urqmd-1)*((beta_x_urqmd*beta_z_urqmd)/
890 (beta_urqmd*beta_urqmd))*px_po_cm+
891 (gamma_urqmd-1)*((beta_y_urqmd*beta_z_urqmd)/
892 (beta_urqmd*beta_urqmd))*py_po_cm+
893 (1+(gamma_urqmd-1)*((beta_z_urqmd*beta_z_urqmd)/
894 (beta_urqmd*beta_urqmd)))*pz_po_cm;
896 em.SetPxPyPzE(px_el_lab,py_el_lab,pz_el_lab,p0_el_lab);
897 ep.SetPxPyPzE(px_po_lab,py_po_lab,pz_po_lab,p0_po_lab);
901void PHUrDilep::dgamma_sum(Int_t ityp, Double_t tau, Int_t multi,
903 Double_t &smin, Double_t &smax, Double_t &tmax) {
904 const Double_t dx = 0.001;
906 Double_t dgamma = 0, dgamma_sum = 0;
907 Double_t mx = 0, t1 = 0, t2 = 0,
f1 = 0;
915 z = (Int_t)((smax-smin)/dx);
917 for(Int_t i = 1; i <= z; i++) {
920 t1 = ((4*alpha_em)/(3.*TMath::Pi()*mx)) *
921 sqrt(1-(4*pow(mass_electron,2))/(pow(mx,2)))*(1+(2*pow(mass_electron,2))/(pow(mx,2)));
923 t2 = pow((1-(pow(mx,2))/(pow(vacmass_pi0,2))),3);
924 f1 = pow((1+b_pi0*pow(mx,2)),2);
926 dgamma = t1*t2*
f1*br_pi0;
927 dgamma_sum = dgamma_sum + dgamma;
930 weight = dgamma_sum*dx/multi;
932 }
else if(ityp ==
omega) {
938 z = (Int_t)((smax-smin)/dx);
940 for(Int_t i=1; i <= z; i++) {
943 t1 = ((2*alpha_em)/(3*TMath::Pi()*mx))*
944 sqrt(1-(4*pow(mass_electron,2))/
945 (pow(mx,2)))*(1+(2*pow(mass_electron,2))/(pow(mx,2)));
947 t2 = sqrt(pow((1+(pow(mx,2))/(pow(vacmass_omega,2)-
948 pow(vacmass_pi0,2))),2)
949 -pow(((2*vacmass_omega*mx)/(pow(vacmass_omega,2)-pow(vacmass_pi0,2))),2));
951 f1 = (pow(lambda_omega,2)*(pow(lambda_omega,2)+pow(gamma_omega,2)))/
952 (pow((pow(lambda_omega,2)-pow(mx,2)),2)+
953 (pow(lambda_omega,2)*pow(gamma_omega,2)));
955 dgamma = t1*pow(t2,3)*
f1*gamma_photon*(tau/gev);
956 dgamma_sum = dgamma_sum + dgamma;
959 weight = dgamma_sum*dx/multi;
967 z = (Int_t)((smax-smin)/dx);
969 for(Int_t i=1; i <= z; i++) {
972 t1 = ((4*alpha_em)/(3*TMath::Pi()*mx))*
973 sqrt(1-(4*pow(mass_electron,2))/
974 (pow(mx,2)))*(1+(2*pow(mass_electron,2))/(pow(mx,2)));
976 t2 = pow((1-(pow(mx,2))/(pow(vacmass_etaprime,2))),3);
978 f1 = (pow(lambda_etaprime,2)*
979 (pow(lambda_etaprime,2)+pow(gamma_etaprime,2)))/
980 (pow((pow(lambda_etaprime,2)-pow(mx,2)),2)+
981 (pow(lambda_etaprime,2)*pow(gamma_etaprime,2)));
983 dgamma = t1*t2*
f1*br_etaprime;
984 dgamma_sum = dgamma_sum + dgamma;
988 weight=dgamma_sum*dx/multi;
990 }
else if(ityp ==
eta) {
996 z = (Int_t)((smax-smin)/dx);
998 for(Int_t i=1; i <= z;i++) {
1001 t1 = ((4.*alpha_em)/(3.*TMath::Pi()*mx))*
1002 sqrt(1.-(4.*pow(mass_electron,2))/
1003 (pow(mx,2))) * (1.+(2.*pow(mass_electron,2))/(pow(mx,2)));
1005 t2 = pow((1.-(pow(mx,2))/(pow(vacmass_eta,2))),3);
1006 f1 = pow((1./(1.-(pow(mx,2))/(pow(lambda_eta,2)))),2);
1008 dgamma = t1*t2*
f1*br_eta;
1009 dgamma_sum = dgamma_sum + dgamma;
1013 weight = dgamma_sum*dx/multi;
1017void PHUrDilep::dgamma_sum_delta(Double_t tau,Double_t mres,Int_t multi,
1018 Double_t& weight_delta,
1019 Double_t& smin_del,Double_t& smax_del,Double_t& tmax_del) {
1021 const Double_t dx = 0.000001;
1025 Double_t mx, pf, q0, e,
f, mt, ml, lambda, gamma0, dgamma, dgamma_sum=0;
1032 smax_del = mres-mass_nucleon;
1035 Int_t z_del = (Int_t)((smax_del-smin_del)/dx);
1037 for(Int_t i=1; i <= z_del; i++) {
1041 pf = sqrt((pow(mres,2)-pow((mass_nucleon+mx),2))*
1042 (pow(mres,2)-pow((mass_nucleon-mx),2)))/2./mres;
1044 q0 = sqrt(mx*mx+pf*pf);
1053 f = (-3./2.)*(mres+mass_nucleon)/
1054 (mass_nucleon*(pow((mres+mass_nucleon),2)-mx*mx));
1056 e = sqrt(4.*TMath::Pi()*alpha_em);
1058 mt = pow((e*
f*g),2)*pow(mres,2)/9./mass_nucleon*
1059 (pow(q0,2)*(5.*mres-3.*(q0+mass_nucleon))-
1060 pow(mx,2)*(mres+mass_nucleon+q0));
1062 ml = pow((e*
f*g),2)*pow(mres,2)/9./mass_nucleon*mx*mx*4.*
1063 (mres-mass_nucleon-q0);
1065 lambda = pow(mx,4)+pow(mass_nucleon,4)+pow(mres,4)-2.*
1066 (mx*mx*pow(mass_nucleon,2)+mx*mx*pow(mres,2)+pow(mass_nucleon,2)*mres*mres);
1069 if(fabs(lambda) <= 1e-15) {
1074 gamma0 = sqrt(lambda)/(16.*TMath::Pi()*mres*mres)*mass_nucleon*(2.*mt+ml);
1075 dgamma = (2.*alpha_em)/(3.*TMath::Pi()*mx)*gamma0*(tau/gev);
1076 dgamma_sum = dgamma_sum + dgamma;
1082 weight_delta = dgamma_sum*dx/multi;
1085void PHUrDilep::gamma_star(Double_t smin, Double_t smax, Double_t tmax,
1086 Double_t&
s, Double_t& t,
1087 Double_t& xgstar, Double_t& ygstar, Double_t& zgstar, Double_t& tgstar,
1088 Double_t& xparticle, Double_t& yparticle, Double_t& zparticle, Double_t& tparticle) {
1090 Double_t phi_gstar = 2.*TMath::Pi()*rndfunc();
1091 Double_t y = rndfunc();
1092 Double_t sin_theta_gstar = (y-0.5)*2.;
1093 Double_t theta_gstar = asin(sin_theta_gstar)+TMath::PiOver2();
1095 Double_t phi_particle = phi_gstar + TMath::Pi();
1096 if (phi_particle > 2*TMath::Pi()) {
1097 phi_particle = phi_particle-2*TMath::Pi();
1099 Double_t theta_particle = 0;
1100 if (theta_gstar <= TMath::Pi()) {
1101 theta_particle = TMath::Pi()-theta_gstar;
1106 xgstar = sin(theta_gstar)*cos(phi_gstar);
1107 ygstar = sin(theta_gstar)*sin(phi_gstar);
1108 zgstar = cos(theta_gstar);
1109 tgstar = sin(theta_gstar);
1111 xparticle = sin(theta_particle)*cos(phi_particle);
1112 yparticle = sin(theta_particle)*sin(phi_particle);
1113 zparticle = cos(theta_particle);
1114 tparticle = sin(theta_particle);
1118 s = smin + rndfunc()*(smax-smin);
1122void PHUrDilep::t_delta(Double_t tau, Double_t mres, Int_t, Double_t &tmax_del) {
1123 const Double_t smin_del = 0.0013;
1127 Double_t mx = smin_del;
1129 Double_t pf = sqrt((pow(mres,2)-pow((mass_nucleon+mx),2))*
1130 (pow(mres,2)-pow((mass_nucleon-mx),2)))/2./mres;
1132 Double_t q0 = sqrt(mx*mx+pf*pf);
1135 Double_t
f = (-3./2.)*(mres+mass_nucleon)/
1136 (mass_nucleon*(pow((mres+mass_nucleon),2)-pow(mx,2)));
1138 Double_t e = sqrt(4.*TMath::Pi()*alpha_em);
1140 Double_t mt = pow(e*
f*g,2)*pow(mres,2)/9./mass_nucleon*
1141 (q0*q0*(5.*mres-3.*(q0+mass_nucleon))-
1142 pow(mx,2)*(mres+mass_nucleon+q0));
1144 Double_t ml = pow(e*
f*g,2)*pow(mres,2)/9./mass_nucleon*pow(mx,2)*4.*
1145 (mres-mass_nucleon-q0);
1147 Double_t lambda = pow(mx,4)+pow(mass_nucleon,4)+pow(mres,4)-2.*
1148 (pow(mx,2)*pow(mass_nucleon,2)+pow(mx,2)*pow(mres,2)+pow(mass_nucleon,2)*pow(mres,2));
1150 if(fabs(lambda) <= 1e-15) {
1155 Double_t gamma0 = sqrt(lambda)/(16.*TMath::Pi()*pow(mres,2))*mass_nucleon*(2.*mt+ml);
1156 Double_t dgamma = (2.*alpha_em)/(3.*TMath::Pi()*mx)*gamma0*(tau/gev);
1161void PHUrDilep::t_omega(Double_t tau,Int_t,
1162 Double_t& smin_omega,Double_t& smax_omega,Double_t& tmax_omega) {
1167 smin_omega = 0.0013;
1168 smax_omega = 0.6446;
1171 Double_t mx_omega = smin_omega;
1172 Double_t t1_omega = ((2.*alpha_em)/(3.*TMath::Pi()*mx_omega))*
1173 sqrt(1-(4.*pow(mass_electron,2))/
1174 (pow(mx_omega,2))) * (1+(2.*pow(mass_electron,2))/(pow(mx_omega,2)));
1176 Double_t t2_omega = sqrt(pow((1+pow(mx_omega,2)/(pow(vacmass_omega,2)-pow(vacmass_pi0,2))),2)
1177 -pow(((2.*vacmass_omega*mx_omega)/(pow(vacmass_omega,2)-pow(vacmass_pi0,2))),2));
1179 Double_t f1_omega = (pow(lambda_omega,2)*(pow(lambda_omega,2)+pow(gamma_omega,2)))/
1180 (pow((pow(lambda_omega,2)-pow(mx_omega,2)),2)+(pow(lambda_omega,2)*pow(gamma_omega,2)));
1182 Double_t dgamma_omega = t1_omega*pow(t2_omega,3)*f1_omega*gamma_photon*(tau/gev);
1184 tmax_omega = dgamma_omega;
1188void PHUrDilep::Output(Int_t ityp, Double_t weight, Double_t mres, Int_t, Double_t tau) {
1204 fprintf(
out,
"%5i %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e %15.8e ",
1210 fprintf(
out,
"%4i %15.8e %15.8e %9i %15.8e %15.8e %15.8e \n",
1216 OutputROOT(ityp, weight);
1219void PHUrDilep::OutputROOT(Int_t, Double_t weight) {
1224 Int_t nfree =
reader->GetNFreeSlots();
1225 if(nfree < nRequest) {
1227 Error(
"output()",
"event reached max stacksize ! Will skip ....");
1231 PParticle *pMoth =
reader->CreateParticle(index);
1232 PHUrAddon *pMothAdd =
reader->CreateAddon(index);
1247 pMothAdd->
stable = stable;
1256 Int_t indexlep1 = 0;
1257 Int_t indexlep2 = 0;
1258 PParticle *pep =
reader->CreateParticle(indexlep1);
1259 PParticle *pem =
reader->CreateParticle(indexlep2);
1260 PHUrAddon *pepAdd =
reader->CreateAddon(indexlep1);
1261 PHUrAddon *pemAdd =
reader->CreateAddon(indexlep2);
1270 *pepAdd = *pMothAdd;
1271 *pemAdd = *pMothAdd;
1275Double_t PHUrDilep::rndfunc() {
1277 static long int init = 0;
1284 double val = ((double)rand())/RAND_MAX;
ClassImp(PHUrDilep) PHUrDilep
PHUrCollisionHeader * collisionIn
PHUrParticle * particleOut
PHUrEventHeader * evtheader
PHUrParticle * particleIn
PHUrCollisionHeader * collisionOut
void SetParentIndex(Int_t pInd)
void Reset(const Int_t id, const TLorentzVector &v, const Double_t w=1.)
void SetParentId(Int_t pId)