CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonTrackCSCChamberResidual.cc
Go to the documentation of this file.
1 /*
2  * $Id: MuonTrackCSCChamberResidual.cc,v 1.3 2011/11/02 19:58:38 khotilov Exp $
3  */
4 
6 //#include "Geometry/CSCGeometry/interface/CSCGeometry.h"
7 
8 
10  DetId chamberId, AlignableDetOrUnitPtr chamberAlignable)
11  : MuonChamberResidual(globalGeometry, navigator, chamberId, chamberAlignable)
12 {
14  align::GlobalVector zDirection(0., 0., 1.);
15  m_sign = m_globalGeometry->idToDet(m_chamberId)->toLocal(zDirection).z() > 0. ? 1. : -1.;
16 }
17 
18 
20 {
21  CSCDetId id(trk->id.rawId());
22 
23  CSCSegmentRef segmentCSC = seg->cscSegmentRef;
24  if (segmentCSC.get() != 0)
25  {
26  const CSCSegment* segment = segmentCSC.get();
27  m_numHits = segment->nRecHits();
28  m_ndof = segment->degreesOfFreedom();
29  m_chi2 = segment->chi2();
30  //std::cout<<"csc seg position = "<<segment->localPosition()<<" numhits="<<m_numHits<<" id: "<<id<<std::endl;
31  }
32 
33  align::LocalPoint l_seg(seg->x, seg->y, 0.);
34  align::LocalPoint l_trk(trk->x, trk->y, 0.);
35  //align::GlobalPoint g_seg = m_globalGeometry->idToDet(chamber)->toGlobal(l_seg);
36  //align::GlobalPoint g_trk = m_globalGeometry->idToDet(chamber)->toGlobal(l_trk);
37 
38  /*
39  double dphi = g_trk.phi() - g_seg.phi();
40  while (dphi > M_PI) dphi -= 2.*M_PI;
41  while (dphi < -M_PI) dphi += 2.*M_PI;
42  m_residual = - m_sign * g_trk.perp() * dphi; // coming from global, need to adjust the sign
43  std::cout<<"cscres="<<m_residual<<" dx="<<trk->x-seg->x<<" diff="<<trk->x-seg->x - m_residual<<std::endl;
44  */
45  m_residual = trk->x-seg->x;
46  m_residual_error = sqrt( pow(trk->xErr, 2) + pow(seg->xErr, 2) );
47  m_resslope = trk->dXdZ - seg->dXdZ;
48  m_resslope_error = sqrt( pow(trk->dXdZErr, 2) + pow(seg->dXdZErr, 2) );
49 
50  m_trackx = trk->x;
51  m_tracky = trk->y;
52  m_trackdxdz = trk->dXdZ;
53  m_trackdydz = trk->dYdZ;
54 
55  m_segx = seg->x;
56  m_segy = seg->y;
57  m_segdxdz = seg->dXdZ;
58  m_segdydz = seg->dYdZ;
59 
60  //double yresidual_error = sqrt( pow(trk->yErr, 2) + pow(seg->yErr, 2) );
61  //double yresslope_error = sqrt( pow(trk->dYdZErr, 2) + pow(seg->dYdZErr, 2) );
62  //std::cout<<"csc res "<<m_residual<<"+-"<<m_residual_error<<" "<<m_resslope<<"+-"<<m_resslope_error<<" "<<trk->y-seg->y<<"+-"<<yresidual_error<<" "<<trk->dYdZ - seg->dYdZ<<"+-"<<yresslope_error<<std::endl;
63  //std::cout<<"csc trk "<<m_trackx<<" "<<m_tracky<<" "<<m_trackdxdz<<" "<<m_trackdydz<<std::endl;
64  //std::cout<<"csc seg "<<m_segx<<" "<<m_segy<<" "<<m_segdxdz<<" "<<m_segdydz<<std::endl;
65 }
virtual void setSegmentResidual(const reco::MuonChamberMatch *, const reco::MuonSegmentMatch *)
MuonTrackCSCChamberResidual(edm::ESHandle< GlobalTrackingGeometry > globalGeometry, AlignableNavigator *navigator, DetId chamberId, AlignableDetOrUnitPtr chamberAlignable)
CSCSegmentRef cscSegmentRef
virtual int degreesOfFreedom() const
Degrees of freedom of the segment fit.
Definition: CSCSegment.h:61
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
int nRecHits() const
Definition: CSCSegment.h:67
T sqrt(T t)
Definition: SSEVec.h:18
Definition: DetId.h:18
double chi2() const
Chi2 of the segment fit.
Definition: CSCSegment.h:57
edm::ESHandle< GlobalTrackingGeometry > m_globalGeometry
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40