/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/MdcCalibAlg/MdcCalibAlg-00-09-02/src/MdcCalibConst.cxx

Go to the documentation of this file.
00001 #include "MdcCalibAlg/MdcCalibConst.h"
00002 #include "MdcCalibAlg/MdcCalParams.h"
00003 
00004 #include <iostream>
00005 
00006 using namespace std;
00007 
00008 typedef map<int, double>::value_type valType;
00009 
00010 MdcCalibConst::MdcCalibConst(){
00011 }
00012 
00013 MdcCalibConst::MdcCalibConst(const MdcCalibConst& calconst){
00014      m_xtmap = calconst.m_xtmap;
00015      m_t0 = calconst.m_t0;
00016      m_delt0 = calconst.m_delt0;
00017      m_qtpar0 = calconst.m_qtpar0;
00018      m_qtpar1 = calconst.m_qtpar1;
00019      m_sdmap = calconst.m_sdmap;
00020 }
00021 
00022 void MdcCalibConst::initCalibConst(){
00023      int lay;
00024      int lr;
00025      int entr;
00026      int ord;
00027      int key;
00028      double val;
00029      for(lay=0; lay<MdcCalNLayer; lay++){
00030           for(entr=0; entr<MdcCalNENTRXT; entr++){
00031                for(lr=0; lr<MdcCalLR; lr++){
00032                     for(ord=0; ord<MdcCalXtNPars; ord++){
00033                          key = getXtKey(lay, entr, lr, ord);
00034                          if(1 == ord){
00035                               val = 0.03;
00036                          } else if(6 == ord){
00037                               val = 999.0;
00038                          } else{
00039                               val = 0.0;
00040                          }
00041                          m_xtmap.insert( valType(key, val) );
00042                     }
00043                }
00044           }
00045      }
00046 
00047      int wir;
00048      double t0 = 0.0;
00049      double dt0 = 0.0;
00050      for(wir=0; wir<MdcCalTotCell; wir++){
00051           m_t0.push_back(t0);
00052           m_delt0.push_back(dt0);
00053      }
00054 
00055      double qtpar0 = 0.0;
00056      double qtpar1 = 0.0;
00057      for(lay=0; lay<MdcCalNLayer; lay++){
00058           m_qtpar0.push_back(qtpar0);
00059           m_qtpar1.push_back(qtpar1);
00060      }
00061 
00062      int bin;
00063      double sdpar = 0.16;
00064      for(lay=0; lay<MdcCalNLayer; lay++){
00065           for(entr=0; entr<MdcCalNENTRSD; entr++){
00066                for(lr=0; lr<2; lr++){
00067                     for(bin=0; bin<MdcCalSdNBIN; bin++){
00068                          key = getSdKey(lay, entr, lr, ord);
00069                          m_sdmap.insert( valType( key, sdpar) );
00070                     }    
00071                }
00072           }
00073      }
00074 }
00075 
00076 void MdcCalibConst::fillXtpar(int key, double val){
00077      m_xtmap.insert( valType( key, val ) );
00078 }
00079 
00080 void MdcCalibConst::resetXtpar(int lay, int entr, int lr, int order, double val){
00081      int key = getXtKey(lay, entr, lr, order);
00082      m_xtmap[key] = val;
00083 }
00084 
00085 double MdcCalibConst::getXtpar(int lay, int entr, int lr, int order){
00086      double xtpar = -999.0;
00087      int key = getXtKey(lay, entr, lr, order);
00088      if( 1 == m_xtmap.count(key) )
00089           xtpar = m_xtmap[key];
00090 
00091      return xtpar;
00092 }
00093 
00094 int MdcCalibConst::getXtKey(int lay, int entr, int lr, int order) const{
00095      int key;
00096 
00097      key = ( (lay << XTLAYER_INDEX) & XTLAYER_MASK ) |
00098           ( (entr << XTENTRA_INDEX) & XTENTRA_MASK ) |
00099           ( (lr << XTLR_INDEX) & XTLR_MASK ) |
00100           ( (order << XTORDER_INDEX) & XTORDER_MASK );
00101 
00102      return key;
00103 }
00104 
00105 void MdcCalibConst::setXtBegin(){
00106      m_xtiter = m_xtmap.begin();
00107 }
00108 
00109 int MdcCalibConst::getNextXtpar(int& key, double& xtpar) {
00110      if( m_xtiter != m_xtmap.end() ){
00111           key = (*m_xtiter).first;
00112           xtpar = (*m_xtiter).second;
00113           m_xtiter++;
00114           return 1;
00115      }
00116      else return 0;
00117 }
00118 
00119 void MdcCalibConst::fillQtpar(int order, double val){
00120      if( 0 == order ){
00121           m_qtpar0.push_back( val );
00122      } else if( 1 == order ){
00123           m_qtpar1.push_back( val );
00124      } else {
00125           cout << "Order of Qtpar Error in fillQtpar()!" << endl;
00126      }
00127 }
00128 
00129 void MdcCalibConst::resetQtpar(int lay, int order, double val){
00130      if( 0 == order ){
00131           m_qtpar0[lay] = val;
00132      } else if( 1 == order ){
00133           m_qtpar1[lay] = val;
00134      } else{
00135           cout << "Order of Qtpar Error in resetQtpar()!" << endl;
00136      }
00137 }
00138 
00139 double MdcCalibConst::getQtpar(int lay, int order) const{
00140      if( 0 == order ){
00141           return m_qtpar0[lay];
00142      } else if( 1 == order ){
00143           return m_qtpar1[lay];
00144      } else{
00145           cout << "Order of Qtpar Error in getQtpar()!" << endl;
00146           return -9999.0;
00147      }
00148 }
00149 
00150 void MdcCalibConst::fillSdpar(int key, double val){
00151      m_sdmap.insert( valType( key, val) );
00152 }
00153 
00154 void MdcCalibConst::resetSdpar(int lay, int entr, int lr, int bin, double val){
00155      int key = getSdKey(lay, entr, lr, bin);
00156      m_sdmap[key] = val;
00157 }
00158 
00159 double MdcCalibConst::getSdpar(int lay, int entr, int lr, int bin){
00160                                
00161      double sdpar = -999.0;
00162      int key = getSdKey(lay, entr, lr, bin);
00163      if( 1 == m_sdmap.count(key) ){
00164           return m_sdmap[key];
00165      }
00166 
00167      return sdpar;
00168 }
00169 
00170 int MdcCalibConst::getSdKey(int lay, int entr, int lr, int bin) const{
00171      int key;
00172 
00173      key = ( (lay << SDLAYER_INDEX) & SDLAYER_MASK ) |
00174           ( (entr << SDENTRA_INDEX) & SDENTRA_MASK ) |
00175           ( (lr << SDLR_INDEX) & SDLR_MASK ) |
00176           ( (bin << SDBIN_INDEX) & SDBIN_MASK );
00177 
00178      return key;
00179 }
00180 
00181 void MdcCalibConst::setSdBegin(){
00182      m_sditer = m_sdmap.begin();
00183 }
00184 
00185 int MdcCalibConst::getNextSdpar(int& key, double& sdpar) {
00186      if( m_sditer != m_sdmap.end() ){
00187           key = (*m_sditer).first;
00188           sdpar = (*m_sditer).second;
00189           m_sditer++;
00190           return 1;
00191      }
00192      else return 0;
00193 }
00194 
00195 void MdcCalibConst::clear(){
00196      m_xtmap.clear();
00197      m_t0.clear();
00198      m_delt0.clear();
00199      m_qtpar0.clear();
00200      m_qtpar1.clear();
00201      m_sdmap.clear();
00202 }

Generated on Tue Nov 29 23:12:50 2016 for BOSS_7.0.2 by  doxygen 1.4.7