Commit 752b556a authored by Eva Bouhova-Thacker's avatar Eva Bouhova-Thacker Committed by Graeme Stewart
Browse files

migrated to new track EDM (InDetV0Finder-00-06-00)

parent a930d4be
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/***************************************************************************
InDetSimpleV0Finder.h - Description
-------------------
begin : 20-07-2005
authors : Evelina Bouhova-Thacker (Lancater University), Rob Henderson (Lancater University)
email : e.bouhova@cern.ch, r.henderson@lancaster.ac.uk
changes :
***************************************************************************/
#ifndef INDETSIMPLEV0FINDER_INDETV0FINDER_H
#define INDETSIMPLEV0FINDER_INDETV0FINDER_H
#include "AthenaBaseComps/AthAlgorithm.h"
#include "GaudiKernel/ToolHandle.h"
#include "InDetConversionFinderTools/InDetConversionFinderTools.h"
#include "TrkParticleBase/TrackParticleBase.h"
/**
@class InDetSimpleV0Finder
Execute method for the main V0 finding module.
InDetSimpleV0Finder first gets its input tracks from StoreGate.
*/
/* Forward declarations */
namespace Trk
{
class IVertexFitter;
class TrkV0VertexFitter;
class V0Tools;
class IExtrapolator;
class ExtendedVxCandidate;
class ITrackSelectorTool;
}
namespace InDet
{
class VertexPointEstimator;
class InDetSimpleV0Finder : public AthAlgorithm
{
public:
InDetSimpleV0Finder(const std::string &name, ISvcLocator *pSvcLocator);
virtual ~InDetSimpleV0Finder();
StatusCode initialize();
StatusCode execute();
StatusCode finalize();
StatusCode resetStatistics();
protected:
ToolHandle < Trk::IVertexFitter > m_iVertexFitter;
ToolHandle < Trk::IVertexFitter > m_iVKVertexFitter;
ToolHandle < Trk::V0Tools > m_V0Tools;
ToolHandle < InDet::ConversionFinderUtils > m_helpertool;
ToolHandle < Trk::ITrackSelectorTool > m_trkSelector;
ToolHandle < InDet::VertexPointEstimator > m_vertexEstimator;
ToolHandle < Trk::IExtrapolator > m_extrapolator;
bool m_useV0Fitter; //!< = true if using TrkV0Fitter, = false if using VKalVert
double m_minVertProb; //!< Minimum vertex probability (0.0001)
bool m_samesign;
bool m_usePVtracks;
std::string m_TrkParticleCollection ; //!< Name of input track particle collection
std::string m_V0CandidatesOutputName; //!< Name of output container to store results
long m_events_processed;
long m_V0s_stored;
bool doFit(const Trk::TrackParameters* track1, const Trk::TrackParameters* track2, Amg::Vector3D &startingPoint);
};
}//end of namespace InDet
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/***************************************************************************
InDetV0Finder.h - Description
-------------------
begin : 20-07-2005
authors : Evelina Bouhova-Thacker (Lancater University), Rob Henderson (Lancater University)
email : e.bouhova@cern.ch, r.henderson@lancaster.ac.uk
changes :
***************************************************************************/
#ifndef INDETV0FINDER_INDETV0FINDER_H
#define INDETV0FINDER_INDETV0FINDER_H
#include "AthenaBaseComps/AthAlgorithm.h"
#include "GaudiKernel/ToolHandle.h"
#include "HepPDT/ParticleDataTable.hh"
#include "InDetConversionFinderTools/InDetConversionFinderTools.h"
#include "TrkParticleBase/TrackParticleBase.h"
/**
@class InDetV0Finder
Execute method for the main V0 finding module.
InDetV0Finder first gets its input tracks from StoreGate.
*/
/* Forward declarations */
namespace Trk
{
class IVertexFitter;
class TrkV0VertexFitter;
class V0Tools;
class IExtrapolator;
class VxCandidate;
class ExtendedVxCandidate;
class ITrackSelectorTool;
class ParticleDataTable;
class Vertex;
class RecVertex;
}
namespace InDet
{
class VertexPointEstimator;
class InDetV0Finder : public AthAlgorithm
{
public:
InDetV0Finder(const std::string &name, ISvcLocator *pSvcLocator);
virtual ~InDetV0Finder();
StatusCode initialize();
StatusCode execute();
StatusCode finalize();
StatusCode resetStatistics();
protected:
ToolHandle < Trk::IVertexFitter > m_iVertexFitter;
ToolHandle < Trk::IVertexFitter > m_iVKVertexFitter;
ToolHandle < Trk::IVertexFitter > m_iKshortFitter;
ToolHandle < Trk::IVertexFitter > m_iLambdaFitter;
ToolHandle < Trk::IVertexFitter > m_iLambdabarFitter;
ToolHandle < Trk::IVertexFitter > m_iGammaFitter;
ToolHandle < Trk::V0Tools > m_V0Tools;
ToolHandle < InDet::ConversionFinderUtils > m_helpertool;
ToolHandle < Trk::ITrackSelectorTool > m_trkSelector;
ToolHandle < InDet::VertexPointEstimator > m_vertexEstimator;
ToolHandle < Trk::IExtrapolator > m_extrapolator;
const HepPDT::ParticleDataTable *m_particleDataTable;
bool m_startup; //!< = true not using cuts on constrained fits (true)
bool m_useorigin; //!< = true only using tracks that have no vertex association (true)
bool m_samesign; //!< = true select tracks with same sign (false)
bool m_pv; //!< = true select tracks wrt primary vertex (false)
bool m_doUnconstrPointing; //!< = pointing to PV for unconstrained fit (false)
bool m_doConstrPointing; //!< = pointing to PV for mass constrained fit (false)
bool m_useTRTplusTRT; //!< = use TRT+TRT pairs (true)
bool m_useTRTplusSi; //!< = use TRT+Si pairs (true)
bool m_useV0Fitter; //!< = true if using TrkV0Fitter, = false if using VKalVert (true)
bool m_useerrorcode5; //!< = true if using starting points with errorcode = 5 (true)
int m_CnstType; //!< = 2 VKalVrt exact pointing, = 7 "pass near" (2)
int m_vertex; //!< = 1 if using starting point, = 2 if using unconstrained fit (1)
int m_masses; //!< = 1 if using PDG values, = 2 if user set (1)
int m_gamma; //!< = 1 if using VKalVert for conversion fit, = 2 if using TrkV0Fitter (1)
int m_electrons; //!< = 1 if using electron cuts, = 0 if not (0)
double m_masspi; //!< pion mass (139.57 MeV)
double m_massp; //!< proton mass (938.272 MeV)
double m_masse; //!< electron mass (0.510999 MeV)
double m_massK0S; //!< Kshort mass (497.672 MeV)
double m_massLambda; //!< Lambda mass (1115.68 MeV)
double m_massGamma; //!< Gamma mass (0.0 MeV)
double m_ptTRT; //!< Minimum pT for TRT tracks (700. MeV)
double m_eprob_s; //!< electron probability Si (< 0.995)
double m_eprob_t; //!< electron probability TRT (< 0.5)
double m_minRxy; //!< Minimum Rxy of vertex (0.0 mm)
double m_minsxy; //!< Minimum Rxy of starting point (0.0 mm)
double m_maxsxy; //!< Maximum Rxy of starting point (1000. mm)
double m_minslxy; //!< Minimum Lxy of starting point (-1000 mm)
double m_maxslxy; //!< Maximum Lxy of starting point (1000. mm)
double m_rmax_s; //!< distance of first measurement to the starting point Si (300. mm)
double m_rmax_t; //!< distance of first measurement to the starting point TRT (1000. mm)
double m_ksmin_s; //!< min Kshort mass at starting point Si (400. MeV)
double m_ksmax_s; //!< max Kshort mass at starting point Si (600. MeV)
double m_lamin_s; //!< min Lambda mass at starting point Si (1050. MeV)
double m_lamax_s; //!< max Lambda mass at starting point Si (1200. MeV)
double m_ksmin_t; //!< min Kshort mass at starting point TRT (0. MeV)
double m_ksmax_t; //!< max Kshort mass at starting point TRT (2000. MeV)
double m_lamin_t; //!< min Lambda mass at starting point TRT (1050. MeV)
double m_lamax_t; //!< max Lambda mass at starting point TRT (2000. MeV)
double m_uksmin_s; //!< min Lambda mass for unconstrained fit (460. MeV)
double m_uksmax_s; //!< max Lambda mass for unconstrained fit (540. MeV)
double m_ulamin_s; //!< min Lambda mass for unconstrained fit (1100. MeV)
double m_ulamax_s; //!< max Lambda mass for unconstrained fit (1135. MeV)
double m_uksmin_t; //!< min Kshort mass for unconstrained fit (350. MeV)
double m_uksmax_t; //!< max Kshort mass for unconstrained fit (800. MeV)
double m_ulamin_t; //!< min Kshort mass for unconstrained fit (1100. MeV)
double m_ulamax_t; //!< max Kshort mass for unconstrained fit (1450. MeV)
double m_ugamax; //!< max Gamma mass for unconstrained fit (100. MeV)
double m_errmass_ks; //!< Kshort mass error (25. MeV)
double m_errmass_la; //!< Lambda mass error (10. MeV)
double m_errmass_ga; //!< Gamma mass error (10. MeV)
double m_errmass_t; //!< Maximum mass error for TRT (500. MeV)
double m_minVertProb; //!< Minimum vertex probability (0.0001)
double m_minConstrVertProb; //!< Minimum vertex probability for constrained fit (0.0001)
double m_hlxymin_ss; //!< min hitlxy/Rxy for Si+Si pairs (0. mm)
double m_hlxymax_ss; //!< max hitlxy/Rxy for Si+Si pairs (10. mm)
double m_hlxymin_st; //!< min hitlxy/Rxy for Si+TRT pairs (0. mm)
double m_hlxymax_st; //!< max hitlxy/Rxy for Si+TRT pairs (20. mm)
double m_hlxymin_tt; //!< min hitlxy/Rxy for TRT+TRT pairs (-50. mm)
double m_hlxymax_tt; //!< max hitlxy/Rxy for TRT+TRT pairs (50. mm)
double m_pt_s; //!< min pt at starting point Si (-99. MeV)
double m_pt_t; //!< min pt at starting point TRT (-99. MeV)
double m_upt_s; //!< min pt of mass-unconstrained candidate Si (-99. MeV)
double m_upt_t; //!< min pt of mass-unconstrained candidate TRT (-99. MeV)
double m_kspt_s; //!< min Kshort pt of mass constrained candidate Si (-99. MeV)
double m_lapt_s; //!< min Lambda pt of mass constrained candidate Si (-99. MeV)
double m_gapt_s; //!< min conversion pt of mass constrained candidate Si (-99. MeV)
double m_kspt_t; //!< min Kshort pt of mass constrained candidate TRT (-99. MeV)
double m_lapt_t; //!< min Lambda pt of mass constrained candidate TRT (-99. MeV)
double m_gapt_t; //!< min conversion pt of mass constrained candidate TRT (-99. MeV)
double m_ulxy_s; //!< Minimum Lxy of the mass-unconstrained candidate Si (-1000.)
double m_ulxy_t; //!< Minimum Lxy of the mass-unconstrained candidate TRT (-1000.)
double m_lalxy_s; //!< Minimum Lxy of the Lambda candidate Si (-1000.)
double m_lalxy_t; //!< Minimum Lxy of the Lambda candidate TRT (-1000.)
double m_kslxy_s; //!< Minimum Lxy of the Ks candidate Si (-1000.)
double m_kslxy_t; //!< Minimum Lxy of the Ks candidate TRT (-1000.)
double m_galxy_s; //!< Minimum Lxy of the conversion candidate Si (-1000.)
double m_galxy_t; //!< Minimum Lxy of the conversion candidate TRT (-1000.)
std::string m_TrkParticleCollection ; //!< Name of input track particle collection
std::string m_VxPrimaryCandidateName; //!< Name of primary vertex container
std::string m_V0CandidatesOutputName; //!< Name of output container to store results
double m_rmax;
double m_ksmin;
double m_ksmax;
double m_lamin;
double m_lamax;
double m_hlxymin;
double m_hlxymax;
double m_pt;
double m_upt;
double m_kspt;
double m_lapt;
double m_gapt;
double m_ulxy;
double m_lalxy;
double m_kslxy;
double m_galxy;
long m_events_processed;
long m_V0s_stored;
long m_Kshort_stored;
long m_Lambda_stored;
long m_Lambdabar_stored;
long m_Gamma_stored;
void SGError(std::string errService);
double invariantMass(const Trk::TrackParameters* per1, const Trk::TrackParameters* per2, double &m1, double &m2);
bool doFit(const Trk::TrackParameters* track1, const Trk::TrackParameters* track2, Amg::Vector3D &startingPoint, Trk::RecVertex* primaryVertex);
bool useFit(const Trk::TrackParameters* track1, const Trk::TrackParameters* track2, const Trk::ExtendedVxCandidate* vxCandidate, Trk::RecVertex* primaryVertex);
bool doMassFit(const Trk::ExtendedVxCandidate* vxCandidate, int pdgID, bool is_TRT);
bool electronPair(const Trk::TrackSummary* tSum1, const Trk::TrackSummary* tSum2, int nclus1, int nclus2);
Trk::VxCandidate* massFit(int pdgID, std::vector<const Trk::TrackParameters*> pairV0, Trk::RecVertex * pointingVertex, Trk::Vertex vertex, Trk::TrkV0VertexFitter* concreteVertexFitter, Trk::RecVertex* primaryVertex);
double getPt(const Trk::TrackParameters* per1, const Trk::TrackParameters* per2);
};
}//end of namespace InDet
#endif
package InDetV0Finder
author Evelina Bouhova-Thacker <e.bouhova@cern.ch>
# general athena dependecies
use AthenaBaseComps AthenaBaseComps-* Control
use AtlasPolicy AtlasPolicy-*
use GaudiInterface GaudiInterface-* External
use HepPDT v* LCG_Interfaces
use InDetConversionFinderTools InDetConversionFinderTools-* InnerDetector/InDetRecTools
use TrkParticleBase TrkParticleBase-* Tracking/TrkEvent
private
use AtlasCLHEP AtlasCLHEP-* External
use DataModel DataModel-* Control
# for the new track class
#use TrkParameters TrkParameters-* Tracking/TrkEvent
use VxVertex VxVertex-* Tracking/TrkEvent
use TrkV0Vertex TrkV0Vertex-* Tracking/TrkEvent
use TrkExInterfaces TrkExInterfaces-* Tracking/TrkExtrapolation
use TrkToolInterfaces TrkToolInterfaces-* Tracking/TrkTools
# dependencies on other vertexing packages
use TrkVertexFitterInterfaces TrkVertexFitterInterfaces-* Tracking/TrkVertexFitter
use TrkV0Fitter TrkV0Fitter-* Tracking/TrkVertexFitter
use TrkVKalVrtFitter TrkVKalVrtFitter-* Tracking/TrkVertexFitter
use TrkVertexAnalysisUtils TrkVertexAnalysisUtils-* Tracking/TrkVertexFitter
public
library InDetV0Finder *.cxx components/*.cxx
apply_pattern component_library
# apply_pattern dual_use_library files="*.cxx"
#private
#macro cppdebugflags '$(cppdebugflags_s)'
#macro_remove componentshr_linkopts "-Wl,-s"
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/**
\mainpage The InDetV0FinderInterfaces package
@author Evelina.Bouhova@cern.ch
\section introductionInDetV0Finder Introduction:
InDetV0Finder is a package which contains the algorithm for finding V0 vertices in
the Inner Detector. It retrieves a V0Container and writes all info to StoreGate.
\section howitworksInDetV0Finder How it works:
InDetV0Finder gets its input tracks from StoreGate and selects tracks pairs with
opposite charge. If an acceptable starting point is found by <b></i>m_getStartingPoint</i></b>
a 3D vertex fit without any mass or pointing constraints is performed using <b></i>TrkV0Fitter</i></b>.
If the unconstrained fit satisfies a number of conditions, mass constrained fits,
assuming Kshort, Lambda, LambdaBar and Gamma hypotheses, are performed.
If at least one of these is successful and the imposed conditions are met,
a Trk::V0Candidate is stored, containing all accepted Trk::V0Hypothesis
<br>
<b></i>m_getStartingPoint</i></b> calculates the initial approximation to the vertex position.
Based on CTVMFT, it tries to intersect circles that are (R,Phi) projections of the helical
trajectories of the two tracks. If the circles intersect, the intersection with smaller z difference
between the two helices extrapolated to the intersection is chosen. If the circles do not intersect,
the vertex approximation is taken as the point of closest approach of the two circles. The first
track in the argument list should be the track with the smaller radius.
\section jobOptionsInDetV0Finder The jobOptions file:
The algorithm is automatically configured via genConf. Most cuts are controlled by parameters,
which can be changed through jobOptions:
- int <b></i>m_masses</i></b> = 1 if using PDG values for the masses of the two tracks and the V0,
= 2 if user set;
- double <b></i>m_masspi</i></b> : pion mass (139.57 MeV)
- double <b></i>m_massp</i></b> : proton mass (938.272 MeV)
- double <b></i>m_masse</i></b> : electron mass (0.510999 MeV)
- double <b></i>m_massK0S</i></b> : Kshort mass (497.672 MeV)
- double <b></i>m_massLambda</i></b> : Lambda mass (1115.68 MeV)
- double <b></i>m_massGamma</i></b> : Gamma mass (0.0 MeV)
- double <b></i>m_d0min</i></b> : Minimum d0 of charged tracks
- double <b></i>m_z0min</i></b> : Minimum z0 of charged tracks
- double <b></i>m_ptmin</i></b> : Minimumpt of charged tracks
- double <b></i>m_minsxy</i></b> : Minimum Rxy of starting point (1. mm)
- double <b></i>m_minRxy</i></b> : Minimum Rxy of vertex (10. mm)
- int <b></i>m_lcuts</i></b> = 1 if using vertex prob cuts, = 2 if using chi2 cuts
- int <b></i>m_mcuts</i></b> = 1 if using mass prob cuts, = 2 if using mass window cuts
- int <b></i>m_mfcuts</i></b> = 1 if using mass prob cuts, = 2 if using mass window cuts (final selection)
- int <b></i>m_point</i></b> = 1 if no pointing for conversions, = 2 if pointing to PV
- double <b></i>m_maxChi2</i></b> : Maximum chi2/dof of vertex fit (6.)
- double <b></i>m_minVertProb</i></b> : Minimum vertex probability (0.001)
- double <b></i>m_minMassProb</i></b> : Minimum probability for a mass hypothesis (0.001)
- double <b></i>m_maxMassErr</i></b> : Maximum mass error (100.)
- double <b></i>m_sigmassK0S</i></b> : Kshort mass resolution (8.5 MeV)
- double <b></i>m_sigmassLambda</i></b> : Lambda mass resolution (3.5 MeV)
- double <b></i>m_sigmassGamma</i></b> : Gamma invariant mass cut (10.0 MeV)
- double <b></i>m_nsig</i></b> : mass windows set to m_nsig times the mass resolution (5.)
\section requirementsInDetV0Finder Requirements
@htmlinclude used_packages.html
@include requirements
*/
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/***************************************************************************
InDetSimpleV0Finder.cxx - Description
-------------------
begin : 20-07-2005
authors : Evelina Bouhova-Thacker (Lancaster University), Rob Henderson (Lancater University)
email : e.bouhova@cern.ch, r.henderson@lancaster.ac.uk
changes : June 1 2006
author : Kirill Prokofiev <Kirill.Prokofiev@cern.ch>
Changed to use the ExtendedVxCandidate..
***************************************************************************/
#include "GaudiKernel/IToolSvc.h"
#include "GaudiKernel/ISvcLocator.h"
#include "VxVertex/ExtendedVxCandidate.h"
#include "VxVertex/VxContainer.h"
#include "TrkV0Vertex/V0Hypothesis.h"
#include "TrkV0Vertex/V0Candidate.h"
#include "TrkV0Vertex/V0Container.h"
#include "InDetV0Finder/InDetSimpleV0Finder.h"
#include "TrkVertexFitterInterfaces/IVertexFitter.h"
#include "TrkV0Fitter/TrkV0VertexFitter.h"
#include "TrkVertexAnalysisUtils/V0Tools.h"
#include "TrkVKalVrtFitter/TrkVKalVrtFitter.h"
#include "TrkExInterfaces/IExtrapolator.h"
#include "VxVertex/VxTrackAtVertex.h"
#include "TrkToolInterfaces/ITrackSelectorTool.h"
#include "InDetConversionFinderTools/VertexPointEstimator.h"
#include "InDetConversionFinderTools/InDetConversionFinderTools.h"
#include "InDetConversionFinderTools/ConversionFinderUtils.h"
#include "GaudiKernel/IPartPropSvc.h"
#include "DataModel/ElementLink.h"
#include "TrkParticleBase/LinkToTrackParticleBase.h"
#include "TrkParticleBase/TrackParticleBaseCollection.h"
#include <vector>
#include <cmath>
namespace InDet
{
InDetSimpleV0Finder::InDetSimpleV0Finder(const std::string &n, ISvcLocator *pSvcLoc)
:
AthAlgorithm(n, pSvcLoc),
m_iVertexFitter("Trk::V0VertexFitter"),
m_iVKVertexFitter("Trk::TrkVKalVrtFitter"),
m_V0Tools("Trk::V0Tools"),
m_helpertool("InDet::ConversionFinderUtils"),
m_trkSelector("InDet::TrackSelectorTool"),
m_vertexEstimator("InDet::VertexPointEstimator"),
m_extrapolator("Trk::Extrapolator/InDetExtrapolator"),
m_useV0Fitter(true),
m_minVertProb(0.0001),
m_samesign(false),
m_TrkParticleCollection("TrackParticleCandidate"),
m_V0CandidatesOutputName("V0Candidates")
{
declareProperty("VertexFitterTool", m_iVertexFitter);
declareProperty("VKVertexFitterTool", m_iVKVertexFitter);
declareProperty("V0Tools",m_V0Tools);
declareProperty("ConversionFinderHelperTool", m_helpertool);
declareProperty("TrackSelectorTool", m_trkSelector);
declareProperty("VertexPointEstimator", m_vertexEstimator);
declareProperty("Extrapolator", m_extrapolator);
declareProperty("useV0Fitter", m_useV0Fitter, "use the V0Fitter instead of the VKVertexFitter");
declareProperty("minVertProb", m_minVertProb, "cut on vertex-fit chi2 probability (max value)");
declareProperty("AddSameSign", m_samesign);
declareProperty("UsePrimaryVertexTracks", m_usePVtracks=false, "Use or ignore tracks which are used by the primary vertex");
declareProperty("TrackParticleCollection", m_TrkParticleCollection, "StoreGate name of input TrackParticle collection");
declareProperty("V0CandidatesOutputName", m_V0CandidatesOutputName="SimpleV0Candidates");
}
InDetSimpleV0Finder::~InDetSimpleV0Finder() {}
StatusCode InDetSimpleV0Finder::initialize()
{
StatusCode sc;
// Get the right vertex fitting tool from ToolSvc
if (m_useV0Fitter) {
if ( m_iVertexFitter.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_iVertexFitter << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_iVertexFitter << endreq;
}
} else {
if ( m_iVKVertexFitter.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_iVKVertexFitter << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_iVKVertexFitter << endreq;
}
}
sc = resetStatistics(); // reset counters
if (sc.isFailure()) {
msg(MSG::FATAL) << "Error in resetStatistics !" << endreq;
return sc;
}
// uploading the corresponding V0 tools
if ( m_V0Tools.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_V0Tools << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_V0Tools << endreq;
}
// Get the extrapolator
if ( m_extrapolator.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_extrapolator << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_extrapolator << endreq;
}
// Get the helpertool from ToolSvc
if ( m_helpertool.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_helpertool << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_helpertool << endreq;
}
// Get the track selector tool from ToolSvc
if ( m_trkSelector.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_trkSelector << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_trkSelector << endreq;
}
// Get the vertex point estimator tool from ToolSvc
if ( m_vertexEstimator.retrieve().isFailure() ) {
msg(MSG::FATAL) << "Failed to retrieve tool " << m_vertexEstimator << endreq;
return StatusCode::FAILURE;
} else {
msg(MSG::INFO) << "Retrieved tool " << m_vertexEstimator << endreq;
}
msg(MSG::INFO) << "Initialization successful" << endreq;
return StatusCode::SUCCESS;
}
StatusCode InDetSimpleV0Finder::execute()
{
StatusCode sc;
m_events_processed ++;
// making a concrete fitter for the V0Fitter
Trk::TrkV0VertexFitter* concreteVertexFitter=0;
if (m_useV0Fitter) {
concreteVertexFitter = dynamic_cast<Trk::TrkV0VertexFitter * >(&(*m_iVertexFitter));
if(concreteVertexFitter == 0) {
ATH_MSG_FATAL("The vertex fitter passed is not a V0 Vertex Fitter");
return StatusCode::FAILURE;
}
}
// Retrieve track particles from StoreGate
const Trk::TrackParticleBaseCollection* TPC(0);
sc = evtStore()->retrieve(TPC,m_TrkParticleCollection);