CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes
SurveyPxbImageLocalFit Class Reference

Class to hold one picture of the BPix survey and the local fit. More...

#include <SurveyPxbImageLocalFit.h>

Inheritance diagram for SurveyPxbImageLocalFit:
SurveyPxbImage

Public Types

typedef unsigned int count_t
 
typedef std::vector< coord_tfidpoint_t
 
typedef std::vector< value_tlocalpars_t
 
typedef float pede_deriv_t
 
typedef int pede_label_t
 
- Public Types inherited from SurveyPxbImage
typedef Point3DBase< value_t,
LocalTag
coord_t
 
typedef unsigned int count_t
 
typedef unsigned int id_t
 
typedef std::pair< id_t, id_tidPair_t
 
enum  location { ll, ul, lr, ur }
 enum to help access specific locations on a picture More...
 
typedef double value_t
 

Public Member Functions

void doFit (const fidpoint_t &fidpointvec)
 Invoke the fit. More...
 
void doFit (const fidpoint_t &fidpointvec, const pede_label_t &label1, const pede_label_t &label2)
 
void doFit (value_t x1, value_t y1, value_t g1, value_t x2, value_t y2, value_t g2)
 
value_t getChi2 ()
 returns the chi^2 of the fit More...
 
const pede_label_tgetGlobalDerivsLabelPtr (count_t i)
 
const pede_deriv_tgetGlobalDerivsPtr (count_t i)
 
pede_label_t getGlobalDerivsSize ()
 
const pede_deriv_tgetLocalDerivsPtr (count_t i)
 
pede_label_t getLocalDerivsSize ()
 
localpars_t getLocalParameters ()
 returns local parameters after fit More...
 
pede_deriv_t getResiduum (count_t i)
 
pede_deriv_t getSigma (count_t i)
 
bool isFitValid ()
 returns validity flag More...
 
void setGlobalDerivsToZero (count_t i)
 
void setLocalDerivsToZero (count_t i)
 
 SurveyPxbImageLocalFit ()
 
 SurveyPxbImageLocalFit (std::istringstream &iss)
 Constructor from istringstream. More...
 
- Public Member Functions inherited from SurveyPxbImage
void fill (std::istringstream &iss)
 
const coord_t getCoord (count_t m)
 
id_t getIdFirst ()
 Get Id of first module. More...
 
const idPair_t getIdPair ()
 Get Id pair. More...
 
id_t getIdSecond ()
 Get Id of second module. More...
 
value_t getSigmaX ()
 Get Gaussian error in u direction. More...
 
value_t getSigmaY ()
 Get Gaussian error in u direction. More...
 
bool isValid ()
 returns validity flag More...
 
 SurveyPxbImage ()
 
 SurveyPxbImage (std::istringstream &iss)
 

Static Public Attributes

static const count_t nFidpoints = 4
 
static const count_t nGlD = 3
 
static const count_t nLcD = 4
 
static const count_t nLcPars = 4
 
static const count_t nMsrmts = 8
 

Private Member Functions

value_t dist (const coord_t &p1, const coord_t &p2)
 Distance. More...
 
void initFidPoints ()
 Initialise the fiducial points. More...
 

Private Attributes

localpars_t a_
 Local parameters. More...
 
value_t chi2_
 chi2 of the local fit More...
 
bool derivsValidFlag_
 
std::vector< coord_tfidpoints_
 True position of the fiducial points on a sensor wrt. local frame (u,v) More...
 
bool fitValidFlag_
 Validity Flag. More...
 
ROOT::Math::SMatrix
< pede_deriv_t, nMsrmts, nGlD
globalDerivsMatrix_
 Matrix with global derivs. More...
 
std::vector< pede_label_tlabelVec1_
 Vector with labels to global derivs. More...
 
std::vector< pede_label_tlabelVec2_
 
ROOT::Math::SMatrix
< pede_deriv_t, nMsrmts, nLcD
localDerivsMatrix_
 Matrix with local derivs. More...
 
ROOT::Math::SVector< value_t,
nMsrmts
r
 Vector of residuals. More...
 

Additional Inherited Members

- Protected Attributes inherited from SurveyPxbImage
idPair_t idPair_
 
bool isRotated_
 Flag if the image was rotated or not. More...
 
bool isValidFlag_
 Validity Flag. More...
 
std::vector< coord_tmeasurementVec_
 Vector to hold four measurements. More...
 
