diff --git a/Reconstruction/tauMonitoring/python/TauMonitoringConfig.py b/Reconstruction/tauMonitoring/python/TauMonitoringConfig.py
index a2cb5d279c747b56356208d740ffa655c25c782b..2183ddfd6e5dc0679dac845d0da70978ca20a6b1 100644
--- a/Reconstruction/tauMonitoring/python/TauMonitoringConfig.py
+++ b/Reconstruction/tauMonitoring/python/TauMonitoringConfig.py
@@ -9,4 +9,5 @@ def TauMonitoringConfig(flags):
     from .tauMonitorAlgorithm import tauMonitoringConfig
     result.merge(tauMonitoringConfig(flags))
 
+
     return result
diff --git a/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py b/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py
index efcf2e5cafb8e614da150b714dd5ac21d445337e..cab5e20034e3b9bc74761bfbc74d15b79b6ae816 100644
--- a/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py
+++ b/Reconstruction/tauMonitoring/python/tauMonitorAlgorithm.py
@@ -51,6 +51,7 @@ def tauMonitoringConfig(inputFlags):
     # to enable a trigger filter, for example:
     #exampleMonAlg.TriggerChain = 'HLT_mu26_ivarmedium'
 
+
     tauMonAlgBA.etaMin = -1.
     tauMonAlgBA.etaMax = 1.3
     tauMonAlgCR.etaMin = 1.3
@@ -65,7 +66,6 @@ def tauMonitoringConfig(inputFlags):
     tauMonAlgEleTrig.etaMax = 100
     tauMonAlgJetTrig.etaMin = -100
     tauMonAlgJetTrig.etaMax = 100
-
     tauMonAlgHighPt.etaMin = -100
     tauMonAlgHighPt.etaMax = 100
     tauMonAlgHighPtBDTLoose.etaMin = -100
@@ -134,7 +134,7 @@ def tauMonitoringConfig(inputFlags):
 
         (igroup, postfix) = itup
 
-        PHIMIN = pi
+        PHIMIN = -pi
         PHIMAX = pi
 
         folder = ""
@@ -363,9 +363,15 @@ def tauMonitoringConfig(inputFlags):
             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",
+            igroup.defineHistogram(namer('z0TJVA','z0TJVA','Track',postfix), title='z0 respected to Tau vertex , Z0SinTheta (mm)',path=folder+"Track",
             xbins=50, xmin=-35.0, xmax=35.0 )
 
+            igroup.defineHistogram(namer('z0PriVtx','z0PriVtx','Track',postfix), title=' z0 respected to primary vertex ; Z0 SinTheta (mm)',path=folder+"Track",
+            xbins=50, xmin=-35.0, xmax=35.0 )
+
+            igroup.defineHistogram(namer('LB2,z0PriVtx','z0VsLB','Calo',postfix), type='TH2F', title='Track z0 vs Lumiblock;Longitudinal Impact Parameter (mm) );Lumiblock', path=folder+"Track", 
+            xbins=1200,xmin=0,xmax=1200,ybins=50,ymin=-35.,ymax=35)
+
 
             igroup.defineHistogram(namer('eta_track','eta','Track',postfix), title='Track Eta;Eta',path=folder+"Track",
             xbins=51, xmin=-2.55, xmax=2.55 )
@@ -495,9 +501,18 @@ if __name__=='__main__':
 
     # Set the Athena configuration flags
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
+
+
     nightly = '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CommonInputs/'
     file = 'data16_13TeV.00311321.physics_Main.recon.AOD.r9264/AOD.11038520._000001.pool.root.1'
     ConfigFlags.Input.Files = [nightly+file]
+    '''
+    filePath ="/home/atlas/awharton/AtlasData/data15_13TeV.00276689.physics_Main.recon.ESD.f1042/"
+    file = "data15_13TeV.00276689.physics_Main.recon.ESD.f1042._lb0268._SFO-6._0001.1"
+    ConfigFlags.Input.Files = [filePath+file]
+    '''
+
+
     ConfigFlags.Input.isMC = False
     ConfigFlags.Output.HISTFileName = 'tauRegions.root'
     
diff --git a/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx b/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx
index 0951ca97e90da6f7198bcb8c6598cf4148c9c3fa..d0918c244bf9c426279db22ec55dc63dd93205df 100644
--- a/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx
+++ b/Reconstruction/tauMonitoring/src/tauMonitorAlgorithm.cxx
@@ -5,6 +5,7 @@
 #include "tauMonitoring/tauMonitorAlgorithm.h"
 
 #include "GaudiKernel/SystemOfUnits.h"
+#include <xAODCore/ShallowCopy.h>
 
 using Gaudi::Units::GeV;
 
@@ -24,13 +25,22 @@ StatusCode tauMonitorAlgorithm::initialize() {
 }
 
 StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
+
+
     using namespace Monitored;
+
     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;
     }
 
+    auto shallowCopy = xAOD::shallowCopyContainer (*taus);
+    std::unique_ptr<xAOD::TauJetContainer> shallowTaus (shallowCopy.first);
+
+
+
     
     //In tauMonTool these values are chosen as Et cuts for different Histograms
     const int lowerEtThreshold = 15;
