Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TofCalibManager Class Reference

#include <TofCalibManager.h>

List of all members.

Public Member Functions

void addCalib (TofCalibFit *cal_item2, bool isbarrel)
void addCalib (TofCalib *cal_item1, bool isbarrel)
void addCalib (TofCalibFit *cal_item2, bool isbarrel)
void addCalib (TofCalib *cal_item1, bool isbarrel)
TofDataSetdataSet ()
TofDataSetdataSet ()
void doCalibration ()
void doCalibration ()
void fillRoot (string &dir)
void fillRoot (string &dir)
void fillTxt (string &dir)
void fillTxt (string &dir)
 ~TofCalibManager ()
 ~TofCalibManager ()

Static Public Member Functions

TofCalibManagergetManager ()
TofCalibManagergetManager ()

Protected Member Functions

 TofCalibManager ()
 TofCalibManager ()

Private Attributes

std::vector< TofCalib * > calib_barrel_item
std::vector< TofCalib * > calib_barrel_item
std::vector< TofCalib * > calib_endcap_item
std::vector< TofCalib * > calib_endcap_item
std::vector< TofCalibFit * > calibration_barrel_item
std::vector< TofCalibFit * > calibration_barrel_item
std::vector< TofCalibFit * > calibration_barrel_item2
std::vector< TofCalibFit * > calibration_barrel_item2
std::vector< TofCalibFit * > calibration_endcap_item
std::vector< TofCalibFit * > calibration_endcap_item
TofDataSetm_dataset
TofDataSetm_dataset

Static Private Attributes

TofCalibManagerm_manager
TofCalibManagerm_manager = 0


Constructor & Destructor Documentation

TofCalibManager::TofCalibManager  )  [protected]
 

00014                                  {
00015   m_dataset = new TofDataSet;
00016   return;
00017 }

TofCalibManager::~TofCalibManager  ) 
 

00020                                   {
00021   if( !calib_barrel_item.empty() ) {
00022     std::vector<TofCalib*>::iterator iter = calib_barrel_item.begin();
00023     for( ; iter != calib_barrel_item.end(); iter++ ) {
00024       if( (*iter) ) delete (*iter);
00025     }
00026     calib_barrel_item.clear();
00027   }
00028   if( !calib_endcap_item.empty() ) {
00029     std::vector<TofCalib*>::iterator iter = calib_endcap_item.begin();
00030     for( ; iter != calib_endcap_item.end(); iter++ ) {
00031       if( (*iter) ) delete (*iter);
00032     }
00033     calib_endcap_item.clear();
00034   }
00035   if( !calibration_barrel_item.empty() ) {
00036     std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item.begin();
00037     for( ; iter != calibration_barrel_item.end(); iter++ ) {
00038       if( (*iter) ) delete (*iter);
00039     }
00040     calibration_barrel_item.clear();
00041   }
00042   if( !calibration_barrel_item2.empty() ) {
00043     std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item2.begin();
00044     for( ; iter != calibration_barrel_item2.end(); iter++ ) {
00045       if( (*iter) ) delete (*iter);
00046     }
00047     calibration_barrel_item2.clear();
00048   }
00049   if( !calibration_endcap_item.empty() ) {
00050     std::vector<TofCalibFit*>::iterator iter = calibration_endcap_item.begin();
00051     for( ; iter != calibration_endcap_item.end(); iter++ ) {
00052       if( (*iter) ) delete (*iter);
00053     }
00054     calibration_endcap_item.clear();
00055   }
00056 
00057   delete m_dataset;
00058   return;
00059 }

TofCalibManager::TofCalibManager  )  [protected]
 

TofCalibManager::~TofCalibManager  ) 
 


Member Function Documentation

void TofCalibManager::addCalib TofCalibFit cal_item2,
bool  isbarrel
 

void TofCalibManager::addCalib TofCalib cal_item1,
bool  isbarrel
 

void TofCalibManager::addCalib TofCalibFit cal_item2,
bool  isbarrel
 

