ATLAS Offline Software
Loading...
Searching...
No Matches
TrigFTF_GNNR3_Geometry Class Reference

#include <GNNR3_Geometry.h>

Collaboration diagram for TrigFTF_GNNR3_Geometry:

Public Member Functions

 TrigFTF_GNNR3_Geometry (const std::vector< TrigInDetSiLayer > &, const std::unique_ptr< GNNR3_FasTrackConnector > &)
 ~TrigFTF_GNNR3_Geometry ()
const TrigFTF_GNNR3_LayergetTrigFTF_GNNR3_LayerByKey (unsigned int) const
const TrigFTF_GNNR3_LayergetTrigFTF_GNNR3_LayerByIndex (int) const
int num_bins () const
unsigned int num_layers () const
const std::vector< std::pair< int, std::vector< int > > > & bin_groups () const

Protected Member Functions

const TrigFTF_GNNR3_LayeraddNewLayer (const TrigInDetSiLayer &, int)

Protected Attributes

float m_etaBinWidth
std::map< unsigned int, TrigFTF_GNNR3_Layer * > m_layMap
std::vector< TrigFTF_GNNR3_Layer * > m_layArray
int m_nEtaBins
std::vector< std::pair< int, std::vector< int > > > m_binGroups

Detailed Description

Definition at line 48 of file GNNR3_Geometry.h.

Constructor & Destructor Documentation

◆ TrigFTF_GNNR3_Geometry()

TrigFTF_GNNR3_Geometry::TrigFTF_GNNR3_Geometry ( const std::vector< TrigInDetSiLayer > & layers,
const std::unique_ptr< GNNR3_FasTrackConnector > & conn )

Definition at line 219 of file GNNR3_Geometry.cxx.

219 : m_nEtaBins(0) {
220
221 const float min_z0 = -168.0;
222 const float max_z0 = 168.0;
223
224 m_etaBinWidth = conn->m_etaBin;
225
226 for(const auto& layer : layers) {
227 const TrigFTF_GNNR3_Layer* pL = addNewLayer(layer, m_nEtaBins);
228 m_nEtaBins += pL->num_bins();
229 }
230
231 //calculating bin tables in the connector...
232 //calculate bin pairs for graph edge building
233
234 int lastBin1 = -1;
235
236 for(std::map<int, std::vector<GNNR3_FASTRACK_CONNECTION*> >::const_iterator it = conn->m_connMap.begin();it!=conn->m_connMap.end();++it) {
237
238 const std::vector<GNNR3_FASTRACK_CONNECTION*>& vConn = (*it).second;
239
240 for(std::vector<GNNR3_FASTRACK_CONNECTION*>::const_iterator cIt=vConn.begin();cIt!=vConn.end();++cIt) {
241
242 unsigned int src = (*cIt)->m_src;//n2 : the new connectors
243 unsigned int dst = (*cIt)->m_dst;//n1
244
245 const TrigFTF_GNNR3_Layer* pL1 = getTrigFTF_GNNR3_LayerByKey(dst);
246 const TrigFTF_GNNR3_Layer* pL2 = getTrigFTF_GNNR3_LayerByKey(src);
247
248 if (pL1==nullptr) {
249 std::cout << " skipping invalid dst layer " << dst << std::endl;
250 continue;
251 }
252 if (pL2==nullptr) {
253 std::cout << " skipping invalid src layer " << src << std::endl;
254 continue;
255 }
256 int nSrcBins = pL2->m_bins.size();
257 int nDstBins = pL1->m_bins.size();
258
259 (*cIt)->m_binTable.resize(nSrcBins*nDstBins, 0);
260
261 for(int b1=0;b1<nDstBins;b1++) {//loop over bins in Layer 1
262 for(int b2=0;b2<nSrcBins;b2++) {//loop over bins in Layer 2
263 if(!pL1->verifyBin(pL2, b1, b2, min_z0, max_z0)) continue;
264 int address = b1 + b2*nDstBins;
265 (*cIt)->m_binTable.at(address) = 1;
266
267 int bin1_idx = pL1->m_bins.at(b1);
268 int bin2_idx = pL2->m_bins.at(b2);
269
270 if(bin1_idx != lastBin1) {//adding a new group
271
272 std::vector<int> v2(1, bin2_idx);
273 m_binGroups.push_back(std::make_pair(bin1_idx, v2));
274 lastBin1 = bin1_idx;
275
276 }
277 else {//extend the last group
278 (*m_binGroups.rbegin()).second.push_back(bin2_idx);
279 }
280 }
281 }
282 }
283 }
284}
const TrigFTF_GNNR3_Layer * addNewLayer(const TrigInDetSiLayer &, int)
std::vector< std::pair< int, std::vector< int > > > m_binGroups
const TrigFTF_GNNR3_Layer * getTrigFTF_GNNR3_LayerByKey(unsigned int) const
bool verifyBin(const TrigFTF_GNNR3_Layer *, int, int, float, float) const
std::vector< int > m_bins

