diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h index 85edf36a9dcd758ad8c97ce5e52ce39baad3dbb1..5626bf8d5b90c37dcaa40704d69aace3d9bf3895 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/HelperFunctions.h @@ -1,13 +1,10 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_TOOL_HELPERFUNCTIONS #define PANTAUALGS_TOOL_HELPERFUNCTIONS -//#include "NavFourMom/INavigable4MomentumCollection.h" - - #include <string> #include <iostream> @@ -49,9 +46,6 @@ namespace PanTau { virtual std::string convertNumberToString(double x) const; - // Will: moved to TauPi0ClusterScaler - //void vertexCorrection_PFOs(const xAOD::TauJet* tauJet, xAOD::PFO* efo) const; - virtual int getBinIndex(std::vector<double> binEdges, double value) const; virtual double stddev(double sumOfSquares, double sumOfValues, int numConsts) const; @@ -60,10 +54,6 @@ namespace PanTau { virtual int iPow(int man, int exp) const; virtual double ulAngle(double x, double y) const; virtual double sign(double a, double b) const; - virtual std::vector<double> calcThrust(std::vector<TauConstituent2*>* tauConstituents, bool& calcIsValid) const; - virtual void ludbrb(TMatrix* mom, double the, double phi, double bx, double by, double bz) const; - virtual std::vector<double> calcFWMoments(std::vector<TauConstituent2*>* tauConstituents, bool& calcIsValid) const; - virtual std::vector<double> calcSphericity(std::vector<TauConstituent2*>* tauConstituents, bool& calcIsValid) const; #ifdef XAOD_ANALYSIS template<class T> diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InformationStore.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InformationStore.h index c784105bfffc724e9ea690b77bd2fe8f78757b83..cdea76fba2a53bb67b734cc581b876cc3b025bf5 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InformationStore.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InformationStore.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_ITOOL_INFORMATIONSTORE_H @@ -9,22 +9,6 @@ #include <string> -//class eflowObjectContainer; - -// namespace Analysis { -// class TauJetContainer; -// class TauDetailsContainer; -// } - -//! xAOD EDM -/* -#include "xAODTau/TauJetContainer.h" - -namespace Rec { - class TrackParticleContainer; -} -*/ - namespace PanTau { @@ -56,19 +40,11 @@ namespace PanTau { virtual inline void setMapVecDouble( MapVecDouble &v ) = 0 ; #endif - //virtual StatusCode updateInformation(std::string inputAlg) = 0; virtual StatusCode getInfo_Int(std::string varName, int& value) = 0; virtual StatusCode getInfo_Double(std::string varName, double& value) = 0; virtual StatusCode getInfo_VecDouble(std::string varName, std::vector<double>& value) = 0; virtual StatusCode getInfo_String(std::string varName, std::string& value) = 0; virtual StatusCode getInfo_VecString(std::string varName, std::vector<std::string>& value) = 0; - - virtual StatusCode dumpMaps() const = 0; - - /* - virtual const xAOD::TauJetContainer* getContainer_TauRec() const = 0; - virtual const Rec::TrackParticleContainer* getContainer_TrackParticle() const = 0; - */ }; } diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InputConverter.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InputConverter.h index f3bf17a097080f2b190bf49d7768c6482a02b829..ad85559cfda032a6e746887c9a15263e71412f40 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InputConverter.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_InputConverter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_ITOOL_INPUTCONVERTER_H @@ -19,13 +19,6 @@ namespace PanTau{ class TauConstituent2; } -//class eflowObject; - -//namespace Analysis { -// class TauPi0Cluster; -// class TauJet; -//} - namespace Rec { class TrackParticle; } @@ -49,15 +42,10 @@ namespace PanTau { virtual bool isInitialized() = 0; - //PFO Converter (r19+) - virtual StatusCode ConvertToTauConstituent2(xAOD::PFO* pfo, - PanTau::TauConstituent2* &tauConstituent, - const xAOD::TauJet* tauJet) const = 0; - -// virtual bool passesPreselectionEnergy(double itsEnergy) const = 0; - - //cluster based converter -// virtual StatusCode ConvertToTauConstituent2(eflowObject* efo, TauConstituent2* &tauConstituent) const; + //PFO Converter (r19+) + virtual StatusCode ConvertToTauConstituent2(xAOD::PFO* pfo, + PanTau::TauConstituent2* &tauConstituent, + const xAOD::TauJet* tauJet) const = 0; }; diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_ModeDiscriminator.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_ModeDiscriminator.h index 51306466e81035834011ca30913e59f0846161f6..49f23f34fb898dd8c912f938f87ebf9d7d6c01d2 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_ModeDiscriminator.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_ModeDiscriminator.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_ITOOL_MODEDISCRIMINATOR_H @@ -29,8 +29,7 @@ namespace PanTau { public: virtual bool isInitialized() = 0; - //virtual double getModeLikeliness(PanTau::PanTauSeed2* inSeed, bool& wasSuccessful) = 0; - virtual double getResponse(PanTau::PanTauSeed2* inSeed, bool& isOK) = 0; + virtual double getResponse(PanTau::PanTauSeed2* inSeed, bool& isOK) = 0; }; } diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentGetter.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentGetter.h index 7dd7b72fe4e04678552fb47285843251eca4226c..7fc2f70ed1fd3b2e667fb1d56dee1ba17acb46d2 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentGetter.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentGetter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_ITOOL_TAUCONSTITUENTGETTER_H @@ -14,9 +14,6 @@ namespace PanTau{ class TauConstituent2; } -//namespace Analysis { -// class TauJet; -//} #include "xAODTau/TauJet.h" namespace PanTau { @@ -35,8 +32,7 @@ namespace PanTau { public: virtual bool isInitialized() = 0; - virtual StatusCode GetTauConstituents(//const Analysis::TauJet*, - const xAOD::TauJet* tauJet, + virtual StatusCode GetTauConstituents(const xAOD::TauJet* tauJet, std::vector<TauConstituent2*>& outputList, std::string algName) const = 0; diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentSelector.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentSelector.h index c9b53606f1b5e91564ba0c6806d0f18c1b774de8..c6a932cc2df770feae07b38455005de3ba5e684f 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentSelector.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/ITool_TauConstituentSelector.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_ITOOL_TAUCONSTITUENTSELECTOR_H @@ -28,16 +28,6 @@ namespace PanTau { virtual bool isInitialized() = 0; virtual StatusCode SelectTauConstituents(std::vector<TauConstituent2*> inputList, std::vector<TauConstituent2*>& outputList) const = 0; - protected: -// virtual bool passesSelection_NeutralConstituent(TauConstituent2* tauConstituent) const = 0; -// virtual bool passesSelection_Pi0NeutConstituent(TauConstituent2* tauConstituent) const = 0; -// virtual bool passesSelection_ChargedConstituent(TauConstituent2* tauConstituent) const = 0; -// virtual bool passesSelection_OutNeutConstituent(TauConstituent2* TauConstituent) const = 0; -// virtual bool passesSelection_OutChrgConstituent(TauConstituent2* TauConstituent) const = 0; -// virtual bool passesSelection_NeutLowAConstituent(TauConstituent2* TauConstituent) const = 0; -// virtual bool passesSelection_NeutLowBConstituent(TauConstituent2* TauConstituent) const = 0; - -// virtual double getEtCut(double eta, PanTau::TauConstituent2::Type constituentType) const = 0; }; } diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h index be68c66188590b84ac3da434872163365d54cd62..7a82b30ff0b93ca8bbaf6c814e831b0e4855aeb1 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -26,10 +26,6 @@ #include "PanTauAlgs/ITool_DetailsArranger.h" #include "PanTauAlgs/ITool_PanTauTools.h" -//#include "PanTauAlgs/PanTauSeedContainer.h" - - - namespace PanTau { @@ -47,7 +43,6 @@ namespace PanTau { public: - // as in https://svnweb.cern.ch/trac/atlasoff/browser/Reconstruction/tauRecTools/trunk/tauRecTools/TauCalibrateLC.h ASG_TOOL_CLASS2( PanTauProcessor, TauRecToolBase, ITauToolBase ) PanTauProcessor(const std::string& name); @@ -57,12 +52,8 @@ namespace PanTau virtual StatusCode finalize(); virtual StatusCode executePanTau(xAOD::TauJet& pTau, xAOD::ParticleContainer& pi0Container); - virtual void print() const { } - private: - //mutable MsgStream m_log; - std::string m_Name_InputAlg; //Tools used in seed building @@ -84,8 +75,6 @@ namespace PanTau //Tools used in seed finalizing std::string m_Tool_DecayModeDeterminatorName; std::string m_Tool_DetailsArrangerName; - - std::vector<double> m_Config_PtBins; double m_Config_MinPt; diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauClassificationTypes.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauClassificationTypes.h index a55c98ba93f856d534a9737593e2e20461084c38..79ee876cbd48ee34d9f977c4a77f80d774fa9156 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauClassificationTypes.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauClassificationTypes.h @@ -1,11 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// TauClassificationTypes.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGS_TAUCLASSIFICATIONTYPES_H #define PANTAUALGS_TAUCLASSIFICATIONTYPES_H @@ -55,14 +51,6 @@ namespace PanTau { Reco_nModes = 8 }; -// enum CandTauType { -// TauRecBoth=0, -// TauRecBothMissing=1, -// TauRec=2, -// Tau1p3p=3, -// NumberOfCandTauTypes=4 -// }; - inline std::string getRecoModeName(PanTauRecoMode recoMode) { switch(recoMode) { case Reco_1prong_0neutrals: return "1p0n"; diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauFeature.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauFeature.h index 3ee792e90598d255cf02e3b74af37bbfb8d42761..31d06e93cb2c4bd4ce35e3a9e64a4c59ef94c010 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauFeature.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/TauFeature.h @@ -1,15 +1,10 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// TauFeature.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGSTAUFEATURE_H #define PANTAUALGSTAUFEATURE_H - #include <string> #include <map> #include <vector> @@ -24,12 +19,6 @@ namespace PanTau { class TauFeature2 { -//struct cmp_fn { -//bool operator()(const std::string& s1, const std::string& s2) const { -//return (s1 < s2); -//} -//}; -//typedef std::map<std::string, double, cmp_fn> FeatureMap; typedef std::map<std::string, double> FeatureMap; typedef FeatureMap::iterator FeatureMapIter; typedef FeatureMap::const_iterator FeatureMapConstIter; @@ -40,21 +29,6 @@ typedef VectorFeatureMap::const_iterator VectorFeatureMapConstIter; public: /** Default constructor */ TauFeature2(); - /** Copy Constructor */ - //TauFeature2(const TauFeature& feature); -// /** Assignment operator */ -// TauFeature& operator=(const TauFeature& seed); - -// /** -// * Full constructor. -// * -// * @param[in] name name of the feature -// * @param[in] value value of the feature -// */ -// TauFeature2( -// const std::string& name, -// const double& value -// ); /** Destructor */ virtual ~TauFeature2(); @@ -86,12 +60,6 @@ public: void addFeaturesFromMap(std::map<std::string, double>, std::string prefix); - /* - std::ostream& operator<< ( std::ostream& out, - xAOD::FileMetaData_v1::MetaDataType type ); - //MsgStream& dump( MsgStream& out, MSG::Level debugLevel ) const; - */ - protected: /** The map containg all features */ @@ -104,8 +72,4 @@ protected: } -/**Overload of << operator for MsgStream for debug output*/ -// inline MsgStream& operator << ( MsgStream& sl, const PanTau::TauFeature& feature) -// { return feature.dump(sl); } - #endif // PANTAUALGSTAUFEATURE_H diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DecayModeDeterminator.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DecayModeDeterminator.h index 05848d754db22503921b1f35b814202a58136ec1..482753e2932d7fa7b634a0255065f6c8e8df881a 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DecayModeDeterminator.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DecayModeDeterminator.h @@ -1,21 +1,10 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Header file for class TauImpactParameterExtractionTool -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool to store information needed in PanTau Algorithms -/////////////////////////////////////////////////////////////////// -// limbach@physik.uni-bonn.de -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGS_TOOL_DECAYMODEDETERMINATOR_H #define PANTAUALGS_TOOL_DECAYMODEDETERMINATOR_H - //! C++ #include <vector> #include <string> @@ -58,7 +47,6 @@ namespace PanTau { virtual ~Tool_DecayModeDeterminator (); virtual StatusCode initialize(); -// virtual StatusCode finalize (); virtual StatusCode execute(PanTau::PanTauSeed2* inSeed); diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DetailsArranger.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DetailsArranger.h index e35028de8b72ffc4d1f72616ecf80ed50278bbe1..7357391431d6c4596346541e7f1a12a23a1952a5 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DetailsArranger.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_DetailsArranger.h @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Header file for class Tool_DetailsArranger -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool for PID of TauSeeds -/////////////////////////////////////////////////////////////////// -// sebastian.fleischmann@cern.ch -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGS_TOOL_DETAILSARRANGER_H #define PANTAUALGS_TOOL_DETAILSARRANGER_H @@ -24,7 +14,6 @@ //! xAOD EDM #include "xAODTau/TauJet.h" -// #include "xAODTau/TauDefs.h" //! PanTau #include "PanTauAlgs/ITool_DetailsArranger.h" @@ -39,11 +28,6 @@ namespace PanTau { class PanTauDetails; } -//namespace Analysis { -// class TauDetailsContainer; -//} - - namespace PanTau { /** @class Tool_DetailsArranger @@ -67,9 +51,8 @@ namespace PanTau { virtual ~Tool_DetailsArranger (); virtual StatusCode initialize(); -// virtual StatusCode finalize(); - virtual StatusCode execute(PanTau::PanTauSeed2* inSeed, xAOD::ParticleContainer& pi0Container);//, Analysis::TauDetailsContainer* detailsCont); + virtual StatusCode execute(PanTau::PanTauSeed2* inSeed, xAOD::ParticleContainer& pi0Container); protected: @@ -97,14 +80,8 @@ namespace PanTau { std::vector< ElementLink< xAOD::PFOContainer > > CollectConstituentsAsPFOLinks( PanTau::PanTauSeed2* inSeed, std::vector< ElementLink< xAOD::PFOContainer > > cellbased_neutralPFOLinks, PanTau::TauConstituent2::Type type ); - void createPi0Vectors(xAOD::TauJet* tauJet, std::vector<TLorentzVector>& vPi0s, std::vector< std::vector< ElementLink<xAOD::PFOContainer> > > &vec_pi0pfos); + void createPi0Vectors(xAOD::TauJet* tauJet, std::vector<TLorentzVector>& vPi0s, std::vector< std::vector< ElementLink<xAOD::PFOContainer> > > &vec_pi0pfos); - - /* std::vector<unsigned int> helper_IndicesOfNeutralsToBePi0(xAOD::TauJet* tauJet, */ - /* std::vector< ElementLink<xAOD::PFOContainer> > neutralPFOLinks, */ - /* int nMaxPi0s); */ - /* int helper_CopyNeutralsAndSetPi0(xAOD::TauJet* tauJet, int nMaxPi0s, bool isSpecialCase_1pXnTo1p1n); */ - bool m_expectInvalidFeatures; static const constexpr float MASS_PI0 = 134.98; // in MeV diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_FeatureExtractor.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_FeatureExtractor.h index 8e6a3eadbe59505ac98f6ecfac5c7495596831ad..d56a46f922e2d95dbaa4715cbdb6af5ec9640b7d 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_FeatureExtractor.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_FeatureExtractor.h @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Header file for class Tool_FeatureExtractor -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool to extract jet features from tau seeds -/////////////////////////////////////////////////////////////////// -// sebastian.fleischmann@cern.ch -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGS_TOOL_FEATUREEXTRACTOR_H #define PANTAUALGS_TOOL_FEATUREEXTRACTOR_H @@ -30,9 +20,6 @@ #include "PanTauAlgs/TauConstituent.h" #include "PanTauAlgs/TauFeature.h" -//#include "ITrackToVertex/ITrackToVertex.h" - - namespace PanTau { /** @class Tool_FeatureExtractor @@ -47,10 +34,7 @@ namespace PanTau { public: Tool_FeatureExtractor(const std::string &name); -// virtual ~Tool_FeatureExtractor (); virtual StatusCode initialize(); -// virtual StatusCode finalize (); - //get the features for an input seed virtual StatusCode execute(PanTau::PanTauSeed2* inSeed); @@ -62,7 +46,6 @@ namespace PanTau { PanTau::HelperFunctions m_HelperFunctions; ToolHandle<PanTau::ITool_InformationStore> m_Tool_InformationStore; std::string m_Tool_InformationStoreName; - //ToolHandle<Reco::ITrackToVertex> m_trackToVertexTool; //map containing different methods to calc seed et std::map<std::string, double> m_Variants_SeedEt; @@ -80,9 +63,6 @@ namespace PanTau { //Function to calculate features based on two sets of constituents StatusCode addCombinedFeatures(PanTau::PanTauSeed2* inSeed); - //Function to calculate generic jet features - StatusCode addGenericJetFeatures(PanTau::PanTauSeed2* inSeed) const; - //Function to add impact parameter features StatusCode addImpactParameterFeatures(PanTau::PanTauSeed2* inSeed) const; diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InformationStore.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InformationStore.h index 0488becdb03a78a39482f40c826422a1143eb277..fc3061aca17208397d90550299483b97c4f0cd87 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InformationStore.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InformationStore.h @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Header file for class Tool_InformationStore -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool to store information needed in PanTau Algorithms -/////////////////////////////////////////////////////////////////// -// limbach@physik.uni-bonn.de -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGS_TOOL_INFORMATIONSTORE_H #define PANTAUALGS_TOOL_INFORMATIONSTORE_H @@ -37,9 +27,6 @@ namespace PanTau { ASG_TOOL_CLASS1(Tool_InformationStore, PanTau::ITool_InformationStore) - - - public: #ifdef XAOD_ANALYSIS @@ -55,7 +42,6 @@ namespace PanTau { virtual void ABRDefaultInit(); virtual StatusCode initialize(); -// virtual StatusCode finalize (); virtual StatusCode getInfo_Int(std::string varName, int& value); virtual StatusCode getInfo_Double(std::string varName, double& value); @@ -63,8 +49,6 @@ namespace PanTau { virtual StatusCode getInfo_String(std::string varName, std::string& value); virtual StatusCode getInfo_VecString(std::string varName, std::vector<std::string>& value); - StatusCode dumpMaps() const; - private: diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InputConverter.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InputConverter.h index 9a34c2366b185946e6c0c49431172bfd2bb901b8..8de6c56ef1c95d27af832176d043f11dd69d316d 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InputConverter.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_InputConverter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_TOOL_INPUTCONVERTER @@ -42,7 +42,6 @@ namespace PanTau { virtual ~Tool_InputConverter (); virtual StatusCode initialize(); -// virtual StatusCode finalize(); virtual StatusCode ConvertToTauConstituent2(xAOD::PFO* pfo, PanTau::TauConstituent2* &tauConstituent, diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_ModeDiscriminator.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_ModeDiscriminator.h index 474c1a50c3a5988099ff81adf12b4d8fff35b3a7..4260c7f62a7042721fe15ca8538f039895117c6e 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_ModeDiscriminator.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_ModeDiscriminator.h @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Header file for class Tool_ModeDiscriminator -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool for PID of TauSeeds -/////////////////////////////////////////////////////////////////// -// sebastian.fleischmann@cern.ch -/////////////////////////////////////////////////////////////////// - #ifndef PANTAUALGS_TOOL_MODEDISCRIMINATOR_H #define PANTAUALGS_TOOL_MODEDISCRIMINATOR_H diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentGetter.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentGetter.h index 8cc5923aaf609a1a20c904c32eb1f479a6b9cc3c..9907d1f3e6b683488b5f996577f1e26e39aa949d 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentGetter.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentGetter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_TOOL_TAUCONSTITUENTGETTER @@ -21,10 +21,6 @@ //! xAOD EDM #include "xAODTau/TauJet.h" -//namespace Analysis { -// class TauJet; -//} - namespace PanTau { class TauConstituent2; } @@ -45,10 +41,8 @@ class Tool_TauConstituentGetter : public asg::AsgTool, virtual public PanTau::IT virtual ~Tool_TauConstituentGetter (); virtual StatusCode initialize(); -// virtual StatusCode finalize(); - virtual StatusCode GetTauConstituents(//const Analysis::TauJet*, - const xAOD::TauJet* tauJet, + virtual StatusCode GetTauConstituents(const xAOD::TauJet* tauJet, std::vector<TauConstituent2*>& outputList, std::string algName) const; diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentSelector.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentSelector.h index a66635e3590e2dd30dddcdea5619a8caf9705631..12ea31b764b292d0a71e61c7a4b836f1e11dcd46 100644 --- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentSelector.h +++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/Tool_TauConstituentSelector.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef PANTAUALGS_TOOL_TAUCONSTITUENTSELECTOR @@ -32,7 +32,6 @@ class Tool_TauConstituentSelector : public asg::AsgTool, virtual public PanTau:: virtual ~Tool_TauConstituentSelector (); virtual StatusCode initialize(); -// virtual StatusCode finalize(); virtual StatusCode SelectTauConstituents( std::vector<TauConstituent2*> inputList, std::vector<TauConstituent2*>& outputList) const; diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/HelperFunctions.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/HelperFunctions.cxx index d6129381b19b02856f91b1e233f354a3dfb4e847..4639241b16b2b7679d94073e502440cd758d3ed0 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/HelperFunctions.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/HelperFunctions.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -71,40 +71,6 @@ std::string PanTau::HelperFunctions::convertNumberToString(double x) const { } -// Will: moved to TauPi0ClusterScaler -// void PanTau::HelperFunctions::vertexCorrection_PFOs(const xAOD::TauJet* tauJet, xAOD::PFO* pfo) const{ -// -// const xAOD::Vertex* tauVertex = tauJet->vertexLink().cachedElement(); -// if(tauVertex == 0) { -// ATH_MSG_WARNING("Did not find tau origin. No vertex correction will be applied to neutral PFO"); -// return; -// } -// ATH_MSG_DEBUG("Vtx link x/y/z = " << tauVertex->x() << ", " << tauVertex->y() << ", " << tauVertex->z()); -// ATH_MSG_DEBUG("Old cluster eta/phi: " << pfo->eta() << ", " << pfo->phi() << " CenterMag = " << pfo->centerMag()); -// -// double clusterEta = pfo->eta(); -// double clusterPhi = pfo->phi(); -// double centerMag = pfo->centerMag(); -// -// double radius = centerMag/cosh(clusterEta); -// -// double EtaVertexCorr = 0.0; -// double PhiVertexCorr = 0.0; -// -// if (radius > 1.0 && centerMag > 1e-3){ -// EtaVertexCorr = (-tauVertex->z()/cosh(clusterEta) + (tauVertex->x()*cos(clusterPhi) + tauVertex->y()*sin(clusterPhi))*tanh(clusterEta))/radius; -// PhiVertexCorr = (tauVertex->x()*sin(clusterPhi) - tauVertex->y()*cos(clusterPhi))/radius; -// } -// -// clusterEta += EtaVertexCorr; -// clusterPhi += PhiVertexCorr; -// -// pfo->setP4(pfo->pt(), clusterEta, clusterPhi, pfo->m()); -// ATH_MSG_DEBUG("New cluster eta/phi: " << clusterEta << ", " << clusterPhi); -// } - - - int PanTau::HelperFunctions::getBinIndex(std::vector<double> binEdges, double value) const { int resBin = -1; for(unsigned int i=0; i<binEdges.size()-1; i++) { @@ -182,465 +148,3 @@ double PanTau::HelperFunctions::sign(double a, double b) const { return TMath::Abs(a); } } - - - -// JetProperties Thrust: code stolen from ftp://ftp.slac.stanford.edu/groups/lcd/Physics_tools/ (by M. Iwasaki) -std::vector<double> PanTau::HelperFunctions::calcThrust(std::vector<TauConstituent2*>* tauConstituents, bool& calcIsValid) const{ - TRandom random; - int maxpart = 1000; - double dDeltaThPower(0); - int iFast(4); - double dConv(0.0001); - int iGood(2); - TMatrix dAxes; - dAxes.ResizeTo(4, 4); - //To make this look like normal physics notation the - //zeroth element of each array, mom[i][0], will be ignored - //and operations will be on elements 1,2,3... - TMatrix mom(maxpart, 6); - Double_t tmax = 0; - Double_t phi = 0.; - Double_t the = 0.; - Double_t sgn; - TMatrix fast(iFast + 1, 6); - TMatrix work(11, 6); - Double_t tdi[4] = {0., 0., 0., 0.}; - Double_t tds; - Double_t tpr[4] = {0., 0., 0., 0.}; - Double_t thp; - Double_t thps; - TMatrix temp(3, 5); - Int_t np = 0; - - Double_t dThrust[4]; - - for (std::vector<TauConstituent2*>::iterator p4iter = tauConstituents->begin(); p4iter != tauConstituents->end(); p4iter++) { - TVector3 p = (*p4iter)->p4().Vect(); - - if (np >= maxpart) { - calcIsValid = false; - return std::vector<double>(0); - } - - mom(np, 1) = p.X(); - mom(np, 2) = p.Y(); - mom(np, 3) = p.Z(); - mom(np, 4) = p.Mag(); - - if (TMath::Abs(dDeltaThPower) <= 0.001) { - mom(np, 5) = 1.0; - } else { - mom(np, 5) = TMath::Power(mom(np, 4), dDeltaThPower); - } - tmax = tmax + mom(np, 4) * mom(np, 5); - np++; - } - if (np < 2) { - dThrust[1] = -1.0; - return std::vector<double>(0); - } - // for pass = 1: find thrust axis. - // for pass = 2: find major axis. - for (Int_t pass = 1; pass < 3; pass++) { - if (pass == 2) { - phi = ulAngle(dAxes(1, 1), dAxes(1, 2)); - ludbrb(&mom, 0, -phi, 0., 0., 0.); - for (Int_t i = 0; i < 3; i++) { - for (Int_t j = 1; j < 4; j++) { - temp(i, j) = dAxes(i + 1, j); - } - temp(i, 4) = 0; - } - ludbrb(&temp, 0., -phi, 0., 0., 0.); - for (Int_t ib = 0; ib < 3; ib++) { - for (Int_t j = 1; j < 4; j++) { - dAxes(ib + 1, j) = temp(ib, j); - } - } - the = ulAngle(dAxes(1, 3), dAxes(1, 1)); - ludbrb(&mom, -the, 0., 0., 0., 0.); - for (Int_t ic = 0; ic < 3; ic++) { - for (Int_t j = 1; j < 4; j++) { - temp(ic, j) = dAxes(ic + 1, j); - } - temp(ic, 4) = 0; - } - ludbrb(&temp, -the, 0., 0., 0., 0.); - for (Int_t id = 0; id < 3; id++) { - for (Int_t j = 1; j < 4; j++) { - dAxes(id + 1, j) = temp(id, j); - } - } - } - for (Int_t ifas = 0; ifas < iFast + 1 ; ifas++) { - fast(ifas, 4) = 0.; - } - // Find the iFast highest momentum particles and - // put the highest in fast[0], next in fast[1],....fast[iFast-1]. - // fast[iFast] is just a workspace. - for (Int_t i = 0; i < np; i++) { - if (pass == 2) { - mom(i, 4) = TMath::Sqrt(mom(i, 1) * mom(i, 1) - + mom(i, 2) * mom(i, 2)); - } - for (Int_t ifas = iFast - 1; ifas > -1; ifas--) { - if (mom(i, 4) > fast(ifas, 4)) { - for (Int_t j = 1; j < 6; j++) { - fast(ifas + 1, j) = fast(ifas, j); - if (ifas == 0) fast(ifas, j) = mom(i, j); - } - } else { - for (Int_t j = 1; j < 6; j++) { - fast(ifas + 1, j) = mom(i, j); - } - break; - } - } - } - // Find axis with highest thrust (case 1)/ highest major (case 2). - for (Int_t ie = 0; ie < work.GetNrows(); ie++) { - work(ie, 4) = 0.; - } - Int_t p = TMath::Min(iFast, np) - 1; - // Don't trust Math.pow to give right answer always. - // Want nc = 2**p. - Int_t nc = iPow(2, p); - for (Int_t n = 0; n < nc; n++) { - for (Int_t j = 1; j < 4; j++) { - tdi[j] = 0.; - } - for (Int_t i = 0; i < TMath::Min(iFast, n); i++) { - sgn = fast(i, 5); - if (iPow(2, (i + 1))*((n + iPow(2, i)) / iPow(2, (i + 1))) >= i + 1) { - sgn = -sgn; - } - for (Int_t j = 1; j < 5 - pass; j++) { - tdi[j] = tdi[j] + sgn * fast(i, j); - } - } - tds = tdi[1] * tdi[1] + tdi[2] * tdi[2] + tdi[3] * tdi[3]; - for (Int_t iw = TMath::Min(n, 9); iw > -1; iw--) { - if (tds > work(iw, 4)) { - for (Int_t j = 1; j < 5; j++) { - work(iw + 1, j) = work(iw, j); - if (iw == 0) { - if (j < 4) { - work(iw, j) = tdi[j]; - } else { - work(iw, j) = tds; - } - } - } - } else { - for (Int_t j = 1; j < 4; j++) { - work(iw + 1, j) = tdi[j]; - } - work(iw + 1, 4) = tds; - } - } - } - // Iterate direction of axis until stable maximum. - dThrust[pass] = 0; - thp = -99999.; - Int_t nagree = 0; - for (Int_t iw = 0; - iw < TMath::Min(nc, 10) && nagree < iGood; iw++) { - thp = 0.; - thps = -99999.; - while (thp > thps + dConv) { - thps = thp; - for (Int_t j = 1; j < 4; j++) { - if (thp <= 1E-10) { - tdi[j] = work(iw, j); - } else { - tdi[j] = tpr[j]; - tpr[j] = 0; - } - } - for (Int_t i = 0; i < np; i++) { - sgn = sign(mom(i, 5), - tdi[1] * mom(i, 1) + - tdi[2] * mom(i, 2) + - tdi[3] * mom(i, 3)); - for (Int_t j = 1; j < 5 - pass; j++) { - tpr[j] = tpr[j] + sgn * mom(i, j); - } - } - thp = TMath::Sqrt(tpr[1] * tpr[1] - + tpr[2] * tpr[2] - + tpr[3] * tpr[3]) / tmax; - } - // Save good axis. Try new initial axis until enough - // tries agree. - if (thp < dThrust[pass] - dConv) { - break; - } - if (thp > dThrust[pass] + dConv) { - nagree = 0; - sgn = iPow(-1, (Int_t)TMath::Nint(random.Rndm())); - for (Int_t j = 1; j < 4; j++) { - dAxes(pass, j) = sgn * tpr[j] / (tmax * thp); - } - dThrust[pass] = thp; - } - nagree = nagree + 1; - } - } - // Find minor axis and value by orthogonality. - sgn = iPow(-1, (Int_t)TMath::Nint(random.Rndm())); - dAxes(3, 1) = -sgn * dAxes(2, 2); - dAxes(3, 2) = sgn * dAxes(2, 1); - dAxes(3, 3) = 0.; - thp = 0.; - for (Int_t i = 0; i < np; i++) { - thp += mom(i, 5) * TMath::Abs(dAxes(3, 1) * mom(i, 1) + - dAxes(3, 2) * mom(i, 2)); - } - - if(tmax==0) { - calcIsValid = false; - return std::vector<double>(0); - } - - calcIsValid = true; - - dThrust[3] = thp / tmax; - - - // Rotate back to original coordinate system. - for (Int_t i6 = 0; i6 < 3; i6++) { - for (Int_t j = 1; j < 4; j++) { - temp(i6, j) = dAxes(i6 + 1, j); - } - temp(i6, 4) = 0; - } - ludbrb(&temp, the, phi, 0., 0., 0.); - for (Int_t i7 = 0; i7 < 3; i7++) { - for (Int_t j = 1; j < 4; j++) { - dAxes(i7 + 1, j) = temp(i7, j); - } - } - TVector3 thrustAxis(dAxes(1, 1), dAxes(1, 2), dAxes(1, 3)); - TVector3 majorAxis(dAxes(2, 1), dAxes(2, 2), dAxes(2, 3)); - std::vector<double> values(0); - values.push_back(dThrust[1]); - values.push_back(dThrust[2]); - values.push_back(dThrust[3]); - return values; -} - - - -// JetProperties ludbrb: This is used in calcThrust -void PanTau::HelperFunctions::ludbrb(TMatrix* mom, - double the, - double phi, - double bx, - double by, - double bz) const { - // Ignore "zeroth" elements in rot,pr,dp. - // Trying to use physics-like notation. - TMatrix rot(4, 4); - Double_t pr[4]; - Double_t dp[5]; - Int_t np = mom->GetNrows(); - if (the*the + phi*phi > 1.0E-20) { - rot(1, 1) = TMath::Cos(the) * TMath::Cos(phi); - rot(1, 2) = -TMath::Sin(phi); - rot(1, 3) = TMath::Sin(the) * TMath::Cos(phi); - rot(2, 1) = TMath::Cos(the) * TMath::Sin(phi); - rot(2, 2) = TMath::Cos(phi); - rot(2, 3) = TMath::Sin(the) * TMath::Sin(phi); - rot(3, 1) = -TMath::Sin(the); - rot(3, 2) = 0.0; - rot(3, 3) = TMath::Cos(the); - for (Int_t i = 0; i < np; i++) { - for (Int_t j = 1; j < 4; j++) { - pr[j] = (*mom)(i, j); - (*mom)(i, j) = 0; - } - for (Int_t jb = 1; jb < 4; jb++) { - for (Int_t k = 1; k < 4; k++) { - (*mom)(i, jb) = (*mom)(i, jb) + rot(jb, k) * pr[k]; - } - } - } - Double_t beta = TMath::Sqrt(bx * bx + by * by + bz * bz); - if (beta*beta > 1.0E-20) { - if (beta > 0.99999999) { - //send message: boost too large, resetting to <~1.0. - bx = bx * (0.99999999 / beta); - by = by * (0.99999999 / beta); - bz = bz * (0.99999999 / beta); - beta = 0.99999999; - } - Double_t gamma = 1.0 / TMath::Sqrt(1.0 - beta * beta); - for (Int_t i = 0; i < np; i++) { - for (Int_t j = 1; j < 5; j++) { - dp[j] = (*mom)(i, j); - } - Double_t bp = bx * dp[1] + by * dp[2] + bz * dp[3]; - Double_t gbp = gamma * (gamma * bp / (1.0 + gamma) + dp[4]); - (*mom)(i, 1) = dp[1] + gbp * bx; - (*mom)(i, 2) = dp[2] + gbp * by; - (*mom)(i, 3) = dp[3] + gbp * bz; - (*mom)(i, 4) = gamma * (dp[4] + bp); - } - } - } - return; -} - - - -// JetProperties FoxWolfram Moments: See here: http://cepa.fnal.gov/psm/simulation/mcgen/lund/pythia_manual/pythia6.3/pythia6301/node215.html -std::vector<double> PanTau::HelperFunctions::calcFWMoments(std::vector<TauConstituent2*>* tauConstituents, bool& calcIsValid) const{ - - const unsigned int nMomentsToCalc = 5; - std::vector<double> fwValues = std::vector<double>(nMomentsToCalc, -9.999); - - calcIsValid = true; - if(tauConstituents->size() == 0) { - calcIsValid = false; - return fwValues; - } - double jetE = 0.; - - for (std::vector<TauConstituent2*>::iterator p4iter1 = tauConstituents->begin(); p4iter1 != tauConstituents->end(); p4iter1++) { - TVector3 p1 = (*p4iter1)->p4().Vect(); - jetE += (*p4iter1)->p4().E(); - - for (std::vector<TauConstituent2*>::iterator p4iter2 = tauConstituents->begin(); p4iter2 != tauConstituents->end(); p4iter2++) { - - TVector3 p2 = (*p4iter2)->p4().Vect(); - - //find angle between vectors - double angle = (double) p1.Angle(p2) ; - - //new calculation - for(unsigned int iMoment=0; iMoment<nMomentsToCalc; iMoment++) { - if(p1.Mag() == 0) continue; //curMoment will be 0 and not change anything in this case - if(p2.Mag() == 0) continue; // - double curMoment = (p1.Mag() * p2.Mag() * ROOT::Math::legendre( iMoment, TMath::Cos(angle))); - fwValues[iMoment] += curMoment; - }//end loop over moments - }//end loop over second particle - }//end loop over first particle - - - if(jetE == 0) { - calcIsValid = false; - return fwValues; - } - - double jetE2 = (double)(jetE * jetE); - - //divide by squared jet energy - for(unsigned int iMom=0; iMom<nMomentsToCalc; iMom++) { - fwValues[iMom] = fwValues[iMom]/jetE2; - } - - //check if division by 0 will happen. if yes, set flag that calculation was not possible & return - // the returned values will not be used because the calcIsValid was set to false - if(fwValues[0] == 0) { - calcIsValid = false; - return fwValues; - } - - //normalize to 0th moment - for(unsigned int iMom=0; iMom<nMomentsToCalc; iMom++) { - fwValues[iMom] = fwValues[iMom]/fwValues[0]; - } - - return fwValues; -} - - - -//! ////////////////////////////////////////// -/// JetProperties: Sphericity -//! ////////////////////////////////////////// -std::vector<double> PanTau::HelperFunctions::calcSphericity(std::vector<TauConstituent2*>* tauConstituents, bool& calcIsValid) const{ - - double sphTensor[9]; - double norm = 0.; - for (unsigned int i = 0; i < 9;i++) { - sphTensor[i] = 0.; - } - - - for (std::vector<TauConstituent2*>::iterator p4iter = tauConstituents->begin(); p4iter != tauConstituents->end(); p4iter++) { - - sphTensor[0] += (*p4iter)->p4().Px() * (*p4iter)->p4().Px(); - sphTensor[1] += (*p4iter)->p4().Px() * (*p4iter)->p4().Py(); - sphTensor[2] += (*p4iter)->p4().Px() * (*p4iter)->p4().Pz(); - sphTensor[3] += (*p4iter)->p4().Py() * (*p4iter)->p4().Px(); - sphTensor[4] += (*p4iter)->p4().Py() * (*p4iter)->p4().Py(); - sphTensor[5] += (*p4iter)->p4().Py() * (*p4iter)->p4().Pz(); - sphTensor[6] += (*p4iter)->p4().Pz() * (*p4iter)->p4().Px(); - sphTensor[7] += (*p4iter)->p4().Pz() * (*p4iter)->p4().Py(); - sphTensor[8] += (*p4iter)->p4().Pz() * (*p4iter)->p4().Pz(); - - norm += (*p4iter)->p4().Vect() * (*p4iter)->p4().Vect(); - - } - - if(norm == 0) { - calcIsValid = false; - return std::vector<double>(0); - } - calcIsValid = true; - - for (int i = 0; i < 9 ; i++) { - sphTensor[i] = sphTensor[i] / norm; - } - - - //find eigenvalues - TMatrixDSym matrix(3); - matrix.SetMatrixArray(sphTensor); - - TMatrixDSymEigen eigen(matrix); - TVectorD E = eigen.GetEigenValues(); - - //get variables - double Emax = E[0]; - double Emin = E[0]; - int j = 0, k = 0; - for (int i = 0; i <= 2 ; ++i) { - if (E[i] > Emax) { - Emax = E[i]; - j = i; - } - if (E[i] < Emin) { - Emin = E[i]; - k = i; - } - } - - int l = 3 - j - k; - - - //sphericity: 3/2*(lamba2+lambda3) - double sph = Emax; - sph = 3. / 2. * (E[k] + E[l]); - - //aplanrity: 3/2*(lambda3) - double apl = 3. / 2. * E[k]; - - //planarity: lambda2-lambda3 - double pla = E[l] - E[k]; - - std::vector<double> values(0); - values.push_back(sph); - values.push_back(apl); - values.push_back(pla); - - return values; -} - - - - - diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/LinkDef.h b/Reconstruction/PanTau/PanTauAlgs/Root/LinkDef.h index e2d10831b81d4158757d814949b47b3d997aab7f..1a2f180e87a98885c7f643aff450f680b8b9a9bf 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/LinkDef.h +++ b/Reconstruction/PanTau/PanTauAlgs/Root/LinkDef.h @@ -1,10 +1,9 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "PanTauAlgs/PanTauSeed.h" #include "PanTauAlgs/TauClassificationTypes.h" -/* #include "PanTauAlgs/TauConstituent.h" */ #include "PanTauAlgs/TauFeature.h" #include "PanTauAlgs/ITool_PanTauTools.h" @@ -34,7 +33,6 @@ #pragma link C++ namespace PanTau; #pragma link C++ class PanTau::PanTauSeed2; -/* #pragma link C++ class PanTau::TauConstituent; */ #pragma link C++ class PanTau::TauFeature2; #pragma link C++ class PanTau::ITool_PanTauTools; @@ -58,6 +56,4 @@ #pragma link C++ enum PanTau::TauClassificationTypes::SeedTauType; #pragma link C++ enum PanTau::TauClassificationTypes::PanTauRecoMode; -//#pragma link C++ enum TauID::Types::MethodType; - #endif diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/PanTauProcessor.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/PanTauProcessor.cxx index 60168c8a08b4f51f5cfa6aac48eeb2706505c381..d63345115f9e66399d2c9f4e664737b962228ccb 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/PanTauProcessor.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/PanTauProcessor.cxx @@ -2,10 +2,6 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// PanTauProcessor.cxx, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - //! C++ includes #include <string> @@ -94,8 +90,6 @@ StatusCode PanTau::PanTauProcessor::initialize() { ATH_CHECK( m_Tool_DecayModeDeterminator.retrieve() ); ATH_CHECK( m_Tool_DetailsArranger.retrieve() ); - ATH_CHECK( m_Tool_InformationStore->dumpMaps() ); - ATH_CHECK( m_Tool_InformationStore->getInfo_VecDouble("ModeDiscriminator_BinEdges_Pt", m_Config_PtBins) ); m_Config_MinPt = m_Config_PtBins.front(); m_Config_MaxPt = m_Config_PtBins.back(); @@ -115,18 +109,11 @@ StatusCode PanTau::PanTauProcessor::finalize() { /// ////////////////////////////////////////////////////////// /// Execute /// ////////////////////////////////////////////////////////// -//StatusCode PanTau::PanTauProcessor::execute(xAOD::TauJet& pTau) { StatusCode PanTau::PanTauProcessor::executePanTau(xAOD::TauJet& pTau, xAOD::ParticleContainer& pi0Container) { - ATH_MSG_DEBUG("==========================================================="); - ATH_MSG_DEBUG("=== PanTau::PanTauProcessor --- Seed Creation ==="); - ATH_MSG_DEBUG("==========================================================="); - ATH_MSG_DEBUG("Executing PanTau::PanTauProcessor::execute() for input alg: " << m_Name_InputAlg); - //get the current TauJet xAOD::TauJet* curTauJet = &pTau; ATH_MSG_DEBUG("===> Tau: "); - //curTauJet->dump(); //check for null pointer if(curTauJet == 0) { @@ -203,42 +190,21 @@ StatusCode PanTau::PanTauProcessor::executePanTau(xAOD::TauJet& pTau, xAOD: l_List_SelectedTauConstituents, l_List_TauConstituents, pantauSeed_TechnicalQuality); - unsigned int nPi0LinksCellBased = curTauJet->protoPi0PFOLinks().size(); curPanTauSeed->makePrivateStore(); - ATH_MSG_DEBUG("Created new PanTauSeed2 at " << curPanTauSeed << " with proto mode " << curPanTauSeed->getDecayModeBySubAlg() << " and nPi0 CellBased = " << nPi0LinksCellBased); // Get the features for this PanTauSeed - ATH_MSG_DEBUG("Calculate features for this PanTauSeed"); ATH_CHECK(m_Tool_FeatureExtractor->execute(curPanTauSeed) ); - //ATH_MSG_VERBOSE("Dumping features of finalized PanTauSeed2 =========================================="); - //curPanTauSeed->getFeatures()->dump(m_log, MSG::VERBOSE); - //ATH_MSG_VERBOSE("Dumped features of finalized PanTauSeed2 ==========================================="); - - ATH_MSG_DEBUG("Finished adding input taus as PantauSeeds"); - - - - //! ======================================================================================= - //! Finalize the seeds - ATH_MSG_DEBUG("==========================================================="); - ATH_MSG_DEBUG("=== PanTau::PanTauProcessor --- Seed Finalization ==="); - ATH_MSG_DEBUG("==========================================================="); - // Seed finalizing: // 1. Pass the seed to the decay mode determination tool // 2. Pass the seed to the DetailsArranger tool to calculate the four momentum and add the details to tauJet // 1. call decay mode determinator for this seed - ATH_MSG_DEBUG("calling decay mode determinator for valid seed "); ATH_CHECK( m_Tool_DecayModeDeterminator->execute(curPanTauSeed) ); // 2. calculate the four momentum and link the details to the tauJet ATH_CHECK( m_Tool_DetailsArranger->execute(curPanTauSeed, pi0Container) ); - //that's it :) - ATH_MSG_DEBUG("PanTau::PanTauProcessor for input alg" << m_Name_InputAlg << " was successful!"); - delete curPanTauSeed; return StatusCode::SUCCESS; }//end of execute diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/PanTauSeed.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/PanTauSeed.cxx index 09744b3b12d1964f15e48bed5a9ab2f31cfa4321..b8217ea860dfc53a73040c84ee6fd1d06f2d34da 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/PanTauSeed.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/PanTauSeed.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "PanTauAlgs/PanTauSeed.h" @@ -78,10 +78,7 @@ PanTau::PanTauSeed2::PanTauSeed2(const PanTau::PanTauSeed2& rhs) m_DecayMode_BySubAlg(rhs.m_DecayMode_BySubAlg), m_DecayMode_ByPanTau(rhs.m_DecayMode_ByPanTau), m_decayModeHack_CellBasedShots(rhs.m_decayModeHack_CellBasedShots), - // is this not set on purpose? - //m_ProtoMomentum_Wide = seed.m_ProtoMomentum_Wide; - //m_ProtoMomentum_Core = seed.m_ProtoMomentum_Core; - //m_FinalMomentum = seed.m_FinalMomentum; + m_Features( (rhs.m_Features ? new PanTau::TauFeature2(*rhs.m_Features) : 0) ) { } @@ -109,10 +106,7 @@ PanTau::PanTauSeed2& PanTau::PanTauSeed2::operator=(const PanTau::PanTauSeed2& s m_ConstituentsList_AllSelected = seed.m_ConstituentsList_AllSelected; m_ConstituentsList_All = seed.m_ConstituentsList_All; m_decayModeHack_CellBasedShots = seed.m_decayModeHack_CellBasedShots; - // is this not set on purpose? - //m_ProtoMomentum_Wide = seed.m_ProtoMomentum_Wide; - //m_ProtoMomentum_Core = seed.m_ProtoMomentum_Core; - //m_FinalMomentum = seed.m_FinalMomentum; + if(m_Features) delete m_Features; m_Features = (seed.m_Features ? new PanTau::TauFeature2(*seed.m_Features) : 0); } @@ -271,7 +265,6 @@ PanTau::PanTauSeed2::PanTauSeed2( std::string nameIn if(curType == (int)PanTau::TauConstituent2::t_Pi0Neut) nPi0Neut++; if((unsigned int)curType >= m_Constituents.size()) { - //std::cout << "PanTau::PanTauSeed\tERROR\tMore types in TauConstituent2 than reserved in PanTau seed constituent matrix!" << std::endl; continue; } @@ -377,7 +370,6 @@ std::string PanTau::PanTauSeed2::getDecayModeName(int decayMode) { bool PanTau::PanTauSeed2::isOfTechnicalQuality(int pantauSeed_TechnicalQuality) const { if(pantauSeed_TechnicalQuality > PanTau::PanTauSeed2::t_nTechnicalQualities) { - //std::cout << "PanTauSeed\tERROR\tunknown technical quality value: " << pantauSeed_TechnicalQuality << ". Maximum allowed is " << PanTau::PanTauSeed2::t_nTechnicalQualities << "! Check PanTauAlgs/PanTauSeed.h" << std::endl; return false; } if(m_TechnicalQuality[pantauSeed_TechnicalQuality] == 1) return true; @@ -390,7 +382,6 @@ bool PanTau::PanTauSeed2::isOfTec std::vector<PanTau::TauConstituent2*> PanTau::PanTauSeed2::getConstituentsOfType(int tauConstituent_Type, bool& foundit) { if(tauConstituent_Type > PanTau::TauConstituent2::t_nTypes) { foundit = false; - //std::cout << "PanTauSeed\tERROR\tunknown constituent type: " << tauConstituent_Type << " -> it's larger than the known types: " << PanTau::TauConstituent2::t_nTypes << std::endl; return std::vector<TauConstituent2*>(0); } foundit = true; diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/TauFeature.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/TauFeature.cxx index d9f268b577877b9c23c52a7384ed08ef28f45634..e20077ab507134cb532dc3bc66cb135eeba4ed9d 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/TauFeature.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/TauFeature.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "PanTauAlgs/TauFeature.h" @@ -34,7 +34,6 @@ if(m_featureMap.end() == iter) { // not found isValid=false; - //std::cout << "Could not find key called '" << ItsName << "' in feature map. Either the spelling is wrong or the feature does not exist. Returning -999999." << std::endl; return -999999.; } // entry found, return value @@ -125,27 +124,3 @@ void PanTau::TauFeature2::addFeaturesFromMap(std::map<std::string, double> other return; } -/* -std::ostream& operator<< ( std::ostream& out, PanTau::TauFeature2 - xAOD::FileMetaData_v1::MetaDataType type ) { -MsgStream& PanTau::TauFeature2::dump( MsgStream& out, MSG::Level debugLevel = MSG::VERBOSE ) const -{ - std::string name("TauFeature2: "); - out << debugLevel << name << endmsg; - FeatureMapConstIter iter = m_featureMap.begin(); - FeatureMapConstIter iterEnd = m_featureMap.end(); - for ( ; iter!=iterEnd; iter++) { - out << debugLevel << (*iter).first << " : \t" << (*iter).second <<endmsg; - } - - std::string nameVec("TauVecFeature: "); - out << debugLevel << nameVec << endmsg; - VectorFeatureMapConstIter iterVec = m_vecFeatureMap.begin(); - VectorFeatureMapConstIter iterEndVec = m_vecFeatureMap.end(); - for ( ; iterVec!=iterEndVec; iterVec++) { - out << debugLevel << (*iterVec).first << " : \t" << (*iterVec).second.size() << " entries" <<endmsg; - } - return out; -} -*/ - diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DecayModeDeterminator.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DecayModeDeterminator.cxx index 229a2b0b86dad3cc006e46a02704e63f9567a8a0..84624acb99b25b683e963b30169c4298d54b1684 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DecayModeDeterminator.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DecayModeDeterminator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -43,7 +43,7 @@ PanTau::Tool_DecayModeDeterminator::~Tool_DecayModeDeterminator() { StatusCode PanTau::Tool_DecayModeDeterminator::initialize() { - ATH_MSG_INFO( name() << " initialize()" ); + m_init=true; ATH_CHECK( HelperFunctions::bindToolHandle(m_Tool_InformationStore, m_Tool_InformationStoreName) ); @@ -72,23 +72,11 @@ StatusCode PanTau::Tool_DecayModeDeterminator::initialize() { -// StatusCode PanTau::Tool_DecayModeDeterminator::finalize() { -// StatusCode sc = AlgTool::finalize(); -// return sc; -// } - - - - - StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSeed) { - - ATH_MSG_DEBUG("determine DecayMode for inSeed at " << inSeed); std::string inAlgName = inSeed->getNameInputAlgorithm(); PanTau::TauFeature2* features = inSeed->getFeatures(); - //check for invalid input seed bool noValidInput = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoValidInputTau); bool noAnyConstituents = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoConstituentsAtAll); @@ -129,8 +117,6 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe BDTCutValue_R3XX = m_BDTCutValue_R3XX_CellBased; //based on the subAlg decay mode, pass to corresponding PanTau BDT... - ATH_MSG_DEBUG("The subalg mode is set by nChrg/nPi0Neut/nAddNeut = " << nCharged_SubAlg << " / " << nPi0Neut_SubAlg << " / " << AdditionalNeutrals << " to " << decayMode_SubAlg << " - " << PanTau::PanTauSeed2::getDecayModeName(decayMode_SubAlg)); - double bdtResponse = -5; DecayModeTest bdtTest = t_UnknownTest; // 1p0n mode @@ -139,21 +125,12 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe //1 prong, and no other objects at all -> use 1p0n if(AdditionalNeutrals == 0) { - ATH_MSG_DEBUG("Set 1p0n because there is only one object"); decayMode_PanTau = xAOD::TauJetParameters::Mode_1p0n; decayMode_PanTauExtended = PanTau::PanTauSeed2::t_ExtMode100; bdtResponse = -3.; //if there are neutrals which are not pi0-tagged, check BDT to maybe set 1p1n } else { - /* - // simplify this code to: - bdtTest = t_1p0n_vs_1p1n; - ATH_MSG_DEBUG("Entering bdtTest " << bdtTest); - decayMode_PanTau=GetPanTauDecayMode(inSeed, m_Tool_ModeDiscriminator_1p0n_vs_1p1n, BDTCutValue_R10X, bdtResponse); - - int GetPanTauDecayMode(PanTauSeed2* inSeed, ToolHandle<PanTau::ITool_ModeDiscriminator> tool_ModeDiscriminator, int decayMode_SubAlg, double BDTCutValue, double &bdtResponse){ - */ bool isOK = false; bdtResponse = m_Tool_ModeDiscriminator_1p0n_vs_1p1n->getResponse(inSeed, isOK); @@ -173,12 +150,9 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe } } - ATH_MSG_DEBUG("SubAlgMode " << decayMode_SubAlg << ". Chrg/Neut: " << nCharged_SubAlg << " / " << nPi0Neut_SubAlg << ". Mode set to: " << decayMode_PanTau << " - " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau)); - }//end 1p0n - //1p1n mode else if (decayMode_SubAlg == xAOD::TauJetParameters::Mode_1p1n) { @@ -199,7 +173,6 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe if(bdtResponse > BDTCutValue_R110) { decayMode_PanTau = xAOD::TauJetParameters::Mode_1p0n; } - ATH_MSG_DEBUG("R110: Response is: " << bdtResponse << " Use 1p0n if > " << BDTCutValue_R110 << " -- decision: " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau) ); } @@ -220,11 +193,9 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe if(bdtResponse <= BDTCutValue_R11X) { decayMode_PanTau = xAOD::TauJetParameters::Mode_1pXn; } - ATH_MSG_DEBUG("R11X: Response is: " << bdtResponse << " Use 1p1n if > " << BDTCutValue_R11X << " -- decision: " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau) ); } } - ATH_MSG_DEBUG("SubAlgMode " << decayMode_SubAlg << ". Chrg/Neut: " << nCharged_SubAlg << " / " << nPi0Neut_SubAlg << ". Mode set to: " << decayMode_PanTau << " - " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau)); }//end 1p1n @@ -247,10 +218,8 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe if(bdtResponse <= BDTCutValue_R1XX) { decayMode_PanTau = xAOD::TauJetParameters::Mode_1pXn; } - ATH_MSG_DEBUG("R1XX: Response is: " << bdtResponse << " Use 1p1n if > " << BDTCutValue_R1XX << " -- decision: " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau) ); } - ATH_MSG_DEBUG("SubAlgMode " << decayMode_SubAlg << ". Chrg/Neut: " << nCharged_SubAlg << " / " << nPi0Neut_SubAlg << ". Mode set to: " << decayMode_PanTau << " - " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau)); }//end 1pXn @@ -260,7 +229,6 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe //no additional neutrals. if(AdditionalNeutrals == 0) { - ATH_MSG_DEBUG("Set 3p0n because there are only charged objects"); decayMode_PanTau = xAOD::TauJetParameters::Mode_3p0n; decayMode_PanTauExtended = PanTau::PanTauSeed2::t_ExtMode300; bdtResponse = -2.5; @@ -310,17 +278,14 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe if(bdtResponse <= BDTCutValue_R3XX) { decayMode_PanTau = xAOD::TauJetParameters::Mode_3pXn; } - ATH_MSG_DEBUG("R3XX: Response is: " << bdtResponse << " Use 3p0n if > " << BDTCutValue_R3XX << " -- decision: " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau) ); } - ATH_MSG_DEBUG("SubAlgMode " << decayMode_SubAlg << ". Chrg/Neut: " << nCharged_SubAlg << " / " << nPi0Neut_SubAlg << ". Mode set to: " << decayMode_PanTau << " - " << PanTau::PanTauSeed2::getDecayModeName(decayMode_PanTau)); } //end 3pXn //it's none of 1p0n, 1p1n, 1pXn, 3p0n, 3pXn -> set other mode else { - ATH_MSG_DEBUG("WARNING SubAlg mode of tau is not known. set the 'other' mode"); decayMode_PanTau = xAOD::TauJetParameters::Mode_Other; decayMode_PanTauExtended = PanTau::PanTauSeed2::t_ExtModeOther; bdtResponse = -4; @@ -337,18 +302,17 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe // this overrides Pantau BDT 1p1n decision in the following case: // if cell based counted 1 charged, 1 pi0neut, and number of hits in EM1 for the pi0neut is 3 or larger, set 1pXn; if(nCharged_SubAlg == 1 && nPi0Neut_SubAlg == 1) { - ATH_MSG_DEBUG("CellBased decay mode 1p1n and a single neutral cluster - check for number of photons in cluster: if >2 then set decay mode 1pXn"); //check for shots in EM1 bool isOK = false; PanTau::TauConstituent2* pi0Neut = inSeed->getConstituentsOfType(PanTau::TauConstituent2::t_Pi0Neut, isOK).at(0); if(isOK == true) { double nPhotons = 0; std::vector<PanTau::TauConstituent2*> shots = pi0Neut->getShots(); - ATH_MSG_DEBUG("There are " << shots.size() << " shots in the pi0 Neutral"); + for(unsigned int iShot=0; iShot<shots.size(); iShot++) { nPhotons = nPhotons + (double)(shots.at(iShot)->getNPhotonsInShot()); } - ATH_MSG_DEBUG("Counted " << nPhotons << " photons in the pi0 neutral"); + if(nPhotons > 2) { decayMode_SubAlg = xAOD::TauJetParameters::Mode_1pXn; decayMode_PanTau = xAOD::TauJetParameters::Mode_1pXn; @@ -364,7 +328,6 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe } //end hack check for 1p1n //update mode of seed and store in features - ATH_MSG_DEBUG("Storing decay mode in tau and features: SubAlg/PanTau = " << (double)decayMode_SubAlg << " / " << (double)decayMode_PanTau); inSeed->setDecayModeByPanTau(decayMode_PanTau); features->addFeature(inAlgName + "_" + m_varTypeName_Prefix_Basic + "_RecoMode", (double)decayMode_SubAlg); features->addFeature(inAlgName + "_" + m_varTypeName_Prefix_Basic + "_RecoMode_PanTau", (double)decayMode_PanTau); @@ -395,8 +358,7 @@ StatusCode PanTau::Tool_DecayModeDeterminator::execute(PanTau::PanTauSeed2* inSe features->addFeature(inAlgName + "_" + m_varTypeName_Prefix_Basic + "_BDTValue_3p0n_vs_3pXn", -5.); } - return StatusCode::SUCCESS; - + return StatusCode::SUCCESS; } diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DetailsArranger.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DetailsArranger.cxx index 1e774a77737c343bb6157e9d71547ae0a941ae65..8186e9f4dac4c96a36a620000bb15f650ffe9e77 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DetailsArranger.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_DetailsArranger.cxx @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Implementation file for class Tool_DetailsArranger -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool for PID of TauSeeds -/////////////////////////////////////////////////////////////////// -// sebastian.fleischmann@cern.ch -/////////////////////////////////////////////////////////////////// - //! C++ #include <string> #include <vector> @@ -53,7 +43,6 @@ PanTau::Tool_DetailsArranger::~Tool_DetailsArranger() { StatusCode PanTau::Tool_DetailsArranger::initialize() { - ATH_MSG_DEBUG( name() << " initialize()" ); m_init=true; ATH_CHECK( HelperFunctions::bindToolHandle( m_Tool_InformationStore, m_Tool_InformationStoreName ) ); @@ -87,9 +76,6 @@ StatusCode PanTau::Tool_DetailsArranger::execute(PanTau::PanTauSeed2* inSeed, xA std::string inputAlg = inSeed->getNameInputAlgorithm(); - - ATH_MSG_DEBUG("Tool_DetailsArranger::execute called for input seed at: " << inSeed << " from inputalg: " << inputAlg); - bool noAnyConstituents = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoConstituentsAtAll); bool noSelConstituents = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoSelectedConstituents); bool noValidInputTau = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoValidInputTau); @@ -101,19 +87,14 @@ StatusCode PanTau::Tool_DetailsArranger::execute(PanTau::PanTauSeed2* inSeed, xA //if the tau is valid, overwrite with non-default values xAOD::TauJet* tauJet = const_cast<xAOD::TauJet*>(inSeed->getTauJet()); - ATH_MSG_DEBUG("check for bad seed -> isBadSeed = " << isBadSeed); if(isBadSeed == true) { ATH_MSG_DEBUG("This seed is not useable for detail arranging (other than validity flag)"); tauJet->setPanTauDetail(xAOD::TauJetParameters::PanTau_isPanTauCandidate, 0); return StatusCode::SUCCESS; } - - ATH_MSG_DEBUG("arrange for seed from inputalg: " << inputAlg); - ATH_CHECK(arrangePFOLinks(inSeed, tauJet, pi0Container)); - //Basic variables addPanTauDetailToTauJet(inSeed, m_varTypeName_Basic + "_isPanTauCandidate", xAOD::TauJetParameters::PanTau_isPanTauCandidate, PanTau::Tool_DetailsArranger::t_Int); addPanTauDetailToTauJet(inSeed, m_varTypeName_Basic + "_RecoMode_PanTau", xAOD::TauJetParameters::PanTau_DecayMode, PanTau::Tool_DetailsArranger::t_Int); @@ -159,7 +140,6 @@ void PanTau::Tool_DetailsArranger::addPanTauDetailToTauJet(PanTauSeed2* xAOD::TauJetParameters::PanTauDetails detailEnum, PanTauDetailsType detailType) const { - ATH_MSG_DEBUG( "addPanTauDetailToTauJet called for feature of type " << detailType << ": " << featName); bool isValid; PanTau::TauFeature2* features = inSeed->getFeatures(); std::string fullFeatName = inSeed->getNameInputAlgorithm() + "_" + featName; @@ -176,21 +156,17 @@ void PanTau::Tool_DetailsArranger::addPanTauDetailToTauJet(PanTauSeed2* theValue = -1111; } - ATH_MSG_DEBUG( "the value is" << theValue); - xAOD::TauJet* tauJet = const_cast<xAOD::TauJet*>(inSeed->getTauJet()); int valueToAddInt = -1; float valueToAddFloat = -1.1; - ATH_MSG_DEBUG( "will add it to xAOD::TauJet at " << tauJet); + switch(detailType) { case PanTau::Tool_DetailsArranger::t_Int: valueToAddInt = (int)theValue; - ATH_MSG_DEBUG( "Adding int feature: " << valueToAddInt); tauJet->setPanTauDetail(detailEnum, valueToAddInt); break; case PanTau::Tool_DetailsArranger::t_Float: valueToAddFloat = (float)theValue; - ATH_MSG_DEBUG( "Adding float feature: " << valueToAddFloat); tauJet->setPanTauDetail(detailEnum, valueToAddFloat); break; default: @@ -237,16 +213,6 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in tauJet->setDetail(xAOD::TauJetParameters::nCharged, (int)chrgPFOLinks.size()); - - ATH_MSG_DEBUG("Dumping preselected neutral pfo links"); - for(unsigned int iPFO=0; iPFO<preSelected_neutralPFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = preSelected_neutralPFOLinks.at(iPFO).cachedElement(); - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0Proto attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score() ); - } - //arrange pi0 pfos: depends on decay mode classification int decayModeProto = inSeed->getDecayModeBySubAlg(); int decayModeFinal = inSeed->getDecayModeByPanTau(); @@ -258,33 +224,8 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in return StatusCode::SUCCESS; } - ATH_MSG_DEBUG("Before re-linking: DecayMode Proto / Final: " << decayModeProto << " / " << decayModeFinal); - ATH_MSG_DEBUG("Number of chrg, pi0, neut PFOs in subAlg: " << chrgPFOLinks.size() << ", " << pi0PFOLinks.size() << ", " << neutralPFOLinks.size()); - ATH_MSG_DEBUG("Number of pi0 PFOs in PanTau: " << preLinkPi0PFOLinks.size()); - - //#ifndef NDEBUG - ATH_MSG_DEBUG("Dumping pi0 pfos for subalg"); - for(unsigned int iPFO=0; iPFO<pi0PFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = pi0PFOLinks.at(iPFO).cachedElement(); - - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0Proto attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score()); - } - ATH_MSG_DEBUG("Dumping neutral pfos for subalg"); - for(unsigned int iPFO=0; iPFO<neutralPFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = neutralPFOLinks.at(iPFO).cachedElement(); - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0Proto attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score() ); - } - //#endif //NDEBUG - //if pantau sets the same decay mode as the substructure algorithm, just copy the links if(decayModeProto == decayModeFinal) { - ATH_MSG_DEBUG("Modes are the same"); if( decayModeFinal == xAOD::TauJetParameters::Mode_3pXn && pi0PFOLinks.size() > 1 ){ @@ -307,10 +248,6 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in } else { - // ***** - // if(preSelected_neutralPFOLinks.size() > 0) are not necessary! - // ***** - if( decayModeFinal == xAOD::TauJetParameters::Mode_1p1n && decayModeProto == xAOD::TauJetParameters::Mode_1p0n ){ // add the highest BDT-score neutral from the sub-alg: @@ -329,10 +266,6 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in if( pi0PFOLinks.size() == 1 && HasMultPi0sInOneCluster(pi0PFOLinks.at(0).cachedElement(), decayModeProto, inputAlg) ){ - // ATH_MSG_WARNING("RecalculatePantauConstituents: Inconsistent decay mode classification! (wasAlteredByCellBasedShots=true although decay mode = " << decayModeFinal); - // tauJet->setPi0PFOLinks(pi0PFOLinks); - // return StatusCode::SUCCESS; - // } // assign twice the pi0 mass to the one pi0 PFO: SetNeutralConstituentVectorMasses(pi0PFOLinks, 2*MASS_PI0); @@ -381,84 +314,18 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in tauJet->setPi0PFOLinks(preLinkPi0PFOLinks); - - - ATH_MSG_DEBUG("Done setting links"); - ATH_MSG_DEBUG("DecayMode Proto / Final: " << decayModeProto << " / " << decayModeFinal); - ATH_MSG_DEBUG("Number of chrg, pi0, neut PFOs in subAlg: " << chrgPFOLinks.size() << ", " << pi0PFOLinks.size() << ", " << neutralPFOLinks.size()); - - SetHLVTau(inSeed, tauJet, inputAlg, m_varTypeName_Basic); -// PanTau::TauFeature2* featureMap = inSeed->getFeatures(); -// featureMap->addFeature(inputAlg + "_" + m_varTypeName_Basic + "_FinalMomentumCore_pt", hlv_PanTau_Final.perp() ); -// featureMap->addFeature(inputAlg + "_" + m_varTypeName_Basic + "_FinalMomentumCore_eta", hlv_PanTau_Final.eta() ); -// featureMap->addFeature(inputAlg + "_" + m_varTypeName_Basic + "_FinalMomentumCore_phi", hlv_PanTau_Final.phi() ); -// featureMap->addFeature(inputAlg + "_" + m_varTypeName_Basic + "_FinalMomentumCore_m", hlv_PanTau_Final.m() ); - - std::vector< ElementLink< xAOD::PFOContainer > > finalChrgPFOLinks = tauJet->chargedPFOLinks(); std::vector< ElementLink< xAOD::PFOContainer > > finalPi0PFOLinks = tauJet->pi0PFOLinks(); std::vector< ElementLink< xAOD::PFOContainer > > finalNeutralPFOLinks = tauJet->neutralPFOLinks(); - //! DEBUG output - //#ifndef NDEBUG - ATH_MSG_DEBUG("Dumping charged pfos for subalg"); - for(unsigned int iPFO=0; iPFO<chrgPFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = chrgPFOLinks.at(iPFO).cachedElement(); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m()); - } - ATH_MSG_DEBUG("Dumping charged pfos for pantau"); - for(unsigned int iPFO=0; iPFO<finalChrgPFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = finalChrgPFOLinks.at(iPFO).cachedElement(); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m()); - } - - ATH_MSG_DEBUG("Dumping pi0 pfos for subalg"); - for(unsigned int iPFO=0; iPFO<pi0PFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = pi0PFOLinks.at(iPFO).cachedElement(); - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0 attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score() ); - } - ATH_MSG_DEBUG("Dumping pi0 pfos for pantau"); - for(unsigned int iPFO=0; iPFO<finalPi0PFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = finalPi0PFOLinks.at(iPFO).cachedElement(); - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0 attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score() ); - } - - ATH_MSG_DEBUG("Dumping neutral pfos for subalg"); - for(unsigned int iPFO=0; iPFO<neutralPFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = neutralPFOLinks.at(iPFO).cachedElement(); - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0 attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score() ); - } - ATH_MSG_DEBUG("Dumping neutral pfos for pantau"); - for(unsigned int iPFO=0; iPFO<finalNeutralPFOLinks.size(); iPFO++) { - const xAOD::PFO* pfo = finalNeutralPFOLinks.at(iPFO).cachedElement(); - int nPi0 = -1; - bool getOK = pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0); - if(getOK == false) ATH_MSG_DEBUG("problems reading pi0 attribute"); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m() << " isPi0: " << nPi0 << " , BDTscore: " << pfo->bdtPi0Score() ); - } - //#endif //NDEBUG - // vector of 4-vectors of actual pi0s and a vector with pointers to PFOs: std::vector< TLorentzVector > vec_pi04vec; std::vector< std::vector< ElementLink<xAOD::PFOContainer> > > vec_pi0pfos; createPi0Vectors(tauJet, vec_pi04vec, vec_pi0pfos); - - //xAOD::ParticleContainer* pi0Container=0; - //ATH_CHECK( evtStore()->retrieve(pi0Container, "finalTauPi0s") ); - for(unsigned int itlv=0; itlv!=vec_pi04vec.size(); ++itlv) { xAOD::Particle* p = new xAOD::Particle(); pi0Container.push_back(p); @@ -467,7 +334,7 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in for( uint ipfo = 0; ipfo != vec_pi0pfos.at(itlv).size(); ++ipfo) { pfo_link_vector.push_back(vec_pi0pfos.at(itlv).at(ipfo)); } - //p->auxdecor<std::vector< ElementLink< xAOD::PFOContainer > > >("pi0PFOLinks") = pfo_link_vector; + static SG::AuxElement::Accessor<std::vector< ElementLink< xAOD::PFOContainer > > > accPi0PFOLinks("pi0PFOLinks"); accPi0PFOLinks(*p) = pfo_link_vector; @@ -476,7 +343,6 @@ StatusCode PanTau::Tool_DetailsArranger::arrangePFOLinks(PanTau::PanTauSeed2* in tauJet->addPi0Link(linkToPi0); } - return StatusCode::SUCCESS; } @@ -488,7 +354,6 @@ void PanTau::Tool_DetailsArranger::SetHLVTau( PanTau::PanTauSeed2* inSeed, xAOD: std::vector< ElementLink< xAOD::PFOContainer > > finalChrgPFOLinks = tauJet->chargedPFOLinks(); std::vector< ElementLink< xAOD::PFOContainer > > finalPi0PFOLinks = tauJet->pi0PFOLinks(); std::vector< ElementLink< xAOD::PFOContainer > > finalNeutralPFOLinks = tauJet->neutralPFOLinks(); - ATH_MSG_DEBUG("Number of chrg, pi0, neut PFOs in PanTau: " << finalChrgPFOLinks.size() << ", " << finalPi0PFOLinks.size() << ", " << finalNeutralPFOLinks.size()); unsigned int NCharged = finalChrgPFOLinks.size(); unsigned int NPi0Neut = finalPi0PFOLinks.size(); @@ -496,21 +361,13 @@ void PanTau::Tool_DetailsArranger::SetHLVTau( PanTau::PanTauSeed2* inSeed, xAOD: TLorentzVector tlv_PanTau_Final; for(unsigned int iPFO=0; iPFO<NCharged; iPFO++) { const xAOD::PFO* pfo = finalChrgPFOLinks.at(iPFO).cachedElement(); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m()); tlv_PanTau_Final += pfo->p4(); } for(unsigned int iPFO=0; iPFO<NPi0Neut; iPFO++) { const xAOD::PFO* pfo = finalPi0PFOLinks.at(iPFO).cachedElement(); - ATH_MSG_DEBUG("pfo " << iPFO << " pt, eta, phi, m: " << pfo->pt() << ", " << pfo->eta() << ", " << pfo->phi() << ", " << pfo->m()); tlv_PanTau_Final += pfo->p4(); } - ATH_MSG_DEBUG("Final 4-vector: "); - ATH_MSG_DEBUG("\tEt : " << tlv_PanTau_Final.Et()); - ATH_MSG_DEBUG("\tEta: " << tlv_PanTau_Final.Eta()); - ATH_MSG_DEBUG("\tPhi: " << tlv_PanTau_Final.Phi()); - ATH_MSG_DEBUG("\tm : " << tlv_PanTau_Final.M()); - inSeed->setFinalMomentum(tlv_PanTau_Final); PanTau::TauFeature2* featureMap = inSeed->getFeatures(); @@ -520,7 +377,6 @@ void PanTau::Tool_DetailsArranger::SetHLVTau( PanTau::PanTauSeed2* inSeed, xAOD: featureMap->addFeature(inputAlg + "_" + varTypeName_Basic + "_FinalMomentumCore_m", tlv_PanTau_Final.M() ); return; - } @@ -544,7 +400,6 @@ bool PanTau::Tool_DetailsArranger::HasMultPi0sInOneCluster(const xAOD::PFO* pfo, } return (nPi0sPerCluster > 1); - } @@ -555,8 +410,7 @@ void PanTau::Tool_DetailsArranger::SetNeutralConstituentMass(xAOD::PFO* neutral_ PanTau::SetP4EEtaPhiM( momentum, neutral_pfo->e(), neutral_pfo->eta(), neutral_pfo->phi(), mass); neutral_pfo->setP4(momentum.Pt(), neutral_pfo->eta(), neutral_pfo->phi(), mass); - return; - + return; } @@ -570,8 +424,7 @@ void PanTau::Tool_DetailsArranger::SetNeutralConstituentVectorMasses(std::vector } - return; - + return; } @@ -616,7 +469,6 @@ std::vector< ElementLink< xAOD::PFOContainer > > PanTau::Tool_DetailsArranger::C if( nConstsOfType != new_links.size() ){ ATH_MSG_WARNING("CollectConstituentsAsPFOLinks: Couldn't find PFOLinks " << new_links.size() << " for all tau constituents (" << tauConstituents.size() << ")!"); - ATH_MSG_DEBUG("Dumping neutral pfo links from all constituents of type " << type); for(unsigned int iConst=0; iConst<tauConstituents.size(); iConst++) { const xAOD::PFO* pfo = tauConstituents[iConst]->getPFO(); int nPi0 = -1; @@ -636,7 +488,6 @@ std::vector< ElementLink< xAOD::PFOContainer > > PanTau::Tool_DetailsArranger::C } return new_links; - } @@ -711,7 +562,3 @@ void PanTau::Tool_DetailsArranger::createPi0Vectors(xAOD::TauJet* tauJet, std::v } } - - - - diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_FeatureExtractor.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_FeatureExtractor.cxx index 130cc458ce5ebbffa153ac12ea42dde3198eda5e..46b4636cfd02a05d79db39d41bc256a9992f47a6 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_FeatureExtractor.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_FeatureExtractor.cxx @@ -1,26 +1,12 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ - -/////////////////////////////////////////////////////////////////// -// Implementation file for class Tool_FeatureExtractor -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool to extract jet features from seed -/////////////////////////////////////////////////////////////////// -// sebastian.fleischmann@cern.ch -/////////////////////////////////////////////////////////////////// - //! Helper classes #include "xAODTau/TauJet.h" #include "xAODTracking/Vertex.h" #include "xAODTracking/TrackParticle.h" -//#include "TrkParameters/TrackParameters.h" -//#include "TrkVertexFitterInterfaces/ITrackToVertexIPEstimator.h" - //! ROOT includes #include "TMath.h" #include "TLorentzVector.h" @@ -64,9 +50,7 @@ PanTau::Tool_FeatureExtractor::Tool_FeatureExtractor( const std::string& name ) : asg::AsgTool(name), m_Tool_InformationStore("PanTau::Tool_InformationStore/Tool_InformationStore"){ - //m_trackToVertexTool("Reco::TrackToVertex") { - - //declareProperty("TrackToVertexTool", m_trackToVertexTool); + declareProperty("Tool_InformationStore", m_Tool_InformationStore, "Tool handle to the information store tool"); declareProperty("Tool_InformationStoreName", m_Tool_InformationStoreName, "Tool handle to the information store tool"); @@ -79,7 +63,6 @@ StatusCode PanTau::Tool_FeatureExtractor::initialize() { ATH_MSG_INFO(" initialize()"); m_init=true; - //ATH_CHECK( m_trackToVertexTool.retrieve() ); ATH_CHECK( HelperFunctions::bindToolHandle( m_Tool_InformationStore, m_Tool_InformationStoreName ) ); ATH_CHECK( m_Tool_InformationStore.retrieve() ); @@ -166,9 +149,6 @@ void PanTau::Tool_FeatureExtractor::addFeatureWrtSeedEnergy( PanTau::TauFeatu StatusCode PanTau::Tool_FeatureExtractor::execute(PanTau::PanTauSeed2* inSeed) { - ATH_MSG_DEBUG("Calculating features..."); - - bool noAnyConstituents = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoConstituentsAtAll); bool noSelConstituents = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoSelectedConstituents); bool noValidInputTau = inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_NoValidInputTau); @@ -183,18 +163,14 @@ StatusCode PanTau::Tool_FeatureExtractor::execute(PanTau::PanTauSeed2* inSeed) { inSeed->getFeatures()->addFeature(inSeed->getNameInputAlgorithm() + "_" + m_varTypeName_Basic + "_isPanTauCandidate", 1); - ATH_MSG_DEBUG("Basic features"); ATH_CHECK( calculateBasicFeatures(inSeed) ); - - ATH_MSG_DEBUG("RawConstituent 4 vectors"); ATH_CHECK( addConstituentMomenta(inSeed) ); //first, calculate the Et variants for the seed fillVariantsSeedEt(inSeed->getConstituentsAsList_All()); //loop through all types of Constituents in tau and calculate type features for them - ATH_MSG_DEBUG("type specific features"); //baseline ATH_CHECK( calculateFeatures(inSeed, PanTau::TauConstituent2::t_NoType) ); //=> all constituents ATH_CHECK( calculateFeatures(inSeed, PanTau::TauConstituent2::t_Charged) ); //=> charged ones in core @@ -206,18 +182,11 @@ StatusCode PanTau::Tool_FeatureExtractor::execute(PanTau::PanTauSeed2* inSeed) { //fill the combined features - ATH_MSG_DEBUG("combined features"); ATH_CHECK( addCombinedFeatures(inSeed) ); - //fill the generic jet features - ATH_MSG_DEBUG("generic jet features"); - ATH_CHECK( addGenericJetFeatures(inSeed) ); - //fill the impact paramter features - ATH_MSG_DEBUG("impact parameter features"); ATH_CHECK( addImpactParameterFeatures(inSeed) ); - ATH_MSG_DEBUG("Finished feature extraction"); return StatusCode::SUCCESS; } @@ -356,9 +325,6 @@ StatusCode PanTau::Tool_FeatureExtractor::addConstituentMomenta(PanTau::PanTauSe StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* inSeed, int tauConstituentType) { - // - - std::string curTypeName = PanTau::TauConstituent2::getTypeName( (PanTau::TauConstituent2::Type)tauConstituentType ); std::string curTypeName_All = PanTau::TauConstituent2::AllConstituentsName(); @@ -407,10 +373,6 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* if(list_TypeConstituents_SortBDT.size() > 1) tlv_2nd_BDT = list_TypeConstituents_SortBDT[1]->p4(); if(list_TypeConstituents_SortBDT.size() > 2) tlv_3rd_BDT = list_TypeConstituents_SortBDT[2]->p4(); - - - - //! ////////////////////////////////////////// //! Prepare variables for information from eflow Objects //! ////////////////////////////////////////// @@ -565,7 +527,6 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* value_sumBDT_BDTSort += value_BDT; std::string iConst = m_HelperFunctions.convertNumberToString((double)(iTypeConst+1)); tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_BDTValues_BDTSort_" + iConst, value_BDT); - ATH_MSG_DEBUG("\t\tAdded variable " << inputAlgName << "_" << curTypeName << "_" << prefixVARType << "_BDTValues_BDTSort_" << iConst << " with value " << value_BDT); tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_BDTValuesSum_BDTSort_" + iConst, value_sumBDT_BDTSort); } @@ -587,7 +548,6 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* prefixVARType = PanTau::Tool_FeatureExtractor::varTypeName_Shots(); //only execute if the constituent type is neutral if(PanTau::TauConstituent2::isNeutralType(tauConstituentType) == true) { - ATH_MSG_DEBUG("---> Dumping shot information from " << list_TypeConstituents_SortBDT.size() << " constituents of type " << curTypeName << " in tau"); TLorentzVector totalTLV_SumShots = TLorentzVector(0., 0., 0., 0.); unsigned int totalPhotonsInSeed = 0; @@ -600,24 +560,18 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* std::vector<TLorentzVector> allShotTLVs = std::vector<TLorentzVector>(0); for(unsigned int iConst=0; iConst<list_TypeConstituents_SortBDT.size(); iConst++) { - ATH_MSG_DEBUG("\tConstituent " << iConst << " / " << list_TypeConstituents_SortBDT.size()); PanTau::TauConstituent2* curConst = list_TypeConstituents_SortBDT.at(iConst); TLorentzVector tlv_CurConst = curConst->p4(); std::vector<PanTau::TauConstituent2*> shotConstituents = curConst->getShots(); unsigned int nShots = shotConstituents.size(); - ATH_MSG_DEBUG("\t\tConstituent has Pt/Eta/Phi/M: " << tlv_CurConst.Pt() << " / " << tlv_CurConst.Eta() << " / " << tlv_CurConst.Phi() << " / " << tlv_CurConst.M()); - ATH_MSG_DEBUG("\t\tShots in this constituent: " << nShots); unsigned int totalPhotonsInNeutral = 0; TLorentzVector tlv_SumShots = TLorentzVector(0., 0., 0., 0.); for(unsigned int iShot=0; iShot<nShots; iShot++) { PanTau::TauConstituent2* curShot = shotConstituents.at(iShot); - unsigned int curNPhotons = curShot->getNPhotonsInShot(); - ATH_MSG_DEBUG("\t\t\tPhotons in this shot: " << curNPhotons); totalPhotonsInNeutral += curShot->getNPhotonsInShot(); - ATH_MSG_DEBUG("\t\t\tPt/Eta/Phi/M of this shot: " << curShot->p4().Pt() << " / " << curShot->p4().Eta() << " / " << curShot->p4().Phi() << " / " << curShot->p4().M() ); tlv_SumShots += curShot->p4(); allShotTLVs.push_back(curShot->p4()); }//end loop over shots @@ -625,9 +579,6 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* totalTLV_SumShots += tlv_SumShots; totalPhotonsInSeed += totalPhotonsInNeutral; - ATH_MSG_DEBUG("\t\tTotal Photons: " << totalPhotonsInNeutral); - ATH_MSG_DEBUG("\t\tPt/Eta/Phi/M of combined shots: " << tlv_SumShots.Pt() << " / " << tlv_SumShots.Eta() << " / " << tlv_SumShots.Phi() << " / " << tlv_SumShots.M() ); - std::string iConstStr = m_HelperFunctions.convertNumberToString((double)(iConst+1)); tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_nPhotons_BDTSort_" + iConstStr, totalPhotonsInNeutral); @@ -655,9 +606,6 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* }//end loop over constituents in tau - ATH_MSG_DEBUG("\tLoop over constituents in tau finished!"); - ATH_MSG_DEBUG("\tTotal photons from shots: " << totalPhotonsInSeed); - //delta R values tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_MaxDeltaRSumShotToConst", maxDeltaRSumShotToConst); tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_MinDeltaRSumShotToConst", minDeltaRSumShotToConst); @@ -673,7 +621,6 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_NPhotonsInSeed", totalPhotonsInSeed); //build di-Shot mass - ATH_MSG_DEBUG("\tBuild di-shot masses and check difference to pion mass"); double maxDiShotMass = -200; double minDiShotMass = 99999; double bestDiShotMass = -200; @@ -694,7 +641,7 @@ StatusCode PanTau::Tool_FeatureExtractor::calculateFeatures(PanTau::PanTauSeed2* if(curDiShotMass < minDiShotMass) minDiShotMass = curDiShotMass; } } - ATH_MSG_DEBUG("\tBest di-shot mass: " << bestDiShotMass); + tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_BestDiShotMass", bestDiShotMass); tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_MaxDiShotMass", maxDiShotMass); tauFeatureMap->addFeature(inputAlgName + "_" + curTypeName + "_" + prefixVARType + "_MinDiShotMass", minDiShotMass); @@ -1127,69 +1074,9 @@ StatusCode PanTau::Tool_FeatureExtractor::addCombinedFeatures(PanTau::PanTauSeed -StatusCode PanTau::Tool_FeatureExtractor::addGenericJetFeatures(PanTau::PanTauSeed2* inSeed) const { - - std::string inputAlgName = inSeed->getNameInputAlgorithm(); - std::vector<TauConstituent2*> allConstituents = inSeed->getConstituentsAsList_Core(); - PanTau::TauFeature2* tauFeatures = inSeed->getFeatures(); - - const std::string namePrefix = m_varTypeName_JetShape; - //! Jet Thrust - if(allConstituents.size() > 1) { - bool thrustOK = false; - std::vector<double> thrustValues = m_HelperFunctions.calcThrust(&allConstituents, thrustOK); - if (thrustValues.size() == 3 && thrustOK==true) { - const double thrust = thrustValues[0]; - const double thrust_major = thrustValues[1]; - const double thrust_minor = thrustValues[2]; - - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetThrust", thrust); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetThrustMajor", thrust_major); - if (allConstituents.size() > 2) { - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetThrustMinor", thrust_minor); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetOblateness", thrust_major - thrust_minor); - } //end check for num. constituents for reasonable minor and oblateness - }//end check for reasonable thrustValues - }//end check for calculation of thrust - - - //! Jet Fox Wolfram Moments - // described here: http://cepa.fnal.gov/psm/simulation/mcgen/lund/pythia_manual/pythia6.3/pythia6301/node215.html - bool fwOK = false; - std::vector<double> fwValues = m_HelperFunctions.calcFWMoments(&allConstituents, fwOK); - if(fwOK == true) { - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolfram1", fwValues[1]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolfram2", fwValues[2]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolfram3", fwValues[3]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolfram4", fwValues[4]); - - if(fwValues[1] > 0.) { - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolframRatioFW2OverFW1", fwValues[2] / fwValues[1]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolframRatioFW4pow4OverFW1", pow(fwValues[4], 4) / fwValues[1]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolframRatioFW234OverFW1pow4", fwValues[2]*fwValues[3]*fwValues[4] / pow(fwValues[1], 4)); - } - if(fwValues[4] > 0.) tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetFoxWolframRatioFW1PlusFW2OverFW4", (fwValues[1] + fwValues[2]) / fwValues[4]); - } //end check for valid calculation of FoxWolfram moments - - - //! Sphericity, aplanarity and planarity - bool sphericityOK =false; - std::vector<double> sphValues = m_HelperFunctions.calcSphericity(&allConstituents, sphericityOK); - if(sphericityOK == true) { - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetSphericity", sphValues[0]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetAplanarity", sphValues[1]); - tauFeatures->addFeature(inputAlgName + "_" + namePrefix + "_JetPlanarity", sphValues[2]); - } - - return StatusCode::SUCCESS; -} - - - StatusCode PanTau::Tool_FeatureExtractor::addImpactParameterFeatures(PanTau::PanTauSeed2* inSeed) const { const xAOD::TauJet* tauJet = inSeed->getTauJet(); -// const Trk::RecVertex* vtx_TauJet = 0; //inSeed->getTauJet()->origin(); const xAOD::Vertex* vtx_TauJet = tauJet->vertexLink().cachedElement(); if(vtx_TauJet == 0) { @@ -1223,62 +1110,15 @@ StatusCode PanTau::Tool_FeatureExtractor::addImpactParameterFeatures(PanTau::Pan for(unsigned int iTrk=0; iTrk<list_Tracks.size(); iTrk++) { const xAOD::TrackParticle* curTrack = list_Tracks[iTrk]; - //const Trk::Perigee* perigee = m_trackToVertexTool->perigeeAtVertex(curTrack, (*pTau.vertexLink())->position()); - //const Trk::Perigee* perigee = m_trackToVertexTool->perigeeAtVertex(curTrack, vtx_TauJet->position()); - /* - const Trk::ImpactParametersAndSigma* impactParameter = m_Tool_TrackToVertexIPEstimator->estimate(curTrack, vtx_TauJet); - - if(impactParameter == 0) { - ATH_MSG_DEBUG("could not extract impact parameter for track at " << curTrack << " and vtx at " << vtx_TauJet); - continue; - } - */ - - //get d0 value and significance - //double recoD0 = fabs(impactParameter->IPd0); - //double recoD0 = perigee->parameters()[Trk::d0]; - // from http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/PhysicsAnalysis/StandardModelPhys/Validation/ZeeValidation/src/ReconElectronsPlots.cxx#0242 double recoD0 = curTrack->d0(); - //double signfD0 = (impactParameter->sigmad0 > 0. ? fabs(recoD0/impactParameter->sigmad0) : -999. ); - //double signfD0 = perigee->parameters()[Trk::d0]/std::sqrt((*perigee->covariance())(Trk::d0, Trk::d0)); double errD02 = curTrack->definingParametersCovMatrix()(0, 0); double signfD0 = -999.; if(errD02 > 0) signfD0 = curTrack->d0() / sqrtf( errD02 ); - /* - // Need that? - if (vtx_TauJet) { - //FIXME: - //xAOD::TrackParticle does not return requested Trk::TrackParameters for get3DLifetimeSignOfTrack - double lifetimeSign = m_Tool_TrackToVertexIPEstimator->get3DLifetimeSignOfTrack(curTrack->perigeeParameters(), tauDirection, *vtx_TauJet); - recoD0 *= lifetimeSign; - signfD0 *= lifetimeSign; - } else { - ATH_MSG_WARNING( "No primary vertex, use absolute value of transverse impact parameter" ); - } - */ - - //get z0 value and significance - //double recoZ0 = fabs(impactParameter->IPz0); - //double recoZ0 = perigee->parameters()[Trk::z0]; - // from http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/PhysicsAnalysis/StandardModelPhys/Validation/ZeeValidation/src/ReconElectronsPlots.cxx#0242 + double recoZ0 = curTrack->z0(); - //double signfZ0 = (impactParameter->sigmaz0 > 0. ? fabs(recoZ0/impactParameter->sigmaz0) : -999. ); - //double signfZ0 = perigee->parameters()[Trk::z0]/std::sqrt((*perigee->covariance())(Trk::z0, Trk::z0)); double errZ02 = curTrack->definingParametersCovMatrix()(1, 1); double signfZ0 = -999.; if(errZ02 > 0) signfZ0 = curTrack->z0() / sqrtf( errZ02 ); - /* - // Need that? - if (vtx_TauJet) { - //FIXME: - //xAOD::TrackParticle does not return requested Trk::TrackParameters for getZLifetimeSignOfTrack - double lifetimeSign = m_Tool_TrackToVertexIPEstimator->getZLifetimeSignOfTrack(curTrack->perigeeParameters(), tauDirection, *vtx_TauJet); - recoZ0 *= lifetimeSign; - signfZ0 *= lifetimeSign; - } else { - ATH_MSG_WARNING( "No primary vertex, use absolute value of longitudinal impact parameter" ); - } - */ // add to features if (iTrk < 4) { @@ -1293,11 +1133,6 @@ StatusCode PanTau::Tool_FeatureExtractor::addImpactParameterFeatures(PanTau::Pan impactParameterSignf.push_back(fabs(signfD0)); } - /* - delete impactParameter; - impactParameter = 0; - */ - }//end loop over tracks //sort impact parameters and also store sorted by value diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InformationStore.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InformationStore.cxx index eed146e2d518e466660b6ee0e79733b4c00751af..f2b003fdc950a29510f2480d4a961a4dcb5a8fea 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InformationStore.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InformationStore.cxx @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Implementation file for class TauImpactParameterExtractionTool -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool to match TauSeeds to TruthTaus -/////////////////////////////////////////////////////////////////// -// limbach@physik.uni-bonn.de -/////////////////////////////////////////////////////////////////// - //! PanTau includes #include "PanTauAlgs/Tool_InformationStore.h" @@ -23,8 +13,6 @@ void PanTau::Tool_InformationStore::ABRDefaultInit(){ #ifdef XAOD_ANALYSIS - ATH_MSG_INFO("Setting Tool_InformationStore In environment ABR"); - // Boolean values MapInt m01 = { {"UseDefaultCellBasedConfig",1},//is this one necessary @@ -152,13 +140,9 @@ PanTau::Tool_InformationStore::Tool_InformationStore( declareProperty("Infos_VecDouble", m_Infos_VecDouble, "Map with double type infos"); } - - PanTau::Tool_InformationStore::~Tool_InformationStore() { } - - StatusCode PanTau::Tool_InformationStore::initialize() { ATH_MSG_INFO( name() << " initialize()" ); m_init=true; @@ -172,14 +156,6 @@ StatusCode PanTau::Tool_InformationStore::initialize() { return StatusCode::SUCCESS; } - - -// StatusCode PanTau::Tool_InformationStore::finalize() { -// StatusCode sc = AlgTool::finalize(); -// return sc; -// } - - StatusCode PanTau::Tool_InformationStore::getInfo_Int(std::string varName, int& value) { MapInt::const_iterator it = m_Infos_Int.find(varName); if(it == m_Infos_Int.end()) { @@ -190,8 +166,6 @@ StatusCode PanTau::Tool_InformationStore::getInfo_Int(std::string varName, i return StatusCode::SUCCESS; } - - StatusCode PanTau::Tool_InformationStore::getInfo_Double(std::string varName, double& value) { MapDouble::const_iterator it = m_Infos_Double.find(varName); if(it == m_Infos_Double.end()) { @@ -202,8 +176,6 @@ StatusCode PanTau::Tool_InformationStore::getInfo_Double(std::string varName, d return StatusCode::SUCCESS; } - - StatusCode PanTau::Tool_InformationStore::getInfo_VecDouble(std::string varName, std::vector<double>& value) { MapVecDouble::const_iterator it = m_Infos_VecDouble.find(varName); if(it == m_Infos_VecDouble.end()) { @@ -214,8 +186,6 @@ StatusCode PanTau::Tool_InformationStore::getInfo_VecDouble(std::string varName, return StatusCode::SUCCESS; } - - StatusCode PanTau::Tool_InformationStore::getInfo_String(std::string varName, std::string& value) { MapString::const_iterator it = m_Infos_String.find(varName); if(it == m_Infos_String.end()) { @@ -226,8 +196,6 @@ StatusCode PanTau::Tool_InformationStore::getInfo_String(std::string varName, s return StatusCode::SUCCESS; } - - StatusCode PanTau::Tool_InformationStore::getInfo_VecString(std::string varName, std::vector<std::string>& value) { MapVecString::const_iterator it = m_Infos_VecString.find(varName); if(it == m_Infos_VecString.end()) { @@ -237,49 +205,3 @@ StatusCode PanTau::Tool_InformationStore::getInfo_VecString(std::string varName, value = it->second; return StatusCode::SUCCESS; } - - - -StatusCode PanTau::Tool_InformationStore::dumpMaps() const { - - ATH_MSG_DEBUG("Dumping information in Tool_InformationStore called " << name()); - - ATH_MSG_DEBUG("Integer variables: "); - MapInt::const_iterator itI = m_Infos_Int.begin(); - for(; itI != m_Infos_Int.end(); itI++) { - std::string key = itI->first; - int val = itI->second; - ATH_MSG_DEBUG("\t" << key << ": " << val); - } - - ATH_MSG_DEBUG("Double variables: "); - MapDouble::const_iterator itD = m_Infos_Double.begin(); - for(; itD != m_Infos_Double.end(); itD++) { - std::string key = itD->first; - double val = itD->second; - ATH_MSG_DEBUG("\t" << key << ": " << val); - } - - ATH_MSG_DEBUG("VecDouble variables: "); - MapVecDouble::const_iterator itVD = m_Infos_VecDouble.begin(); - for(; itVD != m_Infos_VecDouble.end(); itVD++) { - std::string key = itVD->first; - std::vector<double> val = itVD->second; - ATH_MSG_DEBUG("\t" << key << ": " << val.size()); - for(unsigned int iVal=0; iVal<val.size(); iVal++) ATH_MSG_DEBUG("\t\t" << val[iVal]); - } - - ATH_MSG_DEBUG("String variables: "); - MapString::const_iterator itS = m_Infos_String.begin(); - for(; itS != m_Infos_String.end(); itS++) { - std::string key = itS->first; - std::string val = itS->second; - ATH_MSG_DEBUG("\t" << key << ": " << val); - } - - ATH_MSG_DEBUG("Done dumping information in Tool_InformationStore called " << name()); - return StatusCode::SUCCESS; -} - - - diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InputConverter.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InputConverter.cxx index 0bde66cf42c16acce7f05779581d0d53da6e6d61..feea749af5a7efceb54c48ad1c8fdea5eefe3656 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InputConverter.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_InputConverter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -53,12 +53,6 @@ StatusCode PanTau::Tool_InputConverter::initialize() { } -// StatusCode PanTau::Tool_InformationStore::finalize() { -// StatusCode sc = AlgTool::finalize(); -// return sc; -// } - - bool PanTau::Tool_InputConverter::passesPreselectionEnergy(double itsEnergy) const { if(itsEnergy < m_Config_TauConstituents_PreselectionMinEnergy) return false; return true; @@ -124,7 +118,6 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, } - //ATH_MSG_DEBUG("About to create 4 vector of EFO. E / Eta / Phi / m: " << constituentEnergy << " / " << pfo->eta() << " / " << pfo->phi() << " / " << constituentMass); TLorentzVector momentum; PanTau::SetP4EEtaPhiM( momentum, constituentEnergy, pfo->eta(), pfo->phi(), constituentMass); @@ -140,7 +133,6 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, if(deltaR_toTauJet > m_Config_TauConstituents_Types_DeltaRCore) { if(pfo->isCharged()) { - //itsTypeFlags.at((int)PanTau::TauConstituent2::t_OutChrg) = 1; itsTypeFlags.at((int)PanTau::TauConstituent2::t_Charged) = 1; } if(!pfo->isCharged()) { @@ -162,10 +154,6 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, //neutral PFO arranging --- check for pi0 tag mvaValue = pfo->bdtPi0Score(); - // bool isThreeProng = false; - // if(tauJet->nTracks() == 3) isThreeProng = true; - // ATH_MSG_DEBUG("numTrack = " << tauJet->nTracks() << ", is Threeprong = " << isThreeProng); - int nPi0sPerCluster = 0; if( !pfo->attribute(xAOD::PFODetails::nPi0Proto, nPi0sPerCluster) ) { ATH_MSG_WARNING("WARNING: Could not retrieve nPi0Proto. Will set it to 1."); @@ -179,11 +167,8 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, //! ================================================== //! create the tau constituent - ATH_MSG_DEBUG("About to create 4 vector of EFO. E / Eta / Phi / m / charge / mvaValue: " << constituentEnergy << " / " << pfo->eta() << " / " << pfo->phi() << " / " << constituentMass << " / " << pfoCharge << " / " << mvaValue); tauConstituent = new PanTau::TauConstituent2(momentum, pfoCharge, itsTypeFlags, mvaValue, pfo); tauConstituent->makePrivateStore(); - ATH_MSG_DEBUG("Created new TauConstituent2 at: " << tauConstituent); - ATH_MSG_DEBUG("\t Eta value of its 4-vector: " << momentum.Eta()); //! ================================================== //! Check if the pfo object has shots: @@ -193,9 +178,7 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, ATH_MSG_DEBUG("WARNING: Could not get shots from current pfo"); } - ATH_MSG_DEBUG("Number of shots in cluster:" << list_TauShots.size()); if(list_TauShots.size() > 0) { - ATH_MSG_DEBUG("Now converting shots of cluster with E, Eta, Phi, M: " << momentum.E() << ", " << momentum.Eta() << ", " << momentum.Phi() << ", " << momentum.M()); for(unsigned int iShot=0; iShot<list_TauShots.size(); iShot++) { if(list_TauShots.at(iShot) == 0) { @@ -204,14 +187,12 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, } xAOD::PFO* curShot = const_cast<xAOD::PFO*>( dynamic_cast<const xAOD::PFO*>(list_TauShots.at(iShot)) ); - ATH_MSG_DEBUG("Checking shot E, Eta, Phi, M: " << curShot->e() << ", " << curShot->eta() << ", " << curShot->phi() << ", " << curShot->m()); TLorentzVector shotMomentum; PanTau::SetP4EEtaPhiM( shotMomentum, curShot->e(), curShot->eta(), curShot->phi(), curShot->m()); std::vector<int> shotTypeFlags = std::vector<int>((unsigned int)PanTau::TauConstituent2::t_nTypes, 0); double shotMVAValue = PanTau::TauConstituent2::DefaultBDTValue(); PanTau::TauConstituent2* shotConstituent = new PanTau::TauConstituent2(shotMomentum, 0, itsTypeFlags, shotMVAValue, curShot); shotConstituent->makePrivateStore(); - ATH_MSG_DEBUG("\tAdded shot with E, Eta, Phi, M: " << shotMomentum.E() << ", " << shotMomentum.Eta() << ", " << shotMomentum.Phi() << ", " << shotMomentum.M()); int nPhotons = 0; if( curShot->attribute(xAOD::PFODetails::tauShots_nPhotons, nPhotons) == false) { @@ -219,7 +200,6 @@ StatusCode PanTau::Tool_InputConverter::ConvertToTauConstituent2(xAOD::PFO* pfo, ATH_MSG_DEBUG("WARNING: Could not get nPhotons for this shot! Set to -1"); } shotConstituent->setNPhotonsInShot(nPhotons); - ATH_MSG_DEBUG("\tThe shot has " << shotConstituent->getNPhotonsInShot() << " photons in it"); tauConstituent->addShot(shotConstituent); }//end loop over shots diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_ModeDiscriminator.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_ModeDiscriminator.cxx index 2c3c94f8e717f6141c9043c5b7642c93adf79612..4842e65c5edcf94246eceaf618c6fa03d6ec05e3 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_ModeDiscriminator.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_ModeDiscriminator.cxx @@ -1,17 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Implementation file for class Tool_ModeDiscriminator -/////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -// Tool for PID of TauSeeds -/////////////////////////////////////////////////////////////////// -// sebastian.fleischmann@cern.ch -/////////////////////////////////////////////////////////////////// - //! C++ #include <string> @@ -59,15 +49,11 @@ StatusCode PanTau::Tool_ModeDiscriminator::initialize() { ATH_MSG_DEBUG( name() << " initialize()" ); m_init=true; - ATH_MSG_DEBUG("InputAlg : " << m_Name_InputAlg); - ATH_MSG_DEBUG("Mode Case : " << m_Name_ModeCase); - ATH_CHECK( HelperFunctions::bindToolHandle( m_Tool_InformationStore, m_Tool_InformationStoreName ) ); ATH_CHECK(m_Tool_InformationStore.retrieve()); //get the required information from the informationstore tool - ATH_MSG_DEBUG("Get infos from information store & configure..."); ATH_CHECK( m_Tool_InformationStore->getInfo_VecDouble("ModeDiscriminator_BinEdges_Pt", m_BinEdges_Pt)); ATH_CHECK( m_Tool_InformationStore->getInfo_String("ModeDiscriminator_ReaderOption", m_ReaderOption) ); ATH_CHECK( m_Tool_InformationStore->getInfo_String("ModeDiscriminator_TMVAMethod", m_MethodName) ); @@ -103,7 +89,6 @@ StatusCode PanTau::Tool_ModeDiscriminator::initialize() { unsigned int nPtBins = m_BinEdges_Pt.size() - 1; // nBins = Edges-1 for(unsigned int iPtBin=0; iPtBin<nPtBins; iPtBin++) { - ATH_MSG_DEBUG("PtBin " << iPtBin+1 << " / " << nPtBins); double bin_lowerVal = m_BinEdges_Pt[iPtBin]; double bin_upperVal = m_BinEdges_Pt[iPtBin+1]; @@ -117,7 +102,6 @@ StatusCode PanTau::Tool_ModeDiscriminator::initialize() { //! //////////////////////// //! weight files - ATH_MSG_DEBUG("\tGet the weight file"); std::string curWeightFile = m_calib_path + (m_calib_path.length() ? "/" : ""); curWeightFile += "TrainModes_"; curWeightFile += m_Name_InputAlg + "_"; @@ -131,27 +115,20 @@ StatusCode PanTau::Tool_ModeDiscriminator::initialize() { ATH_MSG_ERROR("Weight file " << curWeightFile << " not found!"); return StatusCode::FAILURE; } - - ATH_MSG_DEBUG("\t\tAdded weight file: " << resolvedWeightFileName); - - + //! //////////////////////// //! TMVA Readers - ATH_MSG_DEBUG("\tCreate MVAUtils::BDT"); //setup variables for reader for(unsigned int iVar=0; iVar<m_List_BDTVariableNames.size(); iVar++) { TString variableNameForReader = "tau_pantauFeature_" + m_Name_InputAlg + "_" + m_List_BDTVariableNames[iVar]; - ATH_MSG_DEBUG("\t\tAdding variable to reader: " << variableNameForReader << " var stored at: " << (m_List_BDTVariableValues[iVar])); - //curReader->AddVariable(variableNameForReader, &(m_List_BDTVariableValues[iVar])); }//end loop over variables TFile* fBDT = TFile::Open(resolvedWeightFileName.c_str()); TTree* tBDT = dynamic_cast<TTree*> (fBDT->Get("BDT")); MVAUtils::BDT* curBDT = new MVAUtils::BDT(tBDT); curBDT->SetPointers(m_List_BDTVariableValues); - - ATH_MSG_DEBUG("\t\tStoring new MVAUtils::BDT at " << curBDT); + m_MVABDT_List.push_back(curBDT); }//end loop over pt bins to get weight files, reference hists and MVAUtils::BDT objects @@ -184,7 +161,7 @@ void PanTau::Tool_ModeDiscriminator::updateReaderVariables(PanTau::PanTauSeed //NOTE! This has to be done (even if the seed pt is bad) otherwise problems with details storage // [If this for loop is skipped, it is not guaranteed that all details are set to their proper default value] PanTau::TauFeature2* seedFeatures = inSeed->getFeatures(); - ATH_MSG_DEBUG( "Update the variables that are used in the readers..."); + for(unsigned int iVar=0; iVar<m_List_BDTVariableNames.size(); iVar++) { std::string curVar = m_Name_InputAlg + "_" + m_List_BDTVariableNames[iVar]; @@ -197,7 +174,6 @@ void PanTau::Tool_ModeDiscriminator::updateReaderVariables(PanTau::PanTauSeed seedFeatures->addFeature(curVar, newValue); } - ATH_MSG_DEBUG("\tUpdate variable " << curVar << " from " << m_List_BDTVariableValues[iVar] << " to " << newValue); *(m_List_BDTVariableValues[iVar]) = (float)newValue; }//end loop over BDT vars for update @@ -208,8 +184,6 @@ void PanTau::Tool_ModeDiscriminator::updateReaderVariables(PanTau::PanTauSeed double PanTau::Tool_ModeDiscriminator::getResponse(PanTau::PanTauSeed2* inSeed, bool& isOK) { - ATH_MSG_DEBUG("get bdt response now"); - updateReaderVariables(inSeed); if(inSeed->isOfTechnicalQuality(PanTau::PanTauSeed2::t_BadPtValue) == true) { @@ -242,17 +216,9 @@ double PanTau::Tool_ModeDiscriminator::getResponse(PanTau::PanTauSeed2* inSeed, return -2.; } - -// ATH_MSG_DEBUG("Values of BDT Variables: "); -// for(unsigned int iVar=0; iVar<m_List_BDTVariableNames.size(); iVar++) ATH_MSG_WARNING(m_List_BDTVariableNames.at(iVar) << ": " << m_List_BDTVariableValues.at(iVar) << " (stored at " << &(m_List_BDTVariableValues.at(iVar)) << ")"); - double mvaResponse = curBDT->GetGradBoostMVA(m_List_BDTVariableValues); ATH_MSG_DEBUG("MVA response from " << m_MethodName << " in " << m_Name_ModeCase << " is " << mvaResponse); isOK = true; return mvaResponse; } - - - - diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentGetter.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentGetter.cxx index d7e341733441afba27c05142bb420d65d55db378..417d0c03b2e8b832f159c7241ca6247373c1bf35 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentGetter.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentGetter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -10,7 +10,6 @@ #include "PanTauAlgs/HelperFunctions.h" #include "PanTauAlgs/Tool_InformationStore.h" #include "PanTauAlgs/Tool_InputConverter.h" -//#include "TVector3.h" //! xAOD EDM #include "xAODTau/TauJet.h" @@ -49,20 +48,12 @@ StatusCode PanTau::Tool_TauConstituentGetter::initialize() { } -// StatusCode PanTau::Tool_InformationStore::finalize() { -// StatusCode sc = AlgTool::finalize(); -// return sc; -// } - - - /** * Function to get the PFOs for a given TauJet object (Shots in each PFO etc are collected in "ConvertToTauConstituent") */ StatusCode PanTau::Tool_TauConstituentGetter::GetTauConstituents(const xAOD::TauJet* tauJet, std::vector<TauConstituent2*>& outputConstituents, std::string algName) const { - ATH_MSG_DEBUG("GetTauConstituents..."); bool inputAlgIsValid = false; // extend this if-statement once Pantau has been validated for other algs: @@ -73,10 +64,8 @@ StatusCode PanTau::Tool_TauConstituentGetter::GetTauConstituents(const xAOD::Tau } //loop over charged PFOs - ATH_MSG_DEBUG("Get charged PFOs"); unsigned int nChargedPFO = 0; nChargedPFO = tauJet->nProtoChargedPFOs(); - ATH_MSG_DEBUG("Charged PFOs: " << nChargedPFO); for(unsigned int iChrgPFO=0; iChrgPFO<nChargedPFO; iChrgPFO++) { xAOD::PFO* curChrgPFO = 0; @@ -93,7 +82,6 @@ StatusCode PanTau::Tool_TauConstituentGetter::GetTauConstituents(const xAOD::Tau TLorentzVector v=curConst->p4(); //add to list of tau constituents - ATH_MSG_DEBUG("\tDumping contents of constituent at " << curConst); m_HelperFunctions.dumpTauConstituent2(curConst); outputConstituents.push_back(curConst); @@ -101,22 +89,15 @@ StatusCode PanTau::Tool_TauConstituentGetter::GetTauConstituents(const xAOD::Tau // Pi0 tagged PFOs are not collected! - //loop over neutral PFOs - ATH_MSG_DEBUG("Get neutral ones..."); unsigned int nNeutPFO = 0; nNeutPFO = tauJet->nProtoNeutralPFOs(); - ATH_MSG_DEBUG("Neutral PFOs: " << nNeutPFO); for(unsigned int iNeutPFO=0; iNeutPFO<nNeutPFO; iNeutPFO++) { xAOD::PFO* curNeutPFO = 0; curNeutPFO = const_cast<xAOD::PFO*>(tauJet->protoNeutralPFO( iNeutPFO )); - // Call vertex correction here - // Will: moved to TauPi0ClusterScaler - //m_HelperFunctions.vertexCorrection_PFOs(tauJet, curNeutPFO); - //convert to tau constituent PanTau::TauConstituent2* curConst = 0; ATH_CHECK( m_Tool_InputConverter->ConvertToTauConstituent2(curNeutPFO, curConst, tauJet) ); @@ -126,7 +107,6 @@ StatusCode PanTau::Tool_TauConstituentGetter::GetTauConstituents(const xAOD::Tau } //add to list of tau constituents - ATH_MSG_DEBUG("\tDumping contents of constituent at " << curConst); m_HelperFunctions.dumpTauConstituent2(curConst); outputConstituents.push_back(curConst); diff --git a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentSelector.cxx b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentSelector.cxx index aa7d83c9e1e0f3ce872549529d18881df254075b..1da2fdceff1db9b5b15f5911271bfec5acdc30e2 100644 --- a/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentSelector.cxx +++ b/Reconstruction/PanTau/PanTauAlgs/Root/Tool_TauConstituentSelector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ @@ -88,10 +88,9 @@ StatusCode PanTau::Tool_TauConstituentSelector::SelectTauConstituents( std::vec std::vector<TauConstituent2*>& outputList) const { unsigned int nConst = inputList.size(); - ATH_MSG_DEBUG("Perform tau constituent selection on " << nConst << "constituents"); + for(unsigned int iConst=0; iConst<nConst; iConst++) { - ATH_MSG_DEBUG("===>Constituent " << iConst << " / " << nConst); - + PanTau::TauConstituent2* curConstituent = inputList[iConst]; //general preselection: @@ -102,7 +101,6 @@ StatusCode PanTau::Tool_TauConstituentSelector::SelectTauConstituents( std::vec } bool passesSelection = false; - ATH_MSG_DEBUG("Before selection, constituent is of type: " << curConstituent->getTypeNameString() ); // check if constituent is charged: if(curConstituent->isOfType(PanTau::TauConstituent2::t_Charged) == true) { @@ -139,43 +137,37 @@ StatusCode PanTau::Tool_TauConstituentSelector::SelectTauConstituents( std::vec ATH_MSG_WARNING("Unhandled constituent type (" << curConstituent->getTypeNameString() << ") when trying to apply constituent selection - constituent will not be selected!"); passesSelection = false; } - ATH_MSG_DEBUG("After selection (with result " << passesSelection << "), constituent is of type: " << curConstituent->getTypeNameString() ); if(passesSelection == false) continue; outputList.push_back(inputList[iConst]); } - ATH_MSG_DEBUG("Out of " << nConst << " contituents, " << outputList.size() << " passed the selection"); - return StatusCode::SUCCESS; } bool PanTau::Tool_TauConstituentSelector::passesSelection_NeutralConstituent(PanTau::TauConstituent2* tauConstituent) const { - ATH_MSG_DEBUG("neutral sel for const at: " << tauConstituent); + TLorentzVector tlv_Constituent = tauConstituent->p4(); double curEta = tlv_Constituent.Eta(); double cut_MinEt = getEtCut(fabs(curEta), PanTau::TauConstituent2::t_Neutral); double curEt = tlv_Constituent.Et(); - ATH_MSG_DEBUG("curEt (" << curEt << ") < cut_MinEt (" << cut_MinEt << ") ? "); -// ATH_MSG_DEBUG("curEt (" << curEt << ") < cut_MinEt (" << cut_MinEt << ") ? --- with curEta=" << curEta << "PanTau::TauConstituent2::t_Neutral=" << PanTau::TauConstituent2::t_Neutral); + if(curEt < cut_MinEt) { ATH_MSG_DEBUG("\tNot using constituent at eta " << curEta << " with et of " << curEt); return false; } - ATH_MSG_DEBUG("Passed!"); - return true; } bool PanTau::Tool_TauConstituentSelector::passesSelection_Pi0NeutConstituent(PanTau::TauConstituent2* tauConstituent) const { - ATH_MSG_DEBUG("pi0neut sel for const at: " << tauConstituent); + TLorentzVector tlv_Constituent = tauConstituent->p4(); double curEta = tlv_Constituent.Eta(); @@ -191,28 +183,10 @@ bool PanTau::Tool_TauConstituentSelector::passesSelection_Pi0NeutConstituent( -bool PanTau::Tool_TauConstituentSelector::passesSelection_ChargedConstituent(PanTau::TauConstituent2* tauConstituent) const { - - TLorentzVector tlv_Constituent = tauConstituent->p4(); +bool PanTau::Tool_TauConstituentSelector::passesSelection_ChargedConstituent(PanTau::TauConstituent2* /*tauConstituent*/) const { // we want to use all tracks return true; - - /* - - double curEta = tlv_Constituent.Eta(); - double cut_MinEt = getEtCut(fabs(curEta), PanTau::TauConstituent2::t_Charged); - double curEt = tlv_Constituent.Pt(); - - if(curEt < cut_MinEt) { - ATH_MSG_DEBUG("\tNot using constituent at eta " << curEta << " with et of " << curEt); - return false; - } - - return true; - - */ - } @@ -229,23 +203,10 @@ bool PanTau::Tool_TauConstituentSelector::passesSelection_OutNeutConstituent( } -bool PanTau::Tool_TauConstituentSelector::passesSelection_OutChrgConstituent(TauConstituent2* TauConstituent) const { - - TLorentzVector tlv_Constituent = TauConstituent->p4(); +bool PanTau::Tool_TauConstituentSelector::passesSelection_OutChrgConstituent(TauConstituent2* /*TauConstituent*/) const { // we want to use all tracks return true; - - /* - - double curEta = tlv_Constituent.Eta(); - double cut_MinEt = getEtCut(fabs(curEta), PanTau::TauConstituent2::t_OutChrg); - double curEt = tlv_Constituent.Pt(); - - if(curEt < cut_MinEt) return false; - return true; - - */ }