/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Calibration/CalibData/CalibData-00-01-18/src/Mdc/MdcCalibData.cxx

Go to the documentation of this file.
00001 #include "CalibData/Mdc/MdcCalibData.h"
00002 //typedef std::map<int, double>::value_type valType;
00003 #include "GaudiKernel/MsgStream.h"
00004 namespace CalibData {
00005   MdcCalibData::MdcCalibData(){
00006      newXtTreesBuf = NULL;
00007      r2tTreesBuf = NULL;
00008      newXtTreesArray = NULL;
00009      r2tTreesArray = NULL;
00010      for(int layid=0; layid<43; layid++){
00011           m_r2t[layid] = NULL;
00012           for(int entr=0; entr<18; entr++){
00013               for(int lr=0; lr<2; lr++){
00014                    m_newxt[layid][entr][lr] = NULL;
00015               }//end lr
00016           }//end entr
00017      }//end for layid
00018   } 
00019 
00020   MdcCalibData::~MdcCalibData(){
00021      for(int layid=0; layid<43; layid++){
00022           delete m_r2t[layid];
00023           for(int entr=0; entr<18; entr++){
00024                for(int lr=0; lr<2; lr++){
00025                  if(m_newxt[layid][entr][lr]!=NULL) delete m_newxt[layid][entr][lr];
00026                }
00027           }
00028      }
00029      if(newXtTreesBuf!=NULL) newXtTreesBuf->Clear();
00030      if(r2tTreesBuf!=NULL) r2tTreesBuf->Clear();
00031      if(newXtTreesArray!=NULL) delete newXtTreesArray;
00032      if(r2tTreesArray!=NULL) delete r2tTreesArray;
00033   }
00034 
00035   StatusCode MdcCalibData::update(CalibBase1& other, MsgStream* log)
00036   {
00037     MdcCalibData& other1 = dynamic_cast<MdcCalibData& >(other);
00038     std::cout<<"\n"<<"here is the update in the MdcCalConst"<<std::endl;
00039     CalibBase1::update(other, log);
00040     clear();
00041     m_xtmap = other1.m_xtmap;
00042     m_t0 = other1.m_t0;
00043     m_delt0 = other1.m_delt0;
00044     m_qtpar0 = other1.m_qtpar0;
00045     m_qtpar1 = other1.m_qtpar1;
00046     m_sdmap = other1.m_sdmap;
00047     return StatusCode::SUCCESS;  
00048 }       
00049                                 
00050 void MdcCalibData::setXtpar(int xtkey,double val){
00051      m_xtmap.insert( valType( int(xtkey), val) );
00052 }
00053 
00054 void MdcCalibData::setNewXtpar(TObjArray* newXtTrees){
00055      //put TObjArray to temp buffer
00056      TBufferFile* tempBuf = new TBufferFile(TBuffer::kWrite);
00057      newXtTrees->Streamer(*tempBuf);
00058 
00059      //put content of buffer to array
00060      newXtTreesBuf = new TBufferFile(TBuffer::kRead);
00061      newXtTreesBuf->SetBuffer(tempBuf->Buffer(), tempBuf->BufferSize());
00062 
00063      newXtTreesArray = new TObjArray();
00064      newXtTreesArray->Streamer(*newXtTreesBuf);
00065      for(int layid=0; layid<43; layid++){
00066           for(int entr=0; entr<18; entr++){
00067                for(int lr=0; lr<2; lr++){
00068                     char newXtTreeName[20];
00069                     sprintf(newXtTreeName,"trNewXt%02d_%02d_%d",layid,entr,lr);
00070                     m_newxt[layid][entr][lr] = (TTree*)newXtTreesArray->FindObject(newXtTreeName);; 
00071                }
00072           }
00073      }
00074      delete tempBuf;
00075 }
00076 
00077 void MdcCalibData::setR2tpar(TObjArray* r2tTrees){
00078      //put TObjArray to temp buffer
00079      TBufferFile* tempBuf = new TBufferFile(TBuffer::kWrite);
00080      r2tTrees->Streamer(*tempBuf);
00081 
00082      //put content of buffer to array
00083      r2tTreesBuf = new TBufferFile(TBuffer::kRead);
00084      r2tTreesBuf->SetBuffer(tempBuf->Buffer(), tempBuf->BufferSize());
00085 
00086      r2tTreesArray = new TObjArray();
00087      r2tTreesArray->Streamer(*r2tTreesBuf);
00088      for(int layid=0; layid<43; layid++){
00089           char r2tTreeName[20];
00090           sprintf(r2tTreeName,"r2t%02d",layid);
00091           m_r2t[layid] = (TTree*)r2tTreesArray->FindObject(r2tTreeName);; 
00092      }
00093      delete tempBuf;
00094 }
00095 
00096 void MdcCalibData::setT0(double val){
00097      m_t0.push_back( val );
00098 }
00099 void MdcCalibData::setDelT0( double val){
00100      m_delt0.push_back( val );
00101 }
00102 
00103 void MdcCalibData::setQtpar0(double val){
00104      m_qtpar0.push_back( val );
00105 }
00106 
00107 void MdcCalibData::setQtpar1(double val){
00108      m_qtpar1.push_back( val );
00109 }
00110 
00111 void MdcCalibData::setSdpar(int sdkey, double val){
00112      m_sdmap.insert( valType( int(sdkey), val) );
00113 }
00114 
00115 // wulh updated on 08-3-24
00116 double MdcCalibData::getXtpar(int layid, int entr, int lr, int order){
00117      double xtpar = -999.0;
00118      int key = getXtKey(layid, entr, lr, order);
00119      if( 1 == m_xtmap.count(key) )
00120           xtpar = m_xtmap[key];
00121 
00122      return xtpar;
00123 }
00124 
00125 // yzhang add 2011-12-12 
00126 TTree* MdcCalibData::getNewXtpar(int layid, int entr, int lr){
00127      return m_newxt[layid][entr][lr];
00128 }
00129 
00130 // yzhang add 2011-12-15
00131 TTree* MdcCalibData::getR2tpar(int layid){
00132      return m_r2t[layid];
00133 }
00134 
00135 // wulh updated on 08-3-24
00136 double MdcCalibData::getSdpar(int layid, int entr, int lr, int bin){
00137      double sdpar = -999.0;
00138      int key = getSdKey(layid, entr, lr, bin);
00139      if( 1 == m_sdmap.count(key) ){
00140           return m_sdmap[key];
00141      }
00142 
00143      return sdpar;
00144 }
00145 
00146 // wulh updated on 08-3-24
00147 int MdcCalibData::getXtKey(int layid, int entr, int lr, int order){
00148      int key;
00149 
00150      key = ( (layid << XTLAYER_INDEX) & XTLAYER_MASK ) |
00151           ( (entr << XTENTRA_INDEX) & XTENTRA_MASK ) |
00152           ( (lr << XTLR_INDEX) & XTLR_MASK ) |
00153           ( (order << XTORDER_INDEX) & XTORDER_MASK );
00154 
00155      return key;
00156 }
00157 
00158 // wulh updated on 08-3-24
00159 int MdcCalibData::getSdKey(int layid, int entr, int lr, int bin){
00160      int key;
00161 
00162      key = ( (layid << SDLAYER_INDEX) & SDLAYER_MASK ) |
00163           ( (entr << SDENTRA_INDEX) & SDENTRA_MASK ) |
00164           ( (lr << SDLR_INDEX) & SDLR_MASK ) |
00165           ( (bin << SDBIN_INDEX) & SDBIN_MASK );
00166 
00167      return key;
00168 }
00169 
00170 void MdcCalibData::setXtBegin(){
00171      m_xtiter = m_xtmap.begin();
00172 }
00173 
00174 int MdcCalibData::getNextXtpar(int& key, double& xtpar){
00175      if( m_xtiter != m_xtmap.end() ){
00176           key = (*m_xtiter).first;
00177           xtpar = (*m_xtiter).second;
00178           m_xtiter++;
00179           return 1;
00180      }
00181      else return 0;
00182 }
00183 
00184 void MdcCalibData::setSdBegin(){
00185      m_sditer = m_sdmap.begin();
00186 }
00187 
00188 int MdcCalibData::getNextSdpar(int& key, double& sdpar){
00189      if( m_sditer != m_sdmap.end() ){
00190           key = (*m_sditer).first;
00191           sdpar = (*m_sditer).second;
00192           m_sditer++;
00193           return 1;
00194      }
00195      else return 0;
00196 }
00197 void MdcCalibData::clear(){
00198      m_xtmap.clear();
00199      m_t0.clear();
00200      m_delt0.clear();
00201      m_qtpar0.clear();
00202      m_qtpar1.clear();
00203      m_sdmap.clear();
00204 }
00205 
00206 }

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