@@ -66,6 +76,7 @@ StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     auto nClustersEt15BDTLoose = Monitored::Scalar<int>("nClustersEt15BDTLoose",0.0);
 
     auto LB = Monitored::Scalar<int>("LB",0.0);
+    auto LB2 = Monitored::Scalar<int>("LB2",0.0);
 
     auto EMRadius = Monitored::Scalar<float>("EMRadius",0.0);
     auto hadRadius = Monitored::Scalar<float>("hadRadius",0.0);
@@ -111,7 +122,7 @@ StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     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 ipSigLeadTrk = Monitored::Scalar<float>("ipSigLeadTrk",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);
@@ -149,335 +160,308 @@ StatusCode tauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     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()/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);
-      hadRadius = tau->detail<float>(xAOD::TauJetParameters::hadRadius);
-      isolFrac = tau->detail<float>(xAOD::TauJetParameters::isolFrac) ;
-      stripWidth2 = tau->detail<float>(xAOD::TauJetParameters::stripWidth2) ;
-      nStrip = tau->detail<int>(xAOD::TauJetParameters::nStrip) ;
-      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);
-      tauBDTLoose  =       tau->isTau(xAOD::TauJetParameters::JetBDTSigLoose);
-      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 ) ;
-      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)/GeV;
-      InvMassEffClusters =  tau->detail<float>( xAOD::TauJetParameters::effTopoInvMass )/GeV ; //puts it in GeV
-      nNeutPFO = tau->nProtoNeutralPFOs();
-      nShot = tau->nShotPFOs() ;
-
-      int panmode = -1 ;
-      int panmodeSubstructure = -1 ;
-
-      const auto& trigDecTool = getTrigDecisionTool();
-
-      if (m_etaMin < fabs(tauEta) && fabs(tauEta) < m_etaMax){
-         nTauCandidates +=1;
-
-         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]_.*"))
-                ){
+    for (const auto& tau : *shallowTaus) {
+        TLorentzVector calibratedVec = tau->p4(xAOD::TauJetParameters::FinalCalib);
+        tau->setP4(calibratedVec.Pt(), calibratedVec.Eta(), calibratedVec.Phi(), calibratedVec.M());
+
+        tauEta = tau->eta();
+        tauPhi = tau->phi();
+        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);
+        hadRadius = tau->detail<float>(xAOD::TauJetParameters::hadRadius);
+        isolFrac = tau->detail<float>(xAOD::TauJetParameters::isolFrac) ;
+        stripWidth2 = tau->detail<float>(xAOD::TauJetParameters::stripWidth2) ;
+        nStrip = tau->detail<int>(xAOD::TauJetParameters::nStrip) ;
+        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);
+        tauBDTLoose  =       tau->isTau(xAOD::TauJetParameters::JetBDTSigLoose);
+        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;
+
+        etOverPtLeadTrk = tau->detail<float>(xAOD::TauJetParameters::etOverPtLeadTrk);
+        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 ) ;
+        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" );
+        }
 
-                 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();
+        //TauB/SubStructure
+        EMFracTrk = tau->detail<float>( xAOD::TauJetParameters::ChPiEMEOverCaloEME ) ;
+        EfracL2EffCluster = tau->detail<float>( xAOD::TauJetParameters::lead2ClusterEOverAllClusterE );
+        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() ;
 
-                     tau->panTauDetail(xAOD::TauJetParameters::PanTau_DecayMode, panmode); 
-                     PanModeEt15BDTLoose = panmode;
+        int panmode = -1 ;
+        int panmodeSubstructure = -1 ;
 
-                     fill(tool,tauPhiEt15BDTLoose);
-                     fill(tool,tauEtaEt15BDTLoose);
-                     fill(tool,nClustersEt15BDTLoose);
-                     fill(tool,NumTracksEt15BDTLoose);
-                     fill(tool,tauEtEt15BDTLoose);
-                     fill(tool,PanModeEt15BDTLoose);
-                 }
+        const auto& trigDecTool = getTrigDecisionTool();
 
