CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/Alignment/MuonAlignmentAlgorithms/src/MuonDT2ChamberResidual.cc

Go to the documentation of this file.
00001 #include "Alignment/MuonAlignmentAlgorithms/interface/MuonDT2ChamberResidual.h"
00002 
00003 void MuonDT2ChamberResidual::addResidual(const TrajectoryStateOnSurface *tsos, const TransientTrackingRecHit *hit) {
00004   DetId id = hit->geographicalId();
00005 
00006   LocalPoint hitChamberPos = m_chamberAlignable->surface().toLocal(m_globalGeometry->idToDet(id)->toGlobal(hit->localPosition()));
00007   LocalPoint tsosChamberPos = m_chamberAlignable->surface().toLocal(m_globalGeometry->idToDet(id)->toGlobal(tsos->localPosition()));
00008 
00009   double residual = tsosChamberPos.y() - hitChamberPos.y();  // residual is track minus hit
00010   double weight = 1. / hit->localPositionError().xx();  // weight linear fit by hit-only local error (yes, xx: layer x is chamber y)
00011   double layerPosition = tsosChamberPos.z();  // the layer's position in the chamber's coordinate system
00012 
00013   m_numHits++;
00014 
00015   // "x" is the layerPosition, "y" is the residual (this is a linear fit to residual versus layerPosition)
00016   m_residual_1 += weight;
00017   m_residual_x += weight * layerPosition;
00018   m_residual_y += weight * residual;
00019   m_residual_xx += weight * layerPosition * layerPosition;
00020   m_residual_xy += weight * layerPosition * residual;
00021 
00022   // "x" is the layerPosition, "y" is chamberx (this is a linear fit to chamberx versus layerPosition)
00023   m_trackx_1 += weight;
00024   m_trackx_x += weight * layerPosition;
00025   m_trackx_y += weight * tsosChamberPos.x();
00026   m_trackx_xx += weight * layerPosition * layerPosition;
00027   m_trackx_xy += weight * layerPosition * tsosChamberPos.x();
00028 
00029   // "x" is the layerPosition, "y" is chambery (this is a linear fit to chambery versus layerPosition)
00030   m_tracky_1 += weight;
00031   m_tracky_x += weight * layerPosition;
00032   m_tracky_y += weight * tsosChamberPos.y();
00033   m_tracky_xx += weight * layerPosition * layerPosition;
00034   m_tracky_xy += weight * layerPosition * tsosChamberPos.y();
00035 
00036   m_localIDs.push_back(id);
00037   m_localResids.push_back(tsos->localPosition().x() - hit->localPosition().x());
00038   m_individual_x.push_back(layerPosition);
00039   m_individual_y.push_back(residual);
00040   m_individual_weight.push_back(weight);
00041 }