20 minuit =
new TMinuit( 52 );
36 std::cout <<
" [LASBarrelAlgorithm::CalculateParameters] -- Starting." << std::endl;
46 aMeasuredCoordinates = &measuredCoordinates;
47 aNominalCoordinates = &nominalCoordinates;
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;
343 void fcn(
int &npar,
double *gin,
double &
f,
double *par,
int iflag ) {
345 double chisquare = 0.;
349 int det,
beam, pos, disk;
357 std::vector<std::vector<std::vector<double> > > endFaceZPositions( 4, std::vector<std::vector<double> >( 2, std::vector<double>( 2, 0. ) ) );
358 endFaceZPositions.at( 0 ).at( 0 ).at( 0 ) = 1322.5;
359 endFaceZPositions.at( 0 ).at( 0 ).at( 1 ) = 2667.5;
360 endFaceZPositions.at( 1 ).at( 0 ).at( 0 ) = -2667;
361 endFaceZPositions.at( 1 ).at( 0 ).at( 1 ) = -1322.5;
362 endFaceZPositions.at( 2 ).at( 1 ).at( 0 ) = -700.;
363 endFaceZPositions.at( 2 ).at( 1 ).at( 1 ) = -300.;
364 endFaceZPositions.at( 2 ).at( 0 ).at( 0 ) = 300.;
365 endFaceZPositions.at( 2 ).at( 0 ).at( 1 ) = 700.;
366 endFaceZPositions.at( 3 ).at( 1 ).at( 0 ) = -1090.;
367 endFaceZPositions.at( 3 ).at( 1 ).at( 1 ) = -300.;
368 endFaceZPositions.at( 3 ).at( 0 ).at( 0 ) = 300.;
369 endFaceZPositions.at( 3 ).at( 0 ).at( 1 ) = 1090.;
372 std::vector<double> disk9EndFaceZPositions( 2, 0. );
373 disk9EndFaceZPositions.at( 0 ) = -2667.5;
374 disk9EndFaceZPositions.at( 1 ) = 2667.5;
377 double detReducedZ[2] = { 0., 0. };
379 double beamReducedZ[2] = { 0., 0. };
382 det = 2; beam = 0; pos = 0;
386 const int theSide = pos<3 ? 0 : 1;
390 const double radialOffset = det==2 ? 50. : 36.;
393 detReducedZ[0] = aMeasuredCoordinates->
GetTIBTOBEntry( det, beam, pos ).
GetZ() - endFaceZPositions.at( det ).at( theSide ).at( 0 );
394 detReducedZ[0] /= ( endFaceZPositions.at( det ).at( theSide ).at( 1 ) - endFaceZPositions.at( det ).at( theSide ).at( 0 ) );
395 detReducedZ[1] = endFaceZPositions.at( det ).at( theSide ).at( 1 ) - aMeasuredCoordinates->
GetTIBTOBEntry( det, beam, pos ).
GetZ();
396 detReducedZ[1] /= ( endFaceZPositions.at( det ).at( theSide ).at( 1 ) - endFaceZPositions.at( det ).at( theSide ).at( 0 ) );
399 beamReducedZ[0] = ( aMeasuredCoordinates->
GetTIBTOBEntry( det, beam, pos ).
GetZ() - radialOffset ) - disk9EndFaceZPositions.at( 0 );
400 beamReducedZ[0] /= ( disk9EndFaceZPositions.at( 1 ) - disk9EndFaceZPositions.at( 0 ) );
401 beamReducedZ[1] = disk9EndFaceZPositions.at( 1 ) - ( aMeasuredCoordinates->
GetTIBTOBEntry( det, beam, pos ).
GetZ() - radialOffset );
402 beamReducedZ[1] /= ( disk9EndFaceZPositions.at( 1 ) - disk9EndFaceZPositions.at( 0 ) );
406 const double measuredResidual = aMeasuredCoordinates->
GetTIBTOBEntry( det, beam, pos ).
GetPhi() -
415 double calculatedResidual = 0.;
424 if( theSide == 0 ) indexBase = 0;
425 if( theSide == 1 ) indexBase = 6;
428 if( theSide == 0 ) indexBase = 12;
429 if( theSide == 1 ) indexBase = 18;
433 calculatedResidual += detReducedZ[1] * par[indexBase+0];
436 calculatedResidual += detReducedZ[0] * par[indexBase+1];
439 calculatedResidual += detReducedZ[1] *
sin( currentPhi ) / currentR * par[indexBase+2];
442 calculatedResidual += detReducedZ[0] *
sin( currentPhi ) / currentR * par[indexBase+3];
445 calculatedResidual += -1. * detReducedZ[1] *
cos( currentPhi ) / currentR * par[indexBase+4];
448 calculatedResidual += -1. * detReducedZ[0] *
cos( currentPhi ) / currentR * par[indexBase+5];
452 indexBase = 36 + beam * 2;
457 calculatedResidual += beamReducedZ[1] * par[indexBase];
460 calculatedResidual += beamReducedZ[0] * par[indexBase+1];
466 }
while( moduleLoop.
TIBTOBLoop( det, beam, pos ) );
473 det = 0; beam = 0; disk = 0;
477 const int theSide = 0;
480 detReducedZ[0] = aMeasuredCoordinates->
GetTEC2TECEntry( det, beam, disk ).
GetZ() - endFaceZPositions.at( det ).at( theSide ).at( 0 );
481 detReducedZ[0] /= ( endFaceZPositions.at( det ).at( theSide ).at( 1 ) - endFaceZPositions.at( det ).at( theSide ).at( 0 ) );
482 detReducedZ[1] = endFaceZPositions.at( det ).at( theSide ).at( 1 ) - aMeasuredCoordinates->
GetTEC2TECEntry( det, beam, disk ).
GetZ();
483 detReducedZ[1] /= ( endFaceZPositions.at( det ).at( theSide ).at( 1 ) - endFaceZPositions.at( det ).at( theSide ).at( 0 ) );
486 beamReducedZ[0] = aMeasuredCoordinates->
GetTEC2TECEntry( det, beam, disk ).
GetZ() - disk9EndFaceZPositions.at( 0 );
487 beamReducedZ[0] /= ( disk9EndFaceZPositions.at( 1 ) - disk9EndFaceZPositions.at( 0 ) );
488 beamReducedZ[1] = disk9EndFaceZPositions.at( 1 ) - aMeasuredCoordinates->
GetTEC2TECEntry( det, beam, disk ).
GetZ();
489 beamReducedZ[1] /= ( disk9EndFaceZPositions.at( 1 ) - disk9EndFaceZPositions.at( 0 ) );
501 double calculatedResidual = 0.;
509 calculatedResidual += detReducedZ[1] * (det==0 ? par[24] : par[30]);
512 calculatedResidual += detReducedZ[0] * (det==0 ? par[25] : par[31]);
515 calculatedResidual += detReducedZ[1] *
sin( currentPhi ) * (det==0 ? par[26] : par[32]) / currentR;
518 calculatedResidual += detReducedZ[0] *
sin( currentPhi ) * (det==0 ? par[27] : par[33]) / currentR;
521 calculatedResidual += -1. * detReducedZ[1] *
cos( currentPhi ) * (det==0 ? par[28] : par[34]) / currentR;
524 calculatedResidual += -1. * detReducedZ[0] *
cos( currentPhi ) * (det==0 ? par[29] : par[35]) / currentR;
527 const unsigned int indexBase = 36 + beam * 2;
532 calculatedResidual += beamReducedZ[1] * par[indexBase];
535 calculatedResidual += beamReducedZ[0] * par[indexBase+1];
542 }
while( moduleLoop.
TEC2TECLoop( det, beam, disk ) );
561 std::cerr <<
" [LASBarrelAlgorithm::Dump] ** WARNING: minimizer object uninitialized." << std::endl;
565 std::cout << std::endl <<
" [LASBarrelAlgorithm::Dump] -- Parameter dump: " << std::endl;
567 const int subdetParMap[6] = { 24, 30, 0, 6, 12, 18 };
568 const std::string subdetNames[6] = {
" TEC+ ",
" TEC- ",
" TIB+ ",
" TIB- ",
" TOB+ ",
" TOB- " };
571 std::cout <<
" Detector parameters: " << std::endl;
572 std::cout <<
" -------------------" << std::endl;
573 std::cout <<
" Values: PHI1 X1 Y1 PHI2 X2 Y2 " << std::endl;
574 for(
int subdet = 0; subdet < 6; ++subdet ) {
576 for(
int par = subdetParMap[subdet]; par <= subdetParMap[subdet] + 4; par += 2 ) {
577 minuit->GetParameter( par, value, error );
578 std::cout << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
value;
580 for(
int par = subdetParMap[subdet] + 1; par <= subdetParMap[subdet] + 5; par += 2 ) {
581 minuit->GetParameter( par, value, error );
582 std::cout << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
value;
587 std::cout <<
" Errors: PHI1 X1 Y1 PHI2 X2 Y2 " << std::endl;
588 for(
int subdet = 0; subdet < 6; ++subdet ) {
590 for(
int par = subdetParMap[subdet]; par <= subdetParMap[subdet] + 4; par += 2 ) {
591 minuit->GetParameter( par, value, error );
592 std::cout << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
error;
594 for(
int par = subdetParMap[subdet] + 1; par <= subdetParMap[subdet] + 5; par += 2 ) {
595 minuit->GetParameter( par, value, error );
596 std::cout << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
error;
602 std::cout <<
" Beam parameters: " << std::endl;
603 std::cout <<
" ---------------" << std::endl;
604 std::cout <<
" Values: PHI1 PHI2" << std::endl;
607 for(
int z = 0;
z < 2; ++
z ) {
608 minuit->GetParameter( 36 + 2 * beam +
z, value, error );
609 std::cout << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
value;
614 std::cout <<
" Errors: PHI1 PHI2" << std::endl;
617 for(
int z = 0;
z < 2; ++
z ) {
618 minuit->GetParameter( 36 + 2 * beam +
z, value, error );
619 std::cout << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
error;
627 std::ofstream
file(
"/afs/cern.ch/user/o/olzem/public/parameters_det.txt" );
628 for(
int subdet = 0; subdet < 6; ++subdet ) {
629 for(
int par = subdetParMap[subdet]; par <= subdetParMap[subdet] + 4; par += 2 ) {
630 minuit->GetParameter( par, value, error );
631 file << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
value;
633 for(
int par = subdetParMap[subdet] + 1; par <= subdetParMap[subdet] + 5; par += 2 ) {
634 minuit->GetParameter( par, value, error );
635 file << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
value;
642 file.open(
"/afs/cern.ch/user/o/olzem/public/parameters_beam.txt" );
644 for(
int z = 0;
z < 2; ++
z ) {
645 minuit->GetParameter( 36 + 2 *
beam +
z, value, error );
646 file << std::setw( 12 ) << std::setprecision( 6 ) << std::fixed <<
value;
653 std:: cout <<
" [LASBarrelAlgorithm::Dump] -- End parameter dump." << std::endl;
675 std::ifstream
file( filename );
677 std::cerr <<
" [LASBarrelAlgorithm::ReadMisalignmentFromFile] ** ERROR: cannot open file \"" << filename <<
"\"." << std::endl;
681 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
682 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
683 std::cerr <<
" [LASBarrelAlgorithm::ReadMisalignmentFromFile] ** WARNING: you are reading a fake measurement from a file!" << std::endl;
684 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
685 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
690 measuredCoordinates = nominalCoordinates;
697 det = 0; ring = 0; beam = 0; disk = 0;
700 }
while( moduleLoop.
TECLoop( det, ring, beam, disk ) );
702 det = 2; beam = 0; pos = 0;
705 }
while( moduleLoop.
TIBTOBLoop( det, beam, pos ) );
707 det = 0; beam = 0; disk = 0;
710 }
while( moduleLoop.
TEC2TECLoop( det, beam, disk ) );
716 double phi, phiError;
718 while( !file.eof() ) {
721 if( file.eof() )
break;
724 file >>
phi; file >> phiError;
760 std::ifstream
file( filename );
762 std::cerr <<
" [LASBarrelAlgorithm::ReadStartParametersFromFile] ** ERROR: cannot open file \"" << filename <<
"\"." << std::endl;
766 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
767 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
768 std::cerr <<
" [LASBarrelAlgorithm::ReadStartParametersFrom File] ** WARNING: you are reading parameter start values from a file!" << std::endl;
769 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
770 std::cerr <<
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" << std::endl;
773 const int subdetParMap[6] = { 24, 30, 0, 6, 12, 18 };
775 for(
int det = 0; det < 6; ++det ) {
776 file >> values[subdetParMap[det]];
777 file >> values[subdetParMap[det]+2];
778 file >> values[subdetParMap[det]+4];
779 file >> values[subdetParMap[det]+1];
780 file >> values[subdetParMap[det]+3];
781 file >> values[subdetParMap[det]+5];
std::pair< double, double > & GetParameter(int aSubdetector, int aDisk, int aParameter)
void SetPhiError(double aPhiError)
Sin< T >::type sin(const T &t)
LASGlobalData< LASCoordinateSet > * aMeasuredCoordinates
void ReadMisalignmentFromFile(const char *, LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &)
double GetPhi(void) const
LASGlobalData< LASCoordinateSet > * aNominalCoordinates
LASBarrelAlignmentParameterSet CalculateParameters(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &)
bool TEC2TECLoop(int &, int &, int &) const
Cos< T >::type cos(const T &t)
void ReadStartParametersFromFile(const char *, float[52])
T & GetTIBTOBEntry(int subdetector, int beam, int tibTobPosition)
T & GetTEC2TECEntry(int subdetector, int beam, int tecDisk)
void fcn(int &, double *, double &, double *, int)
T & GetTECEntry(int subdetector, int tecRing, int beam, int tecDisk)
bool TECLoop(int &, int &, int &, int &) const
bool TIBTOBLoop(int &, int &, int &) const
double GetPhiError(void) const
Power< A, B >::type pow(const A &a, const B &b)