31   auto props = this->getProperties();
 
   32   for( Gaudi::Details::PropertyBase* prop : props ) {
 
   33     if (prop->ownerTypeName()==this->type()) {
 
   34       ATH_MSG_DEBUG(
"Property:\t" << prop->name() << 
"\t : \t" << prop->toString());
 
   42   return StatusCode::SUCCESS;
 
   83                                  "; Z [mm] ; R [mm] ", 500, -2000, 2000, 500, 0, 500));
 
   86                                  "phi residual [mm]", 1000, -10, 10));
 
   88                                  "eta residual [mm]", 1000, -10, 10));
 
   91                                   "; R[mm]; phi residual [mm]", 1200, 0, 1200, 1000, -100, 100));
 
   93                                   "; R[mm]; eta residual [mm]", 1200, 0, 1200, 1000, -100, 100));
 
   96                                     "; R[mm]; phi scale", 1200, 0, 1200, 1000, -2, 2.0));
 
   98                                     "; R[mm]; eta scale", 1200, 0, 1200, 1000, -2.0, 2.0));
 
  101                                  "phiTrueBinShift", 
"phi TrueBinShift [mm]", 1000, -10, 10));
 
  103                                  "etaTrueBinShift", 
"eta TrueBinShift [mm]",1000, -10, 10));
 
  113                                  "ptDist", 
"pT [GeV]",400, 0, 100));
 
  115                                  "etaDist", 
"#eta",1000, -5, 5));
 
  119                                  "d0Dist", 
"d_{0} [mm]",120, -3.0, 3.0));
 
  121                                  "z0Dist", 
