ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
InDet::InDetSVWithMuonTool Class Reference

#include <InDetSVWithMuonTool.h>

Inheritance diagram for InDet::InDetSVWithMuonTool:
Collaboration diagram for InDet::InDetSVWithMuonTool:

Classes

struct  Hists
 

Public Member Functions

 InDetSVWithMuonTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~InDetSVWithMuonTool ()
 
StatusCode initialize ()
 
StatusCode finalize ()
 
const xAOD::VertexfindSVwithMuon (const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, const std::vector< const xAOD::TrackParticle * > &InpTrk) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

HistsgetHists () const
 
xAOD::VertexMuonVrtSec (const std::vector< const xAOD::TrackParticle * > &InpTrk, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, std::vector< const xAOD::TrackParticle * > &ListSecondTracks) const
 
StatusCode CutTrk (double, double, double, double, double, long int, long int, long int, long int) const
 
void SelGoodTrkParticle (const std::vector< const xAOD::TrackParticle * > &InpTrk, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, std::vector< const xAOD::TrackParticle * > &SelectedTracks) const
 
double FitCommonVrt (std::vector< const xAOD::TrackParticle * > &ListSecondTracks, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, Amg::Vector3D &FitVertex, std::vector< double > &ErrorMatrix, TLorentzVector &Momentum, std::vector< std::vector< double > > &TrkAtVrt) const
 
template<class Trk >
void RemoveEntryInList (std::vector< const Trk * > &, int) const
 
template<class Trk >
void RemoveDoubleEntries (std::vector< const Trk * > &) const
 
void GetTrkWithMuonVrt (std::vector< const xAOD::TrackParticle * > &SelectedTracks, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, std::vector< const xAOD::TrackParticle * > &ListSecondTracks) const
 
StatusCode VKalVrtFitFastBase (const std::vector< const xAOD::TrackParticle * > &listPart, Amg::Vector3D &Vertex, Trk::IVKalState &istate) const
 
StatusCode VKalVrtFitBase (const std::vector< const xAOD::TrackParticle * > &listPart, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, std::vector< double > &ErrorMatrix, std::vector< double > &Chi2PerTrk, std::vector< std::vector< double > > &TrkAtVrt, double &Chi2, Trk::IVKalState &istate, bool ifCovV0) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Static Private Member Functions

static double ConeDist (const AmgVector(5) &, const TLorentzVector &)
 
static int FindMaxAfterFirst (std::vector< double > &Chi2PerTrk)
 
static double VrtVrtDist (const xAOD::Vertex &PrimVrt, const Amg::Vector3D &SecVrt, const std::vector< double > &VrtErr, double &Signif)
 
static TLorentzVector TotalMom (const std::vector< const xAOD::TrackParticle * > &InpTrk)
 
static double pTvsDir (const Amg::Vector3D &Dir, const std::vector< double > &InpTrk)
 

Private Attributes

std::unique_ptr< Histsm_h
 
long int m_CutSctHits {}
 
long int m_CutPixelHits {}
 
long int m_CutSiHits {}
 
long int m_CutBLayHits {}
 
long int m_CutSharedHits {}
 
double m_CutPt {}
 
double m_CutZVrt {}
 
double m_CutA0 {}
 
double m_CutChi2 {}
 
double m_SecTrkChi2Cut {}
 
double m_ConeForTag {}
 
double m_Sel2VrtChi2Cut {}
 
double m_Sel2VrtSigCut {}
 
double m_TrkSigCut {}
 
double m_A0TrkErrorCut {}
 
double m_ZTrkErrorCut {}
 
bool m_FillHist {}
 
bool m_existIBL {}
 
long int m_RobustFit {}
 
double m_Rbeampipe {}
 
double m_RlayerB {}
 
double m_Rlayer1 {}
 
double m_Rlayer2 {}
 
double m_Rlayer3 {}
 
ToolHandle< Trk::IVertexFitterm_fitterSvc
 
Trk::TrkVKalVrtFitterm_fitSvc {}
 
const double m_massPi = 139.5702
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 66 of file InDetSVWithMuonTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ InDetSVWithMuonTool()

InDet::InDetSVWithMuonTool::InDetSVWithMuonTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 23 of file InDetSVWithMuonTool.cxx.

25  :
27  m_CutSctHits(4),
28  m_CutPixelHits(1),
29  m_CutSiHits(7),
30  m_CutBLayHits(0),
31  m_CutSharedHits(1),
32  m_CutPt(700.),
33  m_CutZVrt(25.),
34  m_CutA0(5.),
35  m_CutChi2(3.),
36  m_SecTrkChi2Cut(10.),
37  m_ConeForTag(0.4),
38  m_Sel2VrtChi2Cut(4.5),
39  m_Sel2VrtSigCut(3.0),
40  m_TrkSigCut(2.5),
41  m_A0TrkErrorCut(1.0),
42  m_ZTrkErrorCut(5.0),
43  m_FillHist(false),
44  m_existIBL(true),
45  m_RobustFit(5),
46  m_Rbeampipe (0.), //Correct values are filled
47  m_RlayerB (0.), // in initialize()
48  m_Rlayer1 (0.),
49  m_Rlayer2 (0.),
50  m_Rlayer3 (0.),
51  m_fitterSvc("Trk::TrkVKalVrtFitter/VertexFitterTool",this)
52  {
53  declareInterface<ISVWithMuonFinder>(this);
54 //
55 // Properties
56 //
57 //
58  declareProperty("CutSctHits", m_CutSctHits , "Remove track is it has less SCT hits" );
59  declareProperty("CutPixelHits", m_CutPixelHits, "Remove track is it has less Pixel hits");
60  declareProperty("CutSiHits", m_CutSiHits, "Remove track is it has less Pixel+SCT hits" );
61  declareProperty("CutBLayHits", m_CutBLayHits, "Remove track is it has less B-layer hits" );
62  declareProperty("CutSharedHits", m_CutSharedHits,"Reject final 2tr vertices if tracks have shared hits" );
63 
64  declareProperty("CutPt", m_CutPt, "Track Pt selection cut" );
65  declareProperty("CutA0", m_CutA0, "Track A0 selection cut" );
66  declareProperty("CutZVrt", m_CutZVrt, "Track Z impact selection cut");
67  declareProperty("ConeForTag", m_ConeForTag,"Cone around jet direction for track selection");
68  declareProperty("CutChi2", m_CutChi2, "Track Chi2 selection cut" );
69  declareProperty("TrkSigCut", m_TrkSigCut, "Track 3D impact significance w/r primary vertex" );
70  declareProperty("SecTrkChi2Cut", m_SecTrkChi2Cut,"Track - common secondary vertex association cut. Single Vertex Finder only");
71 
72  declareProperty("A0TrkErrorCut", m_A0TrkErrorCut, "Track A0 error cut" );
73  declareProperty("ZTrkErrorCut", m_ZTrkErrorCut, "Track Z impact error cut" );
74 
75  declareProperty("Sel2VrtChi2Cut", m_Sel2VrtChi2Cut, "Cut on Chi2 of 2-track vertex for initial selection" );
76  declareProperty("Sel2VrtSigCut", m_Sel2VrtSigCut, "Cut on significance of 3D distance between initial 2-track vertex and PV" );
77 
78  declareProperty("FillHist", m_FillHist, "Fill technical histograms" );
79  declareProperty("ExistIBL", m_existIBL, "Inform whether 3-layer or 4-layer detector is used " );
80 
81  declareProperty("RobustFit", m_RobustFit, "Use vertex fit with RobustFit functional(VKalVrt) for common secondary vertex fit" );
82 
83  declareProperty("VertexFitterTool", m_fitterSvc);
84 
85  }

