ATLAS Offline Software
Public Member Functions | Public Attributes | Private Attributes | List of all members
Calibrator Class Reference

A structure to contain data associated with the calibration of a certain sub-module. More...

#include <Calibrator.h>

Collaboration diagram for Calibrator:

Public Member Functions

 Calibrator ()
 
 Calibrator (int, const std::string &, int, int, const std::string &, const std::string &, float)
 Constructor. More...
 
 Calibrator (const Calibrator &)=delete
 
Calibratoroperator= (const Calibrator &)=delete
 
 ~Calibrator ()
 Destructor. More...
 
int Simple1dHist (float, float, int, float)
 A 1D histograming function. More...
 
int Simple2dHist (float, float, int, float, float, int, float, float)
 A 2D histograming function. More...
 
float AccumulativeMean (float, float, float)
 Increments a single bin in all three histograms in a sub-module. More...
 
int AddHit (const std::string &, const databundle &, int *, bool)
 Adds hits to a sub-module either in the form of a single straw hit or a histogram containing all the hits in a single straw. More...
 
TDirectory *Calibrate ATLAS_NOT_THREAD_SAFE (TDirectory *, std::string, const std::string &, caldata *)
 Creates root histograms, performs the t0 and R-t calibration for a given sub-module and writes the resulting histograms to a root directory tree (if not told otherwise). More...
 
float FitRt ATLAS_NOT_THREAD_SAFE (const std::string &, const std::string &, TH2F *, TDirectory *)
 Makes the R-t fit. More...
 
float FitTimeResidual ATLAS_NOT_THREAD_SAFE (const std::string &, TH1F *)
 Makes the time residual fit. More...
 
float FitResidual ATLAS_NOT_THREAD_SAFE (const std::string &, TH1F *)
 Makes the residual fit. More...
 
void WriteStat (TDirectory *)
 Creates an ntuple with entries containing data associated with the sub-modules in a sub level. More...
 
void DumpConstants ()
 
std::string GetBinnedRt (const std::string &)
 
std::string PrintStat ()
 Prints some sub-level statistics. More...
 
std::string PrintInfo ()
 
bool HasKey (const std::string &) const
 ... More...
 
int UpdateOldConstants ()
 ... More...
 
bool CheckSelection (int)
 Checks if a given sub-module is selected for calibration. More...
 
bool Skip ()
 ... More...
 
std::string GetOptString () const
 Creates a string summarizing what is being done at this sub-level. More...
 
int GetNDirs ()
 ... More...
 
std::string GetSelString ()
 Creates a string summarizing which modules are being calibrated at this sub-level. More...
 
float oldt0 (const std::string &key)
 
float xmean (const std::string &key)
 
float ymean (const std::string &key)
 
float zmean (const std::string &key)
 

Public Attributes

std::map< std::string, caldatadata
 A map between the sub-module identifier string and the calibration data structure (caldata) More...
 
bool dort
 if true an rt fit is made, if false the value from the level above is used More...
 
bool dot0
 if true a time residual fit is made, if false the value from the level above is used More...
 
bool dores
 if true a residual fit is made More...
 
bool nort
 if true the old rt parameters are copied to the new ones More...
 
bool not0
 if true the old t0 valus is copied to the new one More...
 
bool usebref
 if true chip reference t0 values (offset from board mean) are used More...
 
bool bequiet
 if true no histograms are written to the root file More...
 
bool printlog
 if true a log entry is prined for each sub-modile in this sub-level More...
 
bool printt0
 if true a t0 entry in the calibration output file is prined for each sub-module in this sub-level More...
 
bool printrt
 if true an rt entry in the calibration output file is prined for each sub-module in this sub-level More...
 
bool usep0
 if true the 0th order coeficcient of the rt fit function is not set to 0 in the calibration output file More...
 
bool floatp3
 if true the 3rd order coeficcient of the rt fit function is not fixed to 0 More...
 
bool useshortstraws
 if true a shift of -0.75 ns is applied for straws in layer ==0, strawlayer < 9, and when doing calibration in a granuralyty different from chip or straw More...
 
std::set< int > selection
 a set containing the sub-modules to be calibrated More...
 
int level
 the sub-level of the Calibrator instance More...
 

Private Attributes

std::string m_name
 The name of the Calibrator instance. More...
 
std::string m_rtbinning
 The direction to do the R-t binning. More...
 
int m_minrtstat
 minimum number of hits in a sub-module required to do an R-t calibration More...
 
int m_mint0stat
 minimum number of hits in a sub-module required to do a t0 calibration More...
 
float m_t0shift
 the t0 shift More...
 
int m_nbinsr
 number of r-bins in the 2D rt histogram More...
 
int m_nbinst
 number of t-bins in the 2D rt histogram More...
 
int m_nbinstres
 number of bins in the 1D time residual histogram More...
 
int m_nbinsres
 number of bins in the 1D residual histogram More...
 
float m_minr
 lower limit of r in 2D rt histogram More...
 
float m_maxr
 upper limit of r in 2D rt histogram More...
 
float m_mint
 lower limit of t in 2D rt histogram More...
 
float m_maxt
 upper limit of t in 2D rt histogram More...
 
float m_mintres
 lower limit of 1D time residual histogram More...
 
float m_maxtres
 upper limit of 1D time residual histogram More...
 
float m_minres
 lower limit of 1D residual histogram More...
 
float m_maxres
 upper limit of 1D residual histogram More...
 
std::map< std::string, TDirectory * > m_hdirs
 ... More...
 
