Loading [MathJax]/jax/input/TeX/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
MuonValR4::PatternVisualizationTool Class Reference

#include <PatternVisualizationTool.h>

Inheritance diagram for MuonValR4::PatternVisualizationTool:
Collaboration diagram for MuonValR4::PatternVisualizationTool:

Public Types

using LabeledSegmentSet = std::unordered_set< const xAOD::MuonSegment * >
 

Public Member Functions

virtual StatusCode initialize () override final
 
virtual StatusCode finalize () override final
 
virtual void visualizeBucket (const EventContext &ctx, const MuonR4::SpacePointBucket &bucket, const std::string &extraLabel) const override final
 
virtual void visualizeBucket (const EventContext &ctx, const MuonR4::SpacePointBucket &bucket, const std::string &extraLabel, PrimitiveVec &&extraPaints) const override final
 
virtual void visualizeSeed (const EventContext &ctx, const MuonR4::SegmentSeed &seed, const std::string &extraLabel) const override final
 
virtual void visualizeSeed (const EventContext &ctx, const MuonR4::SegmentSeed &seed, const std::string &extraLabel, PrimitiveVec &&extraPaints) const override final
 
virtual void visualizeAccumulator (const EventContext &ctx, const MuonR4::HoughPlane &accumulator, const Acts::HoughTransformUtils::HoughAxisRanges &axisRanges, const MaximumVec &maxima, const std::string &extraLabel) const override final
 
virtual void visualizeAccumulator (const EventContext &ctx, const MuonR4::HoughPlane &accumulator, const Acts::HoughTransformUtils::HoughAxisRanges &axisRanges, const MaximumVec &maxima, const std::string &extraLabel, PrimitiveVec &&extraPaints) const override final
 
virtual void visualizeSegment (const EventContext &ctx, const MuonR4::Segment &segment, const std::string &extraLabel) const override final
 
virtual void visualizeSegment (const EventContext &ctx, const MuonR4::Segment &segment, const std::string &extraLabel, PrimitiveVec &&extraPaints) const override final
 
virtual LabeledSegmentSet getLabeledSegments (const std::vector< const MuonR4::SpacePoint * > &hits) const override final
 Returns whether the hit has been used on the labeled segments we refer to (e.g. More...
 
virtual LabeledSegmentSet getLabeledSegments (const std::vector< const xAOD::UncalibratedMeasurement * > &hits) const override final
 
virtual bool isLabeled (const MuonR4::SpacePoint &hit) const override final
 Fetches all labeled (e.g. More...
 
virtual bool isLabeled (const xAOD::UncalibratedMeasurement &hit) const override final
 
template<class SpacePointType >
const SpacePointdrawHit (const SpacePointType &hit, PrimitiveVec &primitives, std::array< double, 4 > &canvasDim, const unsigned int view, unsigned int fillStyle) const
 

Private Types

using SegLink_t = ElementLink< xAOD::MuonSegmentContainer >
 
using SegLinkVec_t = std::vector< SegLink_t >
 
using SegLinkDecor_t = SG::AuxElement::ConstAccessor< SegLinkVec_t >
 

Private Member Functions

void closeSummaryCanvas () const
 Closes the summary canvas & closes the associated ROOT file. More...
 
std::unique_ptr< TCanvas > makeCanvas (const EventContext &ctx, const std::array< double, 4 > &canvasDim, const int view) const
 Create a new Canvas & draw the underlying frame. More...
 
void saveCanvas (const EventContext &ctx, const Identifier &chambId, TCanvas &canvas, const std::string &extraLabel) const
 Saves the Canvas as pdf & also into the ROOT file. More...
 
template<class SpacePointType >
bool drawHits (const MuonR4::SpacePointBucket &bucket, const std::vector< SpacePointType > &hitsToDraw, PrimitiveVec &primitivesToPush, std::array< double, 4 > &canvasDim, unsigned int view) const
 Translates the Spacepoint information into TObjects that are dawn on the canvas & evaluates the size of the box surrounding the event. More...
 
template<class SpacePointType >
const MuonR4::SpacePointdrawHit (const SpacePointType &hit, PrimitiveVec &primitives, std::array< double, 4 > &canvasDim, const unsigned int view, unsigned int fillStyle) const
 Converts a Hit into a particular TBox/ TEllipse for drawing. More...
 
template<class SpacePointType >
void writeChi2 (const MuonR4::SegmentFit::Parameters &pars, const std::vector< SpacePointType > &hits, PrimitiveVec &primitivesToPush, const double legX=0.2, double startLegY=0.8, const double endLegY=0.3) const
 Writes the chi2 of the hits onto the Canvas. More...
 
void drawPrimitives (const TCanvas &can, PrimitiveVec &primitives) const
 Draw the various primitives onto the Canvas. More...
 
void paintSimHits (const EventContext &ctx, const xAOD::MuonSegment &truthSeg, PrimitiveVec &primitives, const int view) const
 Paints the truth sim hits associated with the segment. More...
 

Private Attributes

Gaudi::Property< unsigned int > m_canvasLimit {this, "CanvasLimits", 5000}
 Maximum canvases to draw. More...
 
Gaudi::Property< bool > m_saveSinglePDFs {this, "saveSinglePDFs", false}
 If set to true each canvas is saved into a dedicated pdf file. More...
 
Gaudi::Property< bool > m_saveSummaryPDF {this, "saveSummaryPDF", false}
 If set to true a summary Canvas is created. More...
 
Gaudi::Property< std::string > m_allCanName {this, "AllCanvasName", "AllPatternPlots"}
 Name of the summary canvas & the ROOT file to save the monitoring plots. More...
 
Gaudi::Property< std::string > m_canvasPrefix {this, "CanvasPreFix", ""}
 Prefix of the individual canvas file names <MANDATORY>
More...
 
Gaudi::Property< bool > m_displayBucket {this, "displayBucket", true}
 Display the surrounding hits from the bucket not part of the seed. More...
 
Gaudi::Property< double > m_canvasExtraScale {this, "CanvasExtraScale" , 1.5}
 Extra safety margin to zoom out from the Canvas. More...
 
Gaudi::Property< bool > m_accumlIsEta {this, "AccumulatorsInEtaPlane", true}
 Swtich toggling whether the accumulator view are in the eta or phi plane. More...
 
Gaudi::Property< bool > m_doEtaBucketViews {this,"doEtaBucketViews", true}
 Switch to visualize the eta view of the bucket event. More...
 
Gaudi::Property< bool > m_doPhiBucketViews {this,"doPhiBucketViews", true}
 Switch to visualize the phi view of the bucket event. More...
 
Gaudi::Property< bool > m_paintTruthHits {this, "paintTruthHits", false}
 Switch to visualize the truth hits
More...
 
Gaudi::Property< std::string > m_AtlasLabel {this, "AtlasLabel", "Internal"}
 ATLAS label (Internal / Prelimnary / Simulation) More...
 
Gaudi::Property< std::string > m_sqrtSLabel {this, "SqrtSLabel", "14"}
 Centre of mass energy label. More...
 
Gaudi::Property< std::string > m_lumiLabel {this, "LumiLabel", ""}
 Luminosity label. More...
 
SG::ReadHandleKeyArray< xAOD::UncalibratedMeasurementContainerm_prepContainerKeys {this, "PrdContainer", {}}
 Declare dependency on the prep data containers. More...
 
Gaudi::Property< std::set< std::string > > m_truthSegLinks {this, "TruthSegDecors", {}}
 List of truth segment links to fetch. More...
 
SG::ReadDecorHandleKeyArray< xAOD::UncalibratedMeasurementContainerm_truthLinkDecorKeys {this, "LinkDecorKeys", {}}
 Declaration of the dependency on the decorations. More...
 
std::vector< SegLinkDecor_tm_truthLinkDecors {}
 
Gaudi::Property< unsigned > m_canvasWidth {this, "CanvasWidth", 800}
 
Gaudi::Property< unsigned > m_canvasHeight {this, "CanvasHeight", 600}
 
Gaudi::Property< bool > m_displayOnlyTruth {this, "displayTruthOnly", false}
 
const MuonGMR4::MuonDetectorManagerm_detMgr {nullptr}
 pointer to the Detector manager More...
 
SG::ReadHandleKey< ActsGeometryContextm_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
 Geometry context key to retrieve the alignment. More...
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 Service Handle to the IMuonIdHelperSvc. More...
 
std::unique_ptr< TCanvas > m_allCan ATLAS_THREAD_SAFE {}
 
std::unique_ptr< TFile > m_outFile ATLAS_THREAD_SAFE {}
 
std::atomic< unsigned int > m_canvCounter ATLAS_THREAD_SAFE {0}
 how many canvases have been visualized More...
 

Static Private Attributes

static std::mutex s_mutex {}
 

Detailed Description

Definition at line 29 of file PatternVisualizationTool.h.

Member Typedef Documentation

◆ LabeledSegmentSet

Definition at line 79 of file PatternVisualizationTool.h.

◆ SegLink_t

Definition at line 213 of file PatternVisualizationTool.h.

◆ SegLinkDecor_t

Definition at line 215 of file PatternVisualizationTool.h.

◆ SegLinkVec_t

Definition at line 214 of file PatternVisualizationTool.h.

Member Function Documentation

◆ closeSummaryCanvas()

void MuonValR4::PatternVisualizationTool::closeSummaryCanvas ( ) const
private

Closes the summary canvas & closes the associated ROOT file.

Definition at line 709 of file PatternVisualizationTool.cxx.

709  {
710  if (!m_outFile) return;
711  ATH_MSG_INFO("Close summary pdf & root file "<<m_allCanName);
712  if (m_allCan) {
713  m_allCan->cd();
714  m_allCan->SaveAs((m_allCanName +".pdf]").c_str());
715  m_allCan.reset();
716  }
717  m_outFile.reset();
718  }

◆ drawHit() [1/2]

template<class SpacePointType >
const MuonR4::SpacePoint* MuonValR4::PatternVisualizationTool::drawHit ( const SpacePointType &  hit,
PrimitiveVec primitives,
std::array< double, 4 > &  canvasDim,
const unsigned int  view,
unsigned int  fillStyle 
) const
private

Converts a Hit into a particular TBox/ TEllipse for drawing.

If the hit provides information that's requested for that view. The underlying space pointer is returned and the dimensions of the canvas are updated, if the drawing was succesful

Parameters
hitReference to the hit to draw
primitivesVector into which the generated object is pushed
canvasDimArray encoding the canvas dimensions [0] -> low x; [1] -> high x, [2] -> low y, [3] -> high y
viewDraw the hit either in the eta or phi view,
fillStyleStandard fill style for the box e.g. full.

◆ drawHit() [2/2]

template<class SpacePointType >
const SpacePoint* MuonValR4::PatternVisualizationTool::drawHit ( const SpacePointType &  hit,
PrimitiveVec primitives,
std::array< double, 4 > &  canvasDim,
const unsigned int  view,
unsigned int  fillStyle 
) const

Don't draw any hit which is not participating in the view

Update the fill style accrodingly

Definition at line 517 of file PatternVisualizationTool.cxx.

519  {
520 
521  static_assert(std::is_same_v<SpacePointType, SpacePoint> ||
522  std::is_same_v<SpacePointType, CalibratedSpacePoint>, "Only usual & calibrated space points are supported");
524  if ((view == objViewEta && !hit.measuresEta()) || (view == objViewPhi && !hit.measuresPhi())) {
525  return nullptr;
526  }
527 
528  if (hit.type() != xAOD::UncalibMeasType::Other) {
529  canvasDim[Edges::yLow] = std::min(canvasDim[Edges::yLow], hit.positionInChamber()[view] - hit.driftRadius());
530  canvasDim[Edges::yHigh] = std::max(canvasDim[Edges::yHigh], hit.positionInChamber()[view] + hit.driftRadius());
531  canvasDim[Edges::zLow] = std::min(canvasDim[Edges::zLow], hit.positionInChamber().z() - hit.driftRadius());
532  canvasDim[Edges::zHigh] = std::max(canvasDim[Edges::zHigh], hit.positionInChamber().z() + hit.driftRadius());
533  }
534 
535  const SpacePoint* underlyingSp{nullptr};
537  constexpr int invalidCalibFill = 3305;
538  if constexpr (std::is_same_v<SpacePointType, SpacePoint>) {
539  underlyingSp = &hit;
540  if (hit.type() == xAOD::UncalibMeasType::MdtDriftCircleType) {
541  const auto* dc = static_cast<const xAOD::MdtDriftCircle*>(hit.primaryMeasurement());
543  fillStyle = invalidCalibFill;
544  }
545  }
546  } else if constexpr(std::is_same_v<SpacePointType, CalibratedSpacePoint>) {
547  underlyingSp = hit.spacePoint();
548  if (hit.fitState() == CalibratedSpacePoint::State::Valid) {
549  fillStyle = fullFilling;
550  } else if (hit.fitState() == CalibratedSpacePoint::State::FailedCalib) {
551  fillStyle = invalidCalibFill;
552  } else {
553  fillStyle = hatchedFilling;
554  }
555  }
556  switch(hit.type()) {
558  const auto* dc = static_cast<const xAOD::MdtDriftCircle*>(underlyingSp->primaryMeasurement());
559  primitives.push_back(drawDriftCircle(hit.positionInChamber(), dc->readoutElement()->innerTubeRadius(),
560  kBlack, hollowFilling));
561 
562  const int circColor = isLabeled(*dc) ? truthColor : kBlue;
563  primitives.push_back(drawDriftCircle(hit.positionInChamber(), hit.driftRadius(), circColor, fillStyle));
564  break;
566  const auto* meas{static_cast<const xAOD::RpcMeasurement*>(underlyingSp->primaryMeasurement())};
567  const int boxColor = isLabeled(*meas) ? truthColor : kGreen +2;
568  const double boxWidth = 0.5*std::sqrt(12)*underlyingSp->uncertainty()[view];
569  primitives.push_back(drawBox(hit.positionInChamber(), boxWidth, 0.5*meas->readoutElement()->gasGapPitch(),
570  boxColor, fillStyle));
571  break;
573  const auto* meas{static_cast<const xAOD::TgcStrip*>(underlyingSp->primaryMeasurement())};
574  const int boxColor = isLabeled(*meas) ? truthColor : kCyan + 2;
575  const double boxWidth = 0.5*std::sqrt(12)*underlyingSp->uncertainty()[view];
576  primitives.push_back(drawBox(hit.positionInChamber(), boxWidth, 0.5*meas->readoutElement()->gasGapPitch(),
577  boxColor, fillStyle));
578  break;
580  const auto* meas{static_cast<const xAOD::MMCluster*>(underlyingSp->primaryMeasurement())};
581  const int boxColor = isLabeled(*meas) ? truthColor : kAquamarine;
582  const double boxWidth = 0.5*Gaudi::Units::mm;
583  primitives.push_back(drawBox(hit.positionInChamber(), boxWidth, 10.*Gaudi::Units::mm,
584  boxColor, fillStyle));
585  break;
587  break;
588  } default:
589  ATH_MSG_WARNING("Please implement proper drawings of the new small wheel.. "<<__FILE__<<":"<<__LINE__);
590  break;
591  }
592  return underlyingSp;
593  }