◆ ~InDetSVWithMuonTool()

InDet::InDetSVWithMuonTool::~InDetSVWithMuonTool ( )
virtual

Definition at line 88 of file InDetSVWithMuonTool.cxx.

88  {
89  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "InDetSVWithMuonTool destructor called" << endmsg;
90  }

Member Function Documentation

◆ ConeDist()

double InDet::InDetSVWithMuonTool::ConeDist ( const AmgVector(5) &  VectPerig,
const TLorentzVector &  Dir 
)
staticprivate

Definition at line 54 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

56  {
57  double etaTr = -std::log(std::tan(VectPerig[3]*0.5));
58  double etaJet = Dir.PseudoRapidity();
59  double adphi = std::abs(Dir.Phi()-VectPerig[2]);
60  while(adphi> M_PI)adphi-=2.*M_PI;
61  return std::sqrt(adphi*adphi + (etaJet-etaTr)*(etaJet-etaTr));
62  }

◆ CutTrk()

StatusCode InDet::InDetSVWithMuonTool::CutTrk ( double  PInvVert,
double  ThetaVert,
double  A0Vert,
double  ZVert,
double  Chi2,
long int  PixelHits,
long int  SctHits,
long int  SharedHits,
long int  BLayHits 
) const
private

Definition at line 13 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/CutTrk.cxx.

17  {
18  double Pt = sin(ThetaVert)/std::abs(PInvVert);
19 //- Track quality
20  if(Pt < m_CutPt) return StatusCode::FAILURE;
21  if(std::abs(ZVert)*sin(ThetaVert) > m_CutZVrt) return StatusCode::FAILURE;
22  if(Chi2 > m_CutChi2) return StatusCode::FAILURE;
23  if(std::abs(A0Vert) > m_CutA0) return StatusCode::FAILURE;
24 
25 
26  if(PixelHits < m_CutPixelHits) return StatusCode::FAILURE;
27  if(SctHits < m_CutSctHits) return StatusCode::FAILURE;
28  if((PixelHits+SctHits) < m_CutSiHits) return StatusCode::FAILURE;
29  if(BLayHits < m_CutBLayHits) return StatusCode::FAILURE;
30  if(SharedHits > m_CutSharedHits) return StatusCode::FAILURE;
31 
32  return StatusCode::SUCCESS;
33  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode InDet::InDetSVWithMuonTool::finalize ( )

Definition at line 174 of file InDetSVWithMuonTool.cxx.

175  {
176  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) <<"InDetSVWithMuonTool finalize()" << endmsg;
177  return StatusCode::SUCCESS;
178  }

◆ FindMaxAfterFirst()

int InDet::InDetSVWithMuonTool::FindMaxAfterFirst ( std::vector< double > &  Chi2PerTrk)
staticprivate

Definition at line 67 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

69  {
70  double Chi2Ref=0.;
71  int Position=1;
72  if( Chi2PerTrk.size() < 2 ) return Position ;
73  for (int i=1; i<(int)Chi2PerTrk.size(); i++){
74  if( Chi2PerTrk[i] > Chi2Ref) { Chi2Ref=Chi2PerTrk[i]; Position=i;}
75  }
76  return Position;
77  }

◆ findSVwithMuon()

const xAOD::Vertex * InDet::InDetSVWithMuonTool::findSVwithMuon ( const xAOD::Vertex PrimVrt,
const xAOD::TrackParticle Muon,
const std::vector< const xAOD::TrackParticle * > &  InpTrk 
) const
virtual

Implements InDet::ISVWithMuonFinder.

Definition at line 183 of file InDetSVWithMuonTool.cxx.

186  {
187  std::vector<const xAOD::TrackParticle*> SelSecTrk;
188 
189  xAOD::Vertex* secVrt = MuonVrtSec( InpTrk, PrimVrt, Muon, SelSecTrk );
190 
191  return secVrt;
192  }

◆ FitCommonVrt()

double InDet::InDetSVWithMuonTool::FitCommonVrt ( std::vector< const xAOD::TrackParticle * > &  ListSecondTracks,
const xAOD::Vertex PrimVrt,
const xAOD::TrackParticle Muon,
Amg::Vector3D FitVertex,
std::vector< double > &  ErrorMatrix,
TLorentzVector &  Momentum,
std::vector< std::vector< double > > &  TrkAtVrt 
) const
private

Definition at line 138 of file MuonVrtSec.cxx.

146  {
147  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "FitCommonVrt() called with Ntrk="<<ListSecondTracks.size()<< endmsg;
148 //preparation
149  StatusCode sc;
150  ListSecondTracks.insert(ListSecondTracks.begin(), Muon);
151  RemoveDoubleEntries(ListSecondTracks);
152  int NTracksVrt = ListSecondTracks.size();
153 
154  const double maxRecMASS=6000.;
155  long int Charge;
156  double Chi2 = 0., FitProb=0.;
157  Amg::Vector3D tmpVertex;
158  std::vector<double> Chi2PerTrk(0);
159 //
160 // Initialisation of fit
161 //
162  std::unique_ptr<Trk::IVKalState> state = m_fitSvc->makeState();
163  std::vector<double> InpMass(NTracksVrt, m_massPi);
164  m_fitSvc->setMassInputParticles( InpMass, *state ); // Use pions masses
165  sc=VKalVrtFitFastBase(ListSecondTracks,FitVertex, *state); /* Fast crude estimation */
166  if(sc.isFailure() || FitVertex.perp() > m_Rlayer2*2. ) { /* No initial estimation */
167  m_fitSvc->setApproximateVertex(PrimVrt.position().x(), /* Use as starting point */
168  PrimVrt.position().y(),
169  PrimVrt.position().z(),
170  *state);
171  } else {
172  m_fitSvc->setApproximateVertex(FitVertex.x(),FitVertex.y(),FitVertex.z(),*state); /*Use as starting point*/
173  }
175 //
176 //fit itself
177 //
178  for (int i=0; i < NTracksVrt-1; i++) {
179  sc=VKalVrtFitBase(ListSecondTracks,FitVertex, Momentum,Charge,ErrorMatrix,Chi2PerTrk,TrkAtVrt,Chi2,
180  *state, true);
181  if(sc.isFailure() || Chi2 > 1000000. ) { return -10000.;} // No fit
182  int Outlier = FindMaxAfterFirst( Chi2PerTrk);
183  FitProb=TMath::Prob( Chi2, 2*ListSecondTracks.size()-3);
184  if(ListSecondTracks.size() == 2 ) break; // Only 2 tracks left
185  if( FitProb > 0.001) {
186  if( Momentum.M() <maxRecMASS) {
187  if( Chi2PerTrk[Outlier] < m_SecTrkChi2Cut) break; // Solution found
188  } else {
189  double minM=1.e12; int minT=-1; double minChi2=1.e12;
190  for(int it=0; it<(int)ListSecondTracks.size(); it++){
191  std::vector<const xAOD::TrackParticle*> tmpList(ListSecondTracks);
192  tmpList.erase(tmpList.begin()+it);
193  sc=VKalVrtFitBase(tmpList,tmpVertex,Momentum,Charge,ErrorMatrix,Chi2PerTrk,TrkAtVrt,Chi2,*state, true);
194  if(sc.isFailure())continue;
195  if(Momentum.M()<minM && minM>maxRecMASS){minM=Momentum.M(); minT=it; minChi2=Chi2;}
196  else if(Momentum.M()<maxRecMASS && minM<maxRecMASS && Chi2<minChi2){minChi2=Chi2; minT=it;}
197  }
198  if(minT>=0)Outlier=minT;
199  }
200  }
201  RemoveEntryInList(ListSecondTracks,Outlier);
202  m_fitSvc->setApproximateVertex(FitVertex.x(),FitVertex.y(),FitVertex.z(),*state); /*Use as starting point*/
203  }
204 //--
205  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" SecVrt fit converged="<< ListSecondTracks.size()<<" Mass="<<Momentum.M()<<endmsg;
206 //--
207  return Chi2;
208 }