value_t sigma_x_
 Gaussian errors. More...
 
value_t sigma_y_
 

Detailed Description

Class to hold one picture of the BPix survey and the local fit.

Definition at line 14 of file SurveyPxbImageLocalFit.h.

Member Typedef Documentation

typedef unsigned int SurveyPxbImageLocalFit::count_t

Definition at line 18 of file SurveyPxbImageLocalFit.h.

Definition at line 17 of file SurveyPxbImageLocalFit.h.

Definition at line 16 of file SurveyPxbImageLocalFit.h.

Definition at line 26 of file SurveyPxbImageLocalFit.h.

Definition at line 25 of file SurveyPxbImageLocalFit.h.

Constructor & Destructor Documentation

SurveyPxbImageLocalFit::SurveyPxbImageLocalFit ( )
inline

Definition at line 29 of file SurveyPxbImageLocalFit.h.

References initFidPoints().

31  initFidPoints();
32  };
static const count_t nLcPars
bool fitValidFlag_
Validity Flag.
localpars_t a_
Local parameters.
static const count_t nFidpoints
std::vector< coord_t > fidpoints_
True position of the fiducial points on a sensor wrt. local frame (u,v)
void initFidPoints()
Initialise the fiducial points.
SurveyPxbImageLocalFit::SurveyPxbImageLocalFit ( std::istringstream &  iss)
inline

Constructor from istringstream.

Definition at line 35 of file SurveyPxbImageLocalFit.h.

References initFidPoints().

37  initFidPoints();
38  };
static const count_t nLcPars
bool fitValidFlag_
Validity Flag.
localpars_t a_
Local parameters.
static const count_t nFidpoints
std::vector< coord_t > fidpoints_
True position of the fiducial points on a sensor wrt. local frame (u,v)
void initFidPoints()
Initialise the fiducial points.

Member Function Documentation

value_t SurveyPxbImageLocalFit::dist ( const coord_t p1,
const coord_t p2 
)
inlineprivate

Distance.

Definition at line 104 of file SurveyPxbImageLocalFit.h.

References PVValHelper::dx, PVValHelper::dy, mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

104  {
105  value_t dx = p1.x() - p2.x();
106  value_t dy = p1.y() - p2.y();
107  return sqrt(dx * dx + dy * dy);
108  }
const TString p2
Definition: fwPaths.cc:13
T sqrt(T t)
Definition: SSEVec.h:19
const TString p1
Definition: fwPaths.cc:12
void SurveyPxbImageLocalFit::doFit ( const fidpoint_t fidpointvec)

Invoke the fit.

Definition at line 29 of file SurveyPxbImageLocalFit.cc.

References A, a, a_, chi2_, funct::cos(), gather_cfg::cout, fidpoints_, fitValidFlag_, globalDerivsMatrix_, mps_fire::i, localDerivsMatrix_, SurveyPxbImage::measurementVec_, r, SurveyPxbImage::sigma_x_, SurveyPxbImage::sigma_y_, funct::sin(), mathSSE::sqrt(), and y.

Referenced by doFit().

