17 #include <GaudiKernel/StatusCode.h>
18 #include <nlohmann/json.hpp>
24 const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
25 for( Gaudi::Details::PropertyBase* prop : props ) {
26 if (prop->ownerTypeName()==this->type()) {
27 ATH_MSG_DEBUG(
"Property:\t" << prop->name() <<
"\t : \t" << prop->toString());
42 ATH_MSG_FATAL(
"Both lyrmap and layradii, these are mutually exclusive");
57 return StatusCode::SUCCESS;
83 const std::vector<std::shared_ptr<const FPGATrackSimHit>> &
hits) {
90 for (
auto &
bin :
step->validBinsFull()) {
99 for (
const std::shared_ptr<const FPGATrackSimHit> &hit :
hits) {
112 for (
const auto &hit :
116 bool writeHit =
true;
129 for (
unsigned lyr = 0; lyr < lyr_radii.size(); lyr++) {
131 if ((hit.rzrad() > lyr_radii[lyr].first)&&(hit.rzrad() < lyr_radii[lyr].second)) {
132 storedhit.
layer = lyr;
138 std::vector<double> rads;
139 for (
unsigned lyr = 0; lyr < lyr_radii.size(); lyr++) {
140 rads.push_back(lyr_radii[lyr].
first);
141 rads.push_back(lyr_radii[lyr].
second);
143 ATH_MSG_VERBOSE(
"Hit not in layer radii " <<
bin.idx() <<
" " << hit.rzrad() <<
" " << rads);
147 if (hit.hitptr->isMapped()) {
148 storedhit.
layer = hit.hitptr->getLayer();
163 <<
" binidx = " <<
bin.idx()
174 return StatusCode::SUCCESS;
191 if (hit.
layer != StoredHit::invalidLayer)
193 lyrhit |= (0x1 << hit.
layer);
198 return std::count_if(
hits.begin(),
hits.end(),[lyr](
auto& hit){return hit.layer==lyr;});
216 std::vector <std::set<unsigned> >());
218 std::map <unsigned,unsigned>());
222 for (
const auto &binelem :
data) {
223 std::vector<unsigned>
bin;
224 binelem.at(
"bin").get_to(
bin);
225 auto& lyrmap = binelem[
"lyrmap"];
231 for (
auto &lyrelem : lyrmap) {
233 lyrelem.at(
"lyr").get_to(lyr);
264 std::vector < std::pair<double,double> > ());
268 for (
const auto &binelem :
data) {
269 std::vector<unsigned>
bin;
270 binelem.at(
"bin").get_to(
bin);
276 auto& lyrradii = binelem[
"lyrradii"];
279 for (
auto &lyrelem : lyrradii) {
281 lyrelem.at(
"lyr").get_to(lyr);
282 std::vector<double> temp(2);
283 lyrelem.at(
"radii").get_to(temp);
284 m_lyr_radii[
bin].push_back(std::pair<double,double>(temp[0],temp[1]));