13#ifndef SiSpacePointsSeedMaker_ATLxk_H
14#define SiSpacePointsSeedMaker_ATLxk_H
25#include "GaudiKernel/ITHistSvc.h"
60 public extends<AthAlgTool, ISiSpacePointsSeedMaker>
75 virtual StatusCode
finalize()
override;
84 const std::vector<IdentifierHash>& vPixel,
const std::vector<IdentifierHash>& vSCT)
const override;
86 const std::vector<IdentifierHash>& vPixel,
const std::vector<IdentifierHash>& vSCT,
99 virtual void find3Sp(
const EventContext& ctx,
EventData&
data,
const std::list<Trk::Vertex>& lv)
const override;
103 virtual void find3Sp(
const EventContext& ctx,
EventData&
data,
const std::list<Trk::Vertex>& lv,
const double* zVertex)
const override;
107 virtual void findVSp(
const EventContext& ctx,
EventData&
data,
const std::list<Trk::Vertex>& lv)
const override;
170 "Name of the Magnetic Field conditions object key"};
175 BooleanProperty
m_pixel{
this,
"usePixel",
true};
176 BooleanProperty
m_sct{
this,
"useSCT",
true};
199 FloatProperty
m_drmax{
this,
"maxdRadius", 270.};
200 FloatProperty
m_zmin{
this,
"minZ", -250.};
201 FloatProperty
m_zmax{
this,
"maxZ", +250.};
211 FloatProperty
m_drmin{
this,
"mindRadius", 5.};
240 FloatProperty
m_maxScore{
this,
"maximumAcceptedSeedScore", 100.};
255 static constexpr float m_COF{134*.05f*9};
330 static float azimuthalStep(
const float pTmin,
const float maxd0,
const float Rmin,
const float Rmax) ;
422 std::array<std::vector<InDet::SiSpacePointForSeed*>::iterator,
arraySizeNeighbourBins> & iter_bottomCands,
423 std::array<std::vector<InDet::SiSpacePointForSeed*>::iterator,
arraySizeNeighbourBins> & iter_endBottomCands,
425 std::array<std::vector<InDet::SiSpacePointForSeed*>::iterator,
arraySizeNeighbourBins> & iter_endTopCands,
426 const int numberBottomCells,
const int numberTopCells,
int& nseed,
const int zbin = -1)
const;
435 const int numberBottomCells,
const int numberTopCells,
int& nseed)
const;
480 Gaudi::Property<bool>
m_writeNtuple {
this,
"WriteNtuple",
false,
"Flag to write Validation Ntuples"};
526 (
const std::pair<float,InDet::SiSpacePointForSeed*>& i1,
527 const std::pair<float,InDet::SiSpacePointForSeed*>& i2)
529 return i1.first < i2.first;
539 if (!d || !prd_to_track_map.
isUsed(*d))
return false;
540 d =
sp->clusterList().second;
541 if (!d || prd_to_track_map.
isUsed(*d))
return true;
char data[hepevt_bytes_allocation_ATLAS]
Describes the API of the Region of Ineterest geometry.
InDet::SiSpacePointsSeedMakerEventData holds event dependent data used by ISiSpacePointsSeedMaker.
FloatProperty m_maxScore
Maximum score to accept.
float m_dzdrmax0
implicitly store eta cut
FloatProperty m_dImpactCutSlopeUnconfirmedPPP
virtual bool getWriteNtupleBoolProperty() const override
FloatProperty m_maxdImpactSSS
static void newSeed(EventData &data, SiSpacePointForSeed *&p1, SiSpacePointForSeed *&p2, float z)
SG::ReadHandleKey< SpacePointContainer > m_spacepointsSCT
virtual void find3Sp(const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override
with three space points with or without vertex constraint
void newOneSeed(EventData &data, SiSpacePointForSeed *&p1, SiSpacePointForSeed *&p2, SiSpacePointForSeed *&p3, float z, float quality) const
This inserts a seed into the set of saved seeds.
std::array< std::array< int, arraySizeNeighbourBinsVertex >, arraySizePhiZV > m_neighboursVertexPhiZ
virtual void newRegion(const EventContext &ctx, EventData &data, const std::vector< IdentifierHash > &vPixel, const std::vector< IdentifierHash > &vSCT) const override
Initialize tool for new region.
void fillSeeds(EventData &data) const
fills the seeds from the mapOneSeeds_Pro member into the l_seeds_Pro member of the data object,...
SiSpacePointsSeedMaker_ATLxk(const std::string &, const std::string &, const IInterface *)
Constructor.
int m_maxPhiBin
number of bins in phi
FloatProperty m_seedScoreBonusSSS
virtual void find2Sp(EventData &data, const std::list< Trk::Vertex > &lv) const override
With two space points with or without vertex constraint.
float m_seedScoreThresholdPPPConfirmationSeed
Seed score thresholds defined based on the modifiers defined as configurables above.
FloatProperty m_seedScoreBonusConfirmationSeed
IntegerProperty m_maxsizeSP
SG::ReadHandleKey< SpacePointContainer > m_spacepointsPixel
SiSpacePointsSeedMaker_ATLxk & operator=(const SiSpacePointsSeedMaker_ATLxk &)=delete
FloatProperty m_fieldScale
int m_maxBinPhiVertex
number of bins in phi for vertices
void buildFrameWork()
prepare several data members with cached cut values, conversion factors, binnings,...
BooleanProperty m_optimisePhiBinning
This flag will make the buildFrameWork method determine an optimal phi binning of the search regions ...
bool newVertices(EventData &data, const std::list< Trk::Vertex > &lV) const
This method updates the EventData based on the passed list of vertices.
BooleanProperty m_alwaysKeepConfirmedStripSeeds
FloatProperty m_maxdImpactDecays
SiSpacePointsSeedMaker_ATLxk(const SiSpacePointsSeedMaker_ATLxk &)=delete
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
SiSpacePointsSeedMaker_ATLxk()=delete
std::array< int, arraySizePhiZ > m_nNeighbourCellsBottom
arrays associating bins to each other for SP formation
FloatProperty m_dImpactCutSlopeUnconfirmedSSS
these flags allow to dynamically tighten the d0 cut on non-confirmed seeds based on the penalty score...
void production2Sp(EventData &data) const
BooleanProperty m_checketa
void fillLists(EventData &data) const
this method populates the data object's "histograms" (implemented as nested vectors).
MsgStream & dumpConditions(EventData &data, MsgStream &out) const
Dumps conditions information into the MsgStream.
void production3SpTrigger(EventData &data, std::array< std::vector< InDet::SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &rb, std::array< std::vector< InDet::SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &rbe, std::array< std::vector< InDet::SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &rt, std::array< std::vector< InDet::SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &rte, const int numberBottomCells, const int numberTopCells, int &nseed) const
as above, but for the trigger
void findNext(EventData &data) const
This method is called within next() when we are out of vertices.
static void convertToBeamFrameWork(EventData &data, const Trk::SpacePoint *const &sp, std::array< float, 3 > &r)
This method popualtes the r array with the space point's coordinates relative to the beam spot.
SiSpacePointForSeed * newSpacePoint(EventData &data, const Trk::SpacePoint *const &sp) const
Create a SiSpacePointForSeed from the space point.
static constexpr float m_radiusCutIBL
We detect IBL hits via the seed radial location.
IntegerProperty m_maxsize
virtual void findVSp(const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override
with variable number space points with or without vertex constraint Variable means (2,...
float m_seedScoreThresholdSSSConfirmationSeed
max (score is assigned negative sign) score for SSS seeds with confirmation seed requirement.
FloatProperty m_seedScoreBonusPPP
Scoring modifiers applied when ranking seeds.
bool isConfirmedSeed(const InDet::SiSpacePointForSeed *bottomSP, const InDet::SiSpacePointForSeed *topSP, float quality) const
Helper method to determine if a seed is 'confirmed' - this means that a second seed exists with compa...
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
Read handle for conditions object to get the field cache.
float m_inverseBinSizePhiVertex
as above but for vertex
BooleanProperty m_useOverlap
std::array< int, arraySizePhiZV > m_nNeighboursVertexPhiZ
FloatProperty m_maxdImpact
IntegerProperty m_maxOneSizePPP
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlap
virtual void newEvent(const EventContext &ctx, EventData &data, int iteration) const override
Initialize tool for new event.
float m_inverseBinSizePhi
cache the inverse bin size in phi which we use - needed to evaluate phi bin locations
static void erase(EventData &data)
BooleanProperty m_alwaysKeepConfirmedPixelSeeds
This flag will lead to all confirmed seeds (seeds where a second compatible seed with a different top...
std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > m_neighbourCellsBottom
mapping of neighbour cells in the 2D phi-z binning to consider for the "bottom SP" search for central...
bool isUsed(const Trk::SpacePoint *sp, const Trk::PRDtoTrackMap &prd_to_track_map) const
int m_nBinsR
number of bins in the radial coordinate
virtual StatusCode initialize() override
Initialisation.
IntegerProperty m_maxOneSizeSSS
maximum number of seeds to keep per central space point.
virtual ~SiSpacePointsSeedMaker_ATLxk()=default
std::string m_treeName ATLAS_THREAD_SAFE
void buildBeamFrameWork(EventData &data) const
Initiate beam frame work for seed generator.
float m_ipt2
inverse square of 90% of the pt min cut
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
virtual StatusCode finalize() override
Finalize.
static constexpr float m_COF
appears to be an approximated term related to multiple-scattering of particles traversing the ID duri...
void initializeEventData(EventData &data) const
void newOneSeedWithCurvaturesComparison(EventData &data, SiSpacePointForSeed *&SPb, SiSpacePointForSeed *&SP0, float Zob) const
This creates all possible seeds with the passed central and bottom SP, using all top SP candidates wh...
ServiceHandle< ITHistSvc > m_thistSvc
virtual const SiSpacePointsSeed * next(const EventContext &ctx, EventData &data) const override
This method will update the data.seedOutput member to be the next seed pointed at by the data....
std::array< int, arraySizePhiZ > m_nNeighbourCellsTop
number of neighbouring phi-z bins to consider when looking for "top SP" candidates for each phi-z bin
bool isZCompatible(EventData &data, const float Zv, const float R, const float T) const
std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > m_neighbourCellsTop
mapping of neighbour cells in the 2D phi-z binning to consider for the "top SP" search for central SP...
Gaudi::Property< bool > m_writeNtuple
Flag to write validation ntuples. Turned off by default.
float m_ipt
inverse of 90% of the ptmin cut
Size
enum for array sizes Note that this stores the maximum capacities, the actual binnings do not always ...
@ arraySizeZV
array size in z for vertexing
@ arraySizePhiZ
capacity for the 2D phi-z arrays
@ arraySizePhi
capacity of the 1D phi arrays
@ arraySizeNeighbourBins
array size to store neighbouring phi-z-regions in the seed finding
@ arraySizeNeighbourBinsVertex
@ arraySizeZ
capacity of the 1D z arrays
@ arraySizePhiZV
array size in phi-Z 2D for the vertexing
@ arraySizePhiV
array size in phi for vertexing
void production3Sp(EventData &data) const
Top-level method for 3-SP seed production.
static MsgStream & dumpEvent(EventData &data, MsgStream &out)
Dumps event information into the MsgStream.
float m_dzdrmin0
conversion factors and cached cut values
virtual void newRegion(const EventContext &ctx, SiSpacePointsSeedMakerEventData &data, const std::vector< IdentifierHash > &vPixel, const std::vector< IdentifierHash > &vSCT, const IRoiDescriptor &iRD) const override
static float azimuthalStep(const float pTmin, const float maxd0, const float Rmin, const float Rmax)
Determine the expected azimuthal trajectory displacement in phi in presence of the magnetic field for...
virtual void writeNtuple(const SiSpacePointsSeed *seed, const Trk::Track *track, int seedType, long eventNumber) const override
This method is called by the SiSPSeededTrackFinder algorithm to fill ntuples for seeds seen by the al...
SiSpacePointsSeedMakerEventData EventData
Property holding a SG store/key/clid from which a ReadHandle is made.
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?