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;
320 std::string infile=m_hittuple;
321 std::string outfile=
"calibout";
323 std::string detname=
"Detector";
324 std::string layname=
"Layer";
325 if (!m_SplitBarrel) {
326 detname=
"WholeBarrel";
327 layname=
"WholeBarrelLayer";
331 Calibrator TRT(0,
"TRT",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
332 Calibrator Detector(1,detname.data(),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);
341 std::map<std::string,Calibrator*> calibrators;
342 calibrators[
"TRT"]=&
TRT;
343 calibrators[
"Detector"]=&Detector;
344 calibrators[
"Layer"]=&Layer;
345 calibrators[
"Module"]=&Module;
346 calibrators[
"Board"]=&Board;
347 calibrators[
"Chip"]=&Chip;
348 calibrators[
"Straw"]=&Straw;
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;
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;
376 if (m_doRt.size()==0) calib->nort=
true;
377 if (m_doT0.size()==0) calib->not0=
true;
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;
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);
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;
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;
420 if (m_doRt.size()==0) calib->nort=
true;
421 if (m_doT0.size()==0) calib->not0=
true;
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;
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();
442 ATH_MSG_INFO(
"MIN STATISTICS : RT=" << m_minrt <<
", T0=" << m_mint0 );
463 ATH_MSG_INFO(
"MIN STATISTICS : RT=" << m_minrt <<
", T0=" << m_mint0 );
476 int rbrd, rchp, rdet, dum;
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;
490 bool isdines = (m_rtrel.value()).find(
"dines")!=std::string::npos;
491 bool isbinned = (m_rtrel.value()).find(
"binned")!=std::string::npos;
493 if (isdines) rtint=2;
494 else if (isbinned) rtint=1;
499 std::map<std::string,epdata> ephasemap;
502 std::unique_ptr<TFile> histfile(TFile::Open(
"calibout.root",
"RECREATE"));
504 if(!histfile || histfile->IsZombie()) {
511 std::ifstream myFile (infile.data(), std::ios::in | std::ios::binary);
512 ATH_MSG_INFO(
" Opened " << infile <<
" as binary histogram file " );
520 myFile.read (
reinterpret_cast<char*
>(&npop),
sizeof(
int));
521 if (myFile.eof())
break;
522 std::vector<int> chist(2 * npop + 2);
524 if (npop>0) myFile.read (
reinterpret_cast<char*
>(chist.data()+2),
sizeof(
int)*2*npop);
526 myFile.read (
reinterpret_cast<char*
>(&isid),
sizeof(
int));
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));
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);
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);
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);
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);
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);
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);
584 std::vector<float> rvalues ;
585 const float defaultpcal[] = {0,0,0,0} ;
588 pcal = rtr ? rtr->
cal() : defaultpcal ;
593 pcal = rtr ? rtr->
cal() : defaultpcal ;
595 hitdata.
rtpar[0]=pcal[0];
596 hitdata.
rtpar[1]=pcal[1];
597 hitdata.
rtpar[2]=pcal[2];
598 hitdata.
rtpar[3]=pcal[3];
602 MakeBDKeys(hitdata.
det, hitdata.
lay, hitdata.
mod, hitdata.
brd, hitdata.
chp, hitdata.
sid);
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;
617 hitdata.
t0=m_trtcaldbTool->getT0(ident);
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();
627 hitdata.
x=(endcapelement->
center(ident)).x();
628 hitdata.
y=(endcapelement->
center(ident)).y();
629 hitdata.
z=(endcapelement->
center(ident)).z();
633 if ( m_DoShortStrawCorrection && hitdata.
lay==0 && hitdata.
stl<9){
635 double t0test1=m_trtcaldbTool->getT0((
Identifier)301998432);
636 double t0test2=m_trtcaldbTool->getT0((
Identifier)302001504);
637 if (t0test1 != t0test2) hitdata.
t0+=0.75;
641 hitdata.
rt0=reft0map[std::string(Form(
"_%i_%i_%i",hitdata.
det,hitdata.
brd,hitdata.
chp))];
644 int isArgonStraw = 0;
653 nTRThist +=
TRT.AddHit(m_Tkey,hitdata,chist.data(),
true);
654 if (Detector.CheckSelection(hitdata.
det)) {
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;}
661 nmodhist += Module.
AddHit(m_Mkey,hitdata,chist.data(),
true);
663 nbrdhist += Board.
AddHit(m_Bkey,hitdata,chist.data(),
true);
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);
676 nTRThist +=
TRT.AddHit(m_Tkey,hitdata,chist.data(),
true);
677 if (Detector.CheckSelection(hitdata.
det)) {
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;}
684 nmodhist += Module.
AddHit(m_Mkey,hitdata,chist.data(),
true);
686 nbrdhist += Board.
AddHit(m_Bkey,hitdata,chist.data(),
true);
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);
699 nTRThistAr += TRT_Ar.
AddHit(m_Tkey,hitdata,chist.data(),
true);
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);
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;}
707 nmodhistAr += Module_Ar.
AddHit(m_Mkey,hitdata,chist.data(),
true);
709 nbrdhistAr += Board_Ar.
AddHit(m_Bkey,hitdata,chist.data(),
true);
711 nchphistAr += Chip_Ar.
AddHit(m_Ckey,hitdata,chist.data(),
true);
713 nstwhistAr += Straw_Ar.
AddHit(m_Skey,hitdata,chist.data(),
true);
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) );
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) );
735 TRT.UpdateOldConstants();
736 Detector.UpdateOldConstants();
737 Layer.UpdateOldConstants();
780 caldata startdata(
true,55,100);
783 std::map<std::string,TDirectory*> dirmap;
784 TDirectory* trtdir=gDirectory;
785 TDirectory* detdir=gDirectory;
786 TDirectory* laydir=gDirectory;
787 TDirectory* moddir=gDirectory;
788 TDirectory* brddir=gDirectory;
789 TDirectory* chpdir=gDirectory;
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);
798 for (std::pair<const std::string, BDdetector>& pt : m_trt.t) {
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';
806 for (std::pair<const std::string, BDlayer>& pd : pt.second.d) {
808 if(Detector.Skip())
break;
809 if(Detector.HasKey(pd.first)){
810 detdir = Detector.Calibrate(trtdir,pd.first,SubLev(m_options,2),&
TRT.data[pt.first]);
812 for (std::pair<const std::string, BDmodule>& pl : pd.second.l) {
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';
824 for (std::pair<const std::string, BDboard>& pm : pl.second.m) {
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';
832 for (std::pair<const std::string, BDchip>& pb : pm.second.b) {
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]);
838 for (std::pair<const std::string, BDstraw>& pc : pb.second.c) {
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]);
844 for (std::pair<const std::string, BDzero>& ps : pc.second.s) {
846 if(Straw.Skip())
break;
847 if(Straw.HasKey(ps.first)){
848 Straw.Calibrate(chpdir,ps.first,SubLev(m_options,7),&Chip.
data[pc.first]);
849 if (Straw.printt0) t0calfile << Form(
"%i %i %i %i %i : %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,Straw.data[ps.first].t0,Straw.data[ps.first].t0err) <<
'\n';
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';
862 std::map<std::string,TDirectory*> dirArmap;
863 TDirectory* trtdirAr=gDirectory;
864 TDirectory* detdirAr=gDirectory;
865 TDirectory* laydirAr=gDirectory;
866 TDirectory* moddirAr=gDirectory;
867 TDirectory* brddirAr=gDirectory;
868 TDirectory* chpdirAr=gDirectory;
872 for (std::pair<const std::string, BDdetector>& pt : m_trt.t) {
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);
878 for (std::pair<const std::string, BDlayer>& pd : pt.second.d) {
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]);
884 for (std::pair<const std::string, BDmodule>& pl : pd.second.l) {
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]);
891 for (std::pair<const std::string, BDboard>& pm : pl.second.m) {
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';
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]);
904 for (std::pair<const std::string, BDstraw>& pc : pb.second.c) {
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]);
910 for (std::pair<const std::string, BDzero>& ps : pc.second.s) {
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';
932 if (!
TRT.bequiet)
TRT.WriteStat(histfile.get());
933 if (!Detector.bequiet) Detector.WriteStat(histfile.get());
934 if (!Layer.bequiet) Layer.WriteStat(histfile.get());
938 Straw.WriteStat(histfile.get());
941 Detector.DumpConstants();
942 Layer.DumpConstants();
946 Straw.DumpConstants();
949 binrtcalfile.close();