39 Short_t NpointsInFit = nHitsinTrack-NMAX <0 ? nHitsinTrack : NMAX;
40 bool mvdhit[NpointsInFit];
54 Short_t
i, j, ii, iii, nSttHits, nMvdHits;
57 float m1_result,m2_result, q1_result,q2_result, A1_result, A2_result;
63 cout<<
"from FitHelixCylinder,prima di rotazione, Evento "<<IVOLTE<<
", nHitsinTrack = "<<nHitsinTrack
64 <<
"\nfrom FitHelixCylinder, nPointsinFit = "<<NpointsInFit<<endl;
65 for(i=0 ; i< NpointsInFit ; i++) {
66 cout<<
" Xconformal["<<i<<
"] = "<<Xconformal[
i ]<<
67 "; Yconformal["<<i<<
"] = "<<Yconformal[
i ]<<
", drift radius conformal "<<
68 DriftRadiusconformal[
i]<<endl<<
"\tErrordiriftradiusconformal = "
69 <<ErrorDriftRadiusconformal[
i]<<endl;
76 if( nHitsinTrack < 2) {
81 rotationangle -=
PI/18.;
87 nSttHits = nMvdHits = 0;
88 for(i=0;i<NpointsInFit; i++){
89 Oxx[
i] = Xconformal[
i ] *cose +
91 Oyy[
i] = -Xconformal[
i ] *sine +
93 Delta[
i] = 3.*ErrorDriftRadiusconformal[
i ];
95 if( DriftRadiusconformal[ i ]<0. )
107 cout<<
"from FitHelixCylinder, dopo rotazione, Evento "<<IVOLTE
108 <<
", nHitsinTrack = "<<nHitsinTrack
109 <<
"\nfrom FitHelixCylinder, nPointsinFit = "<<NpointsInFit<<endl;
110 for(i=0 ; i< NpointsInFit ; i++) {
111 cout<<
" Ox["<<i<<
"] = "<<Oxx[
i ]<<
112 "; Oy["<<i<<
"] = "<<Oyy[
i ]<<
", Delta "<<
119 int NStructVar = 4 + 1 + nMvdHits * 2 + nSttHits *4 ;
123 int nRows = 1 + nMvdHits * 4 + nSttHits * 9;
125 int NStructRowsMax = 8*NpointsInFit ;
127 int NRowsInWhichStructVarArePresent[NStructVar];
128 int nRanges = nSttHits;
129 int nBounds=NpointsInFit+nSttHits+1;
136 sprintf(OBJECTname,
"OBJECT");
139 char * nameRows[nRows];
140 char auxnameRows[nRows][5];
142 double final_values[NStructVar];
143 char *StructVarName[NStructVar];
144 char auxStructVarName[NStructVar][8];
145 char *NameRowsInWhichStructVarArePresent[NStructVar*NStructRowsMax];
146 char aux[NStructVar*NStructRowsMax][5];
147 double Coefficients[NStructVar*NStructRowsMax];
149 double ValueB[nRows-1];
151 double ValueRanges[nRanges];
152 char* NameRanges[nRanges];
153 char auxNameRanges[nRanges][20];
156 double BoundValue[nBounds];
157 char *BoundStructVarName[nBounds];
158 char auxBoundStructVarName[nBounds][8];
159 char *TypeofBound[nBounds];
160 char auxTypeofBound[nBounds][20];
166 NRowsInWhichStructVarArePresent[0] =
167 NRowsInWhichStructVarArePresent[1] =
168 NRowsInWhichStructVarArePresent[2] =
169 NRowsInWhichStructVarArePresent[3] = nMvdHits*2 + nSttHits *4;
172 for(i=0; i< NpointsInFit ; i++) {
174 NRowsInWhichStructVarArePresent[4+ii]= 4;
176 NRowsInWhichStructVarArePresent[4+ii]= 5;
181 for(i=0; i< NpointsInFit ; i++) {
183 NRowsInWhichStructVarArePresent[4+ii]= 5;
189 for(i=0 ; i< nMvdHits+2*nSttHits ; i++) {
190 NRowsInWhichStructVarArePresent[4+ii+
i]= 5;
194 NRowsInWhichStructVarArePresent[4+ii+nMvdHits+2*nSttHits]= nMvdHits*4 + nSttHits*8;
200 nameRows[0]=OBJECTname;
202 for(i=0 , ii=0 ; i< NpointsInFit ; i++) {
205 typeRows[1+ii]=GLP_UP;typeRows[2+ii]=GLP_UP;typeRows[3+ii]=GLP_UP;typeRows[4+ii]=GLP_UP;
206 typeRows[5+ii]=GLP_LO;
208 sprintf(&(auxnameRows[1+ii][0]),
"A%d",i); nameRows[1+ii]=&auxnameRows[1+ii][0];
209 sprintf(&(auxnameRows[2+ii][0]),
"B%d",i); nameRows[2+ii]=&auxnameRows[2+ii][0];
210 sprintf(&(auxnameRows[3+ii][0]),
"C%d",i); nameRows[3+ii]=&auxnameRows[3+ii][0];
211 sprintf(&(auxnameRows[4+ii][0]),
"D%d",i); nameRows[4+ii]=&auxnameRows[4+ii][0];
215 typeRows[1+ii]=GLP_UP;typeRows[2+ii]=GLP_UP;typeRows[3+ii]=GLP_UP;typeRows[4+ii]=GLP_UP;
216 typeRows[5+ii]=GLP_UP;typeRows[6+ii]=GLP_UP;typeRows[7+ii]=GLP_UP;typeRows[8+ii]=GLP_UP;
217 typeRows[9+ii]=GLP_LO;
219 sprintf(&(auxnameRows[1+ii][0]),
"Ap%d",i); nameRows[1+ii]=&auxnameRows[1+ii][0];
220 sprintf(&(auxnameRows[2+ii][0]),
"Bp%d",i); nameRows[2+ii]=&auxnameRows[2+ii][0];
221 sprintf(&(auxnameRows[3+ii][0]),
"Cp%d",i); nameRows[3+ii]=&auxnameRows[3+ii][0];
222 sprintf(&(auxnameRows[4+ii][0]),
"Dp%d",i); nameRows[4+ii]=&auxnameRows[4+ii][0];
223 sprintf(&(auxnameRows[5+ii][0]),
"Am%d",i); nameRows[5+ii]=&auxnameRows[5+ii][0];
224 sprintf(&(auxnameRows[6+ii][0]),
"Bm%d",i); nameRows[6+ii]=&auxnameRows[6+ii][0];
225 sprintf(&(auxnameRows[7+ii][0]),
"Cm%d",i); nameRows[7+ii]=&auxnameRows[7+ii][0];
226 sprintf(&(auxnameRows[8+ii][0]),
"Dm%d",i); nameRows[8+ii]=&auxnameRows[8+ii][0];
227 sprintf(&(auxnameRows[9+ii][0]),
"LM%d",i); nameRows[9+ii]=&auxnameRows[9+ii][0];
242 for(i=0 ; i< NpointsInFit ; i++) {
249 Coefficients[ii]= Oxx[
i];
250 Coefficients[ii+1]= -Oxx[
i];
258 Coefficients[ii]= Oxx[
i];
259 Coefficients[ii+1]= Oxx[
i];
260 Coefficients[ii+2]= -Oxx[
i];
261 Coefficients[ii+3]= -Oxx[
i];
269 for(i=0, ii=0; i< NpointsInFit ; i++) {
273 Coefficients[NStructRowsMax+ii]= -Oxx[
i];
274 Coefficients[NStructRowsMax+ii+1]= Oxx[
i];
279 Coefficients[NStructRowsMax+ii]= -Oxx[
i];
280 Coefficients[NStructRowsMax+ii+1]= -Oxx[
i];
281 Coefficients[NStructRowsMax+ii+2]= Oxx[
i];
282 Coefficients[NStructRowsMax+ii+3]= Oxx[
i];
288 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
292 Coefficients[2*NStructRowsMax+ii]= 1.;
293 Coefficients[2*NStructRowsMax+ii+1]= -1.;
298 Coefficients[2*NStructRowsMax+ii]= 1.;
299 Coefficients[2*NStructRowsMax+ii+1]= 1.;
300 Coefficients[2*NStructRowsMax+ii+2]= -1.;
301 Coefficients[2*NStructRowsMax+ii+3]= -1.;
307 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
311 Coefficients[3*NStructRowsMax+ii]= -1.;
312 Coefficients[3*NStructRowsMax+ii+1]= 1.;
317 Coefficients[3*NStructRowsMax+ii]= -1.;
318 Coefficients[3*NStructRowsMax+ii+1]= -1.;
319 Coefficients[3*NStructRowsMax+ii+2]= 1.;
320 Coefficients[3*NStructRowsMax+ii+3]= 1.;
327 for(i=0 ; i< NpointsInFit ; i++) {
328 ii=(4+
i)*NStructRowsMax;
329 Coefficients[ii]= -M;
330 Coefficients[ii+1]= -M;
331 Coefficients[ii+2]= -M;
332 Coefficients[ii+3]= M;
341 if(! mvdhit[i]) Coefficients[ii+4]= 1.;
348 for(i=0 ; i< NpointsInFit ; i++) {
349 if( mvdhit[i])
continue;
353 Coefficients[ii]= -M;
354 Coefficients[ii+1]= -M;
355 Coefficients[ii+2]= -M;
356 Coefficients[ii+3]= M;
357 Coefficients[ii+4]= 1.;
360 for(i=0; i< NpointsInFit ; i++) {
374 Coefficients[ii]= 1./Delta[
i];
375 Coefficients[ii+1]= -1.;
376 Coefficients[ii+2]= -1.;
377 Coefficients[ii+3]= 1.;
378 Coefficients[ii+4]= -1.;
383 for(i=0 ; i< NpointsInFit ; i++) {
384 if( mvdhit[i])
continue;
388 Coefficients[ii]= 1./Delta[
i];
389 Coefficients[ii+1]= -1.;
390 Coefficients[ii+2]= -1.;
391 Coefficients[ii+3]= 1.;
392 Coefficients[ii+4]= -1.;
411 for(i=0, iii=0 ; i< NpointsInFit ; i++) {
413 Coefficients[ii+iii]= 1.;
414 Coefficients[ii+iii+1]= 1.;
415 Coefficients[ii+iii+2]= 1.;
416 Coefficients[ii+iii+3]= 1.;
419 Coefficients[ii+iii]= 1.;
420 Coefficients[ii+iii+1]= 1.;
421 Coefficients[ii+iii+2]= 1.;
422 Coefficients[ii+iii+3]= 1.;
423 Coefficients[ii+iii+4]= 1.;
424 Coefficients[ii+iii+5]= 1.;
425 Coefficients[ii+iii+6]= 1.;
426 Coefficients[ii+iii+7]= 1.;
435 sprintf(&auxStructVarName[0][0],
"m1",i);
436 StructVarName[0] = &auxStructVarName[0][0];
437 sprintf(&auxStructVarName[1][0],
"m2",i);
438 StructVarName[1] = &auxStructVarName[1][0];
440 sprintf(&auxStructVarName[2][0],
"q1",i);
441 StructVarName[2] = &auxStructVarName[2][0];
443 sprintf(&auxStructVarName[3][0],
"q2",i);
444 StructVarName[3] = &auxStructVarName[3][0];
445 for(i=0, ii=0; i< NpointsInFit ; i++) {
447 sprintf(&auxStructVarName[4+i][0],
"lam%d",i);
448 StructVarName[4+
i] = &auxStructVarName[4+
i][0];
450 sprintf(&auxStructVarName[4+nMvdHits+2*nSttHits+i][0],
"SIG%d",i);
451 StructVarName[4+nMvdHits+2*nSttHits+
i] = &auxStructVarName[4+nMvdHits+2*nSttHits+
i][0];
453 sprintf(&auxStructVarName[4+i][0],
"lamp%d",i);
454 StructVarName[4+
i] = &auxStructVarName[4+
i][0];
456 sprintf(&auxStructVarName[4+NpointsInFit+ii][0],
"lamm%d",i);
457 StructVarName[4+NpointsInFit+ii] = &auxStructVarName[4+NpointsInFit+ii][0];
459 sprintf(&auxStructVarName[4+nMvdHits+2*nSttHits+i][0],
"SIGp%d",i);
460 StructVarName[4+nMvdHits+2*nSttHits+
i] = &auxStructVarName[4+nMvdHits+2*nSttHits+
i][0];
462 sprintf(&auxStructVarName[4+NpointsInFit+nMvdHits+2*nSttHits+ii][0],
"SIGm%d",i);
463 StructVarName[4+NpointsInFit+nMvdHits+2*nSttHits+ii] =
464 &auxStructVarName[4+NpointsInFit+nMvdHits+2*nSttHits+ii][0];
470 sprintf(&auxStructVarName[NStructVar-1][0],
"DUM",i);
471 StructVarName[NStructVar-1] = &auxStructVarName[NStructVar-1][0];
479 for(j=0, ii=0; j< NpointsInFit;j++){
481 sprintf(&aux[i*NStructRowsMax+ii][0],
"A%d",j);
482 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii]=&aux[i*NStructRowsMax+ii][0];
483 sprintf(&aux[i*NStructRowsMax+ii+1][0],
"B%d",j);
484 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+1]=&aux[i*NStructRowsMax+ii+1][0];
487 sprintf(&aux[i*NStructRowsMax+ii][0],
"Ap%d",j);
488 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii]=&aux[i*NStructRowsMax+ii][0];
489 sprintf(&aux[i*NStructRowsMax+ii+1][0],
"Am%d",j);
490 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+1]=&aux[i*NStructRowsMax+ii+1][0];
491 sprintf(&aux[i*NStructRowsMax+ii+2][0],
"Bp%d",j);
492 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+2]=&aux[i*NStructRowsMax+ii+2][0];
493 sprintf(&aux[i*NStructRowsMax+ii+3][0],
"Bm%d",j);
494 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+3]=&aux[i*NStructRowsMax+ii+3][0];
501 for(i=0; i< NpointsInFit;i++){
503 sprintf(&aux[(i+4)*NStructRowsMax+0][0],
"A%d",i);
504 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+0]= &aux[(i+4)*NStructRowsMax+0][0];
505 sprintf(&aux[(i+4)*NStructRowsMax+1][0],
"B%d",i);
506 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+1]= &aux[(i+4)*NStructRowsMax+1][0];
507 sprintf(&aux[(i+4)*NStructRowsMax+2][0],
"C%d",i);
508 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+2]= &aux[(i+4)*NStructRowsMax+2][0];
509 sprintf(&aux[(i+4)*NStructRowsMax+3][0],
"D%d",i);
510 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+3]= &aux[(i+4)*NStructRowsMax+3][0];
512 sprintf(&aux[(i+4)*NStructRowsMax+0][0],
"Ap%d",i);
513 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+0]= &aux[(i+4)*NStructRowsMax+0][0];
514 sprintf(&aux[(i+4)*NStructRowsMax+1][0],
"Bp%d",i);
515 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+1]= &aux[(i+4)*NStructRowsMax+1][0];
516 sprintf(&aux[(i+4)*NStructRowsMax+2][0],
"Cp%d",i);
517 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+2]= &aux[(i+4)*NStructRowsMax+2][0];
518 sprintf(&aux[(i+4)*NStructRowsMax+3][0],
"Dp%d",i);
519 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+3]= &aux[(i+4)*NStructRowsMax+3][0];
520 sprintf(&aux[(i+4)*NStructRowsMax+4][0],
"LM%d",i);
521 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+4]= &aux[(i+4)*NStructRowsMax+4][0];
526 for(i=0, ii=0; i< NpointsInFit;i++){
527 if( mvdhit[i])
continue;
528 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax][0],
"Am%d",i);
529 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax]=
530 &aux[(ii+4+NpointsInFit)*NStructRowsMax][0];
531 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+1][0],
"Bm%d",i);
532 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+1]=
533 &aux[(ii+4+NpointsInFit)*NStructRowsMax+1][0];
534 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+2][0],
"Cm%d",i);
535 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+2]=
536 &aux[(ii+4+NpointsInFit)*NStructRowsMax+2][0];
537 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+3][0],
"Dm%d",i);
538 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+3]=
539 &aux[(ii+4+NpointsInFit)*NStructRowsMax+3][0];
540 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+4][0],
"LM%d",i);
541 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+4]=
542 &aux[(ii+4+NpointsInFit)*NStructRowsMax+4][0];
547 for(i=0; i< NpointsInFit;i++){
550 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax]=
552 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0],
"A%d",i);
553 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1]=
554 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0];
555 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0],
"B%d",i);
556 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2]=
557 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0];
558 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0],
"C%d",i);
559 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3]=
560 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0];
561 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0],
"D%d",i);
562 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4]=
563 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0];
566 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax]=
568 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0],
"Ap%d",i);
569 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1]=
570 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0];
571 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0],
"Bp%d",i);
572 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2]=
573 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0];
574 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0],
"Cp%d",i);
575 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3]=
576 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0];
577 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0],
"Dp%d",i);
578 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4]=
579 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0];
584 for(i=0, ii=0; i< NpointsInFit;i++){
585 if( mvdhit[i])
continue;
587 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax]=
590 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+1][0],
"Am%d",i);
591 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+1]=
592 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+1][0];
594 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+2][0],
"Bm%d",i);
595 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+2]=
596 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+2][0];
598 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+3][0],
"Cm%d",i);
599 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+3]=
600 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+3][0];
602 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+4][0],
"Dm%d",i);
603 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+4]=
604 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+4][0];
609 for(i=0, ii=0; i< NpointsInFit;i++){
611 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii][0],
"A%d",i);
612 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii]=
613 &aux[(NStructVar-1)*NStructRowsMax+ii][0];
615 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+1][0],
"B%d",i);
616 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+1]=
617 &aux[(NStructVar-1)*NStructRowsMax+ii+1][0];
619 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+2][0],
"C%d",i);
620 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+2]=
621 &aux[(NStructVar-1)*NStructRowsMax+ii+2][0];
623 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+3][0],
"D%d",i);
624 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+3]=
625 &aux[(NStructVar-1)*NStructRowsMax+ii+3][0];
628 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii][0],
"Ap%d",i);
629 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii]=
630 &aux[(NStructVar-1)*NStructRowsMax+ii][0];
632 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+1][0],
"Am%d",i);
633 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+1]=
634 &aux[(NStructVar-1)*NStructRowsMax+ii+1][0];
636 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+2][0],
"Bp%d",i);
637 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+2]=
638 &aux[(NStructVar-1)*NStructRowsMax+ii+2][0];
640 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+3][0],
"Bm%d",i);
641 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+3]=
642 &aux[(NStructVar-1)*NStructRowsMax+ii+3][0];
643 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+4][0],
"Cp%d",i);
644 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+4]=
645 &aux[(NStructVar-1)*NStructRowsMax+ii+4][0];
647 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+5][0],
"Cm%d",i);
648 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+5]=
649 &aux[(NStructVar-1)*NStructRowsMax+ii+5][0];
651 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+6][0],
"Dp%d",i);
652 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+6]=
653 &aux[(NStructVar-1)*NStructRowsMax+ii+6][0];
655 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+7][0],
"Dm%d",i);
656 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+7]=
657 &aux[(NStructVar-1)*NStructRowsMax+ii+7][0];
667 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
677 ValueB[ii] = Oyy[
i]+2.*M;
678 ValueB[ii+1]= -Oyy[
i]+2.*M;
679 ValueB[ii+2]= Delta[
i]+2.*M;
680 ValueB[ii+3]= M-Delta[
i]+2.*M;
691 ValueB[ii] = Oyy[
i]+DriftRadiusconformal[
i ]+2.*M;
692 ValueB[ii+1]= -Oyy[
i]-DriftRadiusconformal[
i ]+2.*M;
693 ValueB[ii+2]= Delta[
i]+2.*M;
694 ValueB[ii+3]= M-Delta[
i]+2.*M;
706 ValueB[ii+4]= Oyy[
i]-DriftRadiusconformal[
i ]+2.*M;
707 ValueB[ii+5]= -Oyy[
i]+DriftRadiusconformal[
i ]+2.*M;
708 ValueB[ii+6]= Delta[
i]+2.*M;
709 ValueB[ii+7]= M-Delta[
i]+2.*M;
720 for(i=0 , ii=0; i< NpointsInFit ; i++) {
721 if( mvdhit[i])
continue;
725 sprintf(&auxNameRanges[ii][0],
"LM%d",i);
726 NameRanges[ii]=&auxNameRanges[ii][0];
734 for(i=0 ; i< NpointsInFit ; i++) {
737 sprintf(&auxTypeofBound[i][0],
"BV"); TypeofBound[
i]= &auxTypeofBound[
i][0];
738 sprintf(&auxBoundStructVarName[i][0],
"lam%d",i);
741 sprintf(&auxTypeofBound[i][0],
"BV"); TypeofBound[
i]= &auxTypeofBound[
i][0];
742 sprintf(&auxBoundStructVarName[i][0],
"lamp%d",i);
745 BoundStructVarName[
i]=&auxBoundStructVarName[
i][0];
750 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
751 if( mvdhit[i])
continue;
753 sprintf(&auxTypeofBound[ii+NpointsInFit][0],
"BV");
754 TypeofBound[ii+NpointsInFit]= &auxTypeofBound[ii+NpointsInFit][0];
755 sprintf(&auxBoundStructVarName[ii+NpointsInFit][0],
"lamm%d",i);
756 BoundStructVarName[ii+NpointsInFit]=&auxBoundStructVarName[ii+NpointsInFit][0];
757 BoundValue[ii+NpointsInFit]=0.;
762 sprintf(&auxTypeofBound[NpointsInFit+nSttHits][0],
"FX");
763 TypeofBound[NpointsInFit+nSttHits]= &auxTypeofBound[NpointsInFit+nSttHits][0];
765 sprintf(&auxTypeofBound[NpointsInFit+nSttHits][0],
"FX");
766 TypeofBound[NpointsInFit+nSttHits]= &auxTypeofBound[NpointsInFit+nSttHits][0];
768 sprintf(&auxBoundStructVarName[NpointsInFit+nSttHits][0],
"DUM");
769 BoundStructVarName[NpointsInFit+nSttHits]=
770 &auxBoundStructVarName[NpointsInFit+nSttHits][0];
771 BoundValue[NpointsInFit+nSttHits]=2.*M;
782 cout<<
"n. punti nel fit "<<NpointsInFit<<endl;
785 cout<<
"nRows "<<nRows<<endl;
786 for(
int ic =0;ic<nRows; ic++){
787 cout<<
"n. Row "<<ic<<
", nameRows "<<nameRows[ic]<<
", typeRows "<<typeRows[ic]<<endl;
790 cout<<
"NStructRowsMax, NStructVar "<<NStructRowsMax<<
", "<<NStructVar<<endl;
791 for(
int ic =0;ic<NStructVar; ic++){
792 cout<<
"NRowsInWhichStructVarArePresent "<<NRowsInWhichStructVarArePresent[ic]
793 <<
", nome var. strut. n."<<ic<<
" = "
794 <<StructVarName[ic]<<endl;
796 for(
int jc=0; jc<NRowsInWhichStructVarArePresent[ic];jc++){
797 cout<<
"n. "<<jc<<
" NameRowsInWhichStructVarArePresent "
798 <<NameRowsInWhichStructVarArePresent[ic*NStructRowsMax+jc]<<endl;
803 cout<<
"n Coefficient "<<21*nMvdHits+24*nSttHits<<endl;
805 for(
int ic =0;ic<NStructVar; ic++){
806 cout<<
"Struct. Var."<< StructVarName[ic] <<
" e' presente in "
807 << NRowsInWhichStructVarArePresent[ic]<<
" Rows;"<<endl;
808 for(ii=0;ii<NRowsInWhichStructVarArePresent[ic];ii++){
810 cout<<
"\tin Row "<<NameRowsInWhichStructVarArePresent[ic*NStructRowsMax+ii]
811 <<
", ha Coefficient "<<Coefficients[ic*NStructRowsMax+ii]<<
812 " (n. sequenziale = "<<iii<<
")"<<endl;
817 cout<<
"n valuesB "<<nRows-1<<endl;
818 for(
int ic =0;ic<nRows-1; ic++){
819 cout<<
"n. "<<ic<<
", valuesB "<<ValueB[ic]<<endl;
821 cout<<
"n ranges "<<nRanges<<endl;
822 for(
int ic =0;ic<nRanges; ic++){
823 cout<<
"n. "<<ic<<
", RANGES "<<ValueRanges[ic]<<endl;
825 cout<<
"n Bounds "<<nBounds<<endl;
826 for(
int ic =0;ic<nBounds; ic++){
827 cout<<
"n. "<<ic<<
", Bounds "<<BoundValue[ic]<<endl;
828 cout<<
"n. "<<ic<<
", Bound Type "<<TypeofBound[ic]<<endl;
829 cout<<
"n. "<<ic<<
", Bound Name "<<BoundStructVarName[ic]<<endl;
849 NRowsInWhichStructVarArePresent,
851 NameRowsInWhichStructVarArePresent,
866 if(status != 0) { *Type=
false;
return -5 ;}
871 printf(
"from FitHelixCylinder printout dopo glp_main -------------------------------\n");
872 printf(
" number of structural variables %d\n",NStructVar);
874 for(ica=0;ica<NStructVar;ica++){
875 printf(
"name of structural variable %s and its final value %g\n",
876 StructVarName[ica], final_values[ica]);
878 printf(
"from FitHelixCylinder printout dopo glp_main -------------------------------\n");
899 m1_result = final_values[0];
900 m2_result = final_values[1];
901 q1_result = final_values[2];
902 q2_result = final_values[3];
904 if(istampa>2) cout<<
"Results : m1 = "<<m1_result<<
", m2= "<<m2_result<<
", q1 = "<<q1_result<<
905 ", q2 = "<<q2_result<<endl;
908 if( final_values[0]==0. && final_values[1]==0. && final_values[2]==0. &&final_values[3]==0. )
909 { *Type =
false;
return -10;}
914 *qu = q1_result - q2_result;
915 *emme = m1_result-m2_result ;
918 if(
fabs( *qu ) > 1.e-10) {
919 *pAlfa = *emme/(*qu);
924 *pAlfa = *pAlfa*cose - *pBeta*sine;
925 *pBeta = alfetta*sine + *pBeta*cose;
928 }
else if(
fabs(*emme)> 1.e-10) {
930 angle = atan(*emme) + rotationangle;
931 if(
fabs(
cos(angle)) > 1.e-10 ) {
933 *pBeta = -(*pAlfa)/tan(angle);
951 *pGamma += (trajectory_vertex[0]*trajectory_vertex[0]+ trajectory_vertex[1]*trajectory_vertex[1]
952 -*pAlfa*trajectory_vertex[0]-*pBeta*trajectory_vertex[1]);
953 *pAlfa -= 2.*trajectory_vertex[0];
954 *pBeta -= 2.*trajectory_vertex[1];
957 if(
fabs(cose-*emme*sine)> 1.e-10) {
958 *qu=*qu/(cose-*emme*sine);
959 *emme=(*emme*cose+sine)/(cose-*emme*sine);
962 if(
fabs(sine+*emme*cose) < 1.e-10) {
963 cout<<
" From FitHelixCylinder, equation of XY circle : X**2 + Y**2 =0,"
964 <<
" situation impossible in principle! Returning -1"
970 *qu = *qu/(sine+*emme*cose);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
friend F32vec4 fabs(const F32vec4 &a)