1355 {
1361 printf("## Micro-track search ##\n");
1362
1363
1364
1365 int seg_already_exist=0;
1366 for(
int i=0;i<
t->N();i++)
if(
t->GetSegment(i)->Plate()==ipl) seg_already_exist++;
1367 if(seg_already_exist){
1368 printf(" A segment is already reconstructed in the track. No search is done.\n\n");
1369 return -1;
1370 }
1371
1372
1374 printf("searching plate %d is out of brick. stop.\n", ipl);
1375 return -1;
1376 }
1377
1379 if(ret==-1) {
1380 printf("ScanSet error. stop.\n");
1381 return -1;
1382 }
1384
1385
1386
1388
1389
1390 int flag_scanned=0;
1391 for(
int i=0;i<sc->
eIDS.GetEntries();i++){
1393 if(ipl==
id->ePlate) flag_scanned++;
1394 }
1395 if(flag_scanned==0) {
1396
1397 printf("Plate %d is not scanned.\n", ipl);
1398 return -1;
1399 }
1400
1401
1402
1403
1404 printf(" Segment pl=%d target_pl=%d\n",app->Plate(), ipl);
1405
1406
1407
1408
1409
1410
1411
1412
1413
1415 printf("No affine parameters found. stop.\n");
1416 return -1;
1417 }
1418
1421
1422
1425
1428
1430
1432 app_tr.Transform(&aff_vid0);
1433
1435 spred.SetPlate(ipl);
1436 spred.PropagateTo(z);
1437
1438 spred.Transform(&aff_vid1);
1439
1440
1441
1442
1443
1444
1445
1446
1447
1449 EdbSegP fndbt,fnds1,fnds2,snewpred;
1450 int idp[4]={id.eBrick, ipl, id.eMajor, id.eMinor};
1452
1454 if (status==-1) {
1455 printf(" *** MICROTRACK SEARCH ***\n");
1456 printf(" ***** NOTHING FOUND *****\n");
1457 if(gEve) gEve->SetStatusLine(Form("Nothing found on pl%02d. prediction from pl%02d",
1458 ipl, app->Plate()));
1459 }
1460 else {
1461 printf(" \n");
1462 printf(" Status = %d, Candidate found\n", status);
1463 printf(" Prediction (local) -> Plate = %2d, X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f\n",
1464 spred.Plate(), spred.X(), spred.Y(), spred.TX(), spred.TY());
1465 printf(" Found (local) -> Plate = %2d, X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f\n",
1466 ipl, snewpred.
X(), snewpred.
Y(), snewpred.
TX(), snewpred.
TY());
1467 printf(" Residual %8.1f, %8.1f, %7.4f, %7.4f\n",
1468 spred.X()-snewpred.
X(), spred.Y()-snewpred.
Y(), spred.TX()-snewpred.
TX(), spred.TY()-snewpred.
TY());
1469
1470
1473 printf(" Found (global) -> Plate = %2d, X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f\n\n",
1474 ipl, snewpred.
X(), snewpred.
Y(), snewpred.
TX(), snewpred.
TY());
1475 }
1476
1477
1478 if(status==0){
1480
1483 snewpred0->
SetErrors(1.,1.,10.,0.002,0.002);
1484 snewpred0->
SetDZ(-214);
1485
1486 t->AddSegment(snewpred0);
1489
1490 printf("## BASETRACK found ##\n");
1491 printf(" MT Top : X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f, W = %2.0f, Chi2 = %5.2f,\n",
1492 fnds1.
X(),fnds1.
Y(),fnds1.
TX(),fnds1.
TY(),fnds1.
W(),fnds1.
Chi2());
1493 printf(" MT Bot : X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f, W = %2.0f, Chi2 = %5.2f,\n",
1494 fnds2.
X(),fnds2.
Y(),fnds2.
TX(),fnds2.
TY(),fnds2.
W(),fnds2.
Chi2());
1495
1496 if(gEve) gEve->SetStatusLine(Form("Basetrack found on pl %d. (W,Chi2)= Top(%d,%.2f) Bot(%d,%.2f)",
1497 ipl, (
int)fnds1.
W(), fnds1.
Chi2(), (
int)fnds2.
W(), fnds2.
Chi2()));
1498 }
1499
1500 if(status==1){
1502
1504 snewpred1->
SetErrors(1.,1.,10.,0.002,0.002);
1506 snewpred1->
SetDZ(-107);
1507 snewpred1->
SetAid(snewpred1->
Aid(0), snewpred1->
Aid(1), status);
1508 t->AddSegment(snewpred1);
1511
1512 printf("## MICROTRACK Top found ##\n");
1513 printf(
" MT Top : X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f, W = %2.0f, Chi2 = %5.2f,\n",fnds1.
X(),fnds1.
Y(),fnds1.
TX(),fnds1.
TY(),fnds1.
W(),fnds1.
Chi2());
1514 if(gEve) gEve->SetStatusLine(Form("Microtrack Top found on pl %d. (W,Chi2)=(%d,%.2f)",
1515 ipl,(
int)fnds1.
W(), fnds1.
Chi2()));
1516 }
1517
1518 if(status==2){
1520
1522 snewpred2->
SetErrors(1.,1.,10.,0.002,0.002);
1524 snewpred2->
SetDZ(-107);
1525 snewpred2->
SetAid(snewpred2->
Aid(0), snewpred2->
Aid(1), status);
1526
1527 t->AddSegment(snewpred2);
1530 printf("## MICROTRACK Bottom found ## \n");
1531 printf(
" MT Bot : X = %8.1f, Y = %8.1f, TX = %7.4f, TY = %7.4f, W = %2.0f, Chi2 = %5.2f\n",fnds2.
X(),fnds2.
Y(),fnds2.
TX(),fnds2.
TY(),fnds2.
W(),fnds2.
Chi2());
1532 if(gEve) gEve->SetStatusLine(Form(
"Microtrack Bottom found on pl %d. (W,Chi2)=(%d,%.2f)", ipl, (
int)fnds2.
W(), fnds2.
Chi2()));
1533 }
1534
1535 printf("\nMicrotrack search end.\n\n");
1536
1537 return status;
1538}
Definition: EdbAffine.h:17
void Invert()
Definition: EdbAffine.cxx:103
void Print(Option_t *opt="") const
Definition: EdbAffine.cxx:52
int GetPID(int ipl)
Definition: EdbEDA.h:276
EdbAffine2D * GetAffine(int ipl)
Definition: EdbEDA.C:197
int GetLastPlate()
Definition: EdbEDA.h:241
EdbRunTracking eRunTracking
Run Tracking for microtrack search.
Definition: EdbEDATrackSet.h:62
EdbID & GetID()
Definition: EdbEDATrackSet.h:464
EdbScanSet * GetScanSet()
Definition: EdbEDATrackSet.h:471
EdbScanProc * ScanProc()
Definition: EdbEDA.h:578
int FindPrediction(EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred)
Definition: EdbRunTracking.cxx:326
scanned data processing
Definition: EdbScanProc.h:12
bool InitRunAccess(EdbRunAccess &ra, int id[4], bool do_update=false)
Definition: EdbScanProc.cxx:2317
Definition: EdbScanSet.h:11
EdbID * GetID(Int_t i)
Definition: EdbScanSet.h:46
TList eIDS
list of the identifiers to be processed
Definition: EdbScanSet.h:16
void SetPID(int pid)
Definition: EdbSegP.h:129
void SetErrors()
Definition: EdbSegP.h:90
Float_t Chi2() const
Definition: EdbSegP.h:157
void SetZ(float z)
Definition: EdbSegP.h:125
void SetDZ(float dz)
Definition: EdbSegP.h:126
Float_t W() const
Definition: EdbSegP.h:151
Int_t Aid(int i) const
Definition: EdbSegP.h:169
void SetAid(int a, int v, int side=0)
Definition: EdbSegP.h:138
virtual void Transform(const EdbAffine2D *a)
EdbScanProc * sproc
Definition: comptonmap.cpp:29
UInt_t id
Definition: tlg2couples.C:117