Commit 62fc6fb5 authored by Nicholas Styles's avatar Nicholas Styles Committed by Graeme Stewart
Browse files

migrate to Eigen/new Track EDM (TRT_SeededTrackFinder-01-00-00)

parent da179f39
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/**********************************************************************************
Header file for class TRT_SeededTrackFinder
(c) ATLAS Detector software
Algorithm for Trk::Track production in SCT and Pixels
Version 1.0: 04/12/2006
Authors : Thomas Koffas, Markus Elsing
email : Thomas.Koffas@cern.ch
**********************************************************************************/
#ifndef TRT_SeededTrackFinder_H
#define TRT_SeededTrackFinder_H
#include <string>
#include "AthenaBaseComps/AthAlgorithm.h"
#include "GaudiKernel/ToolHandle.h"
#include "GaudiKernel/ServiceHandle.h"
#include "InDetRecToolInterfaces/ITRT_SeededTrackFinder.h"
///Track Collection to store the tracks
#include "TrkTrack/TrackCollection.h"
///Needed for the TRT track segments
#include "TrkSegment/SegmentCollection.h"
///Needed for the track refitter
#include "TrkFitterInterfaces/ITrackFitter.h"
///Needed for the TRT extension tool
#include "InDetRecToolInterfaces/ITRT_TrackExtensionTool.h"
#include "TrkExInterfaces/IExtrapolator.h"
#include "InDetBeamSpotService/IBeamCondSvc.h"
class MsgStream;
namespace InDet {
/**
@class TRT_SeededTrackFinder
InDet::TRT_SeededTrackFinde is an algorithm which produces tracks
moving outside-in in the Inner Detector.
*/
class TRT_SeededTrackFinder : public AthAlgorithm
{
///////////////////////////////////////////////////////////////////
// Public methods:
///////////////////////////////////////////////////////////////////
public:
///////////////////////////////////////////////////////////////////
/** Standard Algotithm methods */
///////////////////////////////////////////////////////////////////
TRT_SeededTrackFinder(const std::string &name, ISvcLocator *pSvcLocator);
virtual ~TRT_SeededTrackFinder() {}
StatusCode initialize();
StatusCode execute();
StatusCode finalize();
///////////////////////////////////////////////////////////////////
/** Print internal tool parameters and status */
///////////////////////////////////////////////////////////////////
MsgStream& dump (MsgStream& out) const;
std::ostream& dump (std::ostream& out) const;
protected:
///////////////////////////////////////////////////////////////////
/* Protected data */
///////////////////////////////////////////////////////////////////
int m_nprint ;
int m_ntracks ; /** Number of tracks found */
std::string m_inseglocation ; /** Name of input TRT segments location */
std::string m_outtracklocation ; /** Name of output tracks location */
bool m_doRefit ; /** Do final careful refit of tracks */
bool m_doExtension ; /** Find the TRT extension of the Si track segment */
bool m_rejectShortExten ; /** use extension only if better than original track */
bool m_doStat ; /** Statistics of final tracks */
bool m_saveTRT ; /** Output stand-alone TRT segments */
int m_MaxSegNum ; /** Maximum number of segments to be handled */
unsigned int m_minTRTonSegment ; /** Minimum number of TRT hits on segment */
unsigned int m_minTRTonly ; /** Minimum number of TRT hits on TRT only */
ToolHandle<ITRT_SeededTrackFinder> m_trackmaker ; /** Track maker tool */
ToolHandle<Trk::ITrackFitter> m_fitterTool ; /** Refitting tool */
ToolHandle<ITRT_TrackExtensionTool> m_trtExtension ; /** TRT track extension tool */
const Trk::SegmentCollection *m_Segments ; /** TRT segments to use */
ToolHandle<Trk::IExtrapolator> m_extrapolator; //!< the extrapoator
ServiceHandle<IBeamCondSvc> m_iBeamCondSvc; //!< pointer to the beam condition service
bool m_SiExtensionCuts; //!< enable cuts after Si segment finding
double m_minPt; //!< minimal Pt cut
double m_maxEta; //!< maximal Eta cut
double m_maxRPhiImp; //!< maximal RPhi impact parameter cut
double m_maxZImp; //!< maximal z impact parameter cut
/** Global Counters for final algorithm statistics */
int m_nTrtSeg ; /** Number of TRT segments to be investigated per event */
int m_nTrtFailSel ; /** Number of TRT segments failing input selection */
int m_nTrtSegGood ; /** Number of TRT segments that will be investigated per event */
int m_nTrtLimit ; /** Number of TRT segments lost in busy events */
int m_nTrtNoSiExt ; /** Number of TRT segments not extended in Si */
int m_nExtCut ; /** Number of Si extensions failing cuts */
int m_nBckTrkTrt ; /** Number of back tracks found without a Si extension per event */
int m_nTrtExtCalls ; /** Number of times the TRT extension is called */
int m_nTrtExt ; /** Number of good TRT extensions */
int m_nTrtExtBad ; /** Number of shorter TRT extensions */
int m_nTrtExtFail ; /** Number of failed TRT extensions */
int m_nBckTrkSi ; /** Number of back tracks found with Si extension per event */
int m_nBckTrk ; /** Number of back tracks found with or without Si extension per event */
int m_nTrtSegTotal ; /** Total number of TRT segments to be investigated */
int m_nTrtFailSelTotal ; /** Total number of TRT segments failing input selection */
int m_nTrtSegGoodTotal ; /** Total number of TRT segments that will be investigated */
int m_nTrtLimitTotal ; /** Total number of TRT segments lost in busy events */
int m_nTrtNoSiExtTotal ; /** Total number of TRT segments not extended in Si */
int m_nExtCutTotal ; /** Total number of Si extensions failing cuts */
int m_nBckTrkTrtTotal ; /** Total number of back tracks found without a Si extension */
int m_nTrtExtCallsTotal; /** Total number of times the TRT extension is called */
int m_nTrtExtTotal ; /** Total number of good TRT extensions */
int m_nTrtExtBadTotal ; /** Total number of shorter TRT extensions */
int m_nTrtExtFailTotal ; /** Total number of failed TRT extensions */
int m_nBckTrkSiTotal ; /** Total number of back tracks found with Si extension */
int m_nBckTrkTotal ; /** Total number of back tracks found with or without Si extension */
///////////////////////////////////////////////////////////////////
/** Protected methods */
///////////////////////////////////////////////////////////////////
/** Merge a TRT track segment and a Si track component into one global ID track */
Trk::Track* mergeSegments(const Trk::Track&,const Trk::TrackSegment&);
/** Merge a TRT track extension and a Si track component into one global ID track */
Trk::Track* mergeExtension(const Trk::Track&,std::vector<const Trk::MeasurementBase*>&);
/** Transform a TRT track segment into a track */
Trk::Track* segToTrack(const Trk::TrackSegment&);
/** Do some statistics analysis at the end of each event */
StatusCode Analyze(TrackCollection*);
MsgStream& dumptools(MsgStream& out) const;
MsgStream& dumpevent(MsgStream& out) const;
};
MsgStream& operator << (MsgStream& ,const TRT_SeededTrackFinder&);
std::ostream& operator << (std::ostream&,const TRT_SeededTrackFinder&);
}
#endif // TRT_SeededTrackFinder_H
package TRT_SeededTrackFinder
author Thomas Koffas <Thomas.Koffas@cern.ch>
private
use TrkPseudoMeasurementOnTrack TrkPseudoMeasurementOnTrack-* Tracking/TrkEvent
use TrkEventPrimitives TrkEventPrimitives-* Tracking/TrkEvent
use InDetRIO_OnTrack InDetRIO_OnTrack-* InnerDetector/InDetRecEvent
public
use AtlasPolicy AtlasPolicy-*
use GaudiInterface GaudiInterface-* External
use AthenaBaseComps AthenaBaseComps-* Control
use TrkTrack TrkTrack-* Tracking/TrkEvent
use TrkSegment TrkSegment-* Tracking/TrkEvent
use TrkFitterInterfaces TrkFitterInterfaces-* Tracking/TrkFitter
use InDetRecToolInterfaces InDetRecToolInterfaces-* InnerDetector/InDetRecTools
use TrkExInterfaces TrkExInterfaces-* Tracking/TrkExtrapolation
use InDetBeamSpotService InDetBeamSpotService-* InnerDetector/InDetConditions
library TRT_SeededTrackFinder *.cxx components/*.cxx
apply_pattern component_library
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/**
@mainpage TRT_SeededTrackFinder
@author Thomas.Koffas@cern.ch
@section TRT_SeededTrackFinderIntro Introduction
This is the algorithm for driving the back tracking through the Si part of the ID.
The input are TRT track segments and the output are global ID tracks.
@section TRT_SeededTrackFinderDescription Description
This algorithm performs the following tasks:
1. Loops over the input TRT track segments and for each it calls the Si extension finder.
Only Segments with more than 9 drift circles will be investigated.
2. Each of the Si extensions found is then merged with the TRT segment to
form a global ID track with a pseudomeasurement added at the end of the Si part
if the number of Si clusters is less than 4.
3. If no Si extension is found, the TRT track segment only is transformed into a track.
A pseudo-measurment is added at the beginning.This is optional and the default setting
is false for now. It can be set via the job options.
4. There is the option, set via job options, of refitting all the new tracks with/without Si
extension. The track fitter can be specified via the job options.
5. Finally there is also the option of doing some detailed track statistics at the end of each
event, set again via the job options. Some global statistics, such as the total number of
tracks found, the number of TRT segments, the number of tracks with and without a Si
component, will be output in any case.
@section TRT_SeededTrackFinderTools Used Tools
This algorithm uses the ITRT_SeededTrackFinderTool, ITrackFitter tools.
@section TRT_SeededTrackFinderContents Algorithm Contents
The TRT_SeededTrackFinder contains the following classes/files:
- TRT_SeededTrackFinder.cxx...Main class calling all the necessary tools and producing the ouput track collection.
@section TRT_SeededTrackFinderPackages Used Packages
@htmlinclude used_packages.html
@section TRT_SeededTrackFinderReq Requirements file
@include requirements
*/
#include "GaudiKernel/DeclareFactoryEntries.h"
#include "TRT_SeededTrackFinder/TRT_SeededTrackFinder.h"
using namespace InDet;
DECLARE_ALGORITHM_FACTORY( TRT_SeededTrackFinder )
DECLARE_FACTORY_ENTRIES( TRT_SeededTrackFinder )
{
DECLARE_ALGORITHM( TRT_SeededTrackFinder )
}
#include "GaudiKernel/LoadFactoryEntries.h"
LOAD_FACTORY_ENTRIES( TRT_SeededTrackFinder)
Markdown is supported
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