Este repositorio contiene los factores de escala (SF) recomendados para varios discriminadores tau y herramientas para leerlos. Se pueden encontrar recomendaciones más detalladas en esta página de TWiki: https://twiki.cern.ch/twiki/bin/viewauth/CMS/TauIDRecommendationForRun2
️ Tenga en cuenta que en un futuro próximo los SF en formato de archivos ROOT se eliminarán gradualmente y, a largo plazo, serán reemplazados por la herramientacorrectionlib
y los archivos JSON proporcionados centralmente por XPOG. Instrucciones más detalladas para las correcciones tau están aquí.
Para instalar la herramienta para leer los SF de ID tau, haga
export SCRAM_ARCH=slc6_amd64_gcc700 # for CMSSW_10_3_3, check "scram list"
CMSSW_BASE=CMSSW_10_3_3 # or whichever release you desire
cmsrel $CMSSW_BASE
cd $CMSSW_BASE/src
git clone https://github.com/cms-tau-pog/TauIDSFs TauPOG/TauIDSFs
cmsenv
scram b -j8
Después de compilar con esta jerarquía de directorios respectiva, puede acceder a la herramienta ( python/TauIDSFTool.py
) en python como
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
Se puede ejecutar una prueba de la herramienta en Python con
./test/testTauIDSFTool.py
Una implementación de C++ similar está disponible en src/TauIDSFTool.cc
, con un ejemplo simple de uso en ( test/testTauIDSFTool.cc
). Esta también es una prueba de instalación que se puede compilar y ejecutar con
scram b runtests -j8
Alternativamente, si desea utilizar la herramienta Python de forma independiente sin CMSSW, clone el repositorio y asegúrese de que su PYTHONPATH
apunte al módulo TauIDSFTool
.
export PYTHONPATH=<path to python directory>:$PYTHONPATH
Después, deberías poder hacer:
from TauIDSFTool import TauIDSFTool
Este es un resumen aproximado de los SF disponibles para DeepTau2017v2p1
y DeepTau2018v2p5
en data/
:
componente tau | genmatch | DeepTau2017v2p1 VSjet | DeepTau2017v2p1 VSe | DeepTau2017v2p1 VSmu | DeepTau2018v2p5 VSjet | escala de energía |
---|---|---|---|---|---|---|
verdadero tau | 5 | vs pT y DM (para MC) o vs. pT, o vs. DM (para Embed.) | – (*) | – (*) | vs pT y DM (para MC), sin incrustar. correcciones derivadas todavía | contra DM |
e -> tau falso | 1 , 3 | – | contra eta | – | contra DM y eta | |
mu -> tau falso | 2 , 4 | – | – | contra eta | – (±1% unc.) |
(*) Los factores de escala se proporcionan sólo para un subconjunto de los puntos de trabajo. Para el discriminador VSele, se miden para los WP VVLoose y Tight; se recomienda encarecidamente a los usuarios que utilicen uno de estos dos puntos de trabajo y deben informar al TauPOG para su aprobación si se utiliza otro punto de trabajo. Para VSmu, se miden para Tight WP, pero no esperamos una gran dependencia del VSmu WP elegido en este caso, por lo que puede usar cualquier WP disponible que desee para el rechazo de muones.
La coincidencia gen se define como:
1
para electrones rápidos2
para muones rápidos3
para electrones de la desintegración tau4
para muones de la desintegración de tau5
para taus reales6
por no coincidir, o jets fingiendo taus. Para obtener más información sobre la coincidencia genérica de taus, consulte aquí. Tenga en cuenta que en nanoAOD esto está disponible como Tau_GenPartFlav
, pero jet o ninguna coincidencia corresponden a Tau_GenPartFlav==0
en lugar de 6
.Los SF están destinados a las siguientes campañas:
Etiqueta de año | campaña de MC | Campaña de datos |
---|---|---|
2016Legacy (*) | RunIISummer16MiniAODv3 | 17Jul2018 |
2017ReReco (*) | RunIIFall17MiniAODv2 | 31Mar2018 |
2018ReReco (*) | RunIIAutumn18MiniAOD | 17Sep2018 / 22Jan2019 |
UL2016_preVFP | RunIISummer20UL16*APV | (HIPM_)UL2016_MiniAODv* |
UL2016_postVFP | RunIISummer20UL16 | UL2016_MiniAODv* |
UL2017 | RunIISummer20UL17 | UL2017_MiniAODv* |
UL2018 | RunIISummer20UL18 | UL2018_MiniAODv* |
(*) Los SF proporcionados para muestras anteriores a UL siguen las antiguas convenciones para la agrupación por pT o DM, y siguen el antiguo esquema de incertidumbre donde solo se informan las incertidumbres totales.
Se proporciona un script simple para volcar las correcciones guardadas en histogramas o funciones de los archivos en data/
. Usar por ejemplo
./test/dumpTauIDSFs.py data/TauID_SF_*_DeepTau2017v2p1VSjet_*.root
Los SF dependientes de DM y pT se proporcionan como funciones TF1 en los archivos ROOT "TauID_SF_dm_DeepTau2017v2p1VSjet_VSjetX_VSeleY_Mar07.root" para DeepTau2017v2p1 y "TauID_SF_dm_DeepTau2018v2p5VSjet_VSjetX_VSeleY_Jul18.root" para DeepTau2018v2p5, donde X corresponde al VSjet WP e Y corresponde al VSele WP.
Los archivos ROOT contienen varias funciones. Los valores centrales se obtienen de las funciones denominadas como "DM$DM_$ERA_fit" donde $DM es el modo de caída = 0, 1, 10 u 11, y $ERA = 2016_preVFP, 2016_postVFP, 2017 o 2018.
Por ejemplo, para obtener el valor central de los SF para los WP Medium VSjet y VVLoose VSele del discriminador 'DeepTau2017v2p1VSjet'
para DM=1 en 2018, utilice
file = TFile("data/TauID_SF_dm_DeepTau2017v2p1VSjet_VSjetMedium_VSeleVVLoose_Mar07.root")
func = file.Get('DM1_2018_fit')
sf = func.Eval(pt)
También hay funciones que corresponden a variaciones sistemáticas a las que se puede acceder de la misma forma. La siguiente tabla ofrece un resumen de los nombres de las funciones y a qué incertidumbres corresponden para DeepTau2017v2p1:
Incertidumbre | Nombre de la función en archivos ROOT | Cadena para pasar a la herramienta. | Notas | Correlacionado por época | Correlacionado por DM |
---|---|---|---|---|---|
Statistical uncertainty 1 | DM$DM_$ERA_fit_uncert0_{up,down} | uncert0_{up,down} | Statistical uncertainty on linear fit parameters from eigendecomposition of covariance matrix. | ✗ | ✗ |
Statistical uncertainty 2 | DM$DM_$ERA_fit_uncert1_{up,down} | uncert1_{up,down} | Statistical uncertainty on linear fit parameters from eigendecomposition of covariance matrix. | ✗ | ✗ |
Systematic alleras | DM$DM_$ERA_syst_alleras_{up,down}_fit | syst_alleras_{up,down} | The component of the systematic uncertainty that is correlated across DMs and eras | ✓ | ✓ |
Systematic by-era | DM$DM_$ERA_syst_$ERA_{up,down}_fit | syst_$ERA_{up,down} | The component of the systematic uncertainty that is correlated across DMs but uncorrelated by eras | ✗ | ✓ |
Systematic by-era and by-DM | DM$DM_$ERA_syst_dm$DM_$ERA_{up,down}_fit | syst_dm$DM_$ERA_{up,down} | The component of the systematic uncertainty that is uncorrelated across DMs and eras | ✗ | ✗ |
La siguiente tabla ofrece un resumen de los nombres de las funciones y a qué incertidumbres corresponden para DeepTau2018v2p5:
Incertidumbre | Nombre de la función en archivos ROOT | Cadena para pasar a la herramienta. | Notas | Correlacionado por época | Correlacionado por DM |
---|---|---|---|---|---|
Statistical uncertainty 1 | DM$DM_$ERA_fit_uncert0_{up,down} | uncert0_{up,down} | Statistical uncertainty on linear fit parameters from eigendecomposition of covariance matrix. | ✗ | ✗ |
Statistical uncertainty 2 | DM$DM_$ERA_fit_uncert1_{up,down} | uncert1_{up,down} | Statistical uncertainty on linear fit parameters from eigendecomposition of covariance matrix. | ✗ | ✗ |
Systematic alleras | DM$DM_$ERA_syst_alleras_{up,down}_fit | syst_alleras_{up,down} | The component of the systematic uncertainty that is correlated across DMs and eras | ✓ | ✓ |
Systematic by-era | DM$DM_$ERA_syst_alldms_$ERA_{up,down}_fit | syst_alldms_$ERA_{up,down} | The component of the systematic uncertainty that is correlated across DMs but uncorrelated by eras | ✗ | ✗ |
Systematic Tau Energy scale | DM$DM_$ERA_TES{Up,Down}_fit | TES_{up,down} | The uncertainty due to the tauenergy scale systematic uncertainty | ✗ | ✗ |
También se puede acceder a los SF utilizando la herramienta:
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
tauSFTool = TauIDSFTool(year='UL2018',id='DeepTau2017v2p1VSjet',wp='Medium',wp_vsele='VVLoose',ptdm=True)
sf = tauSFTool.getSFvsDMandPT(pt,dm,genmatch)
Y se puede acceder a las variaciones de incertidumbre usando:
sf = tauSFTool.getSFvsDMandPT(pt,dm,genmatch,unc)
donde la cadena unc
se utiliza para identificar la variación sistemática como se indica en la tercera columna de la tabla anterior
Los análisis que son sensibles a taus con pT>140 GeV deben cambiar a los SF dedicados de pT alto medidos en contenedores de pT superiores a 140 GeV.
Los SF se proporcionan como objetos TGraphAsymmErrors en los archivos ROOT "TauID_SF_Highpt_DeepTau2017v2p1VSjet_VSjetX_VSeleY_Mar07.root", donde X corresponde al VSjet WP e Y corresponde al VSele WP.
Los archivos ROOT contienen varios gráficos. Los valores centrales se obtienen de los gráficos denominados como "DMinclusive_$ERA" donde $ERA = 2016_preVFP, 2016_postVFP, 2017 o 2018. Estos gráficos contienen 2 contenedores de pT con pT 100-200 y pT>200 GeV. Sólo debes usarlos como valores agrupados. Para taus entre 140-200 GeV use el primer contenedor, y para taus con pT>200 GeV use el segundo contenedor.
También se puede acceder a los SF mediante la herramienta:
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
tauSFTool = TauIDSFTool(year='UL2018',id='DeepTau2017v2p1VSjet',wp='Medium',wp_vsele='VVLoose',highpT=True)
sf = tauSFTool.getHighPTSFvsPT(pt,genmatch)
Y se puede acceder a las variaciones de incertidumbre usando:
sf = tauSFTool.getHighPTSFvsPT(pt,genmatch,unc)
donde "unc" depende de la fuente de incertidumbre. La siguiente tabla describe las fuentes de incertidumbre y la cadena que debe pasar a la herramienta para recuperarlas:
Incertidumbre | Cadena para pasar a la herramienta. | Notas | Correlacionado por época | Correlacionado por pT |
---|---|---|---|---|
Statistical uncertainty 1 | stat_bin1_{up,down} | Statistical uncertainty on the pT 140-200 GeV bin. Note this also includes systematic uncertainties that are decorrelated by pT bin and era (since they also behave like statistical uncertainties) | ✗ | ✗ |
Statistical uncertainty 2 | stat_bin2_{up,down} | Statistical uncertainty on the pT >200 GeV bin. Note this also includes systematic uncertainties that are decorrelated by pT bin and era (since they also behave like statistical uncertainties) | ✗ | ✗ |
Systematic | syst_{up,down} | The systematic uncertainty that is correlated across pT regions and eras | ✓ | ✓ |
Extrapolation Systematic | extrap_{up,down} | The systematics uncertainty due to the extrapolation of the SF to higher pT regions | ✓ | ✓ |
En desuso para UL MC: ¡use DM y SF dependientes de pT en su lugar!
Los factores de escala integrados aún siguen las antiguas prescripciones para SF agrupados en pT o DM, por lo que estas instrucciones aún se aplican en este caso.
Los SF dependientes de pT se proporcionan como funciones TF1
. Por ejemplo, para obtener los del WP medio del discriminador 'DeepTau2017v2p1VSjet'
para 2016, utilice
file = TFile("data/TauID_SF_pt_DeepTau2017v2p1VSjet_2016Legacy.root")
func = file.Get('Medium_cent')
sf = func.Eval(pt)
La herramienta se puede utilizar como
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
tauSFTool = TauIDSFTool('2016Legacy','DeepTau2017v2p1VSjet','Medium',ptdm=False)
y para recuperar el SF para un pT tau determinado, haga
sf = tauSFTool.getSFvsPT(pt)
El SF solo debe aplicarse a objetos tau que coincidan con taus "real" a nivel de generación ( genmatch==5
). Puede pasar el argumento genmatch
opcional y la función devolverá el SF apropiado si genmatch==5
y 1.0
en caso contrario.
sf = tauSFTool.getSFvsPT(pt,genmatch)
Las incertidumbres recomendadas se pueden recuperar como
sf_up = tauSFTool.getSFvsPT(pt,genmatch,unc='Up')
sf_down = tauSFTool.getSFvsPT(pt,genmatch,unc='Down')
o los tres a la vez:
sf_down, sf, sf_up = tauSFTool.getSFvsPT(pt,genmatch,unc='All')
Para el tau ID SF de las muestras incrustadas , establezca el indicador emb
en True
:
tauSFTool = TauIDSFTool('2017ReReco','DeepTau2017v2p1VSjet','Medium',emb=True)
Si su análisis utiliza un WP DeepTauVSe más flexible que VLoose y/o DeepTauVSmu más flexible que los discriminadores medios, debe agregar incertidumbre adicional usando el indicador otherVSlepWP
:
tauSFTool = TauIDSFTool('2017ReReco','DeepTau2017v2p1VSjet','Medium',otherVSlepWP=True)
En desuso para UL MC: ¡use DM y SF dependientes de pT en su lugar!
Los factores de escala integrados aún siguen las antiguas prescripciones para SF agrupados en pT o DM, por lo que estas instrucciones aún se aplican en este caso.
Los análisis que utilizan activadores ditau y tau pT > 40 GeV pueden utilizar SF dependientes de DM. Tenga en cuenta que no hay SF disponibles para los modos de caída 5 y 6, y la herramienta devolverá 1 de forma predeterminada; lea esta sección de TWiki. Se proporcionan como histogramas TH1
. Por ejemplo, para obtener los del WP medio del discriminador 'DeepTau2017v2p1VSjet'
para 2016, utilice
file = TFile("data/TauID_SF_dm_DeepTau2017v2p1VSjet_2016Legacy.root")
hist = file.Get('Medium')
sf = hist.GetBinContent(hist.GetXaxis().FindBin(dm))
o con la herramienta,
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
tauSFTool = TauIDSFTool('2017ReReco','MVAoldDM2017v2','Tight',dm=True,ptdm=False)
sf = tauSFTool.getSFvsDM(pt,dm,genmatch)
sf_up = tauSFTool.getSFvsDM(pt,dm,genmatch,unc='Up')
sf_down = tauSFTool.getSFvsDM(pt,dm,genmatch,unc='Down')
donde genmatch
es opcional.
Para aplicar SF a electrones o muones que simulan taus, utilice la eta del tau reconstruido y el código genmatch
. Se proporcionan como histogramas TH1
:
file = TFile("data/TauID_SF_eta_DeepTau2017v2p1VSmu_2016Legacy.root")
hist = file.Get('Medium')
sf = hist.GetBinContent(hist.GetXaxis().FindBin(eta))
o con la herramienta,
python/TauIDSFTool.py
antiEleSFTool = TauIDSFTool('2017ReReco','antiEleMVA6','Loose')
antiMuSFTool = TauIDSFTool('2017ReReco','antiMu3','Tight')
antiEleSF = antiEleSFTool.getSFvsEta(eta,genmatch)
antiMuSF = antiMuSFTool.getSFvsEta(eta,genmatch)
La incertidumbre se obtiene de forma similar a la anterior.
Uso para DeepTau2018v2p5
Las correcciones de la escala de energía tau (TES) para taus con pT<140 GeV se proporcionan en los archivos data/TauES_dm_DeepTau2018v2p5VSjet_$ERA_VSjet$X_VSele$Y_Jul18.root
, donde $X corresponde al VSjet WP, $Y corresponde al VSele WP y $ERA = UL2016_preVFP, UL2016_postVFP, UL2017 o UL2018
Cada archivo contiene un histograma ( 'tes'
) con el TES centrado alrededor de 1.0
medido en contenedores del modo de desintegración tau. Debe aplicarse a una tau genuina multiplicando tau TLorentzVector
, o equivalentemente, la energía tau, pT y masa de la siguiente manera:
file = TFile("data/TauES_dm_DeepTau2018v2p5VSjet_UL2018_VSjetMedium_VSeleVVLoose_Jul18.root")
hist = file.Get('tes')
tes = hist.GetBinContent(hist.GetXaxis().FindBin(dm))
# scale the tau's TLorentzVector
tau_tlv *= tes
# OR, scale the energy, mass and pT
tau_E *= tes
tau_pt *= tes
tau_m *= tes
Las incertidumbres son iguales al 1,5% para los modos de desintegración 0, 1 y 10, y al 2% para el modo de desintegración 11. Las incertidumbres deben descorrelacionarse por modos y eras de desintegración. Para taus con pT>140 GeV, no se deben aplicar correcciones al valor nominal de TES de MC, pero se debe incluir una incertidumbre mayor del 3%. Se proporciona una clase simple, TauESTool
, para obtener el TES como
from TauPOG.TauIDSFs.TauIDSFTool import TauESTool
testool = TauESTool('UL2018','DeepTau2018v2p5VSjet',wp='Medium', wp_vsele='VVLoose')
tes = testool.getTES(pt,dm,genmatch)
tesUp = testool.getTES(pt,dm,genmatch,unc='Up')
tesDown = testool.getTES(pt,dm,genmatch,unc='Down')
Este método calcula los valores centrales y la incertidumbre para valores de pT bajos (20 GeV < pT < 140 GeV) y valores de pT más altos (pT > 140 GeV).
Uso para DeepTau2017v2p1
La escala de energía tau (TES) se proporciona en los archivos data/TauES_dm_*.root
. Cada archivo contiene un histograma ( 'tes'
) con el TES centrado en 1.0
. Debe aplicarse a una tau genuina multiplicando tau TLorentzVector
, o equivalentemente, la energía tau, pT y masa de la siguiente manera:
file = TFile("data/TauES_dm_DeepTau2017v2p1VSjet_UL2018.root")
hist = file.Get('tes')
tes = hist.GetBinContent(hist.GetXaxis().FindBin(dm))
# scale the tau's TLorentzVector
tau_tlv *= tes
# OR, scale the energy, mass and pT
tau_E *= tes
tau_pt *= tes
tau_m *= tes
Se proporciona una clase simple, TauESTool
, para obtener el TES como
from TauPOG.TauIDSFs.TauIDSFTool import TauESTool
testool = TauESTool('2017ReReco','DeepTau2017v2p1VSjet')
tes = testool.getTES(pt,dm,genmatch)
tesUp = testool.getTES(pt,dm,genmatch,unc='Up')
tesDown = testool.getTES(pt,dm,genmatch,unc='Down')
Este método calcula la incertidumbre correcta en valores de pT intermedios (34 GeV < pT < 170 GeV) y superiores (pT > 170 GeV). Los análisis que solo quieran utilizar el TES con pT alto, pueden utilizar lo siguiente en su lugar:
tes = testool.getTES_highpt(dm,genmatch)
La escala de energía falsa e -> tau (FES) se proporciona en los archivos data/TauFES_eta-dm_*.root
. Cada archivo contiene un gráfico ( 'fes'
) con el FES centrado en 1.0
. Sólo debe aplicarse a taus reconstruidos que son falsificados por electrones (es decir, genmatch==1
o 3
) y tienen DM 0 o 1. La aplicación es similar a la del TES anterior. Se proporciona una clase simple, TauFESTool
, para obtener el FES como
from TauPOG.TauIDSFs.TauIDSFTool import TauFESTool
festool = TauESTool('2017ReReco')
fes = festool.getFES(eta,dm,genmatch)
fesUp = festool.getFES(eta,dm,genmatch,unc='Up')
fesDown = festool.getFES(eta,dm,genmatch,unc='Down')