#include <EmcBhaCalibData.h>
Public Member Functions | |
EmcBhaCalibData (int numxtals) | |
EmcBhaCalibData (int numxtals, int MsgFlag) | |
~EmcBhaCalibData () | |
double & | matrixMEle (int row, int column) |
EmcLSSMatrix * | getMatrixM () |
double & | vectorR (int ind) |
double * | getVectorR () |
int | xtalInd (int ind) |
int & | nXtals () |
int & | nXtalsHit () |
int & | xtalHits (int ind) |
int & | xtalHitsDir (int ind) |
bool | reduce () |
void | reset () |
void | writeOut (ostream &OutM, ostream &outV) |
void | readIn (istream &InM, istream &InV) |
void | printVec (int number) |
Private Attributes | |
EmcLSSMatrix * | _matrixM |
double * | _vectorR |
int * | _xtalInd |
int | _nXtals |
int | _nXtalsHit |
int * | _xtalHits |
int * | _xtalHitsMax |
int | _MsgFlag |
The data are filled in the method EmcMCBhaEvent::CollectBhabha().
This software was developed for the BesIII collaboration. If you use all or part of it, please give an appropriate acknowledgement.
Copyright (C) 2005 IHEP
Definition at line 63 of file EmcBhaCalibData.h.
EmcBhaCalibData::EmcBhaCalibData | ( | int | numxtals | ) |
Definition at line 48 of file EmcBhaCalibData.cxx.
References _matrixM, _MsgFlag, _nXtals, _vectorR, _xtalHits, _xtalHitsMax, _xtalInd, and genRecEmupikp::i.
00049 : _nXtals(numxtals), 00050 _nXtalsHit(0) 00051 { 00052 // _matrixM = new EmcLSSMatrix(_nXtals,600); 00053 _matrixM = new EmcLSSMatrix(_nXtals,_nXtals); 00054 _vectorR = new double[_nXtals]; 00055 _xtalInd = new int[_nXtals]; 00056 _xtalHits = new int[_nXtals]; 00057 _xtalHitsMax = new int[_nXtals]; 00058 for (int i=0;i<_nXtals;i++) { 00059 _vectorR[i] = 0.; 00060 _xtalInd[i] = i; 00061 _xtalHits[i] = 0; 00062 _xtalHitsMax[i] = 0; 00063 } 00064 _MsgFlag =0; 00065 }
EmcBhaCalibData::EmcBhaCalibData | ( | int | numxtals, | |
int | MsgFlag | |||
) |
Definition at line 70 of file EmcBhaCalibData.cxx.
References _matrixM, _MsgFlag, _nXtals, _vectorR, _xtalHits, _xtalHitsMax, _xtalInd, and genRecEmupikp::i.
00071 : _nXtals(numxtals), 00072 _nXtalsHit(0) 00073 { 00074 // _matrixM = new EmcLSSMatrix(_nXtals,600); 00075 _matrixM = new EmcLSSMatrix(_nXtals,_nXtals, MsgFlag); 00076 _vectorR = new double[_nXtals]; 00077 _xtalInd = new int[_nXtals]; 00078 _xtalHits = new int[_nXtals]; 00079 _xtalHitsMax = new int[_nXtals]; 00080 for (int i=0;i<_nXtals;i++) { 00081 _vectorR[i] = 0.; 00082 _xtalInd[i] = i; 00083 _xtalHits[i] = 0; 00084 _xtalHitsMax[i] = 0; 00085 } 00086 00087 _MsgFlag = MsgFlag; 00088 }
EmcBhaCalibData::~EmcBhaCalibData | ( | ) |
Definition at line 93 of file EmcBhaCalibData.cxx.
References _matrixM, _vectorR, _xtalHits, _xtalHitsMax, and _xtalInd.
00093 { 00094 if ( 0 != _matrixM) { 00095 delete _matrixM; 00096 _matrixM = 0; 00097 } 00098 if ( 0 != _vectorR) { 00099 delete[] _vectorR; 00100 _vectorR = 0; 00101 } 00102 if ( 0 != _xtalInd) { 00103 delete[] _xtalInd; 00104 _xtalInd = 0; 00105 } 00106 if ( 0 != _xtalHits) { 00107 delete[] _xtalHits; 00108 _xtalHits = 0; 00109 } 00110 if ( 0 != _xtalHitsMax) { 00111 delete[] _xtalHitsMax; 00112 _xtalHitsMax = 0; 00113 } 00114 }
EmcLSSMatrix* EmcBhaCalibData::getMatrixM | ( | ) | [inline] |
Definition at line 81 of file EmcBhaCalibData.h.
References _matrixM.
Referenced by EmcBhaCalib::readInFromFile(), and EmcBhaCalib::solveEqua().
00081 { return _matrixM; }
double* EmcBhaCalibData::getVectorR | ( | ) | [inline] |
Definition at line 87 of file EmcBhaCalibData.h.
References _vectorR.
Referenced by EmcBhaCalib::solveEqua().
00087 { return _vectorR; }
double& EmcBhaCalibData::matrixMEle | ( | int | row, | |
int | column | |||
) | [inline] |
Definition at line 77 of file EmcBhaCalibData.h.
References _matrixM.
Referenced by EmcSelBhaEvent::fillMatrix().
00077 { return ((*_matrixM)(row,column)); }
int& EmcBhaCalibData::nXtals | ( | ) | [inline] |
Definition at line 93 of file EmcBhaCalibData.h.
References _nXtals.
Referenced by EmcBhaCalib::digiConstCor(), EmcBhaCalib::execute(), EmcBhaCalib::initCalibConst(), EmcBhaCalib::prepareConstants(), EmcBhaCalib::readInFromFile(), EmcBhaCalib::solveEqua(), and EmcBhaCalib::writeOutConst().
00093 { return _nXtals; }
int& EmcBhaCalibData::nXtalsHit | ( | ) | [inline] |
Definition at line 95 of file EmcBhaCalibData.h.
References _nXtalsHit.
Referenced by EmcBhaCalib::execute(), EmcBhaCalib::ntupleOut(), EmcBhaCalib::prepareConstants(), EmcBhaCalib::printInfo(), EmcBhaCalib::readInFromFile(), EmcBhaCalib::solveEqua(), and EmcBhaCalib::writeOutConst().
00095 { return _nXtalsHit; }
void EmcBhaCalibData::printVec | ( | int | number | ) |
Definition at line 265 of file EmcBhaCalibData.cxx.
References _MsgFlag, _vectorR, _xtalHits, and _xtalHitsMax.
Referenced by EmcBhaCalib::execute().
00265 { 00266 00267 if (_MsgFlag <= 3) { 00268 std::cout << "EmcBhaCalibData:: INFO "<< "R ( " << number << " ): " << _vectorR[number] 00269 << " hits: " << _xtalHits[number] 00270 << " direct hits: " << _xtalHitsMax[number] 00271 << endl; 00272 } 00273 }
Definition at line 174 of file EmcBhaCalibData.cxx.
References _matrixM, _nXtalsHit, _vectorR, _xtalHits, _xtalHitsMax, _xtalInd, hits_max, genRecEmupikp::i, EmcLSSMatrix::print_NonZeros(), and EmcLSSMatrix::readIn().
Referenced by EmcBhaCalib::readInFromFile().
00174 { 00175 00176 _matrixM->readIn( InM ); 00177 00178 _matrixM->print_NonZeros(); 00179 00180 //cout<<"num_filled_rows(48)="<<_matrixM->num_filled_rows(48)<<endl; 00181 //cout<<"num_filled_cols(48)="<<_matrixM->num_filled_cols(48)<<endl; 00182 00183 //cout<<"matrix(47,47)"<<_matrixM->operator()(47,47)<<endl; 00184 00185 double vect_ele; 00186 int nr_ele; 00187 int xtal_ind; 00188 int hits; 00189 int hits_max; 00190 00191 InV >> nr_ele; 00192 00193 for (int i=0; i<nr_ele; i++) { 00194 00195 InV >> xtal_ind >> hits >> hits_max 00196 >> vect_ele ; 00197 00198 if (_vectorR[xtal_ind] == 0. ) { 00199 _nXtalsHit++; 00200 } 00201 00202 _vectorR[xtal_ind] += vect_ele ; 00203 _xtalInd[xtal_ind] = xtal_ind; 00204 _xtalHits[xtal_ind] += hits; 00205 _xtalHitsMax[xtal_ind] += hits_max; 00206 00207 } 00208 00209 }
bool EmcBhaCalibData::reduce | ( | ) |
Definition at line 212 of file EmcBhaCalibData.cxx.
References _matrixM, _nXtals, _nXtalsHit, _vectorR, _xtalHits, _xtalHitsMax, _xtalInd, and EmcLSSMatrix::reduce_Matrix().
Referenced by EmcBhaCalib::execute().
00212 { 00213 00214 bool successful = true; 00215 00216 //delete all zero elements in matrix and vector R 00217 //save only non zero elements (this format is needed by slap), 00218 //keep the original xtal index in array xtalInd 00219 00220 //array to store the new row/column reference for later matrix reduction 00221 int* xRef = new int[_nXtals]; 00222 memset(xRef, -1, (_nXtals*sizeof(int))); 00223 00224 _nXtalsHit = 0; 00225 for ( int _arrayIndx = 0; 00226 _arrayIndx < _nXtals; _arrayIndx++) { 00227 00228 if ( _vectorR[_arrayIndx] > 0. ) { 00229 00230 _vectorR[_nXtalsHit] = _vectorR[_arrayIndx]; 00231 _xtalInd[_nXtalsHit] = _xtalInd[_arrayIndx]; 00232 _xtalHits[_nXtalsHit] = _xtalHits[_arrayIndx]; 00233 _xtalHitsMax[_nXtalsHit] = _xtalHitsMax[_arrayIndx]; 00234 xRef[_arrayIndx] = _nXtalsHit; 00235 00236 _nXtalsHit++; 00237 } 00238 } 00239 00240 successful = _matrixM->reduce_Matrix( xRef ); 00241 00242 delete [] xRef; 00243 00244 return successful; 00245 }
void EmcBhaCalibData::reset | ( | ) |
Definition at line 249 of file EmcBhaCalibData.cxx.
References _matrixM, _nXtals, _nXtalsHit, _vectorR, _xtalHits, _xtalHitsMax, _xtalInd, genRecEmupikp::i, and EmcLSSMatrix::reset().
00250 { 00251 _nXtalsHit = 0; 00252 _matrixM->reset(); 00253 00254 for (int i=0;i<_nXtals;i++) { 00255 _vectorR[i]= 0.; 00256 _xtalInd[i] = i; 00257 _xtalHits[i] = 0; 00258 _xtalHitsMax[i] = 0; 00259 } 00260 00261 }
double& EmcBhaCalibData::vectorR | ( | int | ind | ) | [inline] |
Definition at line 84 of file EmcBhaCalibData.h.
References _vectorR.
Referenced by EmcSelBhaEvent::fillMatrix().
00084 { return (_vectorR[ind]); }
Definition at line 130 of file EmcBhaCalibData.cxx.
References _matrixM, _nXtals, _nXtalsHit, _vectorR, _xtalHits, _xtalHitsMax, _xtalInd, hits_max, and EmcLSSMatrix::writeOut().
Referenced by EmcSelBhaEvent::OutputMV(), and EmcBhaCalib::writeOut().
00130 { 00131 00132 //write only non zero elements to file 00133 OutM.setf(ios::scientific,ios::floatfield); 00134 OutV.setf(ios::scientific,ios::floatfield); 00135 OutV.precision(12); 00136 OutM.precision(12); 00137 00138 _matrixM->writeOut( OutM ); 00139 00140 _nXtalsHit = 0; 00141 00142 double* vect_ele = _vectorR; 00143 double* vect_end = _vectorR + _nXtals; 00144 int* xtal_ind = _xtalInd; 00145 int* hits_max = _xtalHitsMax; 00146 int* hits = _xtalHits; 00147 00148 while ( vect_ele < vect_end ) { 00149 if ( *vect_ele != 0. ){ 00150 _nXtalsHit++; 00151 } 00152 vect_ele++; 00153 } 00154 00155 OutV << _nXtalsHit << " "; 00156 00157 vect_ele = _vectorR; 00158 00159 while ( vect_ele < vect_end ) { 00160 if ( *vect_ele != 0. ) { 00161 OutV << *xtal_ind << " " << *hits << " " << *hits_max << " " 00162 << *vect_ele << " "; 00163 } 00164 xtal_ind++; 00165 vect_ele++; 00166 hits_max++; 00167 hits++; 00168 } 00169 00170 }
int& EmcBhaCalibData::xtalHits | ( | int | ind | ) | [inline] |
Definition at line 97 of file EmcBhaCalibData.h.
References _xtalHits.
Referenced by EmcSelBhaEvent::fillMatrix().
00097 { return (_xtalHits[ind]); }
int& EmcBhaCalibData::xtalHitsDir | ( | int | ind | ) | [inline] |
Definition at line 99 of file EmcBhaCalibData.h.
References _xtalHitsMax.
Referenced by EmcSelBhaEvent::fillMatrix(), EmcBhaCalib::ntupleOut(), EmcBhaCalib::prepareConstants(), EmcBhaCalib::printInfo(), EmcBhaCalib::readInFromFile(), and EmcBhaCalib::writeOutConst().
00099 { return (_xtalHitsMax[ind]); }
int EmcBhaCalibData::xtalInd | ( | int | ind | ) | [inline] |
Definition at line 90 of file EmcBhaCalibData.h.
References _xtalInd.
Referenced by EmcBhaCalib::execute(), EmcBhaCalib::ntupleOut(), EmcBhaCalib::prepareConstants(), EmcBhaCalib::printInfo(), and EmcBhaCalib::writeOutConst().
00090 { return (_xtalInd[ind]); }
EmcLSSMatrix* EmcBhaCalibData::_matrixM [private] |
Definition at line 122 of file EmcBhaCalibData.h.
Referenced by EmcBhaCalibData(), getMatrixM(), matrixMEle(), readIn(), reduce(), reset(), writeOut(), and ~EmcBhaCalibData().
int EmcBhaCalibData::_MsgFlag [private] |
int EmcBhaCalibData::_nXtals [private] |
Definition at line 129 of file EmcBhaCalibData.h.
Referenced by EmcBhaCalibData(), nXtals(), reduce(), reset(), and writeOut().
int EmcBhaCalibData::_nXtalsHit [private] |
Definition at line 131 of file EmcBhaCalibData.h.
Referenced by nXtalsHit(), readIn(), reduce(), reset(), and writeOut().
double* EmcBhaCalibData::_vectorR [private] |
Definition at line 124 of file EmcBhaCalibData.h.
Referenced by EmcBhaCalibData(), getVectorR(), printVec(), readIn(), reduce(), reset(), vectorR(), writeOut(), and ~EmcBhaCalibData().
int* EmcBhaCalibData::_xtalHits [private] |
Definition at line 133 of file EmcBhaCalibData.h.
Referenced by EmcBhaCalibData(), printVec(), readIn(), reduce(), reset(), writeOut(), xtalHits(), and ~EmcBhaCalibData().
int* EmcBhaCalibData::_xtalHitsMax [private] |
Definition at line 135 of file EmcBhaCalibData.h.
Referenced by EmcBhaCalibData(), printVec(), readIn(), reduce(), reset(), writeOut(), xtalHitsDir(), and ~EmcBhaCalibData().
int* EmcBhaCalibData::_xtalInd [private] |
Definition at line 126 of file EmcBhaCalibData.h.
Referenced by EmcBhaCalibData(), readIn(), reduce(), reset(), writeOut(), xtalInd(), and ~EmcBhaCalibData().