void rochcor::momcor_data( TLorentzVector& mu, float charge, float sysdev, int runopt, float& qter){ float ptmu = mu.Pt(); float muphi = mu.Phi(); float mueta = mu.Eta(); // same with mu.Eta() in Root float px = mu.Px(); float py = mu.Py(); float pz = mu.Pz(); float e = mu.E(); int mu_phibin = phibin(muphi); int mu_etabin = etabin(mueta); //float mptsys1 = sran.Gaus(0.0,sysdev); float dm = 0.0; float da = 0.0; if(runopt==0){ dm = (dcor_bfA[mu_phibin][mu_etabin] + mptsys_da_dm[mu_phibin][mu_etabin]*dcor_bfAer[mu_phibin][mu_etabin])/dmavgA[mu_phibin][mu_etabin]; da = dcor_maA[mu_phibin][mu_etabin] + mptsys_da_da[mu_phibin][mu_etabin]*dcor_maAer[mu_phibin][mu_etabin]; }else if(runopt==1){ dm = (dcor_bfB[mu_phibin][mu_etabin] + mptsys_da_dm[mu_phibin][mu_etabin]*dcor_bfBer[mu_phibin][mu_etabin])/dmavgB[mu_phibin][mu_etabin]; da = dcor_maB[mu_phibin][mu_etabin] + mptsys_da_da[mu_phibin][mu_etabin]*dcor_maBer[mu_phibin][mu_etabin]; } float cor = 1.0/(1.0 + dm + charge*da*ptmu); px *= cor; py *= cor; pz *= cor; e *= cor; //after Z pt correction float recm = 0.0; float gscler = 0.0; if(runopt==0){ recm = drecmA; gscler = TMath::Sqrt( TMath::Power(dgsclA_stat,2) + TMath::Power(dgsclA_syst,2) ); }else if(runopt==1){ recm = drecmB; gscler = TMath::Sqrt( TMath::Power(dgsclB_stat,2) + TMath::Power(dgsclB_syst,2) ); } float gscl = (genm_smr/recm); px *= (gscl + gscler_da_dev*gscler); py *= (gscl + gscler_da_dev*gscler); pz *= (gscl + gscler_da_dev*gscler); e *= (gscl + gscler_da_dev*gscler); float momscl = sqrt(px*px + py*py)/ptmu; qter *= momscl; mu.SetPxPyPzE(px,py,pz,e); }
void rochcor2012::momcor_mc( TLorentzVector& mu, float charge, float sysdev, int runopt,bool sync=false){ //sysdev == num : deviation = num float ptmu = mu.Pt(); float muphi = mu.Phi(); float mueta = mu.Eta(); // same with mu.Eta() in Root float px = mu.Px(); float py = mu.Py(); float pz = mu.Pz(); float e = mu.E(); int mu_phibin = phibin(muphi); int mu_etabin = etabin(mueta); //float mptsys = sran.Gaus(0.0,sysdev); float dm = (mcor_bf[mu_phibin][mu_etabin] + mptsys_mc_dm[mu_phibin][mu_etabin]*mcor_bfer[mu_phibin][mu_etabin])/mmavg[mu_phibin][mu_etabin]; float da = mcor_ma[mu_phibin][mu_etabin] + mptsys_mc_da[mu_phibin][mu_etabin]*mcor_maer[mu_phibin][mu_etabin]; float cor = 1.0/(1.0 + dm + charge*da*ptmu); //for the momentum tuning - eta,phi,Q correction px *= cor; py *= cor; pz *= cor; e *= cor; float gscler = 0.0; float deltaer = 0.0; float sfer = 0.0; gscler = TMath::Sqrt( TMath::Power(mgscl_stat,2) + TMath::Power(mgscl_syst,2) ); deltaer = TMath::Sqrt( TMath::Power(delta_stat,2) + TMath::Power(delta_syst,2) ); sfer = TMath::Sqrt( TMath::Power(sf_stat,2) + TMath::Power(sf_syst,2) ); float tune; if (sync) tune = 1.0/(1.0 + (delta + sysdev*deltaer)*sqrt(px*px + py*py)*(1.0 + (sf + sysdev*sfer))); else tune = 1.0/(1.0 + (delta + sysdev*deltaer)*sqrt(px*px + py*py)*eran.Gaus(1.0,(sf + sysdev*sfer))); px *= (tune); py *= (tune); pz *= (tune); e *= (tune); float gscl = (genm_smr/mrecm); px *= (gscl + gscler_mc_dev*gscler); py *= (gscl + gscler_mc_dev*gscler); pz *= (gscl + gscler_mc_dev*gscler); e *= (gscl + gscler_mc_dev*gscler); mu.SetPxPyPzE(px,py,pz,e); }
void rochcor2012::momcor_mc( TLorentzVector& mu, float charge, float sysdev, int runopt, float& qter){ //sysdev == num : deviation = num float ptmu = mu.Pt(); float muphi = mu.Phi(); float mueta = mu.Eta(); // same with mu.Eta() in Root float px = mu.Px(); float py = mu.Py(); float pz = mu.Pz(); float e = mu.E(); int mu_phibin = phibin(muphi); int mu_etabin = etabin(mueta); //float mptsys = sran.Gaus(0.0,sysdev); float Mf = (mcor_bf[mu_phibin][mu_etabin] + mptsys_mc_dm[mu_phibin][mu_etabin]*mcor_bfer[mu_phibin][mu_etabin])/(mpavg[mu_phibin][mu_etabin]+mmavg[mu_phibin][mu_etabin]); float Af = ((mcor_ma[mu_phibin][mu_etabin]+mptsys_mc_da[mu_phibin][mu_etabin]*mcor_maer[mu_phibin][mu_etabin]) - Mf*(mpavg[mu_phibin][mu_etabin]-mmavg[mu_phibin][mu_etabin])); float cor = 1.0/(1.0 + 2.0*Mf + charge*Af*ptmu); //for the momentum tuning - eta,phi,Q correction px *= cor; py *= cor; pz *= cor; e *= cor; float gscler = mgscl_stat; float deltaer = delta_stat; float sfer = sf_stat; float gscl = (genm_smr/mrecm); px *= (gscl + gscler_mc_dev*gscler); py *= (gscl + gscler_mc_dev*gscler); pz *= (gscl + gscler_mc_dev*gscler); e *= (gscl + gscler_mc_dev*gscler); float momscl = sqrt(px*px + py*py)/ptmu; float tune = 1.0/(1.0 + (delta + sysdev*deltaer)*sqrt(px*px + py*py)*eran.Gaus(1.0,(sf + sysdev*sfer))); px *= (tune); py *= (tune); pz *= (tune); e *= (tune); qter *= (momscl*momscl + (1.0-tune)*(1.0-tune)); mu.SetPxPyPzE(px,py,pz,e); }
void rochcor2012::momcor_data( TLorentzVector& mu, float charge, int runopt, float& qter){ float ptmu = mu.Pt(); float muphi = mu.Phi(); float mueta = mu.Eta(); // same with mu.Eta() in Root float px = mu.Px(); float py = mu.Py(); float pz = mu.Pz(); float e = mu.E(); int mu_phibin = phibin(muphi); int mu_etabin = etabin(mueta); float Mf = 0.0; float Af = 0.0; if(runopt==0){ Mf = (dcor_bf[mu_phibin][mu_etabin]+mptsys_da_dm[mu_phibin][mu_etabin]*dcor_bfer[mu_phibin][mu_etabin])/(dpavg[mu_phibin][mu_etabin]+dmavg[mu_phibin][mu_etabin]); Af = ((dcor_ma[mu_phibin][mu_etabin]+mptsys_da_da[mu_phibin][mu_etabin]*dcor_maer[mu_phibin][mu_etabin]) - Mf*(dpavg[mu_phibin][mu_etabin]-dmavg[mu_phibin][mu_etabin])); }else if(runopt==1){ Mf = (dcor_bfD[mu_phibin][mu_etabin]+mptsys_da_dm[mu_phibin][mu_etabin]*dcor_bfDer[mu_phibin][mu_etabin])/(dpavgD[mu_phibin][mu_etabin]+dmavgD[mu_phibin][mu_etabin]); Af = ((dcor_maD[mu_phibin][mu_etabin]+mptsys_da_da[mu_phibin][mu_etabin]*dcor_maDer[mu_phibin][mu_etabin]) - Mf*(dpavgD[mu_phibin][mu_etabin]-dmavgD[mu_phibin][mu_etabin])); } float cor = 1.0/(1.0 + 2.0*Mf + charge*Af*ptmu); px *= cor; py *= cor; pz *= cor; e *= cor; //after Z pt correction float gscler = dgscl_stat; float gscl = (genm_smr/drecm); px *= (gscl + gscler_da_dev*gscler); py *= (gscl + gscler_da_dev*gscler); pz *= (gscl + gscler_da_dev*gscler); e *= (gscl + gscler_da_dev*gscler); float momscl = sqrt(px*px + py*py)/ptmu; qter *= momscl; mu.SetPxPyPzE(px,py,pz,e); }
void rochcor::momcor_data( TLorentzVector& mu, float charge, float sysdev, int runopt){ float ptmu = mu.Pt(); float muphi = mu.Phi(); float mueta = mu.Eta(); // same with mu.Eta() in Root float px = mu.Px(); float py = mu.Py(); float pz = mu.Pz(); float e = mu.E(); int mu_phibin = phibin(muphi); int mu_etabin = etabin(mueta); //float mptsys1 = sran.Gaus(0.0,sysdev); float dm = (dcor_bf[mu_phibin][mu_etabin] + mptsys_da_dm[mu_phibin][mu_etabin]*dcor_bfer[mu_phibin][mu_etabin])/dmavg[mu_phibin][mu_etabin]; float da = dcor_ma[mu_phibin][mu_etabin] + mptsys_da_da[mu_phibin][mu_etabin]*dcor_maer[mu_phibin][mu_etabin]; float cor = 1.0/(1.0 + dm + charge*da*ptmu); px *= cor; py *= cor; pz *= cor; e *= cor; //after Z pt correction float gscler = 0.0; gscler = TMath::Sqrt( TMath::Power(dgscl_stat,2) + TMath::Power(dgscl_syst,2) ); float gscl = (genm_smr/drecm); px *= (gscl + gscler_da_dev*gscler); py *= (gscl + gscler_da_dev*gscler); pz *= (gscl + gscler_da_dev*gscler); e *= (gscl + gscler_da_dev*gscler); mu.SetPxPyPzE(px,py,pz,e); }
void rochcor_42X::momcor_mc( TLorentzVector& mu, float charge, float sysdev, int runopt){ //sysdev == num : deviation = num float ptmu = mu.Pt(); float muphi = mu.Phi(); float mueta = mu.Eta(); // same with mu.Eta() in Root float px = mu.Px(); float py = mu.Py(); float pz = mu.Pz(); float e = mu.E(); int mu_phibin = phibin(muphi); int mu_etabin = etabin(mueta); //float mptsys = sran.Gaus(0.0,sysdev); float dm = 0.0; float da = 0.0; if(runopt == 0){ dm = (mcor_bfA[mu_phibin][mu_etabin] + mptsys_mc_dm[mu_phibin][mu_etabin]*mcor_bfAer[mu_phibin][mu_etabin])/mmavgA[mu_phibin][mu_etabin]; da = mcor_maA[mu_phibin][mu_etabin] + mptsys_mc_da[mu_phibin][mu_etabin]*mcor_maAer[mu_phibin][mu_etabin]; }else if(runopt == 1){ dm = (mcor_bfB[mu_phibin][mu_etabin] + mptsys_mc_dm[mu_phibin][mu_etabin]*mcor_bfBer[mu_phibin][mu_etabin])/mmavgB[mu_phibin][mu_etabin]; da = mcor_maB[mu_phibin][mu_etabin] + mptsys_mc_da[mu_phibin][mu_etabin]*mcor_maBer[mu_phibin][mu_etabin]; } float cor = 1.0/(1.0 + dm + charge*da*ptmu); //for the momentum tuning - eta,phi,Q correction px *= cor; py *= cor; pz *= cor; e *= cor; float recm = 0.0; float drecm = 0.0; float delta = 0.0; float sf = 0.0; float gscler = 0.0; float deltaer = 0.0; float sfer = 0.0; if(runopt==0){ recm = recmA; drecm = drecmA; delta = deltaA; sf = sfA; gscler = TMath::Sqrt( TMath::Power(mgsclA_stat,2) + TMath::Power(mgsclA_syst,2) ); deltaer = TMath::Sqrt( TMath::Power(deltaA_stat,2) + TMath::Power(deltaA_syst,2) ); sfer = TMath::Sqrt( TMath::Power(sfA_stat,2) + TMath::Power(sfA_syst,2) ); }else if(runopt==1){ recm = recmB; drecm = drecmB; delta = deltaB; sf = sfB; gscler = TMath::Sqrt( TMath::Power(mgsclB_stat,2) + TMath::Power(mgsclB_syst,2) ); deltaer = TMath::Sqrt( TMath::Power(deltaB_stat,2) + TMath::Power(deltaB_syst,2) ); sfer = TMath::Sqrt( TMath::Power(sfB_stat,2) + TMath::Power(sfB_syst,2) ); } float tune = 1.0/(1.0 + (delta + sysdev*deltaer)*sqrt(px*px + py*py)*eran.Gaus(1.0,(sf + sysdev*sfer))); px *= (tune); py *= (tune); pz *= (tune); e *= (tune); float gscl = (genm_smr/recm); px *= (gscl + sysdev*gscler); py *= (gscl + sysdev*gscler); pz *= (gscl + sysdev*gscler); e *= (gscl + sysdev*gscler); mu.SetPxPyPzE(px,py,pz,e); }