◆ drawHits()

template<class SpacePointType >
bool MuonValR4::PatternVisualizationTool::drawHits ( const MuonR4::SpacePointBucket bucket,
const std::vector< SpacePointType > &  hitsToDraw,
PrimitiveVec primitivesToPush,
std::array< double, 4 > &  canvasDim,
unsigned int  view 
) const
private

Translates the Spacepoint information into TObjects that are dawn on the canvas & evaluates the size of the box surrounding the event.

Returns true if at least 2 objects were created.

Parameters
bucketSpacePoint bucket from which the hits are taken. If the <DisplayBucket> is set true, the hits that were not in the subset are also painted with hollow filling
hitsToDrawPrimary hit collection to draw which are drawn with fullFillStyle
primitivesToPushOutput vector into which the painting objects are pushed_back
canvasDimArray encoding the canvas dimensions [0] -> low x; [1] -> high x, [2] -> low y, [3] -> high y
viewEither the eta or the phi view?

Definition at line 596 of file PatternVisualizationTool.cxx.

600  {
601 
602  canvasDim[Edges::yLow] = canvasDim[Edges::zLow] = 100. *Gaudi::Units::m;
603  canvasDim[Edges::yHigh] = canvasDim[Edges::zHigh] = -100. *Gaudi::Units::m;
604 
605  SpacePointSet drawnPoints{};
606  for (const SpacePointType& hit : hitsToDraw) {
607  drawnPoints.insert(drawHit(*hit, primitives, canvasDim, view, fullFilling));
608  }
609  if (m_displayBucket) {
610  for (const SpacePointBucket::value_type& hit : bucket) {
611  // Don't redraw the other points
612  if (drawnPoints.count(hit.get())) {
613  continue;
614  }
615  drawHit(*hit, primitives, canvasDim, view, hollowFilling);
616  }
617  }
618 
619  // adapt the draw range to make sure any detector elements we wish to display
620  // are included
621  for (auto & prim : primitives){
622  TBox* theBox = dynamic_cast<TBox*>(prim.get());
623  if (theBox){
624  canvasDim[Edges::zLow] = std::min(canvasDim[Edges::zLow], theBox->GetY1());
625  canvasDim[Edges::zHigh] = std::max(canvasDim[Edges::zHigh], theBox->GetY2());
626  }
627  }
628 
629  double width = (canvasDim[Edges::yHigh] - canvasDim[Edges::yLow])*m_canvasExtraScale;
630  double height = (canvasDim[Edges::zHigh] - canvasDim[Edges::zLow])*m_canvasExtraScale;
631  if (height > width) width = height;
632  else height = width;
633 
634  const double midPointX = 0.5 * (canvasDim[Edges::yHigh] + canvasDim[Edges::yLow]);
635  const double midPointY = 0.5 * (canvasDim[Edges::zHigh] + canvasDim[Edges::zLow]);
636  canvasDim[Edges::yLow] = midPointX - 0.5 * width;
637  canvasDim[Edges::zLow] = midPointY - 0.5 * height;
638  canvasDim[Edges::yHigh] = midPointX + 0.5 * width;
639  canvasDim[Edges::zHigh] = midPointY + 0.5 * height;
640  return drawnPoints.size() - drawnPoints.count(nullptr) > 1;
641  }

◆ drawPrimitives()

void MuonValR4::PatternVisualizationTool::drawPrimitives ( const TCanvas &  can,
PrimitiveVec primitives 
) const
private

Draw the various primitives onto the Canvas.

If a TLine is amongst them it's automatically adjusted to fit the canvas ranges

Parameters
canvasReference to the canvas to draw the primitives on
prmitivesPrimitives to draw onto the Canvas

Definition at line 139 of file PatternVisualizationTool.cxx.

139  {
140  const double yLow = can.GetPad(0)->GetUymin();
141  const double yHigh = can.GetPad(0)->GetUymax();
142  for (auto& prim : primitives) {
143  const TObject &primRef = *prim;
144  if (typeid(primRef) == typeid(TLine)){
145  TLine* line = static_cast<TLine*>(prim.get());
146  const Amg::Vector3D linePoint{line->GetX1(), line->GetY1(), 0.};
147  const Amg::Vector3D lineDir = Amg::Vector3D{(line->GetX2() - line->GetX1()) / (line->GetY2() - line->GetY1()), 1.,0.}.unit();
148 
149  const Amg::Vector3D newHigh = linePoint + Amg::intersect<3>(linePoint, lineDir, Amg::Vector3D::UnitY(), yHigh).value_or(0.) * lineDir;
150  const Amg::Vector3D newLow = linePoint + Amg::intersect<3>(linePoint, lineDir, Amg::Vector3D::UnitY(), yLow).value_or(0.) * lineDir;
151  line->SetX1(newLow.x());
152  line->SetY1(newLow.y());
153  line->SetX2(newHigh.x());
154  line->SetY2(newHigh.y());
155  }
156  prim->Draw();
157  }
158 
159  }

◆ finalize()

StatusCode MuonValR4::PatternVisualizationTool::finalize ( )
finaloverridevirtual

Definition at line 102 of file PatternVisualizationTool.cxx.

102  {
104  return StatusCode::SUCCESS;
105  }

◆ getLabeledSegments() [1/2]

LabeledSegmentSet MuonValR4::PatternVisualizationTool::getLabeledSegments ( const std::vector< const MuonR4::SpacePoint * > &  hits) const
finaloverridevirtual

Returns whether the hit has been used on the labeled segments we refer to (e.g.

truth or data Zµµ)

Parameters
hitsVector of hits to search

Definition at line 117 of file PatternVisualizationTool.cxx.

117  {
118  std::vector<const xAOD::UncalibratedMeasurement*> measurements{};
119  measurements.reserve(2* hits.size());
120  for (const SpacePoint* hit: hits) {
121  measurements.push_back(hit->primaryMeasurement());
122  if(hit->secondaryMeasurement()) {
123  measurements.push_back(hit->secondaryMeasurement());
124  }
125  }
126  return getLabeledSegments(measurements);
127  }

◆ getLabeledSegments() [2/2]

LabeledSegmentSet MuonValR4::PatternVisualizationTool::getLabeledSegments ( const std::vector< const xAOD::UncalibratedMeasurement * > &  hits) const
finaloverridevirtual

Definition at line 128 of file PatternVisualizationTool.cxx.

128  {
129  LabeledSegmentSet truthSegs{};
130  for (const xAOD::UncalibratedMeasurement* hit : hits) {
131  for (const SegLinkDecor_t& decor: m_truthLinkDecors) {
132  for (const SegLink_t& link : decor(*hit)) {
133  truthSegs.insert(*link);
134  }
135  }
136  }
137  return truthSegs;
138  }

◆ initialize()

StatusCode MuonValR4::PatternVisualizationTool::initialize ( )
finaloverridevirtual

Definition at line 60 of file PatternVisualizationTool.cxx.

60  {
61  if (m_canvasLimit > 0) {
62  if (m_canvasPrefix.value().empty() || m_allCanName.value().empty()) {
63  ATH_MSG_FATAL("Please define "<<m_canvasPrefix<<" && "<<m_allCanName);
64  return StatusCode::FAILURE;
65  }
66  if (m_saveSummaryPDF) {
67  m_allCan = std::make_unique<TCanvas>("all", "all", m_canvasWidth, m_canvasHeight);
68  m_allCan->SaveAs((m_allCanName +".pdf[").c_str());
69  }
70  m_outFile = std::make_unique<TFile>( (m_allCanName +".root").c_str(), "RECREATE");
71  if (m_saveSinglePDFs) {
72  std::filesystem::create_directories("Plots/" + m_canvasPrefix);
73  }
74  gROOT->SetStyle("ATLAS");
75  TStyle* plotStyle = gROOT->GetStyle("ATLAS");
76  plotStyle->SetOptTitle(0);
77  plotStyle->SetHistLineWidth(1.);
78  plotStyle->SetPalette(kViridis);
79  }
80  ATH_CHECK(m_prepContainerKeys.initialize(!m_truthSegLinks.empty()));
81  m_truthLinkDecorKeys.clear();
82  ATH_MSG_INFO("Hits linked to the following segment decorations are considered as truth");
83  for (const std::string& decorName : m_truthSegLinks) {
84  ATH_MSG_INFO(" **** "<<decorName);
85  if (decorName.empty()) {
86  ATH_MSG_FATAL("Decoration must not be empty");
87  return StatusCode::FAILURE;
88  }
90  m_truthLinkDecorKeys.emplace_back(key, decorName);
91  m_truthLinkDecors.push_back(SegLinkDecor_t{decorName});
92  }
93  }
94  ATH_CHECK(m_truthLinkDecorKeys.initialize());
95  m_displayOnlyTruth.value() &= !m_truthLinkDecorKeys.empty();
96 
97  ATH_CHECK(m_idHelperSvc.retrieve());
100  return StatusCode::SUCCESS;
101  }

◆ isLabeled() [1/2]

bool MuonValR4::PatternVisualizationTool::isLabeled ( const MuonR4::SpacePoint hit) const
finaloverridevirtual

Fetches all labeled (e.g.

by truth or Zµµ reco) segments containing at least one measurement in the list passed as arg

Parameters
hitReference to the hit to check

Definition at line 106 of file PatternVisualizationTool.cxx.

106  {
107  return isLabeled(*hit.primaryMeasurement()) ||
109  }

◆ isLabeled() [2/2]

bool MuonValR4::PatternVisualizationTool::isLabeled ( const xAOD::UncalibratedMeasurement hit) const
finaloverridevirtual

Definition at line 110 of file PatternVisualizationTool.cxx.

110  {
111  return std::find_if(m_truthLinkDecors.begin(), m_truthLinkDecors.end(),
112  [&hit](const SegLinkDecor_t& decor){
113  return !decor(hit).empty();
114  }) != m_truthLinkDecors.end();
115  }

◆ makeCanvas()

std::unique_ptr< TCanvas > MuonValR4::PatternVisualizationTool::makeCanvas ( const EventContext &  ctx,
const std::array< double, 4 > &  canvasDim,
const int  view 
) const
private

Create a new Canvas & draw the underlying frame.

Parameters
ctxEventContext to generate a unique canvas name
canvasDimArray encoding the canvas dimensions [0] -> low x; [1] -> high x, [2] -> low y, [3] -> high y
viewIs the canvas created in the context of an eta or phi visualization view The x-axis of the frame is adapted accordingly

Definition at line 719 of file PatternVisualizationTool.cxx.

721  {
722  std::stringstream canvasName{};
723  canvasName<<name()<<"_"<<ctx.eventID().event_number()<<"_"<<m_canvCounter;
724  ATH_MSG_VERBOSE("Create new canvas "<<canvasName.str()<<" "<<canvasDim);
725  auto canvas = std::make_unique<TCanvas>(canvasName.str().c_str(), "all", m_canvasWidth, m_canvasHeight);
726  canvas->cd();
727  TH1F* frame = canvas->DrawFrame(canvasDim[Edges::yLow],canvasDim[Edges::zLow], canvasDim[Edges::yHigh], canvasDim[Edges::zHigh]);
728  frame->GetXaxis()->SetTitle(std::format("{:} [mm]", view == objViewEta ? 'y' : 'x').c_str());
729  frame->GetYaxis()->SetTitle("z [mm]");
730  return canvas;
731  }

◆ paintSimHits()

void MuonValR4::PatternVisualizationTool::paintSimHits ( const EventContext &  ctx,
const xAOD::MuonSegment truthSeg,
PrimitiveVec primitives,
const int  view 
) const
private

Paints the truth sim hits associated with the segment.

Hits are drawn as orange arrows

Parameters
ctxEventContext to fetch the alignment constants
truthSegSegment made from truth sim hits
primitivesDrawing primitives to append the painted hits
viewDraw the hit either in the eta or phi view

Definition at line 248 of file PatternVisualizationTool.cxx.

251  {
252  if (!m_paintTruthHits) {
253  return;
254  }
255  auto truthHits = getMatchingSimHits(truthSeg);
256  const ActsGeometryContext* geoCtx{nullptr};
257  if (!SG::get(geoCtx, m_geoCtxKey, ctx).isSuccess()) {
258  return;
259  }
260  for (const xAOD::MuonSimHit* simHit : truthHits) {
261  const MuonGMR4::MuonReadoutElement* re = m_detMgr->getReadoutElement(simHit->identify());
262  const IdentifierHash hash = re->detectorType() == ActsTrk::DetectorType::Mdt ?
263  re->measurementHash(simHit->identify()) :
264  re->layerHash(simHit->identify());
265  const Amg::Transform3D trf = re->msSector()->globalToLocalTrans(*geoCtx) *
266  re->localToGlobalTrans(*geoCtx, hash);
267  const Amg::Vector3D locPos = trf * xAOD::toEigen(simHit->localPosition());
268  const Amg::Vector3D locDir = trf.linear() * xAOD::toEigen(simHit->localDirection());
269  primitives.push_back(drawArrow(locPos, locDir, truthColor, kDashed, view));
270  }
271  }

◆ saveCanvas()

void MuonValR4::PatternVisualizationTool::saveCanvas ( const EventContext &  ctx,
const Identifier chambId,
TCanvas &  canvas,
const std::string &  extraLabel 
) const
private

Saves the Canvas as pdf & also into the ROOT file.

If the canvase limit is reached, then the summary files are closed as well.

Parameters
ctxEventContext to fetch the event number
chambIdIdentifier of the chamber from which the hits are stemming from
primtivesList of objects to draw onto the canvas
extraLabelExternally passed extra label

Definition at line 732 of file PatternVisualizationTool.cxx.

735  {
736  // If an eta view closes the summary canvas & a phi view is processed
737  std::stringstream canvasName{};
738  canvasName<<m_canvasPrefix.value()<<"_"<<ctx.eventID().event_number()<<"_"<<(m_canvCounter++)<<"_"
739  <<m_idHelperSvc->stationNameString(chambId)
740  <<std::abs(m_idHelperSvc->stationEta(chambId))
741  <<(m_idHelperSvc->stationEta(chambId) >0 ? "A" : "C")
742  <<m_idHelperSvc->stationPhi(chambId);
743  if (!extraLabel.empty()) canvasName<<"_"<<removeNonAlphaNum(extraLabel);
744  ATH_MSG_VERBOSE("Save new plot "<<canvasName.str());
745  if (m_saveSinglePDFs) {
746  canvas.SaveAs(("Plots/" + m_canvasPrefix+"/" + canvasName.str()+".pdf").c_str());
747  }
748  if (m_saveSummaryPDF) {
749  canvas.SaveAs((m_allCanName+".pdf").c_str());
750  }
751  m_outFile->WriteObject(&canvas, canvasName.str().c_str());
752  }

◆ visualizeAccumulator() [1/2]

void MuonValR4::PatternVisualizationTool::visualizeAccumulator ( const EventContext &  ctx,
const MuonR4::HoughPlane accumulator,
const Acts::HoughTransformUtils::HoughAxisRanges &  axisRanges,
const MaximumVec &  maxima,
const std::string &  extraLabel 
) const
finaloverridevirtual

Definition at line 160 of file PatternVisualizationTool.cxx.

164  {
165  PrimitiveVec primitives{};
166  visualizeAccumulator(ctx, accumulator, axisRanges, maxima, extraLabel, std::move(primitives));
167  }

◆ visualizeAccumulator() [2/2]

void MuonValR4::PatternVisualizationTool::visualizeAccumulator ( const EventContext &  ctx,
const MuonR4::HoughPlane accumulator,
const Acts::HoughTransformUtils::HoughAxisRanges &  axisRanges,
const MaximumVec &  maxima,
const std::string &  extraLabel,
PrimitiveVec &&  extraPaints 
) const
finaloverridevirtual

Check whether the canvas limit has been reached

Enter the lock phase

Check again in case multiple threads are simultaneously in the lock phase

Definition at line 168 of file PatternVisualizationTool.cxx.

173  {
174 
176  if (m_canvCounter >= m_canvasLimit) {
177  return;
178  }
180  std::lock_guard guard{s_mutex};
182  //cppcheck-suppress identicalConditionAfterEarlyExit
183  if (m_canvCounter >= m_canvasLimit) {
184  return;
185  }
186  if (accumulator.getNonEmptyBins().empty()) {
187  ATH_MSG_WARNING("Hough accumulator is empty");
188  return;
189  }
190 
191  auto accHisto = std::make_unique<TH2F>("AccumulatorHisto", "histo",
192  accumulator.nBinsX(), axisRanges.xMin, axisRanges.xMax,
193  accumulator.nBinsY(), axisRanges.yMin, axisRanges.yMax);
194 
195  accHisto->SetDirectory(nullptr);
196  accHisto->GetXaxis()->SetTitle(std::format("tan#{}", m_accumlIsEta ? "theta" : "phi" ).c_str());
197  accHisto->GetYaxis()->SetTitle( std::string{m_accumlIsEta ? "y_{0}" : "x_{0}"}.c_str());
198 
199  std::vector<const SpacePoint*> spacePointsInAcc{};
200  for (const std::size_t bin : accumulator.getNonEmptyBins()) {
201  const auto [xBin, yBin] = accumulator.axisBins(bin);
202  const SpacePointSet& hitsInBin{accumulator.hitIds(xBin, yBin)};
203  spacePointsInAcc.insert(spacePointsInAcc.end(),hitsInBin.begin(), hitsInBin.end());
204  accHisto->SetBinContent(xBin+1, yBin+1, accumulator.nHits(bin));
205  }
206 
207  const LabeledSegmentSet truthSegs{getLabeledSegments(spacePointsInAcc)};
208  if (truthSegs.empty() && m_displayOnlyTruth) {
209  return;
210  }
211  for (const xAOD::MuonSegment* segment : truthSegs) {
212  const auto [pos, dir] = makeLine(localSegmentPars(*segment));
213  const double tan = m_accumlIsEta ? houghTanTheta(dir) : houghTanPhi(dir);
214  const double icept = pos[m_accumlIsEta ? objViewEta : objViewPhi];
215  auto truthMarker = std::make_unique<TMarker>(tan, icept, kFullCrossX);
216  truthMarker->SetMarkerColor(truthColor);
217  truthMarker->SetMarkerSize(8);
218  primitives.push_back(std::move(truthMarker));
219  primitives.push_back(drawLabel(std::format("true parameters: {:}",makeLabel(localSegmentPars(*segment))),0.2, 0.9));
220  }
221  for (const auto& maximum : maxima) {
222  auto maxMarker = std::make_unique<TMarker>(maximum.x, maximum.y, kFullTriangleUp);
223  maxMarker->SetMarkerColor(parLineColor);
224  maxMarker->SetMarkerSize(8);
225  primitives.push_back(std::move(maxMarker));
226  }
227  primitives.push_back(drawAtlasLabel(0.65, 0.26, m_AtlasLabel));
228  primitives.push_back(drawLumiSqrtS(0.65,0.21, m_sqrtSLabel, m_lumiLabel));
229 
230  std::stringstream canvasName{};
231  canvasName<<name()<<"_"<<ctx.eventID().event_number()<<"_"<<m_canvCounter;
232  auto canvas = std::make_unique<TCanvas>(canvasName.str().c_str(),
233  "can", m_canvasWidth, m_canvasHeight);
234  canvas->GetPad(0)->SetRightMargin(0.12);
235  canvas->GetPad(0)->SetTopMargin(0.12);
236  canvas->cd();
237  accHisto->Draw("COLZ");
238  drawPrimitives(*canvas, primitives);
239  primitives.push_back(std::move(accHisto));
240  saveCanvas(ctx, spacePointsInAcc.front()->identify(), *canvas, extraLabel);
241  primitives.push_back(std::move(canvas));
242 
243  primitives.clear();
244  if (m_canvasLimit <= m_canvCounter) {
246  }
247  }

◆ visualizeBucket() [1/2]

void MuonValR4::PatternVisualizationTool::visualizeBucket ( const EventContext &  ctx,
const MuonR4::SpacePointBucket bucket,
const std::string &  extraLabel 
) const
finaloverridevirtual

Definition at line 350 of file PatternVisualizationTool.cxx.

352  {
353  PrimitiveVec primitives{};
354  visualizeBucket(ctx, bucket, extraLabel, std::move(primitives));
355  }

◆ visualizeBucket() [2/2]

void MuonValR4::PatternVisualizationTool::visualizeBucket ( const EventContext &  ctx,
const MuonR4::SpacePointBucket bucket,
const std::string &  extraLabel,
PrimitiveVec &&  extraPaints 
) const
finaloverridevirtual

Check whether the canvas limit has been reached

Enter the lock phase

Check again in case multiple threads are simultaneously in the lock phase

reset the primitives

Definition at line 356 of file PatternVisualizationTool.cxx.

359  {
361  if (m_canvCounter >= m_canvasLimit) {
362  return;
363  }
365  std::lock_guard guard{s_mutex};
367  //cppcheck-suppress identicalConditionAfterEarlyExit
368  if (m_canvCounter >= m_canvasLimit) {
369  return;
370  }
371  std::array<double, 4> canvasDim{};
373  if (truthSegs.empty() && m_displayOnlyTruth) {
374  return;
375  }
376  const std::size_t parsedPrimSize{primitives.size()};
377  for (const int view : {objViewEta, objViewPhi}) {
378  if ((view == objViewEta && !m_doEtaBucketViews) ||
380  continue;
381  }
383  primitives.resize(parsedPrimSize);
384  if (!drawHits(bucket, bucket, primitives, canvasDim, view)) {
385  continue;
386  }
387  bool drawnTrueLabel{false};
388  for (const xAOD::MuonSegment* segment : truthSegs) {
389  primitives.push_back(drawLine(localSegmentPars(*segment), canvasDim[Edges::zLow], canvasDim[Edges::zHigh],
390  truthColor, kDotted, view));
391  if (!drawnTrueLabel) {
392  primitives.push_back(drawLabel(std::format("true parameters: {:}",makeLabel(localSegmentPars(*segment))),0.2, 0.89));
393  drawnTrueLabel = true;
394  }
395  paintSimHits(ctx,*segment, primitives, view);
396  }
397 
398  std::stringstream legendLabel{};
399  legendLabel<<"Event: "<<ctx.eventID().event_number()
400  <<", chamber : "<<m_idHelperSvc->toStringChamber(bucket.front()->identify())
401  <<",#"<<(view ==objViewEta ? "eta" : "phi")<<"-view";
402  if (!extraLabel.empty()) {
403  legendLabel<<" ("<<extraLabel<<")";
404  }
405  primitives.push_back(drawLabel(legendLabel.str(), 0.2, 0.96));
406 
407  primitives.push_back(drawAtlasLabel(0.75, 0.26, m_AtlasLabel));
408  primitives.push_back(drawLumiSqrtS(0.75,0.21, m_sqrtSLabel, m_lumiLabel));
409 
410  auto can = makeCanvas(ctx , canvasDim, view);
411  drawPrimitives(*can, primitives);
412 
413  saveCanvas(ctx, bucket.front()->identify(), *can, extraLabel);
414  }
415  if (m_canvasLimit <= m_canvCounter) {
416  primitives.clear();
418  }
419 
420  }

◆ visualizeSeed() [1/2]

void MuonValR4::PatternVisualizationTool::visualizeSeed ( const EventContext &  ctx,
const MuonR4::SegmentSeed seed,
const std::string &  extraLabel 
) const
finaloverridevirtual

Definition at line 272 of file PatternVisualizationTool.cxx.

274  {
275  PrimitiveVec primitives{};
276  visualizeSeed(ctx, seed, extraLabel, std::move(primitives));
277  }

◆ visualizeSeed() [2/2]

void MuonValR4::PatternVisualizationTool::visualizeSeed ( const EventContext &  ctx,
const MuonR4::SegmentSeed seed,
const std::string &  extraLabel,
PrimitiveVec &&  extraPaints 
) const
finaloverridevirtual

Check whether the canvas limit has been reached

Enter the lock phase

Check again in case multiple threads are simultaneously in the lock phase

reset the primitives

Definition at line 278 of file PatternVisualizationTool.cxx.

281  {
282 
284  if (m_canvCounter >= m_canvasLimit) {
285  return;
286  }
288  std::lock_guard guard{s_mutex};
290  //cppcheck-suppress identicalConditionAfterEarlyExit
291  if (m_canvCounter >= m_canvasLimit) {
292  return;
293  }
294 
295  const LabeledSegmentSet truthSegs{getLabeledSegments(seed.getHitsInMax())};
296  if (truthSegs.empty() && m_displayOnlyTruth) {
297  return;
298  }
299 
300  std::array<double, 4> canvasDim{};
301  const std::size_t parsedPrimSize{primitives.size()};
302  for (const int view : {objViewEta, objViewPhi}) {
303  if ((view == objViewEta && !m_doEtaBucketViews) ||
305  continue;
306  }
308  primitives.resize(parsedPrimSize);
309 
310  if (!drawHits(*seed.parentBucket(), seed.getHitsInMax(), primitives, canvasDim, view)) {
311  continue;
312  }
313  for (const xAOD::MuonSegment* segment : truthSegs) {
314  primitives.push_back(drawLine(localSegmentPars(*segment), canvasDim[Edges::zLow], canvasDim[Edges::zHigh],
315  truthColor, kDotted, view));
316  paintSimHits(ctx,*segment, primitives, view);
317  }
318  primitives.push_back(drawLine(seed.parameters(), canvasDim[Edges::zLow], canvasDim[Edges::zHigh],
319  parLineColor, kDashed, view));
320 
321  writeChi2(seed.parameters(), seed.getHitsInMax(), primitives);
322 
323  std::stringstream legendLabel{};
324  double chi2{0.};
325  unsigned nDoF{0};
326  legendLabel<<"Event: "<<ctx.eventID().event_number()<<", chamber : "<<m_idHelperSvc->toStringChamber(seed.getHitsInMax().front()->identify())
327  <<std::format(", #chi^{{2}} /nDoF: {:.2f} ({:})", chi2/std::max(1u, nDoF), std::max(1u,nDoF))
328  <<", #"<<(view ==objViewEta ? "eta" : "phi")<<"-view";
329 
330  if (!extraLabel.empty()) {
331  legendLabel<<" ("<<extraLabel<<")";
332  }
333  primitives.push_back(drawLabel(legendLabel.str(), 0.1, 0.96));
334  primitives.push_back(drawLabel(makeLabel(seed.parameters()),0.25, 0.89));
335 
336  auto canvas = makeCanvas(ctx, canvasDim, view);
337  primitives.push_back(drawAtlasLabel(0.75, 0.26, m_AtlasLabel));
338  primitives.push_back(drawLumiSqrtS(0.75,0.21, m_sqrtSLabel, m_lumiLabel));
339 
340  drawPrimitives(*canvas, primitives);
341 
342  saveCanvas(ctx, seed.getHitsInMax().front()->identify(), *canvas, extraLabel);
343  }
344  if (m_canvasLimit <= m_canvCounter) {
345  primitives.clear();
347  }
348  }

◆ visualizeSegment() [1/2]

void MuonValR4::PatternVisualizationTool::visualizeSegment ( const EventContext &  ctx,
const MuonR4::Segment segment,
const std::string &  extraLabel 
) const
finaloverridevirtual

Definition at line 422 of file PatternVisualizationTool.cxx.

424  {
425  PrimitiveVec primitives{};
426  visualizeSegment(ctx, segment,extraLabel, std::move(primitives));
427  }

◆ visualizeSegment() [2/2]

void MuonValR4::PatternVisualizationTool::visualizeSegment ( const EventContext &  ctx,
const MuonR4::Segment segment,
const std::string &  extraLabel,
PrimitiveVec &&  extraPaints 
) const
finaloverridevirtual

Check whether the canvas limit has been reached

Enter the lock phase

Check again in case multiple threads are simultaneously in the lock phase

reset the primitives

Definition at line 429 of file PatternVisualizationTool.cxx.

432  {
434  if (m_canvCounter >= m_canvasLimit) {
435  return;
436  }
438  std::lock_guard guard{s_mutex};
440  //cppcheck-suppress identicalConditionAfterEarlyExit
441  if (m_canvCounter >= m_canvasLimit) {
442  return;
443  }
444  const LabeledSegmentSet truthSegs{getLabeledSegments(segment.parent()->getHitsInMax())};
445  if (truthSegs.empty() && m_displayOnlyTruth) {
446  return;
447  }
448  Parameters segPars{};
449  {
450  const ActsGeometryContext* geoCtx{nullptr};
451  if (!SG::get(geoCtx, m_geoCtxKey, ctx).isSuccess()) {
452  return;
453  }
454  const Amg::Transform3D trf{segment.msSector()->globalToLocalTrans(*geoCtx)};
455  const Amg::Vector3D locPos = trf * segment.position();
456  const Amg::Vector3D locDir = trf.linear() * segment.direction();
457  segPars[toInt(ParamDefs::x0)] = locPos.x();
458  segPars[toInt(ParamDefs::y0)] = locPos.y();
459  segPars[toInt(ParamDefs::theta)] = locDir.theta();
460  segPars[toInt(ParamDefs::phi)] = locDir.phi();
461  segPars[toInt(ParamDefs::time)] = segment.segementT0();
462  }
463 
464  std::array<double, 4> canvasDim{};
465  const std::size_t parsedPrimSize{primitives.size()};
466  for (const int view : {objViewEta, objViewPhi}) {
467  if ((view == objViewEta && !m_doEtaBucketViews) ||
469  continue;
470  }
472  primitives.resize(parsedPrimSize);
473 
474  if (!drawHits(*segment.parent()->parentBucket(), segment.measurements(),
475  primitives, canvasDim, view)) {
476  continue;
477  }
478  for (const xAOD::MuonSegment* segment : truthSegs) {
479  primitives.push_back(drawLine(localSegmentPars(*segment), canvasDim[Edges::zLow], canvasDim[Edges::zHigh],
480  truthColor, kDotted, view));
481  paintSimHits(ctx,*segment, primitives, view);
482  }
483  writeChi2(segPars, segment.measurements(), primitives);
484 
485  primitives.push_back(drawAtlasLabel(0.75, 0.26, m_AtlasLabel));
486  primitives.push_back(drawLumiSqrtS(0.75,0.21, m_sqrtSLabel, m_lumiLabel));
487 
488  primitives.push_back(drawLine(segPars, canvasDim[Edges::zLow], canvasDim[Edges::zHigh],
489  parLineColor, kDashed, view));
490 
491 
492  std::stringstream legendLabel{};
493  const Identifier canvasId{segment.parent()->getHitsInMax().front()->identify()};
494  legendLabel<<"Event: "<<ctx.eventID().event_number() <<", chamber : "<<m_idHelperSvc->toStringChamber(canvasId)
495  <<std::format(", #chi^{{2}} /nDoF: {:.2f} ({:d})", segment.chi2() /std::max(1u, segment.nDoF()), segment.nDoF())
496  <<", #"<<(view ==objViewEta ? "eta" : "phi")<<"-view";
497 
498  if (!extraLabel.empty()) {
499  legendLabel<<" ("<<extraLabel<<")";
500  }
501  primitives.push_back(drawLabel(legendLabel.str(), 0.2, 0.96));
502  primitives.push_back(drawLabel(makeLabel(segPars),0.25, 0.91));
503 
504  auto canvas = makeCanvas(ctx, canvasDim, view);
505  drawPrimitives(*canvas, primitives);
506 
507  saveCanvas(ctx, canvasId, *canvas, extraLabel);
508  }
509  if (m_canvasLimit <= m_canvCounter) {
510  primitives.clear();
512  }
513  }

◆ writeChi2()

template<class SpacePointType >
void MuonValR4::PatternVisualizationTool::writeChi2 ( const MuonR4::SegmentFit::Parameters pars,
const std::vector< SpacePointType > &  hits,
PrimitiveVec primitivesToPush,
const double  legX = 0.2,
double  startLegY = 0.8,
const double  endLegY = 0.3 
) const
private

Writes the chi2 of the hits onto the Canvas.

Parameters
parsParameter for which the chi2 is evaluated,
hitsVector of hits to consider
primitivesToPushOutput vector into which the TLabels are pushed for later drawing
legXx-position of the list
statLegYy-position of the first entry. The next one is 0.05 apart
endLegy-position of the last shown entry. The routine aborts if there're more hits in the event.

Definition at line 643 of file PatternVisualizationTool.cxx.