00073                                                                       {
00074   if( isbarrel ) {
00075     if( cal_item2->name()=="calib_barrel_sigma" ) {
00076       calibration_barrel_item2.push_back(cal_item2);
00077     }
00078     else {
00079       calibration_barrel_item.push_back(cal_item2);
00080     }
00081   }
00082   else {
00083     calibration_endcap_item.push_back(cal_item2);
00084   }
00085   return;
00086 }

void TofCalibManager::addCalib TofCalib cal_item1,
bool  isbarrel
 

00062                                                                    {
00063   if( isbarrel ) {
00064     calib_barrel_item.push_back(cal_item1);
00065   }
00066   else {
00067     calib_endcap_item.push_back(cal_item1);
00068   }
00069   return;
00070 }

TofDataSet* TofCalibManager::dataSet  )  [inline]
 

00016 { return m_dataset; }

TofDataSet* TofCalibManager::dataSet  )  [inline]
 

00016 { return m_dataset; }

void TofCalibManager::doCalibration  ) 
 

void TofCalibManager::doCalibration  ) 
 

00089                                     {
00090 
00091   if( !calib_barrel_item.empty() || !calibration_barrel_item.empty() ) {
00092     std::cout << "Begin barrel counters calibration..." << std::endl;
00093     std::cout << setiosflags(ios::left) << setw(10) << "TOF ID" << setw(8) << "Entries" << setw(30) << "What Calibration" << std::endl;
00094     HepVector tcorrelation;
00095     for( unsigned int i=0; i<NBarrel; i++ ) {
00096       RecordSet* barrelData = m_dataset->getBarrelData(i);
00097       if( !calib_barrel_item.empty() ) {
00098         std::vector<TofCalib*>::iterator iter1 = calib_barrel_item.begin();
00099         for( ; iter1!=calib_barrel_item.end(); iter1++ ) {
00100           (*iter1)->reset();
00101           (*iter1)->calculate( barrelData, i );
00102         }
00103       }
00104       if( !calibration_barrel_item.empty() ) { 
00105         std::vector<TofCalibFit*>::iterator iter2 = calibration_barrel_item.begin();
00106         for( ; iter2!=calibration_barrel_item.end(); iter2++ ) {
00107           (*iter2)->calculate( barrelData, i );
00108           if( i==(NBarrel-1) ) {
00109             if( (*iter2)->name()=="calib_barrel_common" ) {
00110               tcorrelation = (*iter2)->tcorrelation();
00111             }
00112           }
00113         }
00114       }
00115     }
00116 
00117     for( unsigned int i=0; i<NBarrel; i++ ) {
00118       RecordSet* barrelData = m_dataset->getBarrelData(i);
00119       if( !calibration_barrel_item2.empty() ) { 
00120         std::vector<TofCalibFit*>::iterator iter2 = calibration_barrel_item2.begin();
00121         for( ; iter2!=calibration_barrel_item2.end(); iter2++ ) {
00122           if( i==0 ) {
00123             if( (*iter2)->name()=="calib_barrel_sigma" ) {
00124               (*iter2)->setTCorrelation( tcorrelation );
00125             }
00126           }
00127           (*iter2)->calculate( barrelData, i );
00128         }
00129       }
00130     }
00131   }
00132 
00133   if( !calib_endcap_item.empty() || !calibration_endcap_item.empty() ) {
00134     std::cout << "Begin endcap counters calibration..." << std::endl;
00135     std::cout << setiosflags(ios::left) << setw(10)<<"TOF ID" << setw(8) << "Entries" << setw(30) << "What Calibration" << std::endl;
00136     for( unsigned int i=0; i<NEndcap; i++ ) {
00137       RecordSet* endcapData = m_dataset->getEndcapData(i);
00138       if( !calib_endcap_item.empty() ) {
00139         std::vector<TofCalib*>::iterator iter1 = calib_endcap_item.begin();
00140         for( ; iter1!=calib_endcap_item.end(); iter1++ ) {
00141           (*iter1)->reset();
00142           (*iter1)->calculate( endcapData, i );
00143         }
00144       }
00145       if( !calibration_endcap_item.empty() ) {
00146         std::vector<TofCalibFit*>::iterator iter2 = calibration_endcap_item.begin();
00147         for( ; iter2!=calibration_endcap_item.end(); iter2++ ) {
00148           (*iter2)->calculate( endcapData, i );
00149         }
00150       }
00151     }
00152   }
00153 
00154   return;
00155 }

