ATLAS Offline Software
InDetTrkInJetType.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 //
5 // InDetTrkInJetType.h - Description
6 //
7 /*
8  Tool to classify track origins in a jet.
9  Track types:
10  0 - Heavy Flavour (Signal)
11  1 - Fragmentation tracks (Fragment)
12  2 - Garbage (Interactions+V0s+Pileup)
13  The corresponding weights are returned as vector<float> with track type ordering.
14  Multiclass TMVA is used for classification, then wgt[0]+wgt[1]+wgt[2]=1 always.
15 
16  The tool works (calibrated) for 35GeV<JetPt<3.5TeV.
17  Jets above 3.5TeV and below 35GeV are considered as having 3.5TeV and 35GeV correspondingly.
18  The tool is trained using ttbar+Z'(2.5,5TeV)+JZ4,6,8 + Gbb7000 samples
19  The tool uses trkPt vs JetAxis (no any dR cone cut!) therefore the tool can be used for any jet with "reasonable" dR size.
20 
21  When setting the python configuration useFivePtJetBinVersion to True, a retrained TCT BDT model is used, where five BDTs were
22  trained separately in the regions [0.02,0.2]; [0.2,0.5]; [0.5,1]; [1,2] and [2,7] TeV with an Zprime, ZprimeExtended and ttbar sample.
23 
24  Either the TrackParticle objects can be decorated with the TCT score and a ElementLink to the Jet object, which was used to
25  calculate the TCT score (decorateTrack) or the Jet object can be decorated with a std::vector of TCT scores and a std::vector of ElementLinks
26  to TrackParticle associated with the given jet.
27 
28  Author: Vadim Kostyukhin
29  e-mail: vadim.kostyukhin@cern.ch
30 */
31 #ifndef InDet_InDetTrkInJetType_H
32 #define InDet_InDetTrkInJetType_H
33 
34 #include <vector>
36 #include "GaudiKernel/ToolHandle.h"
37 #include "xAODJet/JetContainer.h"
40 
42 
43 //
44 
45 class TLorentzVector;
46 class IChronoStatSvc;
47 namespace MVAUtils { class BDT; }
48 namespace Trk { class TrkVKalVrtFitter; }
49 
50 namespace InDet {
51 
52 //------------------------------------------------------------------------
53  class IInDetTrkInJetType : virtual public IAlgTool {
54  public:
56 //---------------------------------------------------------------------------
57 //Interface itself
58 
59  virtual std::vector<float> trkTypeWgts( const xAOD::TrackParticle *, const xAOD::Vertex &, const TLorentzVector &) const =0;
60  virtual bool usesFivePtJetBinVersion() const=0;
61  virtual void decorateTrack(const xAOD::TrackParticle* , const xAOD::Vertex & , const xAOD::JetContainer & , const xAOD::Jet* ) const =0;
62  virtual void decorateJet(const std::vector<const xAOD::TrackParticle*> & , const xAOD::TrackParticleContainer& , const xAOD::Vertex & , const xAOD::Jet* ) const =0;
63 
64 
65  };
66 
67 
68 
69 
70  class InDetTrkInJetType : public extends<AthAlgTool, IInDetTrkInJetType>
71  {
72 
73  public:
74  /* Constructor */
75  InDetTrkInJetType(const std::string& type, const std::string& name, const IInterface* parent);
76  /* Destructor */
77  virtual ~InDetTrkInJetType();
78 
79 
80  virtual StatusCode initialize() override;
81  virtual StatusCode finalize() override;
82 
83  virtual std::vector<float> trkTypeWgts(const xAOD::TrackParticle *, const xAOD::Vertex &, const TLorentzVector &) const override;
84  /* return the five ptjet bin mode: if true, the retrained FivePtJetBin TCT BDT is used; if false, the default TCT BDT is used */
85  virtual bool usesFivePtJetBinVersion() const override {return m_useFivePtJetBinVersion; }
86  /* decorates a TrackParticle associated to the given Jet (element from the passed JetContainer)*/
87  virtual void decorateTrack(const xAOD::TrackParticle* , const xAOD::Vertex & , const xAOD::JetContainer & , const xAOD::Jet* ) const override;
88  /* decorates a Jet with the TCT scores and TrackParticleLinks of the tracks passed through the std::vector*/
89  virtual void decorateJet(const std::vector<const xAOD::TrackParticle*> & , const xAOD::TrackParticleContainer& , const xAOD::Vertex & , const xAOD::Jet* ) const override;
90 
91 
92 //------------------------------------------------------------------------------------------------------------------
93 // Private data and functions
94 //
95 
96  private:
97 
98  std::vector<std::unique_ptr<MVAUtils::BDT>> m_vTrkClassBDT{};
99  IChronoStatSvc* m_timingProfile{};
100 
103  float m_trkChi2Cut{};
104  float m_trkMinPtCut{};
105  float m_jetMaxPtCut{};
106  float m_jetMinPtCut{};
107  float m_d0_limLow{};
108  float m_d0_limUpp{};
109  float m_Z0_limLow{};
110  float m_Z0_limUpp{};
111  std::string m_calibFileName;
113  std::string m_jetCollection;
115  ToolHandle < Trk::IVertexFitter > m_fitterSvc
116  {this, "VertexFitterTool", "Trk::TrkVKalVrtFitter/VertexFitterTool",""};
118 
120 
121  //numbering of the jet pt slices
123 
125  //from https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx
127  "","WriteDecorHandleKey for adding TCT score to TrackParticles"};
129  "","WriteDecorHandleKey for adding JetLink to TrackParticles"};
130 
133  "","WriteDecorHandleKey for adding TCT score to Jets"};
135  "","WriteDecorHandleKey for adding TrackParticleLink to Jets"};
136 
137 
138  };
139 
140 
141 
142 
143 } //end namespace
144 #endif
InDet::InDetTrkInJetType::m_jetWriteDecorKeyTrackLink
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetWriteDecorKeyTrackLink
Definition: InDetTrkInJetType.h:134
InDet::InDetTrkInJetType::m_fitterSvc
ToolHandle< Trk::IVertexFitter > m_fitterSvc
Definition: InDetTrkInJetType.h:116
InDet::InDetTrkInJetType::m_vTrkClassBDT
std::vector< std::unique_ptr< MVAUtils::BDT > > m_vTrkClassBDT
Definition: InDetTrkInJetType.h:98
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer >
InDet::InDetTrkInJetType::m_useFivePtJetBinVersion
bool m_useFivePtJetBinVersion
Definition: InDetTrkInJetType.h:114
InDet::InDetTrkInJetType::finalize
virtual StatusCode finalize() override
Definition: InDetTrkInJetType.cxx:137
InDet::InDetTrkInJetType
Definition: InDetTrkInJetType.h:71
MVAUtils
Definition: InDetTrkInJetType.h:47
InDet::IInDetTrkInJetType::DeclareInterfaceID
DeclareInterfaceID(IInDetTrkInJetType, 1, 0)
InDet::InDetTrkInJetType::m_timingProfile
IChronoStatSvc * m_timingProfile
Definition: InDetTrkInJetType.h:99
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::InDetTrkInJetType::m_trkSctHitsCut
int m_trkSctHitsCut
Definition: InDetTrkInJetType.h:101
MVAUtils::BDT
Simplified Boosted Regression Tree, support TMVA, lgbm, and xgboost.
Definition: BDT.h:34
InDet::InDetTrkInJetType::m_jetCollection
std::string m_jetCollection
Definition: InDetTrkInJetType.h:113
InDet::InDetTrkInJetType::decorateTrack
virtual void decorateTrack(const xAOD::TrackParticle *, const xAOD::Vertex &, const xAOD::JetContainer &, const xAOD::Jet *) const override
Definition: InDetTrkInJetType.cxx:237
InDet::IInDetTrkInJetType::trkTypeWgts
virtual std::vector< float > trkTypeWgts(const xAOD::TrackParticle *, const xAOD::Vertex &, const TLorentzVector &) const =0
InDet::InDetTrkInJetType::e_ptjet1to2TeV
@ e_ptjet1to2TeV
Definition: InDetTrkInJetType.h:122
InDet::InDetTrkInJetType::InDetTrkInJetType
InDetTrkInJetType(const std::string &type, const std::string &name, const IInterface *parent)
Definition: InDetTrkInJetType.cxx:19
InDet::InDetTrkInJetType::m_calibFileNameFivePtJetBin
std::string m_calibFileNameFivePtJetBin
Definition: InDetTrkInJetType.h:112
InDet::InDetTrkInJetType::e_ptjet0p2to0p5TeV
@ e_ptjet0p2to0p5TeV
Definition: InDetTrkInJetType.h:122
InDet::InDetTrkInJetType::m_d0_limUpp
float m_d0_limUpp
Definition: InDetTrkInJetType.h:108
InDet::IInDetTrkInJetType::decorateTrack
virtual void decorateTrack(const xAOD::TrackParticle *, const xAOD::Vertex &, const xAOD::JetContainer &, const xAOD::Jet *) const =0
InDet::InDetTrkInJetType::~InDetTrkInJetType
virtual ~InDetTrkInJetType()
Definition: InDetTrkInJetType.cxx:55
InDet::InDetTrkInJetType::m_trkMinPtCut
float m_trkMinPtCut
Definition: InDetTrkInJetType.h:104
InDet::InDetTrkInJetType::m_d0_limLow
float m_d0_limLow
Definition: InDetTrkInJetType.h:107
InDet::IInDetTrkInJetType::usesFivePtJetBinVersion
virtual bool usesFivePtJetBinVersion() const =0
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::InDetTrkInJetType::m_Z0_limUpp
float m_Z0_limUpp
Definition: InDetTrkInJetType.h:110
AthAlgTool.h
InDet::InDetTrkInJetType::e_ptjet0p5to1TeV
@ e_ptjet0p5to1TeV
Definition: InDetTrkInJetType.h:122
WriteDecorHandle.h
Handle class for adding a decoration to an object.
test_pyathena.parent
parent
Definition: test_pyathena.py:15
InDet::IInDetTrkInJetType
Definition: InDetTrkInJetType.h:53
InDet::InDetTrkInJetType::trkTypeWgts
virtual std::vector< float > trkTypeWgts(const xAOD::TrackParticle *, const xAOD::Vertex &, const TLorentzVector &) const override
Definition: InDetTrkInJetType.cxx:144
InDet::IInDetTrkInJetType::decorateJet
virtual void decorateJet(const std::vector< const xAOD::TrackParticle * > &, const xAOD::TrackParticleContainer &, const xAOD::Vertex &, const xAOD::Jet *) const =0
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
InDet::InDetTrkInJetType::e_ptjetRange
e_ptjetRange
Definition: InDetTrkInJetType.h:122
InDet::InDetTrkInJetType::m_jetMaxPtCut
float m_jetMaxPtCut
Definition: InDetTrkInJetType.h:105
InDet::InDetTrkInJetType::usesFivePtJetBinVersion
virtual bool usesFivePtJetBinVersion() const override
Definition: InDetTrkInJetType.h:85
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
InDet::InDetTrkInJetType::m_jetMinPtCut
float m_jetMinPtCut
Definition: InDetTrkInJetType.h:106
IVertexFitter.h
InDet::InDetTrkInJetType::m_fitSvc
Trk::TrkVKalVrtFitter * m_fitSvc
Definition: InDetTrkInJetType.h:117
InDet::InDetTrkInJetType::e_ptjet0to0p2TeV
@ e_ptjet0to0p2TeV
Definition: InDetTrkInJetType.h:122
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
InDet::InDetTrkInJetType::e_ptjet2to7TeV
@ e_ptjet2to7TeV
Definition: InDetTrkInJetType.h:122
InDet::InDetTrkInJetType::m_Z0_limLow
float m_Z0_limLow
Definition: InDetTrkInJetType.h:109
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetContainer.h
InDet::InDetTrkInJetType::m_calibFileName
std::string m_calibFileName
Definition: InDetTrkInJetType.h:111
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
InDet::InDetTrkInJetType::m_trkChi2Cut
float m_trkChi2Cut
Definition: InDetTrkInJetType.h:103
InDet::InDetTrkInJetType::m_trkPixelHitsCut
int m_trkPixelHitsCut
Definition: InDetTrkInJetType.h:102
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
InDet::InDetTrkInJetType::m_trackWriteDecorKeyJetLink
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackWriteDecorKeyJetLink
Definition: InDetTrkInJetType.h:128
InDet::InDetTrkInJetType::initialize
virtual StatusCode initialize() override
Definition: InDetTrkInJetType.cxx:60
InDet::InDetTrkInJetType::m_trackWriteDecorKeyTCTScore
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackWriteDecorKeyTCTScore
The write key for adding TCT score as decoration to TrackParticle objects.
Definition: InDetTrkInJetType.h:126
InDet::InDetTrkInJetType::m_jetWriteDecorKeyTCTScore
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetWriteDecorKeyTCTScore
The write key for adding TCT score as decoration to Jet objects.
Definition: InDetTrkInJetType.h:132
TrackParticleContainer.h
InDet::InDetTrkInJetType::m_initialised
int m_initialised
Definition: InDetTrkInJetType.h:119
InDet::InDetTrkInJetType::decorateJet
virtual void decorateJet(const std::vector< const xAOD::TrackParticle * > &, const xAOD::TrackParticleContainer &, const xAOD::Vertex &, const xAOD::Jet *) const override
Definition: InDetTrkInJetType.cxx:251
Trk::TrkVKalVrtFitter
Definition: TrkVKalVrtFitter.h:67