The minimization of the equation system for the barrel. For documentation, please refer to the TkLasATModel TWiki page: TWiki > CMS Web > CMSTrackerLaserAlignmenSystem > TkLasBarrelAlgorithm > TkLasATModel
36 std::cout <<
" [LASBarrelAlgorithm::CalculateParameters] -- Starting." << std::endl;
56 minuit->mnexcm(
"SET PRI", arglist, 1, _ierflg );
60 minuit->mnexcm(
"SET ERR", arglist ,1, _ierflg );
68 static float _vstart[52] = {
69 0.00, 0.00, 0.0, 0.0, 0.0, 0.0,
70 0.00, 0.00, 0.0, 0.0, 0.0, 0.0,
71 0.00, 0.00, 0.0, 0.0, 0.0, 0.0,
72 0.00, 0.00, 0.0, 0.0, 0.0, 0.0,
73 0.00, 0.00, 0.0, 0.0, 0.0, 0.0,
74 0.00, 0.00, 0.0, 0.0, 0.0, 0.0,
75 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
76 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
86 static float _vstep[52] = {
87 0.001, 0.001, 0.1, 0.1, 0.1, 0.1,
88 0.001, 0.001, 0.1, 0.1, 0.1, 0.1,
89 0.001, 0.001, 0.1, 0.1, 0.1, 0.1,
90 0.001, 0.001, 0.1, 0.1, 0.1, 0.1,
91 0.001, 0.001, 0.1, 0.1, 0.1, 0.1,
92 0.001, 0.001, 0.1, 0.1, 0.1, 0.1,
93 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
94 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001
101 minuit->mnparm( 0,
"subRot1TIB+", _vstart[0], _vstep[0], 0, 0, _ierflg );
103 minuit->mnparm( 1,
"subRot2TIB+", _vstart[1], _vstep[1], 0, 0, _ierflg );
105 minuit->mnparm( 2,
"subTransX1TIB+", _vstart[2], _vstep[2], 0, 0, _ierflg );
107 minuit->mnparm( 3,
"subTransX2TIB+", _vstart[3], _vstep[3], 0, 0, _ierflg );
109 minuit->mnparm( 4,
"subTransY1TIB+", _vstart[4], _vstep[4], 0, 0, _ierflg );
111 minuit->mnparm( 5,
"subTransY2TIB+", _vstart[5], _vstep[5], 0, 0, _ierflg );
116 minuit->mnparm( 6,
"subRot1TIB-", _vstart[6], _vstep[6], 0, 0, _ierflg );
118 minuit->mnparm( 7,
"subRot2TIB-", _vstart[7], _vstep[7], 0, 0, _ierflg );
120 minuit->mnparm( 8,
"subTransX1TIB-", _vstart[8], _vstep[8], 0, 0, _ierflg );
122 minuit->mnparm( 9,
"subTransX2TIB-", _vstart[9], _vstep[9], 0, 0, _ierflg );
124 minuit->mnparm( 10,
"subTransY1TIB-", _vstart[10], _vstep[10], 0, 0, _ierflg );
126 minuit->mnparm( 11,
"subTransY2TIB-", _vstart[11], _vstep[11], 0, 0, _ierflg );
131 minuit->mnparm( 12,
"subRot1TOB+", _vstart[12], _vstep[12], 0, 0, _ierflg );
133 minuit->mnparm( 13,
"subRot2TOB+", _vstart[13], _vstep[13], 0, 0, _ierflg );
135 minuit->mnparm( 14,
"subTransX1TOB+", _vstart[14], _vstep[14], 0, 0, _ierflg );
137 minuit->mnparm( 15,
"subTransX2TOB+", _vstart[15], _vstep[15], 0, 0, _ierflg );
139 minuit->mnparm( 16,
"subTransY1TOB+", _vstart[16], _vstep[16], 0, 0, _ierflg );
141 minuit->mnparm( 17,
"subTransY2TOB+", _vstart[17], _vstep[17], 0, 0, _ierflg );
146 minuit->mnparm( 18,
"subRot1TOB-", _vstart[18], _vstep[18], 0, 0, _ierflg );
148 minuit->mnparm( 19,
"subRot2TOB-", _vstart[19], _vstep[19], 0, 0, _ierflg );
150 minuit->mnparm( 20,
"subTransX1TOB-", _vstart[20], _vstep[20], 0, 0, _ierflg );
152 minuit->mnparm( 21,
"subTransX2TOB-", _vstart[21], _vstep[21], 0, 0, _ierflg );
154 minuit->mnparm( 22,
"subTransY1TOB-", _vstart[22], _vstep[22], 0, 0, _ierflg );
156 minuit->mnparm( 23,
"subTransY2TOB-", _vstart[23], _vstep[23], 0, 0, _ierflg );
161 minuit->mnparm( 24,
"subRot1TEC+", _vstart[24], _vstep[24], 0, 0, _ierflg );
163 minuit->mnparm( 25,
"subRot2TEC+", _vstart[25], _vstep[25], 0, 0, _ierflg );
165 minuit->mnparm( 26,
"subTransX1TEC+", _vstart[26], _vstep[26], 0, 0, _ierflg );
167 minuit->mnparm( 27,
"subTransX2TEC+", _vstart[27], _vstep[27], 0, 0, _ierflg );
169 minuit->mnparm( 28,
"subTransY1TEC+", _vstart[28], _vstep[28], 0, 0, _ierflg );
171 minuit->mnparm( 29,
"subTransY2TEC+", _vstart[29], _vstep[29], 0, 0, _ierflg );
176 minuit->mnparm( 30,
"subRot1TEC-", _vstart[30], _vstep[30], 0, 0, _ierflg );
178 minuit->mnparm( 31,
"subRot2TEC-", _vstart[31], _vstep[31], 0, 0, _ierflg );
180 minuit->mnparm( 32,
"subTransX1TEC-", _vstart[32], _vstep[32], 0, 0, _ierflg );
182 minuit->mnparm( 33,
"subTransX2TEC-", _vstart[33], _vstep[33], 0, 0, _ierflg );
184 minuit->mnparm( 34,
"subTransY1TEC-", _vstart[34], _vstep[34], 0, 0, _ierflg );
186 minuit->mnparm( 35,
"subTransY2TEC-", _vstart[35], _vstep[35], 0, 0, _ierflg );
192 minuit->mnparm( 36,
"beamRot1Beam0", _vstart[36], _vstep[36], 0, 0, _ierflg );
194 minuit->mnparm( 37,
"beamRot2Beam0", _vstart[37], _vstep[37], 0, 0, _ierflg );
197 minuit->mnparm( 38,
"beamRot1Beam1", _vstart[38], _vstep[38], 0, 0, _ierflg );
199 minuit->mnparm( 39,
"beamRot2Beam1", _vstart[39], _vstep[39], 0, 0, _ierflg );
202 minuit->mnparm( 40,
"beamRot1Beam2", _vstart[40], _vstep[40], 0, 0, _ierflg );
204 minuit->mnparm( 41,
"beamRot2Beam2", _vstart[41], _vstep[41], 0, 0, _ierflg );
207 minuit->mnparm( 42,
"beamRot1Beam3", _vstart[42], _vstep[42], 0, 0, _ierflg );
209 minuit->mnparm( 43,
"beamRot2Beam3", _vstart[43], _vstep[43], 0, 0, _ierflg );
212 minuit->mnparm( 44,
"beamRot1Beam4", _vstart[44], _vstep[44], 0, 0, _ierflg );
214 minuit->mnparm( 45,
"beamRot2Beam4", _vstart[45], _vstep[45], 0, 0, _ierflg );
217 minuit->mnparm( 46,
"beamRot1Beam5", _vstart[46], _vstep[46], 0, 0, _ierflg );
219 minuit->mnparm( 47,
"beamRot2Beam5", _vstart[47], _vstep[47], 0, 0, _ierflg );
222 minuit->mnparm( 48,
"beamRot1Beam6", _vstart[48], _vstep[48], 0, 0, _ierflg );
224 minuit->mnparm( 49,
"beamRot2Beam6", _vstart[49], _vstep[49], 0, 0, _ierflg );
227 minuit->mnparm( 50,
"beamRot1Beam7", _vstart[50], _vstep[50], 0, 0, _ierflg );
229 minuit->mnparm( 51,
"beamRot2Beam7", _vstart[51], _vstep[51], 0, 0, _ierflg );
235 arglist[0] = 26; arglist[1] = 28; arglist[2] = 30;
237 arglist[0] = 31; arglist[1] = 33; arglist[2] = 35;
246 for(
int par = 37; par <= 52; ++par ) parlist[par-37] = par;
247 minuit->mnexcm(
"FIX", parlist ,16, _ierflg );
262 minuit->mnexcm(
"MIGRAD", arglist , 2, _ierflg );
268 double par = 0., parError = 0.;
330 std::cout <<
" [LASBarrelAlgorithm::CalculateParameters] -- Done." << std::endl;
std::pair< double, double > & GetParameter(int aSubdetector, int aDisk, int aParameter)
void fcn(int &npar, double *gin, double &f, double *par, int iflag)
LASGlobalData< LASCoordinateSet > * aMeasuredCoordinates
LASGlobalData< LASCoordinateSet > * aNominalCoordinates