ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
EFTracking
FPGATrackSim
FPGATrackSimHough
src
FPGATrackSimRoadUnionTool.cxx
Go to the documentation of this file.
1
// Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2
9
10
11
#include "
FPGATrackSimHough/FPGATrackSimRoadUnionTool.h
"
12
//one of the includes are needed below or all of them dont know for sure
13
#include "
FPGATrackSimObjects/FPGATrackSimTypes.h
"
14
#include "
FPGATrackSimObjects/FPGATrackSimConstants.h
"
15
#include "
FPGATrackSimConfTools/IFPGATrackSimEventSelectionSvc.h
"
16
#include "
FPGATrackSimObjects/FPGATrackSimHit.h
"
17
#include "
FPGATrackSimObjects/FPGATrackSimConstants.h
"
18
#include "
FPGATrackSimObjects/FPGATrackSimTowerInputHeader.h
"
19
#include "
FPGATrackSimMaps/IFPGATrackSimMappingSvc.h
"
20
#include "
FPGATrackSimMaps/FPGATrackSimPlaneMap.h
"
21
#include "
FPGATrackSimMaps/FPGATrackSimRegionMap.h
"
22
#include "
FPGATrackSimBanks/IFPGATrackSimBankSvc.h
"
23
#include "
FPGATrackSimBanks/FPGATrackSimSectorBank.h
"
24
#include "
FPGATrackSimHoughTransformTool.h
"
25
26
#include <sstream>
27
#include <cmath>
28
#include <algorithm>
29
30
FPGATrackSimRoadUnionTool::FPGATrackSimRoadUnionTool
(
const
std::string& algname,
const
std::string &name,
const
IInterface *ifc) :
31
AthAlgTool
(algname,name,ifc),
32
m_tools
(this)
33
{
34
declareProperty
(
"tools"
,
m_tools
,
"Array of FPGATrackSimRoadFinderTools"
);
35
}
36
37
38
StatusCode
FPGATrackSimRoadUnionTool::initialize
()
39
{
40
// Retrieve
41
ATH_MSG_INFO
(
"Using "
<<
m_tools
.size() <<
" tools"
);
42
ATH_CHECK
(
m_tools
.retrieve());
43
44
if
(
m_tools
.empty()) {
45
ATH_MSG_FATAL
(
"initialize() Tool list empty"
);
46
return
StatusCode::FAILURE;
47
}
48
return
StatusCode::SUCCESS;
49
}
50
51
StatusCode
FPGATrackSimRoadUnionTool::getRoads
(
const
std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits, std::vector<FPGATrackSimRoad> & roads)
52
{
53
ATH_CHECK
(
m_FPGATrackSimMapping
.retrieve());
54
55
// Create one "tower" per slice for this event.
56
if
(
m_slicedHitHeader
) {
57
for
(
unsigned
ireg = 0; ireg <
m_tools
.size(); ireg++) {
58
FPGATrackSimTowerInputHeader
tower =
FPGATrackSimTowerInputHeader
(ireg);
59
m_slicedHitHeader
->addTower(tower);
60
}
61
}
62
63
// We separately need to pass a vector of *pointers* to hit objects to the road finder tools.
64
// Makes a vector of slices that have a vector of hits assiociated with that slice
65
std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>> sliceHits(
m_tools
.size());
66
const
FPGATrackSimPlaneMap
*pmap =
nullptr
;
67
int
toolNum = 0;
//same as sliceNum
68
for
(
auto
&tool :
m_tools
) {
69
pmap =
m_FPGATrackSimMapping
->PlaneMap_1st(toolNum);
70
auto
*subrmap =
m_FPGATrackSimMapping
->SubRegionMap();
71
for
(
auto
& iHit:hits)
72
{
73
std::shared_ptr<FPGATrackSimHit> hitCopy = std::make_shared<FPGATrackSimHit>(*iHit);
74
pmap->
map
(*hitCopy);
75
if
((subrmap->isInRegion(tool->getSubRegion(), *hitCopy)) ||
m_noHitFilter
) {
76
// Do we really need to do both of these? can we make the tower class produce a vector of shared pointers?
77
if
(
m_slicedHitHeader
)
m_slicedHitHeader
->getTower(toolNum)->addHit(*hitCopy);
78
sliceHits[toolNum].push_back(hitCopy);
79
}
80
}
81
toolNum++;
82
}
83
roads.clear();
84
for
(
auto
& tool :
m_tools
)
85
{
86
std::vector<FPGATrackSimRoad>
r
;
87
ATH_CHECK
(tool->getRoads(sliceHits[tool->getSubRegion()],
r
, *
getTruthTracks
()));
88
roads.insert(roads.end(), std::make_move_iterator(
r
.begin()), std::make_move_iterator(
r
.end()));
89
}
90
91
92
return
StatusCode::SUCCESS;
93
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
FPGATrackSimConstants.h
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimHoughTransformTool.h
Implements road finding using a Hough transform.
FPGATrackSimPlaneMap.h
Maps physical layers to logical layers.
FPGATrackSimRegionMap.h
Maps ITK module indices to FPGATrackSim regions.
FPGATrackSimRoadUnionTool.h
Wrapper class to combine multiple road-finding tools.
FPGATrackSimSectorBank.h
This file declares a class that stores the module IDs of the sectors.
FPGATrackSimTowerInputHeader.h
FPGATrackSimTypes.h
IFPGATrackSimBankSvc.h
IFPGATrackSimEventSelectionSvc.h
IFPGATrackSimMappingSvc.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
FPGATrackSimPlaneMap
Definition
FPGATrackSimPlaneMap.h:62
FPGATrackSimPlaneMap::map
void map(FPGATrackSimHit &hit) const
Definition
FPGATrackSimPlaneMap.cxx:234
FPGATrackSimRoadUnionTool::FPGATrackSimRoadUnionTool
FPGATrackSimRoadUnionTool(const std::string &, const std::string &, const IInterface *)
Definition
FPGATrackSimRoadUnionTool.cxx:30
FPGATrackSimRoadUnionTool::m_slicedHitHeader
FPGATrackSimLogicalEventInputHeader * m_slicedHitHeader
Definition
FPGATrackSimRoadUnionTool.h:77
FPGATrackSimRoadUnionTool::initialize
virtual StatusCode initialize() override
Definition
FPGATrackSimRoadUnionTool.cxx:38
FPGATrackSimRoadUnionTool::m_tools
ToolHandleArray< IFPGATrackSimRoadFinderTool > m_tools
Definition
FPGATrackSimRoadUnionTool.h:73
FPGATrackSimRoadUnionTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition
FPGATrackSimRoadUnionTool.h:71
FPGATrackSimRoadUnionTool::getTruthTracks
std::vector< FPGATrackSimTruthTrack > const * getTruthTracks()
Definition
FPGATrackSimRoadUnionTool.h:51
FPGATrackSimRoadUnionTool::getRoads
StatusCode getRoads(const std::vector< std::shared_ptr< const FPGATrackSimHit > > &hits, std::vector< FPGATrackSimRoad > &roads, std::vector< FPGATrackSimTruthTrack > const &truthtracks)
Definition
FPGATrackSimRoadUnionTool.h:41
FPGATrackSimRoadUnionTool::m_noHitFilter
Gaudi::Property< bool > m_noHitFilter
Definition
FPGATrackSimRoadUnionTool.h:63
FPGATrackSimTowerInputHeader
Definition
FPGATrackSimTowerInputHeader.h:18
r
int r
Definition
globals.cxx:22
Generated on
for ATLAS Offline Software by
1.17.0