29  {
30  fitValidFlag_ = false;
31 
32  // Calculate gamma of right module w.r.t left modules' fram
33  const value_t dxr = fidpointvec[3].x() - fidpointvec[2].x();
34  const value_t dyr = fidpointvec[3].y() - fidpointvec[2].y();
35  const value_t gammar = atan(dyr / dxr);
36  const value_t dxl = fidpointvec[1].x() - fidpointvec[0].x();
37  const value_t dyl = fidpointvec[1].y() - fidpointvec[0].y();
38  const value_t gammal = atan(dyl / dxl);
39  const value_t gamma = gammar - gammal;
40  //const value_t gamma = 0.; // Testhalber
41  const value_t sing = sin(gamma);
42  const value_t cosg = cos(gamma);
43 #ifdef DEBUG
44  std::cout << "gamma: " << gamma << " gamma left: " << gammal << " gamma right: " << gammar << std::endl;
45 #endif
46 
47 #ifdef DEBUG
48  std::cout << "&fidpointvec: " << std::endl;
49  for (count_t i = 0; i != fidpointvec.size(); i++)
50  std::cout << i << ": " << fidpointvec[i] << std::endl;
51  std::cout << "&fidpoints_: " << std::endl;
52  for (count_t i = 0; i != fidpoints_.size(); i++)
53  std::cout << i << ": " << fidpoints_[i] << std::endl;
54 #endif
55 
56  // Matrix of the local derivatives
57  ROOT::Math::SMatrix<value_t, nMsrmts, nLcD> A; // 8x4
58  A(0, 0) = 1.;
59  A(0, 1) = 0;
60  A(0, 2) = +fidpointvec[0].x();
61  A(0, 3) = +fidpointvec[0].y();
62  A(1, 0) = 0.;
63  A(1, 1) = 1;
64  A(1, 2) = +fidpointvec[0].y();
65  A(1, 3) = -fidpointvec[0].x();
66  A(2, 0) = 1.;
67  A(2, 1) = 0;
68  A(2, 2) = +fidpointvec[1].x();
69  A(2, 3) = +fidpointvec[1].y();
70  A(3, 0) = 0.;
71  A(3, 1) = 1;
72  A(3, 2) = +fidpointvec[1].y();
73  A(3, 3) = -fidpointvec[1].x();
74  A(4, 0) = 1.;
75  A(4, 1) = 0;
76  A(4, 2) = +fidpointvec[2].x();
77  A(4, 3) = +fidpointvec[2].y();
78  A(5, 0) = 0.;
79  A(5, 1) = 1;
80  A(5, 2) = +fidpointvec[2].y();
81  A(5, 3) = -fidpointvec[2].x();
82  A(6, 0) = 1.;
83  A(6, 1) = 0;
84  A(6, 2) = +fidpointvec[3].x();
85  A(6, 3) = +fidpointvec[3].y();
86  A(7, 0) = 0.;
87  A(7, 1) = 1;
88  A(7, 2) = +fidpointvec[3].y();
89  A(7, 3) = -fidpointvec[3].x();
90 #ifdef DEBUG
91  std::cout << "A: \n" << A << std::endl;
92 #endif
93 
94  // Covariance matrix
95  ROOT::Math::SMatrix<value_t, nMsrmts, nMsrmts> W; // 8x8
96  //ROOT::Math::MatRepSym<value_t,8> W;
97  const value_t sigma_x2inv = 1. / (sigma_x_ * sigma_x_);
98  const value_t sigma_y2inv = 1. / (sigma_y_ * sigma_y_);
99  W(0, 0) = sigma_x2inv;
100  W(1, 1) = sigma_y2inv;
101  W(2, 2) = sigma_x2inv;
102  W(3, 3) = sigma_y2inv;
103  W(4, 4) = sigma_x2inv;
104  W(5, 5) = sigma_y2inv;
105  W(6, 6) = sigma_x2inv;
106  W(7, 7) = sigma_y2inv;
107 #ifdef DEBUG
108  std::cout << "W: \n" << W << std::endl;
109 #endif
110 
111  // Prepare for the fit
112  ROOT::Math::SMatrix<value_t, nLcD, nLcD> ATWA; // 4x4
113  ATWA = ROOT::Math::Transpose(A) * W * A;
114  //ATWA = ROOT::Math::SimilarityT(A,W); // W muss symmterisch sein -> aendern.
115  //std::cout << "ATWA: \n" << ATWA << std::endl;
116  ROOT::Math::SMatrix<value_t, nLcD, nLcD> ATWAi; // 4x4
117  int ifail = 0;
118  ATWAi = ATWA.Inverse(ifail);
119  if (ifail != 0) { // TODO: ifail Pruefung auf message logger ausgeben statt cout
120  std::cout << "Problem singular - fit impossible." << std::endl;
121  fitValidFlag_ = false;
122  return;
123  }
124 #ifdef DEBUG
125  std::cout << "ATWA-1: \n" << ATWAi << ifail << std::endl;
126 #endif
127 
128  // Measurements
129  ROOT::Math::SVector<value_t, nMsrmts> y; // 8
130  y(0) = measurementVec_[0].x();
131  y(1) = measurementVec_[0].y();
132  y(2) = measurementVec_[1].x();
133  y(3) = measurementVec_[1].y();
134  y(4) = measurementVec_[2].x();
135  y(5) = measurementVec_[2].y();
136  y(6) = measurementVec_[3].x();
137  y(7) = measurementVec_[3].y();
138 #ifdef DEBUG
139  std::cout << "y: " << y << std::endl;
140 #endif
141 
142  // do the fit
143  ROOT::Math::SVector<value_t, nLcD> a; // 4
144  a = ATWAi * ROOT::Math::Transpose(A) * W * y;
145  chi2_ = ROOT::Math::Dot(y, W * y) - ROOT::Math::Dot(a, ROOT::Math::Transpose(A) * W * y);
146 #ifdef DEBUG
147  std::cout << "a: " << a << " S= " << sqrt(a[2] * a[2] + a[3] * a[3]) << " phi= " << atan(a[3] / a[2])
148  << " chi2= " << chi2_ << std::endl;
149  std::cout << "A*a: " << A * a << std::endl;
150 #endif
151  a_.assign(a.begin(), a.end());
152 
153  // Calculate vector of residuals
154  r = y - A * a;
155 #ifdef DEBUG
156  std::cout << "r: " << r << std::endl;
157 #endif
158 
159  // Fill matrix for global fit with local derivatives
160  localDerivsMatrix_(0, 0) = 1.;
161  localDerivsMatrix_(0, 1) = 0;
162  localDerivsMatrix_(1, 0) = 0.;
163  localDerivsMatrix_(1, 1) = 1;
164  localDerivsMatrix_(2, 0) = 1.;
165  localDerivsMatrix_(2, 1) = 0;
166  localDerivsMatrix_(3, 0) = 0.;
167  localDerivsMatrix_(3, 1) = 1;
168  localDerivsMatrix_(4, 0) = 1.;
169  localDerivsMatrix_(4, 1) = 0;
170  localDerivsMatrix_(5, 0) = 0.;
171  localDerivsMatrix_(5, 1) = 1;
172  localDerivsMatrix_(6, 0) = 1.;
173  localDerivsMatrix_(6, 1) = 0;
174  localDerivsMatrix_(7, 0) = 0.;
175  localDerivsMatrix_(7, 1) = 1;
176  localDerivsMatrix_(0, 2) = +fidpointvec[0].x() + cosg * fidpoints_[0].x() - sing * fidpoints_[0].y();
177  localDerivsMatrix_(0, 3) = +fidpointvec[0].y() + cosg * fidpoints_[0].y() + sing * fidpoints_[0].x();
178  localDerivsMatrix_(1, 2) = +fidpointvec[0].y() + cosg * fidpoints_[0].y() + sing * fidpoints_[0].x();
179  localDerivsMatrix_(1, 3) = -fidpointvec[0].x() - cosg * fidpoints_[0].x() + sing * fidpoints_[0].y();
180  localDerivsMatrix_(2, 2) = +fidpointvec[1].x() + cosg * fidpoints_[1].x() - sing * fidpoints_[1].y();
181  localDerivsMatrix_(2, 3) = +fidpointvec[1].y() + cosg * fidpoints_[1].y() + sing * fidpoints_[1].x();
182  localDerivsMatrix_(3, 2) = +fidpointvec[1].y() + cosg * fidpoints_[1].y() + sing * fidpoints_[1].x();
183  localDerivsMatrix_(3, 3) = -fidpointvec[1].x() - cosg * fidpoints_[1].x() + sing * fidpoints_[1].y();
184  localDerivsMatrix_(4, 2) = +fidpointvec[2].x() + cosg * fidpoints_[2].x() - sing * fidpoints_[2].y();
185  localDerivsMatrix_(4, 3) = +fidpointvec[2].y() + cosg * fidpoints_[2].y() + sing * fidpoints_[2].x();
186  localDerivsMatrix_(5, 2) = +fidpointvec[2].y() + cosg * fidpoints_[2].y() + sing * fidpoints_[2].x();
187  localDerivsMatrix_(5, 3) = -fidpointvec[2].x() - cosg * fidpoints_[2].x() + sing * fidpoints_[2].y();
188  localDerivsMatrix_(6, 2) = +fidpointvec[3].x() + cosg * fidpoints_[3].x() - sing * fidpoints_[3].y();
189  localDerivsMatrix_(6, 3) = +fidpointvec[3].y() + cosg * fidpoints_[3].y() + sing * fidpoints_[3].x();
190  localDerivsMatrix_(7, 2) = +fidpointvec[3].y() + cosg * fidpoints_[3].y() + sing * fidpoints_[3].x();
191  localDerivsMatrix_(7, 3) = -fidpointvec[3].x() - cosg * fidpoints_[3].x() + sing * fidpoints_[3].y();
192 
193  // Fill vector with global derivatives and labels (8x3)
194  globalDerivsMatrix_(0, 0) = +a(2);
195  globalDerivsMatrix_(0, 1) = +a(3);
196  globalDerivsMatrix_(0, 2) = +cosg * (a(3) * fidpoints_[0].x() - a(2) * fidpoints_[0].y()) -
197  sing * (a(2) * fidpoints_[0].x() + a(3) * fidpoints_[0].y());
198  globalDerivsMatrix_(1, 0) = -a(3);
199  globalDerivsMatrix_(1, 1) = +a(2);
200  globalDerivsMatrix_(1, 2) = +cosg * (a(2) * fidpoints_[0].x() + a(3) * fidpoints_[0].y()) -
201  sing * (a(2) * fidpoints_[0].y() - a(3) * fidpoints_[0].x());
202  globalDerivsMatrix_(2, 0) = +a(2);
203  globalDerivsMatrix_(2, 1) = +a(3);
204  globalDerivsMatrix_(2, 2) = +cosg * (a(3) * fidpoints_[1].x() - a(2) * fidpoints_[1].y()) -
205  sing * (a(2) * fidpoints_[1].x() + a(3) * fidpoints_[1].y());
206  globalDerivsMatrix_(3, 0) = -a(3);
207  globalDerivsMatrix_(3, 1) = +a(2);
208  globalDerivsMatrix_(3, 2) = +cosg * (a(2) * fidpoints_[1].x() + a(3) * fidpoints_[1].y()) -
209  sing * (a(2) * fidpoints_[1].y() - a(3) * fidpoints_[1].x());
210 
211  globalDerivsMatrix_(4, 0) = +a(2);
212  globalDerivsMatrix_(4, 1) = +a(3);
213  globalDerivsMatrix_(4, 2) = +cosg * (a(3) * fidpoints_[2].x() - a(2) * fidpoints_[2].y()) -
214  sing * (a(2) * fidpoints_[2].x() + a(3) * fidpoints_[2].y());
215  globalDerivsMatrix_(5, 0) = -a(3);
216  globalDerivsMatrix_(5, 1) = +a(2);
217  globalDerivsMatrix_(5, 2) = +cosg * (a(2) * fidpoints_[2].x() + a(3) * fidpoints_[2].y()) -
218  sing * (a(2) * fidpoints_[2].y() - a(3) * fidpoints_[2].x());
219  globalDerivsMatrix_(6, 0) = +a(2);
220  globalDerivsMatrix_(6, 1) = +a(3);
221  globalDerivsMatrix_(6, 2) = +cosg * (a(3) * fidpoints_[3].x() - a(2) * fidpoints_[3].y()) -
222  sing * (a(2) * fidpoints_[3].x() + a(3) * fidpoints_[3].y());
223  globalDerivsMatrix_(7, 0) = -a(3);
224  globalDerivsMatrix_(7, 1) = +a(2);
225  globalDerivsMatrix_(7, 2) = +cosg * (a(2) * fidpoints_[3].x() + a(3) * fidpoints_[3].y()) -
226  sing * (a(2) * fidpoints_[3].y() - a(3) * fidpoints_[3].x());
227 
228  fitValidFlag_ = true;
229 }
bool fitValidFlag_
Validity Flag.
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
value_t sigma_x_
Gaussian errors.
localpars_t a_
Local parameters.
ROOT::Math::SVector< value_t, nMsrmts > r
Vector of residuals.
T sqrt(T t)
Definition: SSEVec.h:19
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
value_t chi2_
chi2 of the local fit
ROOT::Math::SMatrix< pede_deriv_t, nMsrmts, nGlD > globalDerivsMatrix_
Matrix with global derivs.
std::vector< coord_t > fidpoints_
True position of the fiducial points on a sensor wrt. local frame (u,v)
std::vector< coord_t > measurementVec_
Vector to hold four measurements.
double a
Definition: hdecay.h:119
tuple cout
Definition: gather_cfg.py:144
Definition: APVGainStruct.h:7
ROOT::Math::SMatrix< pede_deriv_t, nMsrmts, nLcD > localDerivsMatrix_
Matrix with local derivs.
void SurveyPxbImageLocalFit::doFit ( const fidpoint_t fidpointvec,
const pede_label_t label1,
const pede_label_t label2 
)

