Commit 60b0860b authored by Andreas Salzburger's avatar Andreas Salzburger Committed by Graeme Stewart
Browse files

Tagging as InDetExtensionProcessor-00-03-00 (InDetExtensionProcessor-00-03-00)

parent 6a000244
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
///////////////////////////////////////////////////////////////////
// InDetExtensionProcessor.h, (c) ATLAS Detector Softwareop
///////////////////////////////////////////////////////////////////
#ifndef INDETEXTENSIONPROCESSOR_H
#define INDETEXTENSIONPROCESSOR_H
// Base class
#include "AthenaBaseComps/AthAlgorithm.h"
#include "GaudiKernel/ToolHandle.h"
#include "TrkTrack/TrackCollection.h"
#include "TrkTrack/TrackExtensionMap.h"
#include "TrkFitterUtils/FitterTypes.h"
#include "TrkEventPrimitives/ParticleHypothesis.h"
#include <vector>
namespace Trk{
class ITrackScoringTool;
class ITrackFitter;
}
namespace InDet {
/** @brief Algorithm to process a TrackExtensionMap, refit the
extended tracks and decide if the old track is to be
replaced by the extended one.
@author Markus.Elsing@cern.ch
*/
class InDetExtensionProcessor : public AthAlgorithm {
public:
//! Default Algorithm constructor with parameters
InDetExtensionProcessor(const std::string &name,ISvcLocator *pSvcLocator);
virtual StatusCode initialize(); //!< athena method
virtual StatusCode execute(); //!< athena method
virtual StatusCode finalize(); //!< athena method
private:
//! process events
void process();
//! internal structuring: creates new track with original one plus extension as outliers
Trk::Track* trackPlusExtension(const Trk::Track*,
const std::vector<const Trk::MeasurementBase*>&) const;
//
// --- job options
//
std::string m_TrackName; //!< Name of input Trackcollection
bool m_cosmics; //!< whether we are running cosmics
std::string m_ExtensionMapName; //!< Name of input extension map
std::string m_NewTrackName; //!< Name of output Trackcollection
ToolHandle<Trk::ITrackFitter> m_ITrackFitter; //!< track fitter tool handle
ToolHandle<Trk::ITrackScoringTool> m_scoringTool; //!< track scorer tool handle
Trk::RunOutlierRemoval m_runOutlier; //!< whether to run outlier logics
//! switch whether to append a rejected extension as outlier trajectory
bool m_keepFailedExtensionOnTrack;
//! fitter steering: whether to do the fit with re-calibrated clusters (true) or not
bool m_refitPrds;
//! type of material interaction in extrapolation
int m_matEffects;
bool m_suppressHoleSearch; //!< no hole search ?
bool m_tryBremFit; //!< brem recovery mode ?
bool m_caloSeededBrem; //!< run in Calo seeded mode
float m_pTminBrem; //!< min pt for a brem fit
// -- algorithm members
const TrackCollection* m_tracks;
const TrackExtensionMap* m_trackExtensionMap;
TrackCollection* m_newtracks; //!< collection pointer for new tracks
Trk::ParticleHypothesis m_ParticleHypothesis; //!< nomen est omen
// -- statistics
int m_Nevents;
std::vector<int> m_Ninput, m_Nrecognised, m_Nextended, m_Nrejected, m_Nfailed,
m_NrecoveryBremFits,m_NbremFits,m_Nfits,m_NnotExtended,m_NlowScoreBremFits, m_NextendedBrem;
//! internal monitoring: categories for counting different types of extension results
enum StatIndex {iAll = 0, iBarrel = 1, iTransi = 2, iEndcap = 3};
std::vector<float> m_etabounds; //!< eta intervals for internal monitoring
//! monitoring and validation: does success/failure counting
void increment_by_eta(std::vector<int>&,const Trk::Track*,bool=true);
};
}
#endif //INDETEXTENSIONPROCESSOR_H
package InDetExtensionProcessor
manager Markus Elsing <Markus.Elsing@cern.ch>
author Markus Elsing <Markus.Elsing@cern.ch>
private
use TrkFitterInterfaces TrkFitterInterfaces-* Tracking/TrkFitter
use StoreGate StoreGate-* Control
use TrkToolInterfaces TrkToolInterfaces-* Tracking/TrkTools
use TrkRIO_OnTrack TrkRIO_OnTrack-* Tracking/TrkEvent
use TrkPrepRawData TrkPrepRawData-* Tracking/TrkEvent
use TrkParameters TrkParameters-* Tracking/TrkEvent
public
use AtlasPolicy AtlasPolicy-*
use GaudiInterface GaudiInterface-* External
use AthenaBaseComps AthenaBaseComps-* Control
use TrkTrack TrkTrack-* Tracking/TrkEvent
use TrkFitterUtils TrkFitterUtils-* Tracking/TrkFitter
use TrkEventPrimitives TrkEventPrimitives-* Tracking/TrkEvent
library InDetExtensionProcessor *.cxx components/*.cxx
apply_pattern component_library
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/**
@mainpage The InDetExtensionProcessor package
The InDetExtensionProcessor package provides algorithms which
form part of the Inner Detector track reconstruction sequence [1].
Currently there is one algorithm, InDet::InDetExtensionProcessor,
which is run at the end of the inside-out track finding to
evaluate by means of a full track fit if a proposed extension
of TRT hits matches with the associated silicon track.
Three possible situations are treated in this algorithm:
- For a given Si track no extension is proposed. The original Si track is kept unmodified.
- For a given Si track an extension is proposed, but the track fit failed or gives a worse score than the initial Si track. A new track object is then made with the additional TRT hits added as outlier states and the original Si track fit result.
- For a given Si track an extension is proposed, and the additional hits have improved the track score. The new fit result is kept and a new Track made.
The algorithm is coded in a general way and can work with any combination
of original tracks and associated extensions given through a
Trk::TrackExtensionMap and with any type of track fitter.
@author Markus Elsing
@section BiblioInDetExtensionProcessor References
[1] T. Cornelissen et al., <i>Concepts, Design and Implementation of the ATLAS New Tracking</i>, ATLAS int.comm com-soft-2007_002<br>
@section JoboptionsInDetExtensionProcessor Job options for InDet::InDetExtensionProcessor
<DL>
<DT>TrackName
<DD>Name of the input Trackcollection in StoreGate.
Default: <tt>Tracks</tt>
<DT>ExtensionMap
<DD>Name of the input extension map in StoreGate.
Default: <tt>TrackExtensionMap</tt>
<DT>NewTrackName
<DD>Name of the output Trackcollection under which it shall be written to StoreGate.
Default: <tt>ExtendedTrack</tt>
<DT>TrackFitter
<DD>Toolhandle for the track fitter.
Default: <tt>Trk::KalmanFitter</tt>
<DT>ScoringTool
<DD>Toolhandle for the track scorer.
Default: <tt>Trk::TrackScoringTool</tt>
<DT>runOutlier
<DD>switch whether to run outlier logics or not.
Default: <tt>True</tt>
<DT>RefitPrds
<DD>switch whether to have the fit re-calibrated the clusters and drift circles
(true) or not. Default: <tt>False</tt>
<DT>matEffects
<DD>particle hypothesis to assume for material effects in track fit.
Default: <tt>4 (pion)</tt>
<DT>keepFailedExtension
<DD>switch whether to keep failed extension as outlier hits on the new track.
Default: <tt>True</tt>
<DT>etaBounds
<DD>eta intervals for internal monitoring.
Default: <tt>0.8, 1.6, 2.1</tt>
</DL>
@section ExtrasInDetExtensionProcessor Extra Pages
- @ref UsedInDetExtensionProcessor
- @ref RequirementsInDetExtensionProcessor
*/
/**
@page UsedInDetExtensionProcessor Used Packages
@htmlinclude used_packages.html
*/
/**
@page RequirementsInDetExtensionProcessor Requirements
@include requirements
*/
#include "InDetExtensionProcessor/InDetExtensionProcessor.h"
#include "GaudiKernel/DeclareFactoryEntries.h"
using namespace InDet;
DECLARE_NAMESPACE_ALGORITHM_FACTORY( InDet, InDetExtensionProcessor )
DECLARE_FACTORY_ENTRIES(InDetExtensionProcessor) {
DECLARE_NAMESPACE_ALGORITHM( InDet, InDetExtensionProcessor)
}
#include "GaudiKernel/LoadFactoryEntries.h"
LOAD_FACTORY_ENTRIES(InDetExtensionProcessor)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment