565 double mn3 = mn*mn*mn;
567 double mdel2 = mdel*mdel;
568 double mdel3 = mdel*mdel*mdel;
572 double q03 = q0*q0*q0;
573 double q04 = q0*q0*q0*q0;
574 double q05 = q0*q0*q0*q0*q0;
577 double q13 = q1*q1*q1;
578 double q14 = q1*q1*q1*q1;
581 double q33 = q3*q3*q3;
582 double q34 = q3*q3*q3*q3;
584 double ppim = ppi.P();
585 double ppim2 = ppim*ppim;
586 double ppi1 = ppi.X();
587 double ppi12 = ppi1*ppi1;
588 double ppi2 = ppi.Y();
589 double ppi22 = ppi2*ppi2;
590 double ppi3 = ppi.Z();
591 double ppi32 = ppi3*ppi3;
592 double ppitr = TMath::Sqrt( ppi12 + ppi22 );
593 double ppitr2 = ppitr*ppitr;
622 double t = q.mag2() * hbarsq;
626 double C3v = 2.05 / ( (1.0 - (t/Mv2_Delta))*(1.0 - (t/Mv2_Delta)) );
639 ( ( 1.0 - (t / Ma2_Delta))*( 1.0 - (t / Ma2_Delta)) );
640 double C4a = -C5a / 4.0;
641 double C6a = (C5a * mn*mn) / ((mpi*mpi) - (t / hbarsq));
658 double Q_s2 = Q_s* Q_s;
659 double Q_s3 = Q_s2*Q_s;
660 double Q_s4 = Q_s3*Q_s;
661 double Q_s5 = Q_s4*Q_s;
662 double Q_s6 = Q_s5*Q_s;
664 double tau = Q_s / (4.0 * MNucleon*MNucleon);
669 double GEp = 1.0 / (1.0 + 3.253*Q_s + 1.422*Q_s2 + 0.08582*Q_s3 + 0.3318*Q_s4 - 0.09371*Q_s5 + 0.01076*Q_s6);
670 double GMp = mup / (1.0 + 3.104*Q_s + 1.428*Q_s2 + 0.1112*Q_s3 - 0.006981*Q_s4 + 0.0003705*Q_s5 - 7.063e-6*Q_s6);
671 double GEn = ((-mun * 0.942 * tau) / (1.0 + 4.61*tau)) / ( (1.0 + Q_s/Mv2_Nucleon) * (1.0 + Q_s/Mv2_Nucleon) );
675 double GMn = mun / (1.+3.043*Q_s + 0.8548*Q_s2 + 0.6806*Q_s3 - 0.1287*Q_s4 + 0.008912*Q_s5);
676 F1 = ((GEp - GEn) + tau*(GMp - GMn)) / (1.0 + tau);
677 F2 = ((GMp - GMn) - (GEp - GEn)) / (1.0 + tau);
679 FA = 1.0 + ( Q_s / Ma2_Nucleon );
683 FP = (2.0 * MNucleon*MNucleon);
684 FP /= ( MPion*MPion + Q_s );
697 double qper2 = q.P2();
698 double tot = ppi.P2();
699 double dot = q.Vect().Dot(ppi.Vect());
700 if (tot > 0.) qper2 -=dot*dot/tot;
701 qper2 = TMath::Max(qper2,0.);
703 double qper = TMath::Sqrt(qper2);
704 double qpar = dot / ppim;
708 std::vector<cdouble > empty_row(n,
cdouble(0.0,0.0));
709 std::vector< std::vector<cdouble > > ordez (4, empty_row);
710 std::vector< std::vector<cdouble > > ordez1(4, empty_row);
711 std::vector< std::vector<cdouble > > ordez2(4, empty_row);
712 std::vector< std::vector<cdouble > > ordez3(4, empty_row);
713 std::vector< std::vector<cdouble > > ordez4(4, empty_row);
715 std::vector< std::vector<cdouble > > ordeb2(4, empty_row);
718 std::vector<cdouble > empty_row_backwards(4,
cdouble(0.0,0.0));
719 std::vector< std::vector<cdouble > > ordeb(n, empty_row_backwards);
723 std::vector<cdouble > jnuclear(4);
726 for(
unsigned int i = 0; i !=
n; ++i)
729 double bej0 = TMath::BesselJ0( qper*be );
730 double bej1 = TMath::BesselJ1( qper*be );
732 for(
unsigned int l = 0;
l !=
n; ++
l)
735 double r = TMath::Sqrt(za*za + be*be);
740 double dens_p_cent = dens_cent *
fZ /
fA ;
741 double dens_n_cent = dens_cent * (
fA-
fZ)/
fA;
743 cdouble exp_i_qpar_za = exp(
I*qpar*za);
745 const cdouble & uwavefunc = (*fUwave)[i][
l];
746 const cdouble & uwavedr = (*fUwaveDr)[i][
l];
747 const cdouble & uwavedtheta = (*fUwaveDtheta)[i][
l];
749 cdouble A =
I * ( uwavedr - (za/r2) * uwavedtheta ) * (be/
r);
750 cdouble B =
I * ( uwavedr*za + (be*be/r2)*uwavedtheta ) /
r;
753 if( (qper == 0.0) && ppitr != 0.0)
755 ppi1d = ( q1 * ((ppi12*ppi32)+(ppi22*ppim2)) - q3*ppi1*ppi3*ppitr2 ) /
756 (ppim2*ppitr2)*
A*(
I*be/2.0) + ppi1/ppim *
B*bej0;
757 ppi2d = -ppi2*(ppi1*q1+ppi3*q3)/ppim2*
A*(
I*be/2.)+ppi2/ppim*
B*bej0;
758 ppi3d = -(q1*ppi1*ppi3-q3*ppitr2)/ppim2*
A*(
I*be/2.)+ppi3/ppim*
B*bej0 ;
760 else if( (qper != 0.0) && (ppitr == 0.0) )
762 ppi1d = (q1/qper)*
A*(
I*bej1);
766 else if( (qper == 0.0) && (ppitr == 0.0) )
768 ppi1d = q1*
A*(
I*be/2.0);
774 ppi1d=(q1*((ppi12*ppi32)+(ppi22*ppim2))-q3*ppi1*ppi3*ppitr2)/(ppim2*ppitr2)/
775 qper*
A*(
I*bej1)+ppi1/ppim*
B*bej0;
776 ppi2d = -ppi2 * (ppi1*q1 + ppi3*q3) / ppim2/qper*
A*(
I*bej1)+ppi2/ppim*
B*bej0;
777 ppi3d=-(q1*ppi1*ppi3-q3*ppitr2)/ppim2/qper*
A*(
I*bej1)+ppi3/ppim*
B*bej0;
786 j1[0] = -4.*(mdel + mn + q0)*(
787 (C5a*mdel2*mn2*q0 + C6a*mdel2*q03 + C5a*mn2*(-mn - q0)*q0*(mn + q0) -
788 C4a*mdel2*q0*q12 - C4a*mdel2*q0*q32 - C6a*q02*(mn + q0)*(q0*(mn + q0) - q12 - q32))*bej0*uwavefunc +
789 ppi1d*(-(C5a*mn2*(-mn - q0)*q1) - C6a*mdel2*q0*q1 + C4a*mdel2*(mn + q0)*q1 +
790 C6a*q0*q1*(q0*(mn + q0) - q12 - q32)) +
791 ppi3d*(-(C5a*mn2*(-mn - q0)*q3) -
792 C6a*mdel2*q0*q3 + C4a*mdel2*(mn + q0)*q3 + C6a*q0*q3*(q0*(mn + q0) - q12 - q32))
795 j1[1] = (-4.*C6a*mdel3*q02*q1 - 4.*C6a*mdel2*mn*q02*q1 + 4.*C6a*mdel*mn2*q02*q1 + 4.*C6a*mn3*q02*q1 -
796 4.*C6a*mdel2*q03*q1 + 8.*C6a*mdel*mn*q03*q1 + 12.*C6a*mn2*q03*q1 + 4.*C6a*mdel*q04*q1 +
797 12.*C6a*mn*q04*q1 + 4.*C6a*q05*q1 + 4.*C4a*mdel2*q02*(mdel + mn + q0)*q1 +
798 4.*C5a*mn2*q0*(mn + q0)*(mdel + mn + q0)*q1 - 4.*C6a*mdel*mn*q0*q13 - 4.*C6a*mn2*q0*q13 -
799 4.*C6a*mdel*q02*q13 - 8.*C6a*mn*q02*q13 - 4.*C6a*q03*q13 -
800 4.*C6a*q0*(mn + q0)*(mdel + mn + q0)*q1*q32)*bej0*uwavefunc +
801 ppi1d*(-4.*C4a*mdel2*q0*(mn + q0)*(mdel + mn + q0) + 4.*C6a*mdel3*q12 + 4.*C6a*mdel2*mn*q12 +
802 4.*C6a*mdel2*q0*q12 - 4.*C6a*mdel*mn*q0*q12 - 4.*C6a*mn2*q0*q12 - 4.*C6a*mdel*q02*q12 -
803 8.*C6a*mn*q02*q12 - 4.*C6a*q03*q12 + 4.*C6a*mdel*q14 + 4.*C6a*mn*q14 + 4.*C6a*q0*q14 -
804 4.*C5a*mn2*(mdel + mn + q0)*(mdel2 + q12) + 4.*C4a*mdel2*(mdel + mn + q0)*q32 +
805 4.*C6a*(mdel + mn + q0)*q12*q32) +
806 ppi2d*(twoI*C4v*mdel2*(q0*(mn + q0) - q12)*q3 +
807 twoI*C3v*mdel*mn*(2*mdel2 + 2.*mdel*mn - q0*(mn + q0) + q12)*q3 -
808 twoI*mdel*(C4v*mdel - C3v*mn)*q33) +
809 ppi3d*(-4.*C4a*mdel2*(mdel + mn + q0)*q1*q3 -
810 4.*C5a*mn2*(mdel + mn + q0)*q1*q3 + 4.*C6a*(mdel + mn + q0)*q1*(mdel2 - q0*(mn + q0) + q12)*q3 +
811 4.*C6a*(mdel + mn + q0)*q1*q33) +
812 ppi2d*twoI*C5v*mdel2*mn*q0*q3;
814 j1[2] = -2.*
I*(-2.*
I*C5a*mdel*mn2*ppi2d*(mdel + mn + q0) -
815 twoI*C4a*mdel*ppi2d*(mdel + mn + q0)*(q0*(mn + q0) - q12 - q32) -
816 (ppi3d*q1 - ppi1d*q3)*(C4v*mdel*(q0*(mn + q0) - q12 - q32) +
817 C3v*mn*(2*mdel2 + 2*mdel*mn - q0*(mn + q0) + q12 + q32)))*mdel +
818 twoI*C5v*mdel*mn*q0*(ppi3d*q1 - ppi1d*q3)*mdel;
820 j1[3] = (4.*C4a*mdel2*q02*(mdel + mn + q0)*q3 - 4.*C6a*mdel2*q02*(mdel + mn + q0)*q3 +
821 4.*C5a*mn2*q0*(mn + q0)*(mdel + mn + q0)*q3 + 4.*C6a*q0*(mn + q0)*(mdel + mn + q0)*
822 (q0*(mn + q0) - q12)*q3 - 4.*C6a*q0*(mn + q0)*(mdel + mn + q0)*q33)*bej0*uwavefunc +
823 ppi2d*(-twoI*mdel*q1*(C4v*mdel*(q0*(mn + q0) - q12) +
824 C3v*mn*(2.*mdel2 + 2*mdel*mn - q0*(mn + q0) + q12)) + twoI*mdel*
825 (C4v*mdel - C3v*mn)*q1*q32) +
826 ppi1d*(-4.*C4a*mdel2*(mdel + mn + q0)*q1*q3 +
827 4.*C6a*mdel2*(mdel + mn + q0)*q1*q3 - 4.*C5a*mn2*(mdel + mn + q0)*q1*q3 -
828 4.*C6a*(mdel + mn + q0)*q1*(q0*(mn + q0) - q12)*q3 + 4.*C6a*(mdel + mn + q0)*q1*q33) +
829 ppi3d*(-4.*C4a*mdel2*mn*q0*(mdel + mn + q0) - 4.*C4a*mdel2*(mdel + mn + q0)*(q0 - q1)*(q0 + q1) +
830 4.*C6a*(mdel + mn + q0)*(mdel2 - q0*(mn + q0) + q12)*q32 + 4.*C6a*(mdel + mn + q0)*q34 -
831 4.*C5a*mn2*(mdel + mn + q0)*(mdel2 + q32)) +
832 -twoI*C5v*mdel2*mn*ppi2d*q0*q1;
836 j2[0]=-4.*(mdel + mn - q0)*(
837 (C5a*mdel2*mn2*q0 - C5a*mn2*(mn - q0)*(mn - q0)*q0 + C6a*mdel2*q03 -
838 C4a*mdel2*q0*q12 - C4a*mdel2*q0*q32 - C6a*(mn - q0)*q02*((mn - q0)*q0 + q12 + q32))*bej0*uwavefunc +
839 ppi1d*(-(C4a*mdel2*mn*q1) - C5a*mn2*(mn - q0)*q1 + C4a*mdel2*q0*q1 -
840 C6a*mdel2*q0*q1 - C6a*q0*q1*((mn - q0)*q0 + q12 + q32)) +
841 ppi3d*(-(C4a*mdel2*mn*q3) - C5a*mn2*(mn - q0)*q3 + C4a*mdel2*q0*q3 -
842 C6a*mdel2*q0*q3 - C6a*q0*q3*((mn - q0)*q0 + q12 + q32)));
844 j2[1]=(-4.*C5a*mn2*(mn - q0)*(mdel + mn - q0)*q0*q1 - 4.*C6a*mdel3*q02*q1 -
845 4.*C6a*mdel2*mn*q02*q1 + 4.*C6a*mdel*mn2*q02*q1 + 4.*C6a*mn3*q02*q1 +
846 4.*C4a*mdel2*(mdel + mn - q0)*q02*q1 + 4.*C6a*mdel2*q03*q1 -
847 8.*C6a*mdel*mn*q03*q1 - 12.*C6a*mn2*q03*q1 + 4.*C6a*mdel*q04*q1 +
848 12.*C6a*mn*q04*q1 - 4.*C6a*q05*q1 + 4.*C6a*mdel*mn*q0*q13 +
849 4.*C6a*mn2*q0*q13 - 4.*C6a*mdel*q02*q13 - 8.*C6a*mn*q02*q13 +
850 4.*C6a*q03*q13 + 4.*C6a*(mn - q0)*(mdel + mn - q0)*q0*q1*q32)*bej0*uwavefunc +
851 ppi1d*(-4.*C5a*mdel2*mn2*(mdel + mn - q0) + 4.*C4a*mdel2*mn*(mdel + mn - q0)*q0 -
852 4.*C4a*mdel2*(mdel + mn - q0)*q02 + 4.*C6a*mdel3*q12 +
853 4.*C6a*mdel2*mn*q12 - 4.*C5a*mn2*(mdel + mn - q0)*q12 -
854 4.*C6a*mdel2*q0*q12 + 4.*C6a*mdel*mn*q0*q12 + 4.*C6a*mn2*q0*q12 -
855 4.*C6a*mdel*q02*q12 - 8.*C6a*mn*q02*q12 + 4.*C6a*q03*q12 +
856 4.*C6a*mdel*q14 + 4.*C6a*mn*q14 - 4.*C6a*q0*q14 +
857 4.*C4a*mdel2*(mdel + mn - q0)*q32 + 4.*C6a*(mdel + mn - q0)*q12*q32) +
858 ppi2d*(twoI*mdel*(mdel*q0*(-((C4v + C5v)*mn) + C4v*q0) +
859 C3v*mn*(2*mdel*(mdel + mn) + mn*q0 - q02))*q3 +
860 twoI*mdel*(-(C4v*mdel) + C3v*mn)*q12*q3 - twoI*mdel*(C4v*mdel - C3v*mn)*q33) +
861 ppi3d*(-4.*C4a*mdel2*(mdel + mn - q0)*q1*q3 -
862 4.*C5a*mn2*(mdel + mn - q0)*q1*q3 + 4.*C6a*(mdel + mn - q0)*(mdel2 + (mn - q0)*q0)*q1*q3 +
863 4.*C6a*(mdel + mn - q0)*q13*q3 + 4.*C6a*(mdel + mn - q0)*q1*q33);
865 j2[2]=-(twoI*ppi2d*(-twoI*C5a*mdel*mn2*(mdel + mn - q0) +
866 twoI*C4a*mdel*(mdel + mn - q0)*((mn - q0)*q0 + q12 + q32)) -
867 ppi3d*twoI*q1*(C3v*mn*(2*mdel*(mdel + mn) + mn*q0 - q02 + q12 + q32) -
868 mdel*(C5v*mn*q0 + C4v*((mn - q0)*q0 + q12 + q32))) +
869 ppi1d*twoI*q3*(C3v*mn*(2*mdel*(mdel + mn) + mn*q0 - q02 + q12 + q32) -
870 mdel*(C5v*mn*q0 + C4v*((mn - q0)*q0 + q12 + q32)))
873 j2[3] = (-4.*C5a*mn2*(mn - q0)*(mdel + mn - q0)*q0*q3 +
874 4.*C4a*mdel2*(mdel + mn - q0)*q02*q3 - 4.*C6a*mdel2*(mdel + mn - q0)*q02*q3 +
875 4.*C6a*(mn - q0)*(mdel + mn - q0)*q0*((mn - q0)*q0 + q12)*q3 +
876 4.*C6a*(mn - q0)*(mdel + mn - q0)*q0*q33)*bej0*uwavefunc +
877 ppi2d*(-twoI*mdel*q1*(C3v*mn*(2*mdel*(mdel + mn) + mn*q0 - q02 + q12) -
878 mdel*(q0*((C4v + C5v)*mn - C4v*q0) + C4v*q12)) +
879 twoI*mdel*(C4v*mdel - C3v*mn)*q1*q32) +
880 ppi1d*(-4.*C4a*mdel2*(mdel + mn - q0)*q1*q3 + 4.*C6a*mdel2*(mdel + mn - q0)*q1*q3 -
881 4.*C5a*mn2*(mdel + mn - q0)*q1*q3 +
882 4.*C6a*(mdel + mn - q0)*q1*((mn - q0)*q0 + q12)*q3 +
883 4.*C6a*(mdel + mn - q0)*q1*q33) +
884 ppi3d*(-4.*C5a*mdel2*mn2*(mdel + mn - q0) +
885 4.*C4a*mdel2*(mdel + mn - q0)*((mn - q0)*q0 + q12) -
886 4.*C5a*mn2*(mdel + mn - q0)*q32 +
887 4.*C6a*(mdel + mn - q0)*(mdel2 + (mn - q0)*q0 + q12)*q32 +
888 4.*C6a*(mdel + mn - q0)*q34);
893 j3[0]=-2.0*(FA - FP*q0)*(q02*bej0*uwavefunc - ppi1d*q1 - ppi3d*q3);
895 j3[1] = 2.0*(-(FA*q0*q1) + FP*q02*q1) * bej0 * uwavefunc +
896 2.0*ppi1d*(2.0*FA*mn + FA*q0 - FP*q12) -
897 twoI*(F1 + F2)*ppi2d*q3 - 2.*FP*ppi3d*q1*q3;
899 j3[2]=twoI*(-
I*FA*ppi2d*(2.0*mn + q0) - (F1 + F2)*(ppi3d*q1 - ppi1d*q3));
901 j3[3]=twoI*(F1 +
F2)*ppi2d*q1 - 2.0*FP*ppi1d*q1*q3 +
902 2.0*(-(FA*q0*q3) + FP*q02*q3)*bej0*uwavefunc +
903 2.0*ppi3d*(2.0*FA*mn + FA*q0 - FP*q32);
908 j4[0] = 2.0*(FA + FP*q0)*(q02 *bej0*uwavefunc - ppi1d*q1 - ppi3d*q3);
910 j4[1] = -2.0*(-(FA*q0*q1) - FP*q02*q1)*bej0*uwavefunc - 2.0*ppi1d*(-2.0*FA*mn + FA*q0 + FP*q12) -
911 twoI*(F1 + F2)*ppi2d*q3 - 2.0*FP*ppi3d*q1*q3;
913 j4[2] = twoI*(-
I*FA*ppi2d*(2.0*mn - q0) - (F1 + F2)*(ppi3d*q1 - ppi1d*q3));
915 j4[3] = twoI*(F1 +
F2)*ppi2d*q1 - 2.0*FP*ppi1d*q1*q3 + 2.0*(FA*q0*q3 + FP*q02*q3)*bej0*uwavefunc +
916 2.0*ppi3d*(2.0*FA*mn - FA*q0 - FP*q32);
920 (alp*dens_p_cent+dens_n_cent) *
929 cdouble pre_factor_3 = 1./mod*(-
I)*PreFacMult*exp_i_qpar_za*
931 cdouble pre_factor_4 = 1./mod*(-
I)*PreFacMult*exp_i_qpar_za*
934 for(
int m = 0;
m != 4; ++
m)
936 ordez1[
m][
l] = pre_factor_1 * j1[
m];
937 ordez2[
m][
l] = pre_factor_2 * j2[
m];
938 ordez3[
m][
l] = pre_factor_3 * j3[
m];
939 ordez4[
m][
l] = pre_factor_4 * j4[
m];
941 ordez[
m][
l] = ordez1[
m][
l] + ordez2[
m][
l] + ordez3[
m][
l] + ordez4[
m][
l];
950 for(
unsigned int z = 0;
z != 4; ++
z)
956 for(
unsigned int z = 0;
z !=
n; ++
z)
958 for(
unsigned int y = 0;
y != 4; ++
y)
960 ordeb2[
y][
z] = ordeb[
z][
y];
966 for (
int i=0; i<4; i++) {
968 *(jHadCurrent+i) =
cdouble(jn);
static const double kSqrt3
static const double kSqrt2
ROOT::Math::SVector< cdouble, 4 > CVector
std::complex< double > cdouble
static constexpr double fs
std::complex< double > DeltaCouplingInMed(ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > delta_momentum, ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > pion_momentum, double density_cent)
double SamplePoint2(const unsigned int i) const
unsigned int GetNDensities(void) const
std::complex< double > cdouble
ARSampledNucleus * fNucleus
double DensityOfCentres(const int i, const int j) const
ARSampledNucleus & GetNucleus(void)
double SamplePoint1(const unsigned int i) const
std::complex< double > NucleonPropagator(ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > nucleon_momentum)