|
ATLAS Offline Software
|
Go to the documentation of this file.
11 #include "Identifier/Identifier.h"
22 ,
const std::string&
n
26 , m_rejectOutliers( true )
27 , m_maxClusterSize( 5 )
28 , m_rejectEdgeChannels( true )
29 , m_rejectGangedPixels( false )
30 , m_maxIncidAngle( 0.8 )
31 , m_acceptIBLHits( true )
32 , m_acceptPixelHits( true )
33 , m_acceptSCTHits( true )
38 declareInterface<IInDetAlignHitQualSelTool>(
this) ;
39 declareProperty(
"RejectOutliers", m_rejectOutliers ) ;
40 declareProperty(
"MaxClusterSize", m_maxClusterSize ) ;
41 declareProperty(
"RejectEdgeChannels", m_rejectEdgeChannels ) ;
42 declareProperty(
"RejectGangedPixels", m_rejectGangedPixels ) ;
43 declareProperty(
"MaxIncidAngle", m_maxIncidAngle ) ;
44 declareProperty(
"AcceptIBLHits", m_acceptIBLHits ) ;
45 declareProperty(
"AcceptPixelHits", m_acceptPixelHits ) ;
46 declareProperty(
"AcceptSCTHits", m_acceptSCTHits ) ;
55 if(
sc.isFailure() )
return sc ;
62 return StatusCode::SUCCESS ;
72 ATH_MSG_DEBUG(
"** getGoodHit ** Dealing with a new tsos ** START ** " ) ;
74 if( tsos ==
nullptr ) {
79 ATH_MSG_DEBUG(
"not a hit, cast to MeasurementBase will fail, so reject" ) ;
87 if( measBase ==
nullptr) {
88 ATH_MSG_DEBUG(
"tsos->measurementOnTrack() returned 0 pointer" ) ;
93 if( hit ==
nullptr ) {
94 ATH_MSG_DEBUG(
"dynamic_cast <const Trk::RIO_OnTrack*>( measBase ) returned 0 pointer" ) ;
99 if( prd ==
nullptr ) {
106 const vector<Identifier> &idVec = prd->
rdoList() ;
115 if( trkPar ==
nullptr ) {
121 if( detEle ==
nullptr ) {
122 ATH_MSG_WARNING(
"hit cast to SiDetectorElement returned 0 pointer" ) ;
125 if( !
isGoodAngle( trkPar, detEle ) )
return nullptr ;
130 bool isSiliconHit =
false;
131 bool isPixelHit =
false;
132 bool isIBLHit =
false;
134 if( tsos ==
nullptr ) {
139 ATH_MSG_DEBUG(
"not a hit, cast to MeasurementBase will fail --> keep it anyway" ) ;
148 if( measBase ==
nullptr) {
149 ATH_MSG_DEBUG(
"tsos->measurementOnTrack() returned 0 pointer" ) ;
154 if( hit ==
nullptr ) {
155 ATH_MSG_DEBUG(
"dynamic_cast <const Trk::RIO_OnTrack*>( measBase ) returned 0 pointer" ) ;
160 if( prd ==
nullptr ) {
180 ATH_MSG_DEBUG(
"This is not a silicon hit. Keep it as good" ) ;
186 ATH_MSG_INFO(
"this is an IBL hit --> user wants to drop it" ) ;
192 ATH_MSG_INFO(
"this is a pixel hit --> user wants to drop it" ) ;
199 ATH_MSG_INFO(
"this is a SCT hit --> user wants to drop it" ) ;
205 const vector<Identifier> &idVec = prd->
rdoList() ;
215 if( trkPar ==
nullptr ) {
222 if( detEle ==
nullptr ) {
223 ATH_MSG_WARNING(
"hit cast to SiDetectorElement returned 0 pointer" ) ;
226 if( !
isGoodAngle( trkPar, detEle ) )
return false ;
234 if( tsos ==
nullptr ) {
244 if( trkPar ==
nullptr ) {
250 if( detEle ==
nullptr ) {
251 ATH_MSG_WARNING(
"hole cast to SiDetectorElement returned 0 pointer" ) ;
254 if( !
isGoodAngle( trkPar, detEle ) )
return false ;
261 if( cluster ==
nullptr ) {
262 ATH_MSG_WARNING(
"dynamic_cast<const InDet::SiCluster*>( prd ) failed!" ) ;
274 int clusterSize = idVec.size() ;
285 for(
unsigned int i=0, i_max=idVec.size() ;
i!=i_max ; ++
i ) {
288 if( stripId == 0 || stripId == 767 ) {
289 ATH_MSG_DEBUG(
" SCT strip " <<
i <<
" with id " << stripId <<
" is an edge channel " ) ;
292 if( stripId < 0 || stripId > 767 ) {
299 if( pixelIdPhi == 0 || pixelIdPhi == 327 || pixelIdEta == 0 || pixelIdEta == 143 ) {
300 ATH_MSG_DEBUG(
" pixel hit " <<
i <<
" with idPhi " << pixelIdPhi <<
" and idEta " << pixelIdEta <<
" is an edge channel " ) ;
303 if( pixelIdPhi < 0 || pixelIdPhi > 327 || pixelIdEta < 0 || pixelIdEta > 143 ) {
314 const double trkIncidAngle =
incidAngle( trkPar, detEle ) ;
329 double trkDotPhi = trkDir.dot( detElePhi ) ;
330 double trkDotNormal = trkDir.dot( detEleNormal ) ;
331 double trkIncidAngle =
atan( trkDotPhi/trkDotNormal ) ;
333 return trkIncidAngle ;
def retrieve(aClass, aKey=None)
bool is_pixel(Identifier id) const
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
int phi_index(const Identifier &id) const
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
bool is_sct(Identifier id) const
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
const MeasurementBase * measurementOnTrack() const
returns MeasurementBase const overload
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
bool type(const TrackStateOnSurfaceType type) const
Use this method to find out if the TSoS is of a certain type: i.e.
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
@ Hole
A hole on the track - this is defined in the following way.
virtual bool identifierBelongs(const Identifier &id) const override
Check identifier is for this detector.
::StatusCode StatusCode
StatusCode definition for legacy code.
int eta_index(const Identifier &id) const
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
int layer_disk(const Identifier &id) const
bool gangedPixel() const
return the flag of this cluster containing a gangedPixel
represents the track state (measurement, material, fit parameters and quality) at a surface.
Eigen::Matrix< double, 3, 1 > Vector3D
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
const Amg::Vector3D & momentum() const
Access method for the momentum.
#define ATH_MSG_WARNING(x)
int strip(const Identifier &id) const
const Amg::Vector3D & phiAxis() const
Identifier identify() const
return the identifier -extends MeasurementBase
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.