void TofCalibManager::fillRoot string &  dir  ) 
 

void TofCalibManager::fillRoot string &  dir  ) 
 

00203                                             {
00204   int count = 1;
00205   char filename1[256];
00206   sprintf( filename1, "%s/barrel%i.root", dir.c_str(), count );
00207   TFile  f1(filename1,"RECREATE");
00208   TTree* ntbarrel = new TTree( "btrk", "barrel data after calibration" );
00209 
00210   int    run;
00211   int    event;
00212   int    tofid;
00213   double qleft;
00214   double qright;
00215   double tleft;
00216   double tright;
00217   double zrhit;
00218   double texp;
00219   double path;
00220   double phi;
00221   double theta;
00222   double p;
00223   double t0;
00224   double q0;
00225   int    hitcase;
00226 
00227   ntbarrel->Branch( "run",    &run,    "run/I"    );
00228   ntbarrel->Branch( "event",  &event,  "event/I"  );
00229   ntbarrel->Branch( "tofid",  &tofid,  "tofid/I"  );
00230   ntbarrel->Branch( "qleft",  &qleft,  "qleft/D"  );
00231   ntbarrel->Branch( "qright", &qright, "qright/D" );
00232   ntbarrel->Branch( "tleft",  &tleft,  "tleft/D"  );
00233   ntbarrel->Branch( "tright", &tright, "tright/D" );
00234   ntbarrel->Branch( "zrhit",  &zrhit,  "zrhit/D"  );
00235   ntbarrel->Branch( "texp",   &texp,   "texp/D"   );
00236   ntbarrel->Branch( "path",   &path,   "path/D"   );
00237   ntbarrel->Branch( "phi",    &phi,    "phi/D"    );
00238   ntbarrel->Branch( "theta",  &theta,  "theta/D"  );
00239   ntbarrel->Branch( "p",      &p,      "p/D"      );
00240   ntbarrel->Branch( "t0",     &t0,     "t0/D"     );
00241   ntbarrel->Branch( "q0",     &q0,     "q0/D"     );
00242   ntbarrel->Branch( "hitcase",&hitcase,"hitcase/I");
00243 
00244   int counter = 0;
00245   std::cout << "begin to write..." << filename1 << std::endl;
00246   for( unsigned int i=0; i<NBarrel; i++ ) {
00247     std::cout << "\r\b Writing record ... " << (int((++counter)*100./NBarrel)) << "%";
00248     RecordSet* barrelData = m_dataset->getBarrelData(i);
00249     std::vector<Record*>::iterator iter = barrelData->begin();
00250     for( ; iter!=barrelData->end(); iter++ ) {
00251       run     = (*iter)->run();
00252       event   = (*iter)->event();
00253       tofid   = (*iter)->tofid();
00254       qleft   = (*iter)->qleft();
00255       qright  = (*iter)->qright();
00256       tleft   = (*iter)->tleft();
00257       tright  = (*iter)->tright();
00258       zrhit   = (*iter)->zrhit();
00259       texp    = (*iter)->texp();
00260       path    = (*iter)->path();
00261       phi     = (*iter)->phi();
00262       theta   = (*iter)->theta();
00263       p       = (*iter)->p();
00264       t0      = (*iter)->t0();
00265       q0      = (*iter)->q0();
00266       hitcase = (*iter)->hitcase();
00267       ntbarrel->Fill();
00268     }
00269   }
00270   std::cout << std::endl;
00271   ntbarrel->Write();
00272   delete ntbarrel;
00273   f1.Close();
00274 
00275   char filename2[256];
00276   sprintf( filename2, "%s/endcap%i.root", dir.c_str(), count );
00277   TFile  f2(filename2,"RECREATE");
00278   TTree* ntendcap = new TTree( "etrk", "endcap data after calibration" );
00279 
00280   ntendcap->Branch( "run",    &run,    "run/I"    );
00281   ntendcap->Branch( "event",  &event,  "event/I"  );
00282   ntendcap->Branch( "tofid",  &tofid,  "tofid/I"  );
00283   ntendcap->Branch( "qleft",  &qleft,  "qleft/D"  );
00284   ntendcap->Branch( "qright", &qright, "qright/D" );
00285   ntendcap->Branch( "tleft",  &tleft,  "tleft/D"  );
00286   ntendcap->Branch( "tright", &tright, "tright/D" );
00287   ntendcap->Branch( "zrhit",  &zrhit,  "zrhit/D"  );
00288   ntendcap->Branch( "texp",   &texp,   "texp/D"   );
00289   ntendcap->Branch( "path",   &path,   "path/D"   );
00290   ntendcap->Branch( "phi",    &phi,    "phi/D"    );
00291   ntendcap->Branch( "theta",  &theta,  "theta/D"  );
00292   ntendcap->Branch( "p",      &p,      "p/D"      );
00293   ntendcap->Branch( "t0",     &t0,     "t0/D"     );
00294   ntendcap->Branch( "q0",     &q0,     "q0/D"     );
00295   ntendcap->Branch( "hitcase",&hitcase,"hitcase/I");
00296 
00297   counter = 0;
00298   std::cout << "begin to write..." << filename2 << std::endl;
00299   for( unsigned int i=0; i<NEndcap; i++ ) {
00300     std::cout << "\r\b Writing record ... " << (int((++counter)*100./NEndcap)) << "%";
00301     RecordSet* endcapData = m_dataset->getEndcapData(i);
00302     std::vector<Record*>::iterator iter = endcapData->begin();
00303     for( ; iter!=endcapData->end(); iter++ ) {
00304       run     = (*iter)->run();
00305       event   = (*iter)->event();
00306       tofid   = (*iter)->tofid();
00307       qleft   = (*iter)->qleft();
00308       qright  = (*iter)->qright();
00309       tleft   = (*iter)->tleft();
00310       tright  = (*iter)->tright();
00311       zrhit   = (*iter)->zrhit();
00312       texp    = (*iter)->texp();
00313       path    = (*iter)->path();
00314       phi     = (*iter)->phi();
00315       theta   = (*iter)->theta();
00316       p       = (*iter)->p();
00317       t0      = (*iter)->t0();
00318       q0      = (*iter)->q0();
00319       hitcase = (*iter)->hitcase();
00320       ntendcap->Fill();
00321     }
00322   }
00323   std::cout << std::endl;
00324   ntendcap->Write();
00325   delete ntendcap;
00326   f2.Close();
00327 
00328 
00329   if( !calibration_barrel_item.empty() ) {
00330     std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item.begin();
00331     for( ; iter != calibration_barrel_item.end(); iter++ ) {
00332       string fname = dir + string("/") + (*iter)->name() + string(".root");
00333       (*iter)->fillRoot( fname.c_str() );
00334     }
00335   }
00336   if( !calibration_barrel_item2.empty() ) {
00337     std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item2.begin();
00338     for( ; iter != calibration_barrel_item2.end(); iter++ ) {
00339       string fname = dir + string("/") + (*iter)->name() + string(".root");
00340       (*iter)->fillRoot( fname.c_str() );
00341     }
00342   }
00343 
00344   if( !calibration_endcap_item.empty() ) {
00345     std::vector<TofCalibFit*>::iterator iter = calibration_endcap_item.begin();
00346     for( ; iter != calibration_endcap_item.end(); iter++ ) {
00347       string fname = dir + string("/") + (*iter)->name() + string(".root");
00348       (*iter)->fillRoot( fname.c_str() );
00349     }
00350   }
00351 
00352   return;
00353 }

