/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Calibration/CalibSvc/CalibROOTCnv/CalibROOTCnv-00-01-13/src/test/UseTof.cxx

Go to the documentation of this file.
00001 //$Header: /bes/bes/BossCvs/Calibration/CalibSvc/CalibROOTCnv/src/test/UseTof.cxx,v 1.13 2010/10/14 05:30:09 huangb Exp $
00002 /*#include <stdio.h>
00003 #include "GaudiKernel/Algorithm.h"
00004 #include "GaudiKernel/AlgFactory.h"
00005 #include "GaudiKernel/IDataProviderSvc.h"
00006 #include "GaudiKernel/Service.h"
00007 #include "GaudiKernel/MsgStream.h"
00008 #include "GaudiKernel/SmartDataPtr.h"
00009 #include "CalibData/Tof/TofCalibData.h"
00010 #include "CalibData/Tof/bTofCalibBase.h"
00011 #include "CalibData/CalibModel.h"
00012 #include "GaudiKernel/DataSvc.h"
00013 #include "CalibDataSvc/ICalibRootSvc.h"
00014 
00015 using namespace std;
00017 class UseTof : public Algorithm {
00018 
00019 public:
00020   UseTof(const std::string& name, ISvcLocator* pSvcLocator); 
00021 
00022   StatusCode initialize();
00023 
00024   StatusCode execute();
00025 
00026   StatusCode finalize();
00027 
00028 private:
00029   IDataProviderSvc* m_pCalibDataSvc;
00030   ICalibRootSvc*    m_pRootSvc;
00031   // Maybe something to say which kind of data to look up?
00032 
00033 };
00034 
00036 //static const AlgFactory<UseTof> Factory;
00037 //const IAlgFactory& UseCalibFactory = Factory;
00038 //const IAlgFactory& UseTofFactory = Factory;
00039 */
00040 #include "UseTof.h"
00041 #include "TFile.h"
00042 #include "TTree.h"
00043 #include "TDirectory.h"
00044 #include "TObject.h"
00045 
00046 UseTof::UseTof( const std::string&  name, 
00047                     ISvcLocator*        pSvcLocator )
00048   : Algorithm     ( name, pSvcLocator ), m_pCalibDataSvc(0)
00049 {
00050   // Declare properties here.
00051 
00052 }
00053 
00054 
00055 StatusCode UseTof::initialize() {
00056   StatusCode sc;
00057   MsgStream log(msgSvc(), name());
00058   log << MSG::INFO << "Initialize()" << endreq;
00059 
00060   // So far don't have any properties, but in case we do some day..
00061 //  setProperties();
00062 
00063    log<<MSG::INFO << "setProperties()" << endreq;
00064   
00065    sc = service("CalibDataSvc", m_pCalibDataSvc, true);
00066 
00067   if ( !sc.isSuccess() ) {
00068     log << MSG::ERROR 
00069         << "Could not get IDataProviderSvc interface of CalibXmlCnvSvc" 
00070         << endreq;
00071     return sc;
00072   } else {
00073     log << MSG::DEBUG 
00074         << "Retrieved IDataProviderSvc interface of CalibXmlCnvSvc" 
00075         << endreq;
00076   }
00077   
00078   sc = service("CalibRootCnvSvc", m_pRootSvc, true);
00079   if ( !sc.isSuccess() ) {
00080     log << MSG::ERROR 
00081         << "Could not get ICalibRootSvc interface of CalibRootCnvSvc" 
00082         << endreq;
00083     return sc;
00084   }
00085   // Get properties from the JobOptionsSvc
00086   
00087  sc = setProperties();
00088 
00089  return StatusCode::SUCCESS;
00090 
00091 }
00092 
00093 
00094 StatusCode UseTof::execute( ) {
00095    
00096   MsgStream log(msgSvc(), name());
00097 
00098   // Cheat for now since Windows is having trouble finding definition
00099   // of Calibdata::Test_t
00100   std::string fullPath = "/Calib/TofCal";
00101    log << MSG::INFO<<"execute() fullPath = "<<fullPath<< endreq;
00102 
00103     SmartDataPtr<CalibData::TofCalibData> btof(m_pCalibDataSvc, fullPath);
00104 
00105    TFile *f1 = new TFile("TofCalConst.root","read");
00106 
00107     TTree *btoftree = (TTree*)f1 -> Get("BarTofPar");
00108     double fCount[10];
00109      double fLeft[5];
00110      double fRight[5];
00111    btoftree ->SetBranchAddress("FCounter0",&fCount[0]);
00112      btoftree ->SetBranchAddress("FCounter1",&fCount[1]);
00113      btoftree ->SetBranchAddress("FCounter2",&fCount[2]);
00114      btoftree ->SetBranchAddress("FCounter3",&fCount[3]);
00115      btoftree ->SetBranchAddress("FCounter4",&fCount[4]);
00116      btoftree ->SetBranchAddress("FCounter5",&fCount[5]);
00117      btoftree ->SetBranchAddress("FCounter6",&fCount[6]);
00118      btoftree ->SetBranchAddress("FCounter7",&fCount[7]);
00119      btoftree ->SetBranchAddress("FCounter8",&fCount[8]);
00120      btoftree ->SetBranchAddress("FCounter9",&fCount[9]);
00121      btoftree->SetBranchAddress("FLeft0",&fLeft[0]);
00122       btoftree->SetBranchAddress("FLeft1",&fLeft[1]);
00123      btoftree->SetBranchAddress("FLeft2",&fLeft[2]);
00124     btoftree->SetBranchAddress("FLeft3",&fLeft[3]);
00125     btoftree->SetBranchAddress("FLeft4",&fLeft[4]);
00126    btoftree->SetBranchAddress("FRight0",&fRight[0]);
00127    btoftree->SetBranchAddress("FRight1",&fRight[1]);
00128    btoftree->SetBranchAddress("FRight2",&fRight[2]);
00129    btoftree->SetBranchAddress("FRight3",&fRight[3]);
00130    btoftree->SetBranchAddress("FRight4",&fRight[4]);
00131 
00132       
00133 
00134     for(int i =0;i<176;i++)
00135       {
00136         btoftree -> GetEntry(i);
00137 
00138         double bAtten0 = btof->getBTofAtten(i,0);
00139         double bAtten1 = btof->getBTofAtten(i,1);
00140       double bP0  = btof->getBTofPleft(i,0);
00141       double bP1  = btof->getBTofPleft(i,1);
00142       double bP2  = btof->getBTofPleft(i,2);
00143       double bP3 = btof->getBTofPleft(i,3);
00144       double bP4 = btof->getBTofPleft(i,4);
00145       double bP5 = btof->getBTofPleft(i,5);
00146       double bP10 = btof->getBTofPright(i,0);
00147 
00148       //      double bQ = btof->getBTofQ(i);
00149       double bSpeed0 = btof->getBTofSpeed(i,0);
00150       double bSpeed1 = btof->getBTofSpeed(i,1);
00151       //      double bW1 = btof->getBTofW(i,0);
00152       //      double bW2 = btof->getBTofW(i,1);
00153       //      double bW3 = btof->getBTofW(i,2);
00154       //      double bW4 = btof->getBTofW(i,3);
00155     //  std::cout<<"=========================================="<<"\n";
00156    //   std::cout<<"cnt ="<<i<<"\n";
00157       double fCount1[10],fLeft1[5],fRight1[5];
00158       for(int j=0;j<10;j++){
00159         fCount1[j]=btof->getBTofFcounter(i,j);
00160         if(fCount1[j]!=fCount[j]) std::cout<<"error error error error"<<std::endl;  
00161  //      std::cout<<"
00162    //     std::cout<<"   fCount["<<j<<"]="<<fCount[j]<<"    fCount1["<<j<<"]="<<fCount1[j];
00163       }
00164  //  std::cout<<"\n"<<"=========================================="<<"\n";
00165     for(int j=0;j<5;j++){
00166         fLeft1[j]=btof->getBTofFleft(i,j);
00167      if(fLeft1[j]!=fLeft[j]) std::cout<<"error error error error"<<std::endl;
00168     //    std::cout<<"   fLeft["<<j<<"]="<<fLeft[j];
00169       }
00170 //    std::cout<<"\n"<<"=========================================="<<"\n";
00171 
00172     for(int j=0;j<5;j++){
00173         fRight1[j]=btof->getBTofFright(i,j);
00174         if( fRight1[j]!= fRight[j])  std::cout<<"error error error error"<<std::endl;
00175   //      std::cout<<"   fRight["<<j<<"]="<<fRight[j];
00176       }
00177 
00178  
00179  /*     std::cout<<"Atten0="<<bAtten0<<"Atten1="<<bAtten1<<"Q="<<bQ<<"Speed0="<<bSpeed0<<"Speed1="<<bSpeed1<<"P0="<<bP0<<"P1="<<bP1<<"P2="<<bP2<<"P3="<<bP3<<"P4="<<bP4<<"P10="<<bP10;
00180       std::cout<<"\n";
00181       std::cout<<"P5="<<bP5<<"Q="<<bQ;
00182       std::cout<<"W1="<<bW1<<"W2="<<bW2<<"W3="<<bW3<<"W4="<<bW4;
00183       std::cout<<"\n";*/
00184       /*
00185       std::cout<<"Atten[1]="<<*(bAtten+1)<<"P0[1]="<<*(bP0+1)<<"P1[1]="<<*(bP1+1)<<"P2[1]="<<*(bP2+1)<<"P3[1]="<<*(bP3+1)<<"P4[1]="<<*(bP4+1);
00186       std::cout<<"\n";
00187       std::cout<<"P5[1]="<<*(bP5+1)<<"S[1]="<<*(bS+1)<<"SS[1]="<<*(bSS+1)<<"Veff[1]="<<*(bVeff+1);
00188       */
00189       }   
00190 /*   for(int i =0;i<96;i++)
00191       {
00192         double eAtten0 = btof->getETofAtten(i,0);
00193         double eAtten1 = btof->getETofAtten(i,1);
00194         double eP0  = btof->getETofP(i,0);
00195         double eP1  = btof->getETofP(i,1);
00196         double eP2  = btof->getETofP(i,2);
00197         double eP3 = btof->getETofP(i,3);
00198         double eP4 = btof->getETofP(i,4);
00199         double eP5 = btof->getETofP(i,5);
00200         double eP6 = btof->getETofP(i,6);
00201         double eSpeed0 = btof->getETofSpeed(i,0);
00202         double eSpeed1 = btof->getETofSpeed(i,1);
00203 
00204         std::cout<<"=========================================="<<"\n";
00205         std::cout<<"cnt ="<<i<<"\n";
00206         
00207         std::cout<<"Atten0="<<eAtten0<<"Atten1="<<eAtten1<<"Speed0="<<eSpeed0<<"Speed1="<<eSpeed1<<"P0="<<eP0<<"P1="<<eP1<<"P2="<<eP2<<"P3="<<eP3<<"P4="<<eP4<<"P6="<<eP6;
00208         std::cout<<"\n";
00209         std::cout<<"P5="<<eP5;
00210         std::cout<<"\n";
00211       }
00212 */
00213 
00214 /*double  P_b[20];
00215     TTree *btofinnertree = (TTree*)f1 -> Get("BarTofParInner");
00216     btofinnertree->SetBranchAddress("P0",&P_b[0]);
00217     btofinnertree->SetBranchAddress("P1",&P_b[1]);
00218     btofinnertree->SetBranchAddress("P2",&P_b[2]);
00219     btofinnertree->SetBranchAddress("P3",&P_b[3]);
00220     btofinnertree->SetBranchAddress("P4",&P_b[4]);
00221     btofinnertree->SetBranchAddress("P5",&P_b[5]);
00222     btofinnertree->SetBranchAddress("P6",&P_b[6]);
00223     btofinnertree->SetBranchAddress("P7",&P_b[7]);
00224     btofinnertree->SetBranchAddress("P8",&P_b[8]);
00225     btofinnertree->SetBranchAddress("P9",&P_b[9]);
00226     btofinnertree->SetBranchAddress("P10",&P_b[10]);
00227     btofinnertree->SetBranchAddress("P11",&P_b[11]);
00228     btofinnertree->SetBranchAddress("P12",&P_b[12]);
00229     btofinnertree->SetBranchAddress("P13",&P_b[13]);
00230     btofinnertree->SetBranchAddress("P14",&P_b[14]);
00231     btofinnertree->SetBranchAddress("P15",&P_b[15]);
00232     btofinnertree->SetBranchAddress("P16",&P_b[16]);
00233     btofinnertree->SetBranchAddress("P17",&P_b[17]);
00234     btofinnertree->SetBranchAddress("P18",&P_b[18]);
00235     btofinnertree->SetBranchAddress("P19",&P_b[19]);
00236 
00237    for(int i=0;i<88;i++){
00238     btofinnertree->GetEntry(i);
00239    double P[20];
00240    std::cout<<"\n"<<" i=================       "<<i<<std::endl;
00241     for(int j=0;j<10;j++){
00242  //      P[j]=btof->getBTofInnerPleft(i,j);
00243  
00244         std::cout<<"   P["<<j<<"]"<< P[j];
00245   }
00246    
00247  for(int j=0;j<10;j++){
00248 //       P[j+10]=btof->getBTofInnerPright(i,j);
00249         std::cout<<"    P["<<j+10<<"]"<< P[j+10];
00250 }
00251 */
00252 /*if(P_b[16]!=P[16]){
00253   std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl;
00254   std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl;
00255  std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl;
00256  std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl;
00257  std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl; 
00258 std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl;
00259  std::cout<<"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<<std::endl;
00260 }
00261  std::cout<<"\n";
00262 if(P[16]>0){
00263 std::cout<<"aaa"<<std::endl;
00264 }
00265 std::cout<<"P_b[16]===="<<P_b[16]<<"P_[16]"<<P[16]<<std::endl;
00266  }
00267  */
00268   double sigma[8];
00269 
00270    for(int i=0;i<8;i++){
00271     sigma[i]=btof->getBTofSigmaCorr(i);
00272    std::cout<<" sigma["<<i<<"]="<< sigma[i];
00273 }
00274  std::cout<<"\n";
00275 
00276   std::cout<<"t0offset0 ="<< btof->getBTofOffset(0)<<"   t0offset1 ="<< btof->getBTofOffset(1)<<std::endl;
00277 
00278 std::cout<<" btof->getRunBegin()"<<btof->getRunBegin();
00279  std::cout<<"btof->getRunEnd()"<<btof->getRunEnd();
00280  std::cout<<"btof->getVersion()"<<btof->getVersion();
00281  std::cout<<"btof->getQCorr()"<<btof->getQCorr();
00282  std::cout<<"btof->getMisLable()"<<btof->getMisLable();
00283  std::cout<<"btof->getQElec()"<<btof->getQElec();
00284  for(int i=0;i<5;i++){
00285     std::cout<<"i==="<<i<<std::endl;
00286     std::cout<<"  btof->getBrEast(int index)"<<btof->getBrEast(i);
00287     std::cout<<"  btof->getBrWest(int index)"<<btof->getBrWest(i);
00288     std::cout<<"  btof->getEndcap(int index)"<<btof->getEndcap(i);
00289 }
00290        //maqm comment because cann't write 
00291    //    m_pRootSvc->writeToRoot("./Tof_test.root", fullPath);
00292   
00293   return StatusCode::SUCCESS;
00294 }
00295 /*
00296 DataSvc::retrieveObject(fullPath,CalibData::CalibTest1);
00297 */
00298 StatusCode UseTof::finalize( ) {
00299 
00300   MsgStream log(msgSvc(), name());
00301   log << MSG::INFO 
00302       << "        UseTof FINALIZE!! "
00303       << endreq;
00304   
00305   return StatusCode::SUCCESS;
00306 }
00307 
00308 

Generated on Tue Nov 29 22:57:51 2016 for BOSS_7.0.2 by  doxygen 1.4.7