void printPO(ZFitterWrapper& ZF_i) { cout << setw(15) << "m_W [GeV]" << setw(13) << ZF_i.Mw() << endl << setw(15) << "Gamma_W [GeV]" << setw(13) << ZF_i.Gamma_W() << endl << setw(15) << "sin^2(th_W)" << setw(13) << ZF_i.sw2() << endl << setw(15) << "sin^2(teff_e)" << setw(13) << ZF_i.s2teff_f(1) << endl << setw(15) << "sin^2(teff_mu)" << setw(13) << ZF_i.s2teff_f(2) << endl << setw(15) << "sin^2(teff_tau)" << setw(13) << ZF_i.s2teff_f(3) << endl << setw(15) << "sin^2(teff_b)" << setw(13) << ZF_i.s2teff_f(9) << endl << setw(15) << "sin^2(teff_c)" << setw(13) << ZF_i.s2teff_f(6) << endl << setw(15) << "sin^2(teff_s)" << setw(13) << ZF_i.s2teff_f(7) << endl << setw(15) << "Gamma_inv [GeV]" << setw(13) << ZF_i.Gamma_inv() << endl << setw(15) << "Gamma_had [GeV]" << setw(13) << ZF_i.Gamma_had() << endl << setw(15) << "Gamma_Z [GeV]" << setw(13) << ZF_i.Gamma_Z() << endl << endl; }
/* Test function */ void test_ZFitterClass(ZFitterWrapper& ZF) { /* Outputs */ double XS[12]; double DXS[12]; double AFB[12]; double TAUPOL; double TAUAFB; double XSPL[12]; double XSMI[12]; double C1U, C1D, C2U, C2D; int indexFermion; /* sqrt(s) = Mz */ double sqrt_s = ZF.getModel().getMz(); /* print input parameters */ cout << endl << "##### call ZFitter::printInputs() #####" << endl << endl; ZF.printInputs(); //cout << " Note: DAL5H is calculated in calcCommonBlocks(), " // << "if ALEM=0 or 3. " << endl; cout << "##### Pseudo-observables #####" << endl << endl; printPO(ZF); cout << endl; /* print constants defined in ZFITTER */ cout << endl << "##### call ZFitter::printConstants() #####" << endl << endl; ZF.printConstants(); /* print intermediate results */ cout << "##### call ZFitter::printIntermediateResults() #####" << endl << endl; ZF.printIntermediateResults(); /* Atomic Parity Violation */ cout << "##### call ZFitter::calcAPV() #####" << endl << endl; ZF.calcAPV(&C1U, &C1D, &C2U, &C2D); cout << " C1U = " << C1U << " " << " C1D = " << C1D << " " << " C2U = " << C2U << " " << " C2D = " << C2D << endl << endl; cout << "##### call ZFitter::calcXS_AFB() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Cross sections, FB asymmetries" << endl; for (indexFermion=0; indexFermion<11; indexFermion++) { ZF.calcXS_AFB(indexFermion, sqrt_s, &XS[indexFermion], &AFB[indexFermion]); cout << setw(9) << ZF.convertINDF(indexFermion) << " " << XS[indexFermion] << " "; if (indexFermion!=0&&indexFermion!=10) cout << AFB[indexFermion]; cout << endl; } cout << endl; cout << "##### call ZFitter::calcXS() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Cross sections" << endl; for (indexFermion=0; indexFermion<11; indexFermion++) { /* get the total and partial decay widths */ double Gamma_Z = ZF.Gamma_Z(); double Gamma_e = ZF.Gamma_f(1); double Gamma_f = Gamma_e; if (indexFermion!=11) Gamma_f = ZF.Gamma_f(indexFermion); ZF.calcXS(indexFermion, sqrt_s, Gamma_Z, Gamma_e, Gamma_f, &XS[indexFermion]); cout << setw(9) << ZF.convertINDF(indexFermion) << " " << XS[indexFermion] << endl; } cout << endl; cout << "##### call ZFitter::calcXS_AFB_2() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Cross sections, FB asymmetries" << endl; for (indexFermion=0; indexFermion<11; indexFermion++) { /* get the total width */ double Gamma_Z = ZF.Gamma_Z(); /* get the effective vector and axial-vector couplings */ double GAE = sqrt(ZF.rhoZ_f(1).real())*0.5; double GVE = ZF.gZ_f(1).real()*GAE; double GVF, GAF; if (indexFermion<11) { GAF = sqrt(ZF.rhoZ_f(indexFermion).real())*0.5; GVF = ZF.gZ_f(indexFermion).real()*GAF; } else { GAF = GAE; GVF = ZF.gZ_f(1).real()*GAF; } cout << setw(9) << ZF.convertINDF(indexFermion) << " "; if (indexFermion!=0&&indexFermion!=10) { ZF.calcXS_AFB_2(indexFermion, sqrt_s, Gamma_Z, 0, GVE, GAE, GVF, GAF, &XS[indexFermion], &AFB[indexFermion]); cout << XS[indexFermion] << " " << AFB[indexFermion]; } cout << endl; } cout << endl; cout << "##### call ZFitter::calcXS_AFB_3() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Cross sections, FB asymmetries" << endl; for (indexFermion=0; indexFermion<11; indexFermion++) { /* get the total width */ double Gamma_Z = ZF.Gamma_Z(); /* get the effective vector and axial-vector couplings */ double GVF, GAF; if (indexFermion<11) { GAF = sqrt(ZF.rhoZ_f(indexFermion).real())*0.5; GVF = ZF.gZ_f(indexFermion).real()*GAF; } else { GAF = sqrt(ZF.rhoZ_f(1).real())*0.5; GVF = ZF.gZ_f(1).real()*GAF; } cout << setw(9) << ZF.convertINDF(indexFermion) << " "; double GVF2 = GVF*GVF; double GAF2 = GAF*GAF; if (indexFermion==1||indexFermion==2||indexFermion==3||indexFermion==11) { ZF.calcXS_AFB_3(indexFermion, sqrt_s, Gamma_Z, 0, GVF2, GAF2, &XS[indexFermion], &AFB[indexFermion]); cout << XS[indexFermion] << " " << AFB[indexFermion]; } cout << endl; } cout << endl; cout << "##### call ZFitter::calcXS_AFB_4() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Cross sections, FB asymmetries" << endl; for (indexFermion=0; indexFermion<11; indexFermion++) { /* get the total width */ double Gamma_Z = ZF.Gamma_Z(); /* get the effective vector and axial-vector couplings */ double GAE = sqrt(ZF.rhoZ_f(1).real())*0.5; double GVE = ZF.gZ_f(1).real()*GAE; double GVF, GAF; if (indexFermion<11) { GAF = sqrt(ZF.rhoZ_f(indexFermion).real())*0.5; GVF = ZF.gZ_f(indexFermion).real()*GAF; } else { GAF = GAE; GVF = ZF.gZ_f(1).real()*GAF; } double PFOUR = GVE*GAE*GVF*GAF; double PVAE2 = GVE*GVE + GAE*GAE; double PVAF2 = GVF*GVF + GAF*GAF; cout << setw(9) << ZF.convertINDF(indexFermion) << " "; if (indexFermion==1||indexFermion==2||indexFermion==3) { ZF.calcXS_AFB_4(indexFermion, sqrt_s, Gamma_Z, PFOUR, PVAE2, PVAF2, &XS[indexFermion], &AFB[indexFermion]); cout << XS[indexFermion] << " " << AFB[indexFermion]; } cout << endl; } cout << endl; cout << "##### call ZFitter::calcTauPol() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Tau polarization, Tau polarization asymmetry" << endl; ZF.calcTauPol(sqrt_s, &TAUPOL, &TAUAFB); cout << setw(9) << ZF.convertINDF(3) << " " << TAUPOL << " " << TAUAFB << endl << endl; cout << "##### call ZFitter::calcTauPol_2() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Tau polarization, Tau polarization asymmetry" << endl; /* get the total width */ double Gamma_Z = ZF.Gamma_Z(); /* get the effective vector and axial-vector couplings */ double GAE = sqrt(ZF.rhoZ_f(1).real())*0.5; double GVE = ZF.gZ_f(1).real() * GAE; double GAF = sqrt(ZF.rhoZ_f(3).real())*0.5; double GVF = ZF.gZ_f(3).real() * GAF; ZF.calcTauPol_2(sqrt_s, Gamma_Z, 0, GVE, GAE, GVF, GAF, &TAUPOL, &TAUAFB); cout << setw(9) << ZF.convertINDF(3) << " " << TAUPOL << " " << TAUAFB << endl << endl; cout << "##### call ZFitter::calcALR() #####" << endl << endl; cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Left-right asymmetries " << endl; double POL = 0.63; double ALRI; for (indexFermion=0; indexFermion<10; indexFermion++) { ZF.calcALR(indexFermion, sqrt_s, POL, &XSPL[indexFermion], &XSMI[indexFermion]); ALRI = (XSMI[indexFermion] - XSPL[indexFermion]) / (XSMI[indexFermion] + XSPL[indexFermion]) / POL; cout << setw(9) << ZF.convertINDF(indexFermion) << " "; if (indexFermion!=8) cout << ALRI; cout << endl; } cout << endl; cout << "##### call ZFitter::calcDXS() " << "with the flag ISPP=2 #####" << endl << endl; ZF.setFlag("ISPP", 2); // default: 2 cout << " sqrt(s) = " << sqrt_s << endl << endl; cout << " Channel, Differential cross sections" << endl; for (indexFermion = 0; indexFermion < 11; indexFermion++) { cout << setw(9) << ZF.convertINDF(indexFermion) << " "; for (int i=0; i<=6; i++) { double CSA = -1.0 + 2.0/6.0*(double)i; // cos(theta) ZF.calcDXS(indexFermion, sqrt_s, CSA, &DXS[indexFermion]); cout << setw(9) << DXS[indexFermion] << " "; } cout << endl; } cout << endl; /* Outputs from ZFITTER subroutines (for tests) */ // //cout << "##### call ZFitter::info(0) #####" // << endl << endl; //cout << " ------------- Flag info ---------------" << endl; //ZF.FlagInfo(); // output flag info // //cout << endl << "##### call ZFitter::info(1) #####" // << endl << endl; //cout << " ------------------------ Cut info --------------------------"; //ZF.CutInfo(); // print cut info }