std::map< std::string, TH1F * > m_resHists
 ... More...
 
std::map< std::string, TH1F * > m_tresHists
 ... More...
 
std::map< std::string, TH2F * > m_rtHists
 ... More...
 
int m_ntreshits
 ... More...
 
int m_nreshits
 ... More...
 
int m_nrthits
 ... More...
 
int m_nhits
 ... More...
 
bool m_isdines
 true if the rt relation is Dines' More...
 

Detailed Description

A structure to contain data associated with the calibration of a certain sub-module.

An instance of this class is created for each sub-level of the TRT by the TRTCalibrator. It contains three histograms for each sub-module in the level:

The histograms are inside a caldata structure which also contains other variables with information about the calibration of a sub-module. There is one caldata instance for each sub-module in the level. They are contained in a map (Calibrator::data) with a key string which identifies the sub-module.

Methods exists for adding hits to the histograms (Calibrator::AddHits) and for fitting them (Calibrator::Calibrate).

Definition at line 178 of file Calibrator.h.

Constructor & Destructor Documentation

◆ Calibrator() [1/3]

Calibrator::Calibrator ( )

Definition at line 339 of file Calibrator.cxx.

340  : dort(false),
341  dot0(false),
342  dores(false),
343  nort(false),
344  not0(false),
345  usebref(false),
346  bequiet(false),
347  printlog(false),
348  printt0(false),
349  printrt(false),
350  usep0(false),
351  floatp3(false),
352  useshortstraws(true),
353 
354  m_name ("None"),
355  m_rtbinning ("None"),
356  m_minrtstat (-10),
357  m_mint0stat (-10),
358  m_t0shift (-100.),
359 
360  m_nbinsr(100),
361  m_nbinst(55),
362  m_nbinstres(100),
363  m_nbinsres(100),
364  m_minr(0),
365  m_maxr(2),
366  m_mint(-5),
367  m_maxt(50),
368  m_mintres(-10),
369  m_maxtres(10),
370  m_minres(-0.6),
371  m_maxres(0.6),
372 
373  m_ntreshits(0),
374  m_nreshits(0),
375  m_nrthits(0),
376  m_nhits(0),
377 
378  m_isdines ( false)
379 {
380  selection.insert(-3);
381  level =-10;
382 }

◆ Calibrator() [2/3]

Calibrator::Calibrator ( int  lev,
const std::string &  nme,
int  mint0,
int  minrt,
const std::string &  rtr,
const std::string &  rtb,
float  t0sft 
)

Constructor.

Parameters
[in]levsub level number 0=TRT 1=barrel/ec 2=layer 3=phi-module 4=board 5=chip 6=straw
[in]nmethe name of the calibrator
[in]mint0minimum number of hits in a sub-module required to do a t0 calibration
[in]minrtminimum number of hits in a sub-module required to do an rt calibration
[in]rtrwhich rt-relation to use
[in]rtbwhich rt binning to use

Definition at line 384 of file Calibrator.cxx.

385  : dort(false),
386  dot0(false),
387  dores(false),
388  nort(false),
389  not0(false),
390  usebref(false),
391  bequiet(false),
392  printlog(false),
393  printt0(false),
394  printrt(false),
395  usep0(false),
396  floatp3(false),
397  useshortstraws(true),
398 
399  m_name(nme),
400  m_rtbinning(rtb),
401  m_minrtstat(minrt),
402  m_mint0stat(mint0),
403  m_t0shift(t0sft),
404 
405  m_nbinsr(100),
406  m_nbinst(55),
407  m_nbinstres(100),
408  m_nbinsres(100),
409  m_minr(0),
410  m_maxr(2),
411  m_mint(-5),
412  m_maxt(50),
413  m_mintres(-10),
414  m_maxtres(10),
415  m_minres(-0.6),
416  m_maxres(0.6),
417 
418  m_ntreshits(0),
419  m_nreshits(0),
420  m_nrthits(0),
421  m_nhits(0),
422 
423  m_isdines ( rtr.find("dines")!=std::string::npos)
424 {
425  level=lev;
426  selection.insert(-3);
427 }

◆ Calibrator() [3/3]

Calibrator::Calibrator ( const Calibrator )
delete

◆ ~Calibrator()

Calibrator::~Calibrator ( )

Destructor.

Definition at line 429 of file Calibrator.cxx.

429  {
430 }

Member Function Documentation

◆ AccumulativeMean()

float Calibrator::AccumulativeMean ( float  n,
float  oldmean,
float  newvalue 
)

Increments a single bin in all three histograms in a sub-module.

Parameters
[in]keythe identifier of the histogram
[in]dthe databundle containing single straw hit data
Returns
1

Definition at line 447 of file Calibrator.cxx.

447  {
448  if((int)n==0) return oldmean;
449  return oldmean*((n-1)/n)+newvalue/n;
450 }

◆ AddHit()

int Calibrator::AddHit ( const std::string &  key,
const databundle d,
int *  binhist,
bool  makehist 
)

Adds hits to a sub-module either in the form of a single straw hit or a histogram containing all the hits in a single straw.

Parameters
[in]keythe identifier of the sub-module
[in]dthe databundle containing single straw hit data
[in]binhistan integer arry containing the histogram data for a single straw
Returns
1 if the sub-module is seen for the first time and 0 if it has been seen before

Definition at line 962 of file Calibrator.cxx.

