48 m_trtmanager(nullptr),
49 m_trtcaldbTool(
"ITRT_CalDbTool", this),
50 m_neighbourSvc(
"ITRT_StrawNeighbourSvc",
name),
51 m_TRTStrawSummaryTool(
"InDetTRTStrawStatusSummaryTool",this),
53 m_maxTimeResidual(150),
54 m_minTimebinsOverThreshold(2),
55 m_maxTrackChisquarePerDof(10),
57 m_numOfHitsAccepted(0),
58 m_numOfProcessedTracks(0),
59 m_comTimeName(
"ComTime"),
66 m_selstring(
"_*_-_-_-_-_-_-"),
68 m_hittuple(
"basic.root"),
74 m_DoShortStrawCorrection(true),
77 declareInterface<ITRTCalibrator>(
this);
119 ATH_MSG_FATAL(
"Problem retrieving ATLASDetectorID helper" );
120 return StatusCode::FAILURE;
124 return StatusCode::FAILURE;
128 return StatusCode::FAILURE;
132 return StatusCode::FAILURE;
136 return StatusCode::FAILURE;
144 return StatusCode::FAILURE;
177 m_config[
"all"].CalibrateRt.emplace_back(
"TRT") ;
178 m_config[
"all"].CalibrateT0.emplace_back(
"TRT") ;
179 m_config[
"all"].PrintLog.emplace_back(
"TRT") ;
180 m_config[
"all"].PrintT0Out.emplace_back(
"TRT") ;
181 m_config[
"all"].PrintRtOut.emplace_back(
"TRT") ;
184 m_config[
"subdet"].CalibrateRt.emplace_back(
"TRT") ;
185 m_config[
"subdet"].CalibrateRt.emplace_back(
"Detector") ;
187 m_config[
"subdet"].NoHistograms.emplace_back(
"TRT") ;
189 m_config[
"subdet"].PrintT0Out.emplace_back(
"Detector") ;
190 m_config[
"subdet"].PrintRtOut.emplace_back(
"Detector") ;
194 m_config[
"1"].selections[
"Detector"].insert(1);
201 m_config[
"-1"].selections[
"Detector"].insert(-1);
209 m_config[
"layer"].CalibrateRt.emplace_back(
"TRT") ;
210 m_config[
"layer"].CalibrateRt.emplace_back(
"Detector") ;
211 m_config[
"layer"].CalibrateRt.emplace_back(
"Layer") ;
212 m_config[
"layer"].CalibrateRt.emplace_back(
"Module") ;
213 m_config[
"layer"].CalibrateRt.emplace_back(
"Board") ;
214 m_config[
"layer"].CalibrateRt.emplace_back(
"Chip") ;
216 m_config[
"layer"].NoHistograms.emplace_back(
"TRT") ;
217 m_config[
"layer"].NoHistograms.emplace_back(
"Detector") ;
218 m_config[
"layer"].NoHistograms.emplace_back(
"Straw") ;
220 m_config[
"layer"].PrintT0Out.emplace_back(
"Layer") ;
221 m_config[
"layer"].PrintT0Out.emplace_back(
"Module") ;
222 m_config[
"layer"].PrintT0Out.emplace_back(
"Board") ;
223 m_config[
"layer"].PrintT0Out.emplace_back(
"Chip") ;
224 m_config[
"layer"].PrintT0Out.emplace_back(
"Straw") ;
225 m_config[
"layer"].PrintRtOut.emplace_back(
"Layer") ;
226 m_config[
"layer"].PrintRtOut.emplace_back(
"Module") ;
227 m_config[
"layer"].PrintRtOut.emplace_back(
"Board") ;
228 m_config[
"layer"].PrintRtOut.emplace_back(
"Chip") ;
229 m_config[
"layer"].PrintRtOut.emplace_back(
"Straw") ;
233 m_config[
"1_0"].selections[
"Detector"].insert(1);
234 m_config[
"1_0"].selections[
"Layer"].insert(0);
236 m_config[
"1_1"].selections[
"Detector"].insert(1);
237 m_config[
"1_1"].selections[
"Layer"].insert(1);
239 m_config[
"1_2"].selections[
"Detector"].insert(1);
240 m_config[
"1_2"].selections[
"Layer"].insert(2);
242 m_config[
"-1_0"].selections[
"Detector"].insert(-1);
243 m_config[
"-1_0"].selections[
"Layer"].insert(0);
245 m_config[
"-1_1"].selections[
"Detector"].insert(-1);
246 m_config[
"-1_1"].selections[
"Layer"].insert(1);
248 m_config[
"-1_2"].selections[
"Detector"].insert(-1);
249 m_config[
"-1_2"].selections[
"Layer"].insert(2);
251 return StatusCode::SUCCESS;
257 return StatusCode::SUCCESS;
265 for (
int i=0;
i<lev;
i++){
266 pat.replace(
pat.find(
'_'),1,
"");
267 sublev =
pat.substr(0,
pat.find(
'_'));
268 pat.replace(0,
pat.find(
'_'),
"");
275 std::map<std::string,int> strawmap;
280 std::string strawkey=std::string(Form(
"%i %i %i %i %i",
286 strawmap[strawkey]=isid;
292 std::string sl=sublev;
294 if (sl.compare(
SubLev(
key,lev))==0)
return true;
296 while(sl.compare(sl.substr(sl.find(
',')+1))!=0){
298 sl=sl.substr(sl.find(
',')+1);
309 if (sl.compare(
"-")==0) {
313 if (sl.compare(
"*")==0) {
318 if(sl.find(
',')!=std::string::npos){
320 while(sl.find(
',')!=std::string::npos){
321 sscanf(sl.substr(0,sl.find(
',')).data(),
"%i",&
value);
322 levels->insert(
value);
323 sl=sl.substr(sl.find(
',')+1);
325 sscanf(sl.data(),
"%i",&
value);
326 levels->insert(
value);
327 return levels->size();
330 if(sl.find(
't')!=std::string::npos){
332 sscanf(sl.substr(0,sl.find(
't')).data(),
"%i",&
min);
334 sl=sl.substr(sl.find(
't')+1);
335 sscanf(sl.data(),
"%i",&
max);
337 for (
int imod=
min; imod<=
max; imod++){
338 levels->insert(imod);
340 return levels->size();
344 sscanf(sl.data(),
"%i",&
value);
345 levels->insert(
value);
346 return levels->size();
374 int nTRThist=0, ndethist=0, nlayhist=0, nmodhist=0, nbrdhist=0, nchphist=0, nstwhist=0;
375 int nTRThistAr=0, ndethistAr=0, nlayhistAr=0, nmodhistAr=0, nbrdhistAr=0, nchphistAr=0, nstwhistAr=0;
378 std::string
infile=m_hittuple;
379 std::string
outfile=
"calibout";
381 std::string detname=
"Detector";
382 std::string layname=
"Layer";
383 if (!m_SplitBarrel) {
384 detname=
"WholeBarrel";
385 layname=
"WholeBarrelLayer";
389 Calibrator TRT(0,
"TRT",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
391 Calibrator Layer(2,layname.data(),m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
392 Calibrator Module(3,
"Module",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
393 Calibrator Board(4,
"Board",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
394 Calibrator Chip(5,
"Chip",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
395 Calibrator Straw(6,
"Straw",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
399 std::map<std::string,Calibrator*> calibrators;
400 calibrators[
"TRT"]=&
TRT;
402 calibrators[
"Layer"]=&
Layer;
403 calibrators[
"Module"]=&Module;
404 calibrators[
"Board"]=&Board;
405 calibrators[
"Chip"]=&Chip;
406 calibrators[
"Straw"]=&
Straw;
409 if(m_calsub!=
"user"){
410 m_doRt=m_config[m_calsub].CalibrateRt;
411 m_doT0=m_config[m_calsub].CalibrateT0;
412 m_doRes=m_config[m_calsub].FitResidual;
413 m_beQuiet=m_config[m_calsub].NoHistograms;
414 m_doOutPrint=m_config[m_calsub].PrintT0Out;
415 m_doRtPrint=m_config[m_calsub].PrintRtOut;
416 m_doLogPrint=m_config[m_calsub].PrintLog;
420 for (
const std::string&
s : m_doRt) calibrators[
s]->dort=
true;
421 for (
const std::string&
s : m_doT0) calibrators[
s]->dot0=
true;
422 for (
const std::string&
s : m_doRes) calibrators[
s]->dores=
true;
423 for (
const std::string&
s : m_beQuiet) calibrators[
s]->bequiet=
true;
424 for (
const std::string&
s : m_doOutPrint) calibrators[
s]->printt0=
true;
425 for (
const std::string&
s : m_doRtPrint) calibrators[
s]->printrt=
true;
426 for (
const std::string&
s : m_doLogPrint) calibrators[
s]->printlog=
true;
427 for (
const std::string&
s : m_useBoardRef) calibrators[
s]->usebref=
true;
428 for (std::pair<const std::string, Calibrator*>&
p : calibrators) {
430 calib->usep0=m_useP0;
431 calib->floatp3=m_floatP3;
432 calib->useshortstraws=m_DoShortStrawCorrection;
434 if (m_doRt.size()==0)
calib->nort=
true;
435 if (m_doT0.size()==0)
calib->not0=
true;
437 std::set<int> selset;
438 GetSubLevels(m_selstring,
calib->level+1,&selset);
440 calib->selection = selset;
445 Calibrator TRT_Ar (0,
"TRT_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
446 Calibrator Detector_Ar(1,
"Detector_Ar",m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
447 Calibrator Layer_Ar (2,
"Layer_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
448 Calibrator Module_Ar (3,
"Module_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
449 Calibrator Board_Ar (4,
"Board_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
450 Calibrator Chip_Ar (5,
"Chip_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
451 Calibrator Straw_Ar (6,
"Straw_Ar" ,m_mint0,m_minrt,m_rtrel,m_rtbinning,m_t0offset);
454 std::map<std::string,Calibrator*> calibratorsAr;
455 calibratorsAr[
"TRT"] =&TRT_Ar;
456 calibratorsAr[
"Detector"] =&Detector_Ar;
457 calibratorsAr[
"Layer"] =&Layer_Ar;
458 calibratorsAr[
"Module"] =&Module_Ar;
459 calibratorsAr[
"Board"] =&Board_Ar;
460 calibratorsAr[
"Chip"] =&Chip_Ar;
461 calibratorsAr[
"Straw"] =&Straw_Ar;
464 for (
const std::string&
s : m_doRt) calibratorsAr[
s]->dort=
true;
465 for (
const std::string&
s : m_doT0) calibratorsAr[
s]->dot0=
true;
466 for (
const std::string&
s : m_doRes) calibratorsAr[
s]->dores=
true;
467 for (
const std::string&
s : m_beQuiet) calibratorsAr[
s]->bequiet=
true;
468 for (
const std::string&
s : m_doOutPrint) calibratorsAr[
s]->printt0=
true;
469 for (
const std::string&
s : m_doRtPrint) calibratorsAr[
s]->printrt=
true;
470 for (
const std::string&
s : m_doLogPrint) calibratorsAr[
s]->printlog=
true;
471 for (
const std::string&
s : m_useBoardRef) calibratorsAr[
s]->usebref=
true;
472 for (std::pair<const std::string, Calibrator*>&
p : calibratorsAr) {
474 calib->usep0=m_useP0;
475 calib->floatp3=m_floatP3;
476 calib->useshortstraws=m_DoShortStrawCorrection;
478 if (m_doRt.size()==0)
calib->nort=
true;
479 if (m_doT0.size()==0)
calib->not0=
true;
481 std::set<int> selset;
482 GetSubLevels(m_selstring,
calib->level+1,&selset);
484 calib->selection = selset;
500 ATH_MSG_INFO(
"MIN STATISTICS : RT=" << m_minrt <<
", T0=" << m_mint0 );
521 ATH_MSG_INFO(
"MIN STATISTICS : RT=" << m_minrt <<
", T0=" << m_mint0 );
534 int rbrd, rchp, rdet, dum;
536 std::map<std::string,float> reft0map;
537 std::ifstream t0ref(
"finedelays.txt",std::ios::in);
538 if(t0ref.is_open())
ATH_MSG_INFO(
" Opened finedelays.txt ");
539 for(
int iref=0;iref<208;iref++){
540 t0ref >> rbrd >> rchp >> rdet >> dum >> rt0;
541 reft0map[std::string(Form(
"_%i_%i_%i",rdet,rbrd,rchp))]=rt0;
548 bool isdines = m_rtrel.find(
"dines")!=std::string::npos;
549 bool isbinned = m_rtrel.find(
"binned")!=std::string::npos;
551 if (isdines) rtint=2;
552 else if (isbinned) rtint=1;
557 std::map<std::string,epdata> ephasemap;
560 std::unique_ptr<TFile>
histfile(TFile::Open(
"calibout.root",
"RECREATE"));
569 std::ifstream
myFile (
infile.data(), std::ios::in | std::ios::binary);
577 myFile.read ((
char*)&npop,
sizeof(
int));
579 int* chist=
new int[2*npop+2];
580 if (npop>0)
myFile.read ((
char*)(chist+2),
sizeof(
int)*2*npop);
581 myFile.read ((
char*)&isid,
sizeof(
int));
590 m_neighbourSvc->getChip(
ident,chip);
591 if(abs(m_TRTID->barrel_ec(
ident))<2){
592 board=m_neighbourSvc->chipToBoardBarrel(chip,m_TRTID->layer_or_wheel(
ident));
601 if (m_SplitBarrel) hitdata.
det=(
int)m_TRTID->barrel_ec(
ident);
602 else hitdata.
det=abs((
int)m_TRTID->barrel_ec(
ident));
603 if(hitdata.
det!=1 && hitdata.
det!=-1 && hitdata.
det!=2 && hitdata.
det!=-2) {
608 if( (hitdata.
det==1 || hitdata.
det==-1) && (hitdata.
lay<0 || hitdata.
lay>2) ) {
611 }
else if( (hitdata.
det==2 || hitdata.
det==-2) && (hitdata.
lay<0 || hitdata.
lay>13) ) {
616 if( hitdata.
mod < 0 || hitdata.
mod > 31 ) {
624 if( hitdata.
stl < 0 || hitdata.
stl > m_TRTID->straw_layer_max(
ident) ) {
630 if( hitdata.
stw < 0 || hitdata.
stw > m_TRTID->straw_max(
ident) ) {
639 std::vector<float> rvalues ;
640 const float defaultpcal[] = {0,0,0,0} ;
643 pcal = rtr ? rtr->
cal() : defaultpcal ;
648 pcal = rtr ? rtr->
cal() : defaultpcal ;
650 hitdata.
rtpar[0]=pcal[0];
651 hitdata.
rtpar[1]=pcal[1];
652 hitdata.
rtpar[2]=pcal[2];
653 hitdata.
rtpar[3]=pcal[3];
657 MakeBDKeys(hitdata.
det, hitdata.
lay, hitdata.
mod, hitdata.
brd, hitdata.
chp, hitdata.
sid);
660 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;
661 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;
672 hitdata.
t0=m_trtcaldbTool->getT0(
ident);
674 strawelement = m_trtmanager->getElement(
ident);
675 if(hitdata.
det==1 || hitdata.
det==-1) {
688 if ( m_DoShortStrawCorrection && hitdata.
lay==0 && hitdata.
stl<9){
690 double t0test1=m_trtcaldbTool->getT0((
Identifier)301998432);
691 double t0test2=m_trtcaldbTool->getT0((
Identifier)302001504);
692 if (t0test1 != t0test2) hitdata.
t0+=0.75;
696 hitdata.
rt0=reft0map[std::string(Form(
"_%i_%i_%i",hitdata.
det,hitdata.
brd,hitdata.
chp))];
699 int isArgonStraw = 0;
708 nTRThist +=
TRT.AddHit(m_Tkey,hitdata,chist,
true);
710 if (m_SplitBarrel) ndethist +=
Detector.AddHit(m_Dkey,hitdata,chist,
true);
711 else ndethist +=
Detector.AddHit(m_Dkey_acc,hitdata,chist,
true);
712 if (
Layer.CheckSelection(hitdata.
lay)) {
713 if (m_SplitBarrel) nlayhist +=
Layer.AddHit(m_Lkey,hitdata,chist,
true);
714 else { nlayhist +=
Layer.AddHit(m_Lkey_acc,hitdata,chist,
true);
continue;}
716 nmodhist += Module.
AddHit(m_Mkey,hitdata,chist,
true);
718 nbrdhist += Board.
AddHit(m_Bkey,hitdata,chist,
true);
720 nchphist += Chip.
AddHit(m_Ckey,hitdata,chist,
true);
721 if (
Straw.CheckSelection(hitdata.
stw))
722 nstwhist +=
Straw.AddHit(m_Skey,hitdata,chist,
true);
731 nTRThist +=
TRT.AddHit(m_Tkey,hitdata,chist,
true);
733 if (m_SplitBarrel) ndethist +=
Detector.AddHit(m_Dkey,hitdata,chist,
true);
734 else ndethist +=
Detector.AddHit(m_Dkey_acc,hitdata,chist,
true);
735 if (
Layer.CheckSelection(hitdata.
lay)) {
736 if (m_SplitBarrel) nlayhist +=
Layer.AddHit(m_Lkey,hitdata,chist,
true);
737 else { nlayhist +=
Layer.AddHit(m_Lkey_acc,hitdata,chist,
true);
continue;}
739 nmodhist += Module.
AddHit(m_Mkey,hitdata,chist,
true);
741 nbrdhist += Board.
AddHit(m_Bkey,hitdata,chist,
true);
743 nchphist += Chip.
AddHit(m_Ckey,hitdata,chist,
true);
744 if (
Straw.CheckSelection(hitdata.
stw)) {
745 nstwhist +=
Straw.AddHit(m_Skey,hitdata,chist,
true);
754 nTRThistAr += TRT_Ar.
AddHit(m_Tkey,hitdata,chist,
true);
756 if (m_SplitBarrel) ndethistAr += Detector_Ar.
AddHit(m_Dkey,hitdata,chist,
true);
757 else ndethistAr += Detector_Ar.
AddHit(m_Dkey_acc,hitdata,chist,
true);
759 if (m_SplitBarrel) nlayhistAr += Layer_Ar.
AddHit(m_Lkey,hitdata,chist,
true);
760 else { nlayhistAr += Layer_Ar.
AddHit(m_Lkey_acc,hitdata,chist,
true);
continue;}
762 nmodhistAr += Module_Ar.
AddHit(m_Mkey,hitdata,chist,
true);
764 nbrdhistAr += Board_Ar.
AddHit(m_Bkey,hitdata,chist,
true);
766 nchphistAr += Chip_Ar.
AddHit(m_Ckey,hitdata,chist,
true);
768 nstwhistAr += Straw_Ar.
AddHit(m_Skey,hitdata,chist,
true);
779 if ((ihist%10000==9999) | (ihist==m_nevents-1)){
780 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) );
781 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) );
788 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) );
789 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) );
791 TRT.UpdateOldConstants();
793 Layer.UpdateOldConstants();
836 caldata startdata(
true,55,100);
839 std::map<std::string,TDirectory*> dirmap;
854 for (std::pair<const std::string, BDdetector>&
pt : m_trt.t) {
856 if (
TRT.Skip())
break;
857 if (
TRT.HasKey(
pt.first)) {
858 trtdir =
TRT.Calibrate(
histfile.get(),
pt.first,SubLev(m_options,1),&startdata);
859 if (
TRT.printt0) t0calfile << Form(
"-3 -1 -1 -1 -1 : %e %e",
TRT.data[
pt.first].t0,
TRT.data[
pt.first].t0err) << std::endl;
860 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]) << std::endl;
862 for (std::pair<const std::string, BDlayer>& pd :
pt.second.d) {
866 detdir =
Detector.Calibrate(trtdir,pd.first,SubLev(m_options,2),&
TRT.data[
pt.first]);
868 for (std::pair<const std::string, BDmodule>& pl : pd.second.l) {
870 if(
Layer.Skip())
break;
871 if(
Layer.HasKey(pl.first)){
872 laydir =
Layer.Calibrate(detdir,pl.first,SubLev(m_options,3),&
Detector.data[pd.first]);
873 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) << std::endl;
874 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]) << std::endl;
875 if (!m_SplitBarrel) {
876 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) << std::endl;
877 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]) << std::endl;
880 for (std::pair<const std::string, BDboard>& pm : pl.second.m) {
882 if(Module.
Skip())
break;
883 if(Module.
HasKey(pm.first)){
884 moddir = Module.Calibrate(laydir,pm.first,SubLev(m_options,4),&
Layer.data[pl.first]);
885 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) << std::endl;
886 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]) << std::endl;
888 for (std::pair<const std::string, BDchip>&
pb : pm.second.b) {
890 if(Board.
Skip())
break;
892 brddir = Board.Calibrate(moddir,
pb.first,SubLev(m_options,5),&Module.
data[pm.first]);
894 for (std::pair<const std::string, BDstraw>&
pc :
pb.second.c) {
896 if(Chip.
Skip())
break;
898 chpdir = Chip.Calibrate(brddir,
pc.first,SubLev(m_options,6),&Board.
data[
pb.first]);
900 for (std::pair<const std::string, BDzero>& ps :
pc.second.s) {
902 if(
Straw.Skip())
break;
903 if(
Straw.HasKey(ps.first)){
904 Straw.Calibrate(chpdir,ps.first,SubLev(m_options,7),&Chip.
data[
pc.first]);
905 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) << std::endl;
906 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]) << std::endl;
918 std::map<std::string,TDirectory*> dirArmap;
928 for (std::pair<const std::string, BDdetector>&
pt : m_trt.t) {
930 if (TRT_Ar.
Skip())
break;
932 trtdirAr = TRT_Ar.Calibrate(
histfile.get(),
pt.first,SubLev(m_options,1),&startdata);
934 for (std::pair<const std::string, BDlayer>& pd :
pt.second.d) {
936 if(Detector_Ar.
Skip())
break;
937 if(Detector_Ar.
HasKey(pd.first)){
938 detdirAr = Detector_Ar.Calibrate(trtdirAr,pd.first,SubLev(m_options,2),&TRT_Ar.
data[
pt.first]);
940 for (std::pair<const std::string, BDmodule>& pl : pd.second.l) {
942 if(Layer_Ar.
Skip())
break;
943 if(Layer_Ar.
HasKey(pl.first)){
944 laydirAr = Layer_Ar.Calibrate(detdirAr,pl.first,SubLev(m_options,3),&Detector_Ar.
data[pd.first]);
947 for (std::pair<const std::string, BDboard>& pm : pl.second.m) {
949 if(Module_Ar.
Skip())
break;
950 if(Module_Ar.
HasKey(pm.first)){
951 moddirAr = Module_Ar.Calibrate(laydirAr,pm.first,SubLev(m_options,4),&Layer_Ar.
data[pl.first]);
952 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) << std::endl;
953 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]) << std::endl;
955 for (std::pair<const std::string, BDchip>&
pb : pm.second.b) {
956 if(Board_Ar.
Skip())
break;
958 brddirAr = Board_Ar.Calibrate(moddirAr,
pb.first,SubLev(m_options,5),&Module_Ar.
data[pm.first]);
960 for (std::pair<const std::string, BDstraw>&
pc :
pb.second.c) {
962 if(Chip_Ar.
Skip())
break;
964 chpdirAr = Chip_Ar.Calibrate(brddirAr,
pc.first,SubLev(m_options,6),&Board_Ar.
data[
pb.first]);
966 for (std::pair<const std::string, BDzero>& ps :
pc.second.s) {
968 if(Straw_Ar.
Skip())
break;
969 if(Straw_Ar.
HasKey(ps.first)){
970 Straw_Ar.Calibrate(chpdirAr,ps.first,SubLev(m_options,7),&Chip_Ar.
data[
pc.first]);
971 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) << std::endl;
972 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]) << std::endl;
998 Layer.DumpConstants();
1002 Straw.DumpConstants();
1005 binrtcalfile.close();
1037 if (aTrack==
nullptr) {};