10 #define PI 3.141592654
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);
987 Short_t nSkewHitsinTrack,
1003 Short_t NpointsInFit = nSkewHitsinTrack-NMAX <0 ? nSkewHitsinTrack : NMAX;
1006 bool mvdhit[NpointsInFit];
1023 Delta[NpointsInFit];
1025 Short_t
i, j, ii, iii,
n, nSttHits, nMvdHits;
1028 float m1_result,m2_result, q1_result,q2_result, A1_result, A2_result;
1032 if(nSkewHitsinTrack==0) {
1033 cout<<
"from FitSZspace, Evento "<<IVOLTE<<endl;
1034 cout<<
"from PndTrkGlpkFits::FitSZspace : no points in fit, return!\n";
1066 rotationangle =
PI/2.;
1077 nSttHits = nMvdHits = 0;
1078 for(i=0;i<NpointsInFit; i++){
1079 Oxx[
i] = Z[
i]*cose +(S[
i] - FInot)*sine;
1080 Oyy[
i] = -Z[
i]*sine +(S[
i] - FInot)*cose;
1081 Delta[
i] = ErrorDriftRadius[
i];
1086 if( DriftRadius[i]<0. )
1102 int NStructVar = 4 + 1 + nMvdHits * 2 + nSttHits *4 ;
1106 int nRows = 1 + nMvdHits * 4 + nSttHits * 9;
1112 sprintf(OBJECTname,
"OBJECT");
1114 int typeRows[nRows];
1115 char * nameRows[nRows];
1116 char auxnameRows[nRows][5];
1118 int NStructRowsMax = 8*NpointsInFit ;
1120 double final_values[NStructVar];
1121 int NRowsInWhichStructVarArePresent[NStructVar];
1122 char *StructVarName[NStructVar];
1123 char auxStructVarName[NStructVar][8];
1124 char *NameRowsInWhichStructVarArePresent[NStructVar*NStructRowsMax];
1125 char aux[NStructVar*NStructRowsMax][5];
1126 double Coefficients[NStructVar*NStructRowsMax];
1129 double ValueB[nRows-1];
1131 int nRanges = nSttHits;
1132 double ValueRanges[nRanges];
1133 char *NameRanges[nRanges];
1134 char auxNameRanges[nRanges][20];
1137 int nBounds=NpointsInFit+nSttHits+1+2;
1138 double BoundValue[nBounds];
1139 char *BoundStructVarName[nBounds];
1140 char auxBoundStructVarName[nBounds][8];
1141 char *TypeofBound[nBounds];
1142 char auxTypeofBound[nBounds][20];
1151 NRowsInWhichStructVarArePresent[0] =
1152 NRowsInWhichStructVarArePresent[1] =
1153 NRowsInWhichStructVarArePresent[2] =
1154 NRowsInWhichStructVarArePresent[3] = nMvdHits*2 + nSttHits *4;
1156 for(i=0,ii=0; i< NpointsInFit ; i++) {
1158 NRowsInWhichStructVarArePresent[4+ii]= 4;
1160 NRowsInWhichStructVarArePresent[4+ii]= 5;
1166 for(i=0; i< NpointsInFit ; i++) {
1168 NRowsInWhichStructVarArePresent[4+ii]= 5;
1175 for(i=0 ; i< nMvdHits+2*nSttHits ; i++) {
1176 NRowsInWhichStructVarArePresent[4+ii+
i]= 5;
1179 NRowsInWhichStructVarArePresent[4+ii+nMvdHits+2*nSttHits]= nMvdHits*4 + nSttHits*8;
1212 nameRows[0]=OBJECTname;
1214 for(i=0 , ii=0 ; i< NpointsInFit ; i++) {
1217 typeRows[1+ii]=GLP_UP;typeRows[2+ii]=GLP_UP;typeRows[3+ii]=GLP_UP;typeRows[4+ii]=GLP_UP;
1218 typeRows[5+ii]=GLP_LO;
1220 sprintf(&(auxnameRows[1+ii][0]),
"A%d",i); nameRows[1+ii]=&auxnameRows[1+ii][0];
1221 sprintf(&(auxnameRows[2+ii][0]),
"B%d",i); nameRows[2+ii]=&auxnameRows[2+ii][0];
1222 sprintf(&(auxnameRows[3+ii][0]),
"C%d",i); nameRows[3+ii]=&auxnameRows[3+ii][0];
1223 sprintf(&(auxnameRows[4+ii][0]),
"D%d",i); nameRows[4+ii]=&auxnameRows[4+ii][0];
1227 typeRows[1+ii]=GLP_UP;typeRows[2+ii]=GLP_UP;typeRows[3+ii]=GLP_UP;typeRows[4+ii]=GLP_UP;
1228 typeRows[5+ii]=GLP_UP;typeRows[6+ii]=GLP_UP;typeRows[7+ii]=GLP_UP;typeRows[8+ii]=GLP_UP;
1229 typeRows[9+ii]=GLP_LO;
1231 sprintf(&(auxnameRows[1+ii][0]),
"Ap%d",i); nameRows[1+ii]=&auxnameRows[1+ii][0];
1232 sprintf(&(auxnameRows[2+ii][0]),
"Bp%d",i); nameRows[2+ii]=&auxnameRows[2+ii][0];
1233 sprintf(&(auxnameRows[3+ii][0]),
"Cp%d",i); nameRows[3+ii]=&auxnameRows[3+ii][0];
1234 sprintf(&(auxnameRows[4+ii][0]),
"Dp%d",i); nameRows[4+ii]=&auxnameRows[4+ii][0];
1235 sprintf(&(auxnameRows[5+ii][0]),
"Am%d",i); nameRows[5+ii]=&auxnameRows[5+ii][0];
1236 sprintf(&(auxnameRows[6+ii][0]),
"Bm%d",i); nameRows[6+ii]=&auxnameRows[6+ii][0];
1237 sprintf(&(auxnameRows[7+ii][0]),
"Cm%d",i); nameRows[7+ii]=&auxnameRows[7+ii][0];
1238 sprintf(&(auxnameRows[8+ii][0]),
"Dm%d",i); nameRows[8+ii]=&auxnameRows[8+ii][0];
1239 sprintf(&(auxnameRows[9+ii][0]),
"LM%d",i); nameRows[9+ii]=&auxnameRows[9+ii][0];
1254 for(i=0 ; i< NpointsInFit ; i++) {
1261 Coefficients[ii]= Oxx[
i];
1262 Coefficients[ii+1]= -Oxx[
i];
1270 Coefficients[ii]= Oxx[
i];
1271 Coefficients[ii+1]= Oxx[
i];
1272 Coefficients[ii+2]= -Oxx[
i];
1273 Coefficients[ii+3]= -Oxx[
i];
1281 for(i=0, ii=0; i< NpointsInFit ; i++) {
1285 Coefficients[NStructRowsMax+ii]= -Oxx[
i];
1286 Coefficients[NStructRowsMax+ii+1]= Oxx[
i];
1291 Coefficients[NStructRowsMax+ii]= -Oxx[
i];
1292 Coefficients[NStructRowsMax+ii+1]= -Oxx[
i];
1293 Coefficients[NStructRowsMax+ii+2]= Oxx[
i];
1294 Coefficients[NStructRowsMax+ii+3]= Oxx[
i];
1300 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
1304 Coefficients[2*NStructRowsMax+ii]= 1.;
1305 Coefficients[2*NStructRowsMax+ii+1]= -1.;
1310 Coefficients[2*NStructRowsMax+ii]= 1.;
1311 Coefficients[2*NStructRowsMax+ii+1]= 1.;
1312 Coefficients[2*NStructRowsMax+ii+2]= -1.;
1313 Coefficients[2*NStructRowsMax+ii+3]= -1.;
1319 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
1323 Coefficients[3*NStructRowsMax+ii]= -1.;
1324 Coefficients[3*NStructRowsMax+ii+1]= 1.;
1329 Coefficients[3*NStructRowsMax+ii]= -1.;
1330 Coefficients[3*NStructRowsMax+ii+1]= -1.;
1331 Coefficients[3*NStructRowsMax+ii+2]= 1.;
1332 Coefficients[3*NStructRowsMax+ii+3]= 1.;
1339 for(i=0 ; i< NpointsInFit ; i++) {
1340 ii=(4+
i)*NStructRowsMax;
1341 Coefficients[ii]= -M;
1342 Coefficients[ii+1]= -M;
1343 Coefficients[ii+2]= -M;
1344 Coefficients[ii+3]= M;
1354 if(! mvdhit[i]) Coefficients[ii+4]= 1.;
1361 for(i=0 ; i< NpointsInFit ; i++) {
1362 if( mvdhit[i])
continue;
1363 ii+= NStructRowsMax;
1366 Coefficients[ii]= -M;
1367 Coefficients[ii+1]= -M;
1368 Coefficients[ii+2]= -M;
1369 Coefficients[ii+3]= M;
1370 Coefficients[ii+4]= 1.;
1373 for(i=0; i< NpointsInFit ; i++) {
1374 ii+= NStructRowsMax;
1388 Coefficients[ii]= 1./Delta[
i];
1389 Coefficients[ii+1]= -1.;
1390 Coefficients[ii+2]= -1.;
1391 Coefficients[ii+3]= 1.;
1392 Coefficients[ii+4]= -1.;
1397 for(i=0 ; i< NpointsInFit ; i++) {
1398 if( mvdhit[i])
continue;
1399 ii+= NStructRowsMax;
1404 Coefficients[ii]= 1./Delta[
i];
1405 Coefficients[ii+1]= -1.;
1406 Coefficients[ii+2]= -1.;
1407 Coefficients[ii+3]= 1.;
1408 Coefficients[ii+4]= -1.;
1426 ii+= NStructRowsMax;
1427 for(i=0, iii=0 ; i< NpointsInFit ; i++) {
1429 Coefficients[ii+iii]= 1.;
1430 Coefficients[ii+iii+1]= 1.;
1431 Coefficients[ii+iii+2]= 1.;
1432 Coefficients[ii+iii+3]= 1.;
1435 Coefficients[ii+iii]= 1.;
1436 Coefficients[ii+iii+1]= 1.;
1437 Coefficients[ii+iii+2]= 1.;
1438 Coefficients[ii+iii+3]= 1.;
1439 Coefficients[ii+iii+4]= 1.;
1440 Coefficients[ii+iii+5]= 1.;
1441 Coefficients[ii+iii+6]= 1.;
1442 Coefficients[ii+iii+7]= 1.;
1451 sprintf(&auxStructVarName[0][0],
"m1",i);
1452 StructVarName[0] = &auxStructVarName[0][0];
1453 sprintf(&auxStructVarName[1][0],
"m2",i);
1454 StructVarName[1] = &auxStructVarName[1][0];
1456 sprintf(&auxStructVarName[2][0],
"q1",i);
1457 StructVarName[2] = &auxStructVarName[2][0];
1459 sprintf(&auxStructVarName[3][0],
"q2",i);
1460 StructVarName[3] = &auxStructVarName[3][0];
1461 for(i=0, ii=0; i< NpointsInFit ; i++) {
1463 sprintf(&auxStructVarName[4+i][0],
"lam%d",i);
1464 StructVarName[4+
i] = &auxStructVarName[4+
i][0];
1466 sprintf(&auxStructVarName[4+nMvdHits+2*nSttHits+i][0],
"SIG%d",i);
1467 StructVarName[4+nMvdHits+2*nSttHits+
i] = &auxStructVarName[4+nMvdHits+2*nSttHits+
i][0];
1469 sprintf(&auxStructVarName[4+i][0],
"lamp%d",i);
1470 StructVarName[4+
i] = &auxStructVarName[4+
i][0];
1472 sprintf(&auxStructVarName[4+NpointsInFit+ii][0],
"lamm%d",i);
1473 StructVarName[4+NpointsInFit+ii] = &auxStructVarName[4+NpointsInFit+ii][0];
1475 sprintf(&auxStructVarName[4+nMvdHits+2*nSttHits+i][0],
"SIGp%d",i);
1476 StructVarName[4+nMvdHits+2*nSttHits+
i] = &auxStructVarName[4+nMvdHits+2*nSttHits+
i][0];
1478 sprintf(&auxStructVarName[4+NpointsInFit+nMvdHits+2*nSttHits+ii][0],
"SIGm%d",i);
1479 StructVarName[4+NpointsInFit+nMvdHits+2*nSttHits+ii] =
1480 &auxStructVarName[4+NpointsInFit+nMvdHits+2*nSttHits+ii][0];
1486 sprintf(&auxStructVarName[NStructVar-1][0],
"DUM",i);
1487 StructVarName[NStructVar-1] = &auxStructVarName[NStructVar-1][0];
1494 for(i=0; i< 4; i++){
1495 for(j=0, ii=0; j< NpointsInFit;j++){
1497 sprintf(&aux[i*NStructRowsMax+ii][0],
"A%d",j);
1498 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii]=&aux[i*NStructRowsMax+ii][0];
1499 sprintf(&aux[i*NStructRowsMax+ii+1][0],
"B%d",j);
1500 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+1]=&aux[i*NStructRowsMax+ii+1][0];
1503 sprintf(&aux[i*NStructRowsMax+ii][0],
"Ap%d",j);
1504 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii]=&aux[i*NStructRowsMax+ii][0];
1505 sprintf(&aux[i*NStructRowsMax+ii+1][0],
"Am%d",j);
1506 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+1]=&aux[i*NStructRowsMax+ii+1][0];
1507 sprintf(&aux[i*NStructRowsMax+ii+2][0],
"Bp%d",j);
1508 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+2]=&aux[i*NStructRowsMax+ii+2][0];
1509 sprintf(&aux[i*NStructRowsMax+ii+3][0],
"Bm%d",j);
1510 NameRowsInWhichStructVarArePresent[i*NStructRowsMax+ii+3]=&aux[i*NStructRowsMax+ii+3][0];
1517 for(i=0; i< NpointsInFit;i++){
1519 sprintf(&aux[(i+4)*NStructRowsMax+0][0],
"A%d",i);
1520 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+0]= &aux[(i+4)*NStructRowsMax+0][0];
1521 sprintf(&aux[(i+4)*NStructRowsMax+1][0],
"B%d",i);
1522 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+1]= &aux[(i+4)*NStructRowsMax+1][0];
1523 sprintf(&aux[(i+4)*NStructRowsMax+2][0],
"C%d",i);
1524 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+2]= &aux[(i+4)*NStructRowsMax+2][0];
1525 sprintf(&aux[(i+4)*NStructRowsMax+3][0],
"D%d",i);
1526 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+3]= &aux[(i+4)*NStructRowsMax+3][0];
1528 sprintf(&aux[(i+4)*NStructRowsMax+0][0],
"Ap%d",i);
1529 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+0]= &aux[(i+4)*NStructRowsMax+0][0];
1530 sprintf(&aux[(i+4)*NStructRowsMax+1][0],
"Bp%d",i);
1531 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+1]= &aux[(i+4)*NStructRowsMax+1][0];
1532 sprintf(&aux[(i+4)*NStructRowsMax+2][0],
"Cp%d",i);
1533 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+2]= &aux[(i+4)*NStructRowsMax+2][0];
1534 sprintf(&aux[(i+4)*NStructRowsMax+3][0],
"Dp%d",i);
1535 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+3]= &aux[(i+4)*NStructRowsMax+3][0];
1536 sprintf(&aux[(i+4)*NStructRowsMax+4][0],
"LM%d",i);
1537 NameRowsInWhichStructVarArePresent[(i+4)*NStructRowsMax+4]= &aux[(i+4)*NStructRowsMax+4][0];
1542 for(i=0, ii=0; i< NpointsInFit;i++){
1543 if( mvdhit[i])
continue;
1544 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax][0],
"Am%d",i);
1545 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax]= &aux[(ii+4+NpointsInFit)*NStructRowsMax][0];
1546 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+1][0],
"Bm%d",i);
1547 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+1]= &aux[(ii+4+NpointsInFit)*NStructRowsMax+1][0];
1548 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+2][0],
"Cm%d",i);
1549 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+2]= &aux[(ii+4+NpointsInFit)*NStructRowsMax+2][0];
1550 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+3][0],
"Dm%d",i);
1551 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+3]= &aux[(ii+4+NpointsInFit)*NStructRowsMax+3][0];
1552 sprintf(&aux[(ii+4+NpointsInFit)*NStructRowsMax+4][0],
"LM%d",i);
1553 NameRowsInWhichStructVarArePresent[(ii+4+NpointsInFit)*NStructRowsMax+4]= &aux[(ii+4+NpointsInFit)*NStructRowsMax+4][0];
1558 for(i=0; i< NpointsInFit;i++){
1561 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax]=
1563 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0],
"A%d",i);
1564 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1]=
1565 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0];
1566 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0],
"B%d",i);
1567 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2]=
1568 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0];
1569 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0],
"C%d",i);
1570 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3]=
1571 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0];
1572 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0],
"D%d",i);
1573 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4]=
1574 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0];
1577 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax]=
1579 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0],
"Ap%d",i);
1580 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1]=
1581 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+1][0];
1582 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0],
"Bp%d",i);
1583 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2]=
1584 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+2][0];
1585 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0],
"Cp%d",i);
1586 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3]=
1587 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+3][0];
1588 sprintf(&aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0],
"Dp%d",i);
1589 NameRowsInWhichStructVarArePresent[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4]=
1590 &aux[(i+4+NpointsInFit+nSttHits)*NStructRowsMax+4][0];
1595 for(i=0, ii=0; i< NpointsInFit;i++){
1596 if( mvdhit[i])
continue;
1598 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax]=
1601 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+1][0],
"Am%d",i);
1602 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+1]=
1603 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+1][0];
1605 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+2][0],
"Bm%d",i);
1606 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+2]=
1607 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+2][0];
1609 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+3][0],
"Cm%d",i);
1610 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+3]=
1611 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+3][0];
1613 sprintf(&aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+4][0],
"Dm%d",i);
1614 NameRowsInWhichStructVarArePresent[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+4]=
1615 &aux[(ii+4+2*NpointsInFit+nSttHits)*NStructRowsMax+4][0];
1620 for(i=0, ii=0; i< NpointsInFit;i++){
1622 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii][0],
"A%d",i);
1623 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii]=
1624 &aux[(NStructVar-1)*NStructRowsMax+ii][0];
1626 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+1][0],
"B%d",i);
1627 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+1]=
1628 &aux[(NStructVar-1)*NStructRowsMax+ii+1][0];
1630 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+2][0],
"C%d",i);
1631 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+2]=
1632 &aux[(NStructVar-1)*NStructRowsMax+ii+2][0];
1634 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+3][0],
"D%d",i);
1635 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+3]=
1636 &aux[(NStructVar-1)*NStructRowsMax+ii+3][0];
1639 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii][0],
"Ap%d",i);
1640 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii]=
1641 &aux[(NStructVar-1)*NStructRowsMax+ii][0];
1643 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+1][0],
"Am%d",i);
1644 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+1]=
1645 &aux[(NStructVar-1)*NStructRowsMax+ii+1][0];
1647 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+2][0],
"Bp%d",i);
1648 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+2]=
1649 &aux[(NStructVar-1)*NStructRowsMax+ii+2][0];
1651 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+3][0],
"Bm%d",i);
1652 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+3]=
1653 &aux[(NStructVar-1)*NStructRowsMax+ii+3][0];
1654 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+4][0],
"Cp%d",i);
1655 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+4]=
1656 &aux[(NStructVar-1)*NStructRowsMax+ii+4][0];
1658 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+5][0],
"Cm%d",i);
1659 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+5]=
1660 &aux[(NStructVar-1)*NStructRowsMax+ii+5][0];
1662 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+6][0],
"Dp%d",i);
1663 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+6]=
1664 &aux[(NStructVar-1)*NStructRowsMax+ii+6][0];
1666 sprintf(&aux[(NStructVar-1)*NStructRowsMax+ii+7][0],
"Dm%d",i);
1667 NameRowsInWhichStructVarArePresent[(NStructVar-1)*NStructRowsMax+ii+7]=
1668 &aux[(NStructVar-1)*NStructRowsMax+ii+7][0];
1678 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
1688 ValueB[ii] = Oyy[
i]+2.*M;
1689 ValueB[ii+1]= -Oyy[
i]+2.*M;
1690 ValueB[ii+2]= Delta[
i]+2.*M;
1691 ValueB[ii+3]= M-Delta[
i]+2.*M;
1702 ValueB[ii] = Oyy[
i]+DriftRadius[
i ]+2.*M;
1703 ValueB[ii+1]= -Oyy[
i]-DriftRadius[
i ]+2.*M;
1704 ValueB[ii+2]= Delta[
i]+2.*M;
1705 ValueB[ii+3]= M-Delta[
i]+2.*M;
1717 ValueB[ii+4]= Oyy[
i]-DriftRadius[
i ]+2.*M;
1718 ValueB[ii+5]= -Oyy[
i]+DriftRadius[
i ]+2.*M;
1719 ValueB[ii+6]= Delta[
i]+2.*M;
1720 ValueB[ii+7]= M-Delta[
i]+2.*M;
1731 for(i=0 , ii=0; i< NpointsInFit ; i++) {
1732 if( mvdhit[i])
continue;
1736 sprintf(&auxNameRanges[ii][0],
"LM%d",i);
1737 NameRanges[ii]=&auxNameRanges[ii][0];
1745 for(i=0 ; i< NpointsInFit ; i++) {
1748 sprintf(&auxTypeofBound[i][0],
"BV"); TypeofBound[
i]= &auxTypeofBound[
i][0];
1749 sprintf(&auxBoundStructVarName[i][0],
"lam%d",i);
1752 sprintf(&auxTypeofBound[i][0],
"BV"); TypeofBound[
i]= &auxTypeofBound[
i][0];
1753 sprintf(&auxBoundStructVarName[i][0],
"lamp%d",i);
1756 BoundStructVarName[
i]=&auxBoundStructVarName[
i][0];
1761 for(i=0, ii=0 ; i< NpointsInFit ; i++) {
1762 if( mvdhit[i])
continue;
1764 sprintf(&auxTypeofBound[ii+NpointsInFit][0],
"BV");
1765 TypeofBound[ii+NpointsInFit]= &auxTypeofBound[ii+NpointsInFit][0];
1766 sprintf(&auxBoundStructVarName[ii+NpointsInFit][0],
"lamm%d",i);
1767 BoundStructVarName[ii+NpointsInFit]=&auxBoundStructVarName[ii+NpointsInFit][0];
1768 BoundValue[ii+NpointsInFit]=0.;
1773 sprintf(&auxTypeofBound[NpointsInFit+nSttHits][0],
"FX");
1774 TypeofBound[NpointsInFit+nSttHits]= &auxTypeofBound[NpointsInFit+nSttHits][0];
1776 sprintf(&auxTypeofBound[NpointsInFit+nSttHits][0],
"FX");
1777 TypeofBound[NpointsInFit+nSttHits]= &auxTypeofBound[NpointsInFit+nSttHits][0];
1779 sprintf(&auxBoundStructVarName[NpointsInFit+nSttHits][0],
"DUM");
1780 BoundStructVarName[NpointsInFit+nSttHits]=&auxBoundStructVarName[NpointsInFit+nSttHits][0];
1781 BoundValue[NpointsInFit+nSttHits]=2.*M;
1785 sprintf(&auxTypeofBound[NpointsInFit+nSttHits+1][0],
"FX");
1786 TypeofBound[NpointsInFit+nSttHits+1]=&auxTypeofBound[NpointsInFit+nSttHits+1][0];
1787 sprintf(&auxBoundStructVarName[NpointsInFit+nSttHits+1][0],
"q1");
1788 BoundStructVarName[NpointsInFit+nSttHits+1]=&auxBoundStructVarName[NpointsInFit+nSttHits+1][0];
1789 BoundValue[NpointsInFit+nSttHits+1]= 0.;
1792 sprintf(&auxTypeofBound[NpointsInFit+nSttHits+2][0],
"FX");
1793 TypeofBound[NpointsInFit+nSttHits+2]=&auxTypeofBound[NpointsInFit+nSttHits+2][0];
1794 sprintf(&auxBoundStructVarName[NpointsInFit+nSttHits+2][0],
"q2");
1795 BoundStructVarName[NpointsInFit+nSttHits+2]=&auxBoundStructVarName[NpointsInFit+nSttHits+2][0];
1796 BoundValue[NpointsInFit+nSttHits+2]= 0.;
1875 nRows,nameRows,typeRows,
1876 NStructVar, NStructRowsMax, NRowsInWhichStructVarArePresent,
1877 StructVarName, NameRowsInWhichStructVarArePresent,
1880 nRanges, ValueRanges, NameRanges,
1881 nBounds, BoundValue, BoundStructVarName, TypeofBound
1887 if (status != 0)
return -5;
1907 m1_result=final_values[0];
1908 m2_result=final_values[1];
1913 *emme = m1_result-m2_result ;
1916 if(
fabs(cose-*emme*sine)> 1.e-10) {
1917 *emme=((*emme)*cose+sine)/(cose-(*emme)*sine);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
Short_t FitSZspace(Short_t nSkewHitsinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t *ErrorDriftRadius, Double_t FInot, Short_t NMAX, Double_t *emme, int IVOLTE)
Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal, Double_t rotationangle, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE)
friend F32vec4 fabs(const F32vec4 &a)