|
ATLAS Offline Software
|
#include <InDetConversionTrackSelectorTool.h>
|
virtual StatusCode | initialize () override |
|
| InDetConversionTrackSelectorTool (const std::string &t, const std::string &n, const IInterface *p) |
|
virtual | ~InDetConversionTrackSelectorTool ()=default |
|
virtual bool | decision (const Trk::Track &track, const Trk::Vertex *vertex) const override final |
| Select a Trk::Track
More...
|
|
virtual bool | decision (const Trk::TrackParticleBase &track, const Trk::Vertex *vertex) const override final |
| Select a Trk::TrackParticleBase
More...
|
|
virtual bool | decision (const xAOD::TrackParticle &, const xAOD::Vertex *) const override final |
|
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 |
|
|
ToolHandle< Trk::IExtrapolator > | m_extrapolator |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey |
|
SG::ReadHandleKey< xAOD::EventInfo > | m_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"} |
|
Gaudi::Property< bool > | m_useEventInfoBs {this,"UseEventInfoBS",false} |
|
DoubleProperty | m_maxSiD0 {this, "maxSiD0", 35., "Maximal d0 at (0,0,0) for tracks with Si hits"} |
| Properties for track selection:all cuts are ANDed. More...
|
|
DoubleProperty | m_maxTrtD0 {this, "maxTrtD0", 100., "Maximal d0 at (0,0,0) for standalone TRT tracks"} |
|
DoubleProperty | m_maxSiZ0 {this, "maxSiZ0", 200., "Maximal z0 at (0,0,0)"} |
|
DoubleProperty | m_maxTrtZ0 {this, "maxTrtZ0", 1200., "Maximal z0 at (0,0,0) for standalone TRT tracks"} |
|
DoubleProperty | m_minPt {this, "minPt", 500., "Minimum Pt of tracks"} |
|
DoubleProperty | m_trRatio1 {this, "RatioCut1", 0.5, "TR ratio for tracks with 15 or less TRT hits"} |
|
DoubleProperty | m_trRatio2 {this, "RatioCut2", 0.1, "TR ratio for tracks with 16 to 25 TRT hits"} |
|
DoubleProperty | m_trRatio3 {this, "RatioCut3", 0.05, "TR ratio for tracks with 26 or more TRT hits"} |
|
DoubleProperty | m_trRatioTRT {this, "RatioTRT", 0.1, "TR ratio for all TRT only tracks"} |
|
DoubleArrayProperty | m_TRTTrksEtaBins |
|
DoubleArrayProperty | m_TRTTrksBinnedRatioTRT |
|
DoubleProperty | m_trRatioV0 {this, "RatioV0", 1., "TR ratio for pion selection during V0 reconstruction"} |
|
DoubleProperty | m_sD0_Si {this, "significanceD0_Si", 2., "Cut on D0 significance of Si tracks"} |
|
DoubleProperty | m_sD0_Trt {this, "significanceD0_Trt", 0.5, "Cut on D0 significance of TRT tracks"} |
|
DoubleProperty | m_sZ0_Trt {this, "significanceZ0_Trt", 3., "Cut on Z0 significance of TRT tracks"} |
|
BooleanProperty | m_isConv {this, "IsConversion", true, "Conversion flag"} |
|
BooleanProperty | m_PIDonlyForXe {this, "PIDonlyForXe", false, "Only check TRT PID if all hits are Xe hits"} |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
◆ StoreGateSvc_t
◆ InDetConversionTrackSelectorTool()
InDet::InDetConversionTrackSelectorTool::InDetConversionTrackSelectorTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetConversionTrackSelectorTool()
virtual InDet::InDetConversionTrackSelectorTool::~InDetConversionTrackSelectorTool |
( |
| ) |
|
|
virtualdefault |
◆ decision() [1/3]
Select a Trk::Track
Implements Trk::ITrackSelectorTool.
Definition at line 78 of file InDetConversionTrackSelectorTool.cxx.
80 const EventContext& ctx = Gaudi::Hive::currentContext();
83 const bool vertexSuppliedByUser{vx!=
nullptr};
86 if (not vertexSuppliedByUser) {
91 for (
const auto *
i : *
track.trackParameters()){
100 firstmeaspar=
track.perigeeParameters();
102 ATH_MSG_WARNING(
" First measurment on track is missing. Using perigee Parameters, but they are missing: 0 pointer! Track selection failed " );
104 if (not vertexSuppliedByUser)
delete myVertex;
115 track.info().particleHypothesis()).release();
116 perigee = extrapolatedParameters
117 ?
dynamic_cast<const Trk::Perigee*
>(extrapolatedParameters)
119 if (perigee==
nullptr || !perigee->covariance() ) {
121 if (extrapolatedParameters!=
nullptr) {
122 ATH_MSG_WARNING(
"The return object of the extrapolator was not a perigee even if a perigeeSurface was used!");
123 delete extrapolatedParameters;
124 if (not vertexSuppliedByUser)
delete myVertex;
127 if (not vertexSuppliedByUser)
delete myVertex;
133 double d0 = perigee->parameters()[
Trk::d0];
134 double z0 = perigee->parameters()[
Trk::z0];
137 double ratioTrk = 1.0;
139 bool isSilicon = (nclus > 0);
142 int ntrt = nTrtHits + nTrtOutliers;
147 ATH_MSG_FATAL(
"eProbabilityHT not available for Trk::Tracks only xAOD::TrackParticle objects" );
156 (ntrt>15 && ntrt<=25 && ratioTrk>=
m_trRatio2) ||
157 (ntrt>25 && ratioTrk>=
m_trRatio3)) pass =
true;
168 if ( ratioTrk >= trRatioTRT ) pass =
true;
175 double sd0sq =
err(0,0);
176 double sd0 = (sd0sq>0.)?std::sqrt(sd0sq):0.;
177 double sz0sq =
err(1,1);
178 double sz0 = (sz0sq>0.)?std::sqrt(sz0sq):0.;
186 ATH_MSG_FATAL(
"eProbabilityHT not available for Trk::Tracks only xAOD::TrackParticle objects" );
192 if (not vertexSuppliedByUser)
delete myVertex;
193 if (perigee!=
track.perigeeParameters())
delete perigee;
◆ decision() [2/3]
Select a Trk::TrackParticleBase
Implements Trk::ITrackSelectorTool.
Definition at line 197 of file InDetConversionTrackSelectorTool.cxx.
199 const EventContext& ctx = Gaudi::Hive::currentContext();
204 const bool vertexSuppliedByUser{vx!=
nullptr};
206 if (not vertexSuppliedByUser) {
212 for (
const auto *
i :
track.trackParameters()){
220 firstmeaspar=&(
track.definingParameters());
222 ATH_MSG_WARNING(
" Track Paraemters at first measurement not found. Perigee not found. Cannot do TrackSelection..." );
223 if (not vertexSuppliedByUser)
delete myVertex;
230 perigee = extrapolatedParameters
231 ?
dynamic_cast<const Trk::Perigee*
>(extrapolatedParameters)
233 if (perigee ==
nullptr || !perigee->covariance()) {
235 if (extrapolatedParameters!=
nullptr) {
236 ATH_MSG_WARNING(
"The return object of the extrapolator was not a perigee even if a perigeeSurface was used!" );
237 delete extrapolatedParameters;
238 if (not vertexSuppliedByUser)
delete myVertex;
241 if (not vertexSuppliedByUser)
delete myVertex;
247 double d0 = perigee->parameters()[
Trk::d0];
248 double z0 = perigee->parameters()[
Trk::z0];
251 double ratioTrk = 1.0;
253 bool isSilicon = (nclus > 0);
256 int ntrt = nTrtHits + nTrtOutliers;
262 ATH_MSG_FATAL(
"eProbabilityHT not available for Trk::TrackParticleBase only xAOD::TrackParticle objects" );
271 (ntrt>15 && ntrt<=25 && ratioTrk>=
m_trRatio2) ||
272 (ntrt>25 && ratioTrk>=
m_trRatio3)) pass =
true;
283 if ( ratioTrk >= trRatioTRT ) pass =
true;
290 double sd0sq =
err(0,0);
291 double sd0 = (sd0sq>0.)?std::sqrt(sd0sq):0.;
292 double sz0sq =
err(1,1);
293 double sz0 = (sz0sq>0.)?std::sqrt(sz0sq):0.;
302 ATH_MSG_FATAL(
"eProbabilityHT not available for Trk::TrackParticleBase only xAOD::TrackParticle objects" );
307 if (not vertexSuppliedByUser)
delete myVertex;
308 if (perigee!=&(
track.definingParameters()))
delete perigee;
◆ decision() [3/3]
Implements Trk::ITrackSelectorTool.
Definition at line 338 of file InDetConversionTrackSelectorTool.cxx.
340 const EventContext& ctx = Gaudi::Hive::currentContext();
349 if (extrapolatedParameters ==
nullptr) {
350 ATH_MSG_WARNING(
"Extrapolation to the vertex failed: " << perigeeSurface
357 double d0 = extrapolatedParameters->parameters()[
Trk::d0];
358 double z0 = extrapolatedParameters->parameters()[
Trk::z0];
360 double ratioTrk = 1.0;
362 bool isSilicon = (nclus > 0);
365 int ntrt = nTrtHits + nTrtOutliers;
381 (ntrt>15 && ntrt<=25 && ratioTrk>=
m_trRatio2) ||
382 (ntrt>25 && ratioTrk>=
m_trRatio3)) pass =
true;
393 if ( ratioTrk >= trRatioTRT ) pass =
true;
400 double sd0sq =
err(0,0);
401 double sd0 = (sd0sq>0.)?std::sqrt(sd0sq):0.;
402 double sz0sq =
err(1,1);
403 double sz0 = (sz0sq>0.)?std::sqrt(sz0sq):0.;
417 delete extrapolatedParameters;
◆ 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
◆ getBeamSpot()
Trk::Vertex * InDet::InDetConversionTrackSelectorTool::getBeamSpot |
( |
const EventContext & |
ctx | ) |
const |
|
private |
◆ getCount()
◆ getEtaBin()
unsigned int InDet::InDetConversionTrackSelectorTool::getEtaBin |
( |
const Trk::Perigee & |
perigee | ) |
const |
|
private |
◆ getPosOrBeamSpot()
◆ initialize()
StatusCode InDet::InDetConversionTrackSelectorTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ 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()
static const InterfaceID& Trk::ITrackSelectorTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ 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_beamSpotKey
◆ m_detStore
◆ m_eventInfo_key
◆ m_evtStore
◆ m_extrapolator
◆ m_isConv
BooleanProperty InDet::InDetConversionTrackSelectorTool::m_isConv {this, "IsConversion", true, "Conversion flag"} |
|
private |
◆ m_maxSiD0
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_maxSiD0 {this, "maxSiD0", 35., "Maximal d0 at (0,0,0) for tracks with Si hits"} |
|
private |
◆ m_maxSiZ0
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_maxSiZ0 {this, "maxSiZ0", 200., "Maximal z0 at (0,0,0)"} |
|
private |
◆ m_maxTrtD0
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_maxTrtD0 {this, "maxTrtD0", 100., "Maximal d0 at (0,0,0) for standalone TRT tracks"} |
|
private |
◆ m_maxTrtZ0
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_maxTrtZ0 {this, "maxTrtZ0", 1200., "Maximal z0 at (0,0,0) for standalone TRT tracks"} |
|
private |
◆ m_minPt
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_minPt {this, "minPt", 500., "Minimum Pt of tracks"} |
|
private |
◆ m_PIDonlyForXe
BooleanProperty InDet::InDetConversionTrackSelectorTool::m_PIDonlyForXe {this, "PIDonlyForXe", false, "Only check TRT PID if all hits are Xe hits"} |
|
private |
◆ m_sD0_Si
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_sD0_Si {this, "significanceD0_Si", 2., "Cut on D0 significance of Si tracks"} |
|
private |
◆ m_sD0_Trt
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_sD0_Trt {this, "significanceD0_Trt", 0.5, "Cut on D0 significance of TRT tracks"} |
|
private |
◆ m_sZ0_Trt
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_sZ0_Trt {this, "significanceZ0_Trt", 3., "Cut on Z0 significance of TRT tracks"} |
|
private |
◆ m_trRatio1
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_trRatio1 {this, "RatioCut1", 0.5, "TR ratio for tracks with 15 or less TRT hits"} |
|
private |
◆ m_trRatio2
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_trRatio2 {this, "RatioCut2", 0.1, "TR ratio for tracks with 16 to 25 TRT hits"} |
|
private |
◆ m_trRatio3
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_trRatio3 {this, "RatioCut3", 0.05, "TR ratio for tracks with 26 or more TRT hits"} |
|
private |
◆ m_trRatioTRT
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_trRatioTRT {this, "RatioTRT", 0.1, "TR ratio for all TRT only tracks"} |
|
private |
◆ m_trRatioV0
DoubleProperty InDet::InDetConversionTrackSelectorTool::m_trRatioV0 {this, "RatioV0", 1., "TR ratio for pion selection during V0 reconstruction"} |
|
private |
◆ m_TRTTrksBinnedRatioTRT
DoubleArrayProperty InDet::InDetConversionTrackSelectorTool::m_TRTTrksBinnedRatioTRT |
|
private |
Initial value:{this, "TRTTrksBinnedRatioTRT", {0., 0., 0., 0., 0., 0., 0., 0., 0., 0.},
"Eta-binned eProbabilityHT for TRT-only track cuts"}
Definition at line 107 of file InDetConversionTrackSelectorTool.h.
◆ m_TRTTrksEtaBins
DoubleArrayProperty InDet::InDetConversionTrackSelectorTool::m_TRTTrksEtaBins |
|
private |
Initial value:{this, "TRTTrksEtaBins",
{999., 999., 999., 999., 999., 999., 999., 999., 999., 999.},
"Eta bins (10 expected) for TRT-only track cuts"}
Definition at line 103 of file InDetConversionTrackSelectorTool.h.
◆ m_useEventInfoBs
Gaudi::Property<bool> InDet::InDetConversionTrackSelectorTool::m_useEventInfoBs {this,"UseEventInfoBS",false} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Vertex_v1 Vertex
Define the latest version of the vertex class.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
@ numberOfTRTXenonHits
number of TRT hits on track in straws with xenon [unit8_t].
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
#define AmgSymMatrix(dim)
Trk::RecVertex inherits from Trk::Vertex.
virtual void setOwner(IDataHandleHolder *o)=0
@ numberOfTRTOutliers
number of TRT holes
@ numberOfSCTHits
number of SCT holes
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
const Amg::Vector3D & position() const
return position of vertex
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
@ numberOfTRTHits
number of TRT outliers
A summary of the information contained by a track.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
#define ATH_MSG_WARNING(x)
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
int get(const SummaryType &type) const
returns the summary information for the passed SummaryType.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>