void TofCalibManager::fillTxt string &  dir  ) 
 

void TofCalibManager::fillTxt string &  dir  ) 
 

00158                                            {
00159 
00160   if( !calib_barrel_item.empty() ) {
00161     std::vector<TofCalib*>::iterator iter = calib_barrel_item.begin();
00162     for( ; iter != calib_barrel_item.end(); iter++ ) {
00163       string fname = dir + string("/") + (*iter)->name() + string(".txt");
00164       (*iter)->fillTxt( fname.c_str() );
00165     }
00166   }
00167 
00168   if( !calib_endcap_item.empty() ) {
00169     std::vector<TofCalib*>::iterator iter = calib_endcap_item.begin();
00170     for( ; iter != calib_endcap_item.end(); iter++ ) {
00171       string fname = dir + string("/") + (*iter)->name() + string(".txt");
00172       (*iter)->fillTxt( fname.c_str() );
00173     }
00174   }
00175 
00176   if( !calibration_barrel_item.empty() ) {
00177     std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item.begin();
00178     for( ; iter != calibration_barrel_item.end(); iter++ ) {
00179       string fname = dir + string("/") + (*iter)->name() + string(".txt");
00180       (*iter)->fillTxt( fname.c_str() );
00181     }
00182   }
00183   if( !calibration_barrel_item2.empty() ) {
00184     std::vector<TofCalibFit*>::iterator iter = calibration_barrel_item2.begin();
00185     for( ; iter != calibration_barrel_item2.end(); iter++ ) {
00186       string fname = dir + string("/") + (*iter)->name() + string(".txt");
00187       (*iter)->fillTxt( fname.c_str() );
00188     }
00189   }
00190 
00191   if( !calibration_endcap_item.empty() ) {
00192     std::vector<TofCalibFit*>::iterator iter = calibration_endcap_item.begin();
00193     for( ; iter != calibration_endcap_item.end(); iter++ ) {
00194       string fname = dir + string("/") + (*iter)->name() + string(".txt");
00195       (*iter)->fillTxt( fname.c_str() );
00196     }
00197   }
00198 
00199   return;
00200 }