+        if (m_etaMin < fabs(tauEta) && fabs(tauEta) < m_etaMax){
+            nTauCandidates +=1;
 
-                float maxpt = -9.9;
-                for( ElementLink< xAOD::TauTrackContainer > link : tau->allTauTrackLinks() ){
-                    if ( ! link.isValid() ) continue ;  
+            if(tauEt > higherEtThreshold){
+                nHighPtTauCandidates +=1;
+                nHighPtTaus +=1;
+            }
 
-                    if ( (*link)->pt() > maxpt ){
-                        leadTrackDeltaEta = (*link)->eta() - tau->etaJetSeed() ;
-                        leadTrackDeltaPhi  = (*link)->phi() - tau->phiJetSeed() ;
-                    }
+            if (m_kinGroupName != "tauMonKinGroupHighPt"&& m_kinGroupName!="tauMonKinGroupHighPtBDTLoose"){
 
-                    const xAOD::TrackParticle* track = (*link)->track() ;
+                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]_.*"))
+                ){
 
-                    dRJetSeedAxis = (*link)->dRJetSeedAxis( *tau );
-                    fill(tool,dRJetSeedAxis);
+                    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);
+                    }
+                    if (tau->nTracks()!= 0){
 
+                        massTrkSys = tau->detail<float>(xAOD::TauJetParameters::massTrkSys) / GeV; //GeV
+                        trkWidth2  = tau->detail<float>(xAOD::TauJetParameters::trkWidth2);
+                        trFlightPathSig = tau->detail<float>(xAOD::TauJetParameters::trFlightPathSig);
+                        ipSigLeadTrk    =    tau->detail<float>(xAOD::TauJetParameters::ipSigLeadTrk);
+                        ipZ0SinThetaSigLeadTrk = tau->detail<float>(xAOD::TauJetParameters::ipZ0SinThetaSigLeadTrk);
 
-                    z0TJVA = (*link)->z0sinThetaTJVA( *tau ) ;
-                    fill(tool,z0TJVA);
+                        leadTrkPt =tau->detail<float>(xAOD::TauJetParameters::leadTrkPt)/GeV;
 
+                        fill(tool,massTrkSys);
+                        fill(tool,trkWidth2);
+                        fill(tool,trFlightPathSig);
+                        fill(tool,ipSigLeadTrk);
+                        fill(tool,ipZ0SinThetaSigLeadTrk);
+                        fill(tool,leadTrkPt);
 
-                    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;
+                        const xAOD::TrackParticle* track = tau->track(0)->track();
+                        const Trk::Perigee perigee = track->perigeeParameters();
+
+                        uint8_t dummy(0);
                     
-	                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);
+                        }
                     
-                    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);
+                        d0 = perigee.parameters()[Trk::d0];
+                        fill(tool,d0);
+                        //z0 missing
+                        phi_track = perigee.parameters()[Trk::phi];
+                        fill(tool,phi_track);
+                        eta_track = perigee.eta();
+                        fill(tool,eta_track);
+                        pT_track = perigee.pT()/GeV;
+                        fill(tool,pT_track);
                     }
-                   
-                    if (track->summaryValue(dummy, xAOD::numberOfPixelHits)){
-                        numberOfPixelHits = dummy;
-                        fill(tool,numberOfPixelHits);
+                    //this else can be removed, but it sets any track variable to 0 if there are no tracks
+                    //this solution makes entry numbers match calo which is desired but there are too many zeros. 
+                    else{
+                        leadTrkPt = 0;
+                        fill(tool,leadTrkPt);
                     }
-                    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);
+
+                    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);
+                        }
                     }
-                    if (track->summaryValue(dummy, xAOD::numberOfTRTOutliers)){
-                        numberOfTRTOutliers = dummy;
-                        fill(tool,numberOfTRTOutliers);
+
+                    for ( unsigned int np = 0 ; np < nNeutPFO ; np ++ ) 
+                    {
+                      const xAOD::PFO* npfo = tau->protoNeutralPFO( np ) ;
+                      BDTScoreAsP0 = npfo->bdtPi0Score();
+                      fill(tool,BDTScoreAsP0);
                     }
-                    
-                    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,etOverPtLeadTrk);
+                    fill(tool,ptRatioEflowApprox);
+                    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);
+                    }
                 }
+            }
 
-                 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 ((m_kinGroupName == "tauMonKinGroupHighPt") && tauEt > lowerEtThreshold){
+                tauPhiEt15 = tau->phi();
+                tauEtaEt15 = tau->eta();
+                fill(tool,LB,tauPhiEt15,tauEtaEt15);
+            }
 
-                
-                 if ( panPhi > -100 ){
-                    fill(tool,panEta);
-                    fill(tool,panPhi);
-                    fill(tool,panPt);
-                 }
+            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);
             }
         }
-
-         if ((m_kinGroupName == "tauMonKinGroupHighPt") && tauEt > lowerEtThreshold){
-             tauPhiEt15 = tau->phi();
-             tauEtaEt15 = tau->eta();
-             fill(tool,LB,tauPhiEt15,tauEtaEt15);
-         }
-
-         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;
+    }
+    fill(tool,nHighPtTauCandidates);
+    fill(tool,nTauCandidates);
+    return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h b/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h
index 04b60dbd0a80e7d0bf93816dbb5328d98853f248..ae2292fce58ab8dfbd0498ff9227ae2ee15c147f 100644
--- a/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h
+++ b/Reconstruction/tauMonitoring/tauMonitoring/tauMonitorAlgorithm.h
@@ -33,8 +33,9 @@ private:
 
     Gaudi::Property<float> m_etaMin {this, "etaMin", -1.};
     Gaudi::Property<float> m_etaMax {this, "etaMax", 3.0};
-
     Gaudi::Property<std::string> m_kinGroupName {this, "kinGroupName", "tauMonKinGroupBA"};
 
+
+
 };
 #endif