◆ getHists()

InDetSVWithMuonTool::Hists & InDet::InDetSVWithMuonTool::getHists ( ) const
private

Definition at line 196 of file InDetSVWithMuonTool.cxx.

197  {
198  // We earlier checked that no more than one thread is being used.
199  Hists* h ATLAS_THREAD_SAFE = m_h.get();
200  return *h;
201  }

◆ GetTrkWithMuonVrt()

void InDet::InDetSVWithMuonTool::GetTrkWithMuonVrt ( std::vector< const xAOD::TrackParticle * > &  SelectedTracks,
const xAOD::Vertex PrimVrt,
const xAOD::TrackParticle Muon,
std::vector< const xAOD::TrackParticle * > &  ListSecondTracks 
) const
private

Definition at line 222 of file MuonVrtSec.cxx.

227  {
228  Amg::Vector3D FitVertex, vDist;
229  std::vector<double> ErrorMatrix,Chi2PerTrk,VKPerigee,CovPerigee;
230  std::vector< std::vector<double> > TrkAtVrt;
231  TLorentzVector Momentum;
232  std::vector<double> Impact,ImpactError;
233  double Chi2, Signif3D, Dist2D, MuonVrtDir;
234  long int Charge;
235 //
236  long int NTracks = (int) (SelectedTracks.size());
237  std::vector<const xAOD::TrackParticle*> TracksForFit(2,nullptr);
238 
239 //
240 // Impact parameters with sign calculations
241 //
242  std::vector<double> TrackSignif(NTracks);
243  double SignifR,SignifZ;
244  for (int i=0; i<NTracks; i++) {
245  TrackSignif[i] = m_fitSvc->VKalGetImpact(SelectedTracks[i], PrimVrt.position(), 1, Impact, ImpactError);
246  if( sin(SelectedTracks[i]->phi() - Muon->phi())*Impact[0] < 0 ){
247  Impact[0] = -std::abs(Impact[0]);
248  }
249  else{ Impact[0] = std::abs(Impact[0]); }
250  if( (SelectedTracks[i]->p4().Theta() - Muon->p4().Theta())*Impact[1] < 0 ){
251  Impact[1] = -std::abs(Impact[1]);
252  }
253  else{ Impact[1] = std::abs(Impact[1]); }
254 
255  SignifR = Impact[0]/ std::sqrt(ImpactError[0]);
256  SignifZ = Impact[1]/ std::sqrt(ImpactError[2]);
257  if(m_FillHist){
258  Hists& h = getHists();
259  h.m_hb_impactR->Fill( SignifR );
260  h.m_hb_impactZ->Fill( SignifZ );
261  h.m_hb_impact->Fill( TrackSignif[i] );
262  }
263  }
264 
265 
266  StatusCode sc;
267  ListSecondTracks.reserve(2*NTracks); // Reserve memory for sigle vertex
268 
269  Amg::Vector3D iniVrt(0.,0.,0.);
270  TracksForFit[0]= Muon;
271  for (int i=0; i<NTracks; i++) {
272  if(TrackSignif[i] < m_TrkSigCut) continue;
273  std::unique_ptr<Trk::IVKalState> state = m_fitSvc->makeState();
274  TracksForFit[1]=SelectedTracks[i];
275  sc=VKalVrtFitFastBase(TracksForFit,FitVertex,*state); /* Fast crude estimation*/
276  if( sc.isFailure() || FitVertex.perp() > m_Rlayer2*2. ) { /* No initial estimation */
277  iniVrt=PrimVrt.position();
278  } else {
279  vDist=FitVertex-PrimVrt.position();
280  MuonVrtDir = Muon->p4().Px()*vDist.x() + Muon->p4().Py()*vDist.y() + Muon->p4().Pz()*vDist.z();
281  if( MuonVrtDir>0. ) iniVrt=FitVertex; /* Good initial estimation */
282  else iniVrt=PrimVrt.position();
283  }
284  m_fitSvc->setApproximateVertex(iniVrt.x(), iniVrt.y(), iniVrt.z(), *state);
285  sc=VKalVrtFitBase(TracksForFit,FitVertex, Momentum,Charge,
286  ErrorMatrix,Chi2PerTrk,TrkAtVrt,Chi2,
287  *state, true);
288  if(sc.isFailure()) continue; /* No fit */
289  if(Chi2 > m_Sel2VrtChi2Cut) continue; /* Bad Chi2 */
290  double mass_PiPi = Momentum.M();
291  if(mass_PiPi > 6000.) continue; // can't be from B decay
292  if(m_FillHist){
293  Hists& h = getHists();
294  h.m_hb_massPiPi->Fill( mass_PiPi );
295  }
296  Dist2D=FitVertex.perp();
297  if(Dist2D > 180. ) continue; // can't be from B decay
298  VrtVrtDist(PrimVrt, FitVertex, ErrorMatrix, Signif3D);
299 //---
300  vDist=FitVertex-PrimVrt.position();
301  double vPos=(vDist.x()*Momentum.Px()+vDist.y()*Momentum.Py()+vDist.z()*Momentum.Pz())/Momentum.Rho();
302  if(vPos<0.) continue; /* Vertex is too far behind primary one*/
303  if(m_FillHist){
304  Hists& h = getHists();
305  h.m_hb_r2d->Fill( Dist2D );
306  h.m_hb_signif3D->Fill( Signif3D );
307  }
308 //
309 // Save track crossing muon
310 //
311  if(Signif3D>m_Sel2VrtSigCut) ListSecondTracks.push_back(SelectedTracks[i]);
312  }
313 
314  }

◆ initialize()

StatusCode InDet::InDetSVWithMuonTool::initialize ( )

Definition at line 93 of file InDetSVWithMuonTool.cxx.

