diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py index 6583d4f1c674db8df7ca7a07002089756ea0250b..36736c809530963090d7a551011356ff68d438c2 100644 --- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py +++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py @@ -310,10 +310,7 @@ def getTauSubstructure(): return cached_instances[_name] from tauRecTools.tauRecToolsConf import TauSubstructureVariables - TauSubstructureVariables = TauSubstructureVariables( name = _name, - TauVertexCorrection = getTauVertexCorrection(), - UseSubtractedCluster = tauFlags.useSubtractedCluster() - ) + TauSubstructureVariables = TauSubstructureVariables(name = _name) cached_instances[_name] = TauSubstructureVariables return TauSubstructureVariables diff --git a/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx b/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx index 40b79ac312d472947e8049314b5ad80edad7210b..80eb6274a4a96589a5686895a5f96830cf804eec 100644 --- a/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx +++ b/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx @@ -4,6 +4,9 @@ #include "tauRecTools/CaloClusterVariables.h" #include "tauRecTools/HelperFunctions.h" + +#include "xAODCaloEvent/CaloVertexedTopoCluster.h" + #include <cmath> const double CaloClusterVariables::DEFAULT = -1111.; @@ -21,31 +24,20 @@ m_aveEffRadius(DEFAULT), m_totMass(DEFAULT), m_effMass(DEFAULT), m_totEnergy(DEFAULT), -m_effEnergy(DEFAULT), -m_useSubtractedCluster(true){ +m_effEnergy(DEFAULT) { } //******************************************* // update/fill the cluster based variables //******************************************* -bool CaloClusterVariables::update(const xAOD::TauJet& pTau, const ToolHandle<ITauVertexCorrection>& tauVertexCorrection) { +bool CaloClusterVariables::update(const xAOD::TauJet& pTau) { - if (! pTau.jetLink().isValid()) return false; - - const xAOD::Jet* jetSeed = pTau.jet(); - const xAOD::Vertex* jetVertex = tauVertexCorrection->getJetVertex(*jetSeed); - - const xAOD::Vertex* tauVertex = nullptr; - if (pTau.vertexLink().isValid()) tauVertex = pTau.vertex(); - - std::vector<const xAOD::CaloCluster*> clusterList; - StatusCode sc = tauRecTools::GetJetClusterList(jetSeed, clusterList, m_useSubtractedCluster); + const auto& vertexedClusterList = pTau.vertexedClusters(); std::vector<TLorentzVector> clusterP4Vector; - for (const xAOD::CaloCluster* cluster : clusterList) { - TLorentzVector clusterP4 = tauVertexCorrection->getVertexCorrectedP4(*cluster, tauVertex, jetVertex); - clusterP4Vector.push_back(clusterP4); + for (const xAOD::CaloVertexedTopoCluster& vertexedCluster : vertexedClusterList) { + clusterP4Vector.push_back(vertexedCluster.p4()); } this->m_numConstit = (int) clusterP4Vector.size(); diff --git a/Reconstruction/tauRecTools/Root/HelperFunctions.cxx b/Reconstruction/tauRecTools/Root/HelperFunctions.cxx index 9f08effc7213f72c0af04722a04de80e9a378046..ceba5edcb3c923781b94c7df27892fd940a88adf 100644 --- a/Reconstruction/tauRecTools/Root/HelperFunctions.cxx +++ b/Reconstruction/tauRecTools/Root/HelperFunctions.cxx @@ -15,6 +15,21 @@ namespace tauRecTools { ANA_MSG_SOURCE(msgHelperFunction, "HelperFunction") } + + +TLorentzVector tauRecTools::getTauAxis(const xAOD::TauJet& tau, bool doVertexCorrection) { + TLorentzVector tauAxis; + if (doVertexCorrection && tau.vertexLink().isValid()) { + tauAxis = tau.p4(xAOD::TauJetParameters::IntermediateAxis); + } + else { + tauAxis = tau.p4(xAOD::TauJetParameters::DetectorAxis); + } + + return tauAxis; +} + + //________________________________________________________________________________ xAOD::TauTrack::TrackFlagType tauRecTools::isolateClassifiedBits(xAOD::TauTrack::TrackFlagType flag){ const int flagsize=sizeof(flag)*8; diff --git a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx index e15156219c4c5c7e285d4cdb2af650c5b24392be..6e850c2f0ac3d553ff423a916c5f3f2435212280 100644 --- a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx +++ b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx @@ -20,26 +20,11 @@ #include "tauRecTools/TauSubstructureVariables.h" #include "tauRecTools/HelperFunctions.h" -#define GeV 1000 const float TauSubstructureVariables::DEFAULT = -1111.; - - TauSubstructureVariables::TauSubstructureVariables( const std::string& name ) : TauRecToolBase(name) { - declareProperty("UseSubtractedCluster", m_useSubtractedCluster = true); -} - - - -TauSubstructureVariables::~TauSubstructureVariables() { -} - - - -StatusCode TauSubstructureVariables::initialize() { - ATH_CHECK(m_tauVertexCorrection.retrieve()); - return StatusCode::SUCCESS; + declareProperty("VertexCorrection", m_doVertexCorrection = true); } @@ -47,9 +32,8 @@ StatusCode TauSubstructureVariables::initialize() { StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) const { CaloClusterVariables CaloClusterVariablesTool; - CaloClusterVariablesTool.setIncSub(m_useSubtractedCluster); - bool isFilled = CaloClusterVariablesTool.update(pTau, m_tauVertexCorrection); + bool isFilled = CaloClusterVariablesTool.update(pTau); if (!isFilled) { ATH_MSG_DEBUG("problem in calculating calo cluster variables -> will be set to -1111"); @@ -84,33 +68,24 @@ StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) const { double clusELead = DEFAULT; double clusESubLead = DEFAULT; - if (! pTau.jetLink().isValid()) { - ATH_MSG_ERROR("Tau jet link is invalid."); - return StatusCode::FAILURE; - } - const xAOD::Jet *jetSeed = pTau.jet(); - - const xAOD::Vertex* jetVertex = m_tauVertexCorrection->getJetVertex(*jetSeed); - - const xAOD::Vertex* tauVertex = nullptr; - if (pTau.vertexLink().isValid()) tauVertex = pTau.vertex(); - - TLorentzVector tauAxis = m_tauVertexCorrection->getTauAxis(pTau); - - std::vector<const xAOD::CaloCluster*> vClusters; - ATH_CHECK(tauRecTools::GetJetClusterList(jetSeed, vClusters, m_useSubtractedCluster)); - - for (auto cluster : vClusters){ - totalEnergy += cluster->e(); + TLorentzVector tauAxis = tauRecTools::getTauAxis(pTau, m_doVertexCorrection); + + // TODO: check which scale is needed here + // p4 from cluster is at LC scale, p4 from vertexedCluster is at LC/EM scale for LC/EM seed jets + std::vector<xAOD::CaloVertexedTopoCluster> vertexedClusterList = pTau.vertexedClusters(); + for (const xAOD::CaloVertexedTopoCluster& vertexedCluster : vertexedClusterList){ + TLorentzVector clusterP4 = vertexedCluster.p4(); + + totalEnergy += clusterP4.E(); - TLorentzVector clusterP4 = m_tauVertexCorrection->getVertexCorrectedP4(*cluster, tauVertex, jetVertex); - dr = tauAxis.DeltaR(clusterP4); + dr = tauAxis.DeltaR(clusterP4); if (0.2 <= dr && dr < 0.4) { calo_iso += clusterP4.Et(); } else if (dr < 0.2) { - double clusEnergyBE = ( cluster->energyBE(0) + cluster->energyBE(1) + cluster->energyBE(2) ); + const xAOD::CaloCluster& cluster = vertexedCluster.clust(); + double clusEnergyBE = ( cluster.energyBE(0) + cluster.energyBE(1) + cluster.energyBE(2) ); if (clusEnergyBE > clusELead) { //change current leading cluster to subleading @@ -137,16 +112,19 @@ StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) const { } // now sort cluster by energy - std::sort(vClusters.begin(), vClusters.end(), DefCaloClusterCompare()); + auto compare = [](const xAOD::CaloVertexedTopoCluster& left, const xAOD::CaloVertexedTopoCluster& right) { + return left.e() > right.e(); + }; + std::sort(vertexedClusterList.begin(), vertexedClusterList.end(), compare); // determine energy sum of leading 2 and leading 3 clusters float sum2LeadClusterE = 0.; - if(vClusters.size()>0) { - sum2LeadClusterE = vClusters.at(0)->e(); - if(vClusters.size()>1) sum2LeadClusterE += vClusters.at(1)->e(); + if(vertexedClusterList.size()>0) { + sum2LeadClusterE = vertexedClusterList.at(0).e(); + if(vertexedClusterList.size()>1) sum2LeadClusterE += vertexedClusterList.at(1).e(); } float sum3LeadClusterE = sum2LeadClusterE; - if(vClusters.size()>2) sum3LeadClusterE += vClusters.at(2)->e(); + if(vertexedClusterList.size()>2) sum3LeadClusterE += vertexedClusterList.at(2).e(); if (totalEnergy != 0.) { pTau.setDetail(xAOD::TauJetParameters::lead2ClusterEOverAllClusterE, (sum2LeadClusterE / totalEnergy) ); @@ -160,15 +138,18 @@ StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) const { float EMEnergy(0.); float HADEnergy(0.); - for (auto cl : vClusters) { - float clEnergy = cl->e(); + for (const xAOD::CaloVertexedTopoCluster& vertexedCluster : vertexedClusterList) { + // It is at EM/LC scale for EM/LC seed jets + float clEnergy = vertexedCluster.e(); - //Calculate the fractions of energy in different calorimeter layers - float PreSampler = cl->eSample(CaloSampling::PreSamplerB) + cl->eSample(CaloSampling::PreSamplerE); - float EMLayer1 = cl->eSample(CaloSampling::EMB1) + cl->eSample(CaloSampling::EME1); - float EMLayer2 = cl->eSample(CaloSampling::EMB2) + cl->eSample(CaloSampling::EME2); + const xAOD::CaloCluster& cluster = vertexedCluster.clust(); + + // Calculate the fractions of energy in different calorimeter layers + float PreSampler = cluster.eSample(CaloSampling::PreSamplerB) + cluster.eSample(CaloSampling::PreSamplerE); + float EMLayer1 = cluster.eSample(CaloSampling::EMB1) + cluster.eSample(CaloSampling::EME1); + float EMLayer2 = cluster.eSample(CaloSampling::EMB2) + cluster.eSample(CaloSampling::EME2); - float Energy = cl->rawE(); + float Energy = cluster.rawE(); float PSSF = Energy != 0 ? (PreSampler + EMLayer1) / Energy : 0; float EM2F = Energy != 0 ? EMLayer2 / Energy : 0; float EMF = PSSF + EM2F; diff --git a/Reconstruction/tauRecTools/Root/TauVertexedClusterDecorator.cxx b/Reconstruction/tauRecTools/Root/TauVertexedClusterDecorator.cxx index 59bfe77f7235e9adf2fd9d6aea94c71ca3461122..b3357e50c7177c6d1d97e7005b818bdb4fc8821b 100644 --- a/Reconstruction/tauRecTools/Root/TauVertexedClusterDecorator.cxx +++ b/Reconstruction/tauRecTools/Root/TauVertexedClusterDecorator.cxx @@ -25,7 +25,7 @@ StatusCode TauVertexedClusterDecorator::initialize() { ATH_MSG_INFO("Set the cluster state to UNCALIBRATED"); m_clusterState = xAOD::CaloCluster::State::UNCALIBRATED; } - else { + else if (! inTrigger()) { ATH_MSG_ERROR("Seed jet " << m_seedJet << " not supported !"); return StatusCode::FAILURE; } @@ -75,13 +75,16 @@ StatusCode TauVertexedClusterDecorator::execute(xAOD::TauJet& tau) const { std::vector<xAOD::CaloVertexedTopoCluster> vertexedClusterList; for (const xAOD::IParticle* particle : particleList) { const xAOD::CaloCluster* cluster = static_cast<const xAOD::CaloCluster*>(particle); - + if (vertex) { vertexedClusterList.emplace_back(*cluster, m_clusterState, vertex->position()); } - else { + else if (!inTrigger()) { vertexedClusterList.emplace_back(*cluster, m_clusterState); } + else { + vertexedClusterList.emplace_back(*cluster); + } } SG::AuxElement::Accessor<std::vector<xAOD::CaloVertexedTopoCluster>> vertexedClustersAcc("VertexedClusters"); diff --git a/Reconstruction/tauRecTools/src/TauClusterFinder.cxx b/Reconstruction/tauRecTools/src/TauClusterFinder.cxx index 69ec43a62e02f03ca64632b1d82615ebe2421b79..35aba358877ca16a667a13953e49bcf5ae23e22c 100644 --- a/Reconstruction/tauRecTools/src/TauClusterFinder.cxx +++ b/Reconstruction/tauRecTools/src/TauClusterFinder.cxx @@ -20,6 +20,8 @@ TauRecToolBase(name) { StatusCode TauClusterFinder::execute(xAOD::TauJet& tau) const { + tau.clearClusterLinks(); + if (! tau.jetLink().isValid()) { ATH_MSG_ERROR("Tau jet link is invalid."); return StatusCode::FAILURE; diff --git a/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h b/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h index 8a55a68489b305b5275ff7eb6d9eff4c30cb29bd..f0d1636a7b51db61c82813859eb87089688f620f 100644 --- a/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h +++ b/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h @@ -26,9 +26,7 @@ public: ~CaloClusterVariables() { } - bool update(const xAOD::TauJet& pTau, const ToolHandle<ITauVertexCorrection>& handle); //!< update the internal variables for the given tau - - void setIncSub(bool flag) {m_useSubtractedCluster=flag;} + bool update(const xAOD::TauJet& pTau); //!< update the internal variables for the given tau // ID Variables unsigned int numConstituents() { return (unsigned int) m_numConstit; } @@ -59,9 +57,6 @@ private: // Calculate the geometrical center of the tau constituents TLorentzVector calculateTauCentroid(int nConst, const std::vector<TLorentzVector>& clusterP4Vector); - - // use shower subtracted clusters with PFlow jet seeds - bool m_useSubtractedCluster; }; //------------------------------------------------------------------------- diff --git a/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h b/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h index 2812210037140d55a8fefd513055d71576211da8..763799a7cfaebdb4b9acf86a2627288d92084c2c 100644 --- a/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h +++ b/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h @@ -24,6 +24,8 @@ namespace tauRecTools { ANA_MSG_HEADER(msgHelperFunction) + TLorentzVector getTauAxis(const xAOD::TauJet& tau, bool doVertexCorrection = true); + TLorentzVector GetConstituentP4(const xAOD::JetConstituent& constituent); const StatusCode GetJetClusterList(const xAOD::Jet* jet, std::vector<const xAOD::CaloCluster*> &clusterList, bool useSubtractedCluster); diff --git a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h index 11012f49bfea8080121f4ac68540576fbd76cdbf..9589a039af3ef2c875af3c13847d7be1b52f1c97 100644 --- a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h +++ b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h @@ -6,9 +6,8 @@ #define TAUREC_TAUSUBSTRUCTUREBUILDER_H #include "tauRecTools/TauRecToolBase.h" -#include "tauRecTools/ITauVertexCorrection.h" -#include "AsgTools/ToolHandle.h" +#include <string> /** * @brief Calculate variables from the tau substructure. @@ -18,26 +17,23 @@ * */ -class TauSubstructureVariables : public TauRecToolBase -{ - public: - ASG_TOOL_CLASS2(TauSubstructureVariables, TauRecToolBase, ITauToolBase) - - static const float DEFAULT; +class TauSubstructureVariables : public TauRecToolBase { - TauSubstructureVariables(const std::string& name="TauSubstructureVariables"); +public: - ~TauSubstructureVariables(); + ASG_TOOL_CLASS2(TauSubstructureVariables, TauRecToolBase, ITauToolBase) + + TauSubstructureVariables(const std::string& name="TauSubstructureVariables"); - virtual StatusCode initialize() override; - virtual StatusCode execute(xAOD::TauJet& pTau) const override; + virtual ~TauSubstructureVariables() = default; - private: - // use shower subtracted clusters with PFlow jet seeds - bool m_useSubtractedCluster; - - ToolHandle<ITauVertexCorrection> m_tauVertexCorrection { this, - "TauVertexCorrection", "TauVertexCorrection", "Tool to perform the vertex correction"}; + virtual StatusCode execute(xAOD::TauJet& pTau) const override; + + static const float DEFAULT; + +private: + + bool m_doVertexCorrection; }; #endif diff --git a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py index 6b7a3da19b9c4b62eb80d163a26b29d5ca066720..d7a5d98d0d469a69d15d5080de65049a7108bb41 100644 --- a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py +++ b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py @@ -377,8 +377,7 @@ def getTauSubstructure(): from tauRecTools.tauRecToolsConf import TauSubstructureVariables TauSubstructureVariables = TauSubstructureVariables( name = _name, - TauVertexCorrection = getTauVertexCorrection() - ) + VertexCorrection = doVertexCorrection) cached_instances[_name] = TauSubstructureVariables return TauSubstructureVariables @@ -713,6 +712,39 @@ def getTauTrackFinder(applyZ0cut=False, maxDeltaZ0=2, noSelector = False, prefix cached_instances[_name] = TauTrackFinder return TauTrackFinder + +# Associate the cluster in jet constituents to the tau candidate +def getTauClusterFinder(): + _name = sPrefix + 'TauClusterFinder' + + if _name in cached_instances: + return cached_instances[_name] + + from tauRecTools.tauRecToolsConf import TauClusterFinder + TauClusterFinder = TauClusterFinder(name = _name, + JetVertexCorrection = False) + + cached_instances[_name] = TauClusterFinder + return TauClusterFinder + + +def getTauVertexedClusterDecorator(): + from tauRecTools.tauRecToolsConf import TauVertexedClusterDecorator + + _name = sPrefix + 'TauVertexedClusterDecorator' + + if _name in cached_instances: + return cached_instances[_name] + + myTauVertexedClusterDecorator = TauVertexedClusterDecorator(name = _name, + SeedJet = "", + VertexCorrection = doVertexCorrection, + JetVertexCorrection = False) + + cached_instances[_name] = myTauVertexedClusterDecorator + return myTauVertexedClusterDecorator + + ######################################################################## # TauTrackClassifier def getTauTrackClassifier(): diff --git a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfig.py b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfig.py index 4298178c422686c294b37c28b66a5ba4c01f852f..61d165b21caefe374dbacc293245a9b27de3f190 100644 --- a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfig.py +++ b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfig.py @@ -34,6 +34,8 @@ class TrigTauRecMerged_Tau (TrigTauRecMerged) : tools.append(taualgs.getTauVertexFinder(doUseTJVA=False)) #don't use TJVA by default tools.append(taualgs.getTauAxis()) tools.append(taualgs.getTauTrackFinder()) + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) tools.append(taualgs.getEnergyCalibrationLC()) tools.append(taualgs.getCellVariables(cellConeSize=0.4)) @@ -90,6 +92,8 @@ class TrigTauRecMerged_Tau2012 (TrigTauRecMerged) : tools.append(taualgs.getTauVertexFinder(doUseTJVA=False)) #don't use TJVA by default tools.append(taualgs.getTauAxis()) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=2)) + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) tools.append(taualgs.getEnergyCalibrationLC()) tools.append(taualgs.getCellVariables(cellConeSize=0.2)) #cellConeSize 0.2!! @@ -143,6 +147,9 @@ class TrigTauRecMerged_TauPreselection (TrigTauRecMerged) : # Insert bypass later? # Count tracks with deltaZ0 cut of 2mm for 2016 and 1mm for 2017-2018 (see ATR-15845) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=1, noSelector=False)) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC()) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -205,6 +212,9 @@ class TrigTauRecMerged_TauFTK (TrigTauRecMerged) : # Count tracks with deltaZ0 cut of 2mm -> Need to remove quality criteria for fast-tracks here # Insert bypass later? tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=2, noSelector = False)) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC()) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -260,6 +270,9 @@ class TrigTauRecMerged_TauCaloOnly (TrigTauRecMerged) : tools.append(taualgs.getJetSeedBuilder()) # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger) tools.append(taualgs.getTauAxis()) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC(caloOnly=True)) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -304,6 +317,9 @@ class TrigTauRecMerged_TauCaloOnlyMVA (TrigTauRecMerged) : tools.append(taualgs.getJetSeedBuilder()) # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger) tools.append(taualgs.getTauAxis()) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC(caloOnly=True)) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -356,6 +372,9 @@ class TrigTauRecMerged_TauPrecision (TrigTauRecMerged) : tools.append(taualgs.getTauAxis()) # Count tracks with deltaZ0 cut of 2mm for 2016 and 1mm for 2017-2018 (see ATR-15845) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=1)) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC()) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -440,6 +459,9 @@ class TrigTauRecMerged_TauPrecisionMVA (TrigTauRecMerged) : # tightened to 0.75 mm for tracktwoMVA (until the track BDT can be used) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=0.75, prefix='TrigTauTightDZ_')) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to calo TES tools.append(taualgs.getEnergyCalibrationLC()) diff --git a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfigMT.py b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfigMT.py index 3eba0a9e3e0f4d882bb877bdd6469587b32c4de3..675072af2226e0ae88fd28ed38f59bd530a1422a 100644 --- a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfigMT.py +++ b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauRecConfigMT.py @@ -22,6 +22,9 @@ class TrigTauRecMerged_TauCaloOnly (TrigTauRecMergedMT) : tools.append(taualgs.getJetSeedBuilder()) # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger) tools.append(taualgs.getTauAxis()) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC(caloOnly=True)) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -55,6 +58,9 @@ class TrigTauRecMerged_TauCaloOnlyMVA (TrigTauRecMergedMT) : tools.append(taualgs.getJetSeedBuilder()) # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger) tools.append(taualgs.getTauAxis()) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC(caloOnly=True)) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -94,6 +100,9 @@ class TrigTauRecMerged_TauPreselection (TrigTauRecMergedMT) : # Insert bypass later? # Count tracks with deltaZ0 cut of 2mm for 2016 and 1mm for 2017-2018 (see ATR-15845) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=1, noSelector=False)) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC()) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -137,6 +146,9 @@ class TrigTauRecMerged_TauPrecision (TrigTauRecMergedMT) : tools.append(taualgs.getTauAxis()) # Count tracks with deltaZ0 cut of 2mm for 2016 and 1mm for 2017-2018 (see ATR-15845) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=1)) + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) # Calibrate to TES tools.append(taualgs.getEnergyCalibrationLC()) # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies @@ -201,6 +213,10 @@ class TrigTauRecMerged_TauPrecisionMVA (TrigTauRecMergedMT) : else: # tightened to 0.75 mm for tracktwoMVA (until the track BDT can be used) tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=0.75, prefix='TrigTauTightDZ_')) + + # Decorate the clusters + tools.append(taualgs.getTauClusterFinder()) + tools.append(taualgs.getTauVertexedClusterDecorator()) if doTrackBDT: # BDT track classification diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun2.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun2.py index cccc53d349e40c4ad9924664295b4828e3fa87d1..49fc8d4055ec35bfb6203266f31868754b6d6041 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun2.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun2.py @@ -89,7 +89,7 @@ UnusedProperties = ["Likelihood", "SafeLikelihood", "BDTEleScore", "BDTJetScoreS "vetoFlags", "isTauFlags", "trackFlags", "trackFilterProngs", "trackFilterQuality", "trackEtaStrip", "trackPhiStrip", "TauJetVtxFraction", "LeadClusterFrac", "UpsilonCluster", "ClustersMeanSecondLambda", "ClustersMeanEMProbability", "ClustersMeanCenterLambda", "ClustersMeanPresamplerFrac", "mu", "nVtxPU", "ClustersMeanFirstEngDens", "nModifiedIsolationTracks", - "NUMWIDETRACK", "NUMTRACK", "MU", "absipSigLeadTrk" ] + "NUMWIDETRACK", "NUMTRACK", "MU", "absipSigLeadTrk", "VertexedClusters" ] UnusedFourMom = ["ptIntermediateAxis", "etaIntermediateAxis", "phiIntermediateAxis", "mIntermediateAxis", "ptTauEtaCalib", "etaTauEtaCalib", "phiTauEtaCalib", "mTauEtaCalib", "EM_TES_scale"]