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