962  {
963 
964  int tresbin=Simple1dHist(m_mintres,m_maxtres,m_nbinstres,d.tres);
965  int resbin=Simple1dHist(m_minres,m_maxres,m_nbinsres,d.res);
967  int npop;
968  int ibin;
969  int value;
970 
971  //if the it is the first hit or histogram
972  if (data.find(key) == data.end()){
973 
974  //create a new histogram object
975  caldata* hist=new caldata(makehist,m_nbinst,m_nbinsr);
976 
977  //out of memory?
978  if (hist == nullptr){
979  std::cout << "OUT OF MEMORY!" << std::endl;
980  return -1;
981  }
982 
983  hist->ntres=0;
984  hist->nres=0;
985  hist->nrt=0;
986  hist->sumt0=0;
987 
988  //zero histogram bins
989  for (int i=0;i<m_nbinsr*m_nbinst+200;i++) {
990  if (makehist) hist->rthist[i]=0;
991  if (i<100) {
992  if (makehist) hist->m_treshist[i]=0;
993  if (makehist) hist->reshist[i]=0;
994  }
995  }
996 
997  if (binhist==nullptr){ //if it is a hit
998 
999  if (tresbin>=0){
1000  if (makehist) hist->m_treshist[tresbin]=d.weight; //add value to bin
1001  hist->ntres=1; //set bin content to 1
1002  m_nhits=1;
1003  }
1004  if (resbin>=0){
1005  if (makehist) hist->reshist[resbin]=1;
1006  hist->nres=1;
1007  }
1008  if (rtbin>=0){
1009  if (makehist) hist->rthist[rtbin]=1;
1010  hist->nrt=1;
1011  }
1012 
1013  hist->sumt0=d.t0;
1014  }
1015  else { //if it is a histogram
1016 
1017  npop=binhist[0]; //the number of populated (non-zero) bins
1018  if(level<2) std::cout << " Calibrator::AddHit called for key " << key << " add histogram with "<< npop << " non-zero bins " << std::endl;
1019 
1020  for(int ipop=2;ipop<2*npop+2;ipop=ipop+2) { //loop over the data
1021 
1022  ibin=binhist[ipop]; //bin number
1023  value=binhist[ipop+1]; //value
1024 
1025  if (ibin<100) { //timeresidual histogram
1026  m_ntreshits+=value;
1027  hist->ntres+=value;
1028  m_nhits+=value;
1029  if (makehist) hist->m_treshist[ibin]=(float)value;
1030  hist->sumt0+=d.t0*value;
1031  }
1032  else if (ibin>=100 && ibin<200) { //residual histogram
1033  m_nreshits+=value;
1034  hist->nres+=value;
1035  if (makehist) hist->reshist[ibin-100]=(float)value;
1036  }
1037  else { //rt histogram
1038  m_nrthits+=value;
1039  hist->nrt+=value;
1040  if (makehist) hist->rthist[ibin-200]=(float)value;
1041  }
1042 
1043  }
1044  }
1045 
1046  //initialize parameters
1047  if (level>0) hist->det=d.det; else hist->det=-3; //
1048  if (level>1) hist->lay=d.lay; else hist->lay=-3;
1049  if (level>2) hist->mod=d.mod; else hist->mod=-3;
1050  if (level>3) hist->brd=d.brd; else hist->brd=-3;
1051  if (level>4) hist->chp=d.chp; else hist->chp=-3;
1052  if (level>5) hist->stw=d.stw; else hist->stw=-3;
1053  if (level>2) hist->stl=d.stl; else hist->stl=-3;
1054  if (level>5) hist->sid=d.sid; else hist->sid=-3;
1055  hist->res=0;
1056  hist->resMean=0;
1057  hist->reserr=0;
1058  hist->tres=0;
1059  hist->tresMean=0;
1060  hist->t0=0;
1061  if (level==5) hist->reft0=d.rt0; else hist->reft0=0;
1062  hist->t0off=0;
1063  hist->t0err=0;
1064  hist->nhits=1;
1065  hist->t0fittype=0;
1066 
1067  hist->x=d.x; //straw x coordinate
1068  hist->y=d.y; //straw y coordinate
1069  hist->z=d.z; //straw z coordinate
1070 
1071  hist->oldt02=d.t0; //straw old t0 value
1072  hist->oldrtpar[0]=d.rtpar[0];
1073  hist->oldrtpar[1]=d.rtpar[1];
1074  hist->oldrtpar[2]=d.rtpar[2];
1075  hist->oldrtpar[3]=d.rtpar[3];
1076 
1077  hist->sumx=0;
1078  hist->sumy=0;
1079  hist->sumz=0;
1080 
1081  hist->rtflag=false;
1082  hist->t0flag=false;
1083  hist->calflag=false;
1084 
1085 
1086 
1087  for (unsigned int i =0; i < 4; i++){
1088  hist->rtpar[i]=-10.0;
1089  }
1090 
1091  data[key]=*hist; //save the histogram in the map
1092 
1093 
1094 
1095  data[key].oldt02 = AccumulativeMean(data[key].nhits, data[key].oldt02, d.t0); //update old t0 m_mean value
1096 
1097  data[key].nhits++; // increment m_nhits
1098 
1099  if(level<2) std::cout << " First hit for det " << data[key].det << " lay " << data[key].lay << " t0 " << data[key].t0 << " upd t0 " << data[key].oldt02 << " nhits: " << data[key].nhits << std::endl;
1100 
1101  delete hist;
1102 
1103  return 1;
1104 }
1105  else { //if not the first hit or histogram
1106 
1107  //increment histogram bins
1108  if (binhist==nullptr){
1109 
1110  if (tresbin>=0){
1111  if (makehist) data[key].m_treshist[tresbin]=data[key].m_treshist[tresbin]+d.weight;
1112  data[key].ntres++;
1113  m_nhits=1;
1114  }
1115  if (resbin>=0){
1116  if (makehist) data[key].reshist[resbin]++;
1117  data[key].nres++;
1118  }
1119  if (rtbin>=0){
1120  if (makehist) data[key].rthist[rtbin]++;
1121  data[key].nrt++;
1122  }
1123 
1124  data[key].sumt0+=d.t0;
1125 
1126  }
1127 
1128  else {
1129 
1130  npop=binhist[0];
1131 
1132  for(int ipop=2;ipop<2*npop+2;ipop=ipop+2) {
1133 
1134  ibin=binhist[ipop];
1135  value=binhist[ipop+1];
1136 
1137  if (ibin<100) {
1138  m_ntreshits+=value;
1139  m_nhits+=value;
1140  data[key].ntres+=value;
1141  if (makehist) data[key].m_treshist[ibin]+=(float)value;
1142  data[key].sumt0+=d.t0*value;
1143  }
1144  else if (ibin>=100 && ibin<200) {
1145  m_nreshits+=value;
1146  data[key].nres+=value;
1147  if (makehist) data[key].reshist[ibin-100]+=(float)value;
1148  }
1149  else {
1150  m_nrthits+=value;
1151  data[key].nrt+=value;
1152  if (makehist) data[key].rthist[ibin-200]+=(float)value;
1153  }
1154 
1155  }
1156 
1157  }
1158 
1159 
1160  data[key].sumx+=d.x;
1161  data[key].sumy+=d.y;
1162  data[key].sumz+=d.z;
1163  data[key].oldt02 = AccumulativeMean(data[key].nhits, data[key].oldt02, d.t0);
1164  data[key].oldrtpar[0] = AccumulativeMean(data[key].nhits, data[key].oldrtpar[0], d.rtpar[0]);
1165  data[key].oldrtpar[1] = AccumulativeMean(data[key].nhits, data[key].oldrtpar[1], d.rtpar[1]);
1166  data[key].oldrtpar[2] = AccumulativeMean(data[key].nhits, data[key].oldrtpar[2], d.rtpar[2]);
1167  data[key].oldrtpar[3] = AccumulativeMean(data[key].nhits, data[key].oldrtpar[3], d.rtpar[3]);
1168  data[key].x = AccumulativeMean(data[key].nhits, data[key].x, d.x);
1169  data[key].y = AccumulativeMean(data[key].nhits, data[key].y, d.y);
1170  data[key].z = AccumulativeMean(data[key].nhits, data[key].z, d.z);
1171 
1172  data[key].nhits++; //increment hit counts
1173 
1174  return 0;
1175  }
1176 
1177 
1178 }

◆ ATLAS_NOT_THREAD_SAFE() [1/4]

float FitRt Calibrator::ATLAS_NOT_THREAD_SAFE ( const std::string &  ,
const std::string &  ,
TH2F ,
TDirectory *   
)

Makes the R-t fit.

Parameters
[in]keythe identifier of the sub-module to calibrate
[in]rtHistthe 2D root histogram with the R-t data
Returns
the t0 from the R-t fit

◆ ATLAS_NOT_THREAD_SAFE() [2/4]

float FitTimeResidual Calibrator::ATLAS_NOT_THREAD_SAFE ( const std::string &  ,
TH1F  
)

Makes the time residual fit.

Parameters
[in]keythe identifier of the sub-module to calibrate
[in]tresHistthe 1D root histogram with the time residuals
Returns
the mean value of the time residual fit

◆ ATLAS_NOT_THREAD_SAFE() [3/4]

float FitResidual Calibrator::ATLAS_NOT_THREAD_SAFE ( const std::string &  ,
TH1F  
)

Makes the residual fit.

Parameters
[in]keythe identifier of the sub-module to calibrate
[in]resHistthe 1D root histogram with the residuals
Returns
the mean value of the residual fit

◆ ATLAS_NOT_THREAD_SAFE() [4/4]

TDirectory* Calibrate Calibrator::ATLAS_NOT_THREAD_SAFE ( TDirectory *  ,
std::string  ,
const std::string &  ,
caldata  
)

Creates root histograms, performs the t0 and R-t calibration for a given sub-module and writes the resulting histograms to a root directory tree (if not told otherwise).

The new t0 values are calculated here.

Parameters
[in]dirthe root directory of the sub level above
[in]keythe identifier of the sub-module to calibrate
[in]caldata_abovethe caldata object from the sub-module above the one to be calibrated
Returns
the root directory where the histgrams were written

◆ CheckSelection()

bool Calibrator::CheckSelection ( int  level)

Checks if a given sub-module is selected for calibration.

Parameters
[in]levelthe number of the sub-module to check
Returns
returns true if the module is found

Definition at line 457 of file Calibrator.cxx.

457  {
458  if (selection.find(level)!=selection.end() || selection.find(-3)!=selection.end()) return true;
459  else return false;
460 }

◆ DumpConstants()

void Calibrator::DumpConstants ( )

Definition at line 1225 of file Calibrator.cxx.

1225  {
1226 
1227  std::ofstream dumpfile( "calib_constants_out.txt", std::ios::out | std::ios::app);
1228 
1229  for (const std::pair<const std::string, caldata>& p : data) {
1230  dumpfile << p.first << " " << p.second.t0 << " " << std::endl;
1231 
1232  }
1233 
1234  dumpfile.close();
1235 
1236 }

◆ GetBinnedRt()

std::string Calibrator::GetBinnedRt ( const std::string &  key)

Definition at line 514 of file Calibrator.cxx.

514  {
515 
516  int nbins=data[key].rtgraph->tval.size();
517  double maxt=data[key].rtgraph->tval[nbins-1];
518  double mint=data[key].rtgraph->tval[0];
519 
520  std::string brt = "";
521  brt += Form("%f %f %i ",mint,maxt,nbins);
522 
523  for (int ip=0; ip<nbins;ip++){
524  brt += Form("%f ",data[key].rtgraph->rval[ip]);
525  }
526  return brt;
527 }

◆ GetNDirs()

int Calibrator::GetNDirs ( )

...

Definition at line 502 of file Calibrator.cxx.

502  {
503  return data.size();
504 }

◆ GetOptString()

std::string Calibrator::GetOptString ( ) const

Creates a string summarizing what is being done at this sub-level.

Returns
the string

Definition at line 485 of file Calibrator.cxx.

485  {
486  std::string optstr="";
487  if (dort) optstr += 'R';
488  if (dot0) optstr += 'T';
489  if (printlog) optstr +='P';
490  if (printt0) optstr += 'F';
491  if (printrt) optstr += 'G';
492  if (bequiet) optstr += 'Q';
493  if (usebref) optstr += 'B';
494  if (useshortstraws) optstr += 'S';
495  if (usep0 && dort) optstr += '0';
496  if (floatp3 && dort) optstr += '3';
497  if (!(dort || dot0 || usebref || bequiet || printlog || printt0 || printrt)) optstr += 'N';
498 
499  return optstr;
500 }

◆ GetSelString()

std::string Calibrator::GetSelString ( )

Creates a string summarizing which modules are being calibrated at this sub-level.

Returns
the string

Definition at line 506 of file Calibrator.cxx.

506  {
507  std::string selstr="";
508  if (selection.find(-3)!=selection.end()) selstr="*";
509  else if (selection.find(-4)!=selection.end()) selstr="-";
510  else for (int isel : selection) selstr += std::string(Form("%i",isel));
511  return selstr;
512 }

◆ HasKey()

bool Calibrator::HasKey ( const std::string &  key) const

...

Definition at line 452 of file Calibrator.cxx.

452  {
453 
454  return data.find(key) != data.end();
455 }

◆ oldt0()

float Calibrator::oldt0 ( const std::string &  key)
inline

Definition at line 333 of file Calibrator.h.

333 {return data[key].sumt0/float(data[key].ntres);}

◆ operator=()

Calibrator& Calibrator::operator= ( const Calibrator )
delete

◆ PrintInfo()

std::string Calibrator::PrintInfo ( )

Definition at line 467 of file Calibrator.cxx.

467  {
468  std::string yn[2]={"NO","YES"};
469  std::string info = std::string(Form("CONFIGURATION %-16s: dort=%-3s, dot0=%-3s, dores=%-3s, selection=",m_name.data(),yn[dort].data(),yn[dot0].data(),yn[dores].data()));
470  for (int isel : selection) {
471  if (isel==-3) info += std::string("all");
472  else if (isel==-4) info += std::string("none");
473  else info += std::string(Form("%2i,",isel));
474  }
475  return info;
476 }

◆ PrintStat()

std::string Calibrator::PrintStat ( )

Prints some sub-level statistics.

Definition at line 478 of file Calibrator.cxx.

478  {
479  int units = (int)data.size();
480  if(units==0) units++;
481  std::string info = std::string(Form("STATISTICS %16s: nunits=%8i, nhits=%9i, hits/unit=%11.1f", m_name.data(), units, m_nhits, (float)m_nhits/(float)units ));
482  return info;
483 }

◆ Simple1dHist()

int Calibrator::Simple1dHist ( float  min,
float  max,
int  nbins,
float  value 
)

A 1D histograming function.

Parameters
[in]minhistogram lower limit
[in]maxhistogram upper limit
[in]nbinsnymber of bins
[in]valuethe value
Returns
the histogram bin

Definition at line 432 of file Calibrator.cxx.

432  {
433  if ( (value<min) || (value>max) ) return -1;
434  if ( max-min == 0 ) return -1;
435  int binno=(int)(nbins*((value-min)/(max-min)));
436  return binno;
437 }

◆ Simple2dHist()

int Calibrator::Simple2dHist ( float  minx,
float  maxx,
int  nbinsx,
float  miny,
float  maxy,
int  nbinsy,
float  valuex,
float  valuey 
)

A 2D histograming function.

Parameters
[in]minxhistogram lower x-limit
[in]maxxhistogram upper x-limit
[in]nbinsxnymber of x bins
[in]valuexthe x value
[in]minyhistogram lower y-limit
[in]maxyhistogram upper y-limit
[in]nbinsynymber of y bins
[in]valueythe y value
Returns
the histogram bin in the form (biny*nbinsx+binx)

Definition at line 439 of file Calibrator.cxx.

439  {
440  if ( (valuex<minx) || (valuex>maxx) || (valuey<miny) || (valuey>maxy) ) return -1;
441  if(maxx-minx == 0 || maxy-miny==0) return -1;
442  int binnox=(int)(nbinsx*((valuex-minx)/(maxx-minx)));
443  int binnoy=(int)(nbinsy*((valuey-miny)/(maxy-miny)));
444  return binnoy*nbinsx+binnox;
445 }

◆ Skip()

bool Calibrator::Skip ( )

...

Definition at line 462 of file Calibrator.cxx.

462  {
463  if (selection.find(-4)!=selection.end()) return true;
464  else return false;
465 }

◆ UpdateOldConstants()

int Calibrator::UpdateOldConstants ( )

...

Definition at line 529 of file Calibrator.cxx.

529  {
530 
531  std::string line;
532  std::ifstream oldconstfile("calib_constants_in.txt");
533  std::string key;
534  float t0;
535 
536  if (oldconstfile.is_open())
537  {
538  while (!oldconstfile.eof() )
539  {
540  oldconstfile >> key >> t0;
541  if (data.find(key) != data.end()){
542  std::cout << "UPDATED OLD T0: " << key << " " << data[key].oldt02 << " -> " << t0 << std::endl;
543  data[key].oldt02=t0;
544  }
545  }
546  oldconstfile.close();
547  return 0;
548  }
549  else {
550  std::cout << "NO OLD T0S FILE FOUND. USING AVERAGE VALUES!" << std::endl;
551  return -1;
552  }
553 }

◆ WriteStat()

void Calibrator::WriteStat ( TDirectory *  dir)

Creates an ntuple with entries containing data associated with the sub-modules in a sub level.

Parameters
[in]dirthe root directory where to write the ntuple

Definition at line 1180 of file Calibrator.cxx.

1180  {
1181  dir->cd();
1182  TNtuple* stattup = new TNtuple(Form("%stuple",m_name.data()),"statistics","det:lay:mod:brd:chp:sid:stl:stw:rtflag:t0flag:t0:oldt0:rt0:dt0:t0offset:ftype:nhits:nt0:nrt:res:resMean:dres:tres:tresMean:x:y:z");
1183  for(std::map<std::string,caldata>::iterator ihist=data.begin(); ihist!=data.end(); ++ihist){
1184  if ((ihist->second).calflag) {
1185  //std::cout << " Writing TNtuple for name: " << m_name << " det: " << (ihist->second).det << " lay " << (ihist->second).lay << " mod: " << (ihist->second).mod << " brd " << (ihist->second).brd << " res width " << (ihist->second).res << " tres mean " << (ihist->second).tresMean << std::endl;
1186  float const ntvar[27]={
1187  float((ihist->second).det),
1188  float((ihist->second).lay),
1189  float((ihist->second).mod),
1190  float((ihist->second).brd),
1191  float((ihist->second).chp),
1192  float((ihist->second).sid),
1193  float((ihist->second).stl),
1194  float((ihist->second).stw),
1195  float((int)(ihist->second).rtflag),
1196  float((int)(ihist->second).t0flag),
1197  (ihist->second).t0,
1198  float((ihist->second).oldt02),
1199  //oldt0(ihist->first),
1200  (ihist->second).reft0,
1201  (ihist->second).t0err,
1202  (ihist->second).t0off,
1203  float((ihist->second).t0fittype),
1204  (ihist->second).nhits,
1205  (float)(ihist->second).ntres,
1206  (float)(ihist->second).nrt,
1207  (float)(ihist->second).res,
1208  (float)(ihist->second).resMean,
1209  (ihist->second).reserr,
1210  (ihist->second).tres,
1211  (ihist->second).tresMean,
1212  (ihist->second).x,
1213  (ihist->second).y,
1214  (ihist->second).z
1215  };
1216  stattup->Fill(ntvar);
1217  }
1218 
1219  }
1220 
1221  stattup->Write();
1222 
1223 }

◆ xmean()

float Calibrator::xmean ( const std::string &  key)
inline

Definition at line 334 of file Calibrator.h.

334 {return data[key].sumx/float(data.size());}

◆ ymean()

float Calibrator::ymean ( const std::string &  key)
inline

Definition at line 335 of file Calibrator.h.

335 {return data[key].sumy/float(data.size());}

◆ zmean()

float Calibrator::zmean ( const std::string &  key)
inline

Definition at line 336 of file Calibrator.h.

336 {return data[key].sumz/float(data.size());}

Member Data Documentation

◆ bequiet

bool Calibrator::bequiet

if true no histograms are written to the root file

Definition at line 347 of file Calibrator.h.

◆ data

std::map<std::string,caldata> Calibrator::data

A map between the sub-module identifier string and the calibration data structure (caldata)

Definition at line 339 of file Calibrator.h.

◆ dores

bool Calibrator::dores

if true a residual fit is made

Definition at line 343 of file Calibrator.h.

◆ dort

bool Calibrator::dort

if true an rt fit is made, if false the value from the level above is used

Definition at line 341 of file Calibrator.h.

◆ dot0

bool Calibrator::dot0

if true a time residual fit is made, if false the value from the level above is used

Definition at line 342 of file Calibrator.h.

◆ floatp3

bool Calibrator::floatp3

if true the 3rd order coeficcient of the rt fit function is not fixed to 0

Definition at line 352 of file Calibrator.h.

◆ level

int Calibrator::level

the sub-level of the Calibrator instance

Definition at line 355 of file Calibrator.h.

◆ m_hdirs

std::map<std::string,TDirectory*> Calibrator::m_hdirs
private

...

Definition at line 376 of file Calibrator.h.

◆ m_isdines

bool Calibrator::m_isdines
private

true if the rt relation is Dines'

Definition at line 388 of file Calibrator.h.

◆ m_maxr

float Calibrator::m_maxr
private

upper limit of r in 2D rt histogram

Definition at line 369 of file Calibrator.h.

◆ m_maxres

float Calibrator::m_maxres
private

