798 {
799
800
801 bool calrt=
opt.find(
'R')!=std::string::npos;
802 bool calt0=
opt.find(
'T')!=std::string::npos;
803 bool donothing=
opt.find(
'N')!=std::string::npos;
804 bool prnt=
opt.find(
'P')!=std::string::npos;
805 bool useref=
opt.find(
'B')!=std::string::npos;
806 bool useshortstw=
opt.find(
'S')!=std::string::npos;
807
808 if (donothing)
return dir;
809
811
812 bool enough_t0 =
data[
key].ntres>=m_mint0stat;
813 bool enough_rt =
data[
key].nrt>=m_minrtstat;
814
815 if ((enough_rt && calrt) || (enough_t0 && calt0)) {
818 if(level<2) {
819 std::cout <<
" Calibrator::Calibrate Parent Directory: " << std::string(
dir->GetPath()) << std::endl;
820 std::cout <<
" Calibrator::Calibrate key " <<
key <<
" name " <<
m_name <<
" entries for rt " <<
data[
key].nrt <<
" min req " << m_minrtstat << std::endl;
821 std::cout <<
" Calibrator::Calibrate key " <<
key <<
" entries for t0 " <<
data[
key].ntres <<
" min req " << m_mint0stat << std::endl;
822 std::cout << " Calibrator::Calibrate Directory: " << std::string(m_hdirs[key]->GetPath()) << std::endl;
823 }
824 }
826
827
828 if ((enough_rt && calrt) || (enough_t0 && calt0)) {
829
830 m_resHists[
key] =
new TH1F(
"residual",
"residual",m_nbinsres,m_minres,m_maxres);
831 int ncont=0;
832 for (
int i=0;
i<100;
i++) {
833 m_resHists[
key]->SetBinContent(i+1,data[key].
reshist[i]);
835 }
836 m_resHists[
key]->SetEntries((
int)data[key].nres);
837 if (bequiet) m_resHists[
key]->SetDirectory(
nullptr);
838 if(ncont==0) {
839 std::cout << " No bin content " << std::endl;
840 } else {
841 FitResidual(key,m_resHists[key]);
842 }
843
844 }
845
846
847 if (prnt) printf(
"Calibrator::calibrate %8s %-14s: \n",
m_name.data(),
key.data());
848
849
850 if (nort){
851
852
856 for (
int i=0;
i<4;
i++) data[key].rtpar[i]=data[key].oldrtpar[i];
857 if (prnt) printf("RT << %7i (%8.1e) %8.1e %8.1e %8.1e, %3.2f : ", data[key].nrt,data[key].rtpar[0],data[key].rtpar[1],data[key].rtpar[2],data[key].rtpar[3], data[key].rtt0);
858 }
859 else{
860
861 if ((calrt && enough_rt) || level==0) {
863 m_rtHists[
key] =
new TH2F(
"rt-relation",
"rt-relation",m_nbinst,m_mint,m_maxt,m_nbinsr,m_minr,m_maxr);
864 for (
int i=0;
i<m_nbinst;
i++) {
865 for (
int j=0;
j<m_nbinsr;
j++) {
866 m_rtHists[
key]->SetBinContent(i+1,j+1,data[key].
rthist[i+m_nbinst*j]);
867 }
868 }
869 m_rtHists[
key]->SetEntries(data[key].nrt);
870 if(level<2) std::cout <<
" Calibrator::calibrate do rt fit for key " <<
key <<
" with number of entries " << m_rtHists[
key]->GetEntries() << std::endl;
871 if (bequiet) {
872 m_rtHists[
key]->SetDirectory(
nullptr);
873 if(level<2) std::cout << " remove this level from calout.root file " << std::endl;
874 }
875 data[
key].rtt0=FitRt(key,opt,m_rtHists[key],m_hdirs[key]);
876 if (prnt) printf("RT %7i (%8.1e) %8.1e %8.1e %8.1e, %3.2f : ", data[key].nrt, data[key].rtpar[0], data[key].rtpar[1], data[key].rtpar[2], data[key]. rtpar[3], data[key].rtt0);
877 }
878 else{
879
882 for (
int i=0;
i<4;
i++) data[key].rtpar[i]=caldata_above->
rtpar[i];
883 if (prnt) printf("RT /\\ %7i (%8.1e) %8.1e %8.1e %8.1e, %3.2f : ", data[key].nrt,data[key].rtpar[0],data[key].rtpar[1],data[key].rtpar[2],data[key].rtpar[3], data[key].rtt0);
884 }
885 }
886
887
888
889 if (not0){
890
891
897 if (prnt) printf(
"T0 << %7i %05.2f%+05.2f%+05.2f=%05.2f \n", data[key].ntres, data[key].oldt02, 0.0, data[key].rtt0, data[key].
t0);
898 }
899 else{
900 if (useref && level==5){
901
902
908 if (prnt) printf(
"T0 ** %7i %05.2f%+05.2f%+05.2f=%05.2f \n", data[key].ntres, caldata_above->
t0, data[key].reft0, data[key].rtt0, data[key].t0);
909 }
910 else {
911
912 if ((calt0 && enough_t0) || level==0) {
914 m_tresHists[
key] =
new TH1F(
"timeresidual",
"time residual",m_nbinstres,m_mintres,m_maxtres);
915
916 for (
int i=0;
i<100;
i++) {
917 m_tresHists[
key]->SetBinContent(i+1,data[key].m_treshist[i]);
918 }
919 m_tresHists[
key]->SetEntries(data[key].ntres);
920 if(level<2) std::cout <<
" Calibrator::calibrate do t0 fit for key " <<
key <<
" Numb. entries " << m_rtHists[
key]->GetEntries() << std::endl;
921 if (bequiet) {
922 if(level<2) std::cout << " Calibrator::calibrate: remove this level from calibout.root " << std::endl;
923 m_tresHists[
key]->SetDirectory(
nullptr);
924 }
925
929
930 if (prnt) printf(
"T0 %7i %05.2f%+05.2f%+05.2f%+05.2f=%05.2f \n", data[key].ntres, data[key].oldt02, data[key].
t0-data[key].oldt02-data[key].rtt0, data[key].rtt0, m_t0shift, data[key].
t0);
931
932
933 }
934
935 else {
936
937
938 if (data[key].oldt02 + (caldata_above->
t0 - caldata_above->
oldt02) >0)
data[
key].t0=
data[
key].oldt02 + (caldata_above->
t0 - caldata_above->
oldt02);
940
941
942
943 if ((level == 6 && useshortstw) && std::abs(data[key].det)<2 && (data[key].lay==0 && data[key].stl<9) )
data[
key].t0=caldata_above->
t0-0.75;
947 if (prnt) printf(
"T0 /\\ %7i %05.2f%+05.2f%+05.2f=%05.2f \n", data[key].ntres, caldata_above->
t0, caldata_above->
oldt02, data[key].oldt02 , data[key].t0);
948 }
949 }
950 }
951
952
953 if (prnt && !bequiet) std::cout << " H";
954
955 if (prnt) std::cout << std::endl;
956
958
959}
float reshist[100]
the 1D residual histogram (100 bins)
float rthist[640]
the 2D rt histogram (20x32 bins)
float t0err
the new to error
float rtt0
the t0 fron the R-t fit
RtGraph * rtgraph
the rt graph
std::array< float, 4 > rtpar
the new rt-parameters
double oldt02
the old sub-module t0 (average of t0 for all straws in the module)
std::string m_name
The primary name part of this expression.
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)