43 #ifndef ROOT_TQpDataBase
44 #define ROOT_TQpDataBase
60 class TQpDataBase :
public TObject
67 static void RandomlyChooseBoundedVariables(TVectorD &x,TVectorD &dualx,TVectorD &blx,TVectorD &ixlow,
68 TVectorD &bux,TVectorD &ixupp,Double_t &ix,Double_t percentLowerOnly,
69 Double_t percentUpperOnly,Double_t percentBound);
89 TQpDataBase(Int_t nx,Int_t my,Int_t mz);
90 TQpDataBase(
const TQpDataBase &another);
91 virtual ~TQpDataBase() {}
93 virtual void PutQIntoAt(TMatrixDBase &M,Int_t row,Int_t col) = 0;
94 virtual void PutAIntoAt(TMatrixDBase &M,Int_t row,Int_t col) = 0;
95 virtual void PutCIntoAt(TMatrixDBase &M,Int_t row,Int_t col) = 0;
97 virtual void Qmult (Double_t beta,TVectorD& y,Double_t alpha,
const TVectorD& x) = 0;
98 virtual void Amult (Double_t beta,TVectorD& y,Double_t alpha,
const TVectorD& x) = 0;
99 virtual void Cmult (Double_t beta,TVectorD& y,Double_t alpha,
const TVectorD& x) = 0;
100 virtual void ATransmult(Double_t beta,TVectorD& y,Double_t alpha,
const TVectorD& x) = 0;
101 virtual void CTransmult(Double_t beta,TVectorD& y,Double_t alpha,
const TVectorD& x) = 0;
103 virtual void GetDiagonalOfQ(TVectorD &dQ) = 0;
105 virtual TVectorD &GetG () {
return fG; }
106 virtual TVectorD &GetBa () {
return fBa; }
108 virtual TVectorD &GetXupperBound () {
return fXupBound; }
109 virtual TVectorD &GetiXupperBound() {
return fXupIndex; }
110 virtual TVectorD &GetXlowerBound () {
return fXloBound; }
111 virtual TVectorD &GetiXlowerBound() {
return fXloIndex; }
112 virtual TVectorD &GetSupperBound () {
return fCupBound; }
113 virtual TVectorD &GetiSupperBound() {
return fCupIndex; }
114 virtual TVectorD &GetSlowerBound () {
return fCloBound; }
115 virtual TVectorD &GetiSlowerBound() {
return fCloIndex; }
117 virtual Double_t DataNorm () = 0;
118 virtual void DataRandom (TVectorD &x,TVectorD &y,TVectorD &z,TVectorD &s) = 0;
119 virtual Double_t ObjectiveValue(TQpVar *vars) = 0;
121 TQpDataBase &operator= (
const TQpDataBase &source);
123 ClassDef(TQpDataBase,1)