◆ ~TrigFTF_GNNR3_Geometry()

TrigFTF_GNNR3_Geometry::~TrigFTF_GNNR3_Geometry ( )

Definition at line 287 of file GNNR3_Geometry.cxx.

287 {
288 for(std::vector<TrigFTF_GNNR3_Layer*>::iterator it = m_layArray.begin();it!=m_layArray.end();++it) {
289 delete (*it);
290 }
291 m_layMap.clear();m_layArray.clear();
292}
std::map< unsigned int, TrigFTF_GNNR3_Layer * > m_layMap
std::vector< TrigFTF_GNNR3_Layer * > m_layArray

Member Function Documentation

◆ addNewLayer()

const TrigFTF_GNNR3_Layer * TrigFTF_GNNR3_Geometry::addNewLayer ( const TrigInDetSiLayer & l,
int bin0 )
protected

Definition at line 308 of file GNNR3_Geometry.cxx.

308 {
309
310 unsigned int layerKey = l.m_subdet;
311
312 float ew = m_etaBinWidth;
313
314 TrigFTF_GNNR3_Layer* pHL = new TrigFTF_GNNR3_Layer(l, ew, bin0);
315
316 m_layMap.insert(std::pair<unsigned int, TrigFTF_GNNR3_Layer*>(layerKey, pHL));
317 m_layArray.push_back(pHL);
318 return pHL;
319}
l
Printing final latex table to .tex output file.

◆ bin_groups()

const std::vector< std::pair< int, std::vector< int > > > & TrigFTF_GNNR3_Geometry::bin_groups ( ) const
inline

Definition at line 58 of file GNNR3_Geometry.h.

58{return m_binGroups;}

◆ getTrigFTF_GNNR3_LayerByIndex()

const TrigFTF_GNNR3_Layer * TrigFTF_GNNR3_Geometry::getTrigFTF_GNNR3_LayerByIndex ( int idx) const

Definition at line 302 of file GNNR3_Geometry.cxx.

302 {
303 return m_layArray.at(idx);
304}

◆ getTrigFTF_GNNR3_LayerByKey()

const TrigFTF_GNNR3_Layer * TrigFTF_GNNR3_Geometry::getTrigFTF_GNNR3_LayerByKey ( unsigned int key) const

Definition at line 294 of file GNNR3_Geometry.cxx.

294 {
295 std::map<unsigned int, TrigFTF_GNNR3_Layer*>::const_iterator it = m_layMap.find(key);
296 if(it == m_layMap.end()) {
297 return nullptr;
298 }
299 return (*it).second;
300}

◆ num_bins()

int TrigFTF_GNNR3_Geometry::num_bins ( ) const
inline

Definition at line 56 of file GNNR3_Geometry.h.

56{return m_nEtaBins;}

◆ num_layers()

unsigned int TrigFTF_GNNR3_Geometry::num_layers ( ) const
inline

Definition at line 57 of file GNNR3_Geometry.h.

57{return m_layArray.size();}

Member Data Documentation

◆ m_binGroups

std::vector<std::pair<int, std::vector<int> > > TrigFTF_GNNR3_Geometry::m_binGroups
protected

Definition at line 71 of file GNNR3_Geometry.h.

◆ m_etaBinWidth

float TrigFTF_GNNR3_Geometry::m_etaBinWidth
protected

Definition at line 64 of file GNNR3_Geometry.h.

◆ m_layArray

std::vector<TrigFTF_GNNR3_Layer*> TrigFTF_GNNR3_Geometry::m_layArray
protected

Definition at line 67 of file GNNR3_Geometry.h.

◆ m_layMap

std::map<unsigned int, TrigFTF_GNNR3_Layer*> TrigFTF_GNNR3_Geometry::m_layMap
protected

Definition at line 66 of file GNNR3_Geometry.h.

◆ m_nEtaBins

int TrigFTF_GNNR3_Geometry::m_nEtaBins
protected

Definition at line 69 of file GNNR3_Geometry.h.


The documentation for this class was generated from the following files: