53 if (muonSegment &&
common()->controller()->muonEDMPrinterTool()) {
55 l << QString(temp.c_str());
58 if (
m_segment&&
common()->controller()->printVerboseInfoOnSingleSelection()) {
59 l <<
" ===== dump =====";
62 l << QString(s.str().c_str()).split(
'\n');
77 std::vector < const Trk::MeasurementBase * >::const_iterator tsos_iter, tsos_end(
m_segment->containedMeasurements().end());
78 for (tsos_iter =
m_segment->containedMeasurements().begin(); tsos_iter != tsos_end; ++tsos_iter) {
107 m_hitInfoStatus =
VP1TrackSummary::countHits(
m_segment,
m_nhits_pixel,
m_nhits_sct,
m_nhits_trt,
m_nhits_muon_phi,
m_nhits_rpc,
m_nhits_mdt,
m_nhits_tgc,
m_nhits_csc,
m_nhits_mm,
m_nhits_stgc) ? 1 : 0;
114 m_points =
new std::vector< Amg::Vector3D >;
116 const bool muonsegment = it!=itE;
121 double radius = ( muonsegment ? 1000.0 : 150.0 );
123 double xOffset(0),yOffset(0),zOffset(0);
128 xOffset = radius*cos(
phi)*sin(
theta);
129 yOffset = radius*sin(
phi)*sin(
theta);
130 zOffset = radius*cos(
theta);
137 Amg::Vector3D pointA(globalPos.x()-xOffset,globalPos.y()-yOffset,globalPos.z()-zOffset);
138 Amg::Vector3D pointB(globalPos.x()+xOffset,globalPos.y()+yOffset,globalPos.z()+zOffset);
140 bool hasnonmdtchamber(
false);
141 bool outsidechamber, success;
143 for (;it!=itE;++it) {
145 !
common()->muonChamberProjectionHelper()->isKnownMDTChamber(*it)) {
146 hasnonmdtchamber =
true;
152 collHandle()->
message(
"Error: Something we wrong with clipLineSegmentToMDTChamber");
155 if (outsidechamber) {
162 if (hasnonmdtchamber) {
Scalar phi() const
phi method
Scalar theta() const
theta method
bool clipLineSegmentToMDTChamber(const GeoPVConstLink &mdtChamber, Amg::Vector3D &pointA, Amg::Vector3D &pointB, bool &outsidechamber, const double &extradist=0.0)
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
This is the common class for 3D segments used in the muon spectrometer.
void registerTouchedMuonChamber(const GeoPVConstLink &) const
If not earlier, touched muon chambers must me registered at latest when this method is invoked.
const std::set< GeoPVConstLink > & touchedMuonChambers() const
virtual void visibleStateChanged()
override if need to take action in this case.
friend class TrackCollHandleBase
TrackHandleBase(TrackCollHandleBase *)
QStringList baseInfo() const
virtual const MuonGM::MuonReadoutElement * getMuonReadoutElement(const Trk::RIO_OnTrack &mb) const
TrackCollHandleBase * collHandle() const
TrackSysCommonData * common() const
virtual ~TrackHandle_TrkSegment()
void currentMaterialChanged()
std::vector< Amg::Vector3D > * m_points
void ensureInitSubSysHitInfo() const
int m_hitInfoStatus
-1: uninitialized, 0: not present, 1: present.
const Trk::Segment * m_segment
void visibleStateChanged()
override if need to take action in this case.
unsigned m_nhits_muon_phi
QStringList clicked() const
Called when user selects the node (stringlist is displayed in messagebox).
const std::vector< Amg::Vector3D > * provide_pathInfoPoints()
TrackHandle_TrkSegment(TrackCollHandleBase *, const Trk::Segment *)
void ensureTouchedMuonChambersInitialised() const
MuonChamberProjectionHelper * muonChamberProjectionHelper() const
TrackSystemController * controller() const
Muon::MuonEDMPrinterTool * muonEDMPrinterTool() const
This class is the pure abstract base class for all fittable tracking measurements.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Base class for all TrackSegment implementations, extends the common MeasurementBase.
void messageVerbose(const QString &) const
void message(const QString &) const
void messageDebug(const QString &) const
static bool hasMuonGeometry()
static bool countHits(const Trk::Track *, unsigned &nPixelHits, unsigned &nSCTHits, unsigned &nTRTHits, unsigned &nhits_muon_phi, unsigned &nhits_rpc, unsigned &nhits_mdt, unsigned &nhits_tgc, unsigned &nhits_csc, unsigned &nhits_mm, unsigned &nhits_stgc)
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
@ loc2
generic first and second local coordinate