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