333{
334 Int_t Over_p[72000];
335 Int_t Over_n[72000];
336 Int_t Over_copy[72000];
337 Int_t NumU=5;
338 Int_t NumV=5;
339 Float_t b_ref_p = -127.0;
340 Float_t b_ref_n = -127.0;
341 Float_t OvU;
342 Float_t OvV;
343 Float_t b_pos;
344 Float_t b_neg;
349 Float_t b_pos_silent;
350 Float_t b_neg_silent;
351 Float_t b_pos_active;
352 Float_t b_neg_active;
353
354
355 memset(&FSel_n, 0, sizeof(Int_t));
356 memset(&FSel_p, 0, sizeof(Int_t));
357 memset(&FGaps_n, false, sizeof(Bool_t));
358 memset(&FGaps_p, false, sizeof(Bool_t));
359 memset(&Gap_Fib_n, 0, sizeof(Int_t));
360 memset(&Gap_Fib_p, 0, sizeof(Int_t));
361 std::fill_n(&Gap_Fib_n[0][0], sizeof(Gap_Fib_n)/sizeof(Int_t), 9999);
362 std::fill_n(&Gap_Fib_p[0][0], sizeof(Gap_Fib_p)/sizeof(Int_t), 9999);
363
364 b_n.clear();
365 b_p.clear();
366 Ov_n.clear();
367 Ov_p.clear();
368 Num_n.clear();
369 Num_p.clear();
370
371 b_ref_n=-127.0;
372 b_ref_p=-127.0;
373
374
375
376
378
379
380 Find_Proj(Over_p, b_ref_n, b_pos, OvU, NumU);
381
382
384 {
385
386
387
389 Find_Proj(Over_n, b_ref_p, b_neg, OvV, NumV);
390
392 {
393
394
395
397 Find_Proj(Over_p, b_neg, b_pos, OvU, NumU);
398
399
401 Find_Proj(Over_n, b_pos, b_neg, OvV, NumV);
402
403
404
405
407 Find_Proj(Over_p, b_neg, b_pos, OvU, NumU);
408
409
411 Find_Proj(Over_n, b_pos, b_neg, OvV, NumV);
412
413
414 b_p.push_back(b_pos);
415 Ov_p.push_back(OvU);
416 Num_p.push_back(NumU);
417
418 b_n.push_back(b_neg);
419 Ov_n.push_back(OvV);
420 Num_n.push_back(NumV);
421
422 GapsID.push_back(0);
423
424
425
428
429
430
431
432 for (Int_t bin=0;
bin<72000;
bin++)
433 {
434 Over_copy[
bin]=Over_p[
bin];
435 }
436 Gaps[0][0] =
Silent_Gap(Over_copy, b_neg, b_pos, FSel_p, FGaps_p, Gap_Fib_p, OvU, (Int_t)0);
437 Find_Proj(Over_copy, b_neg, b_pos_silent, OvU, NumU);
438
439 for (Int_t bin=0;
bin<72000;
bin++)
440 {
441 Over_copy[
bin]=Over_n[
bin];
442 }
443 Gaps[1][0] =
Silent_Gap(Over_copy, b_pos, b_neg, FSel_n, FGaps_n, Gap_Fib_n, OvV, 1);
444 Find_Proj(Over_copy, b_pos, b_neg_silent, OvV, NumV);
445
446 if (Gaps[0][0]>0 || Gaps[1][0]>0)
447 {
448 b_p.push_back(b_pos_silent);
449 Ov_p.push_back(OvU);
450 Num_p.push_back(NumU);
451
452 b_n.push_back(b_neg_silent);
453 Ov_n.push_back(OvV);
454 Num_n.push_back(NumV);
455
456 GapsID.push_back(1);
457 }
458
459
460 for (Int_t bin=0;
bin<72000;
bin++)
461 {
462 Over_copy[
bin]=Over_p[
bin];
463 }
464 Gaps[0][1] =
Active_Gap(0,Over_copy, b_neg, b_pos, FSel_p, OvU, 0);
465 Find_Proj(Over_copy, b_neg, b_pos_active, OvU, NumU);
466
467 for (Int_t bin=0;
bin<72000;
bin++)
468 {
469 Over_copy[
bin]=Over_n[
bin];
470 }
471 Gaps[1][1] =
Active_Gap(1,Over_copy, b_pos, b_neg, FSel_n, OvV, 1);
472 Find_Proj(Over_copy, b_pos, b_neg_active, OvV, NumV);
473
474 if (Gaps[0][1]>0 || Gaps[1][1]>0)
475 {
476 b_p.push_back(b_pos_active);
477 Ov_p.push_back(OvU);
478 Num_p.push_back(NumU);
479
480 b_n.push_back(b_neg_active);
481 Ov_n.push_back(OvV);
482 Num_n.push_back(NumV);
483
484 GapsID.push_back(2);
485 }
486
487
488 if ((Gaps[0][0]>0 || Gaps[1][0]>0) && (Gaps[0][1]>0 || Gaps[1][1]>0))
489 {
490 for (Int_t bin=0;
bin<72000;
bin++)
491 {
492 Over_copy[
bin]=Over_p[
bin];
493 }
494 Silent_Gap(Over_copy, b_neg, b_pos, FSel_p, FG_p, G_F_p, OvU, 0);
495 Active_Gap(0,Over_copy, b_neg, b_pos, FSel_p, OvU, 0);
496 Find_Proj(Over_copy, b_neg, b_pos_active, OvU, NumU);
497
498 for (Int_t bin=0;
bin<72000;
bin++)
499 {
500 Over_copy[
bin]=Over_n[
bin];
501 }
502 Silent_Gap(Over_copy, b_pos, b_neg, FSel_n, FG_n, G_F_n, OvV, 1);
503 Active_Gap(1,Over_copy, b_pos, b_neg, FSel_n, OvV, 1);
504 Find_Proj(Over_copy, b_pos, b_neg_active, OvV, NumV);
505
506 b_p.push_back(b_pos_active);
507 Ov_p.push_back(OvU);
508 Num_p.push_back(NumU);
509
510 b_n.push_back(b_neg_active);
511 Ov_n.push_back(OvV);
512 Num_n.push_back(NumV);
513
514 GapsID.push_back(3);
515 }
516 }
517 }
518}
void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t(&iFSel)[ALFAPLATESCNT], Int_t iSideFlag)
void Proj_Store(Int_t iFiberSide, Int_t(&iOver)[72000], Float_t fbRef, Int_t iSideFlag)
Int_t Silent_Gap(Int_t(&Over)[72000], Float_t b_ref, Float_t b_rec, const Int_t FSel[ALFAPLATESCNT], Bool_t(&FGap)[ALFAPLATESCNT], Int_t(&Gap_Fib)[ALFAPLATESCNT][2], Float_t OverLap, Int_t iSideFlag)
void Find_Proj(const Int_t iOver[72000], Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum) const
Int_t Active_Gap(Int_t iFiberSide, Int_t(&Over)[72000], Float_t b_ref, Float_t b_rec, const Int_t FSel[ALFAPLATESCNT], Float_t OverLap, Int_t iSideFlag)