File indexing completed on 2024-04-06 11:56:50
0001
0002
0003
0004
0005 #include "Alignment/MuonAlignmentAlgorithms/interface/MuonTrackCSCChamberResidual.h"
0006
0007
0008 MuonTrackCSCChamberResidual::MuonTrackCSCChamberResidual(edm::ESHandle<GlobalTrackingGeometry> globalGeometry,
0009 AlignableNavigator *navigator,
0010 DetId chamberId,
0011 AlignableDetOrUnitPtr chamberAlignable)
0012 : MuonChamberResidual(globalGeometry, navigator, chamberId, chamberAlignable) {
0013 m_type = MuonChamberResidual::kCSC;
0014 align::GlobalVector zDirection(0., 0., 1.);
0015 m_sign = m_globalGeometry->idToDet(m_chamberId)->toLocal(zDirection).z() > 0. ? 1. : -1.;
0016 }
0017
0018 void MuonTrackCSCChamberResidual::setSegmentResidual(const reco::MuonChamberMatch *trk,
0019 const reco::MuonSegmentMatch *seg) {
0020 CSCDetId id(trk->id.rawId());
0021
0022 CSCSegmentRef segmentCSC = seg->cscSegmentRef;
0023 if (segmentCSC.get() != nullptr) {
0024 const CSCSegment *segment = segmentCSC.get();
0025 m_numHits = segment->nRecHits();
0026 m_ndof = segment->degreesOfFreedom();
0027 m_chi2 = segment->chi2();
0028
0029 }
0030
0031 align::LocalPoint l_seg(seg->x, seg->y, 0.);
0032 align::LocalPoint l_trk(trk->x, trk->y, 0.);
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 m_residual = trk->x - seg->x;
0044 m_residual_error = sqrt(pow(trk->xErr, 2) + pow(seg->xErr, 2));
0045 m_resslope = trk->dXdZ - seg->dXdZ;
0046 m_resslope_error = sqrt(pow(trk->dXdZErr, 2) + pow(seg->dXdZErr, 2));
0047
0048 m_trackx = trk->x;
0049 m_tracky = trk->y;
0050 m_trackdxdz = trk->dXdZ;
0051 m_trackdydz = trk->dYdZ;
0052
0053 m_segx = seg->x;
0054 m_segy = seg->y;
0055 m_segdxdz = seg->dXdZ;
0056 m_segdydz = seg->dYdZ;
0057
0058
0059
0060
0061
0062
0063 }