TofCalibManager* TofCalibManager::getManager  )  [static]
 

TofCalibManager * TofCalibManager::getManager  )  [static]
 

00006                                              {
00007   if( m_manager == 0 ) {
00008     m_manager = new TofCalibManager;
00009   }
00010   return m_manager;
00011 }


Member Data Documentation

std::vector<TofCalib*> TofCalibManager::calib_barrel_item [private]
 

std::vector<TofCalib*> TofCalibManager::calib_barrel_item [private]
 

std::vector<TofCalib*> TofCalibManager::calib_endcap_item [private]
 

std::vector<TofCalib*> TofCalibManager::calib_endcap_item [private]
 

std::vector<TofCalibFit*> TofCalibManager::calibration_barrel_item [private]
 

std::vector<TofCalibFit*> TofCalibManager::calibration_barrel_item [private]
 

std::vector<TofCalibFit*> TofCalibManager::calibration_barrel_item2 [private]
 

std::vector<TofCalibFit*> TofCalibManager::calibration_barrel_item2 [private]
 

std::vector<TofCalibFit*> TofCalibManager::calibration_endcap_item [private]
 

std::vector<TofCalibFit*> TofCalibManager::calibration_endcap_item [private]
 

TofDataSet* TofCalibManager::m_dataset [private]
 

TofDataSet* TofCalibManager::m_dataset [private]
 

TofCalibManager* TofCalibManager::m_manager [static, private]
 

TofCalibManager * TofCalibManager::m_manager = 0 [static, private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 18:56:35 2011 for BOSS6.5.5 by  doxygen 1.3.9.1