/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/MdcPatRec/MdcRecoUtil/MdcRecoUtil-00-01-08/src/DifArray.cxx

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: DifArray.cxx,v 1.3 2009/12/23 02:59:56 zhangy Exp $
00004 //
00005 // Description:
00006 //      Class Implementation for |DifArray| 
00007 //      What do i do ?
00008 // Environment:
00009 //      Software developed for the BaBar Detector at the SLAC B-Factory.
00010 //
00011 // Author List:
00012 //      A. Snyder
00013 //
00014 // Copyright Information:
00015 //      Copyright (C) 1996      SLAC
00016 // 
00017 // History:
00018 //      Migration for BESIII MDC
00019 //
00020 //------------------------------------------------------------------------
00021 
00022 #include "MdcRecoUtil/DifArray.h"
00023 #include "MdcRecoUtil/DifNumber.h"
00024 #include <iostream>
00025 using std::endl;
00026 //CHAGNE using std::ostream;
00027 using std::cout;
00028 
00029 DifArray::DifArray(int n,int npar):
00030   _nElem(n),
00031   _pointer(new DifNumber[n])
00032 {zero(npar);}
00033 
00034 DifArray::DifArray(const HepVector & a,int npar):
00035   _nElem(a.num_row()),
00036   _pointer(new DifNumber[nElem()])
00037 {copy(a,npar);}
00038 
00039 
00040 DifArray::DifArray(const DifArray& a):
00041   _nElem(a.nElem()),
00042   _pointer(new DifNumber[nElem()])
00043 {copy(a);}
00044 
00045 DifArray::~DifArray() {delete[] _pointer;}
00046 
00047 DifNumber& DifArray::operator[](int i){
00048   assert(i>=0);
00049   assert(i<nElem());
00050   return _pointer[i];
00051 }
00052 
00053 DifNumber& DifArray::operator()(int i){
00054   i=i-1;
00055   assert(i>=0);
00056   assert(i<nElem());
00057   return _pointer[i];
00058 }
00059 
00060 DifNumber DifArray::fetch(int i)const{
00061   i=i-1;
00062   assert(i>=0);
00063   assert(i<nElem());
00064   return _pointer[i];
00065 }
00066 
00067 DifArray& DifArray::operator=(const DifArray& rhs){
00068   copy(rhs);
00069   return *this;
00070 }
00071 
00072 HepMatrix DifArray::jacobian()const {
00073   int npar=_pointer[0].nPar();
00074   HepMatrix temp(nElem(),npar,0);
00075   for(int i=1; i<=nElem(); i++){
00076     for(int j=1; j<=npar; j++) {
00077       temp(i,j)=_pointer[i-1].derivative(j);
00078     }
00079   } //(int i=1; i<=nElem(); i++) 
00080   return temp;
00081 }
00082 
00083 void DifArray::copy(const HepVector& a,int npar){
00084   assert(nElem()==a.num_row());
00085   for(int i=0; i<nElem(); i++) 
00086     {
00087       _pointer[i].setNumber(a(i+1));
00088       _pointer[i].setNPar(npar);
00089     } 
00090 }
00091 
00092 void DifArray::copy(const DifArray& a){
00093   assert(nElem()==a.nElem());
00094   for(int i=0; i<nElem(); i++) {_pointer[i]=a._pointer[i];}
00095 }
00096 
00097 void DifArray::zero(int npar){
00098   for(int i=0; i<nElem(); i++) {
00099     _pointer[i]=0.0;
00100     _pointer[i].setNPar(npar);
00101   }
00102 }
00103 
00104 void DifArray::print(/*ostream& o*/)const{
00105   cout << "nElem=" << nElem() << endl;
00106   for(int i=1; i<=nElem(); i++){
00107     //SKIP cout << "element(" << i << ")=" << _pointer[i-1];
00108   }
00109 
00110 }

Generated on Tue Nov 29 23:13:32 2016 for BOSS_7.0.2 by  doxygen 1.4.7