upper limit of 1D residual histogram

Definition at line 375 of file Calibrator.h.

◆ m_maxt

float Calibrator::m_maxt
private

upper limit of t in 2D rt histogram

Definition at line 371 of file Calibrator.h.

◆ m_maxtres

float Calibrator::m_maxtres
private

upper limit of 1D time residual histogram

Definition at line 373 of file Calibrator.h.

◆ m_minr

float Calibrator::m_minr
private

lower limit of r in 2D rt histogram

Definition at line 368 of file Calibrator.h.

◆ m_minres

float Calibrator::m_minres
private

lower limit of 1D residual histogram

Definition at line 374 of file Calibrator.h.

◆ m_minrtstat

int Calibrator::m_minrtstat
private

minimum number of hits in a sub-module required to do an R-t calibration

Definition at line 361 of file Calibrator.h.

◆ m_mint

float Calibrator::m_mint
private

lower limit of t in 2D rt histogram

Definition at line 370 of file Calibrator.h.

◆ m_mint0stat

int Calibrator::m_mint0stat
private

minimum number of hits in a sub-module required to do a t0 calibration

Definition at line 362 of file Calibrator.h.

◆ m_mintres

float Calibrator::m_mintres
private

lower limit of 1D time residual histogram

Definition at line 372 of file Calibrator.h.

◆ m_name

std::string Calibrator::m_name
private

The name of the Calibrator instance.

Definition at line 359 of file Calibrator.h.

◆ m_nbinsr

int Calibrator::m_nbinsr
private

number of r-bins in the 2D rt histogram

Definition at line 364 of file Calibrator.h.

◆ m_nbinsres

int Calibrator::m_nbinsres
private

number of bins in the 1D residual histogram

Definition at line 367 of file Calibrator.h.

◆ m_nbinst

int Calibrator::m_nbinst
private

number of t-bins in the 2D rt histogram

Definition at line 365 of file Calibrator.h.

◆ m_nbinstres

int Calibrator::m_nbinstres
private

number of bins in the 1D time residual histogram

Definition at line 366 of file Calibrator.h.

◆ m_nhits

int Calibrator::m_nhits
private

...

Definition at line 384 of file Calibrator.h.

◆ m_nreshits

int Calibrator::m_nreshits
private

...

Definition at line 382 of file Calibrator.h.

◆ m_nrthits

int Calibrator::m_nrthits
private

...

Definition at line 383 of file Calibrator.h.

◆ m_ntreshits

int Calibrator::m_ntreshits
private

...

Definition at line 381 of file Calibrator.h.

◆ m_resHists

std::map<std::string,TH1F*> Calibrator::m_resHists
private

...

Definition at line 377 of file Calibrator.h.

◆ m_rtbinning

std::string Calibrator::m_rtbinning
private

The direction to do the R-t binning.

Definition at line 360 of file Calibrator.h.

◆ m_rtHists

std::map<std::string,TH2F*> Calibrator::m_rtHists
private

...

Definition at line 379 of file Calibrator.h.

◆ m_t0shift

float Calibrator::m_t0shift
private

the t0 shift

Definition at line 363 of file Calibrator.h.

◆ m_tresHists

std::map<std::string,TH1F*> Calibrator::m_tresHists
private

...

Definition at line 378 of file Calibrator.h.

◆ nort

bool Calibrator::nort

if true the old rt parameters are copied to the new ones

Definition at line 344 of file Calibrator.h.

◆ not0

bool Calibrator::not0

if true the old t0 valus is copied to the new one

Definition at line 345 of file Calibrator.h.

◆ printlog

bool Calibrator::printlog

if true a log entry is prined for each sub-modile in this sub-level

Definition at line 348 of file Calibrator.h.

◆ printrt

bool Calibrator::printrt

if true an rt entry in the calibration output file is prined for each sub-module in this sub-level

Definition at line 350 of file Calibrator.h.

◆ printt0

bool Calibrator::printt0

if true a t0 entry in the calibration output file is prined for each sub-module in this sub-level

Definition at line 349 of file Calibrator.h.

◆ selection

std::set<int> Calibrator::selection

a set containing the sub-modules to be calibrated

Definition at line 354 of file Calibrator.h.

◆ usebref

bool Calibrator::usebref

if true chip reference t0 values (offset from board mean) are used

Definition at line 346 of file Calibrator.h.

◆ usep0

bool Calibrator::usep0

if true the 0th order coeficcient of the rt fit function is not set to 0 in the calibration output file

Definition at line 351 of file Calibrator.h.

◆ useshortstraws

bool Calibrator::useshortstraws

if true a shift of -0.75 ns is applied for straws in layer ==0, strawlayer < 9, and when doing calibration in a granuralyty different from chip or straw