Definition at line 15 of file SurveyPxbImageLocalFit.cc.

References doFit(), labelVec1_, and labelVec2_.

17  {
18  labelVec1_.clear();
19  labelVec1_.push_back(label1 + 0);
20  labelVec1_.push_back(label1 + 1);
21  labelVec1_.push_back(label1 + 5);
22  labelVec2_.clear();
23  labelVec2_.push_back(label2 + 0);
24  labelVec2_.push_back(label2 + 1);
25  labelVec2_.push_back(label2 + 5);
26  doFit(fidpointvec);
27 }
std::vector< pede_label_t > labelVec2_
std::vector< pede_label_t > labelVec1_
Vector with labels to global derivs.
void doFit(const fidpoint_t &fidpointvec)
Invoke the fit.
void SurveyPxbImageLocalFit::doFit ( value_t  x1,
value_t  y1,
value_t  g1,
value_t  x2,
value_t  y2,
value_t  g2 
)

Definition at line 231 of file SurveyPxbImageLocalFit.cc.

References funct::cos(), doFit(), fidpoints_, funct::sin(), MetAnalyzer::u1, and MetAnalyzer::u2.

231  {
232  // Creating vectors with the global parameters of the two modules
233  ROOT::Math::SVector<value_t, 4> mod1, mod2;
234  mod1(0) = u1;
235  mod1(1) = v1;
236  mod1(2) = cos(g1);
237  mod1(3) = sin(g1);
238  mod2(0) = u2;
239  mod2(1) = v2;
240  mod2(2) = cos(g2);
241  mod2(3) = sin(g2);
242  //std::cout << "mod1: " << mod1 << std::endl;
243  //std::cout << "mod2: " << mod2 << std::endl;
244 
245  // Create a matrix for the transformed position of the fidpoints
246  ROOT::Math::SMatrix<value_t, 4, 4> M1, M2;
247  M1(0, 0) = 1.;
248  M1(0, 1) = 0.;
249  M1(0, 2) = +fidpoints_[0].x();
250  M1(0, 3) = -fidpoints_[0].y();
251  M1(1, 0) = 0.;
252  M1(1, 1) = 1.;
253  M1(1, 2) = +fidpoints_[0].y();
254  M1(1, 3) = +fidpoints_[0].x();
255  M1(2, 0) = 1.;
256  M1(2, 1) = 0.;
257  M1(2, 2) = +fidpoints_[1].x();
258  M1(2, 3) = -fidpoints_[1].y();
259  M1(3, 0) = 0.;
260  M1(3, 1) = 1.;
261  M1(3, 2) = +fidpoints_[1].y();
262  M1(3, 3) = +fidpoints_[1].x();
263  M2(0, 0) = 1.;
264  M2(0, 1) = 0.;
265  M2(0, 2) = +fidpoints_[2].x();
266  M2(0, 3) = -fidpoints_[2].y();
267  M2(1, 0) = 0.;
268  M2(1, 1) = 1.;
269  M2(1, 2) = +fidpoints_[2].y();
270  M2(1, 3) = +fidpoints_[2].x();
271  M2(2, 0) = 1.;
272  M2(2, 1) = 0.;
273  M2(2, 2) = +fidpoints_[3].x();
274  M2(2, 3) = -fidpoints_[3].y();
275  M2(3, 0) = 0.;
276  M2(3, 1) = 1.;
277  M2(3, 2) = +fidpoints_[3].y();
278  M2(3, 3) = +fidpoints_[3].x();
279 
280  //std::cout << "M1:\n" << M1 << std::endl;
281  //std::cout << "M2:\n" << M2 << std::endl;
282 
283  ROOT::Math::SVector<value_t, 4> mod_tr1, mod_tr2;
284  mod_tr1 = M1 * mod2;
285  mod_tr2 = M2 * mod1;
286  //std::cout << "mod_tr1: " << mod_tr1 << std::endl;
287  //std::cout << "mod_tr2: " << mod_tr2 << std::endl;
288 
289  fidpoint_t fidpointvec;
290  fidpointvec.push_back(coord_t(mod_tr1(0), mod_tr1(1)));
291  fidpointvec.push_back(coord_t(mod_tr1(2), mod_tr1(3)));
292  fidpointvec.push_back(coord_t(mod_tr2(0), mod_tr2(1)));
293  fidpointvec.push_back(coord_t(mod_tr2(2), mod_tr2(3)));
294 
295  doFit(fidpointvec);
296 }
std::vector< coord_t > fidpoint_t
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Point3DBase< value_t, LocalTag > coord_t
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
void doFit(const fidpoint_t &fidpointvec)
Invoke the fit.
std::vector< coord_t > fidpoints_
True position of the fiducial points on a sensor wrt. local frame (u,v)
SurveyPxbImageLocalFit::value_t SurveyPxbImageLocalFit::getChi2 ( )

returns the chi^2 of the fit

Definition at line 306 of file SurveyPxbImageLocalFit.cc.

References chi2_, and fitValidFlag_.

306  {
307  if (!fitValidFlag_)
308  throw std::logic_error(
309  "SurveyPxbImageLocalFit::getChi2(): Fit is not valid. Call doFit(...) before calling this function.");
310  return chi2_;
311 }
bool fitValidFlag_
Validity Flag.
value_t chi2_
chi2 of the local fit
const pede_label_t* SurveyPxbImageLocalFit::getGlobalDerivsLabelPtr ( count_t  i)
inline

Definition at line 58 of file SurveyPxbImageLocalFit.h.

References labelVec1_, and labelVec2_.

58 { return i < 4 ? &labelVec1_[0] : &labelVec2_[0]; };
std::vector< pede_label_t > labelVec2_
std::vector< pede_label_t > labelVec1_
Vector with labels to global derivs.
const pede_deriv_t* SurveyPxbImageLocalFit::getGlobalDerivsPtr ( count_t  i)
inline

Definition at line 57 of file SurveyPxbImageLocalFit.h.

References globalDerivsMatrix_, and nGlD.

57 { return globalDerivsMatrix_.Array() + i * nGlD; };
static const count_t nGlD
ROOT::Math::SMatrix< pede_deriv_t, nMsrmts, nGlD > globalDerivsMatrix_
Matrix with global derivs.
pede_label_t SurveyPxbImageLocalFit::getGlobalDerivsSize ( )
inline

