#include <calib_barrel_sigma.h>
Inheritance diagram for calib_barrel_sigma:
Public Member Functions | |
calib_barrel_sigma (const unsigned int nzbin) | |
~calib_barrel_sigma () | |
void | calculate (RecordSet *&data, unsigned int icounter) |
const string & | name () const |
void | fillTxt (const char *file) |
void | fillRoot (const char *file) |
HepVector | tcorrelation () |
void | setTCorrelation (HepVector tc) |
Protected Attributes | |
int | m_npar |
unsigned int | nKind |
unsigned int | nBinPerCounter |
unsigned int | nHistPerCounter |
unsigned int | nCanvasPerCounter |
std::vector< unsigned int > | nGraphPerCanvasPerCounter |
unsigned int | nHistogram |
unsigned int | nCanvas |
std::vector< unsigned int > | nGraphPerCanvas |
string | m_name |
HepVector | X |
std::vector< TH1F * > | m_histograms |
std::vector< TH1F * > | m_graphs |
std::vector< HepVector > | m_result |
std::vector< string > | CanvasPerCounterName |
std::vector< string > | CanvasName |
HepVector | m_tcorrelation |
Private Member Functions | |
void | fillRecord (const Record *r, unsigned int icounter) |
void | fitHistogram (unsigned int icounter) |
void | fillGraph (unsigned int icounter) |
void | fitGraph (unsigned int icounter) |
void | updateData (Record *r, unsigned int icounter) |
void | fillRecordT0 (const Record *r, unsigned int icounter) |
void | fitHistogramT0 (unsigned int icounter) |
void | fillGraphT0 (unsigned int icounter) |
void | fitGraphT0 (unsigned int icounter) |
Private Attributes | |
std::vector< double > | zpos |
std::vector< double > | zposerr |
double | zstep |
std::vector< HepVector > | m_fitresult |
Definition at line 10 of file calib_barrel_sigma.h.
calib_barrel_sigma::calib_barrel_sigma | ( | const unsigned int | nzbin | ) |
Definition at line 22 of file calib_barrel_sigma.cxx.
References TofCalibFit::CanvasPerCounterName, genRecEmupikp::i, iter(), ganga-rec::j, m_fitresult, TofCalibFit::m_histograms, TofCalibFit::m_name, TofCalibFit::m_result, NBarrel, nBarrelSigma, TofCalibFit::nBinPerCounter, TofCalibFit::nCanvas, TofCalibFit::nCanvasPerCounter, TofCalibFit::nGraphPerCanvasPerCounter, nGraphTotalSigma, TofCalibFit::nHistogram, TofCalibFit::nHistPerCounter, TofCalibFit::nKind, nParSigma, deljobs::string, zbegin, zend, zpos, zposerr, and zstep.
00022 :TofCalibFit( true, nBarrelSigma ) { 00023 00024 nKind = 5; // 0:tleft, 1:tright, 2:t0, 3:tplus, 4:tminus 00025 nBinPerCounter = nzbin; 00026 00027 nHistPerCounter = nKind*nBinPerCounter; 00028 nCanvasPerCounter = 4; 00029 CanvasPerCounterName.push_back( static_cast<string>("Barrel-offset") ); 00030 CanvasPerCounterName.push_back( static_cast<string>("Offset-TimeCorrelation") ); 00031 CanvasPerCounterName.push_back( static_cast<string>("Barrel-sigma") ); 00032 CanvasPerCounterName.push_back( static_cast<string>("Sigma-TimeCorrelation") ); 00033 nGraphPerCanvasPerCounter.push_back(3); 00034 nGraphPerCanvasPerCounter.push_back(2); 00035 nGraphPerCanvasPerCounter.push_back(3); 00036 nGraphPerCanvasPerCounter.push_back(3); 00037 00038 nHistogram = 0; 00039 nCanvas = 0; 00040 00041 int numGraphs = 0; 00042 std::vector<unsigned int>::iterator iter = nGraphPerCanvasPerCounter.begin(); 00043 for( ; iter!=nGraphPerCanvasPerCounter.end(); iter++ ) { 00044 numGraphs = numGraphs + (*iter); 00045 } 00046 if( numGraphs != nGraphTotalSigma ) { 00047 cout << "tofcalgsec::calib_barrel_sigma: the number of Graphs is NOT reasonable!!!" << endl; 00048 exit(0); 00049 } 00050 00051 m_name = string("calib_barrel_sigma"); 00052 00053 const int tbin = 150; 00054 const double tbegin = -1.5; 00055 const double tend = 1.5; 00056 00057 // histograms per counter 00058 char hname[256]; 00059 for( unsigned int i=0; i<NBarrel; i++ ) { 00060 m_result.push_back( HepVector(nBarrelSigma,0) ); 00061 for( unsigned int j=0; j<nKind; j++ ) { 00062 for( unsigned int k=0; k<nBinPerCounter; k++ ) { 00063 if( j==0 ) { sprintf( hname, "tleft-id%i-z%i", i, k); } 00064 else if( j==1 ) { sprintf( hname, "tright-id%i-z%i", i, k); } 00065 else if( j==2 ) { sprintf( hname, "t0-id%i-z%i", i, k); } 00066 else if( j==3 ) { sprintf( hname, "tplus-id%i-z%i", i, k); } 00067 else if( j==4 ) { sprintf( hname, "tminus-id%i-z%i", i, k); } 00068 m_histograms.push_back( new TH1F( hname, hname, tbin, tbegin, tend ) ); 00069 00070 m_fitresult.push_back( HepVector(nParSigma,0) ); 00071 } 00072 } 00073 } 00074 00075 zpos.resize( nBinPerCounter ); 00076 zposerr.resize( nBinPerCounter ); 00077 zstep = ( zend - zbegin )/nBinPerCounter; 00078 for( unsigned int i=0; i<nBinPerCounter; i++ ) { 00079 zpos[i] = zbegin + ( i+0.5 )*zstep; 00080 zposerr[i] = 0.5*zstep; 00081 } 00082 00083 }
calib_barrel_sigma::~calib_barrel_sigma | ( | ) |
Definition at line 86 of file calib_barrel_sigma.cxx.
References m_fitresult, zpos, and zposerr.
00086 { 00087 m_fitresult.clear(); 00088 zpos.clear(); 00089 zposerr.clear(); 00090 }
void calib_barrel_sigma::calculate | ( | RecordSet *& | data, | |
unsigned int | icounter | |||
) | [virtual] |
Implements TofCalibFit.
Definition at line 93 of file calib_barrel_sigma.cxx.
References fillGraph(), fillGraphT0(), fillRecord(), fillRecordT0(), fitGraph(), fitGraphT0(), fitHistogram(), fitHistogramT0(), iter(), TofCalibFit::name(), and updateData().
00093 { 00094 00095 std::cout << setiosflags(ios::left) << setw(10) << icounter << setw(8) << data->size() << setw(30) << name() << std::endl; 00096 00097 if( data->size() > 0 ) { 00098 std::vector<Record*>::iterator iter = data->begin(); 00099 for( ; iter!=data->end(); iter++ ) { 00100 fillRecord( (*iter), icounter ); 00101 } 00102 } 00103 fitHistogram( icounter ); 00104 fillGraph( icounter ); 00105 fitGraph( icounter ); 00106 00107 if( data->size() > 0 ) { 00108 std::vector<Record*>::iterator iter = data->begin(); 00109 for( ; iter!=data->end(); iter++ ) { 00110 updateData( (*iter), icounter ); 00111 fillRecordT0( (*iter), icounter ); 00112 } 00113 } 00114 fitHistogramT0( icounter ); 00115 fillGraphT0( icounter ); 00116 fitGraphT0( icounter ); 00117 00118 return; 00119 }
void calib_barrel_sigma::fillGraph | ( | unsigned int | icounter | ) | [private] |
Definition at line 170 of file calib_barrel_sigma.cxx.
References iter(), ganga-rec::j, m_fitresult, TofCalibFit::m_graphs, TofCalibFit::nBinPerCounter, TofCalibFit::nKind, zbegin, and zend.
Referenced by calculate().
00170 { 00171 00172 char gname1[256], gname2[256]; 00173 00174 // fill graphs 00175 // 4 canvas per counter, 00176 // 1. offset of tleft, tright and t0 vs z 00177 // 2. sigma of tleft, tright and t0 vs z 00178 // 3. offset of tplus and tminus vs z 00179 // 4. sigma of tplus, tminus and T_Correlation vs z 00180 std::vector<double> toffset, toffseterr; 00181 std::vector<double> tsigma, tsigmaerr; 00182 toffset.resize( nBinPerCounter ); 00183 toffseterr.resize( nBinPerCounter ); 00184 tsigma.resize( nBinPerCounter ); 00185 tsigmaerr.resize( nBinPerCounter ); 00186 00187 unsigned int number = 0; 00188 std::vector<HepVector>::iterator iter = m_fitresult.begin() + icounter*nKind*nBinPerCounter; 00189 for( unsigned int j=0; j<nKind; j++ ) { 00190 if( j==0 ) { sprintf( gname1, "tleft-offset-tofid-%i", icounter ); } 00191 else if( j==1 ) { sprintf( gname1, "tright-offset-tofid-%i", icounter ); } 00192 else if( j==2 ) { sprintf( gname1, "t0-offset-tofid-%i", icounter ); } 00193 else if( j==3 ) { sprintf( gname1, "tplus-offset-tofid-%i", icounter ); } 00194 else if( j==4 ) { sprintf( gname1, "tminus-offset-tofid-%i", icounter ); } 00195 00196 m_graphs.push_back( new TH1F( gname1, gname1, nBinPerCounter, zbegin, zend ) ); 00197 std::vector<TH1F*>::iterator itgraph = m_graphs.end() - 1; 00198 00199 for( unsigned int k=0; k<nBinPerCounter; k++ ) { 00200 number = j*nBinPerCounter + k; 00201 toffset[k] = (*(iter+number))[0]; 00202 toffseterr[k] = (*(iter+number))[1]; 00203 (*itgraph)->SetBinContent( k+1, toffset[k] ); 00204 (*itgraph)->SetBinError( k+1, toffseterr[k] ); 00205 } 00206 (*itgraph)->SetMarkerSize(1.5); 00207 if( j==0 || j==3) { 00208 (*itgraph)->SetMarkerStyle(20); 00209 (*itgraph)->SetMarkerColor(2); 00210 (*itgraph)->SetMaximum( 0.15 ); 00211 (*itgraph)->SetMinimum(-0.15 ); 00212 } 00213 else if( j==1 || j==4 ) { 00214 (*itgraph)->SetMarkerStyle(21); 00215 (*itgraph)->SetMarkerColor(4); 00216 } 00217 else if( j==2 ) { 00218 (*itgraph)->SetMarkerStyle(4); 00219 (*itgraph)->SetMarkerColor(2); 00220 } 00221 } 00222 00223 for( unsigned int j=0; j<nKind; j++ ) { 00224 if( j==0 ) { sprintf( gname2, "tleft-sigma-tofid-%i", icounter ); } 00225 else if( j==1 ) { sprintf( gname2, "tright-sigma-tofid-%i", icounter ); } 00226 else if( j==2 ) { sprintf( gname2, "t0-sigma-tofid-%i", icounter ); } 00227 else if( j==3 ) { sprintf( gname2, "tplus-sigma-tofid-%i", icounter ); } 00228 else if( j==4 ) { sprintf( gname2, "tminus-sigma-tofid-%i", icounter ); } 00229 m_graphs.push_back( new TH1F( gname2, gname2, nBinPerCounter, zbegin, zend ) ); 00230 std::vector<TH1F*>::iterator itgraph = m_graphs.end() - 1; 00231 00232 for( unsigned int k=0; k<nBinPerCounter; k++ ) { 00233 number = j*nBinPerCounter + k; 00234 tsigma[k] = (*(iter+number))[2]; 00235 tsigmaerr[k] = (*(iter+number))[3]; 00236 (*itgraph)->SetBinContent( k+1, tsigma[k] ); 00237 (*itgraph)->SetBinError( k+1, tsigmaerr[k] ); 00238 } 00239 (*itgraph)->SetMarkerSize(1.5); 00240 if( j==0 || j==3 ) { 00241 (*itgraph)->SetMarkerStyle(20); 00242 (*itgraph)->SetMarkerColor(2); 00243 (*itgraph)->SetMaximum( 0.3 ); 00244 (*itgraph)->SetMinimum( 0.0 ); 00245 } 00246 else if( j==1 || j==4 ) { 00247 (*itgraph)->SetMarkerStyle(21); 00248 (*itgraph)->SetMarkerColor(4); 00249 } 00250 else if( j==2 ) { 00251 (*itgraph)->SetMarkerStyle(4); 00252 (*itgraph)->SetMarkerColor(2); 00253 } 00254 } 00255 00256 sprintf( gname2, "sigma-tofid-%i", icounter ); 00257 m_graphs.push_back( new TH1F( gname2, gname2, nBinPerCounter, zbegin, zend ) ); 00258 std::vector<TH1F*>::iterator itgraph = m_graphs.end() - 1; 00259 for( unsigned int k=0; k<nBinPerCounter; k++ ) { 00260 number = (nKind-1)*nBinPerCounter + k; 00261 double sigPlus = (*(iter+number-nBinPerCounter))[2]; 00262 double sigMinus = (*(iter+number))[2]; 00263 double sigErrPlus = (*(iter+number-nBinPerCounter))[3]; 00264 double sigErrMinus = (*(iter+number))[3]; 00265 tsigma[k] = sqrt( sigPlus*sigPlus - sigMinus*sigMinus ); 00266 tsigmaerr[k] = sqrt( sigErrPlus*sigErrPlus + sigErrMinus*sigErrMinus ); 00267 (*itgraph)->SetBinContent( k+1, tsigma[k] ); 00268 (*itgraph)->SetBinError( k+1, tsigmaerr[k] ); 00269 } 00270 (*itgraph)->SetMarkerSize(1.5); 00271 (*itgraph)->SetMarkerStyle(4); 00272 (*itgraph)->SetMarkerColor(2); 00273 00274 return; 00275 }
void calib_barrel_sigma::fillGraphT0 | ( | unsigned int | icounter | ) | [private] |
Definition at line 372 of file calib_barrel_sigma.cxx.
References genRecEmupikp::i, iter(), m_fitresult, TofCalibFit::m_graphs, TofCalibFit::nBinPerCounter, nGraphTotalSigma, and TofCalibFit::nKind.
Referenced by calculate().
00372 { 00373 char gname1[256], gname2[256]; 00374 00375 // fill graphs 00376 // 4 canvas per counter, 00377 // 1. offset of tleft, tright and t0 vs z 00378 // 2. sigma of tleft, tright and t0 vs z 00379 // 3. offset of tplus and tminus vs z 00380 // 4. sigma of tplus, tminus and T_Correlation vs z 00381 std::vector<double> toffset, toffseterr; 00382 std::vector<double> tsigma, tsigmaerr; 00383 toffset.resize( nBinPerCounter ); 00384 toffseterr.resize( nBinPerCounter ); 00385 tsigma.resize( nBinPerCounter ); 00386 tsigmaerr.resize( nBinPerCounter ); 00387 00388 std::vector<HepVector>::iterator iter = m_fitresult.begin() + icounter*nKind*nBinPerCounter + 2*nBinPerCounter; 00389 for( unsigned int k=0; k<nBinPerCounter; k++ ) { 00390 toffset[k] = (*(iter+k))[0]; 00391 toffseterr[k] = (*(iter+k))[1]; 00392 tsigma[k] = (*(iter+k))[2]; 00393 tsigmaerr[k] = (*(iter+k))[3]; 00394 } 00395 00396 sprintf( gname1, "offset-tofid-%i", icounter ); 00397 std::vector<TH1F*>::iterator itgraph = m_graphs.begin() + icounter*nGraphTotalSigma + 2; 00398 for( unsigned int i=0; i<nBinPerCounter; i++ ) { 00399 // (*itgraph)->SetPoint( i, zpos[i], toffset[i] ); 00400 // (*itgraph)->SetPointError( i, zposerr[i], toffseterr[i] ); 00401 (*itgraph)->SetBinContent( i+1, toffset[i] ); 00402 (*itgraph)->SetBinError( i+1, toffseterr[i] ); 00403 } 00404 00405 sprintf( gname2, "sigma-tofid-%i", icounter ); 00406 itgraph = m_graphs.begin() + icounter*nGraphTotalSigma + 7; 00407 for( unsigned int i=0; i<nBinPerCounter; i++ ) { 00408 // (*itgraph)->SetPoint( i, zpos[i], tsigma[i] ); 00409 // (*itgraph)->SetPointError( i, zposerr[i], tsigmaerr[i] ); 00410 (*itgraph)->SetBinContent( i+1, tsigma[i] ); 00411 (*itgraph)->SetBinError( i+1, tsigmaerr[i] ); 00412 } 00413 00414 return; 00415 }
void calib_barrel_sigma::fillRecord | ( | const Record * | r, | |
unsigned int | icounter | |||
) | [private] |
Definition at line 122 of file calib_barrel_sigma.cxx.
References iter(), TofCalibFit::m_histograms, TofCalibFit::nBinPerCounter, TofCalibFit::nKind, Record::tleft(), Record::tright(), zbegin, zend, Record::zrhit(), and zstep.
Referenced by calculate().
00122 { 00123 00124 double zhit = r->zrhit(); 00125 if( zhit<zbegin || zhit>zend ) return; 00126 int zbin = static_cast<int>((zhit-zbegin)/zstep); 00127 if( zbin<0 ) { zbin = 0; } 00128 else if( zbin>static_cast<int>(nBinPerCounter-1) ) { 00129 cout << "tofcalgsec::calib_barrel_sigma:fillRecord: zhit is out of range, zhit=" << zhit << " zbin=" << zbin << endl; 00130 return; 00131 } 00132 00133 std::vector<TH1F*>::iterator iter = m_histograms.begin(); 00134 unsigned int number = icounter*nKind*nBinPerCounter + zbin; 00135 (*(iter+number))->Fill( r->tleft() ); 00136 (*(iter+nBinPerCounter+number))->Fill( r->tright() ); 00137 (*(iter+3*nBinPerCounter+number))->Fill( (r->tleft()+r->tright())/2.0 ); 00138 (*(iter+4*nBinPerCounter+number))->Fill( (r->tleft()-r->tright())/2.0 ); 00139 00140 return; 00141 }
void calib_barrel_sigma::fillRecordT0 | ( | const Record * | r, | |
unsigned int | icounter | |||
) | [private] |
Definition at line 335 of file calib_barrel_sigma.cxx.
References iter(), TofCalibFit::m_histograms, TofCalibFit::nBinPerCounter, TofCalibFit::nKind, Record::t0(), zbegin, zend, Record::zrhit(), and zstep.
Referenced by calculate().
00335 { 00336 double zhit = r->zrhit(); 00337 if( zhit<zbegin || zhit>zend ) return; 00338 int zbin = static_cast<int>((zhit-zbegin)/zstep); 00339 if( zbin<0 ) { zbin = 0; } 00340 else if( zbin>static_cast<int>(nBinPerCounter-1) ) { 00341 cout << "tofcalgsec::calib_barrel_sigma:fillRecordT0: zhit is out of range, zhit=" << zhit << " zbin=" << zbin << endl; 00342 return; 00343 } 00344 00345 std::vector<TH1F*>::iterator iter = m_histograms.begin(); 00346 unsigned int number = icounter*nKind*nBinPerCounter + 2*nBinPerCounter + zbin; 00347 (*(iter+number))->Fill( r->t0() ); 00348 00349 return; 00350 }
void TofCalibFit::fillRoot | ( | const char * | file | ) | [inherited] |
Definition at line 80 of file TofCalibFit.cxx.
References TofCalibFit::CanvasName, TofCalibFit::CanvasPerCounterName, delete_small_size::dirname, genRecEmupikp::i, iter(), ganga-rec::j, TofCalibFit::m_graphs, TofCalibFit::m_histograms, TofCalibFit::m_name, TofCalibFit::nCanvas, TofCalibFit::nCanvasPerCounter, TofCalibFit::nCounter, TofCalibFit::nGraphPerCanvas, TofCalibFit::nGraphPerCanvasPerCounter, TofCalibFit::nHistogram, and TofCalibFit::nHistPerCounter.
00080 { 00081 00082 unsigned int nhist = m_histograms.size(); 00083 if( nhist != (nCounter*nHistPerCounter + nHistogram) ) { 00084 std::cout<<" tofcalgsec::TofCalibFit:" << m_name << ": the number of histograms is NOT same as the number of histograms saved!" << " nhist=" << nhist << " calculated=" << (nCounter*nHistPerCounter + nHistogram) << " nCounter=" << nCounter << " nHistPerCounter=" << nHistPerCounter << " nHistogram=" << nHistogram << std::endl; 00085 exit(0); 00086 } 00087 00088 unsigned int numgraph1 = 0; 00089 unsigned int numgraph2 = 0; 00090 if( nCanvasPerCounter!=0 ) { 00091 std::vector<unsigned int>::iterator iter = nGraphPerCanvasPerCounter.begin(); 00092 for( ; iter!=nGraphPerCanvasPerCounter.end(); iter++ ) { 00093 numgraph1 = numgraph1 + (*iter); 00094 } 00095 } 00096 if( nCanvas!=0 ) { 00097 std::vector<unsigned int>::iterator iter = nGraphPerCanvas.begin(); 00098 for( ; iter!=nGraphPerCanvas.end(); iter++ ) { 00099 numgraph2 = numgraph2 + (*iter); 00100 } 00101 } 00102 unsigned int ngraph = m_graphs.size(); 00103 if( ngraph != ( nCounter*numgraph1+numgraph2) ) { 00104 std::cout<<" tofcalgsec::TofCalibFit:"<< m_name << ": the number of graphs is NOT same as the number of graphs saved!"<<std::endl; 00105 exit(0); 00106 } 00107 00108 TFile f(file,"RECREATE"); 00109 00110 gStyle->SetOptStat(2211); 00111 gStyle->SetOptFit(1111); 00112 gStyle->SetLabelSize(0.03,"x"); 00113 gStyle->SetLabelSize(0.03,"y"); 00114 00115 char dirname[256]; 00116 char canvasname[256]; 00117 if( nHistPerCounter>0 || nCanvasPerCounter>0 ) { 00118 std::vector<TH1F*>::iterator iter1 = m_histograms.begin(); 00119 std::vector<TH1F*>::iterator iter2 = m_graphs.begin(); 00120 for( unsigned int i=0; i<nCounter; i++ ) { 00121 sprintf( dirname, "tofid%i", i ); 00122 TDirectory* cdresult = f.mkdir( dirname ); 00123 cdresult->cd(); 00124 00125 for( unsigned int j=0; j<nHistPerCounter; j++ ) { 00126 (*(iter1+j))->Write(); 00127 } 00128 iter1 = iter1 + nHistPerCounter; 00129 00130 for( unsigned int j=0; j<nCanvasPerCounter; j++ ) { 00131 std::vector<string>::iterator it1 = CanvasPerCounterName.begin() + j; 00132 std::vector<unsigned int>::iterator it2 = nGraphPerCanvasPerCounter.begin() + j; 00133 sprintf( canvasname, "%s-tofid-%i", (*it1).c_str(), i ); 00134 TCanvas* c1 = new TCanvas( canvasname, canvasname, 1); 00135 c1->SetFillColor(10); 00136 for( unsigned int k=0; k<(*it2); k++ ) { 00137 if( k==0 ) { 00138 (*(iter2+k))->Draw("E"); 00139 } 00140 else { 00141 (*(iter2+k))->Draw("Esame"); 00142 } 00143 } 00144 iter2 = iter2 + (*it2); 00145 c1->Write(); 00146 } 00147 } 00148 } 00149 00150 if( nHistogram>0 || nCanvas>0 ) { 00151 sprintf( dirname, "summary" ); 00152 TDirectory* cdresult = f.mkdir( dirname ); 00153 cdresult->cd(); 00154 00155 std::vector<TH1F*>::iterator iter1 = m_histograms.begin() + nCounter*nHistPerCounter; 00156 std::vector<TH1F*>::iterator iter2 = m_graphs.begin() + nCounter*numgraph1; 00157 for( ; iter1 != m_histograms.end(); iter1++ ) { 00158 (*iter1)->Write(); 00159 } 00160 00161 for( unsigned int j=0; j<nCanvas; j++ ) { 00162 std::vector<string>::iterator it1 = CanvasName.begin() + j; 00163 std::vector<unsigned int>::iterator it2 = nGraphPerCanvas.begin() + j; 00164 sprintf( canvasname, (*it1).c_str() ); 00165 TCanvas* c1 = new TCanvas( canvasname, canvasname, 1); 00166 c1->SetFillColor(10); 00167 for( unsigned int k=0; k<(*it2); k++ ) { 00168 if( k==0 ) { 00169 (*(iter2+k))->Draw("E"); 00170 } 00171 else { 00172 (*(iter2+k))->Draw("Esame"); 00173 } 00174 } 00175 iter2 = iter2 + (*it2); 00176 c1->Write(); 00177 } 00178 00179 } 00180 00181 f.Close(); 00182 00183 return; 00184 }
void TofCalibFit::fillTxt | ( | const char * | file | ) | [inherited] |
Definition at line 52 of file TofCalibFit.cxx.
References genRecEmupikp::i, TofCalibFit::m_result, and TofCalibFit::name().
00052 { 00053 std::ofstream out(file,ios::out); 00054 if( out ) { 00055 std::vector<HepVector>::iterator it; 00056 for( it=m_result.begin(); it!=m_result.end(); it++ ) { 00057 for( int i=0; i<(*it).num_row(); i++ ) { 00058 out << (*it)[i] << " "; 00059 } 00060 out << std::endl; 00061 } 00062 out.close(); 00063 } 00064 else{ 00065 cerr << "error when open file " << file << " for write in " << name() << "::fillTxt()" << std::endl; 00066 cout << "print all parameters to srceen: in total " << m_result.size() << " items" << std::endl; 00067 std::vector<HepVector>::iterator it; 00068 for( it=m_result.begin(); it!=m_result.end(); it++ ) { 00069 for( int i=0; i<(*it).num_row(); i++ ) { 00070 cout << (*it)[i] << " "; 00071 } 00072 cout << std::endl; 00073 } 00074 } 00075 00076 return; 00077 }
void calib_barrel_sigma::fitGraph | ( | unsigned int | icounter | ) | [private] |
Definition at line 278 of file calib_barrel_sigma.cxx.
References genRecEmupikp::i, iter(), TofCalibFit::m_graphs, TofCalibFit::m_npar, TofCalibFit::m_result, TofCalibFit::nGraphPerCanvasPerCounter, nGraphTotalSigma, TofCalibFit::X, zbegin, and zend.
Referenced by calculate().
00278 { 00279 00280 TF1* fsingle = new TF1("fsingle", "pol4"); 00281 fsingle->SetLineColor(1); 00282 fsingle->SetLineWidth(1); 00283 00284 std::vector<unsigned int>::iterator itnumber = nGraphPerCanvasPerCounter.begin(); 00285 std::vector<TH1F*>::iterator itgraph = m_graphs.begin() + icounter*nGraphTotalSigma + (*itnumber) + (*(itnumber+1)); 00286 00287 fsingle->SetParameter( 0, 0.14 ); 00288 fsingle->SetParameter( 1, -4.0e-4 ); 00289 (*itgraph)->Fit( "fsingle", "QR", "", zbegin, zend ); 00290 X = HepVector( m_npar, 0 ); 00291 for( unsigned int i=0; i<5; i++ ) { 00292 X[i] = fsingle->GetParameter(i); 00293 } 00294 00295 fsingle->SetParameter( 0, 0.14 ); 00296 fsingle->SetParameter( 1, 4.0e-4 ); 00297 (*(itgraph+1))->Fit( "fsingle", "QR", "", zbegin, zend ); 00298 for( unsigned int i=0; i<5; i++ ) { 00299 X[i+5] = fsingle->GetParameter(i); 00300 } 00301 00302 std::vector<HepVector>::iterator iter = m_result.begin() + icounter; 00303 (*iter) = X; 00304 00305 return; 00306 }
void calib_barrel_sigma::fitGraphT0 | ( | unsigned int | icounter | ) | [private] |
Definition at line 418 of file calib_barrel_sigma.cxx.
References iter(), TofCalibFit::m_graphs, TofCalibFit::m_result, TofCalibFit::nGraphPerCanvasPerCounter, nGraphTotalSigma, zbegin, and zend.
Referenced by calculate().
00418 { 00419 00420 // TF1 *fdouble = new TF1( "fdouble", doubleEndFunc, zbegin, zend, 3 ); 00421 TF1 *fdouble = new TF1( "fdouble", "pol4", zbegin, zend ); 00422 fdouble->SetLineColor(1); 00423 fdouble->SetLineWidth(1); 00424 00425 std::vector<unsigned int>::iterator itnumber = nGraphPerCanvasPerCounter.begin(); 00426 std::vector<TH1F*>::iterator itgraph = m_graphs.begin() + icounter*nGraphTotalSigma + (*itnumber) + (*(itnumber+1)) + 2; 00427 (*itgraph)->Fit( "fdouble", "Q", "", zbegin, zend ); 00428 00429 std::vector<HepVector>::iterator iter = m_result.begin() + icounter; 00430 (*iter)[10] = fdouble->GetParameter(0); 00431 (*iter)[11] = fdouble->GetParameter(1); 00432 (*iter)[12] = fdouble->GetParameter(2); 00433 (*iter)[13] = fdouble->GetParameter(3); 00434 (*iter)[14] = fdouble->GetParameter(4); 00435 00436 return; 00437 }
void calib_barrel_sigma::fitHistogram | ( | unsigned int | icounter | ) | [private] |
Definition at line 144 of file calib_barrel_sigma.cxx.
References genRecEmupikp::i, ganga-rec::j, m_fitresult, TofCalibFit::m_histograms, TofCalibFit::nBinPerCounter, and TofCalibFit::nKind.
Referenced by calculate().
00144 { 00145 TF1* g = new TF1("g", "gaus"); 00146 g->SetLineColor(2); 00147 g->SetLineWidth(1); 00148 00149 std::vector<TH1F*>::iterator iter1 = m_histograms.begin() + icounter*nKind*nBinPerCounter; 00150 std::vector<HepVector>::iterator iter2 = m_fitresult.begin() + icounter*nKind*nBinPerCounter; 00151 for( unsigned int i=0; i<nKind; i++ ) { 00152 for( unsigned int j=0; j<nBinPerCounter; j++ ) { 00153 if( i!=2 ) { 00154 (*iter1)->Fit( g, "Q"); 00155 (*iter2)[0] = g->GetParameter(1); 00156 (*iter2)[1] = g->GetParError(1); 00157 (*iter2)[2] = g->GetParameter(2); 00158 (*iter2)[3] = g->GetParError(2); 00159 } 00160 iter1++; 00161 iter2++; 00162 } 00163 } 00164 00165 return; 00166 00167 }
void calib_barrel_sigma::fitHistogramT0 | ( | unsigned int | icounter | ) | [private] |
Definition at line 353 of file calib_barrel_sigma.cxx.
References ganga-rec::j, m_fitresult, TofCalibFit::m_histograms, TofCalibFit::nBinPerCounter, and TofCalibFit::nKind.
Referenced by calculate().
00353 { 00354 TF1* g = new TF1("g", "gaus"); 00355 g->SetLineColor(2); 00356 g->SetLineWidth(1); 00357 00358 std::vector<TH1F*>::iterator iter1 = m_histograms.begin() + icounter*nKind*nBinPerCounter + 2*nBinPerCounter; 00359 std::vector<HepVector>::iterator iter2 = m_fitresult.begin() + icounter*nKind*nBinPerCounter + 2*nBinPerCounter; 00360 for( unsigned int j=0; j<nBinPerCounter; j++, iter1++, iter2++ ) { 00361 (*iter1)->Fit( g, "Q"); 00362 (*iter2)[0] = g->GetParameter(1); 00363 (*iter2)[1] = g->GetParError(1); 00364 (*iter2)[2] = g->GetParameter(2); 00365 (*iter2)[3] = g->GetParError(2); 00366 } 00367 00368 return; 00369 }
const string& TofCalibFit::name | ( | void | ) | const [inline, inherited] |
Definition at line 27 of file TofCalibFit.h.
References TofCalibFit::m_name.
Referenced by TofCalibManager::addCalib(), calib_etf_bunch::calculate(), calib_endcap_sigma::calculate(), calib_endcap_atten::calculate(), calculate(), calib_barrel_q0::calculate(), calib_barrel_common::calculate(), and TofCalibFit::fillTxt().
00027 { return m_name; }
void TofCalibFit::setTCorrelation | ( | HepVector | tc | ) | [inline, inherited] |
Definition at line 35 of file TofCalibFit.h.
References TofCalibFit::m_tcorrelation.
00035 { m_tcorrelation = tc; }
HepVector TofCalibFit::tcorrelation | ( | ) | [inline, inherited] |
void calib_barrel_sigma::updateData | ( | Record * | r, | |
unsigned int | icounter | |||
) | [private] |
Definition at line 309 of file calib_barrel_sigma.cxx.
References genRecEmupikp::i, iter(), TofCalibFit::m_result, TofCalibFit::m_tcorrelation, Record::setT0(), Record::tleft(), Record::tright(), and Record::zrhit().
Referenced by calculate().
00309 { 00310 double zhit = r->zrhit(); 00311 double t1 = r->tleft(); 00312 double t2 = r->tright(); 00313 00314 double par1[5], par2[5]; 00315 std::vector<HepVector>::iterator iter = m_result.begin() + icounter; 00316 for( unsigned int i=0; i<5; i++ ) { 00317 par1[i] = (*iter)[i]; 00318 par2[i] = (*iter)[i+5]; 00319 } 00320 00321 double tsigma1 = par1[0]+par1[1]*zhit+par1[2]*pow(zhit,2)+par1[3]*pow(zhit,3) + par1[4]*pow(zhit,4); 00322 double tsigma2 = par2[0]+par2[1]*zhit+par2[2]*pow(zhit,2)+par2[3]*pow(zhit,3) + par2[4]*pow(zhit,4); 00323 double tc = m_tcorrelation[0]; 00324 00325 double weight1 = (tsigma2*tsigma2-tc*tc)/(tsigma1*tsigma1+tsigma2*tsigma2-2.0*tc*tc); 00326 double weight2 = (tsigma1*tsigma1-tc*tc)/(tsigma1*tsigma1+tsigma2*tsigma2-2.0*tc*tc); 00327 double t0 = weight1*t1 + weight2*t2; 00328 00329 r->setT0( t0 ); 00330 00331 return; 00332 }
std::vector<string> TofCalibFit::CanvasName [protected, inherited] |
Definition at line 58 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_endcap_atten::calib_endcap_atten(), calib_etf_bunch::calib_etf_bunch(), calib_barrel_q0::fillGraph(), and TofCalibFit::fillRoot().
std::vector<string> TofCalibFit::CanvasPerCounterName [protected, inherited] |
Definition at line 57 of file TofCalibFit.h.
Referenced by calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), and TofCalibFit::fillRoot().
std::vector<HepVector> calib_barrel_sigma::m_fitresult [private] |
Definition at line 34 of file calib_barrel_sigma.h.
Referenced by calib_barrel_sigma(), fillGraph(), fillGraphT0(), fitHistogram(), fitHistogramT0(), and ~calib_barrel_sigma().
std::vector<TH1F*> TofCalibFit::m_graphs [protected, inherited] |
Definition at line 54 of file TofCalibFit.h.
Referenced by calib_etf_bunch::fillGraph(), calib_endcap_sigma::fillGraph(), calib_endcap_atten::fillGraph(), fillGraph(), calib_barrel_q0::fillGraph(), calib_barrel_common::fillGraph(), calib_endcap_atten::fillGraphQ0(), fillGraphT0(), TofCalibFit::fillRoot(), calib_etf_bunch::fitGraph(), calib_endcap_sigma::fitGraph(), calib_endcap_atten::fitGraph(), fitGraph(), calib_barrel_common::fitGraph(), fitGraphT0(), and TofCalibFit::~TofCalibFit().
std::vector<TH1F*> TofCalibFit::m_histograms [protected, inherited] |
Definition at line 53 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), calib_etf_bunch::fillRecord(), calib_endcap_sigma::fillRecord(), calib_endcap_atten::fillRecord(), fillRecord(), calib_barrel_q0::fillRecord(), calib_barrel_common::fillRecord(), calib_endcap_atten::fillRecordQ0(), fillRecordT0(), TofCalibFit::fillRoot(), calib_etf_bunch::fitHistogram(), calib_endcap_sigma::fitHistogram(), calib_endcap_atten::fitHistogram(), fitHistogram(), calib_barrel_q0::fitHistogram(), calib_barrel_common::fitHistogram(), calib_endcap_atten::fitHistogramQ0(), fitHistogramT0(), and TofCalibFit::~TofCalibFit().
string TofCalibFit::m_name [protected, inherited] |
Definition at line 50 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), TofCalibFit::fillRoot(), TofCalibFit::name(), and TofCalibFit::TofCalibFit().
int TofCalibFit::m_npar [protected, inherited] |
Definition at line 38 of file TofCalibFit.h.
Referenced by calib_endcap_sigma::fitGraph(), calib_endcap_atten::fitGraph(), fitGraph(), and TofCalibFit::TofCalibFit().
std::vector<HepVector> TofCalibFit::m_result [protected, inherited] |
Definition at line 55 of file TofCalibFit.h.
Referenced by calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_endcap_atten::fillGraphQ0(), TofCalibFit::fillTxt(), calib_etf_bunch::fitGraph(), calib_endcap_sigma::fitGraph(), calib_endcap_atten::fitGraph(), fitGraph(), calib_barrel_q0::fitGraph(), calib_barrel_common::fitGraph(), fitGraphT0(), calib_endcap_atten::updateData(), updateData(), and TofCalibFit::~TofCalibFit().
HepVector TofCalibFit::m_tcorrelation [protected, inherited] |
Definition at line 60 of file TofCalibFit.h.
Referenced by TofCalibFit::setTCorrelation(), TofCalibFit::TofCalibFit(), and updateData().
unsigned int TofCalibFit::nBinPerCounter [protected, inherited] |
Definition at line 41 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), calib_etf_bunch::fillGraph(), calib_endcap_sigma::fillGraph(), calib_endcap_atten::fillGraph(), fillGraph(), calib_barrel_common::fillGraph(), calib_endcap_atten::fillGraphQ0(), fillGraphT0(), calib_etf_bunch::fillRecord(), calib_endcap_sigma::fillRecord(), calib_endcap_atten::fillRecord(), fillRecord(), calib_barrel_common::fillRecord(), calib_endcap_atten::fillRecordQ0(), fillRecordT0(), calib_endcap_sigma::fitHistogram(), calib_endcap_atten::fitHistogram(), fitHistogram(), calib_endcap_atten::fitHistogramQ0(), fitHistogramT0(), and TofCalibFit::TofCalibFit().
unsigned int TofCalibFit::nCanvas [protected, inherited] |
Definition at line 47 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), TofCalibFit::fillRoot(), and TofCalibFit::TofCalibFit().
unsigned int TofCalibFit::nCanvasPerCounter [protected, inherited] |
Definition at line 44 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), TofCalibFit::fillRoot(), and TofCalibFit::TofCalibFit().
std::vector<unsigned int> TofCalibFit::nGraphPerCanvas [protected, inherited] |
Definition at line 48 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_endcap_atten::calib_endcap_atten(), calib_etf_bunch::calib_etf_bunch(), and TofCalibFit::fillRoot().
std::vector<unsigned int> TofCalibFit::nGraphPerCanvasPerCounter [protected, inherited] |
Definition at line 45 of file TofCalibFit.h.
Referenced by calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), TofCalibFit::fillRoot(), fitGraph(), and fitGraphT0().
unsigned int TofCalibFit::nHistogram [protected, inherited] |
Definition at line 46 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), TofCalibFit::fillRoot(), and TofCalibFit::TofCalibFit().
unsigned int TofCalibFit::nHistPerCounter [protected, inherited] |
Definition at line 43 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), TofCalibFit::fillRoot(), and TofCalibFit::TofCalibFit().
unsigned int TofCalibFit::nKind [protected, inherited] |
Definition at line 40 of file TofCalibFit.h.
Referenced by calib_barrel_common::calib_barrel_common(), calib_barrel_q0::calib_barrel_q0(), calib_barrel_sigma(), calib_endcap_atten::calib_endcap_atten(), calib_endcap_sigma::calib_endcap_sigma(), calib_etf_bunch::calib_etf_bunch(), calib_etf_bunch::fillGraph(), calib_endcap_sigma::fillGraph(), calib_endcap_atten::fillGraph(), fillGraph(), calib_barrel_common::fillGraph(), fillGraphT0(), calib_endcap_sigma::fillRecord(), calib_endcap_atten::fillRecord(), fillRecord(), calib_barrel_common::fillRecord(), calib_endcap_atten::fillRecordQ0(), fillRecordT0(), calib_endcap_sigma::fitHistogram(), calib_endcap_atten::fitHistogram(), fitHistogram(), calib_endcap_atten::fitHistogramQ0(), fitHistogramT0(), and TofCalibFit::TofCalibFit().
HepVector TofCalibFit::X [protected, inherited] |
Definition at line 51 of file TofCalibFit.h.
Referenced by calib_etf_bunch::fitGraph(), calib_endcap_sigma::fitGraph(), calib_endcap_atten::fitGraph(), fitGraph(), calib_barrel_common::fitGraph(), calib_barrel_common::fitHistogram(), TofCalibFit::tcorrelation(), and TofCalibFit::TofCalibFit().
std::vector<double> calib_barrel_sigma::zpos [private] |
Definition at line 30 of file calib_barrel_sigma.h.
Referenced by calib_barrel_sigma(), and ~calib_barrel_sigma().
std::vector<double> calib_barrel_sigma::zposerr [private] |
Definition at line 31 of file calib_barrel_sigma.h.
Referenced by calib_barrel_sigma(), and ~calib_barrel_sigma().
double calib_barrel_sigma::zstep [private] |
Definition at line 32 of file calib_barrel_sigma.h.
Referenced by calib_barrel_sigma(), fillRecord(), and fillRecordT0().