93  {
94  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "InDetSVWithMuonTool initialize() called" << endmsg;
95 
96  if (m_fitterSvc.retrieve().isFailure()) {
97  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "Could not find Trk::TrkVKalVrtFitter" << endmsg;
98  return StatusCode::SUCCESS;
99  } else {
100  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "InDetSVWithMuonTool TrkVKalVrtFitter found" << endmsg;
101  }
102  m_fitSvc = dynamic_cast<Trk::TrkVKalVrtFitter*>(&(*m_fitterSvc));
103  if(!m_fitSvc){
104  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" No implemented Trk::ITrkVKalVrtFitter interface" << endmsg;
105  return StatusCode::SUCCESS;
106  }
107 
108 //------------------------------------------
109 // Chose whether IBL is installed
110  if(m_existIBL){ // 4-layer pixel detector
111  if( m_Rbeampipe==0.) m_Rbeampipe=24.0;
112  if( m_RlayerB ==0.) m_RlayerB =34.0;
113  if( m_Rlayer1 ==0.) m_Rlayer1 =51.6;
114  if( m_Rlayer2 ==0.) m_Rlayer2 =90.0;
115  m_Rlayer3 =122.5;
116  } else { // 3-layer pixel detector
117  if( m_Rbeampipe==0.) m_Rbeampipe=29.4;
118  if( m_RlayerB ==0.) m_RlayerB =51.5;
119  if( m_Rlayer1 ==0.) m_Rlayer1 =90.0;
120  if( m_Rlayer2 ==0.) m_Rlayer2 =122.5;
121  }
122 
123 //
124 //
125  if(m_FillHist){
126  if (SG::getNSlots() > 1) {
127  ATH_MSG_FATAL("Filling histograms not supported in MT jobs.");
128  return StatusCode::FAILURE;
129  }
130 
131  ServiceHandle<ITHistSvc> histSvc ("THistSvc", name());
132  ATH_CHECK( histSvc.retrieve() );
133  m_h = std::make_unique<Hists>();
134  ATH_CHECK( m_h->book (*histSvc) );
135  }
136 
137 
138  return StatusCode::SUCCESS;
139 
140  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& InDet::ISVWithMuonFinder::interfaceID ( )
inlinestaticinherited

Definition at line 53 of file InDetSVWithMuonTool.h.

53 { return IID_ISVWithMuonFinder;}

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ MuonVrtSec()

xAOD::Vertex * InDet::InDetSVWithMuonTool::MuonVrtSec ( const std::vector< const xAOD::TrackParticle * > &  InpTrk,
const xAOD::Vertex PrimVrt,
const xAOD::TrackParticle Muon,
std::vector< const xAOD::TrackParticle * > &  ListSecondTracks 
) const
private

Definition at line 19 of file MuonVrtSec.cxx.

24  {
25 
26  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "MuonVrtSec() called with xAOD::TrackParticle=" <<InpTrk.size()<< endmsg;
27  std::vector<const xAOD::TrackParticle*> SelectedTracks(0);
28  ListTracksNearMuon.clear();
29 
30  if( InpTrk.empty() ) { return nullptr;} // 0,1 input track => nothing to do!
31  SelGoodTrkParticle( InpTrk, PrimVrt, Muon, SelectedTracks);
32  long int NTracks = SelectedTracks.size();
33  TLorentzVector TrkJet = TotalMom(SelectedTracks);
34  if(m_FillHist){
35  Hists& h = getHists();
36  h.m_hb_nseltrk->Fill( (double)NTracks );
37  }
38  if( NTracks < 1 ) { return nullptr;} // 0,1 selected track => nothing to do!
39 
40  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "Number of selected tracks dR-close to muon= " <<NTracks << endmsg;
41 
42  if(m_FillHist){
43  Hists& h = getHists();
44  h.m_hb_muonPt->Fill( Muon->pt() );
45  }
46 
47 //--------------------------------------------------------------------------------------------
48 // Initial xAOD::TrackParticle list ready
49 
50  GetTrkWithMuonVrt(SelectedTracks, PrimVrt, Muon, ListTracksNearMuon);
51  int nTracksNearMuon=ListTracksNearMuon.size();
52 //
53 //--- Cleaning
54 //
55  RemoveDoubleEntries(ListTracksNearMuon);
56  AnalysisUtils::Sort::pT (&ListTracksNearMuon); //no sorting for xAOD
57  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" Found different xAOD tracks crossing muon="<< ListTracksNearMuon.size()<<endmsg;
58  if(ListTracksNearMuon.empty()) { return nullptr;} // Less than one track left
59 
60 //
61 //-----------------------------------------------------------------------------------------------------
62 // Secondary track list is ready
63 // Now common vertex fit
64 //
65  Amg::Vector3D FitVertex;
66  std::vector<double> ErrorMatrix;
67  std::vector< std::vector<double> > TrkAtVrt;
68  TLorentzVector Momentum;
69  std::vector<double> Impact,ImpactError;
70 
71  double Chi2 = FitCommonVrt( ListTracksNearMuon, PrimVrt, Muon, FitVertex, ErrorMatrix, Momentum, TrkAtVrt);
72  if( Chi2 < 0 && ListTracksNearMuon.size()>2 ) { // Vertex not reconstructed. Try to remove one track with biggest pt.
73  double tpmax=0; int ipmax=-1;
74  for(int it=0; it<(int)ListTracksNearMuon.size(); it++) if(tpmax<ListTracksNearMuon[it]->pt()){tpmax=ListTracksNearMuon[it]->pt(); ipmax=it;}
75  if(ipmax>=0)RemoveEntryInList(ListTracksNearMuon,ipmax);
76  Chi2 = FitCommonVrt( ListTracksNearMuon, PrimVrt, Muon, FitVertex, ErrorMatrix, Momentum, TrkAtVrt);
77  if( Chi2 < 0 && ListTracksNearMuon.size()>2 ) { // Vertex not reconstructed. Try to remove another track with biggest pt.
78  tpmax=0.; ipmax=-1;
79  for(int it=0; it<(int)ListTracksNearMuon.size(); it++) if(tpmax<ListTracksNearMuon[it]->pt()){tpmax=ListTracksNearMuon[it]->pt(); ipmax=it;}
80  if(ipmax>=0)RemoveEntryInList(ListTracksNearMuon,ipmax);
81  Chi2 = FitCommonVrt( ListTracksNearMuon, PrimVrt, Muon, FitVertex, ErrorMatrix, Momentum, TrkAtVrt);
82  }
83  }
84  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" FitCommonVrt result="<< Chi2<<endmsg;
85  if( Chi2 < 0) { return nullptr; } // Vertex not reconstructed
86 
87 //
88 // Saving of results
89 //
90 
91  if(m_FillHist){
92  Hists& h = getHists();
93  h.m_hb_r2dc->Fill( FitVertex.perp() );
94  h.m_hb_totmass->Fill( Momentum.M() );
95  h.m_hb_nvrt2->Fill( (double)nTracksNearMuon );
96  }
97 
98 //-------------------------------------------------------------------------------------
99 //Return xAOD::Vertex
100  xAOD::Vertex * tmpVertex=new xAOD::Vertex();
101  tmpVertex->makePrivateStore();
102  tmpVertex->setPosition(FitVertex);
103  std::vector<float> floatErrMtx; floatErrMtx.resize(ErrorMatrix.size());
104  for(int i=0; i<(int)ErrorMatrix.size(); i++) floatErrMtx[i]=ErrorMatrix[i];
105  tmpVertex->setCovariance(floatErrMtx);
106  tmpVertex->setFitQuality(Chi2, (float)(ListTracksNearMuon.size()*2.-3.));
107  xAOD::SecVtxHelper::setVertexMass (tmpVertex, Momentum.M());
108  xAOD::SecVtxHelper::setVtxNtrk (tmpVertex, nTracksNearMuon);
109  xAOD::SecVtxHelper::setEnergyFraction(tmpVertex, Momentum.E()/TrkJet.E());
110  double Signif3D; VrtVrtDist(PrimVrt, FitVertex, ErrorMatrix, Signif3D);
111  xAOD::SecVtxHelper::setVtxnormDist (tmpVertex, Signif3D);
112 
113  std::vector<Trk::VxTrackAtVertex> & tmpVTAV=tmpVertex->vxTrackAtVertex(); tmpVTAV.clear();
114  for(int ii=0; ii<(int)ListTracksNearMuon.size(); ii++) {
115  AmgSymMatrix(5) CovMtxP;
116  CovMtxP.setIdentity();
117  Trk::Perigee * tmpMeasPer = new Trk::Perigee( 0.,0., TrkAtVrt[ii][0], TrkAtVrt[ii][1], TrkAtVrt[ii][2],
118  Trk::PerigeeSurface(FitVertex), CovMtxP );
119  tmpVTAV.emplace_back( 1., tmpMeasPer );
120  ElementLink<xAOD::TrackParticleContainer> TEL; TEL.setElement( ListTracksNearMuon[ii] );
121  const xAOD::TrackParticleContainer* cont = (const xAOD::TrackParticleContainer* ) (ListTracksNearMuon[ii]->container() );
122  TEL.setStorableObject(*cont);
123  tmpVertex->addTrackAtVertex(TEL,1.);
124  }
125  return tmpVertex;
126  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ pTvsDir()

double InDet::InDetSVWithMuonTool::pTvsDir ( const Amg::Vector3D Dir,
const std::vector< double > &  InpTrk 
)
staticprivate

Definition at line 83 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

85  {
86  double Norm=std::sqrt(Dir.x()*Dir.x() + Dir.y()*Dir.y() + Dir.z()*Dir.z());
87  double sx=Dir.x()/Norm;
88  double sy=Dir.y()/Norm;
89  double sz=Dir.z()/Norm;
90 
91  double px=0.,py=0.,pz=0.;
92  double scale{};
93  const auto invDenom{1./std::abs(InpTrk[2])};
94  px = std::cos ( InpTrk[0]) * std::sin(InpTrk[1])*invDenom;
95  py = std::sin ( InpTrk[0]) * std::sin(InpTrk[1])*invDenom;
96  pz = std::cos(InpTrk[1])*invDenom;
97  scale = px*sx + py*sy + pz*sz;
98  px -= sx*scale;
99  py -= sy*scale;
100  pz -= sz*scale;
101  return std::sqrt( px*px +py*py + pz*pz );
102  }

◆ RemoveDoubleEntries()

template<class Trk >
void InDet::InDetSVWithMuonTool::RemoveDoubleEntries ( std::vector< const Trk * > &  ListTracks) const
private

Definition at line 223 of file InDetSVWithMuonTool.h.

224  {
225  typename std::vector<const Trk*>::iterator TransfEnd;
226  sort(ListTracks.begin(),ListTracks.end());
227  TransfEnd = unique(ListTracks.begin(),ListTracks.end());
228  ListTracks.erase( TransfEnd, ListTracks.end());
229  }

◆ RemoveEntryInList()

template<class Trk >
void InDet::InDetSVWithMuonTool::RemoveEntryInList ( std::vector< const Trk * > &  ListTracks,
int  Outlier 
) const
private

Definition at line 215 of file InDetSVWithMuonTool.h.

216  {
217  if(Outlier < 0 ) return;
218  if(Outlier >= (int)ListTracks.size() ) return;
219  ListTracks.erase( ListTracks.begin()+Outlier);
220  }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ SelGoodTrkParticle()

void InDet::InDetSVWithMuonTool::SelGoodTrkParticle ( const std::vector< const xAOD::TrackParticle * > &  InpTrk,
const xAOD::Vertex PrimVrt,
const xAOD::TrackParticle Muon,
std::vector< const xAOD::TrackParticle * > &  SelectedTracks 
) const
private

Definition at line 42 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/CutTrk.cxx.

47  {
48 
49  std::vector<const xAOD::TrackParticle*>::const_iterator i_ntrk;
50  std::vector<double> Impact,ImpactError;
51  for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
52 //
53 //-- Perigee in TrackParticle
54 //
55  const Trk::Perigee mPer=(*i_ntrk)->perigeeParameters() ;
56  AmgVector(5) VectPerig = mPer.parameters();
57 
58 
59  if((*i_ntrk)->numberDoF() == 0) continue; //Protection
60  double trkChi2 = (*i_ntrk)->chiSquared() / (*i_ntrk)->numberDoF();
61 
62  double CovTrkMtx11 = (*i_ntrk)->definingParametersCovMatrix()(0,0);
63  double CovTrkMtx22 = (*i_ntrk)->definingParametersCovMatrix()(1,1);
64  double CovTrkMtx55 = (*i_ntrk)->definingParametersCovMatrix()(4,4);
65 
66 
67 
68  if ( CovTrkMtx11 > m_A0TrkErrorCut*m_A0TrkErrorCut ) continue;
69  if ( CovTrkMtx22 > m_ZTrkErrorCut*m_ZTrkErrorCut ) continue;
70  if( ConeDist(VectPerig,Muon->p4()) > m_ConeForTag ) continue;
71  if( ConeDist(VectPerig,Muon->p4()) < 0.005 ) continue; //muon itself. To protect code.
72 
73  double trkP=1./std::abs(VectPerig[4]);
74  if(trkP>10000.){
75  double trkPErr=std::sqrt(CovTrkMtx55)*trkP;
76  if(trkPErr>0.5) continue;
77  }
78 
79  uint8_t PixelHits,SctHits,BLayHits;
80  if( !((*i_ntrk)->summaryValue(PixelHits,xAOD::numberOfPixelHits)) ) continue; // Track is
81  if( !((*i_ntrk)->summaryValue( SctHits,xAOD::numberOfSCTHits)) ) continue; // definitely
82  if( SctHits<3 ) continue; // bad
83  if( !((*i_ntrk)->summaryValue(BLayHits,xAOD::numberOfInnermostPixelLayerHits))) BLayHits=0;
84  long int SharedHits = 0; //VK Should always be
85 
86  uint8_t splSCTHits,outSCTHits,splPixHits,outPixHits;
87  if( !((*i_ntrk)->summaryValue(splSCTHits,xAOD::numberOfSCTSpoiltHits))) splSCTHits=0;
88  if( !((*i_ntrk)->summaryValue(outSCTHits,xAOD::numberOfSCTOutliers))) outSCTHits=0;
89  if( !((*i_ntrk)->summaryValue(splPixHits,xAOD::numberOfPixelSpoiltHits)))splPixHits=0;
90  if( !((*i_ntrk)->summaryValue(outPixHits,xAOD::numberOfPixelOutliers))) outPixHits=0;
91 
92 
93  m_fitSvc->VKalGetImpact((*i_ntrk), PrimVrt.position(), 1, Impact, ImpactError);
94  double ImpactA0=VectPerig[0]; // Temporary
95  double ImpactZ=VectPerig[1]-PrimVrt.position().z(); // Temporary
96  ImpactA0=Impact[0];
97  ImpactZ=Impact[1];
98  if(std::abs((*i_ntrk)->eta())>2.) {
99  if(PixelHits<=3 &&
100  (splSCTHits || outSCTHits || outPixHits || splPixHits)) continue;
101  if(m_existIBL){PixelHits -=1; SctHits -=1;} // 4-layer pixel detector
102  else {PixelHits -=1;} // 3-layer pixel detector
103  }
104  if(std::abs((*i_ntrk)->eta())>1.65) SctHits -=1;
105 //----
106  StatusCode sc = CutTrk( VectPerig[4] , VectPerig[3],
107  ImpactA0 , ImpactZ, trkChi2,
108  PixelHits, SctHits, SharedHits, BLayHits); //
109  if( sc.isFailure() ) continue;
110  SelectedTracks.push_back(*i_ntrk);
111  }
112  AnalysisUtils::Sort::pT (&SelectedTracks); }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ TotalMom()

TLorentzVector InDet::InDetSVWithMuonTool::TotalMom ( const std::vector< const xAOD::TrackParticle * > &  InpTrk)
staticprivate

Definition at line 133 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

135  {
136  TLorentzVector sum(0.,0.,0.,0.);
137  for (const auto *i : InpTrk) {
138  if( i == nullptr ) continue;
139  sum += i->p4();
140  }
141  return sum;
142  }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

◆ VKalVrtFitBase()

StatusCode InDet::InDetSVWithMuonTool::VKalVrtFitBase ( const std::vector< const xAOD::TrackParticle * > &  listPart,
Amg::Vector3D Vertex,
TLorentzVector &  Momentum,
long int &  Charge,
std::vector< double > &  ErrorMatrix,
std::vector< double > &  Chi2PerTrk,
std::vector< std::vector< double > > &  TrkAtVrt,
double &  Chi2,
Trk::IVKalState istate,
bool  ifCovV0 
) const
private

Definition at line 115 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

125  {
126  std::vector<const xAOD::NeutralParticle*> netralPartDummy(0);
127  return m_fitSvc->VKalVrtFit( listPart, netralPartDummy,Vertex, Momentum, Charge,
128  ErrorMatrix, Chi2PerTrk, TrkAtVrt, Chi2,
129  istate, ifCovV0);
130 
131  }

◆ VKalVrtFitFastBase()

StatusCode InDet::InDetSVWithMuonTool::VKalVrtFitFastBase ( const std::vector< const xAOD::TrackParticle * > &  listPart,
Amg::Vector3D Vertex,
Trk::IVKalState istate 
) const
private

Definition at line 106 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

110  { return m_fitSvc->VKalVrtFitFast(listTrk,FitVertex,istate); }

◆ VrtVrtDist()

double InDet::InDetSVWithMuonTool::VrtVrtDist ( const xAOD::Vertex PrimVrt,
const Amg::Vector3D SecVrt,
const std::vector< double > &  VrtErr,
double &  Signif 
)
staticprivate

Definition at line 20 of file InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx.

23  {
24  double distx = PrimVrt.x()- SecVrt.x();
25  double disty = PrimVrt.y()- SecVrt.y();
26  double distz = PrimVrt.z()- SecVrt.z();
27 
28 
29  AmgSymMatrix(3) PrimCovMtx=PrimVrt.covariancePosition(); //Create
30  PrimCovMtx(0,0) += SecVrtErr[0];
31  PrimCovMtx(0,1) += SecVrtErr[1];
32  PrimCovMtx(1,0) += SecVrtErr[1];
33  PrimCovMtx(1,1) += SecVrtErr[2];
34  PrimCovMtx(0,2) += SecVrtErr[3];
35  PrimCovMtx(2,0) += SecVrtErr[3];
36  PrimCovMtx(1,2) += SecVrtErr[4];
37  PrimCovMtx(2,1) += SecVrtErr[4];
38  PrimCovMtx(2,2) += SecVrtErr[5];
39 
40  AmgSymMatrix(3) WgtMtx = PrimCovMtx.inverse();
41 
42  Signif = distx*WgtMtx(0,0)*distx
43  +disty*WgtMtx(1,1)*disty
44  +distz*WgtMtx(2,2)*distz
45  +2.*distx*WgtMtx(0,1)*disty
46  +2.*distx*WgtMtx(0,2)*distz
47  +2.*disty*WgtMtx(1,2)*distz;
48  Signif=(Signif<0) ? 0.:std::sqrt(Signif);
49  return std::sqrt(distx*distx+disty*disty+distz*distz);
50  }

Member Data Documentation

◆ m_A0TrkErrorCut

double InDet::InDetSVWithMuonTool::m_A0TrkErrorCut {}
private

Definition at line 123 of file InDetSVWithMuonTool.h.

◆ m_ConeForTag

double InDet::InDetSVWithMuonTool::m_ConeForTag {}
private

Definition at line 119 of file InDetSVWithMuonTool.h.

◆ m_CutA0

double InDet::InDetSVWithMuonTool::m_CutA0 {}
private

Definition at line 116 of file InDetSVWithMuonTool.h.

◆ m_CutBLayHits

long int InDet::InDetSVWithMuonTool::m_CutBLayHits {}
private

Definition at line 112 of file InDetSVWithMuonTool.h.

◆ m_CutChi2

double InDet::InDetSVWithMuonTool::m_CutChi2 {}
private

Definition at line 117 of file InDetSVWithMuonTool.h.

◆ m_CutPixelHits

long int InDet::InDetSVWithMuonTool::m_CutPixelHits {}
private

Definition at line 110 of file InDetSVWithMuonTool.h.

◆ m_CutPt

double InDet::InDetSVWithMuonTool::m_CutPt {}
private

Definition at line 114 of file InDetSVWithMuonTool.h.

◆ m_CutSctHits

long int InDet::InDetSVWithMuonTool::m_CutSctHits {}
private

Definition at line 109 of file InDetSVWithMuonTool.h.

◆ m_CutSharedHits

long int InDet::InDetSVWithMuonTool::m_CutSharedHits {}
private

Definition at line 113 of file InDetSVWithMuonTool.h.

◆ m_CutSiHits

long int InDet::InDetSVWithMuonTool::m_CutSiHits {}
private

Definition at line 111 of file InDetSVWithMuonTool.h.

◆ m_CutZVrt

double InDet::InDetSVWithMuonTool::m_CutZVrt {}
private

Definition at line 115 of file InDetSVWithMuonTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_existIBL

bool InDet::InDetSVWithMuonTool::m_existIBL {}
private

Definition at line 128 of file InDetSVWithMuonTool.h.

◆ m_FillHist

bool InDet::InDetSVWithMuonTool::m_FillHist {}
private

Definition at line 126 of file InDetSVWithMuonTool.h.

◆ m_fitSvc

Trk::TrkVKalVrtFitter* InDet::InDetSVWithMuonTool::m_fitSvc {}
private

Definition at line 139 of file InDetSVWithMuonTool.h.

◆ m_fitterSvc

ToolHandle< Trk::IVertexFitter > InDet::InDetSVWithMuonTool::m_fitterSvc
private

Definition at line 138 of file InDetSVWithMuonTool.h.

◆ m_h

std::unique_ptr<Hists> InDet::InDetSVWithMuonTool::m_h
private

Definition at line 106 of file InDetSVWithMuonTool.h.

◆ m_massPi

const double InDet::InDetSVWithMuonTool::m_massPi = 139.5702
private

Definition at line 141 of file InDetSVWithMuonTool.h.

◆ m_Rbeampipe

double InDet::InDetSVWithMuonTool::m_Rbeampipe {}
private

Definition at line 132 of file InDetSVWithMuonTool.h.

◆ m_Rlayer1

double InDet::InDetSVWithMuonTool::m_Rlayer1 {}
private

Definition at line 134 of file InDetSVWithMuonTool.h.

◆ m_Rlayer2

double InDet::InDetSVWithMuonTool::m_Rlayer2 {}
private

Definition at line 135 of file InDetSVWithMuonTool.h.

◆ m_Rlayer3

double InDet::InDetSVWithMuonTool::m_Rlayer3 {}
private

Definition at line 136 of file InDetSVWithMuonTool.h.

◆ m_RlayerB

double InDet::InDetSVWithMuonTool::m_RlayerB {}
private

Definition at line 133 of file InDetSVWithMuonTool.h.

◆ m_RobustFit

long int InDet::InDetSVWithMuonTool::m_RobustFit {}
private

Definition at line 130 of file InDetSVWithMuonTool.h.

◆ m_SecTrkChi2Cut

double InDet::InDetSVWithMuonTool::m_SecTrkChi2Cut {}
private

Definition at line 118 of file InDetSVWithMuonTool.h.

◆ m_Sel2VrtChi2Cut

double InDet::InDetSVWithMuonTool::m_Sel2VrtChi2Cut {}
private

Definition at line 120 of file InDetSVWithMuonTool.h.

◆ m_Sel2VrtSigCut

double InDet::InDetSVWithMuonTool::m_Sel2VrtSigCut {}
private

Definition at line 121 of file InDetSVWithMuonTool.h.

◆ m_TrkSigCut

double InDet::InDetSVWithMuonTool::m_TrkSigCut {}
private

Definition at line 122 of file InDetSVWithMuonTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_ZTrkErrorCut

double InDet::InDetSVWithMuonTool::m_ZTrkErrorCut {}
private

Definition at line 124 of file InDetSVWithMuonTool.h.


The documentation for this class was generated from the following files:
InDet::InDetSVWithMuonTool::CutTrk
StatusCode CutTrk(double, double, double, double, double, long int, long int, long int, long int) const
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/CutTrk.cxx:13
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Trk::TrkVKalVrtFitter::VKalVrtFit
virtual StatusCode VKalVrtFit(const std::vector< const xAOD::TrackParticle * > &, const std::vector< const xAOD::NeutralParticle * > &, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, dvect &ErrorMatrix, dvect &Chi2PerTrk, std::vector< std::vector< double >> &TrkAtVrt, double &Chi2, IVKalState &istate, bool ifCovV0=false) const override final
xAOD::Vertex_v1::x
float x() const
Returns the x position.
InDet::InDetSVWithMuonTool::m_massPi
const double m_massPi
Definition: InDetSVWithMuonTool.h:141
Trk::VKContraintType::Theta
@ Theta
xAOD::Vertex_v1::setPosition
void setPosition(const Amg::Vector3D &position)
Sets the 3-position.
fitman.sy
sy
Definition: fitman.py:524
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDet::InDetSVWithMuonTool::RemoveEntryInList
void RemoveEntryInList(std::vector< const Trk * > &, int) const
Definition: InDetSVWithMuonTool.h:215
xAOD::Vertex_v1::setFitQuality
void setFitQuality(float chiSquared, float numberDoF)
Set the 'Fit Quality' information.
Definition: Vertex_v1.cxx:150
fitman.sz
sz
Definition: fitman.py:527
test_pyathena.px
px
Definition: test_pyathena.py:18
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::numberOfSCTSpoiltHits
@ numberOfSCTSpoiltHits
number of SCT hits with broad errors (width/sqrt(12)) [unit8_t].
Definition: TrackingPrimitives.h:274
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition: Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::InDetSVWithMuonTool::FitCommonVrt
double FitCommonVrt(std::vector< const xAOD::TrackParticle * > &ListSecondTracks, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, Amg::Vector3D &FitVertex, std::vector< double > &ErrorMatrix, TLorentzVector &Momentum, std::vector< std::vector< double > > &TrkAtVrt) const
Definition: MuonVrtSec.cxx:138
AthCUDAExamples::TrackParticleContainer
vecmem::edm::container< TrackParticleInterface, vecmem::edm::type::vector< float >, vecmem::edm::type::vector< float >, vecmem::edm::type::vector< float > > TrackParticleContainer
SoA, GPU friendly TrackParticleContainer.
Definition: Control/AthenaExamples/AthExCUDA/src/TrackParticleContainer.h:46
Trk::TrkVKalVrtFitter::setRobustness
virtual void setRobustness(int, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:116
InDet::InDetSVWithMuonTool::SelGoodTrkParticle
void SelGoodTrkParticle(const std::vector< const xAOD::TrackParticle * > &InpTrk, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, std::vector< const xAOD::TrackParticle * > &SelectedTracks) const
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/CutTrk.cxx:42
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
Trk::TrkVKalVrtFitter::VKalVrtFitFast
virtual StatusCode VKalVrtFitFast(std::span< const xAOD::TrackParticle *const >, Amg::Vector3D &Vertex, double &minDZ, IVKalState &istate) const
Definition: VKalVrtFitFastSvc.cxx:56
InDet::InDetSVWithMuonTool::m_SecTrkChi2Cut
double m_SecTrkChi2Cut
Definition: InDetSVWithMuonTool.h:118
xAOD::SecVtxHelper::setVtxNtrk
void setVtxNtrk(xAOD::Vertex *, int value)
Definition: SecVtxHelper.cxx:48
InDet::InDetSVWithMuonTool::m_fitSvc
Trk::TrkVKalVrtFitter * m_fitSvc
Definition: InDetSVWithMuonTool.h:139
InDet::InDetSVWithMuonTool::m_RlayerB
double m_RlayerB
Definition: InDetSVWithMuonTool.h:133
InDet::InDetSVWithMuonTool::getHists
Hists & getHists() const
Definition: InDetSVWithMuonTool.cxx:196
InDet::InDetSVWithMuonTool::m_CutPt
double m_CutPt
Definition: InDetSVWithMuonTool.h:114
python.compressB64.sx
string sx
Definition: compressB64.py:96
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
skel.it
it
Definition: skel.GENtoEVGEN.py:423
test_pyathena.pt
pt
Definition: test_pyathena.py:11
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::TrkVKalVrtFitter::VKalGetImpact
virtual double VKalGetImpact(const xAOD::TrackParticle *, const Amg::Vector3D &Vertex, const long int Charge, dvect &Impact, dvect &ImpactError, IVKalState &istate) const override final
Definition: VKalGetImpact.cxx:91
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::Vertex_v1::position
const Amg::Vector3D & position() const
Returns the 3-pos.
InDet::InDetSVWithMuonTool::m_CutSctHits
long int m_CutSctHits
Definition: InDetSVWithMuonTool.h:109
xAOD::SecVtxHelper::setEnergyFraction
void setEnergyFraction(xAOD::Vertex *, float value)
Definition: SecVtxHelper.cxx:33
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
InDet::InDetSVWithMuonTool::m_fitterSvc
ToolHandle< Trk::IVertexFitter > m_fitterSvc
Definition: InDetSVWithMuonTool.h:138
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
xAOD::Vertex_v1::setCovariance
void setCovariance(const std::vector< float > &value)
Sets the covariance matrix as a simple vector of values.
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
std::sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:554
InDet::InDetSVWithMuonTool::m_CutZVrt
double m_CutZVrt
Definition: InDetSVWithMuonTool.h:115
InDet::InDetSVWithMuonTool::m_CutSiHits
long int m_CutSiHits
Definition: InDetSVWithMuonTool.h:111
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDet::InDetSVWithMuonTool::m_Rbeampipe
double m_Rbeampipe
Definition: InDetSVWithMuonTool.h:132
OfflineHitType::Perigee
@ Perigee
InDet::InDetSVWithMuonTool::m_existIBL
bool m_existIBL
Definition: InDetSVWithMuonTool.h:128
InDet::InDetSVWithMuonTool::m_CutSharedHits
long int m_CutSharedHits
Definition: InDetSVWithMuonTool.h:113
InDet::InDetSVWithMuonTool::m_Rlayer2
double m_Rlayer2
Definition: InDetSVWithMuonTool.h:135
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
InDet::InDetSVWithMuonTool::m_Sel2VrtSigCut
double m_Sel2VrtSigCut
Definition: InDetSVWithMuonTool.h:121
InDet::InDetSVWithMuonTool::m_Rlayer1
double m_Rlayer1
Definition: InDetSVWithMuonTool.h:134
lumiFormat.i
int i
Definition: lumiFormat.py:92
Trk::TrkVKalVrtFitter::setApproximateVertex
virtual void setApproximateVertex(double X, double Y, double Z, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:108
InDet::InDetSVWithMuonTool::VrtVrtDist
static double VrtVrtDist(const xAOD::Vertex &PrimVrt, const Amg::Vector3D &SecVrt, const std::vector< double > &VrtErr, double &Signif)
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx:20
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
extractSporadic.h
list h
Definition: extractSporadic.py:97
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
AnalysisUtils::Sort::pT
void pT(COLL *coll)
sort by pT
Definition: AnalysisMisc.h:468
InDet::InDetSVWithMuonTool::m_Rlayer3
double m_Rlayer3
Definition: InDetSVWithMuonTool.h:136
JetVoronoiDiagramHelpers::Norm
Point Norm(const Point &a)
Definition: JetVoronoiDiagramHelpers.cxx:79
Amg::pz
@ pz
Definition: GeoPrimitives.h:40
test_pyathena.parent
parent
Definition: test_pyathena.py:15
MuonSegmentReaderConfig.histSvc
histSvc
Definition: MuonSegmentReaderConfig.py:96
xAOD::numberOfPixelOutliers
@ numberOfPixelOutliers
these are the pixel outliers, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::Vertex_v1::z
float z() const
Returns the z position.
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
InDet::InDetSVWithMuonTool::m_FillHist
bool m_FillHist
Definition: InDetSVWithMuonTool.h:126
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg::py
@ py
Definition: GeoPrimitives.h:39
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
xAOD::SecVtxHelper::setVtxnormDist
void setVtxnormDist(xAOD::Vertex *, float value)
Definition: SecVtxHelper.cxx:104
xAOD::numberOfPixelSpoiltHits
@ numberOfPixelSpoiltHits
number of pixel hits with broad errors (width/sqrt(12)) [unit8_t].
Definition: TrackingPrimitives.h:267
InDet::InDetSVWithMuonTool::RemoveDoubleEntries
void RemoveDoubleEntries(std::vector< const Trk * > &) const
Definition: InDetSVWithMuonTool.h:223
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDet::InDetSVWithMuonTool::m_CutChi2
double m_CutChi2
Definition: InDetSVWithMuonTool.h:117
IDTPM::chiSquared
float chiSquared(const U &p)
Definition: TrackParametersHelper.h:136
Muon
struct TBPatternUnitContext Muon
InDet::InDetSVWithMuonTool::ConeDist
static double ConeDist(const AmgVector(5) &, const TLorentzVector &)
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx:54
InDet::InDetSVWithMuonTool::m_RobustFit
long int m_RobustFit
Definition: InDetSVWithMuonTool.h:130
InDet::InDetSVWithMuonTool::m_Sel2VrtChi2Cut
double m_Sel2VrtChi2Cut
Definition: InDetSVWithMuonTool.h:120
std::unique
DataModel_detail::iterator< DVL > unique(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of unique for DataVector/List.
Definition: DVL_algorithms.h:135
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
xAOD::numberOfSCTOutliers
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
Definition: TrackingPrimitives.h:269
InDet::InDetSVWithMuonTool::m_A0TrkErrorCut
double m_A0TrkErrorCut
Definition: InDetSVWithMuonTool.h:123
InDet::InDetSVWithMuonTool::VKalVrtFitFastBase
StatusCode VKalVrtFitFastBase(const std::vector< const xAOD::TrackParticle * > &listPart, Amg::Vector3D &Vertex, Trk::IVKalState &istate) const
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx:106
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SG::getNSlots
size_t getNSlots()
Return the number of event slots.
Definition: SlotSpecificObj.cxx:64
DEBUG
#define DEBUG
Definition: page_access.h:11
InDet::InDetSVWithMuonTool::VKalVrtFitBase
StatusCode VKalVrtFitBase(const std::vector< const xAOD::TrackParticle * > &listPart, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, std::vector< double > &ErrorMatrix, std::vector< double > &Chi2PerTrk, std::vector< std::vector< double > > &TrkAtVrt, double &Chi2, Trk::IVKalState &istate, bool ifCovV0) const
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx:115
xAOD::Vertex_v1::y
float y() const
Returns the y position.
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
InDet::InDetSVWithMuonTool::m_ZTrkErrorCut
double m_ZTrkErrorCut
Definition: InDetSVWithMuonTool.h:124
InDet::InDetSVWithMuonTool::MuonVrtSec
xAOD::Vertex * MuonVrtSec(const std::vector< const xAOD::TrackParticle * > &InpTrk, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, std::vector< const xAOD::TrackParticle * > &ListSecondTracks) const
Definition: MuonVrtSec.cxx:19
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
InDet::InDetSVWithMuonTool::m_ConeForTag
double m_ConeForTag
Definition: InDetSVWithMuonTool.h:119
InDet::InDetSVWithMuonTool::m_TrkSigCut
double m_TrkSigCut
Definition: InDetSVWithMuonTool.h:122
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
ATLAS_THREAD_SAFE
#define ATLAS_THREAD_SAFE
Definition: checker_macros.h:211
InDet::InDetSVWithMuonTool::GetTrkWithMuonVrt
void GetTrkWithMuonVrt(std::vector< const xAOD::TrackParticle * > &SelectedTracks, const xAOD::Vertex &PrimVrt, const xAOD::TrackParticle *Muon, std::vector< const xAOD::TrackParticle * > &ListSecondTracks) const
Definition: MuonVrtSec.cxx:222
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
xAOD::Vertex_v1::vxTrackAtVertex
std::vector< Trk::VxTrackAtVertex > & vxTrackAtVertex()
Non-const access to the VxTrackAtVertex vector.
Definition: Vertex_v1.cxx:181
InDet::InDetSVWithMuonTool::FindMaxAfterFirst
static int FindMaxAfterFirst(std::vector< double > &Chi2PerTrk)
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx:67
OfflineHitType::Outlier
@ Outlier
xAOD::SecVtxHelper::setVertexMass
void setVertexMass(xAOD::Vertex *, float value)
Definition: SecVtxHelper.cxx:18
InDet::InDetSVWithMuonTool::m_CutBLayHits
long int m_CutBLayHits
Definition: InDetSVWithMuonTool.h:112
InDet::InDetSVWithMuonTool::m_CutPixelHits
long int m_CutPixelHits
Definition: InDetSVWithMuonTool.h:110
python.exampleDriverScript.Dir
Dir
Definition: exampleDriverScript.py:20
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Trk::TrkVKalVrtFitter::setMassInputParticles
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:187
InDet::InDetSVWithMuonTool::m_CutA0
double m_CutA0
Definition: InDetSVWithMuonTool.h:116
Trk::TrkVKalVrtFitter::makeState
virtual std::unique_ptr< IVKalState > makeState(const EventContext &ctx) const override final
Definition: TrkVKalVrtFitter.cxx:118
InDet::InDetSVWithMuonTool::TotalMom
static TLorentzVector TotalMom(const std::vector< const xAOD::TrackParticle * > &InpTrk)
Definition: InnerDetector/InDetRecTools/InDetSVWithMuonTool/src/Utilities.cxx:133
fitman.k
k
Definition: fitman.py:528
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
ServiceHandle< ITHistSvc >
Trk::TrkVKalVrtFitter
Definition: TrkVKalVrtFitter.h:67
InDet::InDetSVWithMuonTool::m_h
std::unique_ptr< Hists > m_h
Definition: InDetSVWithMuonTool.h:106