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

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

parent e25a7dd3
################################################################################
# Package: InDetTrackHoleSearch
################################################################################
# Declare the package name:
atlas_subdir( InDetTrackHoleSearch )
# Declare the package's dependencies:
atlas_depends_on_subdirs( PUBLIC
Control/AthenaBaseComps
GaudiKernel
Tracking/TrkEvent/TrkEventPrimitives
Tracking/TrkEvent/TrkParameters
Tracking/TrkTools/TrkToolInterfaces
PRIVATE
DetectorDescription/AtlasDetDescr
DetectorDescription/Identifier
InnerDetector/InDetConditions/InDetConditionsSummaryService
InnerDetector/InDetDetDescr/InDetReadoutGeometry
InnerDetector/InDetRecTools/InDetRecToolInterfaces
Tracking/TrkDetDescr/TrkDetDescrUtils
Tracking/TrkDetDescr/TrkGeometry
Tracking/TrkDetDescr/TrkVolumes
Tracking/TrkEvent/TrkEventUtils
Tracking/TrkEvent/TrkMeasurementBase
Tracking/TrkEvent/TrkTrack
Tracking/TrkEvent/TrkTrackSummary
Tracking/TrkExtrapolation/TrkExInterfaces )
# Component(s) in the package:
atlas_add_component( InDetTrackHoleSearch
src/*.cxx
src/components/*.cxx
LINK_LIBRARIES AthenaBaseComps GaudiKernel TrkEventPrimitives TrkParameters TrkToolInterfaces AtlasDetDescr Identifier InDetReadoutGeometry InDetRecToolInterfaces TrkDetDescrUtils TrkGeometry TrkVolumes TrkEventUtils TrkMeasurementBase TrkTrack TrkTrackSummary TrkExInterfaces )
# Install files from the package:
atlas_install_headers( InDetTrackHoleSearch )
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
///////////////////////////////////////////////////////////////////
// InDetTrackHoleSearchTool.h, (c) ATLAS Detector software
///////////////////////////////////////////////////////////////////
#ifndef INDETINDETTRACKHOLESEARCHTOOL_H
#define INDETINDETTRACKHOLESEARCHTOOL_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "GaudiKernel/ServiceHandle.h"
#include "TrkToolInterfaces/ITrackHoleSearchTool.h"
#include "TrkEventPrimitives/ParticleHypothesis.h"
#include "TrkParameters/TrackParameters.h"
#include <vector>
#include <map>
class AtlasDetectorID;
class Identifier;
class AtlasID;
class IInDetConditionsSvc;
namespace InDet {class IInDetTestPixelLayerTool; }
namespace Trk { class RIO_OnTrack; class TrackStateOnSurface; class Track;}
namespace Trk { class IExtrapolator;}
namespace InDet
{
/** @class InDetTrackHoleSearchTool
This is for the Doxygen-Documentation.
Please delete these lines and fill in information about
the Algorithm!
Please precede every member function declaration with a
short Doxygen comment stating the purpose of this function.
@author Markus Elsing
*/
class InDetTrackHoleSearchTool : virtual public Trk::ITrackHoleSearchTool, public AthAlgTool
{
public:
InDetTrackHoleSearchTool(const std::string&,const std::string&,const IInterface*);
/** default destructor */
virtual ~InDetTrackHoleSearchTool ();
/** standard Athena-Algorithm method */
virtual StatusCode initialize();
/** standard Athena-Algorithm method */
virtual StatusCode finalize ();
/** Input : track, partHyp
Output: Changes in information
This method first calls the method getMapOfHits to isolate the relevant hits on the track before calling the method
performHoleSearchStepWise which then performs the actual hole search.
Additionally the Layers of the Pixel Detector which contribute measurements to the track are counted
If problems occur, the information counters for Holes and PixelLayers are reset to -1 flagging them as not set.
*/
virtual void countHoles(const Trk::Track& track,
std::vector<int>& information ,
const Trk::ParticleHypothesis partHyp = Trk::pion) const ;
/** Input : track, parthyp
Return: A DataVector containing pointers to TrackStateOnSurfaces which each represent an identified hole on the track.
The parthyp argument is relevant for the extrapolation steps in the hole search.
Attention: This is a factory, ownership of the return vector is passed to the calling method.
*/
virtual const DataVector<const Trk::TrackStateOnSurface>* getHolesOnTrack(const Trk::Track& track,
const Trk::ParticleHypothesis partHyp = Trk::pion) const ;
/** Input : track, parthyp
Return: A pointer to a new Trk::Track which containes the information of the input track plus the tsos of the identified holes
The parthyp argument is relevant for the extrapolation steps in the hole search.
Attention: This is a factory, ownership of the return track is passed to the calling method.
*/
virtual const Trk::Track* getTrackWithHoles(const Trk::Track& track,
const Trk::ParticleHypothesis partHyp = Trk::pion) const ;
/** Input : track, parthyp
Return: A pointer to a new Trk::Track which containes the information of the input track plus the tsos of the identified holes or outliers
The parthyp argument is relevant for the extrapolation steps in the hole search.
Attention: This is a factory, ownership of the return track is passed to the calling method.
*/
virtual const Trk::Track* getTrackWithHolesAndOutliers(const Trk::Track& track,
const Trk::ParticleHypothesis partHyp = Trk::pion) const;
private:
/** Input : track, parthyp
Return: Changes in information and/or listOfHoles
The interfacing method to the step wise hole search. Information and listOfHoles have to be given as pointers, zeros can be given in order to suppress the
connected functionality (counting holes / producing hole TSOSs). This Method is not a member of the ITrackHoleSearchTool interface.
*/
void searchForHoles(const Trk::Track& track,
std::vector<int>* information ,
std::vector<const Trk::TrackStateOnSurface*>* listOfHoles,
const Trk::ParticleHypothesis partHyp = Trk::pion) const;
/**ID pixel helper*/
const AtlasDetectorID* m_atlasId;
/** Pointer to Extrapolator AlgTool*/
ToolHandle< Trk::IExtrapolator > m_extrapolator;
/** Handles to IConditionsSummaryServices for Pixels and SCT*/
ServiceHandle <IInDetConditionsSvc> m_pixelCondSummarySvc, m_sctCondSummarySvc;
ToolHandle< IInDetTestPixelLayerTool > m_pixelLayerTool;
/** Configure outwards hole search */
bool m_extendedListOfHoles,m_cosmic;
/** Control usage of pixel, SCT and TRT info */
bool m_usepix, m_usesct;
/** Min number of hits **/
int m_minSiHits;
/* searching for dead modules after the last measurement (needed for robustness of SW)*/
bool m_countDeadModulesAfterLastHit;
/** eta and phi tolerances **/
float m_etatol, m_phitol;
/** number of warnings printed when no track parameters available **/
mutable int m_warning;
/** Input: track
Output: changes in mapOfHits (filling it) and hasTRT
Return value: True if filling was successful, false otherwise
This method distills the relevant hits out of a given track
*/
bool getMapOfHits(const Trk::Track& track ,
const Trk::ParticleHypothesis partHyp,
std::map<const Identifier, const Trk::TrackStateOnSurface*>& mapOfHits,
std::map<const Identifier, std::pair<const Trk::TrackParameters*,const bool> >& mapOfPredictions) const;
/** This method searches for holes in a track. It receives a list of detector responses sorted along the
track. The TSOS in the list of hits should contain TrackParameters or at least MeasurementOnTrack.
The method extrapolates along the tracks, using the hit information to update the extrapolation procedure.
Surface without detector responses, which are crossed by the extrapolation are counted as holes. The
number of holes found is returned through the information array.
Input: mapOfHits,mapOfPredicitons
Output: Changes in information,listOfHoles
*/
void performHoleSearchStepWise(std::map<const Identifier, const Trk::TrackStateOnSurface*>& mapOfHits,
std::map<const Identifier, std::pair<const Trk::TrackParameters*,const bool> >& mapOfPredictions,
std::vector<int>* information,
std::vector<const Trk::TrackStateOnSurface*>* listOfHoles) const;
/** This method creates a TSOS to represent a detected hole. I creates a new TP from the input and returns
a (pointer to a) new TSOS containing the TP and the typeset 'Hole'
*/
const Trk::TrackStateOnSurface* createHoleTSOS(const Trk::TrackParameters* trackPar) const;
/** This method returns true, if the detector element the input parameters correspond to is sensitive detector material,
otherwise it returns false.
*/
bool isSensitive(const Trk::TrackParameters* parameters, bool &isgood) const ;
/** This Method creates a new Track from the TSOS of the input track combined with the TSOS from listOfHoles
*/
const Trk::Track* addHolesToTrack(const Trk::Track& oldTrack,
std::vector<const Trk::TrackStateOnSurface*>* listOfHoles) const;
};
} // end of namespace
#endif
package InDetTrackHoleSearch
author Martin Siebel <Martin.Siebel@CERN.ch>
private
use AtlasDetDescr AtlasDetDescr-* DetectorDescription
use Identifier Identifier-* DetectorDescription
use InDetReadoutGeometry InDetReadoutGeometry-* InnerDetector/InDetDetDescr
use InDetConditionsSummaryService InDetConditionsSummaryService* InnerDetector/InDetConditions
use InDetRecToolInterfaces InDetRecToolInterfaces* InnerDetector/InDetRecTools
use TrkEventUtils TrkEventUtils-* Tracking/TrkEvent
use TrkMeasurementBase TrkMeasurementBase-* Tracking/TrkEvent
use TrkTrack TrkTrack-* Tracking/TrkEvent
use TrkTrackSummary TrkTrackSummary-* Tracking/TrkEvent
use TrkGeometry TrkGeometry-* Tracking/TrkDetDescr
use TrkDetDescrUtils TrkDetDescrUtils-* Tracking/TrkDetDescr
use TrkExInterfaces TrkExInterfaces-* Tracking/TrkExtrapolation
use TrkVolumes TrkVolumes-* Tracking/TrkDetDescr
public
use AtlasPolicy AtlasPolicy-*
use GaudiInterface GaudiInterface-* External
use AthenaBaseComps AthenaBaseComps-* Control
use TrkToolInterfaces TrkToolInterfaces-* Tracking/TrkTools
use TrkEventPrimitives TrkEventPrimitives-* Tracking/TrkEvent
use TrkParameters TrkParameters-* Tracking/TrkEvent
apply_pattern component_library
library InDetTrackHoleSearch *.cxx components/*.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 InDetTrackHoleSearch Package
>> Please enter an overview of the created package here: What does it contain?
@author Martin Siebel <Martin.Siebel@CERN.ch>
@section InDetTrackHoleSearchIntro Introduction
This package contains the InDetTrackHoleSearchTool which is derived from the Trk::ITrackHoleSearch interface. The basic functionality has been part of the InDetTrackSummaryHelperTool, but with increasing demands on functionality and complexity, has been sourced out into an AlgTool in its own right, the InDetTrackHoleSearchTool.
The method searchForHoles() basically takes a Trk:Track and a vector of integers. Elements of the vector represent counters for different Trk::TrackSummary information. The method followsthe Trk::Track through the silicon part of the Inner Detector and determines the number of sensitive detector elements crossed by the track without inducing a signal in these elements. Every such occurence is called a hole. Note, that by definition holes are only counted between measurements, i.e. holes at smaller radii than the innermost measurement are not counted as such. However, holes between the outermost SCT hit are considered, if the track has hits in the TRT.
The hole search follows the track by extrapolation from the surface of a given hit to the surface of the next given hit. The startpoint for every extrapolation step is the Trk::TrackParameter on this surface if present, otherwise the less precise extrapolation end-point is used. Sensitive surfaces crossed by the extrapolation are counted as holes. Special consideration is made for SCT hits. There is no extrapolation step from a SCT-module to its backside. Instead, it is directly checked, if the next hit of the track is located
on the backside of the SCT-module.
In order to work smoothly, the Trk::TrackStateOnSurface objects of a track which correspond to a silicon detector are sorted along the momentum of the Trk::Track. Then all these hits and all TRT hits which are either followed by a silicon hit or follow on a silicon hit are considered for the hole search.
>> Please enter a brief description of the package here.
@section InDetTrackHoleSearchReq Requirements
@include requirements
*/
#include "GaudiKernel/DeclareFactoryEntries.h"
#include "InDetTrackHoleSearch/InDetTrackHoleSearchTool.h"
DECLARE_NAMESPACE_TOOL_FACTORY( InDet, InDetTrackHoleSearchTool )
DECLARE_FACTORY_ENTRIES( InDetTrackHoleSearch )
{
DECLARE_NAMESPACE_TOOL( InDet, InDetTrackHoleSearchTool )
}
#include "GaudiKernel/LoadFactoryEntries.h"
LOAD_FACTORY_ENTRIES( InDetTrackHoleSearch )
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