Commit e25a7dd3 authored by Atlas-Software Librarian's avatar Atlas-Software Librarian Committed by Graeme Stewart
Browse files

'CMakeLists.txt' (TRT_TrackExtensionTool_DAF-00-01-00)

parent 40a6d123
################################################################################
# Package: TRT_TrackExtensionTool_DAF
################################################################################
# Declare the package name:
atlas_subdir( TRT_TrackExtensionTool_DAF )
# Declare the package's dependencies:
atlas_depends_on_subdirs( PUBLIC
Control/AthenaBaseComps
GaudiKernel
InnerDetector/InDetRecEvent/InDetPrepRawData
InnerDetector/InDetRecTools/InDetRecToolInterfaces
Tracking/TrkDetDescr/TrkGeometry
Tracking/TrkEvent/TrkParameters
PRIVATE
Control/StoreGate
InnerDetector/InDetDetDescr/InDetIdentifier
InnerDetector/InDetDetDescr/InDetReadoutGeometry
InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool
MagneticField/MagFieldInterfaces
Tracking/TrkEvent/TrkMeasurementBase
Tracking/TrkEvent/TrkTrack
Tracking/TrkExtrapolation/TrkExInterfaces
Tracking/TrkTools/TrkToolInterfaces )
# Component(s) in the package:
atlas_add_component( TRT_TrackExtensionTool_DAF
src/*.cxx
src/components/*.cxx
LINK_LIBRARIES AthenaBaseComps GaudiKernel InDetPrepRawData InDetRecToolInterfaces TrkGeometry TrkParameters StoreGateLib SGtests InDetIdentifier InDetReadoutGeometry MagFieldInterfaces TrkMeasurementBase TrkTrack TrkExInterfaces TrkToolInterfaces )
# Install files from the package:
atlas_install_headers( TRT_TrackExtensionTool_DAF )
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/////////////////////////////////////////////////////////////////////////////////
// Header file for class TRT_TrackExtensionTool_DAF
/////////////////////////////////////////////////////////////////////////////////
// (c) ATLAS Detector software
/////////////////////////////////////////////////////////////////////////////////
// Concret implementation for base class ITRT_TrackExtensionTool
/////////////////////////////////////////////////////////////////////////////////
// Sebastian Fleischmann
/////////////////////////////////////////////////////////////////////////////////
#ifndef TRT_TRACKEXTENSIONTOOL_DAF_H
#define TRT_TRACKEXTENSIONTOOL_DAF_H
//#include <list>
#include <vector>
#include <string>
#include "GaudiKernel/ToolHandle.h"
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ServiceHandle.h"
//#include "MagFieldInterfaces/IMagFieldSvc.h"
#include "TrkParameters/TrackParameters.h" // typedef
#include "InDetPrepRawData/TRT_DriftCircleContainer.h" // typedef
#include "InDetRecToolInterfaces/ITRT_TrackExtensionTool.h"
#include "TrkGeometry/MagneticFieldProperties.h"
class MsgStream;
class TRT_ID;
namespace MagField {
class IMagFieldSvc;
}
namespace Trk {
class Surface;
//class MagneticFieldProperties;
class IPropagator;
}
namespace InDet {
class ITRT_DetElementsRoadMaker;
class ICompetingTRT_DriftCirclesOnTrackCreator;
/**
@class TRT_TrackExtensionTool_DAF
The TRT_TrackExtensionTool_DAF produces an extension with Trk::CompetingRIOsOnTrack of
silicon tracks into the TRT.
@author Sebastian.Fleischmann@cern.ch
*/
class TRT_TrackExtensionTool_DAF :
virtual public ITRT_TrackExtensionTool, public AthAlgTool {
///////////////////////////////////////////////////////////////////
// Public methods:
///////////////////////////////////////////////////////////////////
public:
///////////////////////////////////////////////////////////////////
// Standard tool methods
///////////////////////////////////////////////////////////////////
TRT_TrackExtensionTool_DAF(const std::string&,const std::string&,const IInterface*);
virtual ~TRT_TrackExtensionTool_DAF();
virtual StatusCode initialize();
virtual StatusCode finalize ();
///////////////////////////////////////////////////////////////////
// Main methods for track extension to TRT
///////////////////////////////////////////////////////////////////
virtual std::vector<const Trk::MeasurementBase*>& extendTrack(const Trk::Track&);
virtual std::vector<const Trk::MeasurementBase*>& extendTrack(const Trk::TrackParameters&);
virtual Trk::Track* newTrack(const Trk::Track&);
virtual void newEvent();
///////////////////////////////////////////////////////////////////
// TRT seed extension to TRT
///////////////////////////////////////////////////////////////////
virtual Trk::TrackSegment* findSegment(const Trk::TrackParameters&);
///////////////////////////////////////////////////////////////////
// Print internal tool parameters and status
///////////////////////////////////////////////////////////////////
MsgStream& dump(MsgStream& out) const;
std::ostream& dump(std::ostream& out) const;
protected:
///////////////////////////////////////////////////////////////////
// Protected Data
///////////////////////////////////////////////////////////////////
const TRT_DriftCircleContainer* m_trtcontainer; //!< container of TRT RIOs
std::string mjo_trtcontainername; //!< jobOption: name of container with TRT RIOs
double mjo_roadwidth; //!< jobOption: Max width of the road
bool mjo_simpleExtension; //!< jobOption: do the simple TRT extension by putting all RIOs of one detector element within the road into one Trk::CompetingRIOsOnTrack
double mjo_maxGroupDistance; //!< jobOption: Max distance of the RIO groups in the grouped barrel extension (distance in the x-y-plane)
double mjo_minGroupDistance; //!< jobOption: Min distance of the RIO groups in the grouped barrel extension (distance in the x-y-plane)
// static const int maxTrackGlobalPositions = 200; //!< array size for global track positions
// static const int maxDetElements = 200; //!< array size for the detElements road
std::vector <const InDetDD::TRT_BaseElement*> m_detectorElements; //!< vector to store the detElements
std::vector <const Trk::TrackParameters*> m_propagatedTrackParameters; //!< vector to store the propagated track parameters (propagated to the related entry of m_detectorElements)
const Trk::TrackParameters* m_siliconTrkParams; //!< track parameters at the outermost Silicon layer
mutable std::vector<const Trk::MeasurementBase*> m_measurement; //!< vector of MeasurementBase for the output
///////////////////////////////////////////
// the different tools and their jobOptions
///////////////////////////////////////////
ToolHandle< InDet::ICompetingTRT_DriftCirclesOnTrackCreator > m_compROTcreator; //!< the instance of the CompetingTRT_DriftCirclesOnTrackCreator tool
double mjo_annealingFactor; //!< jobOption: The annealing factor used for Trk::CompetingRIOsOnTrack creation
ToolHandle< InDet::ITRT_DetElementsRoadMaker > m_roadtool; //!< instance of the TRT road maker tool
ToolHandle< Trk::IPropagator > m_propagator; //!< the Propagator tool
ServiceHandle<MagField::IMagFieldSvc> m_fieldServiceHandle;
std::string m_fieldmode; //!< jobOption: Magnetic field mode
Trk::MagneticFieldProperties m_fieldprop; //!< Magnetic field properties
const TRT_ID* m_trtID; //!< the TRT ID helper
///////////////////////////////////////////////////////////////////
// Methods
///////////////////////////////////////////////////////////////////
/** find an element-wise extension (ie. the RIOs in a CompROT belong to one detElement) */
StatusCode elementWiseExtension(int, int) const;
/** find a barrel extension with RIOs grouped along the globalPositions of the track */
StatusCode groupedBarrelExtension(int, int) const;
// MsgStream& dumpConditions(MsgStream & out) const;
// MsgStream& dumpEvent (MsgStream & out) const;
};
//MsgStream& operator << (MsgStream& ,const TRT_TrackExtensionTool_DAF&);
//std::ostream& operator << (std::ostream&,const TRT_TrackExtensionTool_DAF&);
} // end of name space
#endif // TRT_TRACKEXTENSIONTOOL_DAF_H
package TRT_TrackExtensionTool_DAF
author Sebastian Fleischmann <Sebastian.Fleischmann@cern.ch>
public
use AtlasPolicy AtlasPolicy-*
use GaudiInterface GaudiInterface-* External
use AthenaBaseComps AthenaBaseComps-* Control
use TrkParameters TrkParameters-* Tracking/TrkEvent
use InDetPrepRawData InDetPrepRawData-* InnerDetector/InDetRecEvent
use InDetRecToolInterfaces InDetRecToolInterfaces-* InnerDetector/InDetRecTools
use TrkGeometry TrkGeometry-* Tracking/TrkDetDescr
private
use StoreGate StoreGate-* Control
#use AtlasCLHEP AtlasCLHEP-* External
use InDetReadoutGeometry InDetReadoutGeometry-* InnerDetector/InDetDetDescr
#use TrkRIO_OnTrack TrkRIO_OnTrack-* Tracking/TrkEvent
#use TrkEventPrimitives TrkEventPrimitives-* Tracking/TrkEvent
use TrkMeasurementBase TrkMeasurementBase-* Tracking/TrkEvent
use TrkTrack TrkTrack-* Tracking/TrkEvent
#use TrkSurfaces TrkSurfaces-* Tracking/TrkDetDescr
use TrkExInterfaces TrkExInterfaces-* Tracking/TrkExtrapolation
use TrkToolInterfaces TrkToolInterfaces-* Tracking/TrkTools
use MagFieldInterfaces * MagneticField
#use TrkPrepRawData TrkPrepRawData-* Tracking/TrkEvent
use InDetCompetingRIOsOnTrackTool InDetCompetingRIOsOnTrackTool-* InnerDetector/InDetRecTools
use InDetIdentifier InDetIdentifier-* InnerDetector/InDetDetDescr
public
library TRT_TrackExtensionTool_DAF *.cxx components/*.cxx
apply_pattern component_library
#apply_pattern declare_joboptions files=" *.py"
private
macro DOXYGEN_IMAGE_PATH "../doc/images"
#macro cppdebugflags '$(cppdebugflags_s)'
#macro_remove componentshr_linkopts "-Wl,-s"
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/**
@mainpage The TRT_TrackExtensionTool_DAF package
Tool to extend Silicon tracks into the TRT based on the Deterministic Annealing Filter.
@author Sebastian.Fleischmann@cern.ch
@section introductionTRT_TrackExtensionTool_DAF Introduction
This package contains a tool to produce a vector of InDet::CompetingTRT_DriftCirclesOnTrack
which can be used by the InDetExtensionProcessor to extend silicon tracks into the TRT.
InDet::TRT_DriftCircles lying on a road around the track prediction are choosen and grouped
into InDet::CompetingTRT_DriftCirclesOnTrack containing measurements which are not compatible
with each other. The Trk::DeterministicAnnealingFilter (DAF) will then decide in an iterative annealing procedure which InDet::TRT_DriftCircleOnTrack s are assigned to the extended track.
As the DAF TRT_TrackExtensionTool just produces a vector of Trk::MeasurementBase (resp.
InDet::CompetingTRT_DriftCirclesOnTrack) without actually deciding which measurements belong
to the track (i.e. just doing a course assignment) this tool can only be used in combination
with the Trk::DeterministicAnnealingFilter.
This tool has two operation modes. The first (simple) one just groups all measurements (TRT_DriftCircles)
on one TRT detector element into the same CompetingTRT_DriftCirclesOnTrack. The more sophisticated mode
groups measurements on "pseudo-detector surfaces" which are perpendicular to the track prediction for the
Barrel pert of the track. In the TRT endcaps the measurements are always grouped by the detector elements
because polar coordinates in the wheel plane are used. Both modes are almost identical if the tracks are
nearly perpendicular to the detector element planes as it is the case for high momentum tracks.
The following sketch shows a track prediction and how TRT measurements are grouped in the more
sophisticated mode.
@image html TRT-extension-grouped.png
Figure 2 shows the same track prediction and measurements in the case of the simple mode. The first
measurements are grouped in a sensible way, whereas the grouping fails for the last measurements, because
the track is not perpendicular to the detector elements anymore.
@image html TRT-extension-detElement-wise.png
@section TRT_TrackExtensionTool_DAFOverview Class Overview
The TRT_TrackExtensionTool_DAF package contains the following class:
- InDet::TRT_TrackExtensionTool_DAF : Tool to collect the compatible measurements
in InDet::CompetingTRT_DriftCirclesOnTrack.
@section howToUseTRT_TrackExtensionTool_DAF How to use the TRT_TrackExtensionTool_DAF
The Trk::TRT_TrackExtensionTool_DAF can be configured by the Python setup class <tt>ConfiguredTRT_TrackExtensionTool_DAF</tt> which is defined in <tt><a href="ConfiguredTRT__TrackExtensionTool__DAF_8py-source.html">ConfiguredTRT_TrackExtensionTool_DAF.py</a></tt>.It is important to configure the InDetExtensionProcessor to use the TrkDeterministicAnnealingFilter as TrackFitter. This can be done by the Python setup class <tt>ConfiguredInDetExtensionProcessor</tt>.
@subsection TRT_TrackExtensionTool_DAFJobOptions jobOptions of the InDet::TRT_TrackExtensionTool_DAF
<DL>
<DT>MagneticTool
<DD>The magnetic field tool to get the field properties used by the propagator. Default: <tt>Trk::MagneticFieldTool_xk</tt>
<DT>MagneticFieldMode
<DD>fieldmode to be used for the field properties. Default: <tt>MapSolenoid</tt>
<DT>PropagatorTool
<DD>tool to propagate track parameters. Default: <tt>Trk::RungeKuttaPropagator</tt>
<DT>CompetingDriftCircleTool
<DD>tool to create the InDet::CompetingTRT_DriftCirclesOnTrack. Default: <tt>InDet::CompetingTRT_DriftCirclesOnTrackTool/CompetingTRT_DriftCirclesOnTrackTool</tt>
<DT>RoadTool
<DD>tool to find a road of detector elements in the TRT. Default: <tt>InDet::TRT_DetElementsRoadMaker_xk</tt>
<DT>RoadWidth
<DD>width of the road of InDet::TRT_DriftCircle s (independent of the RoadTool). Default: <tt>10.</tt>
<DT>TRT_DriftCircleContainer
<DD>StoreGate container name of the InDet::TRT_DriftCircle. Default: <tt>TRT_DriftCircles</tt>
<DT>InitialAnnealingFactor
<DD>annealing factor used to create the InDet::CompetingTRT_DriftCirclesOnTrack. Default: <tt>81.</tt>
<DT>SimpleElementWiseExtension
<DD>do a simple detector element-wise grouping of the TRT_DriftCircles or use a more
sophisticated way in the Barrel part? See above for a detailed description. Default: <tt>false</tt>
<DT>MaxGroupDistance
<DD>maximum distance of TRT_DriftCircle groups when using the sophisticated grouping method. Default: <tt>5.</tt>
@section ExtrasTRT_TrackExtensionTool_DAF Extra Pages
- @ref UsedTRT_TrackExtensionTool_DAF
- @ref requirementsTRT_TrackExtensionTool_DAF
*/
/**
@page UsedTRT_TrackExtensionTool_DAF Used Packages
@htmlinclude used_packages.html
*/
/**
@page requirementsTRT_TrackExtensionTool_DAF Requirements
@include requirements
*/
#include "GaudiKernel/DeclareFactoryEntries.h"
#include "TRT_TrackExtensionTool_DAF/TRT_TrackExtensionTool_DAF.h"
//using namespace InDet;
DECLARE_NAMESPACE_TOOL_FACTORY( InDet, TRT_TrackExtensionTool_DAF )
DECLARE_FACTORY_ENTRIES(TRT_TrackExtensionTool_DAF)
{ // in this package name these methods are registered
DECLARE_NAMESPACE_TOOL(InDet, TRT_TrackExtensionTool_DAF)
}
#include "GaudiKernel/LoadFactoryEntries.h"
#include "GaudiKernel/DeclareFactoryEntries.h"
LOAD_FACTORY_ENTRIES(TRT_TrackExtensionTool_DAF)
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