このリポジトリには、いくつかのタウ弁別器に推奨されるスケール ファクター (SF) と、それらを読み取るためのツールが含まれています。より詳細な推奨事項は、この TWiki ページで見つけることができます: https://twiki.cern.ch/twiki/bin/viewauth/CMS/TauIDRecommendationForRun2
️ 近い将来、ROOT ファイル形式の SF は段階的に廃止され、長期的には、XPOG によって一元的に提供されるcorrectionlib
ツールと JSON ファイルに取って代わられることに注意してください。タウ補正の詳細な手順については、こちらをご覧ください。
タウ ID SF を読み取るためのツールをインストールするには、次のようにします。
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
このそれぞれのディレクトリ階層でコンパイルした後、Python でツール ( python/TauIDSFTool.py
) にアクセスできます。
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
Python でのツールのテストは次のように実行できます。
./test/testTauIDSFTool.py
同様の C++ 実装はsrc/TauIDSFTool.cc
で利用でき、簡単な使用例が ( test/testTauIDSFTool.cc
) にあります。これは、次のようにコンパイルして実行できるインストール テストでもあります。
scram b runtests -j8
あるいは、CMSW を使用せずに Python ツールをスタンドアロンで使用する場合は、リポジトリのクローンを作成し、 PYTHONPATH
TauIDSFTool
モジュールを指していることを確認します。
export PYTHONPATH=<path to python directory>:$PYTHONPATH
その後、次のことができるようになります。
from TauIDSFTool import TauIDSFTool
これは、 data/
内のDeepTau2017v2p1
およびDeepTau2018v2p5
で利用可能な SF の大まかな概要です。
タウ成分 | genmatch | DeepTau2017v2p1 VSjet | DeepTau2017v2p1 VSe | DeepTau2017v2p1 VSmu | DeepTau2018v2p5 VSjet | エネルギースケール |
---|---|---|---|---|---|---|
本物のタウ | 5 | vs pT および DM (MC の場合)、または vs. pT、または vs. DM (埋め込みの場合) | – (*) | – (*) | vs pT および DM (MC 用)、埋め込みなし。修正はまだ導き出されています | 対DM |
e -> タウフェイク | 1 3 | – | 対イータ | – | 対 DM とイータ | |
ムー -> タウ 偽物 | 2 4 | – | – | 対イータ | – (±1% 不自然) |
(*) スケール係数は、作業点のサブセットに対してのみ提供されます。 VSele ディスクリミネーターの場合、それらは VVLoose および Tight WP に対して測定されます。ユーザーには、これら 2 つの動作点のいずれかを使用することが強く推奨されており、別の動作点が使用される場合は承認を得るために TauPOG に報告する必要があります。 VSmu の場合、それらは Tight WP に対して測定されますが、この場合、選択した VSmu WP に大きく依存することは予想されないため、ミューオン除去に使用可能な任意の WP を自由に使用できます。
gen マッチングは次のように定義されます。
1
2
3
4
5
6
。 taus の gen マッチングの詳細については、ここを参照してください。 nanoAOD では、これはTau_GenPartFlav
として利用可能ですが、ジェットまたは一致なしは6
ではなくTau_GenPartFlav==0
に対応することに注意してください。SF は次のキャンペーンを対象としています。
年のラベル | MCキャンペーン | データキャンペーン |
---|---|---|
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* |
(*) UL 前のサンプルに提供される SF は、pT または DM によるビニングの古い規則に従い、合計の不確実性のみが報告される古い不確実性スキームに従います。
ヒストグラムまたはファイルの関数に保存された修正をdata/
にダンプするための簡単なスクリプトが提供されています。たとえば
./test/dumpTauIDSFs.py data/TauID_SF_*_DeepTau2017v2p1VSjet_*.root
DM および pT に依存する SF は、DeepTau2017v2p1 およびDeepTau2018v2p5 の場合は「TauID_SF_dm_DeepTau2018v2p5VSjet_VSjetX_VSeleY_Jul18.root」。X は VSjet WP に対応し、Y は VSele WP に対応します。
ROOT ファイルにはいくつかの関数が含まれています。中心値は、「DM$DM_$ERA_fit」のような名前の関数から取得されます。$DM は減衰モード = 0、1、10、または 11、$ERA = 2016_preVFP、2016_postVFP、2017、または 2018 です。
たとえば、2018 年の DM=1 の'DeepTau2017v2p1VSjet'
識別子の Medium VSjet および VVLoose VSele WP の SF の中心値を取得するには、次を使用します。
file = TFile("data/TauID_SF_dm_DeepTau2017v2p1VSjet_VSjetMedium_VSeleVVLoose_Mar07.root")
func = file.Get('DM1_2018_fit')
sf = func.Eval(pt)
体系的なバリエーションに対応した機能もあり、同様にアクセスできます。以下の表は、関数名とそれらが DeepTau2017v2p1 に対応する不確実性の概要を示しています。
不確実性 | ROOTファイル内の関数名 | ツールに渡す文字列 | 注意事項 | 時代ごとの相関関係 | 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 | ✗ | ✗ |
以下の表は、関数名とそれらが DeepTau2018v2p5 に対応する不確実性の概要を示しています。
不確実性 | ROOTファイル内の関数名 | ツールに渡す文字列 | 注意事項 | 時代ごとの相関関係 | 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 | ✗ | ✗ |
SF には、次のツールを使用してアクセスすることもできます。
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)
また、不確実性の変動には以下を使用してアクセスできます。
sf = tauSFTool.getSFvsDMandPT(pt,dm,genmatch,unc)
ここで、 unc
文字列は、上の表の 3 列目に示されているように、系統的な変動を識別するために使用されます。
pT > 140 GeV のタウスの影響を受けやすい分析では、140 GeV を超える pT のビンで測定される専用の高 pT SF に切り替える必要があります。
SF は、「TauID_SF_Highpt_DeepTau2017v2p1VSjet_VSjetX_VSeleY_Mar07.root」ROOT ファイル内の TGraphAsymmErrors オブジェクトとして提供されます。X は VSjet WP に対応し、Y は VSele WP に対応します。
ROOT ファイルにはいくつかのグラフが含まれています。中心値は、「DMinclusive_$ERA」のような名前のグラフから取得されます。ここで、$ERA = 2016_preVFP、2016_postVFP、2017、または 2018 です。これらのグラフには、pT 100 ~ 200、および pT > 200 GeV の 2 つの pT ビンが含まれています。これらはビン化された値としてのみ使用してください。 140 ~ 200 GeV のタウスの場合は最初のビンを使用し、pT > 200 GeV のタウスの場合は 2 番目のビンを使用します。
SF には、次のツールを使用してアクセスすることもできます。
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
tauSFTool = TauIDSFTool(year='UL2018',id='DeepTau2017v2p1VSjet',wp='Medium',wp_vsele='VVLoose',highpT=True)
sf = tauSFTool.getHighPTSFvsPT(pt,genmatch)
また、不確実性の変動には以下を使用してアクセスできます。
sf = tauSFTool.getHighPTSFvsPT(pt,genmatch,unc)
ここで、「unc」は不確実性源に依存します。以下の表は、不確実性のソースと、それらを取得するためにツールに渡す必要がある文字列を示しています。
不確実性 | ツールに渡す文字列 | 注意事項 | 時代ごとの相関関係 | 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 | ✓ | ✓ |
UL MC では非推奨 - 代わりに DM および pT 依存の SF を使用してください。
埋め込まれたスケール係数は、pT または DM ビン化された SF の古い処方に従っているため、この場合でもこれらの指示が適用されます。
pT 依存の SF はTF1
関数として提供されます。たとえば、2016 年の'DeepTau2017v2p1VSjet'
識別子の中程度の WP の値を取得するには、次を使用します。
file = TFile("data/TauID_SF_pt_DeepTau2017v2p1VSjet_2016Legacy.root")
func = file.Get('Medium_cent')
sf = func.Eval(pt)
このツールは次のように使用できます
from TauPOG.TauIDSFs.TauIDSFTool import TauIDSFTool
tauSFTool = TauIDSFTool('2016Legacy','DeepTau2017v2p1VSjet','Medium',ptdm=False)
そして、指定されたタウ pT の SF を取得するには、次のようにします。
sf = tauSFTool.getSFvsPT(pt)
SF は、gen レベル ( genmatch==5
) で「実際の」タウに一致するタウ オブジェクトにのみ適用される必要があります。オプションのgenmatch
引数を渡すと、関数はgenmatch==5
の場合は適切な SF を返し、それ以外の場合は1.0
返します。
sf = tauSFTool.getSFvsPT(pt,genmatch)
推奨される不確実性は次のように取得できます。
sf_up = tauSFTool.getSFvsPT(pt,genmatch,unc='Up')
sf_down = tauSFTool.getSFvsPT(pt,genmatch,unc='Down')
または、3 つすべてを一度に実行します。
sf_down, sf, sf_up = tauSFTool.getSFvsPT(pt,genmatch,unc='All')
埋め込まれたサンプルのタウ ID SF については、 emb
フラグをTrue
に設定します。
tauSFTool = TauIDSFTool('2017ReReco','DeepTau2017v2p1VSjet','Medium',emb=True)
分析で VLoose よりも緩い DeepTauVSe WP および/または中程度の識別子よりも緩い DeepTauVSmu を使用する場合は、 otherVSlepWP
フラグを使用して不確実性を追加する必要があります。
tauSFTool = TauIDSFTool('2017ReReco','DeepTau2017v2p1VSjet','Medium',otherVSlepWP=True)
UL MC では非推奨 - 代わりに DM および pT 依存の SF を使用してください。
埋め込まれたスケール係数は、pT または DM ビン化された SF の古い処方に従っているため、この場合でもこれらの指示が適用されます。
ditau トリガーおよび tau pT > 40 GeV を使用した分析では、DM 依存の SF が使用される可能性があります。減衰モード 5 および 6 では使用できる SF がなく、ツールはデフォルトで 1 を返すことに注意してください。この TWiki セクションをお読みください。これらはTH1
ヒストグラムとして提供されます。たとえば、2016 年の'DeepTau2017v2p1VSjet'
識別子の中程度の WP の値を取得するには、次を使用します。
file = TFile("data/TauID_SF_dm_DeepTau2017v2p1VSjet_2016Legacy.root")
hist = file.Get('Medium')
sf = hist.GetBinContent(hist.GetXaxis().FindBin(dm))
またはツールを使用して、
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')
ここで、 genmatch
はオプションです。
タウスを模倣した電子またはミューオンに SF を適用するには、再構成されたタウのイータとgenmatch
コードを使用します。これらはTH1
ヒストグラムとして提供されます。
file = TFile("data/TauID_SF_eta_DeepTau2017v2p1VSmu_2016Legacy.root")
hist = file.Get('Medium')
sf = hist.GetBinContent(hist.GetXaxis().FindBin(eta))
またはツールを使用して、
python/TauIDSFTool.py
antiEleSFTool = TauIDSFTool('2017ReReco','antiEleMVA6','Loose')
antiMuSFTool = TauIDSFTool('2017ReReco','antiMu3','Tight')
antiEleSF = antiEleSFTool.getSFvsEta(eta,genmatch)
antiMuSF = antiMuSFTool.getSFvsEta(eta,genmatch)
不確かさは上記と同様の方法で取得されます。
DeepTau2018v2p5の使用法
pT<140 GeV のタウスのタウ エネルギー スケール (TES) 補正は、ファイルdata/TauES_dm_DeepTau2018v2p5VSjet_$ERA_VSjet$X_VSele$Y_Jul18.root
で提供されます。ここで、$X は VSjet WP に対応し、$Y は VSele WP に対応します。 $ERA = UL2016_preVFP、 UL2016_postVFP、UL2017、またはUL2018
各ファイルには、タウ減衰モードのビンで測定された1.0
を中心とする TES を含む 1 つのヒストグラム ( 'tes'
) が含まれています。これは、次のようにタウTLorentzVector
、または同等のタウ エネルギー、pT、および質量を乗算することによって、本物のタウに適用する必要があります。
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
不確実性は、減衰モード 0、1、および 10 では 1.5%、減衰モード 11 では 2% に等しくなります。不確実性は、減衰モードと時代によって無相関化される必要があります。 pT > 140 GeV のタウスの場合、MC からの公称 TES 値に補正を適用する必要はありませんが、より大きな 3% の不確実性を含める必要があります。 TES を次のように取得するための単純なクラスTauESTool
が提供されています。
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')
この方法では、低い pT (20 GeV < pT < 140 GeV) と高い pT 値 (pT > 140 GeV) の中心値と不確実性が計算されます。
DeepTau2017v2p1の使用法
タウ エネルギー スケール (TES) は、ファイルdata/TauES_dm_*.root
で提供されます。各ファイルには、 1.0
中心とする TES のヒストグラム ( 'tes'
) が 1 つ含まれています。これは、次のようにタウTLorentzVector
、または同等のタウ エネルギー、pT、および質量を乗算することによって、本物のタウに適用する必要があります。
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
TES を次のように取得するための単純なクラスTauESTool
が提供されています。
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')
この方法では、中間の pT 値 (34 GeV < pT < 170 GeV) およびそれ以上の pT 値 (pT > 170 GeV) で正しい不確実性が計算されます。高い pT でのみ TES を使用する解析では、代わりに以下を使用できます。
tes = testool.getTES_highpt(dm,genmatch)
e -> tau 偽エネルギー スケール (FES) は、ファイルdata/TauFES_eta-dm_*.root
で提供されます。各ファイルには、 1.0
中心とする FES を含む 1 つのグラフ ( 'fes'
) が含まれています。これは、電子によって偽装され (すなわちgenmatch==1
または3
)、DM 0 または 1 を持つ再構築されたタウスにのみ適用する必要があります。アプリケーションは上記の TES と同様です。 FES を取得するために、単純なクラスTauFESTool
提供されています。
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')