 |
ATLAS Offline Software
|
#include <GbtsSeedingTool.h>
|
| GbtsSeedingTool (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual | ~GbtsSeedingTool ()=default |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | createSeeds (const EventContext &ctx, const Acts::SpacePointContainer< ActsTrk::SpacePointCollector, Acts::detail::RefHolder > &spContainer, const Acts::Vector3 &beamSpotPos, const Acts::Vector3 &bField, ActsTrk::SeedContainer &seedContainer) const override |
|
std::vector< Acts::Experimental::TrigInDetSiLayer > | LayerNumbering () const |
|
std::pair< int, int > | getCombinedID (const int eta_mod, const short barrel_ec, const int lay_id) const |
|
|
Acts::Experimental::SeedFinderGbtsConfig< xAOD::SpacePoint > | m_finderCfg |
|
std::unique_ptr< Acts::Experimental::GbtsGeometry< xAOD::SpacePoint > > | m_gbtsGeo = nullptr |
|
const PixelID * | m_pixelId = nullptr |
|
const InDetDD::PixelDetectorManager * | m_pixelManager = nullptr |
|
Gaudi::Property< float > | m_minPt |
|
Gaudi::Property< float > | m_sigmaScattering |
|
Gaudi::Property< float > | m_highland {this, "highland",0, "need to check "} |
|
Gaudi::Property< float > | m_maxScatteringAngle2 {this, "maxScatteringAngle2",0, "need to check "} |
|
Gaudi::Property< float > | m_helixCutTolerance {this, "helixCutTolerance",1, "Parameter which can loosen the tolerance of the track seed to form a helix. This is useful for e.g. misaligned seeding."} |
|
Gaudi::Property< float > | m_phiSliceWidth {this, "phiSliceWidth",0, "initialised in loadSpacePoints function"} |
|
Gaudi::Property< float > | m_nMaxPhiSlice {this, "nMaxPhiSlice",53, "used to calculate phi slices"} |
|
Gaudi::Property< bool > | m_useClusterWidth {this, "useClusterWidth",false, "bool for use of cluster width in loadSpacePoints function"} |
|
Gaudi::Property< std::string > | m_ConnectorInputFile {this, "ConnectorInputFile","binTables_ITK_RUN4.txt", "input file for making connector object"} |
|
Gaudi::Property< bool > | m_useEtaBinning {this, "useEtaBinning",true, "bool to use eta binning from geometry structure"} |
|
Gaudi::Property< bool > | m_doubletFilterRZ {this, "doubletFilterRZ",true, "bool applies new Z cuts on doublets"} |
|
Gaudi::Property< float > | m_minDeltaRadius {this, "minDeltaRadius",2.0, " min dr for doublet"} |
|
Gaudi::Property< float > | m_tripletD0Max {this, "tripletD0Max",4.0, " D0 cut for triplets"} |
|
Gaudi::Property< unsigned int > | m_maxTripletBufferLength {this, "maxTripletBufferLength",3, " maximum number of space points per triplet"} |
|
Gaudi::Property< int > | m_MaxEdges {this, "MaxEdges",2000000, " max number of Gbts edges/doublets"} |
|
Gaudi::Property< float > | m_cut_dphi_max {this, "cut_dphi_max",0.012, " phi cut for triplets"} |
|
Gaudi::Property< float > | m_cut_dcurv_max {this, "cut_dcurv_max",0.001, " curv cut for triplets"} |
|
Gaudi::Property< float > | m_cut_tau_ratio_max {this, "cut_tau_ratio_max",0.007, "tau cut for doublets and triplets"} |
|
Gaudi::Property< float > | m_maxOuterRadius {this, "maxOuterRadius",550.0, "used to calculate Z cut on doublets"} |
|
Gaudi::Property< float > | m_PtMin {this, "PtMin",1000.0, "pt limit used to caluclate triplet pT"} |
|
Gaudi::Property< float > | m_tripletPtMinFrac {this, "tripletPtMinFrac",0.3, "used to caluclate triplet pt"} |
|
Gaudi::Property< float > | m_tripletPtMin {this, "tripletPtMin",m_PtMin * m_tripletPtMinFrac, "Limit on triplet pt"} |
|
Gaudi::Property< double > | m_ptCoeff {this, "ptCoeff", 0.29997 * 1.9972 / 2.0, "~0.3*B/2 - assumes nominal field of 2*T"} |
|
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > | m_pixelDetEleCollKey {this, "PixelDetectorElements", "ITkPixelDetectorElementCollection", "Key of input SiDetectorElementCollection for Pixel"} |
|
std::unique_ptr< const Acts::Logger > | m_logger {nullptr} |
| logging instance More...
|
|
Definition at line 48 of file GbtsSeedingTool.h.
◆ seed_type
◆ GbtsSeedingTool()
ActsTrk::GbtsSeedingTool::GbtsSeedingTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~GbtsSeedingTool()
virtual ActsTrk::GbtsSeedingTool::~GbtsSeedingTool |
( |
| ) |
|
|
virtualdefault |
◆ createSeeds()
Definition at line 54 of file GbtsSeedingTool.cxx.
61 Acts::SeedFinderOptions finderOpts;
62 finderOpts.beamPos = Acts::Vector2(beamSpotPos[
Amg::x],
64 finderOpts.bFieldInZ = bField[2];
65 finderOpts = finderOpts.toInternalUnits().calculateDerivedQuantities(
m_finderCfg);
73 std::vector<Acts::Experimental::GbtsSP<xAOD::SpacePoint>> GbtsSpacePoints;
74 GbtsSpacePoints.reserve(
78 for (
const auto& spacePoint : spContainer) {
80 const std::vector<xAOD::DetectorIDHashType>& elementlist = spacePoint.externalSpacePoint().elementIdList() ;
91 int combined_id =
getCombinedID(eta_mod,barrel_ec,lay_id).first ;
92 int Gbts_id =
getCombinedID(eta_mod,barrel_ec,lay_id).second ;
95 float ClusterWidth = 0;
98 GbtsSpacePoints.emplace_back(&spacePoint.externalSpacePoint(), Gbts_id, combined_id, ClusterWidth);
107 Acts::Experimental::SeedFinderGbts<xAOD::SpacePoint>
finder = Acts::Experimental::SeedFinderGbts<xAOD::SpacePoint>(
m_finderCfg,*
m_gbtsGeo);
109 finder.loadSpacePoints(GbtsSpacePoints);
113 std::vector<Acts::Seed<xAOD::SpacePoint, 3ul>> groupSeeds =
finder.createSeeds(internalRoi, *
m_gbtsGeo);
117 seedContainer.
reserve(groupSeeds.size());
118 for( Acts::Seed<xAOD::SpacePoint, 3ul>& seed: groupSeeds) {
121 const auto& spacepoints =
seed.sp() ;
122 assert(spacepoints.size()==3) ;
127 std::unique_ptr<seed_type> to_add = std::make_unique<seed_type>(*sp1, *sp2, *sp3);
130 seedContainer.
push_back(std::move(to_add));
134 return StatusCode::SUCCESS;
◆ getCombinedID()
std::pair< int, int > ActsTrk::GbtsSeedingTool::getCombinedID |
( |
const int |
eta_mod, |
|
|
const short |
barrel_ec, |
|
|
const int |
lay_id |
|
) |
| const |
Definition at line 235 of file GbtsSeedingTool.cxx.
237 if(barrel_ec== 0) vol_id = 8;
238 if(barrel_ec==-2) vol_id = 7;
239 if(barrel_ec== 2) vol_id = 9;
241 int new_vol=0, new_lay=0;
242 if(vol_id == 7 || vol_id == 9) {
243 new_vol = 10*vol_id + lay_id;
246 else if(vol_id == 8) {
248 new_vol = 10*vol_id + lay_id;
251 int Gbts_id = new_vol ;
252 int combined_id = new_vol * 1000 + new_lay;
254 return std::make_pair(combined_id,Gbts_id) ;
◆ initialize()
StatusCode ActsTrk::GbtsSeedingTool::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 21 of file GbtsSeedingTool.cxx.
40 std::ifstream input_ifstream(
41 m_finderCfg.ConnectorInputFile.c_str(), std::ifstream::in);
43 std::unique_ptr<Acts::Experimental::GbtsConnector> inputConnector =
44 std::make_unique<Acts::Experimental::GbtsConnector>(input_ifstream);
46 m_gbtsGeo = std::make_unique<Acts::Experimental::GbtsGeometry<xAOD::SpacePoint>>(
49 return StatusCode::SUCCESS;
◆ LayerNumbering()
std::vector< Acts::Experimental::TrigInDetSiLayer > ActsTrk::GbtsSeedingTool::LayerNumbering |
( |
| ) |
const |
Definition at line 139 of file GbtsSeedingTool.cxx.
140 std::vector<std::size_t> count_vector;
141 std::vector<Acts::Experimental::TrigInDetSiLayer> input_vector;
149 const int combined_id =
getCombinedID(eta_mod,barrel_ec,lay_id).first ;
160 rc += std::sqrt(
C(0)*
C(0)+
C(1)*
C(1));
161 if(
p->zMin() < minBound) minBound =
p->zMin();
162 if(
p->zMax() > maxBound) maxBound =
p->zMax();
166 if(
p->rMin() < minBound) minBound =
p->rMin();
167 if(
p->rMax() > maxBound) maxBound =
p->rMax();
172 find_if(input_vector.begin(), input_vector.end(),
173 [combined_id](
auto n) { return n.m_subdet == combined_id; });
174 if (current_index != input_vector.end()) {
176 input_vector[
index].m_refCoord +=
rc;
177 input_vector[
index].m_minBound += minBound;
178 input_vector[
index].m_maxBound += maxBound;
179 count_vector[
index] += 1;
183 Acts::Experimental::TrigInDetSiLayer new_Gbts_ID(combined_id, barrel_ec, rc, minBound,
185 input_vector.push_back(new_Gbts_ID);
186 count_vector.push_back(
191 for (std::size_t
i = 0;
i < input_vector.size(); ++
i) {
192 assert(count_vector[
i] != 0);
193 input_vector[
i].m_refCoord = input_vector[
i].m_refCoord / count_vector[
i];
◆ logger()
const Acts::Logger& ActsTrk::GbtsSeedingTool::logger |
( |
| ) |
const |
|
inlineprivate |
◆ prepareConfiguration()
StatusCode ActsTrk::GbtsSeedingTool::prepareConfiguration |
( |
| ) |
|
|
private |
◆ m_ConnectorInputFile
Gaudi::Property<std::string> ActsTrk::GbtsSeedingTool::m_ConnectorInputFile {this, "ConnectorInputFile","binTables_ITK_RUN4.txt", "input file for making connector object"} |
|
private |
◆ m_cut_dcurv_max
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_cut_dcurv_max {this, "cut_dcurv_max",0.001, " curv cut for triplets"} |
|
private |
◆ m_cut_dphi_max
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_cut_dphi_max {this, "cut_dphi_max",0.012, " phi cut for triplets"} |
|
private |
◆ m_cut_tau_ratio_max
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_cut_tau_ratio_max {this, "cut_tau_ratio_max",0.007, "tau cut for doublets and triplets"} |
|
private |
◆ m_doubletFilterRZ
Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_doubletFilterRZ {this, "doubletFilterRZ",true, "bool applies new Z cuts on doublets"} |
|
private |
◆ m_finderCfg
Acts::Experimental::SeedFinderGbtsConfig<xAOD::SpacePoint> ActsTrk::GbtsSeedingTool::m_finderCfg |
|
private |
◆ m_gbtsGeo
std::unique_ptr<Acts::Experimental::GbtsGeometry<xAOD::SpacePoint> > ActsTrk::GbtsSeedingTool::m_gbtsGeo = nullptr |
|
private |
◆ m_helixCutTolerance
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_helixCutTolerance {this, "helixCutTolerance",1, "Parameter which can loosen the tolerance of the track seed to form a helix. This is useful for e.g. misaligned seeding."} |
|
private |
◆ m_highland
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_highland {this, "highland",0, "need to check "} |
|
private |
◆ m_logger
std::unique_ptr<const Acts::Logger> ActsTrk::GbtsSeedingTool::m_logger {nullptr} |
|
private |
◆ m_MaxEdges
Gaudi::Property<int> ActsTrk::GbtsSeedingTool::m_MaxEdges {this, "MaxEdges",2000000, " max number of Gbts edges/doublets"} |
|
private |
◆ m_maxOuterRadius
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxOuterRadius {this, "maxOuterRadius",550.0, "used to calculate Z cut on doublets"} |
|
private |
◆ m_maxScatteringAngle2
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxScatteringAngle2 {this, "maxScatteringAngle2",0, "need to check "} |
|
private |
◆ m_maxTripletBufferLength
Gaudi::Property<unsigned int> ActsTrk::GbtsSeedingTool::m_maxTripletBufferLength {this, "maxTripletBufferLength",3, " maximum number of space points per triplet"} |
|
private |
◆ m_minDeltaRadius
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_minDeltaRadius {this, "minDeltaRadius",2.0, " min dr for doublet"} |
|
private |
◆ m_minPt
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_minPt |
|
private |
◆ m_nMaxPhiSlice
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_nMaxPhiSlice {this, "nMaxPhiSlice",53, "used to calculate phi slices"} |
|
private |
◆ m_phiSliceWidth
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_phiSliceWidth {this, "phiSliceWidth",0, "initialised in loadSpacePoints function"} |
|
private |
◆ m_pixelDetEleCollKey
◆ m_pixelId
const PixelID* ActsTrk::GbtsSeedingTool::m_pixelId = nullptr |
|
private |
◆ m_pixelManager
◆ m_ptCoeff
Gaudi::Property<double> ActsTrk::GbtsSeedingTool::m_ptCoeff {this, "ptCoeff", 0.29997 * 1.9972 / 2.0, "~0.3*B/2 - assumes nominal field of 2*T"} |
|
private |
◆ m_PtMin
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_PtMin {this, "PtMin",1000.0, "pt limit used to caluclate triplet pT"} |
|
private |
◆ m_sigmaScattering
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_sigmaScattering |
|
private |
Initial value:{this, "sigmaScattering", 2,
"how many sigmas of scattering angle should be considered"}
Definition at line 93 of file GbtsSeedingTool.h.
◆ m_tripletD0Max
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_tripletD0Max {this, "tripletD0Max",4.0, " D0 cut for triplets"} |
|
private |
◆ m_tripletPtMin
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_tripletPtMin {this, "tripletPtMin",m_PtMin * m_tripletPtMinFrac, "Limit on triplet pt"} |
|
private |
◆ m_tripletPtMinFrac
Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_tripletPtMinFrac {this, "tripletPtMinFrac",0.3, "used to caluclate triplet pt"} |
|
private |
◆ m_useClusterWidth
Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useClusterWidth {this, "useClusterWidth",false, "bool for use of cluster width in loadSpacePoints function"} |
|
private |
◆ m_useEtaBinning
Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useEtaBinning {this, "useEtaBinning",true, "bool to use eta binning from geometry structure"} |
|
private |
The documentation for this class was generated from the following files:
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
def retrieve(aClass, aKey=None)
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
void setVertexZ(float vertex)
#define ATH_MSG_VERBOSE(x)
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
size_type wafer_hash_max() const
int layer_disk(const Identifier &id) const
int eta_module(const Identifier &id) const
unsigned int DetectorIDHashType
@ detector ID element hash
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements : via Identifier
void setQuality(float seedQuality)
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
virtual Identifier identify() const override final
identifier of this detector element (inline)
const_pointer_type cptr()