Definition at line 55 of file SurveyPxbImageLocalFit.h.

References nGlD.

55 { return nGlD; };
static const count_t nGlD
const pede_deriv_t* SurveyPxbImageLocalFit::getLocalDerivsPtr ( count_t  i)
inline

Definition at line 56 of file SurveyPxbImageLocalFit.h.

References localDerivsMatrix_, and nLcD.

56 { return localDerivsMatrix_.Array() + i * nLcD; };
static const count_t nLcD
ROOT::Math::SMatrix< pede_deriv_t, nMsrmts, nLcD > localDerivsMatrix_
Matrix with local derivs.
pede_label_t SurveyPxbImageLocalFit::getLocalDerivsSize ( )
inline

Definition at line 54 of file SurveyPxbImageLocalFit.h.

References nLcD.

54 { return nLcD; };
static const count_t nLcD
SurveyPxbImageLocalFit::localpars_t SurveyPxbImageLocalFit::getLocalParameters ( )

returns local parameters after fit

Definition at line 298 of file SurveyPxbImageLocalFit.cc.

References a_, and fitValidFlag_.

298  {
299  if (!fitValidFlag_)
300  throw std::logic_error(
301  "SurveyPxbImageLocalFit::getLocalParameters(): Fit is not valid. Call doFit(...) before calling this "
302  "function.");
303  return a_;
304 }
bool fitValidFlag_
Validity Flag.
localpars_t a_
Local parameters.
pede_deriv_t SurveyPxbImageLocalFit::getResiduum ( count_t  i)
inline