"z_{0} [mm]",400, -200.0, 200.0));
 
  123   return StatusCode::SUCCESS;
 
  161   return StatusCode::SUCCESS;
 
  184   setBinPlotsActive(
idx);
 
  187   m_ptDist[0]->Fill(std::abs(1/m_truthpars.qOverPt));
 
  188   m_etaDist[0]->Fill(1/m_truthpars.eta);
 
  189   m_phiDist[0]->Fill(1/m_truthpars.phi);
 
  190   m_d0Dist[0]->Fill(1/m_truthpars.d0);
 
  191   m_z0Dist[0]->Fill(1/m_truthpars.z0);
 
  193   if (m_binPlotsActive) {
 
  194     for (
auto& hit : 
data.hits) {
 
  195       m_phiShift_road->Fill(hit.phiShift);
 
  196       m_etaShift_road->Fill(hit.etaShift);
 
  197       m_phiShift2D_road->Fill(hit.phiShift, hit.hitptr->getR());
 
  198       m_etaShift2D_road->Fill(hit.etaShift, hit.hitptr->getR());
 
  202     for (
int i = 0; 
i < 2; 
i++) {
 
  204       if ((
i == 0)|| (
data.lyrCnt() >= m_binnedhits->getNLayers() - (
i - 1))) {
 
  206           m_ptDist[
i]->Fill(std::abs(1 / m_truthpars.qOverPt));
 
  207           m_etaDist[
i]->Fill(1 / m_truthpars.eta);
 
  208           m_phiDist[
i]->Fill(1 / m_truthpars.phi);
 
  209           m_d0Dist[
i]->Fill(1 / m_truthpars.d0);
 
  210           m_z0Dist[
i]->Fill(1 / m_truthpars.z0);
 
  216     std::vector<FPGATrackSimBinUtil::StoredHit> sorted_hits = 
data.hits;
 
  217     std::sort(sorted_hits.begin(), sorted_hits.end(),
 
  218               [](
const auto &hit1, 
const auto &hit2) {
 
  219                 return hit1.rzrad() < hit2.rzrad();
 
  224     m_bin_tree_bin = std::vector<unsigned>(
idx);
 
  226     for (
auto &hit : sorted_hits) {
 
  227       m_bin_tree_r.push_back(hit.hitptr->getR());
 
  228       m_bin_tree_z.push_back(hit.hitptr->getZ());
 
  229       m_bin_tree_id.push_back(hit.hitptr->getIdentifier());
 
  230       m_bin_tree_hash.push_back(hit.hitptr->getIdentifierHash());
 
  231       m_bin_tree_layer.push_back(hit.hitptr->getLayerDisk());
 
  232       m_bin_tree_side.push_back(hit.hitptr->getSide());
 
  233       m_bin_tree_etamod.push_back(hit.hitptr->getEtaModule());
 
  234       m_bin_tree_phimod.push_back(hit.hitptr->getPhiModule());
 
  235       m_bin_tree_dettype.push_back((
int)hit.hitptr->getDetType());
 
  236       m_bin_tree_detzone.push_back((
int)hit.hitptr->getDetectorZone());
 
  244     const std::vector<std::shared_ptr<const FPGATrackSimHit>> &
hits)
 
  246   m_inputHits->Fill(
hits.size());
 
  248   for (
auto &
step : m_binnedhits->getBinTool().steps()) {
 
  249     for (
auto bin : m_binnedhits->binnedHits()[
step->stepNum()])
 
  250       m_hitsPerStepBin[
step->stepNum()]->Fill(
bin.data().hitCnt);
 
  253   for (
auto bin :m_binnedhits->binnedHits()[m_binnedhits->getBinTool().lastStep()->stepNum()]) {
 
  254     for (
unsigned lyr = 0; lyr < m_binnedhits->getNLayers(); lyr++) {
 
  255       unsigned cnt = 
bin.data().hitsInLyr(lyr);
 
  256       m_hitsPerLayer->Fill(lyr, 
cnt);
 
  257       m_hitsPerLayer2D->Fill(lyr, 
cnt);
 
  260   m_binsFilled->Fill(m_binsFilledCnt);
 
  294 void FPGATrackSimLayerStudyTool::parseTruthInfo 
ATLAS_NOT_THREAD_SAFE(std::vector<FPGATrackSimTruthTrack> 
const & truthtracks) {
 
  295   ATH_MSG_DEBUG(
"In parseTruthInfo, truthtracks size = " << truthtracks.size());
 
  296   m_truthIsValid = 
false;
 
  301   if (truthtracks.size() == 0) 
return;
 
  304   m_truthpars = (truthtracks)[0].getPars();
 
  309   for (
auto &
step : m_binnedhits->getBinTool().steps()) {
 
  310     m_truthbin.push_back(
step->binIdx(m_truthparset));
 
  315     m_truthpars_hists[
i]->Fill(m_truthparset[
i]);
 
  320   ATH_MSG_DEBUG(
"parset:" << m_truthparset << 
" " << m_truthpars
 
  321                           << 
" ?= " << recovered << 
" closure:" 
  333   m_truth_tree_parset = std::vector<double>(m_truthparset);
 
  334   m_truth_tree->Fill();
 
  337   if (truthtracks.size() > 1) {
 
  338     for (
unsigned i = 0; 
i < truthtracks.size(); 
i++) {
 
  339       ATH_MSG_INFO(
"Multiple truth" << 
i << 
" of " << truthtracks.size()
 
  340                                     << 
" " << (truthtracks)[
i].getPars());
 
  346                             << 
" " << m_truthpars << 
" " << m_truthbin);
 
  349   if (!m_binnedhits->getBinTool().inRange(m_truthparset)) {
 
  350     ATH_MSG_INFO(
"Truth out of range because truth parset = " << m_truthparset << 
" wrt min = " << m_binnedhits->getBinTool().parMin() << 
", max = " << m_binnedhits->getBinTool().parMax());
 
  356   m_truthIsValid = 
true;
 
  357   for (
auto &
step : m_binnedhits->getBinTool().steps()) {
 
  358     if (!
step->validBinsFull()[m_truthbin[
step->stepNum()]]) {
 
  360                                                 << m_truthbin[
step->stepNum()]
 
  361                                                 << 
" : " << m_truthpars);
 
  362       std::vector<FPGATrackSimBinUtil::IdxSet> idxsets =
 
  364               std::vector<unsigned>({0, 1, 2, 3, 4}),
 
  365               m_truthbin[
step->stepNum()]);
 
  370       m_truthIsValid = 
false;