Definition at line 353 of file Calibrator.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Calibrator::m_name
std::string m_name
The name of the Calibrator instance.
Definition: Calibrator.h:359
Calibrator::printt0
bool printt0
if true a t0 entry in the calibration output file is prined for each sub-module in this sub-level
Definition: Calibrator.h:349
Calibrator::dort
bool dort
if true an rt fit is made, if false the value from the level above is used
Definition: Calibrator.h:341
Calibrator::m_maxres
float m_maxres
upper limit of 1D residual histogram
Definition: Calibrator.h:375
Calibrator::m_nhits
int m_nhits
...
Definition: Calibrator.h:384
checkFileSG.line
line
Definition: checkFileSG.py:75
Calibrator::nort
bool nort
if true the old rt parameters are copied to the new ones
Definition: Calibrator.h:344
Calibrator::m_nbinsr
int m_nbinsr
number of r-bins in the 2D rt histogram
Definition: Calibrator.h:364
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
Calibrator::printlog
bool printlog
if true a log entry is prined for each sub-modile in this sub-level
Definition: Calibrator.h:348
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
Calibrator::m_maxtres
float m_maxtres
upper limit of 1D time residual histogram
Definition: Calibrator.h:373
Calibrator::m_mintres
float m_mintres
lower limit of 1D time residual histogram
Definition: Calibrator.h:372
hist_file_dump.d
d
Definition: hist_file_dump.py:137
plotmaker.hist
hist
Definition: plotmaker.py:148
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
Calibrator::m_t0shift
float m_t0shift
the t0 shift
Definition: Calibrator.h:363
Calibrator::m_maxt
float m_maxt
upper limit of t in 2D rt histogram
Definition: Calibrator.h:371
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
caldata
A structure to contain data associated with the calibration of a certain sub-module.
Definition: Calibrator.h:104
Calibrator::printrt
bool printrt
if true an rt entry in the calibration output file is prined for each sub-module in this sub-level
Definition: Calibrator.h:350
Calibrator::m_ntreshits
int m_ntreshits
...
Definition: Calibrator.h:381
athena.value
value
Definition: athena.py:122
Calibrator::dot0
bool dot0
if true a time residual fit is made, if false the value from the level above is used
Definition: Calibrator.h:342
x
#define x
Calibrator::m_nrthits
int m_nrthits
...
Definition: Calibrator.h:383
Calibrator::m_nbinst
int m_nbinst
number of t-bins in the 2D rt histogram
Definition: Calibrator.h:365
Calibrator::usebref
bool usebref
if true chip reference t0 values (offset from board mean) are used
Definition: Calibrator.h:346
Calibrator::floatp3
bool floatp3
if true the 3rd order coeficcient of the rt fit function is not fixed to 0
Definition: Calibrator.h:352
SCT_CalibAlgs::nbins
@ nbins
Definition: SCT_CalibNumbers.h:10
Calibrator::dores
bool dores
if true a residual fit is made
Definition: Calibrator.h:343
Calibrator::usep0
bool usep0
if true the 0th order coeficcient of the rt fit function is not set to 0 in the calibration output fi...
Definition: Calibrator.h:351
Calibrator::m_rtbinning
std::string m_rtbinning
The direction to do the R-t binning.
Definition: Calibrator.h:360
Calibrator::m_minr
float m_minr
lower limit of r in 2D rt histogram
Definition: Calibrator.h:368
lumiFormat.i
int i
Definition: lumiFormat.py:92
z
#define z
beamspotman.n
n
Definition: beamspotman.py:731
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
Calibrator::m_mint
float m_mint
lower limit of t in 2D rt histogram
Definition: Calibrator.h:370
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
Calibrator::Simple2dHist
int Simple2dHist(float, float, int, float, float, int, float, float)
A 2D histograming function.
Definition: Calibrator.cxx:439
Calibrator::selection
std::set< int > selection
a set containing the sub-modules to be calibrated
Definition: Calibrator.h:354
beamspotman.dir
string dir
Definition: beamspotman.py:623
min
#define min(a, b)
Definition: cfImp.cxx:40
Calibrator::Simple1dHist
int Simple1dHist(float, float, int, float)
A 1D histograming function.
Definition: Calibrator.cxx:432
Calibrator::m_mint0stat
int m_mint0stat
minimum number of hits in a sub-module required to do a t0 calibration
Definition: Calibrator.h:362
Calibrator::useshortstraws
bool useshortstraws
if true a shift of -0.75 ns is applied for straws in layer ==0, strawlayer < 9, and when doing calibr...
Definition: Calibrator.h:353
Calibrator::m_maxr
float m_maxr
upper limit of r in 2D rt histogram
Definition: Calibrator.h:369
Calibrator::not0
bool not0
if true the old t0 valus is copied to the new one
Definition: Calibrator.h:345
perfmonmt-refit.units
string units
Definition: perfmonmt-refit.py:77
Calibrator::AccumulativeMean
float AccumulativeMean(float, float, float)
Increments a single bin in all three histograms in a sub-module.
Definition: Calibrator.cxx:447
y
#define y
Calibrator::m_minres
float m_minres
lower limit of 1D residual histogram
Definition: Calibrator.h:374
Calibrator::m_nbinsres
int m_nbinsres
number of bins in the 1D residual histogram
Definition: Calibrator.h:367
Calibrator::m_isdines
bool m_isdines
true if the rt relation is Dines'
Definition: Calibrator.h:388
Calibrator::bequiet
bool bequiet
if true no histograms are written to the root file
Definition: Calibrator.h:347
Calibrator::m_nbinstres
int m_nbinstres
number of bins in the 1D time residual histogram
Definition: Calibrator.h:366
dumpfile
std::ofstream dumpfile("dumpfile.log")
Calibrator::level
int level
the sub-level of the Calibrator instance
Definition: Calibrator.h:355
Calibrator::m_minrtstat
int m_minrtstat
minimum number of hits in a sub-module required to do an R-t calibration
Definition: Calibrator.h:361
Calibrator::m_nreshits
int m_nreshits
...
Definition: Calibrator.h:382
readCCLHist.float
float
Definition: readCCLHist.py:83
Calibrator::data
std::map< std::string, caldata > data
A map between the sub-module identifier string and the calibration data structure (caldata)
Definition: Calibrator.h:339
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37