Definition at line 59 of file SurveyPxbImageLocalFit.h.

References r.

59 { return (pede_deriv_t)r(i); };
ROOT::Math::SVector< value_t, nMsrmts > r
Vector of residuals.
pede_deriv_t SurveyPxbImageLocalFit::getSigma ( count_t  i)
inline

Definition at line 60 of file SurveyPxbImageLocalFit.h.

References SurveyPxbImage::sigma_x_, and SurveyPxbImage::sigma_y_.

60 { return i % 2 ? sigma_x_ : sigma_y_; };
value_t sigma_x_
Gaussian errors.
void SurveyPxbImageLocalFit::initFidPoints ( )
inlineprivate

Initialise the fiducial points.

Definition at line 96 of file SurveyPxbImageLocalFit.h.

References fidpoints_.

Referenced by SurveyPxbImageLocalFit().

96  {
97  fidpoints_[0] = coord_t(-0.91, -3.30);
98  fidpoints_[1] = coord_t(+0.91, -3.30);
99  fidpoints_[2] = coord_t(-0.91, +3.30);
100  fidpoints_[3] = coord_t(+0.91, +3.30);
101  }
Point3DBase< value_t, LocalTag > coord_t
std::vector< coord_t > fidpoints_
True position of the fiducial points on a sensor wrt. local frame (u,v)
bool SurveyPxbImageLocalFit::isFitValid ( )
inline