647  {
648 
649  const auto [locPos, locDir] = makeLine(pars);
650  for (const SpacePointType& hit : hits) {
651  const SpacePoint* underlyingSp{nullptr};
652  double chi2{0.};
653  if constexpr( std::is_same_v<SpacePointType, Segment::MeasType>) {
654  underlyingSp = hit->spacePoint();
656  std::nullopt, *hit, msgStream());
657  } else {
658  underlyingSp = hit;
659  chi2 = SegmentFitHelpers::chiSqTerm(locPos, locDir, *hit, msgStream());
660  }
661 
662  const Identifier hitId = underlyingSp ? underlyingSp->identify(): Identifier{};
663  std::string legendstream{};
664  switch(hit->type()) {
666  const int driftSign{SegmentFitHelpers::driftSign(locPos, locDir, *hit, msgStream())};
667  const MdtIdHelper& idHelper{m_idHelperSvc->mdtIdHelper()};
668  legendstream = std::format("ML: {:1d}, TL: {:1d}, T: {:3d}, {:}",
669  idHelper.multilayer(hitId), idHelper.tubeLayer(hitId),
670  idHelper.tube(hitId), driftSign == -1 ? "L" : "R");
671  break;
673  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
674  legendstream= std::format("DR: {:1d}, DZ: {:1d}, GAP: {:1d}, #eta/#phi: {:}/{:}",
675  idHelper.doubletR(hitId), idHelper.doubletZ(hitId), idHelper.gasGap(hitId),
676  hit->measuresEta() ? "si" : "nay", hit->measuresPhi() ? "si" : "nay");
677  break;
679  const TgcIdHelper& idHelper{m_idHelperSvc->tgcIdHelper()};
680  legendstream = std::format("ST: {:}, GAP: {:1d}, #eta/#phi: {:}/{:}",
681  m_idHelperSvc->stationNameString(hitId), idHelper.gasGap(hitId),
682  hit->measuresEta() ? "si" : "nay", hit->measuresPhi() ? "si" : "nay");
683  break;
685  const MmIdHelper& idHelper{m_idHelperSvc->mmIdHelper()};
686  const auto* clus = static_cast<const xAOD::MMCluster*>(underlyingSp->primaryMeasurement());
687  const MuonGMR4::StripDesign& design = clus->readoutElement()->stripLayer(clus->layerHash()).design();
688  legendstream = std::format("ML: {:1d}, GAP: {:1d}, {:}", idHelper.multilayer(hitId), idHelper.gasGap(hitId),
689  !design.hasStereoAngle() ? "X" : design.stereoAngle() > 0 ? "U" :"V");
690  break;
692  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
693  legendstream = std::format("ML: {:1d}, GAP: {:1d}, #eta/#phi: {:}/{:}",
694  idHelper.multilayer(hitId), idHelper.gasGap(hitId),
695  hit->measuresEta() ? "si" : "nay", hit->measuresPhi() ? "si" : "nay");
696  break;
697  }
698  default:
699  break;
700  }
701  legendstream+=std::format(", #chi^{{2}}: {:.2f}", chi2);
702  primitives.push_back(drawLabel(legendstream, legX, startLegY, 14));
703  startLegY -= 0.05;
704  if (startLegY<= endLegY) {
705  break;
706  }
707  }
708  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/3]

std::unique_ptr<TCanvas> m_allCan MuonValR4::PatternVisualizationTool::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 232 of file PatternVisualizationTool.h.

◆ ATLAS_THREAD_SAFE [2/3]

std::unique_ptr<TFile> m_outFile MuonValR4::PatternVisualizationTool::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 233 of file PatternVisualizationTool.h.

◆ ATLAS_THREAD_SAFE [3/3]

std::atomic<unsigned int> m_canvCounter MuonValR4::PatternVisualizationTool::ATLAS_THREAD_SAFE {0}
mutableprivate

how many canvases have been visualized

Definition at line 235 of file PatternVisualizationTool.h.

◆ m_accumlIsEta

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_accumlIsEta {this, "AccumulatorsInEtaPlane", true}
private

Swtich toggling whether the accumulator view are in the eta or phi plane.

Just affects the axis labels

Definition at line 194 of file PatternVisualizationTool.h.

◆ m_allCanName

Gaudi::Property<std::string> MuonValR4::PatternVisualizationTool::m_allCanName {this, "AllCanvasName", "AllPatternPlots"}
private

Name of the summary canvas & the ROOT file to save the monitoring plots.

Definition at line 185 of file PatternVisualizationTool.h.

◆ m_AtlasLabel

Gaudi::Property<std::string> MuonValR4::PatternVisualizationTool::m_AtlasLabel {this, "AtlasLabel", "Internal"}
private

ATLAS label (Internal / Prelimnary / Simulation)

Definition at line 202 of file PatternVisualizationTool.h.

◆ m_canvasExtraScale

Gaudi::Property<double> MuonValR4::PatternVisualizationTool::m_canvasExtraScale {this, "CanvasExtraScale" , 1.5}
private

Extra safety margin to zoom out from the Canvas.

Definition at line 191 of file PatternVisualizationTool.h.

◆ m_canvasHeight

Gaudi::Property<unsigned> MuonValR4::PatternVisualizationTool::m_canvasHeight {this, "CanvasHeight", 600}
private

Definition at line 219 of file PatternVisualizationTool.h.

◆ m_canvasLimit

Gaudi::Property<unsigned int> MuonValR4::PatternVisualizationTool::m_canvasLimit {this, "CanvasLimits", 5000}
private

Maximum canvases to draw.

Definition at line 178 of file PatternVisualizationTool.h.

◆ m_canvasPrefix

Gaudi::Property<std::string> MuonValR4::PatternVisualizationTool::m_canvasPrefix {this, "CanvasPreFix", ""}
private

Prefix of the individual canvas file names <MANDATORY>

Definition at line 187 of file PatternVisualizationTool.h.

◆ m_canvasWidth

Gaudi::Property<unsigned> MuonValR4::PatternVisualizationTool::m_canvasWidth {this, "CanvasWidth", 800}
private

Definition at line 218 of file PatternVisualizationTool.h.

◆ m_detMgr

const MuonGMR4::MuonDetectorManager* MuonValR4::PatternVisualizationTool::m_detMgr {nullptr}
private

pointer to the Detector manager

Definition at line 225 of file PatternVisualizationTool.h.

◆ m_displayBucket

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_displayBucket {this, "displayBucket", true}
private

Display the surrounding hits from the bucket not part of the seed.

Definition at line 189 of file PatternVisualizationTool.h.

◆ m_displayOnlyTruth

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_displayOnlyTruth {this, "displayTruthOnly", false}
private

Definition at line 221 of file PatternVisualizationTool.h.

◆ m_doEtaBucketViews

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_doEtaBucketViews {this,"doEtaBucketViews", true}
private

Switch to visualize the eta view of the bucket event.

Definition at line 196 of file PatternVisualizationTool.h.

◆ m_doPhiBucketViews

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_doPhiBucketViews {this,"doPhiBucketViews", true}
private

Switch to visualize the phi view of the bucket event.

Definition at line 198 of file PatternVisualizationTool.h.

◆ m_geoCtxKey

SG::ReadHandleKey<ActsGeometryContext> MuonValR4::PatternVisualizationTool::m_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
private

Geometry context key to retrieve the alignment.

Definition at line 227 of file PatternVisualizationTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonValR4::PatternVisualizationTool::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Service Handle to the IMuonIdHelperSvc.

Definition at line 229 of file PatternVisualizationTool.h.

◆ m_lumiLabel

Gaudi::Property<std::string> MuonValR4::PatternVisualizationTool::m_lumiLabel {this, "LumiLabel", ""}
private

Luminosity label.

Definition at line 206 of file PatternVisualizationTool.h.

◆ m_paintTruthHits

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_paintTruthHits {this, "paintTruthHits", false}
private

Switch to visualize the truth hits

Definition at line 200 of file PatternVisualizationTool.h.

◆ m_prepContainerKeys

SG::ReadHandleKeyArray<xAOD::UncalibratedMeasurementContainer> MuonValR4::PatternVisualizationTool::m_prepContainerKeys {this, "PrdContainer", {}}
private

Declare dependency on the prep data containers.

Definition at line 208 of file PatternVisualizationTool.h.

◆ m_saveSinglePDFs

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_saveSinglePDFs {this, "saveSinglePDFs", false}
private

If set to true each canvas is saved into a dedicated pdf file.

Definition at line 180 of file PatternVisualizationTool.h.

◆ m_saveSummaryPDF

Gaudi::Property<bool> MuonValR4::PatternVisualizationTool::m_saveSummaryPDF {this, "saveSummaryPDF", false}
private

If set to true a summary Canvas is created.

ATTENTION: There can be only one summary PDF in an athena job

Definition at line 183 of file PatternVisualizationTool.h.

◆ m_sqrtSLabel

Gaudi::Property<std::string> MuonValR4::PatternVisualizationTool::m_sqrtSLabel {this, "SqrtSLabel", "14"}
private

Centre of mass energy label.

Definition at line 204 of file PatternVisualizationTool.h.

◆ m_truthLinkDecorKeys

SG::ReadDecorHandleKeyArray<xAOD::UncalibratedMeasurementContainer> MuonValR4::PatternVisualizationTool::m_truthLinkDecorKeys {this, "LinkDecorKeys", {}}
private

Declaration of the dependency on the decorations.

(Overwritten in initialize)

Definition at line 212 of file PatternVisualizationTool.h.

◆ m_truthLinkDecors

std::vector<SegLinkDecor_t> MuonValR4::PatternVisualizationTool::m_truthLinkDecors {}
private

Definition at line 216 of file PatternVisualizationTool.h.

◆ m_truthSegLinks

