ATLAS Offline Software
JetFitterVariablesFactory.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
21 
24 
26 
27 #include "CLHEP/Vector/LorentzVector.h"
28 
30 
32 
33 #include <vector>
34 
35 
36 namespace Analysis {
37 
39  const std::string& n, const IInterface* p):
40  AthAlgTool(name, n,p),
41  m_addNegativeTracksToPrimaryVertex(false),
42  m_usePtCorrectedEnergy(false),
43  m_useSingleTracksAlsoForMass(false)
44  {
45  declareProperty("addNegativeTracksToPrimaryVertex",m_addNegativeTracksToPrimaryVertex);
46  declareProperty("usePtCorrectedEnergy",m_usePtCorrectedEnergy);
47  declareProperty("useSingleTracksAlsoForMass",m_useSingleTracksAlsoForMass);
48  declareInterface<IJetFitterVariablesFactory>(this);
49  }
50 
54 
56 
58  ATH_MSG_INFO(" Initialization of JetFitterVariablesFactory succesfull");
59  return StatusCode::SUCCESS;
60 }
61 
63  ATH_MSG_INFO(" Finalization of JetFitterVariablesFactory succesfull");
64  return StatusCode::SUCCESS;
65 }
66 
68 
69  //VALERIO NASTY HACK!!!!
70  bool nastyVsRevertPosToNeg = (basename.find("Flip")!=std::string::npos);
71  int nVTX(0);
72  int nTracksAtVtx(0);
73  int nSingleTracks(0);
74  float energyFraction(0);
75  float mass(0);
76  float mass_uncorr(0);
77  float significance3d(0);
78  float deltaphi(0.);
79  float deltaeta(0.);
80  float chi2(0.);
81  int ndof(0);
82  float deltaRFlightDir(0.);
83 
84  std::vector<Trk::VxJetCandidate*> myVertices;
85  Trk::VxJetCandidate* myVxJetCandidate = nullptr;
86  if (myJetFitterInfo) myVertices = myJetFitterInfo->verticesJF();
87  if(myVertices.size() == 0){
88  ATH_MSG_DEBUG("#BTAG# Trk::VxJetCandidate not found for jet fitter ");
89  fill(BTag, basename, mass_uncorr, nVTX, nSingleTracks, nTracksAtVtx, mass, energyFraction, significance3d, deltaeta, deltaphi, chi2, ndof, deltaRFlightDir);
90  return StatusCode::SUCCESS;
91  }
92  if(myVertices.size() > 0) myVxJetCandidate=dynamic_cast<Trk::VxJetCandidate*>(myVertices[0]);
93  if (myVxJetCandidate==0) {
94  ATH_MSG_WARNING("#BTAG# No correct VxJetCandidate could be retrieved." );
95  fill(BTag, basename, mass_uncorr, nVTX, nSingleTracks, nTracksAtVtx, mass, energyFraction, significance3d, deltaeta, deltaphi, chi2, ndof, deltaRFlightDir);
96  return StatusCode::SUCCESS;
97  }
98 
99  const Trk::VxJetCandidate& myJetCandidate =*myVxJetCandidate;
100 
101  const Trk::SelectedTracksInJet* mySelectedTracksInJet = myJetFitterInfo->getSelectedTracksInJet();
102 
103 
104  //put all needed information inside :-)
105 
106  //const double s_massks=497.648;
107  const double s_pion=139.57018;//hard coded pion mass ;-)
108 
109  double energyFromPrimary=0.;
110  double energyFromSecondary=0.;
111 
112  // get fit quality variables for the PV of jetfitter
113  const Trk::VxVertexOnJetAxis* pvtxjet = myVxJetCandidate->getPrimaryVertex();
114  const Trk::FitQuality& fitquality = pvtxjet->fitQuality();
115  chi2 = fitquality.chiSquared();
116  ndof = fitquality.numberDoF();
117 
118  if (mySelectedTracksInJet!=0)
119  {
120  ATH_MSG_DEBUG(" Adding the tracks from primary vertex information ");
121  const std::vector<const Trk::ITrackLink*> & myPrimaryLinks=mySelectedTracksInJet->getPrimaryTrackLinks();
122 
123  std::vector<const Trk::ITrackLink*>::const_iterator myPrimaryLinksBegin=myPrimaryLinks.begin();
124  std::vector<const Trk::ITrackLink*>::const_iterator myPrimaryLinksEnd=myPrimaryLinks.end();
125 
126  for(std::vector<const Trk::ITrackLink*>::const_iterator myPrimaryLinksIter=myPrimaryLinksBegin;
127  myPrimaryLinksIter!=myPrimaryLinksEnd;
128  ++myPrimaryLinksIter)
129  {
130  const Trk::TrackParameters* myParameters=(*myPrimaryLinksIter)->parameters();
131  if (myParameters)
132  {
133  energyFromPrimary+=std::sqrt(s_pion*s_pion+myParameters->momentum().mag2());
134  }
135  else
136  {
137  ATH_MSG_WARNING(" no perigee in track for energy computation. Skipping primary track...");
138  }
139  }
140  } else
141  {
142  ATH_MSG_DEBUG(" No information about further primary tracks available. Normal in JetFitter vs. 1");
143  }
144 
145 
146  const Trk::RecVertexPositions & recVertexPositions=myJetCandidate.getRecVertexPositions();
147  const Amg::VectorX & vertexPosition=recVertexPositions.position();
148  const Amg::MatrixX & vertexCovMatrix = recVertexPositions.covariancePosition();
149 
150  Amg::Vector3D primaryPos(vertexPosition[Trk::jet_xv],
151  vertexPosition[Trk::jet_yv],
152  vertexPosition[Trk::jet_zv]);
153 
154  Amg::Vector3D flightAxis(1,1,1);//has to be different from 0
155  Amg::setPhi(flightAxis, vertexPosition[Trk::jet_phi]);
156  Amg::setTheta(flightAxis, vertexPosition[Trk::jet_theta]);
157 
158  xAOD::IParticle::FourMom_t JetVector = myJet.p4();
159 
160  //loop over primary vertex
161  const std::vector<Trk::VxTrackAtVertex*> & TracksAtPrimary=myJetCandidate.getPrimaryVertex()->getTracksAtVertex();
162  const std::vector<Trk::VxTrackAtVertex*>::const_iterator TracksAtPrimaryBegin=TracksAtPrimary.begin();
163  const std::vector<Trk::VxTrackAtVertex*>::const_iterator TracksAtPrimaryEnd=TracksAtPrimary.end();
164 
165  for (std::vector<Trk::VxTrackAtVertex*>::const_iterator TracksAtPrimaryIter=TracksAtPrimaryBegin;
166  TracksAtPrimaryIter!=TracksAtPrimaryEnd;
167  ++TracksAtPrimaryIter) {
168 
169  //FIXME: dynamic cast necessary? neutral perigee commented out, fix when vertex supports neutral
170  if (dynamic_cast<const Trk::Perigee*>((*TracksAtPrimaryIter)->perigeeAtVertex())!=0)
171  {
172 
173  energyFromPrimary+=
174  std::sqrt(s_pion*s_pion+
175  (*TracksAtPrimaryIter)->perigeeAtVertex()->momentum().mag2());
176  }
177  else
178  {
179  ATH_MSG_ERROR(" FIXME: VERTEX DOESN'T SUPPORT NEUTRAL PERIGEE, commented out in line 163");
180  ATH_MSG_ERROR(" Track is not a normal track neither a KS. This is an ERROR (ask developer to fix it). Skipping track... ");
181  }
182  }
183 
184 
185 
186 
187  Amg::Vector3D sumPAllVertices(0.,0.,0.);
188  CLHEP::HepLorentzVector massVector(0,0,0,0);
189  double sumPtAdd(0.);
190 
191  double dist(0.);
192  double inverrordist(0.);
193 
194  //now access the vertices on the jet axis info...
195  std::vector<Trk::VxVertexOnJetAxis*> vectorOfVertices=myJetCandidate.getVerticesOnJetAxis();
196 
197  //then you have to order them...
198  std::vector<Trk::VxVertexOnJetAxis*>::iterator vectorOfClustersOfTrackBegin=vectorOfVertices.begin();
199  std::vector<Trk::VxVertexOnJetAxis*>::iterator vectorOfClustersOfTrackEnd=vectorOfVertices.end();
200 
201  for (std::vector<Trk::VxVertexOnJetAxis*>::const_iterator vectorOfClustersOfTrackIter=vectorOfClustersOfTrackBegin;
202  vectorOfClustersOfTrackIter!=vectorOfClustersOfTrackEnd;
203  ++vectorOfClustersOfTrackIter) {
204 
205  const std::vector<Trk::VxTrackAtVertex*> & tracksOfVertex=(*vectorOfClustersOfTrackIter)->getTracksAtVertex();
206 
207  int vertexSize=tracksOfVertex.size();
208  int ntrack=(*vectorOfClustersOfTrackIter)->getNumVertex()+5;//gets the right component (should add EDM method which does
209  if (!nastyVsRevertPosToNeg)
210  {
211  if (vertexPosition[ntrack]>0) {
212  if (vertexSize>1) {
213  nVTX+=1;
214  nTracksAtVtx+=vertexSize;
215  } else {
216  nSingleTracks+=1;
217  }
218  }
219  }
220  else
221  {
222  if (vertexPosition[ntrack]<=0) {
223  if (vertexSize>1) {
224  nVTX+=1;
225  nTracksAtVtx+=vertexSize;
226  } else {
227  nSingleTracks+=1;
228  }
229  }
230  }
231  }
232 
233  for (std::vector<Trk::VxVertexOnJetAxis*>::const_iterator vectorOfClustersOfTrackIter=vectorOfClustersOfTrackBegin;
234  vectorOfClustersOfTrackIter!=vectorOfClustersOfTrackEnd;
235  ++vectorOfClustersOfTrackIter) {
236 
237  const std::vector<Trk::VxTrackAtVertex*> & tracksOfVertex=(*vectorOfClustersOfTrackIter)->getTracksAtVertex();
238  std::vector<Trk::VxTrackAtVertex*>::const_iterator clustersOfTrackBegin=tracksOfVertex.begin();
239  std::vector<Trk::VxTrackAtVertex*>::const_iterator clustersOfTrackEnd=tracksOfVertex.end();
240 
241  int vertexSize=tracksOfVertex.size();
242 
243  int ntrack=(*vectorOfClustersOfTrackIter)->getNumVertex()+5;//gets the right component (should add EDM method which does
244  // this nasty little addition of 5...)
245 
246 
247  if ((vertexPosition[ntrack]<0 && (!nastyVsRevertPosToNeg))||(vertexPosition[ntrack]>=0 && nastyVsRevertPosToNeg)) {
249  {
250  for (std::vector<Trk::VxTrackAtVertex*>::const_iterator clustersOfTrackIter=clustersOfTrackBegin;
251  clustersOfTrackIter!=clustersOfTrackEnd;++clustersOfTrackIter) {
252 
253  energyFromPrimary+=
254  std::hypot(s_pion, (*clustersOfTrackIter)->perigeeAtVertex()->momentum().mag());
255  }
256  }
257  } else {
258 
259  if ( (nVTX>0 && vertexSize>1) || nVTX==0 ) {
260  dist+=std::abs(vertexPosition[ntrack])/vertexCovMatrix(ntrack,ntrack);
261  if (vertexCovMatrix(ntrack,ntrack)>0)
262  {
263  inverrordist+=1./vertexCovMatrix(ntrack,ntrack);
264  }
265  else
266  {
267  ATH_MSG_WARNING("The diagonal element of the vertex cov matrix ("<<ntrack<<","<<ntrack<<") is "<<vertexCovMatrix(ntrack,ntrack)<<". It should be positive... Ignoring vertex when computing L/sigma(L)");
268  }
269  }
270 
271  Amg::Vector3D sumP(0.,0.,0.);
272  CLHEP::HepLorentzVector massThisCluster(0.,0.,0.,0.);
273 
274  //in case it's a real seconday vertex track...
275 
276  for (std::vector<Trk::VxTrackAtVertex*>::const_iterator clustersOfTrackIter=clustersOfTrackBegin;
277  clustersOfTrackIter!=clustersOfTrackEnd;
278  ++clustersOfTrackIter) {
279 
280 // const Trk::MeasuredPerigee* aMeasPer=static_cast<const Trk::MeasuredPerigee*>((*clustersOfTrackIter)->perigeeAtVertex());
281  const Trk::TrackParameters* aMeasPer=(*clustersOfTrackIter)->perigeeAtVertex();
282 // CLHEP::HepVector perigeeParms = aMeasPer->parameters();
283 
284  Amg::Vector3D mytrack(aMeasPer->momentum());
285  sumP+=mytrack;
286  if (dynamic_cast<const Trk::Perigee*>((*clustersOfTrackIter)->perigeeAtVertex())!=0)
287  {
288  massThisCluster+=CLHEP::HepLorentzVector(mytrack.x(), mytrack.y(), mytrack.z(), std::hypot(s_pion, mytrack.mag()));
289  }
290  else
291  {
292  ATH_MSG_ERROR("Neutral parameter has been taken out until Vertex has been rewritten to support neutral perigee again. ");
293  ATH_MSG_ERROR(" Track is not a normal track neither a KS. This is an ERROR (ask developer to fix it). Skipping track... ");
294  }
295  }
296 
297 
298  sumPAllVertices+=sumP;
299  double ptadd=sumP.perp(flightAxis.unit());
300  double masswithneutrals=std::sqrt(massThisCluster.mag2()+ptadd*ptadd)+ptadd;
301 
303  {
304  massVector+=massThisCluster;
305  }
306  else
307  {
308  if ( (nVTX>0 && vertexSize>1) || nVTX==0 ) {
309  massVector+=massThisCluster;
310  sumPtAdd+=ptadd;
311  }
312  }
313 
314 
316  {
317  energyFromSecondary+=std::sqrt(masswithneutrals*masswithneutrals+sumP.mag2());
318  }
319  else
320  {
321  energyFromSecondary+=std::sqrt(massThisCluster.mag2()+sumP.mag2());
322  }
323 
324 
325 
326 
327  }//end if dist<0
328  }//end vectorOfVerteces
329 
330  if (energyFromSecondary+energyFromPrimary>0) {
331  energyFraction=energyFromSecondary/(energyFromSecondary+energyFromPrimary);
332  }
333 
334  if (massVector.mag()>0) {
335  mass=std::sqrt(massVector.mag2()+sumPtAdd*sumPtAdd)+sumPtAdd;
336  mass_uncorr=massVector.mag();
337  //port range of mass to maximum 10000.
338  if (mass>5000.) {
339  mass =
340  5000.+(5000./M_PI)*2.*std::atan((M_PI/2./5000.)*(mass-5000.));
341  }
342  if (mass_uncorr>5000.) {
343  mass_uncorr =
344  5000.+(5000./M_PI)*2.*std::atan((M_PI/2./5000.)*(mass_uncorr-5000.));
345  }
346  }
347 
348  if (inverrordist!=0) {
349  significance3d=dist/std::sqrt(inverrordist);
350  //port range of significance 3d to maximum 100.
351  significance3d=100./(M_PI/2.)*std::atan((M_PI/2./100.)*significance3d);
352  }
353 
354  if (std::abs(sumPAllVertices.mag())>1e-7) {
355  deltaphi=sumPAllVertices.eta()-JetVector.Eta();
356  deltaeta=sumPAllVertices.deltaPhi(Amg::Vector3D(JetVector.Px(), JetVector.Py(), JetVector.Pz()));
357  deltaRFlightDir = std::hypot(sumPAllVertices.deltaPhi(flightAxis), sumPAllVertices.eta()-flightAxis.eta());
358  } else {
359  deltaphi=-10.;
360  deltaeta=-10.;
361  deltaRFlightDir = -10;
362  }
363 
364 
365  fill(BTag, basename, mass_uncorr, nVTX, nSingleTracks, nTracksAtVtx, mass, energyFraction, significance3d, deltaeta, deltaphi, chi2, ndof, deltaRFlightDir);
366 
367  return StatusCode::SUCCESS;
368 
369 
370  }
371 
372 void
373 JetFitterVariablesFactory::fill(xAOD::BTagging* BTag, const std::string& basename, float mass_uncorr,
374  int nVTX, int nSingleTracks, int nTracksAtVtx, float mass, float energyFraction,
375  float significance3d, float deltaeta, float deltaphi, float chi2, int ndof, float deltaRFlightDir) const {
376 
377  BTag->setVariable<float>(basename, "massUncorr", mass_uncorr);
378  BTag->setVariable<float>(basename, "chi2", chi2);
379  BTag->setVariable<int>(basename, "ndof", ndof);
380  BTag->setVariable<float>(basename, "dRFlightDir", deltaRFlightDir);
381 
382  if (basename == "JetFitter"){
383  BTag->setTaggerInfo(nVTX, xAOD::BTagInfo::JetFitter_nVTX);
384  BTag->setTaggerInfo(nSingleTracks, xAOD::BTagInfo::JetFitter_nSingleTracks);
385  BTag->setTaggerInfo(nTracksAtVtx, xAOD::BTagInfo::JetFitter_nTracksAtVtx);
386  BTag->setTaggerInfo(mass, xAOD::BTagInfo::JetFitter_mass);
387  BTag->setTaggerInfo(energyFraction, xAOD::BTagInfo::JetFitter_energyFraction);
388  BTag->setTaggerInfo(significance3d, xAOD::BTagInfo::JetFitter_significance3d);
389  BTag->setTaggerInfo(deltaeta, xAOD::BTagInfo::JetFitter_deltaeta);
390  BTag->setTaggerInfo(deltaphi, xAOD::BTagInfo::JetFitter_deltaphi);
391  } else {
392  BTag->setVariable<int>(basename, "nVTX", nVTX);
393  BTag->setVariable<int>(basename, "nSingleTracks", nSingleTracks);
394  BTag->setVariable<int>(basename, "nTracksAtVtx", nTracksAtVtx);
395  BTag->setVariable<float>(basename, "mass", mass);
396  BTag->setVariable<float>(basename, "energyFraction", energyFraction);
397  BTag->setVariable<float>(basename, "significance3d", significance3d);
398  BTag->setVariable<float>(basename, "deltaeta", deltaeta);
399  BTag->setVariable<float>(basename, "deltaphi", deltaphi);
400  }
401 }
402 
403 }//end Analysis namespace
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
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
Trk::VertexPositions::position
const Amg::VectorX & position() const
return position of vertex
Definition: VertexPositions.cxx:95
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
IDTPM::ndof
float ndof(const U &p)
Definition: TrackParametersHelper.h:132
Trk::SelectedTracksInJet
Definition: SelectedTracksInJet.h:62
Trk::VxJetCandidate::getVerticesOnJetAxis
const std::vector< VxVertexOnJetAxis * > & getVerticesOnJetAxis(void) const
Definition: VxJetCandidate.cxx:543
Amg::VectorX
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
Definition: EventPrimitives.h:30
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:27
TrackParameters.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Trk::VxVertexOnJetAxis::getTracksAtVertex
const std::vector< VxTrackAtVertex * > & getTracksAtVertex(void) const
get Tracks At Vertex Method
Definition: VxVertexOnJetAxis.cxx:102
Analysis::JetFitterVariablesFactory::~JetFitterVariablesFactory
virtual ~JetFitterVariablesFactory()
Destructor - check up memory allocation delete any memory allocation on the heap.
Definition: JetFitterVariablesFactory.cxx:55
Trk::jet_theta
@ jet_theta
Definition: JetVtxParamDefs.h:28
JetFitterVariablesFactory.h
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
xAOD::JetFitter_nSingleTracks
@ JetFitter_nSingleTracks
JetFitter : Number of single tracks.
Definition: BTaggingEnums.h:46
VxVertexOnJetAxis.h
VxJetCandidate.h
M_PI
#define M_PI
Definition: ActiveFraction.h:11
Trk::VxVertexOnJetAxis
VxVertexOnJetAxis inherits from Vertex.
Definition: VxVertexOnJetAxis.h:79
Trk::jet_xv
@ jet_xv
Definition: JetVtxParamDefs.h:27
SelectedTracksInJet.h
Amg::setPhi
Amg::RotationMatrix3D setPhi(Amg::RotationMatrix3D mat, double angle, int convention=0)
Definition: EulerAnglesHelpers.h:102
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:69
Trk::VxJetCandidate::getRecVertexPositions
const Trk::RecVertexPositions & getRecVertexPositions() const
Definition: VxJetCandidate.cxx:519
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
Trk::VxJetCandidate::getPrimaryVertex
const VxVertexOnJetAxis * getPrimaryVertex(void) const
Definition: VxJetCandidate.cxx:551
Analysis::JetFitterVariablesFactory::m_addNegativeTracksToPrimaryVertex
bool m_addNegativeTracksToPrimaryVertex
Definition: JetFitterVariablesFactory.h:62
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Analysis::JetFitterVariablesFactory::initialize
virtual StatusCode initialize()
Definition: JetFitterVariablesFactory.cxx:57
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::SelectedTracksInJet::getPrimaryTrackLinks
const std::vector< const ITrackLink * > & getPrimaryTrackLinks() const
Get the priamry tracks (please do not delete the pointers)
Definition: SelectedTracksInJet.cxx:167
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Analysis::JetFitterVariablesFactory::fillJetFitterVariables
virtual StatusCode fillJetFitterVariables(const xAOD::Jet &, xAOD::BTagging *BTag, const Trk::VxJetFitterVertexInfo *myJetFitterInfo, std::string basename) const
Definition: JetFitterVariablesFactory.cxx:67
Trk::jet_yv
@ jet_yv
Definition: JetVtxParamDefs.h:27
Analysis::JetFitterVariablesFactory::finalize
virtual StatusCode finalize()
Definition: JetFitterVariablesFactory.cxx:62
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
xAOD::JetFitter_mass
@ JetFitter_mass
JetFitter : Jet mass.
Definition: BTaggingEnums.h:50
VxTrackAtVertex.h
xAOD::JetFitter_nTracksAtVtx
@ JetFitter_nTracksAtVtx
JetFitter : Number of tracks at vertex.
Definition: BTaggingEnums.h:48
Trk::VxVertexOnJetAxis::fitQuality
const Trk::FitQuality & fitQuality() const
Fit quality access method.
Definition: VxVertexOnJetAxis.cxx:86
Analysis::JetFitterVariablesFactory::JetFitterVariablesFactory
JetFitterVariablesFactory(const std::string &name, const std::string &n, const IInterface *p)
Definition: JetFitterVariablesFactory.cxx:38
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
Trk::ParametersBase
Definition: ParametersBase.h:55
xAOD::BTagging_v1
Definition: BTagging_v1.h:39
Trk::VxJetFitterVertexInfo
Definition: VxJetFitterVertexInfo.h:58
xAOD::JetFitter_significance3d
@ JetFitter_significance3d
JetFitter : 3D vertex significance.
Definition: BTaggingEnums.h:54
Analysis::JetFitterVariablesFactory::m_useSingleTracksAlsoForMass
bool m_useSingleTracksAlsoForMass
Definition: JetFitterVariablesFactory.h:64
Analysis
The namespace of all packages in PhysicsAnalysis/JetTagging.
Definition: BTaggingCnvAlg.h:20
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
Amg::setTheta
void setTheta(Amg::Vector3D &v, double theta)
sets the theta of a vector without changing phi nor the magnitude
Definition: GeoPrimitivesHelpers.h:89
Trk::jet_zv
@ jet_zv
position x,y,z of primary vertex
Definition: JetVtxParamDefs.h:27
Trk::VxJetCandidate
Definition: VxJetCandidate.h:72
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Analysis::JetFitterVariablesFactory::m_usePtCorrectedEnergy
bool m_usePtCorrectedEnergy
Definition: JetFitterVariablesFactory.h:63
Trk::RecVertexPositions
Definition: RecVertexPositions.h:34
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
Trk::RecVertexPositions::covariancePosition
Amg::MatrixX const & covariancePosition() const
return the covDeltaV matrix of the vertex fit
Definition: RecVertexPositions.cxx:171
xAOD::Jet_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: Jet_v1.cxx:71
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
GeoPrimitivesHelpers.h
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
Trk::FitQuality::chiSquared
double chiSquared() const
returns the of the overall track fit
Definition: FitQuality.h:56
Trk::jet_phi
@ jet_phi
Definition: JetVtxParamDefs.h:28
Trk::FitQuality::numberDoF
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition: FitQuality.h:60
Trk::VxJetFitterVertexInfo::verticesJF
const std::vector< Trk::VxJetCandidate * > & verticesJF() const
Definition: VxJetFitterVertexInfo.h:112
VxJetFitterVertexInfo.h
xAODType::BTag
@ BTag
The object is a b-tagging object.
Definition: ObjectType.h:60
AthAlgTool
Definition: AthAlgTool.h:26
Trk::VxJetFitterVertexInfo::getSelectedTracksInJet
const Trk::SelectedTracksInJet * getSelectedTracksInJet() const
Definition: VxJetFitterVertexInfo.h:107
Analysis::JetFitterVariablesFactory::fill
void fill(xAOD::BTagging *BTag, const std::string &basename, float mass_uncorr, int nVTX, int nSingleTracks, int nTracksAtVtx, float mass, float energyFraction, float significance3d, float deltaeta, float deltaphi, float chi2, int ndof, float deltaRFlightDir) const
Definition: JetFitterVariablesFactory.cxx:373
beamspotman.basename
basename
Definition: beamspotman.py:640