returns validity flag

Definition at line 46 of file SurveyPxbImageLocalFit.h.

References fitValidFlag_.

46 { return fitValidFlag_; };
bool fitValidFlag_
Validity Flag.
void SurveyPxbImageLocalFit::setGlobalDerivsToZero ( count_t  i)

Definition at line 320 of file SurveyPxbImageLocalFit.cc.

References globalDerivsMatrix_, mps_fire::i, nGlD, and nMsrmts.

320  {
321  if (!(j < nGlD))
322  throw std::range_error("SurveyPxbImageLocalFit::setLocalDerivsToZero(j): j out of range.");
323  for (count_t i = 0; i != nMsrmts; i++)
324  globalDerivsMatrix_(i, j) = 0;
325 }
static const count_t nGlD
ROOT::Math::SMatrix< pede_deriv_t, nMsrmts, nGlD > globalDerivsMatrix_
Matrix with global derivs.
static const count_t nMsrmts
void SurveyPxbImageLocalFit::setLocalDerivsToZero ( count_t  i)

Definition at line 313 of file SurveyPxbImageLocalFit.cc.

References mps_fire::i, localDerivsMatrix_, nLcD, and nMsrmts.

313  {
314  if (!(j < nLcD))
315  throw std::range_error("SurveyPxbImageLocalFit::setLocalDerivsToZero(j): j out of range.");
316  for (count_t i = 0; i != nMsrmts; i++)
317  localDerivsMatrix_(i, j) = 0;
318 }
static const count_t nLcD
static const count_t nMsrmts
ROOT::Math::SMatrix< pede_deriv_t, nMsrmts, nLcD > localDerivsMatrix_
Matrix with local derivs.

Member Data Documentation

localpars_t SurveyPxbImageLocalFit::a_
private

Local parameters.

Definition at line 67 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), and getLocalParameters().

value_t SurveyPxbImageLocalFit::chi2_
private

chi2 of the local fit

Definition at line 87 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), and getChi2().

bool SurveyPxbImageLocalFit::derivsValidFlag_
private

Definition at line 93 of file SurveyPxbImageLocalFit.h.

std::vector<coord_t> SurveyPxbImageLocalFit::fidpoints_
private

True position of the fiducial points on a sensor wrt. local frame (u,v)

Definition at line 84 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), and initFidPoints().

bool SurveyPxbImageLocalFit::fitValidFlag_
private

Validity Flag.

Definition at line 90 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), getChi2(), getLocalParameters(), and isFitValid().

ROOT::Math::SMatrix<pede_deriv_t, nMsrmts, nGlD> SurveyPxbImageLocalFit::globalDerivsMatrix_
private

Matrix with global derivs.

Definition at line 74 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), getGlobalDerivsPtr(), and setGlobalDerivsToZero().

std::vector<pede_label_t> SurveyPxbImageLocalFit::labelVec1_
private

Vector with labels to global derivs.

Definition at line 81 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), and getGlobalDerivsLabelPtr().

std::vector<pede_label_t> SurveyPxbImageLocalFit::labelVec2_
private

Definition at line 81 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), and getGlobalDerivsLabelPtr().

ROOT::Math::SMatrix<pede_deriv_t, nMsrmts, nLcD> SurveyPxbImageLocalFit::localDerivsMatrix_
private

Matrix with local derivs.

Definition at line 78 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), getLocalDerivsPtr(), and setLocalDerivsToZero().

const count_t SurveyPxbImageLocalFit::nFidpoints = 4
static

Definition at line 23 of file SurveyPxbImageLocalFit.h.

const count_t SurveyPxbImageLocalFit::nGlD = 3
static
const count_t SurveyPxbImageLocalFit::nLcD = 4
static
const count_t SurveyPxbImageLocalFit::nLcPars = 4
static

Definition at line 22 of file SurveyPxbImageLocalFit.h.

const count_t SurveyPxbImageLocalFit::nMsrmts = 8
static
ROOT::Math::SVector<value_t, nMsrmts> SurveyPxbImageLocalFit::r
private

Vector of residuals.

Definition at line 70 of file SurveyPxbImageLocalFit.h.

Referenced by doFit(), and getResiduum().