diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/InDetVKalVxInJetTool/InDetTrkInJetType.h b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/InDetVKalVxInJetTool/InDetTrkInJetType.h index f192f9ef81402a3383385b03a531d4490b338b8b..452143dc8a6ea52d9d4a3e48e922e259cad6ffe8 100644 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/InDetVKalVxInJetTool/InDetTrkInJetType.h +++ b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/InDetVKalVxInJetTool/InDetTrkInJetType.h @@ -23,12 +23,18 @@ #include <vector> #include "AthenaBaseComps/AthAlgTool.h" #include "GaudiKernel/ToolHandle.h" -#include "TLorentzVector.h" #include "xAODTracking/TrackParticleContainer.h" -#include "TrkVKalVrtFitter/TrkVKalVrtFitter.h" -#include "Particle/TrackParticle.h" +#include "TrkVertexFitterInterfaces/IVertexFitter.h" // +class TLorentzVector; +namespace Rec{ + class TrackParticle; +} + +namespace Trk{ + class TrkVKalVrtFitter; +} namespace TMVA { class Reader; } namespace InDet { @@ -80,23 +86,23 @@ namespace InDet { float m_Z0_limUpp; std::string m_calibFileName; ToolHandle < Trk::IVertexFitter > m_fitterSvc; - Trk::TrkVKalVrtFitter* m_fitSvc; - - int m_initialised; - - float m_prbS; - float m_Sig3D; - float m_prbP; - float m_d0; - float m_vChi2; - float m_pTvsJet; - float m_prodTJ; - float m_SigZ; - float m_SigR; - float m_ptjet; - float m_etajet; - float m_ibl; - float m_bl; + Trk::TrkVKalVrtFitter* m_fitSvc{}; + + int m_initialised{}; + + float m_prbS{}; + float m_Sig3D{}; + float m_prbP{}; + float m_d0{}; + float m_vChi2{}; + float m_pTvsJet{}; + float m_prodTJ{}; + float m_SigZ{}; + float m_SigR{}; + float m_ptjet{}; + float m_etajet{}; + float m_ibl{}; + float m_bl{}; }; diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx index e18a662ac0508e9aaa2caf0cdf34e603ef6b097a..a3e01652538cc3924963506badcb7fe35fe6c820 100755 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx +++ b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx @@ -38,8 +38,8 @@ namespace InDet{ if(N==1) return Vec[0]; if(N>1){ std::vector<float> tmp(Vec); - std::sort(tmp.begin(),tmp.end()); - return (tmp[(N-1)/2]+tmp[N/2])/2.; + std::sort(tmp.begin(),tmp.end()); //can use nth_element instead of completely sorting, it's quicker + return (tmp[(N-1)/2]+tmp[N/2])/2.; //only true if the number of elements is even? } return 0.; } @@ -758,6 +758,7 @@ namespace InDet{ } } } + if (not m_curTup) return; //something very wrong if(m_fillHist){ m_curTup->ptjet=JetDir.Perp(); m_curTup->etajet=fabs(JetDir.Eta()); m_curTup->phijet=JetDir.Phi(); m_curTup->nTrkInJet=std::min(NTracks,DevTuple::maxNTrk); }; if(nTrkHF==0) return; //====== No at all good HF tracks diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/InDetTrkInJetType.cxx b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/InDetTrkInJetType.cxx index 49a0c844966a441ef511188f7690496bb4749876..174e8787bd3f32e75ecf42572c4eeba3cba4c012 100644 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/InDetTrkInJetType.cxx +++ b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/InDetTrkInJetType.cxx @@ -6,6 +6,10 @@ #include "TMVA/MethodBase.h" #include "TMVA/Reader.h" #include "PathResolver/PathResolver.h" +#include "TLorentzVector.h" +#include "TrkVKalVrtFitter/TrkVKalVrtFitter.h" + +#include "Particle/TrackParticle.h" // //------------------------------------------------- namespace InDet { diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/Utilities.cxx b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/Utilities.cxx index b1fd5d2caa6a4d85dae19f01904fce3d61d47ff8..5c322d61c54f76eaeb1226dc026a40559d98e2aa 100755 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/Utilities.cxx +++ b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/Utilities.cxx @@ -11,20 +11,21 @@ //------------------------------------------------- // Other stuff #include <cmath> -//#include<iostream> namespace InDet{ double InDetVKalVxInJetTool::RankBTrk(double TrkPt, double JetPt, double Signif) const { - double coeffSig=1.0; - double s_prob=(Signif-coeffSig)/Signif; // Old probability to be b-track + //code re-ordered to avoid divide by zero double coeffPt=10.; - double pfrac=(TrkPt-m_cutPt)/sqrt(JetPt); + double pfrac=(TrkPt-m_cutPt)/std::sqrt(JetPt); double p_prob= pfrac/(coeffPt+pfrac); // Old probability to be b-track + if (Signif == 0.) return p_prob; //should be less than some epsilon? + // + double coeffSig=1.0; + double s_prob=(Signif-coeffSig)/Signif; // Old probability to be b-track if(TrkPt + JetPt == 0.) return s_prob; - else if(Signif == 0.) return p_prob; //----------------------------------Initial definition of selective variable double contrib=0.4; return (1.+contrib)*std::max(s_prob,0.)+(1.-contrib)*p_prob;