From 82d465c513f71a942d9ac5c2e27060c176a0a7dc Mon Sep 17 00:00:00 2001 From: Ruby Alice Molly Ferguson <ruby.alice.molly.ferguson@cern.ch> Date: Wed, 4 Mar 2020 10:48:59 +0000 Subject: [PATCH] Tau monitoring run3 --- .../python/tauMonitorAlgorithm.py | 397 ++++++++++--- .../tauMonitoring/src/tauMonTool.cxx | 1 - .../tauMonitoring/src/tauMonitorAlgorithm.cxx | 535 ++++++++++++++---- .../tauMonitoring/tauMonitorAlgorithm.h | 1 + 4 files changed, 742 insertions(+), 192 deletions(-) diff --git a/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py b/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py index f3b03ed24f1..efcf2e5cafb 100644 --- a/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py +++ b/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py @@ -9,9 +9,12 @@ @brief tau python configuration for the Run III AthenaMonitoring package ''' +from math import pi def tauMonitoringConfig(inputFlags): '''Function to configures some algorithms in the monitoring system.''' + + ### STEP 1 ### # The following class will make a sequence, configure algorithms, and link @@ -32,6 +35,13 @@ def tauMonitoringConfig(inputFlags): tauMonAlgCR = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgCR') tauMonAlgEC = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgEC') tauMonAlgGlobal = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgGlobal') + tauMonAlgTauTrig = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgTauTrig') + tauMonAlgEleTrig = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgEleTrig') + tauMonAlgJetTrig = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgJetTrig') + tauMonAlgHighPt = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgHighPt') + tauMonAlgHighPtBDTLoose = cfgHelper.addAlgorithm( tauMonitorAlgorithm, name='tauMonAlgHighPtBDTLoose') + + ### STEP 3 ### @@ -47,88 +57,210 @@ def tauMonitoringConfig(inputFlags): tauMonAlgCR.etaMax = 1.7 tauMonAlgEC.etaMin = 1.7 tauMonAlgEC.etaMax = 3.5 + tauMonAlgGlobal.etaMin = -100 + tauMonAlgGlobal.etaMax = 100 + tauMonAlgTauTrig.etaMin = -100 + tauMonAlgTauTrig.etaMax = 100 + tauMonAlgEleTrig.etaMin = -100 + tauMonAlgEleTrig.etaMax = 100 + tauMonAlgJetTrig.etaMin = -100 + tauMonAlgJetTrig.etaMax = 100 + + tauMonAlgHighPt.etaMin = -100 + tauMonAlgHighPt.etaMax = 100 + tauMonAlgHighPtBDTLoose.etaMin = -100 + tauMonAlgHighPtBDTLoose.etaMax = 100 tauMonAlgBA.kinGroupName = 'tauMonKinGroupBA' tauMonAlgCR.kinGroupName = 'tauMonKinGroupCR' tauMonAlgEC.kinGroupName = 'tauMonKinGroupEC' tauMonAlgGlobal.kinGroupName = 'tauMonKinGroupGlobal' - + tauMonAlgTauTrig.kinGroupName = 'tauMonKinGroupTauTrig' + tauMonAlgEleTrig.kinGroupName = 'tauMonKinGroupEleTrig' + tauMonAlgJetTrig.kinGroupName = 'tauMonKinGroupJetTrig' + tauMonAlgHighPt.kinGroupName = 'tauMonKinGroupHighPt' + tauMonAlgHighPtBDTLoose.kinGroupName = 'tauMonKinGroupHighPtBDTLoose' ### STEP 4 ### # Add some tools. N.B. Do not use your own trigger decion tool. Use the # standard one that is included with AthMonitorAlgorithm. - # Add a generic monitoring tool (a "group" in old language). The returned # object here is the standard GenericMonitoringTool. - myKinGroupBA = cfgHelper.addGroup(alg=tauMonAlgBA, name='tauMonKinGroupBA', topPath='Tau/BA/' ) - myKinGroupCR = cfgHelper.addGroup(alg=tauMonAlgCR, name='tauMonKinGroupCR', topPath='Tau/CR/' ) - myKinGroupEC = cfgHelper.addGroup(alg=tauMonAlgEC, name='tauMonKinGroupEC', topPath='Tau/EC/' ) + myKinGroupBA = cfgHelper.addGroup(alg=tauMonAlgBA, name='tauMonKinGroupBA', topPath='Tau/TauB/' ) + myKinGroupCR = cfgHelper.addGroup(alg=tauMonAlgCR, name='tauMonKinGroupCR', topPath='Tau/TauCR/' ) + myKinGroupEC = cfgHelper.addGroup(alg=tauMonAlgEC, name='tauMonKinGroupEC', topPath='Tau/TauE/' ) myKinGroupGlobal = cfgHelper.addGroup(alg=tauMonAlgGlobal, name='tauMonKinGroupGlobal', topPath='Tau/' ) + myKinGroupTauTrig = cfgHelper.addGroup(alg=tauMonAlgTauTrig, name='tauMonKinGroupTauTrig', topPath='Tau/Trigger/TauTrig' ) + myKinGroupEleTrig = cfgHelper.addGroup(alg=tauMonAlgEleTrig, name='tauMonKinGroupEleTrig', topPath='Tau/Trigger/EleTrig' ) + myKinGroupJetTrig = cfgHelper.addGroup(alg=tauMonAlgJetTrig, name='tauMonKinGroupJetTrig', topPath='Tau/Trigger/JetTrig' ) + + myKinGroupHighPt = cfgHelper.addGroup(alg=tauMonAlgHighPt, name='tauMonKinGroupHighPt', topPath='Tau/' ) + myKinGroupHighPtBDTLoose = cfgHelper.addGroup(alg=tauMonAlgHighPtBDTLoose, name='tauMonKinGroupHighPtBDTLoose', topPath='Tau/' ) + + + naming= { + 'BA': "Tau_TauB_", + 'CR': "Tau_TauCR_", + 'EC': "Tau_TauE_", + 'Global': "", + 'HighPt': "", + 'HighPtBDTLoose': "", + 'EleTrig': "emTriggered_", + 'JetTrig': "jetTriggered_", + 'TauTrig': "tauTriggered_", + } + + def namer(variables,histogramName, folder, algorithm): + if folder != "": + return variables+";"+naming[algorithm]+folder+"_"+histogramName + else: + return variables+";"+naming[algorithm]+folder+histogramName # Add a GMT for the other example monitor algorithm # anotherGroup = cfgHelper.addGroup(anotherTauMonAlg,'tauMonitor') - ### STEP 5 ### # Configure histograms - for itup in [(myKinGroupBA,'BA'),(myKinGroupCR,'CR'),(myKinGroupEC,'EC'),(myKinGroupGlobal,'Global')]: + for itup in [(myKinGroupBA,'BA'), + (myKinGroupCR,'CR'), + (myKinGroupEC,'EC'), + (myKinGroupGlobal,'Global'), + (myKinGroupHighPt,'HighPt'), + (myKinGroupHighPtBDTLoose,'HighPtBDTLoose'), + (myKinGroupEleTrig,'EleTrig'), + (myKinGroupJetTrig,'JetTrig'), + (myKinGroupTauTrig, 'TauTrig')]: + (igroup, postfix) = itup + PHIMIN = pi + PHIMAX = pi + folder = "" - igroup.defineHistogram('nTauCandidates', title='Number of tau candidates;Number of Taus per Event', - xbins=40, xmin=0., xmax=40.) + if(postfix =="BA" or postfix =="CR" or postfix=="EC" or postfix == "Global" or postfix=="TauTrig" or postfix=="EleTrig" or postfix =="JetTrig"): + + igroup.defineHistogram(namer('lumiPerBCID', 'lumiPerBCID',"",postfix), title='Luminosity per Bunch Crossing ID; Luminosity', + xbins=200, xmin=0., xmax=200.,path=folder) + + igroup.defineHistogram(namer('nTauCandidates', 'nTauCandidates',"",postfix), title='Number of tau candidates;Number of Taus per Event', + xbins=40, xmin=0., xmax=40.,path=folder) + + + igroup.defineHistogram(namer('tauCharge','tauCharge','',postfix), title='Charge of tau candidates;Charge;Number of Candidates', + xbins=11, xmin=-5.5, xmax=5.5,path=folder) + + + igroup.defineHistogram(namer('tauEt','tauEt','',postfix), title='Et of tau candidates;Transverse Energy (GeV);Number of Candidates', + xbins=60, xmin=0., xmax=300.,path=folder) + + + igroup.defineHistogram(namer('tauEta','tauEta','',postfix), title='Eta of tau candidates;Eta;Number of Candidates', + xbins=51, xmin=-2.55, xmax=2.55,path=folder) + + igroup.defineHistogram(namer('LB,tauEta','tauEtaVsLB','',postfix), type='TH2F', title='Tau Eta Vs Lumiblock;Lumiblock;eta', + xbins=1200,xmin=0,xmax=1200,ybins=51,ymin=-2.55,ymax=2.55,path=folder) + + igroup.defineHistogram(namer('tauPhi','tauPhi','',postfix), title='Phi of tau candidates;Phi;Number of Candidates', + xbins=65, xmin=PHIMIN-0.098174/2., xmax=PHIMAX+0.098174/2.,path=folder) + + igroup.defineHistogram(namer('tauEta,tauPhi','tauPhiVsEta','',postfix), type='TH2F', title='PhiVsEtaTitle;Eta;Phi', + xbins=30,xmin=-2.55,xmax=2.55,ybins=32,ymin=PHIMIN,ymax=PHIMAX,path=folder) + + + igroup.defineHistogram(namer('LB,tauPhi','tauPhiVsLB','',postfix), type='TH2F', title='Tau Phi vs Lumiblock;Lumiblock;Phi', + xbins=1200,xmin=0,xmax=1200,ybins=80,ymin=PHIMIN,ymax=PHIMAX,path=folder) + + + if(postfix =="BA" or postfix =="CR" or postfix=="EC" or postfix=="TauTrig"): + igroup.defineHistogram(namer('centFrac',"CentFrac","Identification_tauJetBDTinputs",postfix), title='Centrality Fraction;Centrality Fraction;Number Of Candidates', + xbins=70, xmin=0., xmax=1.4, path=folder+"Identification/tauJetBDTinputs") + + igroup.defineHistogram(namer('dRmax',"dRmax","Identification_tauJetBDTinputs",postfix), title='Maximum delta R;delta R;Number of Candidates', + xbins=42, xmin=0., xmax=0.21, path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('tauCharge', title='Charge of tau candidates;Charge;Number of Candidates', - xbins=11, xmin=-5.5, xmax=5.5) - igroup.defineHistogram('tauEt', title='Pt of tau candidates;Transverse Energy (GeV);Number of Candidates', - xbins=60, xmin=0., xmax=300.) + igroup.defineHistogram(namer('EMPOverTrkSysP','EMPOverTrkSysP','Identification_tauJetBDTinputs',postfix), title='Momenta EM over tracks;;', + xbins=50, xmin=0., xmax=10., path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('tauEta', title='Eta of tau candidates);Eta);Number of Candidates', - xbins=51, xmin=-2.55, xmax=2.55) + igroup.defineHistogram(namer('SumPtTrkFracCorrected','SumPtTrkFracCorrected','Identification_tauJetBDTinputs',postfix), title='Track PtSum Fraction;;', + xbins=10, xmin=0., xmax=1, path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('LB,tauEta', type='TH2F', title='tauEtaVsLB;LumiBlock;eta', - xbins=1200,xmin=0,xmax=1200,ybins=51,ymin=-2.55,ymax=2.55) + igroup.defineHistogram(namer('mEflowApprox','mEflowApprox','Identification_tauJetBDTinputs',postfix), title='Approx Energy Flow;;', + xbins=50, xmin=0., xmax=20, path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('tauPhi', title='Phi of tau candidates);Phi);Number of Candidates', - xbins=65, xmin=-3.1415926-0.098174/2., xmax=3.1415926+0.098174/2.) + igroup.defineHistogram(namer('ptIntermediateAxis','ptIntermediateAxis','Identification_tauJetBDTinputs',postfix), title='Pt of tau candidates in IntermediateAxis;;', + xbins=60, xmin=0, xmax=150, path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('tauEta,tauPhi', type='TH2F', title='PhiVsEtaTitle;#eta;#phi', - xbins=30,xmin=-2.55,xmax=2.55,ybins=32,ymin=-3.15,ymax=3.15) + igroup.defineHistogram(namer('absipSigLeadTrk','absipSigLeadTrk','Identification_tauJetBDTinputs',postfix), title='Impact Parameter Significance of Leading Track;Transverse Impact Parameter Significance', + xbins=50, xmin=0., xmax=5., path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('LB,tauPhi', type='TH2F', title='tauEtaVsLB;LumiBlock;#phi', - xbins=1200,xmin=0,xmax=1200,ybins=80,ymin=-4.,ymax=4.) + igroup.defineHistogram(namer('etOverPtLeadTrk','etOverPtLeadTrk','Identification_tauJetBDTinputs',postfix), title='Et over Pt of lead track of tau candidates;Et/Pt;Number of Candidates', + xbins=50, xmin=0., xmax=12., path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('LB,tauEt', type='TH2F', title='tauEtaVsLB;LumiBlock;#Transverse Energy (GeV)', - xbins=1200,xmin=0,xmax=1200,ybins=300,ymin=0.,ymax=300.) + igroup.defineHistogram(namer('massTrkSys','massTrkSys','Identification_tauJetBDTinputs',postfix), title='Mass of the Track System;Invariant Mass (GeV)', + xbins=30, xmin=-1., xmax=5., path=folder+"Identification/tauJetBDTinputs" ) + igroup.defineHistogram(namer('ptRatioEflowApprox','ptRatioEflowApprox','Identification_tauJetBDTinputs',postfix), title='Ratio of pt to shot total energy for associated tracks; track pt ratio', + xbins=20, xmin=0., xmax=2., path=folder+"Identification/tauJetBDTinputs" ) + igroup.defineHistogram(namer('trFlightPathSig','trFlightPathSig','Identification_tauJetBDTinputs',postfix),title='Track Transverse Flight Path Significance;Transverse Flight Path Significance', + xbins=125, xmin=-4.5, xmax=8., path=folder+"Identification/tauJetBDTinputs" ) - if postfix != 'Global': + igroup.defineHistogram(namer('trkAvgDist','trkAvgDist','Identification_tauJetBDTinputs',postfix), title='Average Track Distance from Calorimeter Seed;Distance (mm);Number of Candidates', + xbins=20, xmin=0., xmax=1., path=folder+"Identification/tauJetBDTinputs" ) - igroup.defineHistogram('EMRadius', title='Uncalibrated EM Radius;EM Radius;Number Of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('tauPhiEt15BDTLoose','phi','Identification_BDTLoose15GeV',postfix), title='Phi of tau candidates (Et>15, BDTLoose) ;Phi;Number of Candidates', + xbins=65, xmin=PHIMIN-0.098174/2., xmax=PHIMAX+0.098174/2., path=folder+"Identification/BDTLoose15GeV" ) + + igroup.defineHistogram(namer('tauEtaEt15BDTLoose','eta','Identification_BDTLoose15GeV',postfix), title='Eta of tau candidates (Et>15, BDTLoose) ;Eta;Number of Candidates', + xbins=51, xmin=-2.55, xmax=2.55, path=folder+"Identification/BDTLoose15GeV") + + igroup.defineHistogram(namer('nClustersEt15BDTLoose','nCluster','Identification_BDTLoose15GeV',postfix), title='Number Of CaloTopoClusters (Et>15,BDTLoose);Number Of Clusters;Number Of Candidates', + xbins=40, xmin=0., xmax=40.,path=folder+"Identification/BDTLoose15GeV" ) + + igroup.defineHistogram(namer('NumTracksEt15BDTLoose','NumTracks','Identification_BDTLoose15GeV',postfix), title='Number Of Tracks for Tau Candidates (Et>15,BDTLoose);Number Of Tracks;Number Of Candidates', + xbins=21, xmin=-0.5, xmax=20.5,path=folder+"Identification/BDTLoose15GeV") + + igroup.defineHistogram(namer('tauEtEt15BDTLoose','et','Identification_BDTLoose15GeV',postfix), title='Et of tau candidates;Transverse Energy (GeV);Number of Candidates', + xbins=60, xmin=0., xmax=300.,path=folder+"Identification/BDTLoose15GeV") + + igroup.defineHistogram(namer('PanModeEt15BDTLoose','PanMode','Identification_BDTLoose15GeV',postfix), title='tau decay mode from PanTau upon JetBDTSigMedium;mode', + xbins=5, xmin=0., xmax=5., path=folder+"Identification/BDTLoose15GeV", labels=["1p0n","1p1n","1pXn","3p0n","3pXn"]) + + igroup.defineHistogram(namer('jetSeedEta','jetSeedEta','Calo',postfix), title='Calorimeter eta of tau candidates;Eta;Numbers of Candidates',path=folder+"Calo", + xbins=50, xmin=-2.5, xmax=2.5 ) + + igroup.defineHistogram(namer('jetSeedPhi','jetSeedPhi','Calo',postfix), title='Calorimeter phi of tau candidates;Phi;Numbers of Candidates',path=folder+"Calo", + xbins=64, xmin=PHIMIN, xmax=PHIMAX ) + + igroup.defineHistogram(namer('jetSeedPt','jetSeedPt','Calo',postfix), title='Calorimeter pt of tau candidates;Et;Numbers of Candidates',path=folder+"Calo", + xbins=100, xmin=0., xmax=300 ) + + igroup.defineHistogram(namer('EMRadius','EMRadius','Calo',postfix), title='Uncalibrated EM Radius;EM Radius;Number Of Candidates',path=folder+"Calo", xbins=50, xmin=0., xmax=1.2 ) - igroup.defineHistogram('hadRadius', title='Hadronic Radius of tau candidates;Hadronic Radius; Number Of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('hadRadius','hadRadius','Calo',postfix), title='Hadronic Radius of tau candidates;Hadronic Radius; Number Of Candidates',path=folder+"Calo", xbins=50, xmin=0., xmax=1. ) - igroup.defineHistogram('stripWidth2', title='Strip Width of tau candidates;Strip Width;Number of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('stripWidth2','stripWidth2','Calo',postfix), title='Strip Width of tau candidates;Strip Width;Number of Candidates',path=folder+"Calo", xbins=50, xmin=-0.1, xmax=0.12 ) - igroup.defineHistogram('isolFrac', title='Isolation Fraction;Et Isolation Fraction;Number of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('isolFrac','isolFrac','Calo',postfix), title='Isolation Fraction;Et Isolation Fraction;Number of Candidates',path=folder+"Calo", xbins=51, xmin=0.0, xmax=1.02 ) - igroup.defineHistogram('nStrip', title='Number of strip cells of tau candidates;Number of Strip Cells;Number of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('nStrip','nStrip','Calo',postfix), title='Number of strip cells of tau candidates;Number of Strip Cells;Number of Candidates',path=folder+"Calo", xbins=56, xmin=-0.5, xmax=55.5 ) - igroup.defineHistogram('etEMAtEMScale', title='EM energy at the EM scale;EM Et (GeV) );Number of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('etEMAtEMScale','etEMAtEMScale','Calo',postfix), title='EM energy at the EM scale;EM Et (GeV) );Number of Candidates',path=folder+"Calo", xbins=50, xmin=0., xmax=200. ) - igroup.defineHistogram('etHadAtEMScale', title='Hadronic Energy at the EM Scale;Had Et (GeV) );Number of Candidates',path=folder+"Calo", + igroup.defineHistogram(namer('etHadAtEMScale','etHadAtEMScale','Calo',postfix), title='Hadronic Energy at the EM Scale;Had Et (GeV) );Number of Candidates',path=folder+"Calo", xbins=50, xmin=0., xmax=200. ) - + + igroup.defineHistogram(namer('centFrac,LB','CentFracVsLB','Calo',postfix), type='TH2F', title='Centrality Fraction vs Lumiblock;Centrality Fraction;Lumiblock', path=folder+"Calo", + xbins=51,xmin=0,xmax=1.02,ybins=1200,ymin=0.,ymax=1200.) igroup.defineHistogram('centFrac,LB', type='TH2F', title='Centrality Fraction vs Lumiblock;Centrality Fraction;Lumiblock', path=folder+"Calo", xbins=51,xmin=0,xmax=1.02,ybins=1200,ymin=0.,ymax=1200.) @@ -136,81 +268,207 @@ def tauMonitoringConfig(inputFlags): igroup.defineHistogram('isolFrac,LB', type='TH2F', title='Isolation Fraction vs Lumiblock;Isolation Fraction;Lumiblock', path=folder+"Calo", xbins=51,xmin=0,xmax=1.02,ybins=1200,ymin=0.,ymax=1200.) - - igroup.defineHistogram('BDTJetScore', title='BDT Score for Jet Rejection;Boosted Decision Tree Score',path=folder+"Identification", + igroup.defineHistogram(namer('BDTJetScore','BDTJetScore','Identification',postfix), title='BDT Score for Jet Rejection;Boosted Decision Tree Score',path=folder+"Identification", xbins=48, xmin=-1.1, xmax=1.1 ) - igroup.defineHistogram('BDTJetScoreSigTrans', title='Signal Transformed BDT Score for Jet Rejection;Boosted Decision Tree Score',path=folder+"Identification", + igroup.defineHistogram(namer('JetBDTBkgMedium','JetBDTBkgMedium','Identification',postfix), title='Loose EleBDT',path=folder+"Identification", + xbins=2, xmin=-0.5, xmax=1.5, labels=["False","True"]) + + igroup.defineHistogram(namer('BDTEleScoreSigTrans','BDTEleScoreSigTrans','Identification',postfix), title=' Flattened Signal Transformed BDT for Ele Rejection;Boosted Decision Tree Score',path=folder+"Identification", + xbins=24, xmin=-0.1, xmax=1.1 ) + + igroup.defineHistogram(namer('BDTJetScoreSigTrans','BDTJetScoreSigTrans','Identification',postfix), title='Flattened signal Transformed BDT Score for Jet Rejection;Boosted Decision Tree Score',path=folder+"Identification", xbins=48, xmin=0, xmax=1.1 ) - igroup.defineHistogram('eleBDTMedium', title='Medium EleBDT',path=folder+"Identification", + igroup.defineHistogram(namer('eleBDTMedium','eleBDTMedium','Identification',postfix), title='Medium EleBDT',path=folder+"Identification", xbins=2, xmin=-0.5, xmax=1.5, labels=["False","True"]) - igroup.defineHistogram('eleBDTTight', title='Tight EleBDT',path=folder+"Identification", + igroup.defineHistogram(namer('eleBDTTight','eleBDTTight','Identification',postfix), title='Tight EleBDT',path=folder+"Identification", xbins=2, xmin=-0.5, xmax=1.5, labels=["False","True"]) - igroup.defineHistogram('muonVeto', title='Muon Veto',path=folder+"Identification", + igroup.defineHistogram(namer('muonVeto','muonVeto','Identification',postfix), title='Muon Veto',path=folder+"Identification", xbins=2, xmin=-0.5, xmax=1.5, labels=["False","True"] ) - igroup.defineHistogram('tauBDTLoose', title='Identification Flag: tauBDTLoose',path=folder+"Identification", + igroup.defineHistogram(namer('tauBDTLoose','tauBDTLoose','Identification',postfix), title='Identification Flag: tauBDTLoose',path=folder+"Identification", xbins=2, xmin=-0.5, xmax=1.5 , labels=["False","True"]) - igroup.defineHistogram('tauBDTMedium', title='Identification Flag: tauBDTMedium',path=folder+"Identification", + igroup.defineHistogram(namer('tauBDTMedium','tauBDTMedium','Identification',postfix), title='Identification Flag: tauBDTMedium',path=folder+"Identification", xbins=2, xmin=-0.5, xmax=1.5 ,labels=["False","True"]) - igroup.defineHistogram('tauBDTTight', title='Identification Flag: tauBDTTight',path=folder+"Identification", + igroup.defineHistogram(namer('tauBDTTight','tauBDTTight','Identification',postfix), title='Identification Flag: tauBDTTight',path=folder+"Identification", xbins=2, xmin=-0.5, xmax=1.5, labels=["False","True"]) + igroup.defineHistogram(namer('etHotShotWinOverPtLeadTrk','etHotShotWinOverPtLeadTrk','Identification_EleVetoBDTinputs',postfix), title='etHotShotWinOverPtLeadTrk',path=folder+"Identification/EleVetoBDTinputs", + xbins=20, xmin=0, xmax=12 ) - #Not in the monTool...but in histos I'm meant to be making - igroup.defineHistogram('BDTJetScore', title='test',path=folder+"Identification/BDTLoose15GeV", - xbins=48, xmin=-1.1, xmax=1.1 ) - + igroup.defineHistogram(namer('hadLeakFracFixed','hadLeakFracFixed','Identification_EleVetoBDTinputs',postfix), title='hadLeakFracFixed',path=folder+"Identification/EleVetoBDTinputs", + xbins=20, xmin=0, xmax=2. ) - #Not in the monTool...but in histos I'm meant to be making - igroup.defineHistogram('PSSFrac', title='test',path=folder+"Identification/EleVetoBDTinputs", + igroup.defineHistogram(namer('PSSFrac','PSSFrac','Identification_EleVetoBDTinputs',postfix), title='Energy fraction for PreSampling and sampling layers in effective clusters in shot;Sampling Energy Fraction',path=folder+"Identification/EleVetoBDTinputs", xbins=10, xmin=0, xmax=1. ) + + igroup.defineHistogram(namer('EMFrac','EMFrac','Identification_EleVetoBDTinputs',postfix), title='EMFracFixed',path=folder+"Identification/EleVetoBDTinputs", + xbins=20, xmin=0., xmax=2. ) - #Substructure time! - igroup.defineHistogram('pi0bdt', title='test',path=folder+"SubStructure", - xbins=120, xmin=-0, xmax=1.2 ) + #Substructure Histograms + igroup.defineHistogram(namer('PanModeSubstructure','PanMode','SubStructure',postfix), title='tau decay mode from PanTau upon JetBDTSigMedium;mode', + xbins=8, xmin=0., xmax=8., path=folder+"SubStructure") + igroup.defineHistogram(namer('BDTScoreAsP0','BDTScoreAsP0','SubStructure',postfix), title='BDT score indentifying pion zero ; BDT score',path=folder+"SubStructure", + xbins=15, xmin=-0, xmax=1.2 ) - igroup.defineHistogram('EMFracTrk', title='Ratio of pt to shot electromagnetic energy for associated tracks; track pt ratio in EM',path=folder+"SubStructure", + igroup.defineHistogram(namer('EMFracTrk','EMFracTrk','SubStructure',postfix), title='Ratio of pt to shot electromagnetic energy for associated tracks; track pt ratio in EM',path=folder+"SubStructure", xbins=15, xmin=0, xmax=1.5 ) - igroup.defineHistogram('EfracL2EffCluster', title='Energy fraction of leading two effective clusters in shot; energy fraction',path=folder+"SubStructure", + igroup.defineHistogram(namer('EfracL2EffCluster','EfracL2EffCluster','SubStructure',postfix), title='Energy fraction of leading two effective clusters in shot; energy fraction',path=folder+"SubStructure", xbins=15, xmin=0, xmax=1.5 ) - igroup.defineHistogram('EisoEffCluster', title='Isolation Energy after correction in effective clusters ; isolation energy (GeV)',path=folder+"SubStructure", + igroup.defineHistogram(namer('EisoEffCluster','EisoEffCluster','SubStructure',postfix), title='Isolation Energy after correction in effective clusters ; isolation energy (GeV)',path=folder+"SubStructure", xbins=10, xmin=0, xmax=50. ) - igroup.defineHistogram('InvMassEffClusters', title='Invariant mass of effective clusters in shot; invariant mass (GeV)',path=folder+"SubStructure", + igroup.defineHistogram(namer('InvMassEffClusters','InvMassEffClusters','SubStructure',postfix), title='Invariant mass of effective clusters in shot; invariant mass (GeV)',path=folder+"SubStructure", xbins=40, xmin=0, xmax=8. ) - igroup.defineHistogram('nNeutPFO', title='_NumNeutPFO;Number of neutral ParticleFlow objects ; PFO number',path=folder+"SubStructure", + igroup.defineHistogram(namer('nNeutPFO','nNeutPFO','SubStructure',postfix), title='_NumNeutPFO;Number of neutral ParticleFlow objects ; PFO number',path=folder+"SubStructure", xbins=20, xmin=0, xmax=20. ) - igroup.defineHistogram('nShot', title='number of shots ; shot number ',path=folder+"SubStructure", + igroup.defineHistogram(namer('nShot','nShot','SubStructure',postfix), title='number of shots ; shot number ',path=folder+"SubStructure", xbins=20, xmin=0, xmax=20. ) + igroup.defineHistogram(namer('panEta','panEta','SubStructure',postfix), title='tau Eta from PanTau ; substructure Eta',path=folder+"SubStructure", + xbins=16, xmin=-3.2, xmax=3.2 ) + + igroup.defineHistogram(namer('panPhi','panPhi','SubStructure',postfix), title='tau Phi from PanTau ; substructure Phi',path=folder+"SubStructure", + xbins=16, xmin=PHIMIN, xmax=PHIMAX ) + + igroup.defineHistogram(namer('panPt','panPt','SubStructure',postfix), title='tau Pt from PanTau ; substructure pt (GeV)',path=folder+"SubStructure", + xbins=20, xmin=0, xmax=200 ) + + igroup.defineHistogram(namer('pt3','shots_pt3','SubStructure',postfix), title='weighted cell pt in 3x3 window in shots; pt3 (GeV) ',path=folder+"SubStructure", + xbins=24, xmin=0, xmax=12 ) + + #Track Histograms! + igroup.defineHistogram(namer('d0','d0','Track',postfix), title='Track d0;Transverse Impact Parameter (mm)',path=folder+"Track", + xbins=50, xmin=-5.0, xmax=5.0 ) + + igroup.defineHistogram(namer('eProbabilityHT','eProbabilityHT','Track',postfix), title='Probability of High Threshold ;Probability of TRT High Threshold',path=folder+"Track", + xbins=12, xmin=-0.1, xmax=1.1 ) + + igroup.defineHistogram(namer('leadTrackDeltaEta','leadTrackDeltaEta','Track',postfix), title='Leading Track Delta Eta; Leading track Delta Eta from jetSeed, EleVeto BDT input',path=folder+"Track", + xbins=30, xmin=-1.5, xmax=1.5 ) + + igroup.defineHistogram(namer('leadTrackDeltaPhi','leadTrackDeltaPhi','Track',postfix), title='Leading Track Delta Phi; Leading track Delta Phi from jetSeed, EleVeto BDT input',path=folder+"Track", + xbins=30, xmin=-1.5, xmax=1.5 ) + + igroup.defineHistogram(namer('dRJetSeedAxis','dRJetSeedAxis','Track',postfix), title='DeltaR from Track to JetSeedAxis; dR ',path=folder+"Track", + xbins=30, xmin=0.0, xmax=1.5 ) + + igroup.defineHistogram(namer('z0TJVA','z0TJVA','Track',postfix), title='0 respected to Tau vertex , Z0SinTheta (mm)',path=folder+"Track", + xbins=50, xmin=-35.0, xmax=35.0 ) + + + igroup.defineHistogram(namer('eta_track','eta','Track',postfix), title='Track Eta;Eta',path=folder+"Track", + xbins=51, xmin=-2.55, xmax=2.55 ) + + igroup.defineHistogram(namer('leadTrkPt','leadTrkPt','Track',postfix), title='Pt of Leading track;Transverse Momentum (GeV)',path=folder+"Track", + xbins=50, xmin=0., xmax=200. ) + + igroup.defineHistogram(namer('nHighPtTaus','nHighPtTaus','Track',postfix), title='Number of High Pt tau candidates;Number of Taus per Event', + xbins=15, xmin=-0.5, xmax=14.5,path=folder+"Track") + + + igroup.defineHistogram(namer('numberOfTRTHighThresholdHits','numberOfTRTHighThresholdHits','Track',postfix), title='Number of TRT High Threshold Hits;Number of High Threshold TRT Hits',path=folder+"Track", + xbins=15, xmin=-0.5, xmax=14.5 ) + + igroup.defineHistogram(namer('numberOfTRTHighThresholdOutliers','numberOfTRTHighThresholdOutliers','Track',postfix), title="Number of TRT High Threshold Outliers;Number of TRT High Threshold Outliers",path=folder+"Track", + xbins=26, xmin=-0.5, xmax=25.5 ) + + igroup.defineHistogram(namer('numberOfTRTHits','numberOfTRTHits','Track',postfix), title='Number of TRT Low Threshold Hits;Number of Low Threshold TRT Hits',path=folder+"Track", + xbins=101, xmin=-0.5, xmax=100.5 ) + + igroup.defineHistogram(namer('numberOfTRTOutliers','numberOfTRTOutliers','Track',postfix), title="Number of TRT Low Threshold Outliers;Number of TRT Low Threshold Outliers",path=folder+"Track", + xbins=31, xmin=-0.5, xmax=25.5) + + igroup.defineHistogram(namer('pT_track','pT_track','Track',postfix), title='Track pT;Transverse Momentum (GeV)',path=folder+"Track", + xbins=60, xmin=0, xmax=300 ) + + igroup.defineHistogram(namer('phi_track','phi_track','Track',postfix), title='Track Phi;Phi',path=folder+"Track", + xbins=64, xmin=PHIMIN, xmax=PHIMAX ) + + igroup.defineHistogram(namer('rConv','rConv','Track',postfix), title='rConv;rConv',path=folder+"Track", + xbins=40, xmin=0, xmax=80 ) + + igroup.defineHistogram(namer('rConvII','rConvII','Track',postfix), title='rConvII;rConvII',path=folder+"Track", + xbins=40, xmin=0, xmax=80 ) + + igroup.defineHistogram(namer('trkWidth2','trkWidth2','Track',postfix), title='Weighted Track Width;Momentum-Weighted Width of Track System',path=folder+"Track", + xbins=50, xmin=0.0, xmax=0.1 ) + + igroup.defineHistogram(namer('ipZ0SinThetaSigLeadTrk','ipZ0SinThetaSigLeadTrk','Track',postfix), title='Impact Parameter z0 Sine Theta Significance of Leading Track;Z0SinTheta Significance',path=folder+"Track", + xbins=50, xmin=-10.0, xmax=10.0 ) + + igroup.defineHistogram(namer('numberOfPixelHits','numberOfPixelHits','Track',postfix), title='Number of Pixel Hits;Number of Pixel Hits',path=folder+"Track", + xbins=33, xmin=-0.5, xmax=15.5 ) + + igroup.defineHistogram(namer('numberOfInnermostPixelLayerHits','numberOfInnermostPixelLayerHits','Track',postfix), title='Number of Innermost Pixel layer Hits;Number of Innermost Pixel layer Hits',path=folder+"Track", + xbins=11, xmin=-0.5, xmax=10.5 ) + + igroup.defineHistogram(namer('numberOfPixelSharedHits','numberOfPixelSharedHits','Track',postfix), title='Number of Pixel shared Hits;Number of Pixel shared Hits',path=folder+"Track", + xbins=11, xmin=-0.5, xmax=10.5 ) + + igroup.defineHistogram(namer('numberOfSCTHits','numberOfSCTHits','Track',postfix), title='Number of SCT Hits;Number of SCT Hits',path=folder+"Track", + xbins=26, xmin=0, xmax=26 ) + + igroup.defineHistogram(namer('numberOfSCTSharedHits','numberOfSCTSharedHits','Track',postfix), title='Number of SCT shared Hits;Number of SCT shared Hits',path=folder+"Track", + xbins=21, xmin=-0.5, xmax=20.5 ) + + + if postfix == 'Global' or postfix == "TauTrig" or postfix == "EleTrig" or postfix=="JetTrig": + igroup.defineHistogram(namer('PtCombined','Ptcombined','',postfix), title='combined pT of tau candidates);Transverse Energy (GeV) );Number of Candidates', + xbins=60, xmin=0., xmax=300. ,path=folder) + + igroup.defineHistogram(namer('PtTESMVA','PtTESMVA','',postfix), title='TES pT (MVA) of tau candidates);Transverse Energy (GeV) );Number of Candidates', + xbins=60, xmin=0., xmax=300. ,path=folder) + + igroup.defineHistogram(namer('LB,coreTrk','NumCoreTrkVsLB','',postfix), type='TH2F', title='Tau Core tracks vs Lumiblock); LumiBlock ; NumCoreTrk', + xbins=1200,xmin=0,xmax=1200,ybins=400,ymin=0,ymax=40,path=folder) + + igroup.defineHistogram(namer('LB','nTauPerLB','',postfix), title='Total number of tau candidates per LB);Luminosity Block);Number of Candidates', + xbins=1000, xmin=0., xmax=1000. ,path=folder) + + igroup.defineHistogram(namer('nHighPtTauCandidates','nHightPtTauCandidates','',postfix), title='Number of High Pt tau candidates;Number of Taus per Event', + xbins=15, xmin=-0.5, xmax=14.5,path=folder) + + igroup.defineHistogram(namer('NumTracks','NumTracks','',postfix), title='Number Of Tracks for Tau Candidates;Number Of Tracks;Number Of Candidates', + xbins=21, xmin=-0.5, xmax=20.5,path=folder) + + igroup.defineHistogram(namer('nClusters','nCluster','',postfix), title='Number Of CaloTopoClusters;Number Of Clusters;Number Of Candidates', + xbins=40, xmin=0., xmax=40. ,path=folder) + + igroup.defineHistogram(namer('tauEta,tauEt','tauEtVsEta','',postfix), type='TH2F', title='Tau Et Vs Eta;#eta;Transverse Energy (Gev)', + xbins=40,xmin=-2.55,xmax=2.55 ,ybins=300,ymin=0,ymax=300,path=folder) + igroup.defineHistogram(namer('tauPhi,tauEt','tauEtVsPhi','',postfix), type='TH2F', title='EtVsPhi;Phi;Transverse Energy (GeV);', + xbins=80,xmin=PHIMIN,xmax=PHIMAX,ybins=300,ymin=-0.,ymax=300.,path=folder) + igroup.defineHistogram(namer('LB,tauEt','tauEtVsLB','',postfix), type='TH2F', title='Tau Et Vs Lumiblock ;Lumiblock;Transverse Energy (GeV)', + xbins=1200,xmin=0,xmax=1200,ybins=300,ymin=0.,ymax=300.,path=folder) + if postfix == 'HighPt': - if postfix == 'Global': + igroup.defineHistogram(namer('tauEtaEt15,tauPhiEt15','tauPhiVsEtaEt15','',postfix), type='TH2F', title='EtaVsEtTitle;Eta;Phi', + xbins=30,xmin=-2.55,xmax=2.55,ybins=32,ymin=PHIMIN,ymax=PHIMAX) - igroup.defineHistogram('NumTracks', title='NumTracks;nTracks;Events', - xbins=21, xmin=-0.5, xmax=20.5) + if postfix == 'HighPtBDTLoose': - igroup.defineHistogram('nClusters', title='nClusters;nClusters;Events', - xbins=40, xmin=0., xmax=40. ) + igroup.defineHistogram(namer('LB,tauPhiEt15BDTLoose','tauPhiVsLBet15BDTLoose','',postfix), type='TH2F', title='Tau Eta Vs Lumiblock (Et>15, BDTLoose) ;Lumiblock;Phi', + xbins=1200,xmin=0,xmax=1200,ybins=80,ymin=PHIMIN,ymax=PHIMAX) - igroup.defineHistogram('tauEta,tauEt', type='TH2F', title='EtVsEta;eta;Transverse Energy (Gev)', - xbins=40,xmin=-2.55,xmax=2.55 ,ybins=300,ymin=0,ymax=300) + igroup.defineHistogram(namer('tauEtaEt15BDTLoose,tauPhiEt15BDTLoose','tauPhiVsEtaEt15BDTLoose','',postfix), type='TH2F', title='Phi vs Eta (Et>15, BDTLoose) ;Eta;Phi', + xbins=30,xmin=-2.55,xmax=2.55,ybins=32,ymin=PHIMIN,ymax=PHIMAX) - igroup.defineHistogram('tauPhi,tauEt', type='TH2F', title='EtVsPhi;#phi;#eta;', - xbins=80,xmin=-4.,xmax=4.,ybins=300,ymin=-0.,ymax=300.) + igroup.defineHistogram(namer('LB,tauEtaEt15BDTLoose','tauEtaVsLBet15BDTLoose','',postfix), type='TH2F', title='Tau Eta VsLumiblock (Et>15, BDTLoose) ;Lumiblock;Eta', + xbins=1200,xmin=0,xmax=1200,ybins=51,ymin=-2.55,ymax=2.55) ### STEP 6 ### # Finalize. The return value should be a tuple of the ComponentAccumulator @@ -259,6 +517,11 @@ if __name__=='__main__': exampleMonitorAcc.getEventAlgo('tauMonAlgCR').OutputLevel = 2 # DEBUG exampleMonitorAcc.getEventAlgo('tauMonAlgEC').OutputLevel = 2 # DEBUG exampleMonitorAcc.getEventAlgo('tauMonAlgGlobal').OutputLevel = 2 # DEBUG + exampleMonitorAcc.getEventAlgo('tauMonAlgTauTrig').OutputLevel = 2 # DEBUG + exampleMonitorAcc.getEventAlgo('tauMonAlgEleTrig').OutputLevel = 2 # DEBUG + exampleMonitorAcc.getEventAlgo('tauMonAlgJetTrig').OutputLevel = 2 # DEBUG + exampleMonitorAcc.getEventAlgo('tauMonAlgHighPt').OutputLevel = 2 # DEBUG + exampleMonitorAcc.getEventAlgo('tauMonAlgHighPtBDTLoose').OutputLevel = 2 # DEBUG cfg.printConfig(withDetails=True) # set True for exhaustive info diff --git a/Reconstruction/tauMonitoring/src/tauMonTool.cxx b/Reconstruction/tauMonitoring/src/tauMonTool.cxx index cc0b7674d20..315f666b0a6 100644 --- a/Reconstruction/tauMonitoring/src/tauMonTool.cxx +++ b/Reconstruction/tauMonitoring/src/tauMonTool.cxx @@ -501,7 +501,6 @@ StatusCode tauMonTool::fillTrackHistos(s_trkFolder& folder, const xAOD::TauJet* if (track->summaryValue(dummy, xAOD::numberOfPixelHits)) folder.h_numberOfPixelHits ->Fill( dummy ); if (track->summaryValue(dummy, xAOD::numberOfTRTHighThresholdOutliers)) folder.h_numberOfTRTHighThresholdOutliers->Fill( dummy ); if (track->summaryValue(dummy, xAOD::numberOfTRTOutliers)) folder.h_numberOfTRTOutliers ->Fill( dummy ); - folder.h_d0 ->Fill(perigee.parameters()[Trk::d0]); folder.h_z0 ->Fill(perigee.parameters()[Trk::z0]); folder.h_phi ->Fill(perigee.parameters()[Trk::phi]); diff --git a/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx b/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx index 33ab3be9e10..0951ca97e90 100644 --- a/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx +++ b/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx @@ -4,10 +4,14 @@ #include "tauMonitoring/tauMonitorAlgorithm.h" +#include "GaudiKernel/SystemOfUnits.h" + +using Gaudi::Units::GeV; + tauMonitorAlgorithm::tauMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ) :AthMonitorAlgorithm(name,pSvcLocator) -,m_doRandom(true) {} +,m_doRandom(true){} tauMonitorAlgorithm::~tauMonitorAlgorithm() {} @@ -21,62 +25,144 @@ StatusCode tauMonitorAlgorithm::initialize() { StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const { using namespace Monitored; - - auto tauEta = Monitored::Scalar<float>("tauEta"); - auto tauPhi = Monitored::Scalar<float>("tauPhi"); - auto tauEt = Monitored::Scalar<float>("tauEt"); - auto tauCharge = Monitored::Scalar<int>("tauCharge"); - auto NumTracks = Monitored::Scalar<int>("NumTracks"); - auto nTauCandidates = Monitored::Scalar<int>("nTauCandidates"); - auto nClusters = Monitored::Scalar<int>("nClusters"); - auto LB = Monitored::Scalar<int>("LB"); - - auto EMRadius = Monitored::Scalar<float>("EMRadius"); - auto hadRadius = Monitored::Scalar<float>("hadRadius"); - auto isolFrac = Monitored::Scalar<float>("isolFrac"); - auto stripWidth2 = Monitored::Scalar<float>("stripWidth2"); - auto nStrip = Monitored::Scalar<float>("nStrip"); - auto etEMAtEMScale = Monitored::Scalar<float>("etEMAtEMScale"); - auto etHadAtEMScale = Monitored::Scalar<float>("etHadAtEMScale"); - auto centFrac = Monitored::Scalar<float>("centFrac"); - - auto BDTJetScore = Monitored::Scalar<float>("BDTJetScore"); - auto BDTJetScoreSigTrans = Monitored::Scalar<float>("BDTJetScoreSigTrans"); - auto eleBDTMedium = Monitored::Scalar<float>("eleBDTMedium"); - auto eleBDTTight = Monitored::Scalar<float>("eleBDTTight"); - auto muonVeto = Monitored::Scalar<float>("muonVeto"); - auto tauBDTLoose = Monitored::Scalar<float>("tauBDTLoose"); - auto tauBDTMedium = Monitored::Scalar<float>("tauBDTMedium"); - auto tauBDTTight = Monitored::Scalar<float>("tauBDTTight"); - - auto PSSFrac = Monitored::Scalar<float>("PSSFrac"); - - auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk"); - auto EfracL2EffCluster = Monitored::Scalar<float>("EfracL2EffCluster"); - auto EisoEffCluster = Monitored::Scalar<float>("EisoEffCluster"); - auto InvMassEffClusters = Monitored::Scalar<float>("InvMassEffClusters"); - auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO"); - auto nShot = Monitored::Scalar<float>("nShot"); - - auto pi0bdt = Monitored::Scalar<float>("pi0bdt"); - SG::ReadHandle<xAOD::TauJetContainer> taus(m_TauContainerKey, ctx); if (! taus.isValid() ) { ATH_MSG_ERROR("evtStore() does not contain tau Collection with name "<< m_TauContainerKey); return StatusCode::FAILURE; } - nTauCandidates = taus->size(); + + //In tauMonTool these values are chosen as Et cuts for different Histograms + const int lowerEtThreshold = 15; + const int higherEtThreshold = 75; + + + auto tool = getGroup(m_kinGroupName); + auto tauEta = Monitored::Scalar<float>("tauEta",0.0); + auto tauPhi = Monitored::Scalar<float>("tauPhi",0.0); + auto tauEt = Monitored::Scalar<float>("tauEt",0.0); + auto tauEtEt15BDTLoose = Monitored::Scalar<float>("tauEtEt15BDTLoose",0.0); + auto PanModeEt15BDTLoose = Monitored::Scalar<float>("PanModeEt15BDTLoose",0.0); + auto PanModeSubstructure = Monitored::Scalar<float>("PanModeSubstructure",0.0); + auto coreTrk = Monitored::Scalar<float>("coreTrk",0.0); + auto PtTESMVA = Monitored::Scalar<float>("PtTESMVA",0.0); + auto PtCombined = Monitored::Scalar<float>("PtCombined",0.0); + auto lumiPerBCID = Monitored::Scalar<float>("lumiPerBCID",0.0); + + auto tauPhiEt15 = Monitored::Scalar<float>("tauPhiEt15",0.0); + auto tauEtaEt15 = Monitored::Scalar<float>("tauEtaEt15",0.0); + + auto tauPhiEt15BDTLoose = Monitored::Scalar<float>("tauPhiEt15BDTLoose",0.0); + auto tauEtaEt15BDTLoose = Monitored::Scalar<float>("tauEtaEt15BDTLoose",0.0); + + + auto tauCharge = Monitored::Scalar<int>("tauCharge",0.0); + auto NumTracks = Monitored::Scalar<int>("NumTracks",0.0); + auto NumTracksEt15BDTLoose = Monitored::Scalar<int>("NumTracksEt15BDTLoose",0.0); + + auto nTauCandidates = Monitored::Scalar<int>("nTauCandidates",0.0); + auto nHighPtTauCandidates = Monitored::Scalar<int>("nHighPtTauCandidates",0.0); + auto nClusters = Monitored::Scalar<int>("nClusters",0.0); + auto nClustersEt15BDTLoose = Monitored::Scalar<int>("nClustersEt15BDTLoose",0.0); + + auto LB = Monitored::Scalar<int>("LB",0.0); + + auto EMRadius = Monitored::Scalar<float>("EMRadius",0.0); + auto hadRadius = Monitored::Scalar<float>("hadRadius",0.0); + auto isolFrac = Monitored::Scalar<float>("isolFrac",0.0); + auto stripWidth2 = Monitored::Scalar<float>("stripWidth2",0.0); + auto nStrip = Monitored::Scalar<float>("nStrip",0.0); + auto etEMAtEMScale = Monitored::Scalar<float>("etEMAtEMScale",0.0); + auto etHadAtEMScale = Monitored::Scalar<float>("etHadAtEMScale",0.0); + auto centFrac = Monitored::Scalar<float>("centFrac",0.0); + auto jetSeedEta = Monitored::Scalar<float>("jetSeedEta",0.0); + auto jetSeedPhi = Monitored::Scalar<float>("jetSeedPhi",0.0); + auto jetSeedPt = Monitored::Scalar<float>("jetSeedPt",0.0); + + auto BDTEleScoreSigTrans = Monitored::Scalar<float>("BDTEleScoreSigTrans",0.0); + auto BDTJetScore = Monitored::Scalar<float>("BDTJetScore",0.0); + auto BDTJetScoreSigTrans = Monitored::Scalar<float>("BDTJetScoreSigTrans",0.0); + auto JetBDTBkgMedium = Monitored::Scalar<float>("JetBDTBkgMedium",0.0); + + auto eleBDTMedium = Monitored::Scalar<float>("eleBDTMedium",0.0); + auto eleBDTTight = Monitored::Scalar<float>("eleBDTTight",0.0); + auto muonVeto = Monitored::Scalar<float>("muonVeto",0.0); + auto tauBDTLoose = Monitored::Scalar<float>("tauBDTLoose",0.0); + auto tauBDTMedium = Monitored::Scalar<float>("tauBDTMedium",0.0); + auto tauBDTTight = Monitored::Scalar<float>("tauBDTTight",0.0); + + auto hadLeakFracFixed = Monitored::Scalar<float>("hadLeakFracFixed",0.0); + auto PSSFrac = Monitored::Scalar<float>("PSSFrac",0.0); + auto EMFrac = Monitored::Scalar<float>("EMFrac",0.0); + auto etHotShotWinOverPtLeadTrk = Monitored::Scalar<float>("etHotShotWinOverPtLeadTrk",0.0); + + auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk",0.0); + auto EfracL2EffCluster = Monitored::Scalar<float>("EfracL2EffCluster",0.0); + auto EisoEffCluster = Monitored::Scalar<float>("EisoEffCluster",0.0); + auto InvMassEffClusters = Monitored::Scalar<float>("InvMassEffClusters",0.0); + auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO",0.0); + auto nShot = Monitored::Scalar<float>("nShot",0.0); + auto pt3 = Monitored::Scalar<float>("pt3",-9.0); + auto BDTScoreAsP0 = Monitored::Scalar<float>("BDTScoreAsP0",0.0); + auto dRmax = Monitored::Scalar<float>("dRmax",0.0); + auto EMPOverTrkSysP = Monitored::Scalar<float>("EMPOverTrkSysP",0.0); + auto SumPtTrkFracCorrected = Monitored::Scalar<float>("SumPtTrkFracCorrected",0.0); + auto mEflowApprox = Monitored::Scalar<float>("mEflowApprox",0.0); + auto ptIntermediateAxis = Monitored::Scalar<float>("ptIntermediateAxis",0.0); + + auto absipSigLeadTrk = Monitored::Scalar<float>("absipSigLeadTrk",0.0); + auto etOverPtLeadTrk = Monitored::Scalar<float>("etOverPtLeadTrk",0.0); + auto massTrkSys = Monitored::Scalar<float>("massTrkSys",0.0); + auto ptRatioEflowApprox = Monitored::Scalar<float>("ptRatioEflowApprox",0.0); + auto trFlightPathSig = Monitored::Scalar<float>("trFlightPathSig",0.0); + auto trkAvgDist = Monitored::Scalar<float>("trkAvgDist",0.0); + + auto panEta = Monitored::Scalar<float>("panEta",0.0); + auto panPhi = Monitored::Scalar<float>("panPhi",0.0); + auto panPt = Monitored::Scalar<float>("panPt",0.0); + auto d0 = Monitored::Scalar<float>("d0",0.0); + auto eProbabilityHT = Monitored::Scalar<float>("eProbabilityHT",0.0); + auto leadTrackDeltaEta = Monitored::Scalar<float>("leadTrackDeltaEta",0.0); + auto leadTrackDeltaPhi = Monitored::Scalar<float>("leadTrackDeltaPhi",0.0); + auto dRJetSeedAxis = Monitored::Scalar<float>("dRJetSeedAxis",0.0); + auto z0TJVA = Monitored::Scalar<float>("z0TJVA",0.0); + auto z0PriVtx = Monitored::Scalar<float>("z0PriVtx",0.0); + + auto eta_track = Monitored::Scalar<float>("eta_track",0.0); + auto pT_track = Monitored::Scalar<float>("pT_track",0.0); + auto phi_track = Monitored::Scalar<float>("phi_track",0.0); + auto leadTrkPt = Monitored::Scalar<float>("leadTrkPt",0.0); + auto nHighPtTaus = Monitored::Scalar<float>("nHighPtTaus",0.0); + auto numberOfTRTHighThresholdHits = Monitored::Scalar<float>("numberOfTRTHighThresholdHits",0.0); + auto numberOfTRTHighThresholdOutliers = Monitored::Scalar<float>("numberOfTRTHighThresholdOutliers",0.0); + auto numberOfTRTHits = Monitored::Scalar<float>("numberOfTRTHits",0.0); + auto numberOfTRTOutliers = Monitored::Scalar<float>("numberOfTRTOutliers",0.0); + auto trkWidth2 = Monitored::Scalar<float>("trkWidth2",0.0); + auto ipZ0SinThetaSigLeadTrk = Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk",0.0); + auto numberOfPixelHits = Monitored::Scalar<float>("numberOfPixelHits",0.0); + auto numberOfInnermostPixelLayerHits = Monitored::Scalar<float>("numberOfInnermostPixelLayerHits",0.0); + auto numberOfPixelSharedHits = Monitored::Scalar<float>("numberOfPixelSharedHits",0.0); + auto numberOfSCTHits = Monitored::Scalar<float>("numberOfSCTHits",0.0); + auto numberOfSCTSharedHits = Monitored::Scalar<float>("numberOfSCTSharedHits",0.0); + auto rConv = Monitored::Scalar<float>("rConv",0.0); + auto rConvII = Monitored::Scalar<float>("rConvII",0.0); + + nTauCandidates = 0; + for (const auto& tau : *taus) { //Global and tauB/CR/EC tauEta = tau->eta(); tauPhi = tau->phi(); - tauEt = tau->pt()/1000; //GeV + tauEt = tau->pt()/GeV; tauCharge = tau->charge(); NumTracks = tau->nTracks(); nClusters = tau->detail<int>(xAOD::TauJetParameters::numTopoClusters) ; LB = GetEventInfo(ctx)->lumiBlock(); + lumiPerBCID = lbAverageInteractionsPerCrossing(ctx); + coreTrk = tau->nTracks( xAOD::TauJetParameters::coreTrack ) ; + PtTESMVA = tau->ptFinalCalib() /GeV; + PtCombined = tau->auxdata<float>( "pt_combined" )/GeV; //calo EMRadius = tau->detail<float>(xAOD::TauJetParameters::EMRadius); @@ -87,10 +173,18 @@ StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const etEMAtEMScale = tau->detail<float>(xAOD::TauJetParameters::etEMAtEMScale); etHadAtEMScale = tau->detail<float>(xAOD::TauJetParameters::etHadAtEMScale); centFrac = tau->detail<float>(xAOD::TauJetParameters::centFrac) ; + jetSeedEta = tau->etaJetSeed(); + jetSeedPhi = tau->phiJetSeed(); + jetSeedPt = tau->ptJetSeed()/GeV; + ptIntermediateAxis = tau->ptIntermediateAxis()/GeV; //identification BDTJetScore = tau->discriminant(xAOD::TauJetParameters::BDTJetScore); BDTJetScoreSigTrans = tau->discriminant(xAOD::TauJetParameters::BDTJetScoreSigTrans); + JetBDTBkgMedium = tau->isTau(xAOD::TauJetParameters::JetBDTBkgMedium); + + BDTEleScoreSigTrans = tau->auxdata<float>("BDTEleScoreSigTrans"); + eleBDTMedium = tau->isTau(xAOD::TauJetParameters::EleBDTMedium); eleBDTTight = tau->isTau(xAOD::TauJetParameters::EleBDTTight); muonVeto = tau->isTau(xAOD::TauJetParameters::MuonVeto); @@ -98,99 +192,292 @@ StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const tauBDTMedium = tau->isTau(xAOD::TauJetParameters::JetBDTSigMedium); tauBDTTight = tau->isTau(xAOD::TauJetParameters::JetBDTSigTight); + dRmax = tau->detail<float>(xAOD::TauJetParameters::dRmax); + EMPOverTrkSysP = tau->detail<float>(xAOD::TauJetParameters::EMPOverTrkSysP); + SumPtTrkFracCorrected = tau->detail<float>(xAOD::TauJetParameters::SumPtTrkFracCorrected); + mEflowApprox = tau->detail<float>(xAOD::TauJetParameters::mEflowApprox)/GeV; + + float ipSigLeadTrk = tau->detail<float>(xAOD::TauJetParameters::ipSigLeadTrk); + absipSigLeadTrk = fabs(ipSigLeadTrk); + etOverPtLeadTrk = tau->detail<float>(xAOD::TauJetParameters::etOverPtLeadTrk); + massTrkSys = tau->detail<float>(xAOD::TauJetParameters::massTrkSys) / GeV; //GeV + ptRatioEflowApprox = tau->detail<float>( xAOD::TauJetParameters::ptRatioEflowApprox ); + trFlightPathSig = tau->detail<float>(xAOD::TauJetParameters::trFlightPathSig); + trkAvgDist = tau->detail<float>(xAOD::TauJetParameters::trkAvgDist); + + panEta = tau->etaPanTauCellBased(); + panPhi = tau->phiPanTauCellBased() ; + panPt = tau->ptPanTauCellBased()/GeV; //GeV ; + //TauB/Identification/EleVetoBDTinputs - PSSFrac = tau->detail<float>( xAOD::TauJetParameters::PSSFraction ) ; + PSSFrac = tau->detail<float>(xAOD::TauJetParameters::PSSFraction ) ; + EMFrac = tau->auxdata<float>( "EMFracFixed" ); + + if ( tau->isAvailable<float>("hadLeakFracFixed")) + hadLeakFracFixed = tau->auxdata<float>( "hadLeakFracFixed" ); + + + if ( tau->isAvailable<float>( "etHotShotWinOverPtLeadTrk" ) ){ + etHotShotWinOverPtLeadTrk = tau->auxdata<float>( "etHotShotWinOverPtLeadTrk" ); + } //TauB/SubStructure EMFracTrk = tau->detail<float>( xAOD::TauJetParameters::ChPiEMEOverCaloEME ) ; EfracL2EffCluster = tau->detail<float>( xAOD::TauJetParameters::lead2ClusterEOverAllClusterE ); - EisoEffCluster = tau->detail<float>( xAOD::TauJetParameters::caloIsoCorrected)/1000 ; //puts it in GeV - InvMassEffClusters = tau->detail<float>( xAOD::TauJetParameters::effTopoInvMass )/1000 ; //puts it in GeV + EisoEffCluster = tau->detail<float>( xAOD::TauJetParameters::caloIsoCorrected)/GeV; + InvMassEffClusters = tau->detail<float>( xAOD::TauJetParameters::effTopoInvMass )/GeV ; //puts it in GeV nNeutPFO = tau->nProtoNeutralPFOs(); nShot = tau->nShotPFOs() ; - for ( unsigned int np = 0 ; np < nNeutPFO ; np ++ ) - { - const xAOD::PFO* npfo = tau->protoNeutralPFO( np ) ; - float bdtScore = npfo->bdtPi0Score(); - pi0bdt += bdtScore; - } + int panmode = -1 ; + int panmodeSubstructure = -1 ; + + const auto& trigDecTool = getTrigDecisionTool(); + + if (m_etaMin < fabs(tauEta) && fabs(tauEta) < m_etaMax){ + nTauCandidates +=1; - if(m_kinGroupName != "tauMonKinGroupGlobal"){ - if (m_etaMin < fabs(tauEta) && fabs(tauEta) < m_etaMax){ - fill( - m_kinGroupName, - tauEta, - tauPhi, - tauEt, - tauCharge, - NumTracks, - nTauCandidates, - nClusters, - LB, - EMRadius, - hadRadius, - isolFrac, - stripWidth2, - nStrip, - etEMAtEMScale, - etHadAtEMScale, - centFrac, - BDTJetScore, - BDTJetScoreSigTrans, - eleBDTMedium, - eleBDTTight, - muonVeto, - tauBDTLoose, - tauBDTMedium, - tauBDTTight, - PSSFrac, - EMFracTrk, - EfracL2EffCluster, - EisoEffCluster, - InvMassEffClusters, - nNeutPFO, - nShot, - pi0bdt - ); + if(tauEt > higherEtThreshold){ + nHighPtTauCandidates +=1; + nHighPtTaus +=1; + + } + + if (m_kinGroupName != "tauMonKinGroupHighPt"&& m_kinGroupName!="tauMonKinGroupHighPtBDTLoose"){ + + if ( + (m_kinGroupName != "tauMonKinGroupTauTrig" && m_kinGroupName != "tauMonKinGroupEleTrig" && m_kinGroupName != "tauMonKinGroupJetTrig") || + (m_kinGroupName == "tauMonKinGroupTauTrig" && trigDecTool !=0 && trigDecTool->isPassed("HLT_tau[2-9][0-9]_.*")) || + (m_kinGroupName == "tauMonKinGroupEleTrig" && trigDecTool !=0 && trigDecTool->isPassed("HLT_e[2-9][0-9]_.*")) || + (m_kinGroupName == "tauMonKinGroupJetTrig" && trigDecTool !=0 && trigDecTool->isPassed("HLT_j[2-9][0-9]_.*")) + ){ + + + + if(m_kinGroupName != "tauMonKinGroupGlobal" && tauEt > lowerEtThreshold && tauBDTLoose){ + tauPhiEt15BDTLoose = tau->phi(); + tauEtaEt15BDTLoose = tau->eta(); + tauEtEt15BDTLoose = tau->pt()/GeV; + nClustersEt15BDTLoose = tau->detail<int>(xAOD::TauJetParameters::numTopoClusters) ; + NumTracksEt15BDTLoose = tau->nTracks(); + + tau->panTauDetail(xAOD::TauJetParameters::PanTau_DecayMode, panmode); + PanModeEt15BDTLoose = panmode; + + fill(tool,tauPhiEt15BDTLoose); + fill(tool,tauEtaEt15BDTLoose); + fill(tool,nClustersEt15BDTLoose); + fill(tool,NumTracksEt15BDTLoose); + fill(tool,tauEtEt15BDTLoose); + fill(tool,PanModeEt15BDTLoose); + } + + + float maxpt = -9.9; + for( ElementLink< xAOD::TauTrackContainer > link : tau->allTauTrackLinks() ){ + if ( ! link.isValid() ) continue ; + + if ( (*link)->pt() > maxpt ){ + leadTrackDeltaEta = (*link)->eta() - tau->etaJetSeed() ; + leadTrackDeltaPhi = (*link)->phi() - tau->phiJetSeed() ; + } + + const xAOD::TrackParticle* track = (*link)->track() ; + + dRJetSeedAxis = (*link)->dRJetSeedAxis( *tau ); + fill(tool,dRJetSeedAxis); + + + z0TJVA = (*link)->z0sinThetaTJVA( *tau ) ; + fill(tool,z0TJVA); + + + float ePht = 0. ; + if (track->summaryValue( ePht, xAOD::eProbabilityHT )){ + eProbabilityHT = ePht; + fill(tool,eProbabilityHT); + } + + if ( tau->nTracks() != 0){ + const xAOD::TrackParticle* track = tau->track(0)->track(); + const Trk::Perigee perigee = track->perigeeParameters(); + d0 = perigee.parameters()[Trk::d0]; + + eta_track= perigee.eta(); + leadTrkPt =tau->detail<float>(xAOD::TauJetParameters::leadTrkPt)/GeV; + pT_track = perigee.pT()/GeV; + phi_track = perigee.parameters()[Trk::phi]; + trkWidth2 = tau->detail<float>(xAOD::TauJetParameters::trkWidth2); + ipZ0SinThetaSigLeadTrk = tau->detail<float>(xAOD::TauJetParameters::ipZ0SinThetaSigLeadTrk); + + rConv = sqrt(fabs(d0)*tau->pt()/(0.15*2.)); + double auxprod= d0 * perigee.parameters()[Trk::qOverP]; + rConvII= auxprod > 0 ? rConv : -rConv; + + uint8_t dummy(0); + + if (track->summaryValue(dummy, xAOD::numberOfSCTSharedHits)){ + numberOfSCTSharedHits = dummy; + fill(tool,numberOfSCTSharedHits); + } + + if (track->summaryValue(dummy, xAOD::numberOfSCTHits)){ + numberOfSCTHits = dummy; + fill(tool,numberOfSCTHits); + } + + if (track->summaryValue(dummy, xAOD::numberOfPixelSharedHits)){ + numberOfPixelSharedHits = dummy; + fill(tool,numberOfPixelSharedHits); + } + + if (track->summaryValue(dummy, xAOD::numberOfInnermostPixelLayerHits)){ + numberOfInnermostPixelLayerHits = dummy; + fill(tool,numberOfInnermostPixelLayerHits); + } + + if (track->summaryValue(dummy, xAOD::numberOfPixelHits)){ + numberOfPixelHits = dummy; + fill(tool,numberOfPixelHits); + } + if (track->summaryValue(dummy, xAOD::numberOfTRTHighThresholdHits)){ + numberOfTRTHighThresholdHits = dummy; + fill(tool,numberOfTRTHighThresholdHits); + } + if (track->summaryValue(dummy, xAOD::numberOfTRTHighThresholdOutliers)){ + numberOfTRTHighThresholdOutliers = dummy; + fill(tool,numberOfTRTHighThresholdOutliers); + } + if (track->summaryValue(dummy, xAOD::numberOfTRTHits)){ + numberOfTRTHits = dummy; + fill(tool,numberOfTRTHits); + } + if (track->summaryValue(dummy, xAOD::numberOfTRTOutliers)){ + numberOfTRTOutliers = dummy; + fill(tool,numberOfTRTOutliers); + } + + fill(tool,d0); + fill(tool,leadTrackDeltaEta); + fill(tool,leadTrackDeltaPhi); + fill(tool,eta_track); + fill(tool,leadTrkPt); + fill(tool,nHighPtTaus); + fill(tool,pT_track); + fill(tool,phi_track); + fill(tool,trkWidth2); + fill(tool,ipZ0SinThetaSigLeadTrk); + fill(tool,rConv); + fill(tool,rConvII); + fill(tool,numberOfSCTHits); + } + + } + + for ( int s = 0 ; s < nShot ; s++ ) + { + const xAOD::PFO* shot = tau->shotPFO( s ) ; + if ( shot != NULL ) + { + float pt3Temp = -9.0 ; + shot->attribute(xAOD::PFODetails::PFOAttributes::tauShots_pt3, pt3Temp ) ; + pt3 = pt3Temp /GeV; //GeV + fill(tool,pt3); + } + } + + for ( unsigned int np = 0 ; np < nNeutPFO ; np ++ ) + { + const xAOD::PFO* npfo = tau->protoNeutralPFO( np ) ; + BDTScoreAsP0 = npfo->bdtPi0Score(); + fill(tool,BDTScoreAsP0); + } + + fill(tool,tauPhi,tauEta,LB,tauEt,centFrac, isolFrac,coreTrk); //for all 2d Histograms + fill(tool,PtTESMVA); + fill(tool,PtCombined); + fill(tool,EMRadius); + fill(tool,hadRadius); + fill(tool,stripWidth2); + fill(tool,nStrip); + fill(tool,etEMAtEMScale); + fill(tool,etHadAtEMScale); + fill(tool,tauCharge); + fill(tool,BDTEleScoreSigTrans); + fill(tool,BDTJetScore); + fill(tool,BDTJetScoreSigTrans); + fill(tool,JetBDTBkgMedium); + fill(tool,BDTEleScoreSigTrans); + fill(tool,eleBDTMedium); + fill(tool,eleBDTTight); + fill(tool,muonVeto); + fill(tool,tauBDTLoose); + fill(tool,tauBDTMedium); + fill(tool,tauBDTTight); + fill(tool,BDTJetScore); + fill(tool,PSSFrac); + fill(tool,hadLeakFracFixed); + fill(tool,etHotShotWinOverPtLeadTrk); + fill(tool,EMFrac); + fill(tool,EMFracTrk); + fill(tool,EfracL2EffCluster); + fill(tool,EisoEffCluster); + fill(tool,InvMassEffClusters); + fill(tool,nNeutPFO); + fill(tool,nShot); + fill(tool,NumTracks); + fill(tool,nClusters); + fill(tool,jetSeedEta); + fill(tool,jetSeedPhi); + fill(tool,jetSeedPt); + fill(tool,dRmax); + fill(tool,EMPOverTrkSysP); + fill(tool,SumPtTrkFracCorrected); + fill(tool,mEflowApprox); + fill(tool,ptIntermediateAxis); + fill(tool,absipSigLeadTrk); + fill(tool,etOverPtLeadTrk); + fill(tool,massTrkSys); + fill(tool,ptRatioEflowApprox); + fill(tool,trFlightPathSig); + fill(tool,trkAvgDist); + fill(tool,lumiPerBCID); + + tau->panTauDetail(xAOD::TauJetParameters::PanTau_DecayMode, panmodeSubstructure); + PanModeSubstructure = panmodeSubstructure; + fill(tool,PanModeSubstructure); + + + if ( panPhi > -100 ){ + fill(tool,panEta); + fill(tool,panPhi); + fill(tool,panPt); + } + } + } + + if ((m_kinGroupName == "tauMonKinGroupHighPt") && tauEt > lowerEtThreshold){ + tauPhiEt15 = tau->phi(); + tauEtaEt15 = tau->eta(); + fill(tool,LB,tauPhiEt15,tauEtaEt15); } - }else{ - fill( - m_kinGroupName, - tauEta, - tauPhi, - tauEt, - tauCharge, - NumTracks, - nTauCandidates, - nClusters, - LB, - EMRadius, - hadRadius, - isolFrac, - stripWidth2, - nStrip, - etEMAtEMScale, - etHadAtEMScale, - centFrac, - BDTJetScore, - BDTJetScoreSigTrans, - eleBDTMedium, - eleBDTTight, - muonVeto, - tauBDTLoose, - tauBDTMedium, - tauBDTTight, - PSSFrac, - EMFracTrk, - EfracL2EffCluster, - EisoEffCluster, - InvMassEffClusters, - nNeutPFO, - nShot, - pi0bdt - ); + + if ((m_kinGroupName == "tauMonKinGroupHighPtBDTLoose") && tauEt > lowerEtThreshold &&tauBDTLoose){ + tauPhiEt15BDTLoose = tau->phi(); + tauEtaEt15BDTLoose = tau->eta(); + tauEtEt15BDTLoose = tau->pt()/GeV; //GeV + + nClustersEt15BDTLoose = tau->detail<int>(xAOD::TauJetParameters::numTopoClusters) ; + NumTracksEt15BDTLoose = tau->nTracks(); + fill(tool,LB,tauPhiEt15BDTLoose,tauEtaEt15BDTLoose); + fill(tool,nClustersEt15BDTLoose); + fill(tool,NumTracksEt15BDTLoose); + fill(tool,tauEtEt15BDTLoose); + } + } } + fill(tool,nHighPtTauCandidates); + fill(tool,nTauCandidates); return StatusCode::SUCCESS; } diff --git a/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h b/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h index 32ba312d101..04b60dbd0a8 100644 --- a/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h +++ b/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h @@ -15,6 +15,7 @@ #include "xAODTau/TauJetContainer.h" + class tauMonitorAlgorithm : public AthMonitorAlgorithm { public: tauMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ); -- GitLab