13#include "GaudiKernel/IToolSvc.h"
14#include "CLHEP/Units/SystemOfUnits.h"
20 const std::string& name,
21 const IInterface* parent ) :
22 base_class (
type, name, parent )
37 return StatusCode::SUCCESS;
44 return StatusCode::SUCCESS;
51 ATH_MSG_DEBUG(
"Total number of AFP ToF hits read in = " << hitContainer->size());
57 my_trainBars[theHit->trainID()].push_back(theHit);
59 catch (
const std::out_of_range& outOfRange) {
60 ATH_MSG_WARNING(
"Bar with station outside expected range. Aborting track reconstruction.");
70 return StatusCode::SUCCESS;
77 return StatusCode::SUCCESS;
81 std::list<AFPTDBasicToolTrack> reconstructedTracks;
83 std::vector<const xAOD::AFPToFHit*> my_trainBars[4];
88 ATH_MSG_DEBUG(
"Number of AFP ToF hits in each train = " << my_trainBars[0].
size()<<
", "<<my_trainBars[1].
size()<<
", "<<my_trainBars[2].
size()<<
", "<<my_trainBars[3].
size());
92 nlohmann::json dataTLP;
93 bool dataTLP_init{
false};
95 for (
int k=0; k<4; k++)
97 unsigned int TrSize = my_trainBars[k].size();
100 unsigned int TrSat = 0;
103 for (
unsigned int l=0; l<TrSize; l++)
127 return StatusCode::FAILURE;
130 if( TrSize!=TrSat) TrTime /= weight;
132 ATH_MSG_DEBUG(
"Track reconstruction complete: stationID = " + std::to_string(
m_stationID) +
", train time = " + std::to_string(TrTime) +
", train size = " + std::to_string(TrSize));
133 reconstructedTracks.emplace_back(
m_stationID,k,TrTime, TrSize, TrSat);
135 for(
unsigned int l=0; l<TrSize; l++) theTrack.
addBar(my_trainBars[k].at(l));
143 saveToXAOD(track, outputContainer, hitContainer);
144 return StatusCode::SUCCESS;
150 auto *track = containerToFill->push_back(std::make_unique<xAOD::AFPToFTrack>());
159 ATH_MSG_DEBUG(
"Track time: (time="<<track->trainTime()<<
", size="<<track->trainSize()<<
", train id="<<track->trainID()<<
") station: (st="<<track->stationID()<<
")");
163 track->addBar(barLink);
165 ATH_MSG_DEBUG(
"bar time="<<theHit->time()<<
" bar in train ="<<theHit->barInTrainID()<<
", trin id ="<<theHit->trainID()<<
")");
#define ATH_MSG_WARNING(x)
#define CHECK(...)
Evaluate an expression and check for errors.
size_t size() const
Number of registered mappings.
Class storing information about alignment.
double barTimeOffset() const
Time offset for this particular bar.
double barWeight() const
Weight for this particular bar.
ElementLink implementation for ROOT usage.
bool toContainedElement(BaseConstReference container, ElementType element)
Set link to point to given element (slowest).
virtual bool isValid() override final
Can the handle be successfully dereferenced?