ATLAS Offline Software
SegmentFitHelperFunctions.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
5 
6 using namespace MuonR4;
7 
8 double SegmentFitHelpers::chiSqTermMdt(double y0, double tanTheta, const MuonR4::HoughHitType & measurement){
10  const double theta{std::atan(-tanTheta)};
12  const Amg::Vector3D x0{y0 * Amg::Vector3D::UnitY()};
13  double dchi2 = std::abs((x0 - measurement->positionInChamber()).cross(dir).dot(Amg::Vector3D::UnitX())) - measurement->driftRadius();
14  return dchi2*dchi2 / (measurement->uncertainty().y()*measurement->uncertainty().y());
15 }
16 
17 double SegmentFitHelpers::chiSqTermStrip(double x0, double y0, double tanPhi, double tanTheta, const MuonR4::HoughHitType & measurement){
18  Amg::Vector2D residual{x0 + measurement->positionInChamber().z() * tanPhi - measurement->positionInChamber().x(),
19  y0 + measurement->positionInChamber().z() * tanTheta - measurement->positionInChamber().y()
20  };
21  AmgSymMatrix(2) weightMatrix = measurement->covariance().inverse();
22  return residual.dot(weightMatrix * residual);
23 }
24 double SegmentFitHelpers::segmentChiSquare(const double* par, const std::vector<MuonR4::HoughHitType> & hits, std::vector<double> & chi2PerMeas){
25 
30  double chi2 = 0.;
31  double nDF = -2.;
32  size_t iHit = 0;
33  for (auto & hit : hits){
34  double localchi2 = 0;
35  switch (hit->primaryMeasurement()->type()){
37  localchi2 = SegmentFitHelpers::chiSqTermMdt(y0,tanTheta, hit);
38  ++nDF;
39  break;
42  localchi2 = SegmentFitHelpers::chiSqTermStrip(x0,y0,tanPhi,tanTheta, hit);
43  nDF+=2;
44  break;
46  // FIXME TODO
47  break;
49  // FIXME TODO
50  break;
51  default:
52  break;
53  }
54  chi2PerMeas.at(iHit) = localchi2;
55  chi2 += localchi2;
56  ++iHit;
57  }
58  return (nDF != 0 ? chi2/nDF : chi2);
59 }
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
MuonR4::SegmentFitHelpers::chiSqTermMdt
double chiSqTermMdt(double y0, double tanTheta, const MuonR4::HoughHitType &measurement)
Definition: SegmentFitHelperFunctions.cxx:8
MuonR4::MuonSegmentFitterEventData_impl::parameterIndices::tanTheta
@ tanTheta
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
MuonR4::SegmentFitHelpers::segmentChiSquare
double segmentChiSquare(const double *par, const std::vector< MuonR4::HoughHitType > &hits, std::vector< double > &chi2PerMeas)
Definition: SegmentFitHelperFunctions.cxx:24
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonR4::HoughHitType
std::shared_ptr< MuonR4::MuonSpacePoint > HoughHitType
Definition: MuonHoughDefs.h:20
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
xAOD::UncalibMeasType::MMClusterType
@ MMClusterType
MuonR4::MuonSegmentFitterEventData_impl::parameterIndices::y0
@ y0
MuonR4::SegmentFitHelpers::chiSqTermStrip
double chiSqTermStrip(double x0, double y0, double tanPhi, double tanTheta, const MuonR4::HoughHitType &measurement)
Definition: SegmentFitHelperFunctions.cxx:17
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
xAOD::UncalibMeasType::sTgcStripType
@ sTgcStripType
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
xAOD::UncalibMeasType::TgcStripType
@ TgcStripType
MuonR4::MuonSegmentFitterEventData_impl::parameterIndices::tanPhi
@ tanPhi
SegmentFitHelperFunctions.h
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
beamspotman.dir
string dir
Definition: beamspotman.py:623
MuonR4::MuonSegmentFitterEventData_impl::parameterIndices::x0
@ x0
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonR4
The CsvMuonSimHitDumper reads a Simulation Hit container for muons and dumps information to csv files...
Definition: MuonSpacePoint.h:11
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
xAOD::UncalibMeasType::RpcStripType
@ RpcStripType
xAOD::UncalibMeasType::MdtDriftCircleType
@ MdtDriftCircleType