//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 27.04.2011, MCP working group //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ////////////////// // HEADER FILES // ////////////////// #include "MuidTightScaleEffFactors.h" //***************************************************************************** ///////////////// // CONSTRUCTOR // ///////////////// Analysis::MuidTightScaleEffFactors::MuidTightScaleEffFactors(void) { m_last_run_periodB = 178109; //////////////////////////////////////////////////////////////// // FILL THE SCALE FACTOR AND SCALE FACTOR UNCERTAINTY VECTORS // //////////////////////////////////////////////////////////////// m_scale_factor_A = std::vector(10); m_scale_factor_uncertainty_A = std::vector(10); m_scale_factor_C = std::vector(10); m_scale_factor_uncertainty_C = std::vector(10); m_scale_factor_A[0] = 0.99745; m_scale_factor_A[1] = 1.00876; m_scale_factor_A[2] = 0.99691; m_scale_factor_A[3] = 1.00849; m_scale_factor_A[4] = 1.00167; m_scale_factor_A[5] = 1.00030; m_scale_factor_A[6] = 0.99954; m_scale_factor_A[7] = 1.00257; m_scale_factor_A[8] = 0.99519; m_scale_factor_A[9] = 0.98972; m_scale_factor_uncertainty_A[0] = 0.00308; m_scale_factor_uncertainty_A[1] = 0.00215; m_scale_factor_uncertainty_A[2] = 0.00317; m_scale_factor_uncertainty_A[3] = 0.00263; m_scale_factor_uncertainty_A[4] = 0.00209; m_scale_factor_uncertainty_A[5] = 0.00181; m_scale_factor_uncertainty_A[6] = 0.00154; m_scale_factor_uncertainty_A[7] = 0.00283; m_scale_factor_uncertainty_A[8] = 0.00380; m_scale_factor_uncertainty_A[9] = 0.00250; m_scale_factor_C[0] = 0.99286; m_scale_factor_C[1] = 1.00707; m_scale_factor_C[2] = 1.00837; m_scale_factor_C[3] = 0.99982; m_scale_factor_C[4] = 0.99800; m_scale_factor_C[5] = 1.00244; m_scale_factor_C[6] = 1.00038; m_scale_factor_C[7] = 0.99608; m_scale_factor_C[8] = 0.99621; m_scale_factor_C[9] = 0.99593; m_scale_factor_uncertainty_C[0] = 0.00328; m_scale_factor_uncertainty_C[1] = 0.00249; m_scale_factor_uncertainty_C[2] = 0.00304; m_scale_factor_uncertainty_C[3] = 0.00285; m_scale_factor_uncertainty_C[4] = 0.00242; m_scale_factor_uncertainty_C[5] = 0.00156; m_scale_factor_uncertainty_C[6] = 0.00149; m_scale_factor_uncertainty_C[7] = 0.00346; m_scale_factor_uncertainty_C[8] = 0.00345; m_scale_factor_uncertainty_C[9] = 0.00239; // separate values for period B // m_scale_factor_A_periodB = std::vector(10); m_scale_factor_uncertainty_A_periodB = std::vector(10); m_scale_factor_C_periodB = std::vector(10); m_scale_factor_uncertainty_C_periodB = std::vector(10); m_scale_factor_A_periodB[0] = 0.9799; m_scale_factor_A_periodB[1] = 0.9922; m_scale_factor_A_periodB[2] = 0.9685; m_scale_factor_A_periodB[3] = 1.0099; m_scale_factor_A_periodB[4] = 0.9711; m_scale_factor_A_periodB[5] = 1.0058; m_scale_factor_A_periodB[6] = 1.0021; m_scale_factor_A_periodB[7] = 0.9851; m_scale_factor_A_periodB[8] = 0.9660; m_scale_factor_A_periodB[9] = 1.0014; m_scale_factor_uncertainty_A_periodB[0] = 0.0181; m_scale_factor_uncertainty_A_periodB[1] = 0.0145; m_scale_factor_uncertainty_A_periodB[2] = 0.0195; m_scale_factor_uncertainty_A_periodB[3] = 0.0128; m_scale_factor_uncertainty_A_periodB[4] = 0.0178; m_scale_factor_uncertainty_A_periodB[5] = 0.0093; m_scale_factor_uncertainty_A_periodB[6] = 0.0071; m_scale_factor_uncertainty_A_periodB[7] = 0.0278; m_scale_factor_uncertainty_A_periodB[8] = 0.0290; m_scale_factor_uncertainty_A_periodB[9] = 0.0133; m_scale_factor_C_periodB[0] = 0.9933; m_scale_factor_C_periodB[1] = 0.9820; m_scale_factor_C_periodB[2] = 0.9962; m_scale_factor_C_periodB[3] = 1.0145; m_scale_factor_C_periodB[4] = 0.9856; m_scale_factor_C_periodB[5] = 0.9804; m_scale_factor_C_periodB[6] = 1.0102; m_scale_factor_C_periodB[7] = 0.9844; m_scale_factor_C_periodB[8] = 0.9844; m_scale_factor_C_periodB[9] = 0.9844; m_scale_factor_uncertainty_C_periodB[0] = 0.0186; m_scale_factor_uncertainty_C_periodB[1] = 0.0146; m_scale_factor_uncertainty_C_periodB[2] = 0.0176; m_scale_factor_uncertainty_C_periodB[3] = 0.0129; m_scale_factor_uncertainty_C_periodB[4] = 0.0168; m_scale_factor_uncertainty_C_periodB[5] = 0.0136; m_scale_factor_uncertainty_C_periodB[6] = 0.0050; m_scale_factor_uncertainty_C_periodB[7] = 0.0344; m_scale_factor_uncertainty_C_periodB[8] = 0.0260; m_scale_factor_uncertainty_C_periodB[9] = 0.0149; } //***************************************************************************** //////////////////////// // METHOD scaleFactor // //////////////////////// double Analysis::MuidTightScaleEffFactors::scaleFactor( const TLorentzVector & tlv) const { return scaleFactor(tlv, m_last_run_periodB+1); } //***************************************************************************** /////////////////////////////////// // METHOD scaleFactorUncertainty // /////////////////////////////////// double Analysis::MuidTightScaleEffFactors::scaleFactorUncertainty( const TLorentzVector & tlv) const { return scaleFactorUncertainty(tlv, m_last_run_periodB+1); } //***************************************************************************** ////////////////////////////// // METHOD scaleFactor(., .) // ////////////////////////////// double Analysis::MuidTightScaleEffFactors::scaleFactor( const TLorentzVector & tlv, const unsigned int & run_nb) const { int bin(m_eta_phi_binning.symmetricBin(&tlv)-1); if(bin<0) return 1.; //UNKNOWN BIN if (tlv.Eta()>0) { if (run_nb>m_last_run_periodB) { return m_scale_factor_A[bin]; } else { return m_scale_factor_A_periodB[bin]; } } if (run_nb>m_last_run_periodB) { return m_scale_factor_C[bin]; } else { return m_scale_factor_C_periodB[bin]; } } //***************************************************************************** ///////////////////////////////////////// // METHOD scaleFactorUncertainty(., .) // ///////////////////////////////////////// double Analysis::MuidTightScaleEffFactors::scaleFactorUncertainty( const TLorentzVector & tlv, const unsigned int & run_nb) const { int bin(m_eta_phi_binning.symmetricBin(&tlv)-1); if(bin<0) return 1.; //UNKNOWN BIN if (tlv.Eta()>0) { if (run_nb>m_last_run_periodB) { return m_scale_factor_uncertainty_A[bin]; } else { return m_scale_factor_uncertainty_A_periodB[bin]; } } if (run_nb>m_last_run_periodB) { return m_scale_factor_uncertainty_C[bin]; } else { return m_scale_factor_uncertainty_C_periodB[bin]; } } //***************************************************************************** ///////////////////////////////////////////// // METHOD scaleFactorSystematicUncertainty // ///////////////////////////////////////////// double Analysis::MuidTightScaleEffFactors::scaleFactorSystematicUncertainty( const TLorentzVector & tlv) const { return 0.002+4.2e-6*tlv.E()/1000.0; }