22 ATH_MSG_INFO (
"FPGATrackSimMergeOutputsAlg::initialize()");
36 for (
unsigned iregion = 0; iregion <
N; iregion++) {
37 regionsFound[iregion] =
false;
42 for (
unsigned ifile = 0; ifile < nfiles; ifile++) {
46 return StatusCode::FAILURE;
56 TBranch *dpb =
m_dataprep_tree->GetBranch(
"LogicalEventInputHeader_PostCluster");
59 return StatusCode::FAILURE;
71 for (
unsigned iregion = 0; iregion <
N; iregion++) {
72 m_trees[ifile][iregion] = (TTree*)(
m_files[ifile]->
Get(Form(
"FPGATrackSimLogicalEventTree_reg%d",iregion)));
76 else if (regionsFound[iregion]) {
77 ATH_MSG_ERROR(
"Found two files with region number " << iregion <<
" and I do not know which one to use!");
78 return StatusCode::FAILURE;
81 regionsFound[iregion] =
true;
85 TBranch *b =
m_trees[ifile][iregion]->GetBranch(
"LogicalEventOutputHeader");
88 return StatusCode::FAILURE;
92 m_trees[ifile][iregion]->SetBranchStatus(
"LogicalEventSecond*",0);
93 m_trees[ifile][iregion]->SetBranchStatus(
"LogicalEventFirstP*",0);
94 m_trees[ifile][iregion]->SetBranchStatus(
"LogicalEventSpace*",0);
95 m_trees[ifile][iregion]->SetBranchStatus(
"LogicalEventStrip*",0);
102 return StatusCode::FAILURE;
105 return StatusCode::SUCCESS;
111 const EventContext& ctx = getContext();
116 ATH_CHECK(FPGATracks_Handle.
record (std::make_unique<FPGATrackSimTrackCollection>()));
120 ATH_CHECK(FPGAHits_Handle.
record (std::make_unique<FPGATrackSimHitCollection>()));
122 for (
const auto & tower :
m_dataprep->towers()) {
123 const std::vector<FPGATrackSimHit> hits = tower.hits();
124 for (
auto& hit : hits) {
125 FPGAHits_Handle->push_back(std::make_unique<FPGATrackSimHit>(std::move(hit)));
130 for (
unsigned iregion = 0; iregion <
N; iregion++) {
131 if (!
m_trees[ivec][iregion])
continue;
133 ATH_MSG_ERROR(
"Tried reading in more events than the tree had available!");
134 return StatusCode::FAILURE;
138 std::vector<FPGATrackSimTrack>
const tracks =
m_eventOutputHeaders[ivec][iregion]->getFPGATrackSimTracks_1st();
140 for (
const auto &track : tracks) {
141 if (track.passedOR()) FPGATracks->push_back(track);
148 for (
const auto &track : *FPGATracks) {
153 return StatusCode::SUCCESS;
160 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
std::vector< FPGATrackSimTrack > FPGATrackSimTrackCollection
TGraphErrors * GetEntries(TH2F *histo)
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
unsigned long m_alltracks
std::vector< std::vector< FPGATrackSimLogicalEventOutputHeader * > > m_eventOutputHeaders
ToolHandle< FPGATrackSimOverlapRemovalTool > m_overlapRemovalTool
virtual StatusCode finalize() override
virtual StatusCode initialize() override
FPGATrackSimLogicalEventInputHeader * m_dataprep
std::vector< TFile * > m_files
unsigned long m_tracksPassOR
FPGATrackSimMergeOutputsAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::WriteHandleKey< FPGATrackSimHitCollection > m_FPGAHitKey
Gaudi::Property< std::vector< std::string > > m_inpaths
virtual StatusCode execute() override
std::vector< std::vector< TTree * > > m_trees
SG::WriteHandleKey< FPGATrackSimTrackCollection > m_FPGATrackKey
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
T * Get(TFile &f, const std::string &n, const std::string &dir="", const chainmap_t *chainmap=0, std::vector< std::string > *saved=0)
get a histogram given a path, and an optional initial directory if histogram is not found,...