CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions
MuonDT13ChamberResidual Class Reference

#include <MuonDT13ChamberResidual.h>

Inheritance diagram for MuonDT13ChamberResidual:
MuonHitsChamberResidual MuonChamberResidual

Public Member Functions

void addResidual (edm::ESHandle< Propagator > prop, const TrajectoryStateOnSurface *tsos, const TrackingRecHit *hit, double, double) override
 
 MuonDT13ChamberResidual (edm::ESHandle< GlobalTrackingGeometry > globalGeometry, AlignableNavigator *navigator, DetId chamberId, AlignableDetOrUnitPtr chamberAlignable)
 
void setSegmentResidual (const reco::MuonChamberMatch *, const reco::MuonSegmentMatch *) override
 
- Public Member Functions inherited from MuonHitsChamberResidual
 MuonHitsChamberResidual (edm::ESHandle< GlobalTrackingGeometry > globalGeometry, AlignableNavigator *navigator, DetId chamberId, const AlignableDetOrUnitPtr &chamberAlignable)
 
void segment_fit ()
 
- Public Member Functions inherited from MuonChamberResidual
AlignableDetOrUnitPtr chamberAlignable () const
 
DetId chamberId () const
 
double Chambl () const
 
double ChambW () const
 
double chi2 () const
 
double global_hitresid (int i) const
 
double global_residual () const
 
double global_resslope () const
 
align::GlobalPoint global_stubpos ()
 
align::GlobalPoint global_trackpos ()
 
int hitlayer (int i) const
 
double hitposition (int i) const
 
double hitresid (int i) const
 
DetId localid (int i) const
 
 MuonChamberResidual (edm::ESHandle< GlobalTrackingGeometry > globalGeometry, AlignableNavigator *navigator, DetId chamberId, AlignableDetOrUnitPtr chamberAlignable)
 
int ndof () const
 
int numHits () const
 
double residual () const
 
double residual_error () const
 
double resslope () const
 
double resslope_error () const
 
double segdxdz () const
 
double segdydz () const
 
double segx () const
 
double segy () const
 
virtual double signConvention () const
 
double trackdxdz () const
 
double trackdydz () const
 
double trackx () const
 
double tracky () const
 
int type () const
 
virtual ~MuonChamberResidual ()
 

Additional Inherited Members

- Public Types inherited from MuonChamberResidual
enum  { kDT13, kDT2, kCSC }
 
- Protected Attributes inherited from MuonHitsChamberResidual
double m_chamber_length
 
double m_chamber_width
 
double m_hitx_1
 
double m_hitx_x
 
double m_hitx_xx
 
double m_hitx_xy
 
double m_hitx_y
 
double m_hity_1
 
double m_hity_x
 
double m_hity_xx
 
double m_hity_xy
 
double m_hity_y
 
double m_residual_1
 
double m_residual_x
 
double m_residual_xx
 
double m_residual_xy
 
double m_residual_y
 
double m_trackx_1
 
double m_trackx_x
 
double m_trackx_xx
 
double m_trackx_xy
 
double m_trackx_y
 
double m_tracky_1
 
double m_tracky_x
 
double m_tracky_xx
 
double m_tracky_xy
 
double m_tracky_y
 
- Protected Attributes inherited from MuonChamberResidual
AlignableDetOrUnitPtr m_chamberAlignable
 
DetId m_chamberId
 
double m_Chambl
 
double m_ChambW
 
double m_chi2
 
edm::ESHandle
< GlobalTrackingGeometry
m_globalGeometry
 
std::vector< double > m_individual_weight
 
std::vector< double > m_individual_x
 
std::vector< double > m_individual_y
 
std::vector< DetIdm_localIDs
 
std::vector< double > m_localResids
 
AlignableNavigatorm_navigator
 
int m_ndof
 
int m_numHits
 
double m_residual
 
double m_residual_error
 
double m_resslope
 
double m_resslope_error
 
double m_segdxdz
 
double m_segdydz
 
double m_segx
 
double m_segy
 
double m_sign
 
double m_trackdxdz
 
double m_trackdydz
 
double m_trackx
 
double m_tracky
 
int m_type
 

Detailed Description

Implementation of muon chamber residuals for axial DT layers

Id:

Definition at line 15 of file MuonDT13ChamberResidual.h.

Constructor & Destructor Documentation

