/* */
/* Author: ruben.shahoyan@cern.ch */
/* */
+/* */
+/* */
/**********************************************************************************************/
//___________________________________________________________
AliMatrixSparse::AliMatrixSparse(Int_t sz)
: AliMatrixSq(),fVecs(0)
{
+ // constructor
fNcols=fNrows=sz;
//
fVecs = new AliVectorSparse*[sz];
AliMatrixSparse::AliMatrixSparse(const AliMatrixSparse& src)
: AliMatrixSq(src),fVecs(0)
{
+ // copy c-tor
fVecs = new AliVectorSparse*[src.GetSize()];
for (int i=GetSize();i--;) fVecs[i] = new AliVectorSparse( *src.GetRow(i));
}
//___________________________________________________________
AliVectorSparse* AliMatrixSparse::GetRowAdd(Int_t ir)
{
+ // get row, add if needed
if (ir>=fNrows) {
AliVectorSparse** arrv = new AliVectorSparse*[ir+1];
for (int i=GetSize();i--;) arrv[i] = fVecs[i];
//___________________________________________________________
AliMatrixSparse& AliMatrixSparse::operator=(const AliMatrixSparse& src)
{
+ // assignment op-r
if (this == &src) return *this;
AliMatrixSq::operator=(src);
//___________________________________________________________
void AliMatrixSparse::Clear(Option_t*)
{
+ // clear
for (int i=fNrows;i--;) delete GetRow(i);
delete [] fVecs;
fNcols = fNrows = 0;
//___________________________________________________________
void AliMatrixSparse::Print(Option_t* opt) const
{
+ // print itself
printf("Sparse Matrix of size %d x %d %s\n",fNrows,fNcols,IsSymmetric() ? " (Symmetric)":"");
for (int i=0;i<fNrows;i++) {
AliVectorSparse* row = GetRow(i);
//___________________________________________________________
void AliMatrixSparse::SortIndices(Bool_t valuesToo)
{
+ // sort columns in increasing order. Used to fix the matrix after ILUk decompostion
TStopwatch sw;
sw.Start();
printf("AliMatrixSparse:sort>>\n");
- // sort columns in increasing order. Used to fix the matrix after ILUk decompostion
for (int i=GetSize();i--;) GetRow(i)->SortIndices(valuesToo);
sw.Stop();
sw.Print();