calib_barrel_sigma Class Reference

#include <calib_barrel_sigma.h>

Inheritance diagram for calib_barrel_sigma:

TofCalibFit List of all members.

Public Member Functions

 calib_barrel_sigma (const unsigned int nzbin)
 ~calib_barrel_sigma ()
void calculate (RecordSet *&data, unsigned int icounter)
const stringname () 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< stringCanvasPerCounterName
std::vector< stringCanvasName
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

Detailed Description

Definition at line 10 of file calib_barrel_sigma.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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]

Definition at line 34 of file TofCalibFit.h.

References TofCalibFit::X.

00034 { return X;            }

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 }


Member Data Documentation

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().


Generated on Tue Nov 29 23:17:59 2016 for BOSS_7.0.2 by  doxygen 1.4.7