MuonDT13ChamberResidual::MuonDT13ChamberResidual ( edm::ESHandle< GlobalTrackingGeometry globalGeometry,
AlignableNavigator navigator,
DetId  chamberId,
AlignableDetOrUnitPtr  chamberAlignable 
)

Definition at line 7 of file MuonDT13ChamberResidual.cc.

References funct::cos(), MuonChamberResidual::kDT13, MuonChamberResidual::m_chamberId, MuonChamberResidual::m_globalGeometry, M_PI, MuonChamberResidual::m_sign, MuonChamberResidual::m_type, and funct::sin().

11  : MuonHitsChamberResidual(globalGeometry, navigator, chamberId, chamberAlignable) {
13  double rphiAngle = atan2(m_globalGeometry->idToDet(m_chamberId)->position().y(),
14  m_globalGeometry->idToDet(m_chamberId)->position().x()) +
15  M_PI / 2.;
16  align::GlobalVector rphiDirection(cos(rphiAngle), sin(rphiAngle), 0.);
17  m_sign = m_globalGeometry->idToDet(m_chamberId)->toLocal(rphiDirection).x() > 0. ? 1. : -1.;
18 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
#define M_PI
edm::ESHandle< GlobalTrackingGeometry > m_globalGeometry
MuonHitsChamberResidual(edm::ESHandle< GlobalTrackingGeometry > globalGeometry, AlignableNavigator *navigator, DetId chamberId, const AlignableDetOrUnitPtr &chamberAlignable)

Member Function Documentation

void MuonDT13ChamberResidual::addResidual ( edm::ESHandle< Propagator prop,
const TrajectoryStateOnSurface tsos,
const TrackingRecHit hit,
double  chamber_width,
double  chamber_length 
)
overridevirtual

Implements MuonChamberResidual.

Definition at line 22 of file MuonDT13ChamberResidual.cc.

References gather_cfg::cout, TrackingRecHit::geographicalId(), TrajectoryStateOnSurface::localPosition(), TrackingRecHit::localPosition(), TrackingRecHit::localPositionError(), MuonHitsChamberResidual::m_chamber_length, MuonHitsChamberResidual::m_chamber_width, MuonChamberResidual::m_chamberAlignable, MuonChamberResidual::m_globalGeometry, MuonHitsChamberResidual::m_hitx_1, MuonHitsChamberResidual::m_hitx_x, MuonHitsChamberResidual::m_hitx_xx, MuonHitsChamberResidual::m_hitx_xy, MuonHitsChamberResidual::m_hitx_y, MuonHitsChamberResidual::m_hity_1, MuonHitsChamberResidual::m_hity_x, MuonHitsChamberResidual::m_hity_xx, MuonHitsChamberResidual::m_hity_xy, MuonHitsChamberResidual::m_hity_y, MuonChamberResidual::m_individual_weight, MuonChamberResidual::m_individual_x, MuonChamberResidual::m_individual_y, MuonChamberResidual::m_localIDs, MuonChamberResidual::m_localResids, MuonChamberResidual::m_numHits, MuonHitsChamberResidual::m_residual_1, MuonHitsChamberResidual::m_residual_x, MuonHitsChamberResidual::m_residual_xx, MuonHitsChamberResidual::m_residual_xy, MuonHitsChamberResidual::m_residual_y, MuonHitsChamberResidual::m_trackx_1, MuonHitsChamberResidual::m_trackx_x, MuonHitsChamberResidual::m_trackx_xx, MuonHitsChamberResidual::m_trackx_xy, MuonHitsChamberResidual::m_trackx_y, MuonHitsChamberResidual::m_tracky_1, MuonHitsChamberResidual::m_tracky_x, MuonHitsChamberResidual::m_tracky_xx, MuonHitsChamberResidual::m_tracky_xy, MuonHitsChamberResidual::m_tracky_y, MuonChamberResidual::residual(), MuonHitsChamberResidual::segment_fit(), Alignable::surface(), AlignableSurface::toLocal(), histoStyle::weight, PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

26  {
27  bool m_debug = false;
28 
29  m_chamber_width = chamber_width;
30  m_chamber_length = chamber_length;
31 
32  DetId id = hit->geographicalId();
33 
34  align::LocalPoint hitChamberPos =
35  m_chamberAlignable->surface().toLocal(m_globalGeometry->idToDet(id)->toGlobal(hit->localPosition()));
36  align::LocalPoint tsosChamberPos =
37  m_chamberAlignable->surface().toLocal(m_globalGeometry->idToDet(id)->toGlobal(tsos->localPosition()));
38 
39  if (m_debug) {
40  std::cout << " MuonDT13ChamberResidual hitChamberPos x: " << hitChamberPos.x()
41  << " tsosChamberPos x: " << tsosChamberPos.x() << std::endl;
42  std::cout << " hitChamberPos y: " << hitChamberPos.y()
43  << " tsosChamberPos y: " << tsosChamberPos.y() << std::endl;
44  std::cout << " hitChamberPos z: " << hitChamberPos.z()
45  << " tsosChamberPos z: " << tsosChamberPos.z() << std::endl;
46  }
47 
48  double residual = tsosChamberPos.x() - hitChamberPos.x(); // residual is hit minus hit
49  double weight = 1. / hit->localPositionError().xx(); // weight linear fit by hit-only local error
50  double layerPosition = tsosChamberPos.z(); // the layer's position in the chamber's coordinate system
51  double layerHitPos = hitChamberPos.z();
52 
53  m_numHits++;
54 
55  // "x" is the layerPosition, "y" is the residual (this is a linear fit to residual versus layerPosition)
57  m_residual_x += weight * layerPosition;
58  m_residual_y += weight * residual;
59  m_residual_xx += weight * layerPosition * layerPosition;
60  m_residual_xy += weight * layerPosition * residual;
61 
62  // "x" is the layerPosition, "y" is chamberx (this is a linear fit to chamberx versus layerPosition)
63  m_trackx_1 += weight;
64  m_trackx_x += weight * layerPosition;
65  m_trackx_y += weight * tsosChamberPos.x();
66  m_trackx_xx += weight * layerPosition * layerPosition;
67  m_trackx_xy += weight * layerPosition * tsosChamberPos.x();
68 
69  // "x" is the layerPosition, "y" is chambery (this is a linear fit to chambery versus layerPosition)
70  m_tracky_1 += weight;
71  m_tracky_x += weight * layerPosition;
72  m_tracky_y += weight * tsosChamberPos.y();
73  m_tracky_xx += weight * layerPosition * layerPosition;
74  m_tracky_xy += weight * layerPosition * tsosChamberPos.y();
75 
76  m_hitx_1 += weight;
77  m_hitx_x += weight * layerHitPos;
78  m_hitx_y += weight * hitChamberPos.x();
79  m_hitx_xx += weight * layerHitPos * layerHitPos;
80  m_hitx_xy += weight * layerHitPos * hitChamberPos.x();
81 
82  m_hity_1 += weight;
83  m_hity_x += weight * layerHitPos;
84  m_hity_y += weight * hitChamberPos.y();
85  m_hity_xx += weight * layerHitPos * layerPosition;
86  m_hity_xy += weight * layerHitPos * hitChamberPos.y();
87 
88  m_localIDs.push_back(id);
89  // m_localResids.push_back(tsos->localPosition().x() - hit->localPosition().x()); //FIXME looks like this line is not used anywhere, moreover it is wrong for segment-based reconstruction, I changed it to the follwoing line
90  m_localResids.push_back(residual);
91  m_individual_x.push_back(layerPosition);
92  m_individual_y.push_back(residual);
93  m_individual_weight.push_back(weight);
94 
95  if (m_numHits > 1)
96  segment_fit();
97 }
float xx() const
Definition: LocalError.h:22
std::vector< double > m_individual_y
T y() const
Definition: PV3DBase.h:60
std::vector< double > m_individual_x
std::vector< DetId > m_localIDs
align::RotationType toLocal(const align::RotationType &) const
Return in local frame a rotation given in global frame.
std::vector< double > m_localResids
T z() const
Definition: PV3DBase.h:61
AlignableDetOrUnitPtr m_chamberAlignable
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
Definition: DetId.h:17
virtual LocalError localPositionError() const =0
edm::ESHandle< GlobalTrackingGeometry > m_globalGeometry
tuple cout
Definition: gather_cfg.py:144
DetId geographicalId() const
int weight
Definition: histoStyle.py:51
T x() const
Definition: PV3DBase.h:59
virtual LocalPoint localPosition() const =0
std::vector< double > m_individual_weight
double residual() const
void MuonDT13ChamberResidual::setSegmentResidual ( const reco::MuonChamberMatch ,
const reco::MuonSegmentMatch  
)
inlineoverridevirtual

Implements MuonChamberResidual.

Definition at line 31 of file MuonDT13ChamberResidual.h.

31 {}