ATLAS Offline Software
IPTag.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef JETTAGTOOLS_IPTAG_H
6 #define JETTAGTOOLS_IPTAG_H
7 
8 /******************************************************
9  @class IPTag
10  b-jet tagger based on 2D or 3D impact parameter
11  @author CPPM Marseille
12 ********************************************************/
13 
15 #include "GaudiKernel/ToolHandle.h"
16 #include "JetTagTools/ITagTool.h"
17 #include <string>
18 #include <vector>
19 #include <atomic>
20 
21 namespace Trk { class ITrackToVertexIPEstimator; }
22 
23 namespace Analysis {
24 
25  class NewLikelihoodTool;
26  class HistoHelperRoot;
27  class TrackSelector;
28  class TrackGrade;
29  class TrackGradePartition;
30  class SVForIPTool;
31  class ITrackGradeFactory;
32 
33 
34  class IPTag : public extends<AthAlgTool, ITagTool>
35  {
36  public:
37  IPTag(const std::string&,const std::string&,const IInterface*);
38 
42  virtual ~IPTag();
43  virtual StatusCode initialize() override;
44  virtual StatusCode finalize() override;
45 
46 
47  virtual StatusCode tagJet(const xAOD::Vertex& priVtx,
48  const xAOD::Jet& jetToTag,
50  const std::string &jetName) const override;
51 
53  void trackWeight(const std::string& jetAuthor, const TrackGrade& grade, double sa0, double sz0,
54  double & twb, double & twu, double & twc) const;
55 
56  virtual void finalizeHistos() override {};
57 
58  private:
59 
63  std::string m_runModus;
64 
66  std::string m_xAODBaseName;
67 
70 
72  bool m_flipIP; // reverse impact parameter signs for negative tag calibration method
73  bool m_flipZIP; // reverse Z impact parameter signs for negative tag calibration method
74  bool m_usePosIP; // use tracks with positive impact parameter for tagging
75  bool m_useNegIP; // use tracks with negative impact parameter for tagging
76  bool m_useZIPSignForPosNeg; // use Z impact parameter sign as well to select Pos and Neg tracks
77  bool m_use2DSignForIP3D; // force to use 2D IP sign even for IP3D IP
78  bool m_useD0SignForZ0; // force to use transverse IP sign for Z impact parameter for IP3D
79  bool m_sortPt; // sorting input tracks by pt
80  bool m_sortD0sig; // sorting input tracks by d0sig
81  bool m_sortZ0D0sig; // sorting input tracks by z0d0sig
84  bool m_checkOverflows; // if true put the overflows in the first/last bins
86  bool m_useCHypo;
87  bool m_unbiasIPEstimation; // remove track from vertex when computing IP
88 
89  // make the output smaller
93 
95 
97 
99  std::string m_impactParameterView;
100 
102  std::string m_forcedCalibName;
103 
105  std::string m_referenceType; // label to use for reference mode
106  double m_purificationDeltaR; // skip light jets with heavy flavor in this cone
107  double m_jetPtMinRef; // min cut on jet pT for reference
108 
110  std::string m_secVxFinderName;
111 
113  int m_NtrkMin; // minimum number of tracks to consider
114  int m_NtrkMax; // maximum number of tracks to consider (min will always prevail)
115  float m_trkFract; // fraction of total tracks to consider (min will alwayt prevail)
116  std::string m_sortOption; // steering option
117 
118 
120  std::vector<std::string> m_hypotheses; // hypotheses: b | u
122  std::vector<std::string> m_trackGradePartitionsDefinition;
123  std::vector<TrackGradePartition*> m_trackGradePartitions;
124  std::vector<std::string> m_jetCollectionList;
125 
126 
128 
129  ToolHandle< TrackSelector > m_trackSelectorTool;
130 
132  ToolHandle< NewLikelihoodTool > m_likelihoodTool;
133 
135  ToolHandle< SVForIPTool > m_SVForIPTool;
136 
138  ToolHandle< ITrackGradeFactory > m_trackGradeFactory;
139 
141  ToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimator;
142 
143  // VD: for debugging
144  mutable std::atomic<int> m_nbjet;
145  mutable std::atomic<int> m_ncjet;
146  mutable std::atomic<int> m_nljet;
147 
148  }; // End class
149 
150 } // End namespace
151 
152 #endif
Analysis::IPTag::m_trackGradeFactory
ToolHandle< ITrackGradeFactory > m_trackGradeFactory
ToolHandle for the ITrackGradeFactory tool.
Definition: IPTag.h:138
Analysis::IPTag::m_unbiasIPEstimation
bool m_unbiasIPEstimation
Definition: IPTag.h:87
Analysis::IPTag::m_sortD0sig
bool m_sortD0sig
Definition: IPTag.h:80
Analysis::IPTag::m_SignWithSvx
bool m_SignWithSvx
Definition: IPTag.h:83
Analysis::IPTag::m_RejectBadTracks
bool m_RejectBadTracks
Definition: IPTag.h:82
Analysis::TrackGrade
Definition: TrackGrade.h:11
Analysis::IPTag::IPTag
IPTag(const std::string &, const std::string &, const IInterface *)
Definition: IPTag.cxx:62
Analysis::IPTag::m_jetCollectionList
std::vector< std::string > m_jetCollectionList
Definition: IPTag.h:124
Analysis::IPTag::initialize
virtual StatusCode initialize() override
Definition: IPTag.cxx:138
Analysis::IPTag::m_storeTrackParameters
bool m_storeTrackParameters
Definition: IPTag.h:92
Analysis::IPTag::m_storeIpValues
bool m_storeIpValues
Definition: IPTag.h:91
Analysis::IPTag::m_use2DSignForIP3D
bool m_use2DSignForIP3D
Definition: IPTag.h:77
Analysis::HistoHelperRoot
Helper class for histograming.
Definition: HistoHelperRoot.h:36
Analysis::IPTag::m_sortOption
std::string m_sortOption
Definition: IPTag.h:116
Analysis::IPTag::m_forcedCalibName
std::string m_forcedCalibName
forcing the calibration folder of a given collection
Definition: IPTag.h:102
Analysis::IPTag::m_sortPt
bool m_sortPt
Definition: IPTag.h:79
Analysis::IPTag::m_jetPtMinRef
double m_jetPtMinRef
Definition: IPTag.h:107
Analysis::IPTag::m_useZIPSignForPosNeg
bool m_useZIPSignForPosNeg
Definition: IPTag.h:76
Analysis::IPTag::m_sortZ0D0sig
bool m_sortZ0D0sig
Definition: IPTag.h:81
Analysis::IPTag::m_xAODBaseName
std::string m_xAODBaseName
base name string for persistification in xaod
Definition: IPTag.h:66
Analysis::IPTag::trackWeight
void trackWeight(const std::string &jetAuthor, const TrackGrade &grade, double sa0, double sz0, double &twb, double &twu, double &twc) const
calculate individual track contribution to the three likelihoods:
Definition: IPTag.cxx:796
TrackSelector
Definition: Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/TrackSelector.h:24
Analysis::IPTag::finalizeHistos
virtual void finalizeHistos() override
Definition: IPTag.h:56
Analysis::IPTag::m_likelihoodTool
ToolHandle< NewLikelihoodTool > m_likelihoodTool
Pointer to the likelihood tool.
Definition: IPTag.h:132
Analysis::IPTag::m_purificationDeltaR
double m_purificationDeltaR
Definition: IPTag.h:106
Analysis::IPTag::m_useCHypo
bool m_useCHypo
Definition: IPTag.h:86
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Analysis::IPTag::finalize
virtual StatusCode finalize() override
Definition: IPTag.cxx:323
ITagTool.h
AthAlgTool.h
Analysis::IPTag::m_impactParameterView
std::string m_impactParameterView
specify the tag type (1D or 2D)
Definition: IPTag.h:99
Analysis::IPTag::m_useNegIP
bool m_useNegIP
Definition: IPTag.h:75
Analysis::IPTag::m_hypotheses
std::vector< std::string > m_hypotheses
Definition: IPTag.h:120
Analysis::IPTag::m_flipIP
bool m_flipIP
VD: bool switches.
Definition: IPTag.h:72
ITrackGradeFactory
xAOD::BTagging_v1
Definition: BTagging_v1.h:39
Analysis::IPTag::m_trackToVertexIPEstimator
ToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimator
GP: Tool for the estimation of the IPs to the Vertex.
Definition: IPTag.h:141
Analysis::IPTag::~IPTag
virtual ~IPTag()
Implementations of the methods defined in the abstract base class.
Definition: IPTag.cxx:129
Analysis::IPTag::m_nljet
std::atomic< int > m_nljet
Definition: IPTag.h:146
Analysis::IPTag::m_trackGradePartitions
std::vector< TrackGradePartition * > m_trackGradePartitions
Definition: IPTag.h:123
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Analysis
The namespace of all packages in PhysicsAnalysis/JetTagging.
Definition: BTaggingCnvAlg.h:20
Analysis::IPTag::m_histoHelper
HistoHelperRoot * m_histoHelper
Histogram Helper Class.
Definition: IPTag.h:69
Analysis::IPTag::m_doForcedCalib
bool m_doForcedCalib
Definition: IPTag.h:85
Analysis::IPTag::m_SVForIPTool
ToolHandle< SVForIPTool > m_SVForIPTool
Pointer to the SV tool.
Definition: IPTag.h:135
Analysis::IPTag::tagJet
virtual StatusCode tagJet(const xAOD::Vertex &priVtx, const xAOD::Jet &jetToTag, xAOD::BTagging &BTag, const std::string &jetName) const override
Definition: IPTag.cxx:332
Analysis::IPTag::m_checkOverflows
bool m_checkOverflows
Definition: IPTag.h:84
Analysis::IPTag::m_nbjet
std::atomic< int > m_nbjet
Definition: IPTag.h:144
Analysis::IPTag::m_ncjet
std::atomic< int > m_ncjet
Definition: IPTag.h:145
Analysis::IPTag
Definition: IPTag.h:35
Analysis::IPTag::m_NtrkMin
int m_NtrkMin
additional switch for smart track selection
Definition: IPTag.h:113
Analysis::IPTag::m_trackSelectorTool
ToolHandle< TrackSelector > m_trackSelectorTool
Track selection cuts for IPTagging.
Definition: IPTag.h:129
Analysis::IPTag::m_secVxFinderName
std::string m_secVxFinderName
names of fools for getting the secondary vertex information
Definition: IPTag.h:110
Analysis::IPTag::m_trackAssociationName
std::string m_trackAssociationName
Name of the track-to-jet association in the BTagging object.
Definition: IPTag.h:96
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Analysis::IPTag::m_runModus
std::string m_runModus
This switch is needed to indicate what to do.
Definition: IPTag.h:56
Analysis::IPTag::m_flipZIP
bool m_flipZIP
Definition: IPTag.h:73
Analysis::IPTag::m_useD0SignForZ0
bool m_useD0SignForZ0
Definition: IPTag.h:78
Analysis::IPTag::m_trackGradePartitionsDefinition
std::vector< std::string > m_trackGradePartitionsDefinition
track classification.
Definition: IPTag.h:122
Analysis::IPTag::m_NtrkMax
int m_NtrkMax
Definition: IPTag.h:114
xAODType::BTag
@ BTag
The object is a b-tagging object.
Definition: ObjectType.h:60
Analysis::IPTag::m_trkFract
float m_trkFract
Definition: IPTag.h:115
Analysis::IPTag::m_usePosIP
bool m_usePosIP
Definition: IPTag.h:74
Analysis::IPTag::m_referenceType
std::string m_referenceType
for reference mode:
Definition: IPTag.h:105
Analysis::IPTag::m_storeTrackParticles
bool m_storeTrackParticles
Definition: IPTag.h:90