Example #1
0
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;
}
Example #2
0
/* 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

}