ATLAS Offline Software
BTaggingReader.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // $Id: BTaggingReader.cxx 583646 2014-02-17 12:58:15Z kparker $
6 
7 // Gaudi/Athena include(s):
9 
10 // EDM include(s):
12 // Local include(s):
13 #include "BTaggingReader.h"
14 // string formatting
15 #include <sstream>
16 #include <iomanip>
17 
18 using std::setw;
19 using std::setfill;
20 
21 namespace xAODReader {
22 
23  BTaggingReader::BTaggingReader( const std::string& name, ISvcLocator* svcLoc )
24  : AthAlgorithm( name, svcLoc ) {
25 
26  declareProperty( "ContainerName", m_containerName = "BTagging" );
27 
28  }
29 
31 
32  ATH_MSG_DEBUG( "Initialising" );
33  ATH_MSG_DEBUG( " ContainerName = \"" << m_containerName << "\"" );
34 
35  // Return gracefully:
36  return StatusCode::SUCCESS;
37  }
38 
40 
41  // Retrieve the container:
42  const xAOD::BTaggingContainer* btagging =
43  evtStore()->retrieve< const xAOD::BTaggingContainer >( m_containerName );
44  if( ! btagging ) {
45  REPORT_MESSAGE( MSG::ERROR )
46  << "Couldn't retrieve btagging container with key: "
47  << m_containerName;
48  return StatusCode::FAILURE;
49  }
50 
51  // Check that the auxiliary store association was made successfully:
52  if( ! btagging->hasStore() ) {
53  REPORT_MESSAGE( MSG::ERROR )
54  << "No auxiliary store got associated to the btagging container "
55  << "with key: " << m_containerName;
56  return StatusCode::FAILURE;
57  }
58 
59  // Print some basic info:
60  ATH_MSG_DEBUG( "Number of btagging objects: " << btagging->size() );
61 
62  // Now print some detailed info about each btagging object:
63  auto btag_itr = btagging->begin();
64  auto btag_end = btagging->end();
65  for( int i = 0; btag_itr != btag_end; ++btag_itr, ++i ) {
66 
67  ATH_MSG_DEBUG( "########################################" );
68  ATH_MSG_DEBUG( "Investigating btagging object #" << i );
69 
70  // SV0
71  ATH_MSG_DEBUG( " SV0_significance3D = " << ( *btag_itr )->SV0_significance3D() );
72  // ELs: FIXME
73  //const std::vector< ElementLink< xAOD::TrackParticleContainer > > trackParticles = ( *btag_itr )->sv0_TrackParticles();
74  //ATH_MSG_DEBUG( " trackParticles.size() = " << trackParticles.size() );
75  //ATH_MSG_DEBUG( " trackParticles[0].isValid() = " << trackParticles[0].isValid() );
76  int SV0_NGTinJet;
77  int SV0_NGTinSvx;
78  int SV0_N2Tpair;
79  float SV0_masssvx;
80  float SV0_efracsvx;
81  float SV0_normdist;
82  if (( *btag_itr )->taggerInfo(SV0_NGTinJet, xAOD::SV0_NGTinJet))
83  ATH_MSG_DEBUG( " SV0_NGTinJet = " << SV0_NGTinJet );
84  if (( *btag_itr)->taggerInfo(SV0_NGTinSvx, xAOD::SV0_NGTinSvx))
85  ATH_MSG_DEBUG( " SV0_NGTinSvx = " << SV0_NGTinSvx );
86  if(( *btag_itr)->taggerInfo(SV0_N2Tpair, xAOD::SV0_N2Tpair))
87  ATH_MSG_DEBUG( " SV0_N2Tpair = " << SV0_N2Tpair );
88  if(( *btag_itr)->taggerInfo(SV0_masssvx, xAOD::SV0_masssvx))
89  ATH_MSG_DEBUG( " SV0_masssvx = " << SV0_masssvx );
90  if(( *btag_itr)->taggerInfo(SV0_efracsvx, xAOD::SV0_efracsvx))
91  ATH_MSG_DEBUG( " SV0_efracsvx = " << SV0_efracsvx );
92  if(( *btag_itr)->taggerInfo(SV0_normdist, xAOD::SV0_normdist))
93  ATH_MSG_DEBUG( " SV0_normdist = " << SV0_normdist );
94 
95  // SV1
96  ATH_MSG_DEBUG( " SV1_pb = " << ( *btag_itr )->SV1_pb() );
97  ATH_MSG_DEBUG( " SV1_pc = " << ( *btag_itr )->SV1_pc() );
98  ATH_MSG_DEBUG( " SV1_pu = " << ( *btag_itr )->SV1_pu() );
99  // ELs: FIXME
100  int SV1_NGTinJet;
101  int SV1_NGTinSvx;
102  int SV1_N2Tpair;
103  float SV1_masssvx;
104  float SV1_efracsvx;
105  float SV1_normdist;
106  if(( *btag_itr)->taggerInfo(SV1_NGTinJet, xAOD::SV1_NGTinJet))
107  ATH_MSG_DEBUG( " SV1_NGTinJet = " << SV1_NGTinJet );
108  if(( *btag_itr)->taggerInfo(SV1_NGTinSvx, xAOD::SV1_NGTinSvx))
109  ATH_MSG_DEBUG( " SV1_NGTinSvx = " << SV1_NGTinSvx );
110  if(( *btag_itr)->taggerInfo(SV1_N2Tpair, xAOD::SV1_N2Tpair))
111  ATH_MSG_DEBUG( " SV1_N2Tpair = " << SV1_N2Tpair );
112  if(( *btag_itr)->taggerInfo(SV1_masssvx, xAOD::SV1_masssvx))
113  ATH_MSG_DEBUG( " SV1_masssvx = " << SV1_masssvx );
114  if(( *btag_itr)->taggerInfo(SV1_efracsvx, xAOD::SV1_efracsvx))
115  ATH_MSG_DEBUG( " SV1_efracsvx = " << SV1_efracsvx );
116  if(( *btag_itr)->taggerInfo(SV1_normdist, xAOD::SV1_normdist))
117  ATH_MSG_DEBUG( " SV1_normdist = " << SV1_normdist );
118 
119  // IP3D
120  ATH_MSG_DEBUG( " IP3D_pb = " << ( *btag_itr )->IP3D_pb() );
121  ATH_MSG_DEBUG( " IP3D_pc = " << ( *btag_itr )->IP3D_pc() );
122  ATH_MSG_DEBUG( " IP3D_pu = " << ( *btag_itr )->IP3D_pu() );
123  // ELs: FIXME
124  int IP3D_ntrk;
125  std::vector<int> IP3D_gradeOfTracks;
126  std::vector<float> IP3D_valD0wrtPVofTracks;
127  std::vector<float> IP3D_sigD0wrtPVofTracks;
128  std::vector<float> IP3D_valZ0wrtPVofTracks;
129  std::vector<float> IP3D_sigZ0wrtPVofTracks;
130  // float IP3D_trackWeight2D;
131  // float IP3D_trackWeight3D;
132  // float IP3D_trackProbJP;
133  // float IP3D_trackProbJPneg;
134  // bool IP3D_isFromV0;
135  // std::string IP3D_gradeName;
136  if(( *btag_itr)->taggerInfo(IP3D_ntrk, xAOD::IP3D_ntrk))
137  ATH_MSG_DEBUG( " IP3D_ntrk = " << IP3D_ntrk );
138  bool foundGrades = ( *btag_itr)->taggerInfo(IP3D_gradeOfTracks, xAOD::IP3D_gradeOfTracks);
139  bool foundvalD0 = ( *btag_itr)->taggerInfo(IP3D_valD0wrtPVofTracks, xAOD::IP3D_valD0wrtPVofTracks);
140  bool foundsigD0 = ( *btag_itr)->taggerInfo(IP3D_sigD0wrtPVofTracks, xAOD::IP3D_sigD0wrtPVofTracks);
141  bool foundvalZ0 = ( *btag_itr)->taggerInfo(IP3D_valZ0wrtPVofTracks, xAOD::IP3D_valZ0wrtPVofTracks);
142  bool foundsigZ0 = ( *btag_itr)->taggerInfo(IP3D_sigZ0wrtPVofTracks, xAOD::IP3D_sigZ0wrtPVofTracks);
143  for (unsigned int t = 0; t < static_cast<unsigned int>(IP3D_ntrk); ++t) {
144  std::ostringstream s; s << " track[" << t << "]: grade = " << setw(6);
145  if (foundGrades && t < IP3D_gradeOfTracks.size()) s << IP3D_gradeOfTracks[t];
146  else s << setfill('-') << " ";
147  s << " d0 = " << setw(6);
148  if (foundvalD0 && t < IP3D_valD0wrtPVofTracks.size()) s << IP3D_valD0wrtPVofTracks[t];
149  else s << setfill('-') << " ";
150  s << " sig(d0) = " << setw(6);
151  if (foundsigD0 && t < IP3D_sigD0wrtPVofTracks.size()) s << IP3D_sigD0wrtPVofTracks[t];
152  else s << setfill('-') << " ";
153  s << " z0 = " << setw(6);
154  if (foundvalZ0 && t < IP3D_valZ0wrtPVofTracks.size()) s << IP3D_valZ0wrtPVofTracks[t];
155  else s << setfill('-') << " ";
156  s << " sig(z0) = " << setw(6);
157  if (foundsigZ0 && t < IP3D_sigZ0wrtPVofTracks.size()) s << IP3D_sigZ0wrtPVofTracks[t];
158  else s << setfill('-') << " ";
159  ATH_MSG_DEBUG( " IP3D" << s.str());
160  }
161  // ATH_MSG_DEBUG( " IP3D_gradeOfTracks = " << IP3D_gradeNumber );
162  // if(( *btag_itr)->taggerInfo(IP3D_valD0wrtPV, xAOD::IP3D_valD0wrtPVofTracks))
163  // ATH_MSG_DEBUG( " IP3D_valD0wrtPV = " << IP3D_valD0wrtPV );
164  // if(( *btag_itr)->taggerInfo(IP3D_sigD0wrtPV, xAOD::IP3D_sigD0wrtPV))
165  // ATH_MSG_DEBUG( " IP3D_sigD0wrtPV = " << IP3D_sigD0wrtPV );
166  // if(( *btag_itr)->taggerInfo(IP3D_valZ0wrtPV, xAOD::IP3D_valZ0wrtPV))
167  // ATH_MSG_DEBUG( " IP3D_valZ0wrtPV = " << IP3D_valZ0wrtPV );
168  // if(( *btag_itr)->taggerInfo(IP3D_sigZ0wrtPV, xAOD::IP3D_sigZ0wrtPV))
169  // ATH_MSG_DEBUG( " IP3D_sigZ0wrtPV = " << IP3D_sigZ0wrtPV );
170  // if(( *btag_itr)->taggerInfo(IP3D_trackWeight2D, xAOD::IP3D_trackWeight2D))
171  // ATH_MSG_DEBUG( " IP3D_trackWeight2D = " << IP3D_trackWeight2D );
172  // if(( *btag_itr)->taggerInfo(IP3D_trackWeight3D, xAOD::IP3D_trackWeight3D))
173  // ATH_MSG_DEBUG( " IP3D_trackWeight3D = " << IP3D_trackWeight3D );
174  // if(( *btag_itr)->taggerInfo(IP3D_trackProbJP, xAOD::IP3D_trackProbJP))
175  // ATH_MSG_DEBUG( " IP3D_trackProbJP = " << IP3D_trackProbJP );
176  // if(( *btag_itr)->taggerInfo(IP3D_trackProbJPneg, xAOD::IP3D_trackProbJPneg))
177  // ATH_MSG_DEBUG( " IP3D_trackProbJPneg = " << IP3D_trackProbJPneg );
178  // if(( *btag_itr)->taggerInfo(IP3D_isFromV0, xAOD::IP3D_isFromV0))
179  // ATH_MSG_DEBUG( " IP3D_isFromV0 = " << IP3D_isFromV0 );
180  // if(( *btag_itr)->taggerInfo(IP3D_gradeName, xAOD::IP3D_gradeName))
181  // ATH_MSG_DEBUG( " IP3D_gradeName = " << IP3D_gradeName );
182 
183  // JetFitter
184  ATH_MSG_DEBUG( " JetFitter_pb = " << ( *btag_itr )->JetFitter_pb() );
185  ATH_MSG_DEBUG( " JetFitter_pc = " << ( *btag_itr )->JetFitter_pc() );
186  ATH_MSG_DEBUG( " JetFitter_pu = " << ( *btag_itr )->JetFitter_pu() );
187  int JetFitter_nVTX;
190  float JetFitter_mass;
193  float JetFitter_deltaeta;
194  float JetFitter_deltaphi;
195  if(( *btag_itr)->taggerInfo(JetFitter_nVTX, xAOD::JetFitter_nVTX))
196  ATH_MSG_DEBUG( " JetFitter_nVTX = " << JetFitter_nVTX );
197  if(( *btag_itr)->taggerInfo(JetFitter_nSingleTracks, xAOD::JetFitter_nSingleTracks))
198  ATH_MSG_DEBUG( " JetFitter_nSingleTracks = " << JetFitter_nSingleTracks );
199  if(( *btag_itr)->taggerInfo(JetFitter_nTracksAtVtx, xAOD::JetFitter_nTracksAtVtx))
200  ATH_MSG_DEBUG( " JetFitter_nTracksAtVtx = " << JetFitter_nTracksAtVtx );
201  if(( *btag_itr)->taggerInfo(JetFitter_mass, xAOD::JetFitter_mass))
202  ATH_MSG_DEBUG( " JetFitter_mass = " << JetFitter_mass );
203  if(( *btag_itr)->taggerInfo(JetFitter_energyFraction, xAOD::JetFitter_energyFraction))
204  ATH_MSG_DEBUG( " JetFitter_energyFraction = " << JetFitter_energyFraction );
205  if(( *btag_itr)->taggerInfo(JetFitter_significance3d, xAOD::JetFitter_significance3d))
206  ATH_MSG_DEBUG( " JetFitter_significance3d = " << JetFitter_significance3d );
207  if(( *btag_itr)->taggerInfo(JetFitter_deltaeta, xAOD::JetFitter_deltaeta))
208  ATH_MSG_DEBUG( " JetFitter_deltaeta = " << JetFitter_deltaeta );
209  if(( *btag_itr)->taggerInfo(JetFitter_deltaphi, xAOD::JetFitter_deltaphi))
210  ATH_MSG_DEBUG( " JetFitter_deltaphi = " << JetFitter_deltaphi );
211 
212  // MV1
213  ATH_MSG_DEBUG( " MV1_discriminant = " << ( *btag_itr )->MV1_discriminant() );
214 
215  } //Loop over BTagging objects
216 
217  // Return gracefully:
218  return StatusCode::SUCCESS;
219  }
220 
221 } // namespace xAODReader
xAOD::JetFitter_deltaeta
@ JetFitter_deltaeta
JetFitter : Delta eta between jet and momentum sum of all tracks associated with displaced vertices r...
Definition: BTaggingEnums.h:56
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
xAOD::IP3D_ntrk
@ IP3D_ntrk
IP3D : number of tracks.
Definition: BTaggingEnums.h:80
xAOD::SV1_NGTinJet
@ SV1_NGTinJet
SV1 : Number of good tracks in jet.
Definition: BTaggingEnums.h:31
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAODReader::BTaggingReader::execute
virtual StatusCode execute()
Function executing the algorithm.
Definition: BTaggingReader.cxx:39
xAOD::JetFitter_nSingleTracks
@ JetFitter_nSingleTracks
JetFitter : Number of single tracks.
Definition: BTaggingEnums.h:46
xAOD::IP3D_valD0wrtPVofTracks
@ IP3D_valD0wrtPVofTracks
IP3D : d0 value with respect to primary vertex.
Definition: BTaggingEnums.h:86
xAOD::IP3D_sigD0wrtPVofTracks
@ IP3D_sigD0wrtPVofTracks
IP3D : d0 significance with respect to primary vertex.
Definition: BTaggingEnums.h:88
xAOD::SV1_N2Tpair
@ SV1_N2Tpair
SV1 : Number of 2-track pairs.
Definition: BTaggingEnums.h:35
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::SV1_normdist
@ SV1_normdist
SV1 : 3D vertex significance.
Definition: BTaggingEnums.h:41
xAOD::JetFitter_energyFraction
@ JetFitter_energyFraction
JetFitter : Jet efrac.
Definition: BTaggingEnums.h:52
xAOD::JetFitter_nVTX
@ JetFitter_nVTX
JetFitter : Number of vertices.
Definition: BTaggingEnums.h:44
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
BTaggingReader.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::SV0_NGTinSvx
@ SV0_NGTinSvx
SV0 : Number of good tracks in vertex.
Definition: BTaggingEnums.h:20
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::IP3D_gradeOfTracks
@ IP3D_gradeOfTracks
IP3D: track grade.
Definition: BTaggingEnums.h:82
xAOD::SV0_normdist
@ SV0_normdist
SV0 : 3D vertex significance.
Definition: BTaggingEnums.h:28
xAOD::JetFitter_mass
@ JetFitter_mass
JetFitter : Jet mass.
Definition: BTaggingEnums.h:50
xAOD::JetFitter_nTracksAtVtx
@ JetFitter_nTracksAtVtx
JetFitter : Number of tracks at vertex.
Definition: BTaggingEnums.h:48
xAOD::SV1_efracsvx
@ SV1_efracsvx
SV1 : energy fraction.
Definition: BTaggingEnums.h:39
xAOD::SV0_N2Tpair
@ SV0_N2Tpair
SV0 : Number of 2-track pairs.
Definition: BTaggingEnums.h:22
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::SV0_efracsvx
@ SV0_efracsvx
SV0 : energy fraction.
Definition: BTaggingEnums.h:26
AthAlgorithm
Definition: AthAlgorithm.h:47
xAOD::IP3D_sigZ0wrtPVofTracks
@ IP3D_sigZ0wrtPVofTracks
IP3D : z0 significance with respect to primary vertex.
Definition: BTaggingEnums.h:92
xAOD::JetFitter_significance3d
@ JetFitter_significance3d
JetFitter : 3D vertex significance.
Definition: BTaggingEnums.h:54
xAOD::SV0_NGTinJet
@ SV0_NGTinJet
SV0 : Number of good tracks in jet.
Definition: BTaggingEnums.h:18
BTaggingContainer.h
xAOD::SV1_NGTinSvx
@ SV1_NGTinSvx
SV1 : Number of good tracks in vertex.
Definition: BTaggingEnums.h:33
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
xAODReader::BTaggingReader::initialize
virtual StatusCode initialize()
Function initialising the algorithm.
Definition: BTaggingReader.cxx:30
errorcheck.h
Helpers for checking error return status codes and reporting errors.
REPORT_MESSAGE
#define REPORT_MESSAGE(LVL)
Report a message.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:365
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
xAOD::IP3D_valZ0wrtPVofTracks
@ IP3D_valZ0wrtPVofTracks
IP3D : z0 value with respect to primary vertex.
Definition: BTaggingEnums.h:90
xAOD::SV0_masssvx
@ SV0_masssvx
SV0 : vertex mass.
Definition: BTaggingEnums.h:24
xAODReader::BTaggingReader::BTaggingReader
BTaggingReader(const std::string &name, ISvcLocator *svcLoc)
Regular Algorithm constructor.
Definition: BTaggingReader.cxx:23
xAOD::JetFitter_deltaphi
@ JetFitter_deltaphi
JetFitter : Delta phi between jet and momentum sum of all tracks associated with displaced vertices r...
Definition: BTaggingEnums.h:58
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
xAODReader
Definition: BTaggingReader.cxx:21
xAODReader::BTaggingReader::m_containerName
std::string m_containerName
Name of the container to investigate.
Definition: BTaggingReader.h:46
xAOD::SV1_masssvx
@ SV1_masssvx
SV1 : vertex mass.
Definition: BTaggingEnums.h:37