Install fatal handler with default options.
This is meant to be easy to call from python via ctypes.
Install fatal handler with default options.
Install fatal handler with default options.
getRawOccupancy() Read RawOccupancy from Monitoring HIST and write out into local DB
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
309 {
310
311 float sid;
316 int nTRThist=0, ndethist=0, nlayhist=0, nmodhist=0, nbrdhist=0, nchphist=0, nstwhist=0;
317 int nTRThistAr=0, ndethistAr=0, nlayhistAr=0, nmodhistAr=0, nbrdhistAr=0, nchphistAr=0, nstwhistAr=0;
319
320 std::string
infile=m_hittuple;
321 std::string
outfile=
"calibout";
322
323 std::string detname="Detector";
324 std::string layname="Layer";
325 if (!m_SplitBarrel) {
326 detname="WholeBarrel";
327 layname="WholeBarrelLayer";
328 }
329
330
331 Calibrator TRT(0,
"TRT",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
333 Calibrator Layer(2,layname.data(),m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
334 Calibrator Module(3,
"Module",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
335 Calibrator Board(4,
"Board",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
336 Calibrator Chip(5,
"Chip",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
337 Calibrator Straw(6,
"Straw",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
338
339
340
341 std::map<std::string,Calibrator*> calibrators;
342 calibrators[
"TRT"]=&
TRT;
344 calibrators[
"Layer"]=&
Layer;
345 calibrators["Module"]=&Module;
346 calibrators["Board"]=&Board;
347 calibrators["Chip"]=&Chip;
348 calibrators[
"Straw"]=&
Straw;
349
350
351 if(m_calsub!="user"){
352 m_doRt=m_config[m_calsub].CalibrateRt;
353 m_doT0=m_config[m_calsub].CalibrateT0;
354 m_doRes=m_config[m_calsub].FitResidual;
355 m_beQuiet=m_config[m_calsub].NoHistograms;
356 m_doOutPrint=m_config[m_calsub].PrintT0Out;
357 m_doRtPrint=m_config[m_calsub].PrintRtOut;
358 m_doLogPrint=m_config[m_calsub].PrintLog;
359 }
360
361
362 for (
const std::string& s : m_doRt) calibrators[
s]->dort=
true;
363 for (
const std::string& s : m_doT0) calibrators[
s]->dot0=
true;
364 for (
const std::string& s : m_doRes) calibrators[
s]->dores=
true;
365 for (
const std::string& s : m_beQuiet) calibrators[
s]->bequiet=
true;
366 for (
const std::string& s : m_doOutPrint) calibrators[
s]->printt0=
true;
367 for (
const std::string& s : m_doRtPrint) calibrators[
s]->printrt=
true;
368 for (
const std::string& s : m_doLogPrint) calibrators[
s]->printlog=
true;
369 for (
const std::string& s : m_useBoardRef) calibrators[
s]->usebref=
true;
370 for (std::pair<const std::string, Calibrator*>& p : calibrators) {
372 calib->usep0=m_useP0;
373 calib->floatp3=m_floatP3;
374 calib->useshortstraws=m_DoShortStrawCorrection;
375
376 if (m_doRt.size()==0)
calib->nort=
true;
377 if (m_doT0.size()==0)
calib->not0=
true;
378
379 std::set<int> selset;
380 GetSubLevels(m_selstring,
calib->level+1,&selset);
381 for (std::set<int>::iterator imod=selset.begin(); imod!=selset.end(); ++imod){
382 calib->selection = selset;
383 }
384 }
385
386
387 Calibrator TRT_Ar (0,
"TRT_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
388 Calibrator Detector_Ar(1,
"Detector_Ar",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
389 Calibrator Layer_Ar (2,
"Layer_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
390 Calibrator Module_Ar (3,
"Module_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
391 Calibrator Board_Ar (4,
"Board_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
392 Calibrator Chip_Ar (5,
"Chip_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
393 Calibrator Straw_Ar (6,
"Straw_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
394
395
396 std::map<std::string,Calibrator*> calibratorsAr;
397 calibratorsAr["TRT"] =&TRT_Ar;
398 calibratorsAr["Detector"] =&Detector_Ar;
399 calibratorsAr["Layer"] =&Layer_Ar;
400 calibratorsAr["Module"] =&Module_Ar;
401 calibratorsAr["Board"] =&Board_Ar;
402 calibratorsAr["Chip"] =&Chip_Ar;
403 calibratorsAr["Straw"] =&Straw_Ar;
404
405
406 for (
const std::string& s : m_doRt) calibratorsAr[
s]->dort=
true;
407 for (
const std::string& s : m_doT0) calibratorsAr[
s]->dot0=
true;
408 for (
const std::string& s : m_doRes) calibratorsAr[
s]->dores=
true;
409 for (
const std::string& s : m_beQuiet) calibratorsAr[
s]->bequiet=
true;
410 for (
const std::string& s : m_doOutPrint) calibratorsAr[
s]->printt0=
true;
411 for (
const std::string& s : m_doRtPrint) calibratorsAr[
s]->printrt=
true;
412 for (
const std::string& s : m_doLogPrint) calibratorsAr[
s]->printlog=
true;
413 for (
const std::string& s : m_useBoardRef) calibratorsAr[
s]->usebref=
true;
414 for (std::pair<const std::string, Calibrator*>& p : calibratorsAr) {
416 calib->usep0=m_useP0;
417 calib->floatp3=m_floatP3;
418 calib->useshortstraws=m_DoShortStrawCorrection;
419
420 if (m_doRt.size()==0)
calib->nort=
true;
421 if (m_doT0.size()==0)
calib->not0=
true;
422
423 std::set<int> selset;
424 GetSubLevels(m_selstring,
calib->level+1,&selset);
425 for (std::set<int>::iterator imod=selset.begin(); imod!=selset.end(); ++imod){
426 calib->selection = selset;
427 }
428 }
429
430
431
432 m_options =
'_' +
TRT.GetOptString() +
'_' +
Detector.GetOptString() +
'_' +
Layer.GetOptString() +
'_' + Module.GetOptString() +
'_' + Board.GetOptString() +
'_' + Chip.GetOptString() +
'_' +
Straw.GetOptString();
433 if(m_calsub!=
"user") m_selstring =
'_' +
TRT.GetSelString() +
'_' +
Detector.GetSelString() +
'_' +
Layer.GetSelString() +
'_' + Module.GetSelString() +
'_' + Board.GetSelString() +
'_' + Chip.GetSelString() +
'_' +
Straw.GetSelString();
434
435
442 ATH_MSG_INFO(
"MIN STATISTICS : RT=" << m_minrt <<
", T0=" << m_mint0 );
453
454 if (m_DoArXenonSep){
455
463 ATH_MSG_INFO(
"MIN STATISTICS : RT=" << m_minrt <<
", T0=" << m_mint0 );
474 }
475
476 int rbrd, rchp, rdet, dum;
477 float rt0;
478 std::map<std::string,float> reft0map;
479 std::ifstream t0ref("finedelays.txt",std::ios::in);
480 if(t0ref.is_open())
ATH_MSG_INFO(
" Opened finedelays.txt ");
481 for(int iref=0;iref<208;iref++){
482 t0ref >> rbrd >> rchp >> rdet >> dum >> rt0;
483 reft0map[std::string(Form("_%i_%i_%i",rdet,rbrd,rchp))]=rt0;
484 }
485
486 t0ref.close();
487
488
489
490 bool isdines = (m_rtrel.value()).find("dines")!=std::string::npos;
491 bool isbinned = (m_rtrel.value()).find("binned")!=std::string::npos;
492 int rtint;
493 if (isdines) rtint=2;
494 else if (isbinned) rtint=1;
495 else rtint=0;
497
498 int npop,isid;
499 std::map<std::string,epdata> ephasemap;
500
501
502 std::unique_ptr<TFile> histfile(TFile::Open("calibout.root","RECREATE"));
503
504 if(!histfile || histfile->IsZombie()) {
506 return false;
507 } else {
509 }
510
511 std::ifstream
myFile (
infile.data(), std::ios::in | std::ios::binary);
512 ATH_MSG_INFO(
" Opened " << infile <<
" as binary histogram file " );
513 int ihist=0;
514 int ihistAr=0;
515
516 while(true){
517
518
519
520 myFile.read (
reinterpret_cast<char*
>(&npop),
sizeof(
int));
522 std::vector<int> chist(2 * npop + 2);
523
524 if (npop>0)
myFile.read (
reinterpret_cast<char*
>(chist.data()+2),
sizeof(
int)*2*npop);
525
526 myFile.read (
reinterpret_cast<char*
>(&isid),
sizeof(
int));
528 if(sid<0) continue;
529
530 chist[0]=npop;
531 chist[1]=isid;
532
534 int chip=0,board=-1;
535 m_neighbourSvc->getChip(ident,chip);
536 if(abs(m_TRTID->barrel_ec(ident))<2){
537 board=m_neighbourSvc->chipToBoardBarrel(chip,m_TRTID->layer_or_wheel(ident));
538 }
539 else if (chip<12) {
540 board=0;
541 }
542 else {
543 chip=chip-20;
544 board=1;
545 }
546 if (m_SplitBarrel) hitdata.
det=(int)m_TRTID->barrel_ec(ident);
547 else hitdata.
det=abs((
int)m_TRTID->barrel_ec(ident));
548 if(hitdata.
det!=1 && hitdata.
det!=-1 && hitdata.
det!=2 && hitdata.
det!=-2) {
549 ATH_MSG_WARNING(
" Invalid Identifier read : " << ident <<
" detector decoded to be : " << hitdata.
det);
550 continue;
551 }
552 hitdata.
lay=(int)m_TRTID->layer_or_wheel(ident);
553 if( (hitdata.
det==1 || hitdata.
det==-1) && (hitdata.
lay<0 || hitdata.
lay>2) ) {
554 ATH_MSG_WARNING(
" Invalid Identifier read : " << ident <<
" barrel layer decoded to be : " << hitdata.
lay);
555 continue;
556 }
else if( (hitdata.
det==2 || hitdata.
det==-2) && (hitdata.
lay<0 || hitdata.
lay>13) ) {
557 ATH_MSG_WARNING(
" Invalid Identifier read : " << ident <<
" endcap layer decoded to be : " << hitdata.
lay);
558 continue;
559 }
560 hitdata.
mod=(int)m_TRTID->phi_module(ident);
561 if( hitdata.
mod < 0 || hitdata.
mod > 31 ) {
562 ATH_MSG_WARNING(
" Invalid Identifier read : " << ident <<
" phi-module decoded to be : " << hitdata.
lay);
563 continue;
564 }
565
568 hitdata.
stl=(int)m_TRTID->straw_layer(ident);
569 if( hitdata.
stl < 0 || hitdata.
stl > m_TRTID->straw_layer_max(ident) ) {
570 ATH_MSG_WARNING(
" Invalid Identifier read : " << ident <<
" straw-layer decoded to be : " << hitdata.
stl);
571 continue;
572 }
573
574 hitdata.
stw=(int)m_TRTID->straw(ident);
575 if( hitdata.
stw < 0 || hitdata.
stw > m_TRTID->straw_max(ident) ) {
576 ATH_MSG_WARNING(
" Invalid Identifier read : " << ident <<
" straw decoded to be : " << hitdata.
stw);
577 continue;
578 }
579
581
582
583 const float* pcal ;
584 std::vector<float> rvalues ;
585 const float defaultpcal[] = {0,0,0,0} ;
586 if (isdines){
588 pcal = rtr ? rtr->
cal() : defaultpcal ;
589 }
590
591 else {
593 pcal = rtr ? rtr->
cal() : defaultpcal ;
594 }
595 hitdata.
rtpar[0]=pcal[0];
596 hitdata.
rtpar[1]=pcal[1];
597 hitdata.
rtpar[2]=pcal[2];
598 hitdata.
rtpar[3]=pcal[3];
599
600
601
602 MakeBDKeys(hitdata.
det, hitdata.
lay, hitdata.
mod, hitdata.
brd, hitdata.
chp, hitdata.
sid);
603
604
605 m_trt.t[m_Tkey].d[m_Dkey].l[m_Lkey].m[m_Mkey].b[m_Bkey].c[m_Ckey].s[m_Skey].z=0;
606 m_trt_acc.t[m_Tkey].d[m_Dkey_acc].l[m_Lkey_acc].m[m_Mkey].b[m_Bkey].c[m_Ckey].s[m_Skey].z=0;
607
608
609
610
617 hitdata.
t0=m_trtcaldbTool->getT0(ident);
618
619 strawelement = m_trtmanager->getElement(ident);
620 if(hitdata.
det==1 || hitdata.
det==-1) {
622 hitdata.
x=(barrelelement->
center(ident)).x();
623 hitdata.
y=(barrelelement->
center(ident)).y();
624 hitdata.
z=(barrelelement->
center(ident)).z();
625 }else{
627 hitdata.
x=(endcapelement->
center(ident)).x();
628 hitdata.
y=(endcapelement->
center(ident)).y();
629 hitdata.
z=(endcapelement->
center(ident)).z();
630 }
631
632
633 if ( m_DoShortStrawCorrection && hitdata.
lay==0 && hitdata.
stl<9){
634
635 double t0test1=m_trtcaldbTool->getT0((
Identifier)301998432);
636 double t0test2=m_trtcaldbTool->getT0((
Identifier)302001504);
637 if (t0test1 != t0test2) hitdata.
t0+=0.75;
638 }
639
640
641 hitdata.
rt0=reft0map[std::string(Form(
"_%i_%i_%i",hitdata.
det,hitdata.
brd,hitdata.
chp))];
642
643
644 int isArgonStraw = 0;
646 isArgonStraw = 1;
647 }
648
649
650
651 if(!m_DoArXenonSep){
652
653 nTRThist +=
TRT.AddHit(m_Tkey,hitdata,chist.data(),
true);
655 if (m_SplitBarrel) ndethist +=
Detector.AddHit(m_Dkey,hitdata,chist.data(),
true);
656 else ndethist +=
Detector.AddHit(m_Dkey_acc,hitdata,chist.data(),
true);
657 if (
Layer.CheckSelection(hitdata.
lay)) {
658 if (m_SplitBarrel) nlayhist +=
Layer.AddHit(m_Lkey,hitdata,chist.data(),
true);
659 else { nlayhist +=
Layer.AddHit(m_Lkey_acc,hitdata,chist.data(),
true);
continue;}
660 if (Module.CheckSelection(hitdata.
mod)) {
661 nmodhist += Module.AddHit(m_Mkey,hitdata,chist.data(),true);
662 if (Board.CheckSelection(hitdata.
brd)) {
663 nbrdhist += Board.AddHit(m_Bkey,hitdata,chist.data(),true);
664 if (Chip.CheckSelection(hitdata.
chp)) {
665 nchphist += Chip.AddHit(m_Ckey,hitdata,chist.data(),true);
666 if (
Straw.CheckSelection(hitdata.
stw))
667 nstwhist +=
Straw.AddHit(m_Skey,hitdata,chist.data(),
true);
668 }
669 }
670 }
671 }
672 }
673 ihist++;
674 } else
675 if(isArgonStraw==0){
676 nTRThist +=
TRT.AddHit(m_Tkey,hitdata,chist.data(),
true);
678 if (m_SplitBarrel) ndethist +=
Detector.AddHit(m_Dkey,hitdata,chist.data(),
true);
679 else ndethist +=
Detector.AddHit(m_Dkey_acc,hitdata,chist.data(),
true);
680 if (
Layer.CheckSelection(hitdata.
lay)) {
681 if (m_SplitBarrel) nlayhist +=
Layer.AddHit(m_Lkey,hitdata,chist.data(),
true);
682 else { nlayhist +=
Layer.AddHit(m_Lkey_acc,hitdata,chist.data(),
true);
continue;}
683 if (Module.CheckSelection(hitdata.
mod)) {
684 nmodhist += Module.AddHit(m_Mkey,hitdata,chist.data(),true);
685 if (Board.CheckSelection(hitdata.
brd)) {
686 nbrdhist += Board.AddHit(m_Bkey,hitdata,chist.data(),true);
687 if (Chip.CheckSelection(hitdata.
chp)) {
688 nchphist += Chip.AddHit(m_Ckey,hitdata,chist.data(),true);
689 if (
Straw.CheckSelection(hitdata.
stw)) {
690 nstwhist +=
Straw.AddHit(m_Skey,hitdata,chist.data(),
true);
691 }
692 }
693 }
694 }
695 }
696 }
697 ihist++;
698 } else {
699 nTRThistAr += TRT_Ar.AddHit(m_Tkey,hitdata,chist.data(),true);
700 if (Detector_Ar.CheckSelection(hitdata.
det)) {
701 if (m_SplitBarrel) ndethistAr += Detector_Ar.AddHit(m_Dkey,hitdata,chist.data(),true);
702 else ndethistAr += Detector_Ar.AddHit(m_Dkey_acc,hitdata,chist.data(),true);
703 if (Layer_Ar.CheckSelection(hitdata.
lay)) {
704 if (m_SplitBarrel) nlayhistAr += Layer_Ar.AddHit(m_Lkey,hitdata,chist.data(),true);
705 else { nlayhistAr += Layer_Ar.AddHit(m_Lkey_acc,hitdata,chist.data(),true); continue;}
706 if (Module_Ar.CheckSelection(hitdata.
mod)) {
707 nmodhistAr += Module_Ar.AddHit(m_Mkey,hitdata,chist.data(),true);
708 if (Board_Ar.CheckSelection(hitdata.
brd)) {
709 nbrdhistAr += Board_Ar.AddHit(m_Bkey,hitdata,chist.data(),true);
710 if (Chip_Ar.CheckSelection(hitdata.
chp)) {
711 nchphistAr += Chip_Ar.AddHit(m_Ckey,hitdata,chist.data(),true);
712 if (Straw_Ar.CheckSelection(hitdata.
stw)) {
713 nstwhistAr += Straw_Ar.AddHit(m_Skey,hitdata,chist.data(),true);
714 }
715 }
716 }
717 }
718 }
719 }
720 ihistAr++;
721 }
722
723
724 if ((ihist%10000==9999) | (ihist==m_nevents-1)){
725 ATH_MSG_INFO( Form(
"%7i HISTOGRAMS READ, UNITS ADDED: %i %i %2i %3i %3i %4i %6i",ihist+1,nTRThist, ndethist, nlayhist, nmodhist, nbrdhist, nchphist, nstwhist) );
726 if(m_DoArXenonSep)
ATH_MSG_INFO( Form(
"%7i Ar HISTOGRAMS READ, UNITS ADDED: %i %i %2i %3i %3i %4i %6i",ihistAr+1,nTRThistAr, ndethistAr, nlayhistAr, nmodhistAr, nbrdhistAr, nchphistAr, nstwhistAr) );
727 }
728
729 ihist++;
730 }
731
732 ATH_MSG_INFO( Form(
"%7i HISTOGRAMS READ, UNITS ADDED: %i %i %2i %3i %3i %4i %6i",ihist+1,nTRThist, ndethist, nlayhist, nmodhist, nbrdhist, nchphist, nstwhist) );
733 if(m_DoArXenonSep)
ATH_MSG_INFO( Form(
"%7i Ar HISTOGRAMS READ, UNITS ADDED: %i %i %2i %3i %3i %4i %6i",ihistAr+1,nTRThistAr, ndethistAr, nlayhistAr, nmodhistAr, nbrdhistAr, nchphistAr, nstwhistAr) );
734
735 TRT.UpdateOldConstants();
737 Layer.UpdateOldConstants();
738 Module.UpdateOldConstants();
739 Board.UpdateOldConstants();
740 Chip.UpdateOldConstants();
741
742 if (ihistAr>0 ){
743 TRT_Ar.UpdateOldConstants();
744 Detector_Ar.UpdateOldConstants();
745 Layer_Ar.UpdateOldConstants();
746 Module_Ar.UpdateOldConstants();
747 Board_Ar.UpdateOldConstants();
748 Chip_Ar.UpdateOldConstants();
749 }
750
752
753
763
764
765 if(m_DoArXenonSep){
775 }
776
777
778
779
780 caldata startdata(
true,55,100);
781
782 startdata.t0=5.0;
783 std::map<std::string,TDirectory*> dirmap;
790
791 std::ofstream rtcalfile(Form(
"%s_rt.txt",
outfile.data()),std::ios::out);
792 std::ofstream binrtcalfile(Form(
"%s_binrt.txt",
outfile.data()),std::ios::out);
793 std::ofstream t0calfile(Form(
"%s_t0.txt",
outfile.data()),std::ios::out);
794
795
796
797
798 for (std::pair<const std::string, BDdetector>& pt : m_trt.t) {
799
800 if (
TRT.Skip())
break;
801 if (
TRT.HasKey(
pt.first)) {
802 trtdir =
TRT.Calibrate(histfile.get(),
pt.first,SubLev(m_options,1),&startdata);
803 if (
TRT.printt0) t0calfile << Form(
"-3 -1 -1 -1 -1 : %e %e",
TRT.data[
pt.first].t0,
TRT.data[
pt.first].t0err) <<
'\n';
804 if (
TRT.printrt) rtcalfile << Form(
"-3 -1 -1 -1 -1 : %i %e %e %e %e",rtint,
TRT.data[
pt.first].rtpar[0],
TRT.data[
pt.first].rtpar[1],
TRT.data[
pt.first].rtpar[2],
TRT.data[
pt.first].rtpar[3]) <<
'\n';
805 }
806 for (std::pair<const std::string, BDlayer>& pd :
pt.second.d) {
807
810 detdir =
Detector.Calibrate(trtdir,
pd.first,SubLev(m_options,2),&
TRT.data[
pt.first]);
811 }
812 for (std::pair<const std::string, BDmodule>& pl :
pd.second.l) {
813
814 if(
Layer.Skip())
break;
815 if(
Layer.HasKey(pl.first)){
816 laydir =
Layer.Calibrate(detdir,pl.first,SubLev(m_options,3),&
Detector.data[
pd.first]);
817 if (
Layer.printt0) t0calfile << Form(
"%i %i -1 -1 -1 : %e %e",
Layer.data[pl.first].det,
Layer.data[pl.first].lay,
Layer.data[pl.first].t0,
Layer.data[pl.first].t0err) <<
'\n';
818 if (
Layer.printrt) rtcalfile << Form(
"%i %i -1 -1 -1 : %i %e %e %e %e",
Layer.data[pl.first].det,
Layer.data[pl.first].lay,rtint,
Layer.data[pl.first].rtpar[0],
Layer.data[pl.first].rtpar[1],
Layer.data[pl.first].rtpar[2],
Layer.data[pl.first].rtpar[3]) <<
'\n';
819 if (!m_SplitBarrel) {
820 if (
Layer.printt0) t0calfile << Form(
"%i %i -1 -1 -1 : %e %e",-
Layer.data[pl.first].det,
Layer.data[pl.first].lay,
Layer.data[pl.first].t0,
Layer.data[pl.first].t0err) <<
'\n';
821 if (
Layer.printrt) rtcalfile << Form(
"%i %i -1 -1 -1 : %i %e %e %e %e",-
Layer.data[pl.first].det,
Layer.data[pl.first].lay,rtint,
Layer.data[pl.first].rtpar[0],
Layer.data[pl.first].rtpar[1],
Layer.data[pl.first].rtpar[2],
Layer.data[pl.first].rtpar[3]) <<
'\n';
822 }
823 }
824 for (std::pair<const std::string, BDboard>& pm : pl.second.m) {
825
826 if(Module.Skip()) break;
827 if(Module.HasKey(pm.first)){
828 moddir = Module.Calibrate(laydir,pm.first,SubLev(m_options,4),&
Layer.data[pl.first]);
829 if (Module.printt0) t0calfile << Form("%i %i %i -1 -1 : %e %e",Module.data[pm.first].det,Module.data[pm.first].lay,Module.data[pm.first].mod,Module.data[pm.first].t0,Module.data[pm.first].t0err) << '\n';
830 if (Module.printrt) rtcalfile << Form("%i %i %i -1 -1 : %i %e %e %e %e",Module.data[pm.first].det,Module.data[pm.first].lay,Module.data[pm.first].mod,rtint,Module.data[pm.first].rtpar[0],Module.data[pm.first].rtpar[1],Module.data[pm.first].rtpar[2],Module.data[pm.first].rtpar[3]) << '\n';
831 }
832 for (std::pair<const std::string, BDchip>& pb : pm.second.b) {
833
834 if(Board.Skip()) break;
835 if(Board.HasKey(
pb.first)){
836 brddir = Board.Calibrate(moddir,
pb.first,SubLev(m_options,5),&Module.data[pm.first]);
837 }
838 for (std::pair<const std::string, BDstraw>& pc :
pb.second.c) {
839
840 if(Chip.Skip()) break;
841 if(Chip.HasKey(
pc.first)){
842 chpdir = Chip.Calibrate(brddir,
pc.first,SubLev(m_options,6),&Board.data[
pb.first]);
843 }
844 for (std::pair<const std::string, BDzero>& ps :
pc.second.s) {
845
846 if(
Straw.Skip())
break;
848 Straw.Calibrate(chpdir,
ps.first,SubLev(m_options,7),&Chip.data[
pc.first]);
850 if (
Straw.printrt) rtcalfile << Form(
"%i %i %i %i %i : %i %e %e %e %e",
Straw.data[
ps.first].det,
Straw.data[
ps.first].lay,
Straw.data[
ps.first].mod,
Straw.data[
ps.first].stl,
Straw.data[
ps.first].stw,rtint,
Straw.data[
ps.first].rtpar[0],
Straw.data[
ps.first].rtpar[1],
Straw.data[
ps.first].rtpar[2],
Straw.data[
ps.first].rtpar[3]) <<
'\n';
851
852
853 }
854 }
855 }
856 }
857 }
858 }
859 }
860 }
861
862 std::map<std::string,TDirectory*> dirArmap;
869
870 if (m_DoArXenonSep){
871
872 for (std::pair<const std::string, BDdetector>& pt : m_trt.t) {
873
874 if (TRT_Ar.Skip()) break;
875 if (TRT_Ar.HasKey(
pt.first)) {
876 trtdirAr = TRT_Ar.Calibrate(histfile.get(),
pt.first,SubLev(m_options,1),&startdata);
877 }
878 for (std::pair<const std::string, BDlayer>& pd :
pt.second.d) {
879
880 if(Detector_Ar.Skip()) break;
881 if(Detector_Ar.HasKey(
pd.first)){
882 detdirAr = Detector_Ar.Calibrate(trtdirAr,
pd.first,SubLev(m_options,2),&TRT_Ar.data[
pt.first]);
883 }
884 for (std::pair<const std::string, BDmodule>& pl :
pd.second.l) {
885
886 if(Layer_Ar.Skip()) break;
887 if(Layer_Ar.HasKey(pl.first)){
888 laydirAr = Layer_Ar.Calibrate(detdirAr,pl.first,SubLev(m_options,3),&Detector_Ar.data[
pd.first]);
889
890 }
891 for (std::pair<const std::string, BDboard>& pm : pl.second.m) {
892
893 if(Module_Ar.Skip()) break;
894 if(Module_Ar.HasKey(pm.first)){
895 moddirAr = Module_Ar.Calibrate(laydirAr,pm.first,SubLev(m_options,4),&Layer_Ar.data[pl.first]);
896 if (Module_Ar.printt0) t0calfile << Form("%i %i %i -1 -1 : %e %e",Module_Ar.data[pm.first].det,Module_Ar.data[pm.first].lay,Module_Ar.data[pm.first].mod,Module_Ar.data[pm.first].t0,Module_Ar.data[pm.first].t0err) << '\n';
897 if (Layer_Ar.printrt) rtcalfile << Form("%i %i %i -1 -1 : %i %e %e %e %e",Module_Ar.data[pm.first].det,Module_Ar.data[pm.first].lay,Module_Ar.data[pm.first].mod,rtint,Module_Ar.data[pm.first].rtpar[0],Module_Ar.data[pm.first].rtpar[1],Module_Ar.data[pm.first].rtpar[2],Module_Ar.data[pm.first].rtpar[3]) << '\n';
898 }
899 for (std::pair<const std::string, BDchip>& pb : pm.second.b) {
900 if(Board_Ar.Skip()) break;
901 if(Board_Ar.HasKey(
pb.first)){
902 brddirAr = Board_Ar.Calibrate(moddirAr,
pb.first,SubLev(m_options,5),&Module_Ar.data[pm.first]);
903 }
904 for (std::pair<const std::string, BDstraw>& pc :
pb.second.c) {
905
906 if(Chip_Ar.Skip()) break;
907 if(Chip_Ar.HasKey(
pc.first)){
908 chpdirAr = Chip_Ar.Calibrate(brddirAr,
pc.first,SubLev(m_options,6),&Board_Ar.data[
pb.first]);
909 }
910 for (std::pair<const std::string, BDzero>& ps :
pc.second.s) {
911
912 if(Straw_Ar.Skip()) break;
913 if(Straw_Ar.HasKey(
ps.first)){
914 Straw_Ar.Calibrate(chpdirAr,
ps.first,SubLev(m_options,7),&Chip_Ar.data[
pc.first]);
915 if (Straw_Ar.printt0) t0calfile << Form(
"%i %i %i %i %i : %e %e",Straw_Ar.data[
ps.first].det,Straw_Ar.data[
ps.first].lay,Straw_Ar.data[
ps.first].mod,Straw_Ar.data[
ps.first].stl,Straw_Ar.data[
ps.first].stw,Straw_Ar.data[
ps.first].t0,Straw_Ar.data[
ps.first].t0err) <<
'\n';
916 if (Straw_Ar.printrt) rtcalfile << Form(
"%i %i %i %i %i : %i %e %e %e %e",Straw_Ar.data[
ps.first].det,Straw_Ar.data[
ps.first].lay,Straw_Ar.data[
ps.first].mod,Straw_Ar.data[
ps.first].stl,Straw_Ar.data[
ps.first].stw,rtint,Straw_Ar.data[
ps.first].rtpar[0],Straw_Ar.data[
ps.first].rtpar[1],Straw_Ar.data[
ps.first].rtpar[2],Straw_Ar.data[
ps.first].rtpar[3]) <<
'\n';
917 }
918 }
919 }
920 }
921 }
922 }
923 }
924 }
925
926}
927
928
929
930
931
932 if (!
TRT.bequiet)
TRT.WriteStat(histfile.get());
934 if (!
Layer.bequiet)
Layer.WriteStat(histfile.get());
935 if (!Module.bequiet) Module.WriteStat(histfile.get());
936 if (!Board.bequiet) Board.WriteStat(histfile.get());
937 Chip.WriteStat(histfile.get());
938 Straw.WriteStat(histfile.get());
939
942 Layer.DumpConstants();
943 Module.DumpConstants();
944 Board.DumpConstants();
945 Chip.DumpConstants();
946 Straw.DumpConstants();
947
948 rtcalfile.close();
949 binrtcalfile.close();
950 t0calfile.close();
951
952
953
954 if(m_DoArXenonSep){
955 if (!TRT_Ar.bequiet) TRT_Ar.WriteStat(histfile.get());
956 if (!Detector_Ar.bequiet) Detector_Ar.WriteStat(histfile.get());
957 if (!Layer_Ar.bequiet) Layer_Ar.WriteStat(histfile.get());
958 if (!Module_Ar.bequiet) Module_Ar.WriteStat(histfile.get());
959 if (!Board_Ar.bequiet) Board_Ar.WriteStat(histfile.get());
960 Chip_Ar.WriteStat(histfile.get());
961 Straw_Ar.WriteStat(histfile.get());
962
963 TRT_Ar.DumpConstants();
964 Detector_Ar.DumpConstants();
965 Layer_Ar.DumpConstants();
966 Module_Ar.DumpConstants();
967 Board_Ar.DumpConstants();
968 Chip_Ar.DumpConstants();
969 Straw_Ar.DumpConstants();
970 }
971
972 histfile->ls();
974 histfile->Write();
975
976 return true;
977
978}
#define ATH_MSG_WARNING(x)
An instance of this class is created for each sub-level of the TRT by the TRTCalibrator.
Extended TRT_BaseElement to describe a TRT readout element, this is a planar layer with n ( order of ...
Virtual base class of TRT readout elements.
virtual const Amg::Vector3D & center() const override final
Element Surface: center of a straw layer.
Extended class of a TRT_BaseElement to describe a readout elment in the endcap.
Default rt-relation class in the TRT: a 3rd degree polynomial.
const float * cal() const
return to calibration constants
Default rt-relation class in the TRT: a 3rd degree polynomial.
const float * cal() const
return to calibration constants
A structure to contain data associated with the calibration of a certain sub-module.
A structure to contain hit data.
int det
detector (barrel -1 or 1, or end-cap -2 or 2)
float rt0
reference t0 (offset from board mean)
float r
drift radius from r(t) relation
std::array< float, 4 > rtpar
rt-parameters used in the reconstruction
float t0
t0 value used in reconstruction
int stw
straw number (within the strawlayer)
float weight
histogram weight (currently set to 1)