Gaudi::Property<std::set<std::string> > MuonValR4::PatternVisualizationTool::m_truthSegLinks {this, "TruthSegDecors", {}}
private

List of truth segment links to fetch.

Definition at line 210 of file PatternVisualizationTool.h.

◆ s_mutex

std::mutex MuonValR4::PatternVisualizationTool::s_mutex {}
staticprivate

Definition at line 231 of file PatternVisualizationTool.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
MuonValR4::PatternVisualizationTool::m_detMgr
const MuonGMR4::MuonDetectorManager * m_detMgr
pointer to the Detector manager
Definition: PatternVisualizationTool.h:225
MuonValR4::fullFilling
constexpr int fullFilling
Definition: VisualizationHelpers.h:21
MuonR4::PrimitiveVec
MuonValR4::IPatternVisualizationTool::PrimitiveVec PrimitiveVec
Definition: SegmentFittingAlg.cxx:59
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
MuonValR4::drawLine
std::unique_ptr< TLine > drawLine(const MuonR4::SegmentFit::Parameters &pars, const double lowEnd, const double highEnd, const int color=kRed+1, const int lineStyle=kDashed, const int view=objViewEta)
Draws a line from the segment fit parameters.
Definition: VisualizationHelpers.cxx:59
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
MuonGMR4::StripDesign::stereoAngle
double stereoAngle() const
Returns the value of the stereo angle.
xAOD::RpcMeasurement_v1
RpcMeasurement_v1: Class storing the geneic.
Definition: RpcMeasurement_v1.h:21
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::StripDesign
Definition: StripDesign.h:30
MuonValR4::PatternVisualizationTool::m_canvasWidth
Gaudi::Property< unsigned > m_canvasWidth
Definition: PatternVisualizationTool.h:218
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
MuonR4::SegmentFit::Parameters
AmgVector(toInt(ParamDefs::nPars)) Parameters
Definition: MuonHoughDefs.h:48
vtune_athena.format
format
Definition: vtune_athena.py:14
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonValR4::PatternVisualizationTool::SegLinkDecor_t
SG::AuxElement::ConstAccessor< SegLinkVec_t > SegLinkDecor_t
Definition: PatternVisualizationTool.h:215
xAOD::MMCluster_v1
Definition: MMCluster_v1.h:20
collListGuids.line
string line
Definition: collListGuids.py:77
MuonValR4::PatternVisualizationTool::s_mutex
static std::mutex s_mutex
Definition: PatternVisualizationTool.h:231
MuonValR4::PatternVisualizationTool::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Geometry context key to retrieve the alignment.
Definition: PatternVisualizationTool.h:227
TgcIdHelper
Definition: TgcIdHelper.h:50
MuonValR4::PatternVisualizationTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Service Handle to the IMuonIdHelperSvc.
Definition: PatternVisualizationTool.h:229
MuonValR4::PatternVisualizationTool::m_canvasPrefix
Gaudi::Property< std::string > m_canvasPrefix
Prefix of the individual canvas file names <MANDATORY>
Definition: PatternVisualizationTool.h:187
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
xAOD::TgcStrip_v1
Definition: TgcStrip_v1.h:19
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
xAOD::UncalibMeasType::MMClusterType
@ MMClusterType
MuonGMR4::MuonReadoutElement
The MuonReadoutElement is an abstract class representing the geometry representing the muon detector.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:38
bin
Definition: BinsDiffFromStripMedian.h:43
MuonValR4::drawBox
std::unique_ptr< TBox > drawBox(const Amg::Vector3D &boxCenter, const double boxWidth, const double boxHeight, const int color=kGreen+2, const int fillStyle=hollowFilling, const int view=objViewEta)
Creates a box for drawing, e.g strip measurements.
Definition: VisualizationHelpers.cxx:41
MuonValR4::PatternVisualizationTool::visualizeSegment
virtual void visualizeSegment(const EventContext &ctx, const MuonR4::Segment &segment, const std::string &extraLabel) const override final
Definition: PatternVisualizationTool.cxx:422
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
MuonValR4::PatternVisualizationTool::saveCanvas
void saveCanvas(const EventContext &ctx, const Identifier &chambId, TCanvas &canvas, const std::string &extraLabel) const
Saves the Canvas as pdf & also into the ROOT file.
Definition: PatternVisualizationTool.cxx:732
MuonR4::SpacePoint::secondaryMeasurement
const xAOD::UncalibratedMeasurement * secondaryMeasurement() const
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx:110
MuonR4::stripSmartPtr
HitVec stripSmartPtr(const SpacePointBucket &bucket)
Definition: SpacePointPerLayerSplitter.cxx:12
MuonValR4::PatternVisualizationTool::makeCanvas
std::unique_ptr< TCanvas > makeCanvas(const EventContext &ctx, const std::array< double, 4 > &canvasDim, const int view) const
Create a new Canvas & draw the underlying frame.
Definition: PatternVisualizationTool.cxx:719
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::ReadHandleKey< xAOD::UncalibratedMeasurementContainer >
MuonValR4::PatternVisualizationTool::m_truthLinkDecorKeys
SG::ReadDecorHandleKeyArray< xAOD::UncalibratedMeasurementContainer > m_truthLinkDecorKeys
Declaration of the dependency on the decorations.
Definition: PatternVisualizationTool.h:212
xAOD::UncalibMeasType::sTgcStripType
@ sTgcStripType
MuonR4::SegmentFitHelpers::chiSqTerm
double chiSqTerm(const Amg::Vector3D &posInChamber, const Amg::Vector3D &dirInChamber, const SpacePoint &measurement, MsgStream &msg)
Calculates the chi2 contribuation to a linear segment line from an uncalibrated measurement.
Definition: SegmentFitHelperFunctions.cxx:28
MuonR4::SegmentFit::makeLine
std::pair< Amg::Vector3D, Amg::Vector3D > makeLine(const Parameters &pars)
Returns the parsed parameters into an Eigen line parametrization.
Definition: SegmentFitterEventData.cxx:26
MuonValR4::PatternVisualizationTool::paintSimHits
void paintSimHits(const EventContext &ctx, const xAOD::MuonSegment &truthSeg, PrimitiveVec &primitives, const int view) const
Paints the truth sim hits associated with the segment.
Definition: PatternVisualizationTool.cxx:248
MuonValR4::drawLabel
std::unique_ptr< TLatex > drawLabel(const std::string &text, const double xPos, const double yPos, const unsigned int fontSize=18)
Create a TLatex label,.
Definition: VisualizationHelpers.cxx:32
MuonValR4::PatternVisualizationTool::m_prepContainerKeys
SG::ReadHandleKeyArray< xAOD::UncalibratedMeasurementContainer > m_prepContainerKeys
Declare dependency on the prep data containers.
Definition: PatternVisualizationTool.h:208
RpcIdHelper
Definition: RpcIdHelper.h:51
MuonValR4::PatternVisualizationTool::getLabeledSegments
virtual LabeledSegmentSet getLabeledSegments(const std::vector< const MuonR4::SpacePoint * > &hits) const override final
Returns whether the hit has been used on the labeled segments we refer to (e.g.
Definition: PatternVisualizationTool.cxx:117
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
MuonValR4::PatternVisualizationTool::m_displayOnlyTruth
Gaudi::Property< bool > m_displayOnlyTruth
Definition: PatternVisualizationTool.h:221
Muon::MdtStatusDriftTime
@ MdtStatusDriftTime
The tube produced a vaild measurement.
Definition: MdtDriftCircleStatus.h:34
MuonValR4::PatternVisualizationTool::m_canvasExtraScale
Gaudi::Property< double > m_canvasExtraScale
Extra safety margin to zoom out from the Canvas.
Definition: PatternVisualizationTool.h:191
MuonR4::SegmentFit::ParamDefs::phi
@ phi
xAOD::UncalibMeasType::TgcStripType
@ TgcStripType
MuonR4::SpacePoint::primaryMeasurement
const xAOD::UncalibratedMeasurement * primaryMeasurement() const
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx:107
MuonR4::houghTanPhi
double houghTanPhi(const Amg::Vector3D &v)
: Returns the hough tanPhi [x] / [z]
Definition: SegmentFitterEventData.cxx:18
MuonR4::SegmentFitHelpers::driftSign
int driftSign(const Amg::Vector3D &posInChamber, const Amg::Vector3D &dirInChamber, const SpacePoint &uncalibHit, MsgStream &msg)
Calculates whether a segement line travereses the tube measurement on the left (-1) or right (1) side...
Definition: SegmentFitHelperFunctions.cxx:235
MuonR4::SegmentFit::AxisDefs::t0
@ t0
MuonValR4::PatternVisualizationTool::visualizeSeed
virtual void visualizeSeed(const EventContext &ctx, const MuonR4::SegmentSeed &seed, const std::string &extraLabel) const override final
Definition: PatternVisualizationTool.cxx:272
PlotPulseshapeFromCool.can
can
Definition: PlotPulseshapeFromCool.py:91
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
MuonValR4::PatternVisualizationTool::visualizeAccumulator
virtual void visualizeAccumulator(const EventContext &ctx, const MuonR4::HoughPlane &accumulator, const Acts::HoughTransformUtils::HoughAxisRanges &axisRanges, const MaximumVec &maxima, const std::string &extraLabel) const override final
Definition: PatternVisualizationTool.cxx:160
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
MuonValR4::PatternVisualizationTool::m_sqrtSLabel
Gaudi::Property< std::string > m_sqrtSLabel
Centre of mass energy label.
Definition: PatternVisualizationTool.h:204
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
DeMoAtlasDataLoss.canvas
dictionary canvas
Definition: DeMoAtlasDataLoss.py:187
MuonValR4::PatternVisualizationTool::m_paintTruthHits
Gaudi::Property< bool > m_paintTruthHits
Switch to visualize the truth hits
Definition: PatternVisualizationTool.h:200
MuonValR4::PatternVisualizationTool::isLabeled
virtual bool isLabeled(const MuonR4::SpacePoint &hit) const override final
Fetches all labeled (e.g.
Definition: PatternVisualizationTool.cxx:106
MuonValR4::PatternVisualizationTool::drawHit
const MuonR4::SpacePoint * drawHit(const SpacePointType &hit, PrimitiveVec &primitives, std::array< double, 4 > &canvasDim, const unsigned int view, unsigned int fillStyle) const
Converts a Hit into a particular TBox/ TEllipse for drawing.
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:525
MdtIdHelper
Definition: MdtIdHelper.h:61
xAOD::Other
@ Other
MuonValR4::objViewPhi
constexpr int objViewPhi
Definition: VisualizationHelpers.h:26
MuonValR4::PatternVisualizationTool::writeChi2
void writeChi2(const MuonR4::SegmentFit::Parameters &pars, const std::vector< SpacePointType > &hits, PrimitiveVec &primitivesToPush, const double legX=0.2, double startLegY=0.8, const double endLegY=0.3) const
Writes the chi2 of the hits onto the Canvas.
Definition: PatternVisualizationTool.cxx:643
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonValR4::PatternVisualizationTool::m_doEtaBucketViews
Gaudi::Property< bool > m_doEtaBucketViews
Switch to visualize the eta view of the bucket event.
Definition: PatternVisualizationTool.h:196
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
MuonR4::SegmentFit::ParamDefs::x0
@ x0
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonValR4::PatternVisualizationTool::m_saveSinglePDFs
Gaudi::Property< bool > m_saveSinglePDFs
If set to true each canvas is saved into a dedicated pdf file.
Definition: PatternVisualizationTool.h:180
MuonValR4::PatternVisualizationTool::drawHits
bool drawHits(const MuonR4::SpacePointBucket &bucket, const std::vector< SpacePointType > &hitsToDraw, PrimitiveVec &primitivesToPush, std::array< double, 4 > &canvasDim, unsigned int view) const
Translates the Spacepoint information into TObjects that are dawn on the canvas & evaluates the size ...
Definition: PatternVisualizationTool.cxx:596
MuonValR4::PatternVisualizationTool::m_canvasLimit
Gaudi::Property< unsigned int > m_canvasLimit
Maximum canvases to draw.
Definition: PatternVisualizationTool.h:178
MuonR4::SegmentFit::ParamDefs::time
@ time
beamspotman.dir
string dir
Definition: beamspotman.py:623
MuonR4::SpacePoint
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h:18
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
MuonR4::SegmentFit::ParamDefs::y0
@ y0
ActsTrk::DetectorType::Mdt
@ Mdt
MuonSpectrometer.
MuonValR4::objViewEta
constexpr int objViewEta
ObjectView.
Definition: VisualizationHelpers.h:25
MuonValR4::PatternVisualizationTool::LabeledSegmentSet
std::unordered_set< const xAOD::MuonSegment * > LabeledSegmentSet
Definition: PatternVisualizationTool.h:79
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MuonR4::SegmentFit::toInt
constexpr int toInt(const ParamDefs p)
Definition: MuonHoughDefs.h:42
sTgcIdHelper
Definition: sTgcIdHelper.h:55
MuonValR4::PatternVisualizationTool::m_AtlasLabel
Gaudi::Property< std::string > m_AtlasLabel
ATLAS label (Internal / Prelimnary / Simulation)
Definition: PatternVisualizationTool.h:202
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonValR4::PatternVisualizationTool::m_saveSummaryPDF
Gaudi::Property< bool > m_saveSummaryPDF
If set to true a summary Canvas is created.
Definition: PatternVisualizationTool.h:183
python.copyTCTOutput.locDir
locDir
Definition: copyTCTOutput.py:113
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
MuonValR4::PatternVisualizationTool::m_lumiLabel
Gaudi::Property< std::string > m_lumiLabel
Luminosity label.
Definition: PatternVisualizationTool.h:206
MuonValR4::PatternVisualizationTool::m_doPhiBucketViews
Gaudi::Property< bool > m_doPhiBucketViews
Switch to visualize the phi view of the bucket event.
Definition: PatternVisualizationTool.h:198
MmIdHelper
Definition: MmIdHelper.h:54
MuonValR4::drawArrow
std::unique_ptr< TArrow > drawArrow(const Amg::Vector3D &start, const Amg::Vector3D &dir, const int color=kRed+1, const int lineStyle=kDashed, const int view=objViewEta)
Definition: VisualizationHelpers.cxx:22
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
MuonValR4::PatternVisualizationTool::drawPrimitives
void drawPrimitives(const TCanvas &can, PrimitiveVec &primitives) const
Draw the various primitives onto the Canvas.
Definition: PatternVisualizationTool.cxx:139
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::SpacePointSet
std::vector< const SpacePoint * > SpacePointSet
vector of space points
Definition: FitterTypes.h:38
MuonValR4::PatternVisualizationTool::closeSummaryCanvas
void closeSummaryCanvas() const
Closes the summary canvas & closes the associated ROOT file.
Definition: PatternVisualizationTool.cxx:709
re
const boost::regex re(r_e)
MuonValR4::PatternVisualizationTool::m_displayBucket
Gaudi::Property< bool > m_displayBucket
Display the surrounding hits from the bucket not part of the seed.
Definition: PatternVisualizationTool.h:189
MuonValR4::PatternVisualizationTool::m_canvasHeight
Gaudi::Property< unsigned > m_canvasHeight
Definition: PatternVisualizationTool.h:219
MuonValR4::hollowFilling
constexpr int hollowFilling
Filling codes for hollow / fullFilling / hatched filling.
Definition: VisualizationHelpers.h:20
MuonValR4::PatternVisualizationTool::m_truthLinkDecors
std::vector< SegLinkDecor_t > m_truthLinkDecors
Definition: PatternVisualizationTool.h:216
MuonR4::SegmentFit::makeLabel
std::string makeLabel(const Parameters &pars)
Definition: SegmentFitterEventData.cxx:50
MuonR4::SegmentFit::localSegmentPars
Parameters localSegmentPars(const xAOD::MuonSegment &seg)
Returns the localSegPars decoration from a xAODMuon::Segment.
Definition: SegmentFitterEventData.cxx:32
MuonGMR4::StripDesign::hasStereoAngle
bool hasStereoAngle() const
Returns whether a stereo angle is defined.
MuonValR4::drawDriftCircle
std::unique_ptr< TEllipse > drawDriftCircle(const Amg::Vector3D &center, const double radius, const int color=kViolet, const int fillStyle=hollowFilling)
Create a TEllipse for drawing a drift circle.
Definition: VisualizationHelpers.cxx:12
MuonValR4::drawAtlasLabel
std::unique_ptr< TLatex > drawAtlasLabel(const double xPos, const double yPos, const std::string &status="Internal")
Create a ATLAS label.
Definition: VisualizationHelpers.cxx:72
MuonValR4::PatternVisualizationTool::m_accumlIsEta
Gaudi::Property< bool > m_accumlIsEta
Swtich toggling whether the accumulator view are in the eta or phi plane.
Definition: PatternVisualizationTool.h:194
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
CaloLCW_tf.trf
trf
Definition: CaloLCW_tf.py:20
xAOD::MdtDriftCircle_v1
https://gitlab.cern.ch/atlas/athena/-/blob/master/MuonSpectrometer/MuonReconstruction/MuonRecEvent/Mu...
Definition: MdtDriftCircle_v1.h:21
MuonValR4::PatternVisualizationTool::visualizeBucket
virtual void visualizeBucket(const EventContext &ctx, const MuonR4::SpacePointBucket &bucket, const std::string &extraLabel) const override final
Definition: PatternVisualizationTool.cxx:350
xAOD::UncalibMeasType::RpcStripType
@ RpcStripType
xAOD::UncalibMeasType::MdtDriftCircleType
@ MdtDriftCircleType
MuonR4::houghTanTheta
double houghTanTheta(const Amg::Vector3D &v)
Returns the hough tanTheta [y] / [z].
Definition: SegmentFitterEventData.cxx:14
MuonValR4::PatternVisualizationTool::m_truthSegLinks
Gaudi::Property< std::set< std::string > > m_truthSegLinks
List of truth segment links to fetch.
Definition: PatternVisualizationTool.h:210
MuonR4::getMatchingSimHits
std::unordered_set< const xAOD::MuonSimHit * > getMatchingSimHits(const xAOD::MuonSegment &segment)
: Returns all sim hits matched to a xAOD::MuonSegment
Definition: MuonSimHitHelpers.cxx:24
MuonValR4::drawLumiSqrtS
std::unique_ptr< TLatex > drawLumiSqrtS(const double xPos, const double yPos, const std::string_view sqrtS="14", const std::string_view lumi="")
Create a luminosity sqrtS label.
Definition: VisualizationHelpers.cxx:76
MuonR4::SegmentFit::ParamDefs::theta
@ theta
MuonValR4::hatchedFilling
constexpr int hatchedFilling
Definition: VisualizationHelpers.h:22
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
MuonValR4::PatternVisualizationTool::m_allCanName
Gaudi::Property< std::string > m_allCanName
Name of the summary canvas & the ROOT file to save the monitoring plots.
Definition: PatternVisualizationTool.h:185
MuonGMR4::MuonDetectorManager::getReadoutElement
const MuonReadoutElement * getReadoutElement(const Identifier &id) const
Returns a generic Muon readout element.
drawFromPickle.view
view
Definition: drawFromPickle.py:294
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14