|
ATLAS Offline Software
|
The InDetAlignHitQualSelTool is to select good quality hits for alignment to build residuals with possible cuts on outlier hits, hits which are too large clusters, hits with large incidence angles, etc.
More...
#include <InDetAlignHitQualSelTool.h>
|
| InDetAlignHitQualSelTool (const std::string &, const std::string &, const IInterface *) |
|
virtual | ~InDetAlignHitQualSelTool () |
|
virtual StatusCode | initialize () |
|
virtual StatusCode | finalize () |
|
const Trk::RIO_OnTrack * | getGoodHit (const Trk::TrackStateOnSurface *tsos) const |
| main method: from a TrackStateOnSurface select a good hit cutting on outlier hits, hits with too many pixels/strips, hits with large incidence angles More...
|
|
bool | isGoodSiHit (const Trk::TrackStateOnSurface *tsos) const |
|
bool | getGoodHole (const Trk::TrackStateOnSurface *tsos) const |
| from a TrackStateOnSurface select a good hole in track cutting on large incidence angles only More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
The InDetAlignHitQualSelTool is to select good quality hits for alignment to build residuals with possible cuts on outlier hits, hits which are too large clusters, hits with large incidence angles, etc.
The InDetAlignHitQualSelTool is to select good quality hits to build residuals for alignment. The following cuts are possible: outlier hits, hits which have too large clusters, hits with large incidence angles, ganged pixels, edge channels.
- Author
- Oleg Brandt http://consult.cern.ch/xwho
Definition at line 34 of file InDetAlignHitQualSelTool.h.
◆ StoreGateSvc_t
◆ InDetAlignHitQualSelTool()
InDetAlignHitQualSelTool::InDetAlignHitQualSelTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetAlignHitQualSelTool()
InDetAlignHitQualSelTool::~InDetAlignHitQualSelTool |
( |
| ) |
|
|
virtual |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ finalize()
StatusCode InDetAlignHitQualSelTool::finalize |
( |
| ) |
|
|
virtual |
◆ getGoodHit()
main method: from a TrackStateOnSurface select a good hit cutting on outlier hits, hits with too many pixels/strips, hits with large incidence angles
Implements IInDetAlignHitQualSelTool.
Definition at line 71 of file InDetAlignHitQualSelTool.cxx.
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 ;
◆ getGoodHole()
from a TrackStateOnSurface select a good hole in track cutting on large incidence angles only
Implements IInDetAlignHitQualSelTool.
Definition at line 233 of file InDetAlignHitQualSelTool.cxx.
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 ;
◆ incidAngle()
calculate track incidence angle in local x-z frame
< local x axis in global frame
< local z axis in global frame
< scalar product
Definition at line 323 of file InDetAlignHitQualSelTool.cxx.
329 double trkDotPhi = trkDir.dot( detElePhi ) ;
330 double trkDotNormal = trkDir.dot( detEleNormal ) ;
331 double trkIncidAngle =
atan( trkDotPhi/trkDotNormal ) ;
333 return trkIncidAngle ;
◆ initialize()
StatusCode InDetAlignHitQualSelTool::initialize |
( |
| ) |
|
|
virtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ interfaceID()
const InterfaceID & IInDetAlignHitQualSelTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ isEdgeChannel()
bool InDetAlignHitQualSelTool::isEdgeChannel |
( |
const std::vector< Identifier > & |
idVec | ) |
const |
|
private |
check, whether the strip/pixel is an edge channel
Definition at line 284 of file InDetAlignHitQualSelTool.cxx.
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 ) {
◆ isGangedPixel()
check, whether cluster contains a ganged pixel
< cut only if m_maxClusterSize set
Definition at line 259 of file InDetAlignHitQualSelTool.cxx.
261 if( cluster ==
nullptr ) {
262 ATH_MSG_WARNING(
"dynamic_cast<const InDet::SiCluster*>( prd ) failed!" ) ;
◆ isGoodAngle()
◆ isGoodClusterSize()
bool InDetAlignHitQualSelTool::isGoodClusterSize |
( |
const std::vector< Identifier > & |
idVec | ) |
const |
|
private |
check, whether cluster size within limits of m_maxClusterSize
< cut only if m_maxClusterSize set
Definition at line 273 of file InDetAlignHitQualSelTool.cxx.
274 int clusterSize = idVec.size() ;
◆ isGoodSiHit()
Implements IInDetAlignHitQualSelTool.
Definition at line 129 of file InDetAlignHitQualSelTool.cxx.
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 ;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_acceptIBLHits
bool InDetAlignHitQualSelTool::m_acceptIBLHits |
|
private |
◆ m_acceptPixelHits
bool InDetAlignHitQualSelTool::m_acceptPixelHits |
|
private |
◆ m_acceptSCTHits
bool InDetAlignHitQualSelTool::m_acceptSCTHits |
|
private |
◆ m_detStore
◆ m_evtStore
◆ m_maxClusterSize
int InDetAlignHitQualSelTool::m_maxClusterSize |
|
private |
◆ m_maxIncidAngle
float InDetAlignHitQualSelTool::m_maxIncidAngle |
|
private |
maximum incidence angle of a track (to which the hit belongs) on the Si-module.
It is caculated in the local xz frame to ensure that the only the angle component perpendicular to the strips is considered. It is defined w/r/t the local z-axis.
Definition at line 81 of file InDetAlignHitQualSelTool.h.
◆ m_pixelid
◆ m_PIXManager
◆ m_rejectEdgeChannels
bool InDetAlignHitQualSelTool::m_rejectEdgeChannels |
|
private |
◆ m_rejectGangedPixels
bool InDetAlignHitQualSelTool::m_rejectGangedPixels |
|
private |
◆ m_rejectOutliers
bool InDetAlignHitQualSelTool::m_rejectOutliers |
|
private |
◆ m_sctID
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
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()
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.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
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.
virtual void setOwner(IDataHandleHolder *o)=0
@ 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.
@ 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
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
int layer_disk(const Identifier &id) const
bool gangedPixel() const
return the flag of this cluster containing a gangedPixel
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
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.