|
ATLAS Offline Software
|
Go to the documentation of this file.
40 #ifndef _VKalVrt_InDetVKalVxInJetTool_H
41 #define _VKalVrt_InDetVKalVxInJetTool_H
45 #include "GaudiKernel/ToolHandle.h"
50 #define BOOST_ALLOW_DEPRECATED_HEADERS
51 #include "boost/graph/adjacency_list.hpp"
71 class TrkVKalVrtFitter;
79 class PixelDetectorManager;
82 typedef std::vector<double>
dvect;
94 std::vector<const xAOD::TrackParticle*>
InpTrk;
114 const TLorentzVector & jetMomentum,
115 const std::vector<const xAOD::IParticle*> &
inputTracks)
const;
174 std::unique_ptr<Hists>
m_h;
355 const TLorentzVector & jetDir,
357 std::vector<const xAOD::TrackParticle*> & selSecTrk,
358 std::vector<const xAOD::TrackParticle*> & trkFromV0,
365 const TLorentzVector& jetDir,
370 std::vector< std::deque<long int> > *trkInVrt) ;
372 static double MaxOfShared(std::vector<WrkVrt> *WrkVrtSet,
373 std::vector< std::deque<long int> > *trkInVrt,
374 long int & selectedTrack,
375 long int & selectedVertex) ;
377 std::vector< std::deque<long int> > *trkInVrt,
378 long int & selectedTrack,
379 long int & selectedVertex)
const;
383 void printWrkSet(
const std::vector<WrkVrt> * WrkSet,
const std::string&
name )
const;
386 StatusCode cutTrk(
const std::unordered_map<std::string,double>& TrkVarDouble,
387 const std::unordered_map<std::string,int>& TrkVarInt,
388 float evtWgt=1.)
const;
392 static double massV0( std::vector< std::vector<double> >& trkAtVrt,
double massP,
double massPi ) ;
393 static int findMax( std::vector<double>& chi2PerTrk, std::vector<float>& rank) ;
396 TLorentzVector
totalMom(
const std::vector<const Trk::Perigee*>& inpTrk)
const;
397 static TLorentzVector
totalMom(
const std::vector<const xAOD::TrackParticle*>& inpTrk) ;
398 TLorentzVector
momAtVrt(
const std::vector<double>& inpTrk)
const;
403 void fillVrtNTup( std::vector<Vrt2Tr> & all2TrVrt)
const;
404 void fillNVrtNTup(std::vector<WrkVrt> & vrtSet, std::vector< std::vector<float> > & trkScore,
405 const xAOD::Vertex & primVrt,
const TLorentzVector & jetDir)
const;
412 static int nTrkCommon( std::vector<WrkVrt> *WrkVrtSet,
int V1,
int V2) ;
413 double minVrtVrtDist( std::vector<WrkVrt> *WrkVrtSet,
int & V1,
int & V2)
const;
414 static double minVrtVrtDistNext( std::vector<WrkVrt> *WrkVrtSet,
int & V1,
int & V2) ;
415 static bool isPart( std::deque<long int>
test, std::deque<long int>
base) ;
420 const std::vector<double>& VrtErr,
double& Signif )
const;
422 const std::vector<double>& VrtErr,
double& Signif )
const;
424 const std::vector<double>& SecVrtErr,
const TLorentzVector & JetDir)
const;
426 const Amg::Vector3D & Vrt2,
const std::vector<double>& VrtErr2)
const;
428 template <
class Particle>
430 std::vector<const Particle*> AllTracks,
435 double rankBTrk(
double TrkPt,
double JetPt,
double Signif)
const;
439 std::vector<const Trk::Perigee*>
GetPerigeeVector(
const std::vector<const Trk::TrackParticleBase*>& )
const;
444 std::vector<float> & trkRank,
446 const TLorentzVector & jetDir,
447 std::vector<double> & inpMass,
449 std::vector<double> & errorMatrix,
451 std::vector< std::vector<double> > & trkAtVrt)
const;
454 void removeEntryInList(std::vector<const Trk*>& , std::vector<float>&,
int)
const;
458 template <
class Particle>
460 std::vector<const Particle*> & selectedTracks,
464 template <
class Particle>
469 template <
class Particle>
471 std::vector<const Particle*> & AllTrackList,
473 template <
class Particle>
475 std::vector<const Particle*> & AllTrackLis,
478 template <
class Particle>
479 double improveVertexChi2( std::vector<WrkVrt> *WrkVrtSet,
int V, std::vector<const Particle*> & AllTracks,
485 const TLorentzVector & jetDir,
486 std::vector<const xAOD::TrackParticle*>& selPart,
487 float evtWgt=1.)
const;
492 std::vector<const Trk*> & TracksForFit,
494 const TLorentzVector & JetDir,
495 std::vector<double> & InpMass,
497 std::vector<const Trk*> & TrkFromV0,
498 std::vector<const Trk*> & ListSecondTracks,
500 float evtWgt = 1)
const;
512 template <
class Track>
514 template <
class Track>
524 TLorentzVector& Momentum,
526 std::vector<double>& ErrorMatrix,
527 std::vector<double>& Chi2PerTrk,
528 std::vector< std::vector<double> >& TrkAtVrt,
544 if(
Outlier >= (
int)ListTracks.size() )
return;
545 ListTracks.erase( ListTracks.begin()+
Outlier);
546 rank.erase( rank.begin()+
Outlier);
553 sort(ListTracks.begin(),ListTracks.end());
554 TransfEnd = unique(ListTracks.begin(),ListTracks.end());
555 ListTracks.erase( TransfEnd, ListTracks.end());
562 template <
typename Clique,
typename Graph>
565 std::vector<int> new_clique(0);
566 for(
auto i = clq.begin();
i != clq.end(); ++
i) new_clique.push_back(*
i);
574 template <
class Track>
578 int blTrk=0, blP=0, l1Trk=0, l1P=0, l2Trk=0, nLays=0;
582 double xvt=FitVertex.x();
583 double yvt=FitVertex.y();
584 double R=std::hypot(xvt, yvt);
586 if( blTrk<1 && l1Trk<1 )
return false;
587 if( nLays <2 )
return false;
590 if( blTrk>0 && blP==0 )
return false;
595 if(std::abs(FitVertex.z())<400.){
597 if( l1Trk<1 && l2Trk<1 )
return false;
600 if( l1Trk>0 && l1P==0 )
return false;
604 if( l2Trk==0 )
return false;
607 int d0Trk=0, d1Trk=0, d2Trk=0;
609 if( d0Trk+d1Trk+d2Trk ==0 )
return false;
JetConstituentVector::iterator iterator
std::vector< const xAOD::TrackParticle * > TrkFromV0
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Vertex_v1 Vertex
Define the latest version of the vertex class.
Basic data class defines behavior for all Jet objects The Jet class is the principal data class for...
std::vector< const xAOD::TrackParticle * > InpTrk
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
DUMMY Primary Vertex Finder.
std::vector< std::vector< const xAOD::TrackParticle * > > FoundSecondTracks
std::vector< const xAOD::TrackParticle * > tmpListTracks
std::vector< const xAOD::TrackParticle * > listJetTracks
::StatusCode StatusCode
StatusCode definition for legacy code.
Class describing a truth particle in the MC record.
clique_visitor(std::vector< std::vector< int > > &input)
Ensure that the ATLAS eigen extensions are properly loaded.
std::vector< const xAOD::TrackParticle * > listSecondTracks
std::vector< std::vector< int > > & m_allCliques
Eigen::Matrix< double, 3, 1 > Vector3D
Class describing a Vertex.
void clique(const Clique &clq, Graph &)
std::vector< const xAOD::TrackParticle * > TracksForFit
Class describing a TrackParticle.
Handle class for reading from StoreGate.