//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 27.04.2011, MCP working group //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ////////////////// // HEADER FILES // ////////////////// #include "MuidCBScaleEffFactors.h" //***************************************************************************** ///////////////// // CONSTRUCTOR // ///////////////// Analysis::MuidCBScaleEffFactors::MuidCBScaleEffFactors(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.99684; m_scale_factor_A[1] = 1.00741; m_scale_factor_A[2] = 0.99342; m_scale_factor_A[3] = 0.99153; m_scale_factor_A[4] = 0.99700; m_scale_factor_A[5] = 0.99546; m_scale_factor_A[6] = 0.99841; m_scale_factor_A[7] = 1.00031; m_scale_factor_A[8] = 1.00004; m_scale_factor_A[9] = 0.97882; m_scale_factor_uncertainty_A[0] = 0.00319; m_scale_factor_uncertainty_A[1] = 0.00269; m_scale_factor_uncertainty_A[2] = 0.00359; m_scale_factor_uncertainty_A[3] = 0.00474; m_scale_factor_uncertainty_A[4] = 0.00312; m_scale_factor_uncertainty_A[5] = 0.00248; m_scale_factor_uncertainty_A[6] = 0.00204; m_scale_factor_uncertainty_A[7] = 0.00397; m_scale_factor_uncertainty_A[8] = 0.00476; m_scale_factor_uncertainty_A[9] = 0.00357; m_scale_factor_C[0] = 0.98913; m_scale_factor_C[1] = 1.00407; m_scale_factor_C[2] = 1.00204; m_scale_factor_C[3] = 0.98621; m_scale_factor_C[4] = 0.99407; m_scale_factor_C[5] = 0.99040; m_scale_factor_C[6] = 0.99881; m_scale_factor_C[7] = 0.98235; m_scale_factor_C[8] = 0.99866; m_scale_factor_C[9] = 0.98981; m_scale_factor_uncertainty_C[0] = 0.00348; m_scale_factor_uncertainty_C[1] = 0.00300; m_scale_factor_uncertainty_C[2] = 0.00360; m_scale_factor_uncertainty_C[3] = 0.00463; m_scale_factor_uncertainty_C[4] = 0.00327; m_scale_factor_uncertainty_C[5] = 0.00259; m_scale_factor_uncertainty_C[6] = 0.00200; m_scale_factor_uncertainty_C[7] = 0.00524; m_scale_factor_uncertainty_C[8] = 0.00450; m_scale_factor_uncertainty_C[9] = 0.00331; // 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.9791; m_scale_factor_A_periodB[1] = 0.9876; m_scale_factor_A_periodB[2] = 0.9563; m_scale_factor_A_periodB[3] = 0.9953; m_scale_factor_A_periodB[4] = 0.9752; m_scale_factor_A_periodB[5] = 1.0161; m_scale_factor_A_periodB[6] = 1.0023; m_scale_factor_A_periodB[7] = 0.9523; m_scale_factor_A_periodB[8] = 0.9659; m_scale_factor_A_periodB[9] = 1.0090; m_scale_factor_uncertainty_A_periodB[0] = 0.0186; m_scale_factor_uncertainty_A_periodB[1] = 0.0183; m_scale_factor_uncertainty_A_periodB[2] = 0.0223; m_scale_factor_uncertainty_A_periodB[3] = 0.0254; m_scale_factor_uncertainty_A_periodB[4] = 0.0204; m_scale_factor_uncertainty_A_periodB[5] = 0.0094; m_scale_factor_uncertainty_A_periodB[6] = 0.0098; m_scale_factor_uncertainty_A_periodB[7] = 0.0423; m_scale_factor_uncertainty_A_periodB[8] = 0.0354; m_scale_factor_uncertainty_A_periodB[9] = 0.0170; m_scale_factor_C_periodB[0] = 0.9834; m_scale_factor_C_periodB[1] = 0.9719; m_scale_factor_C_periodB[2] = 0.9817; m_scale_factor_C_periodB[3] = 1.0114; m_scale_factor_C_periodB[4] = 0.9294; m_scale_factor_C_periodB[5] = 0.9544; m_scale_factor_C_periodB[6] = 1.0049; m_scale_factor_C_periodB[7] = 0.8094; m_scale_factor_C_periodB[8] = 0.9578; m_scale_factor_C_periodB[9] = 0.9542; m_scale_factor_uncertainty_C_periodB[0] = 0.0204; m_scale_factor_uncertainty_C_periodB[1] = 0.0180; m_scale_factor_uncertainty_C_periodB[2] = 0.0217; m_scale_factor_uncertainty_C_periodB[3] = 0.0234; m_scale_factor_uncertainty_C_periodB[4] = 0.0288; m_scale_factor_uncertainty_C_periodB[5] = 0.0201; m_scale_factor_uncertainty_C_periodB[6] = 0.0090; m_scale_factor_uncertainty_C_periodB[7] = 0.0768; m_scale_factor_uncertainty_C_periodB[8] = 0.0360; m_scale_factor_uncertainty_C_periodB[9] = 0.0229; } //***************************************************************************** //////////////////////// // METHOD scaleFactor // //////////////////////// double Analysis::MuidCBScaleEffFactors::scaleFactor( const TLorentzVector & tlv) const { return scaleFactor(tlv, m_last_run_periodB+1); } //***************************************************************************** /////////////////////////////////// // METHOD scaleFactorUncertainty // /////////////////////////////////// double Analysis::MuidCBScaleEffFactors::scaleFactorUncertainty( const TLorentzVector & tlv) const { return scaleFactorUncertainty(tlv, m_last_run_periodB+1); } //***************************************************************************** ////////////////////////////// // METHOD scaleFactor(., .) // ////////////////////////////// double Analysis::MuidCBScaleEffFactors::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::MuidCBScaleEffFactors::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::MuidCBScaleEffFactors::scaleFactorSystematicUncertainty( const TLorentzVector & tlv) const { return 0.002+4.2e-6*tlv.E()/1000.0; }