Skip to content
Snippets Groups Projects
Commit 27866ff3 authored by Vakhtang Tsulaia's avatar Vakhtang Tsulaia
Browse files

Merge branch 'master-SiSpacePointsSeedMaker_LowMomentum' into 'master'

Make methods of SiSpacePointsSeedMaker_LowMomentum const by defining EventData to hold event dependent data.

See merge request atlas/athena!23349
parents c5fbcc93 c8de7a2f
No related branches found
No related tags found
No related merge requests found
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <list> #include <list>
#include <map> #include <map>
#include <mutex>
#include <vector> #include <vector>
class MsgStream; class MsgStream;
...@@ -117,108 +118,114 @@ namespace InDet { ...@@ -117,108 +118,114 @@ namespace InDet {
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
ServiceHandle<MagField::IMagFieldSvc> m_fieldServiceHandle{this, "MagFieldSvc", "AtlasFieldSvc"}; ServiceHandle<MagField::IMagFieldSvc> m_fieldServiceHandle{this, "MagFieldSvc", "AtlasFieldSvc"};
PublicToolHandle<Trk::IPRD_AssociationTool> m_assoTool{this, "AssociationTool", "InDet::InDetPRD_AssociationToolGangedPixels"};
///////////////////////////////////////////////////////////////////
// Space points container
///////////////////////////////////////////////////////////////////
SG::ReadHandleKey<SpacePointContainer> m_spacepointsSCT{this, "SpacePointsSCTName", "SCT_SpacePoints"};
SG::ReadHandleKey<SpacePointContainer> m_spacepointsPixel{this, "SpacePointsPixelName", "PixelSpacePoints"};
SG::ReadHandleKey<SpacePointOverlapCollection> m_spacepointsOverlap{this, "SpacePointsOverlapName", "OverlapSpacePoints"};
SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
// Properties, which will not be changed after construction
BooleanProperty m_pixel{this, "usePixel", true}; BooleanProperty m_pixel{this, "usePixel", true};
BooleanProperty m_sct{this, "useSCT", true}; BooleanProperty m_sct{this, "useSCT", true};
bool m_endlist{true};
BooleanProperty m_useOverlap{this, "useOverlapSpCollection", false}; BooleanProperty m_useOverlap{this, "useOverlapSpCollection", false};
BooleanProperty m_useassoTool{this, "UseAssociationTool", true}; BooleanProperty m_useassoTool{this, "UseAssociationTool", true};
bool m_trigger {};
int m_outputlevel {};
int m_nprint {};
int m_state{0};
int m_nspoint{2};
int m_mode{0};
int m_nlist{0};
IntegerProperty m_maxsize{this, "maxSize", 2000}; IntegerProperty m_maxsize{this, "maxSize", 2000};
IntegerProperty m_maxsizeSP{this, "maxSizeSP", 1500};
IntegerProperty m_maxOneSize{this, "maxSeedsForSpacePoint", 5};
FloatProperty m_r1min{this, "minRadius1", 0.}; FloatProperty m_r1min{this, "minRadius1", 0.};
FloatProperty m_r1max{this, "maxRadius1", 600.}; FloatProperty m_r1max{this, "maxRadius1", 600.};
FloatProperty m_r2min{this, "minRadius2", 0.}; FloatProperty m_r2min{this, "minRadius2", 0.};
FloatProperty m_r2max{this, "maxRadius2", 600.}; FloatProperty m_r2max{this, "maxRadius2", 600.};
FloatProperty m_r3min{this, "minRadius3", 0.}; FloatProperty m_r3min{this, "minRadius3", 0.};
FloatProperty m_r3max{this, "maxRadius3", 600.};
FloatProperty m_drmin{this, "mindRadius", 10.}; FloatProperty m_drmin{this, "mindRadius", 10.};
FloatProperty m_drmax{this, "maxdRadius", 200.}; FloatProperty m_drmax{this, "maxdRadius", 200.};
FloatProperty m_rapcut{this, "RapidityCut", 2.7};
float m_dzdrmin {};
float m_dzdrmax {};
FloatProperty m_zmin{this, "minZ", -250.}; FloatProperty m_zmin{this, "minZ", -250.};
FloatProperty m_zmax{this, "maxZ", +250.}; FloatProperty m_zmax{this, "maxZ", +250.};
float m_zminU {};
float m_zmaxU {};
FloatProperty m_r_rmax{this, "radMax", 200.}; FloatProperty m_r_rmax{this, "radMax", 200.};
FloatProperty m_r_rstep{this, "radStep", 2.}; FloatProperty m_r_rstep{this, "radStep", 2.};
FloatProperty m_dzver{this, "maxdZver", 5.}; FloatProperty m_dzver{this, "maxdZver", 5.};
FloatProperty m_dzdrver{this, "maxdZdRver", 0.02}; FloatProperty m_dzdrver{this, "maxdZdRver", 0.02};
FloatProperty m_diver{this, "maxdImpact", 7.}; FloatProperty m_diver{this, "maxdImpact", 7.};
FloatProperty m_diverpps{this, "maxdImpactPPS", 1.2};
float m_dazmax{0.02}; // Properties, which can be updated in initialize
FloatProperty m_r3max{this, "maxRadius3", 600.}; // Always overwritten by m_r_rmax
FloatProperty m_rapcut{this, "RapidityCut", 2.7};
FloatProperty m_ptmin{this, "pTmin", 100.}; FloatProperty m_ptmin{this, "pTmin", 100.};
FloatProperty m_ptmax{this, "pTmax", 500.}; FloatProperty m_ptmax{this, "pTmax", 500.};
float m_iptmin {};
float m_iptmax{1./400.};
int m_r_size {};
int m_rf_size {};
int m_rfz_size {};
std::vector<std::list<InDet::SiSpacePointForSeed*>> m_r_Sorted;
std::list<InDet::SiSpacePointForSeed*> m_rfz_Sorted [SizeRFZ];
std::list<InDet::SiSpacePointForSeed> m_l_spforseed;
std::list<InDet::SiSpacePointForSeed>::iterator m_i_spforseed;
std::list<InDet::SiSpacePointForSeed*>::iterator m_rMin;
int m_ns{},m_nsaz {};
int m_fNmax {};
int m_fNmin {};
int m_zMin {};
int m_nr {};
std::vector<int> m_r_index;
std::vector<int> m_r_map;
int m_nrfz {} , m_rfz_index [SizeRFZ], m_rfz_map [SizeRFZ];
int m_rfz_b[SizeRFZ],m_rfz_t[SizeRFZ],m_rfz_ib[SizeRFZ][SizeI],m_rfz_it[SizeRFZ][SizeI];
float m_sF {};
///////////////////////////////////////////////////////////////////
// Tables for 3 space points seeds search
///////////////////////////////////////////////////////////////////
IntegerProperty m_maxsizeSP{this, "maxSizeSP", 1500};
std::vector<InDet::SiSpacePointForSeed*> m_SP;
std::vector<float> m_R;
std::vector<float> m_Tz;
std::vector<float> m_Er;
std::vector<float> m_U;
std::vector<float> m_V;
std::vector<float> m_Zo;
std::list<InDet::SiSpacePointsSeed> m_l_seeds;
std::list<InDet::SiSpacePointsSeed>::iterator m_i_seed;
std::list<InDet::SiSpacePointsSeed>::iterator m_i_seede;
std::multimap<float,InDet::SiSpacePointsSeed*> m_mapOneSeeds;
std::vector<InDet::SiSpacePointsSeed> m_OneSeeds;
IntegerProperty m_maxOneSize{this, "maxSeedsForSpacePoint", 5};
int m_nOneSeeds {};
std::list<float> m_l_vertex;
///////////////////////////////////////////////////////////////////
// Beam geometry
///////////////////////////////////////////////////////////////////
float m_xbeam[4]{0., 1., 0., 0.}; // x,ax,ay,az - center and x-axis direction
float m_ybeam[4]{0., 0., 1., 0.}; // y,ax,ay,az - center and y-axis direction
float m_zbeam[4]{0., 0., 0., 1.}; // z,ax,ay,az - center and z-axis direction
///////////////////////////////////////////////////////////////////
// Space points container
///////////////////////////////////////////////////////////////////
SG::ReadHandleKey<SpacePointContainer> m_spacepointsSCT{this, "SpacePointsSCTName", "SCT_SpacePoints"}; // Properties, which are not used in this implementation of SiSpacePointsSeedMaker_LowMomentum class
SG::ReadHandleKey<SpacePointContainer> m_spacepointsPixel{this, "SpacePointsPixelName", "PixelSpacePoints"}; FloatProperty m_diverpps{this, "maxdImpactPPS", 1.2};
SG::ReadHandleKey<SpacePointOverlapCollection> m_spacepointsOverlap{this, "SpacePointsOverlapName", "OverlapSpacePoints"};
PublicToolHandle<Trk::IPRD_AssociationTool> m_assoTool{this, "AssociationTool", "InDet::InDetPRD_AssociationToolGangedPixels"}; // Updated only in initialize
bool m_initialized{false};
int m_outputlevel{0};
int m_fNmax{0};
int m_r_size{0};
int m_rfz_b[SizeRFZ];
int m_rfz_t[SizeRFZ];
int m_rfz_ib[SizeRFZ][SizeI];
int m_rfz_it[SizeRFZ][SizeI];
float m_dzdrmin{0.};
float m_dzdrmax{0.};
float m_iptmin{0.};
float m_iptmax{1./400.};
float m_sF{0.};
mutable std::mutex m_mutex;
mutable std::vector<EventContext::ContextEvt_t> m_cache ATLAS_THREAD_SAFE; // Guarded by m_mutex
struct EventData { // To hold event dependent data
bool endlist{true};
bool trigger{false};
int nprint{0};
int state{0};
int nspoint{2};
int mode{0};
int nlist{0};
int ns{0};
int nsaz{0};
int fNmin{0};
int zMin{0};
int nr{0};
int nrfz{0};
int nOneSeeds{0};
int rfz_index[SizeRFZ];
int rfz_map[SizeRFZ];
std::vector<int> r_index;
std::vector<int> r_map;
std::vector<std::list<InDet::SiSpacePointForSeed*>> r_Sorted;
std::vector<InDet::SiSpacePointsSeed> OneSeeds;
std::multimap<float,InDet::SiSpacePointsSeed*> mapOneSeeds;
std::list<InDet::SiSpacePointForSeed*> rfz_Sorted[SizeRFZ];
std::list<InDet::SiSpacePointForSeed> l_spforseed;
std::list<InDet::SiSpacePointForSeed>::iterator i_spforseed;
std::list<InDet::SiSpacePointForSeed*>::iterator rMin;
std::list<InDet::SiSpacePointsSeed> l_seeds;
std::list<InDet::SiSpacePointsSeed>::iterator i_seed;
std::list<InDet::SiSpacePointsSeed>::iterator i_seede;
std::list<float> l_vertex;
///////////////////////////////////////////////////////////////////
// Tables for 3 space points seeds search
///////////////////////////////////////////////////////////////////
std::vector<InDet::SiSpacePointForSeed*> SP;
std::vector<float> R;
std::vector<float> Tz;
std::vector<float> Er;
std::vector<float> U;
std::vector<float> V;
std::vector<float> Zo;
///////////////////////////////////////////////////////////////////
// Beam geometry
///////////////////////////////////////////////////////////////////
float xbeam[4]{0., 1., 0., 0.}; // x,ax,ay,az - center and x-axis direction
float ybeam[4]{0., 0., 1., 0.}; // y,ax,ay,az - center and y-axis direction
float zbeam[4]{0., 0., 0., 1.}; // z,ax,ay,az - center and z-axis direction
};
mutable std::vector<EventData> m_eventData ATLAS_THREAD_SAFE; // Guarded by m_mutex
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
// Private methods // Private methods
...@@ -230,42 +237,48 @@ namespace InDet { ...@@ -230,42 +237,48 @@ namespace InDet {
SiSpacePointsSeedMaker_LowMomentum &operator=(const SiSpacePointsSeedMaker_LowMomentum&) = delete; SiSpacePointsSeedMaker_LowMomentum &operator=(const SiSpacePointsSeedMaker_LowMomentum&) = delete;
//@} //@}
MsgStream& dumpConditions(MsgStream & out) const; MsgStream& dumpConditions(EventData& data, MsgStream& out) const;
MsgStream& dumpEvent (MsgStream & out) const; MsgStream& dumpEvent(EventData& data, MsgStream& out) const;
void buildFrameWork(); void buildFrameWork();
void buildBeamFrameWork(); void buildBeamFrameWork(EventData& data) const;
SiSpacePointForSeed* newSpacePoint SiSpacePointForSeed* newSpacePoint
(const Trk::SpacePoint*const&); (EventData& data, const Trk::SpacePoint*const&) const;
void newSeed void newSeed
(const Trk::SpacePoint*&,const Trk::SpacePoint*&, (EventData& data,
const float&); const Trk::SpacePoint*&,const Trk::SpacePoint*&,
const float&) const;
void newSeed void newSeed
(const Trk::SpacePoint*&,const Trk::SpacePoint*&, (EventData& data,
const Trk::SpacePoint*&,const float&); const Trk::SpacePoint*&,const Trk::SpacePoint*&,
const Trk::SpacePoint*&,const float&) const;
void newOneSeed void newOneSeed
(const Trk::SpacePoint*&,const Trk::SpacePoint*&, (EventData& data,
const Trk::SpacePoint*&,const float&,const float&); const Trk::SpacePoint*&,const Trk::SpacePoint*&,
void fillSeeds(); const Trk::SpacePoint*&,const float&,const float&) const;
void fillSeeds(EventData& data) const;
void fillLists ();
void erase (); void fillLists(EventData& data) const;
void production2Sp (); void erase(EventData& data) const;
void production3Sp (); void production2Sp(EventData& data) const;
void production3Sp(EventData& data) const;
void production3Sp void production3Sp
(std::list<InDet::SiSpacePointForSeed*>::iterator*, (EventData& data,
std::list<InDet::SiSpacePointForSeed*>::iterator*, std::list<InDet::SiSpacePointForSeed*>::iterator*,
std::list<InDet::SiSpacePointForSeed*>::iterator*, std::list<InDet::SiSpacePointForSeed*>::iterator*,
std::list<InDet::SiSpacePointForSeed*>::iterator*, std::list<InDet::SiSpacePointForSeed*>::iterator*,
int,int,int&,float); std::list<InDet::SiSpacePointForSeed*>::iterator*,
int,int,int&,float) const;
bool newVertices(const std::list<Trk::Vertex>&); bool newVertices(EventData& data, const std::list<Trk::Vertex>&) const;
void findNext(); void findNext(EventData& data) const;
bool isZCompatible (float&,float&,float&); bool isZCompatible(EventData& data, float&,float&,float&) const;
void convertToBeamFrameWork(const Trk::SpacePoint*const&,float*); void convertToBeamFrameWork(EventData& data, const Trk::SpacePoint*const&,float*) const;
bool isUsed(const Trk::SpacePoint*); bool isUsed(const Trk::SpacePoint*) const;
EventData& getEventData() const;
}; };
MsgStream& operator << (MsgStream& ,const SiSpacePointsSeedMaker_LowMomentum&); MsgStream& operator << (MsgStream& ,const SiSpacePointsSeedMaker_LowMomentum&);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment