source: Sophya/trunk/SophyaPI/PIext/nomhistadapter.cc@ 3279

Last change on this file since 3279 was 3221, checked in by ansari, 18 years ago

Amelioration methode GetInfoString() pour les adaptateurs TMatrix, TArray et DataTable (acces au DVList Info() en particulier, et recuperation des lignes de DataTable), Reza 12/04/2007

File size: 18.3 KB
RevLine 
[2615]1#include "sopnamsp.h"
[295]2#include "machdefs.h"
3#include <stdlib.h>
4#include <typeinfo>
[2322]5#include <iostream>
[295]6#include <string>
7
8#include "nomhistadapter.h"
9#include "pihisto.h"
[3125]10#include "sohiswrap.h"
11
[295]12#include "pihisto2d.h"
13#include "pipodrw.h"
[3139]14
[546]15#include "servnobjm.h"
[3149]16#include "strutilxx.h"
[295]17
[1207]18#ifndef SANS_EVOLPLANCK
19#include "objfitter.h"
[2697]20// Pour les DataTable ( Depuis Avril 2005 )
21#include "datatable.h"
[2701]22#include "swppfdtable.h"
[1207]23#endif
24
[2605]25//-----------------------------------------------------------------------------
[3123]26// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo / HProf
[2605]27//-----------------------------------------------------------------------------
[295]28
29/* --Methode-- */
30NOMAdapter_Histo::NOMAdapter_Histo(Histo* o)
31 : NObjMgrAdapter(o)
32{
33mHis = o;
34}
35
36/* --Methode-- */
37NOMAdapter_Histo::~NOMAdapter_Histo()
38{
39}
40
41/* --Methode-- */
42NObjMgrAdapter* NOMAdapter_Histo::Clone(AnyDataObj* o)
43{
44Histo* h = dynamic_cast<Histo *>(o);
45if (h) return ( new NOMAdapter_Histo(h) );
46return ( new NObjMgrAdapter(o) );
47}
48
[463]49/* --Methode-- */
[1165]50string NOMAdapter_Histo::GetDataObjType()
[463]51{
[1165]52HProf * hp = dynamic_cast<HProf *>(mHis);
[2605]53if(hp) return("HProf ");
54else return("Histo ");
[1165]55}
56
57/* --Methode-- */
[2383]58string NOMAdapter_Histo::GetInfoString(int lev)
59{
60 char buff[128];
61 string rs;
62 if (lev > 2) {
63 sprintf(buff, "Histo: NBin=%d XMin=%lg XMax=%lg\n", mHis->NBins(),
64 mHis->XMin(), mHis->XMax());
65 rs += buff;
66 }
[2629]67 sprintf(buff, "Entries= %llu \n",mHis->NEntries());
[2383]68 rs += buff;
69 if (lev > 0) {
70 sprintf(buff, "Overflow= %lg \n", mHis->NOver());
71 rs += buff;
72 sprintf(buff, "Underflow= %lg \n", mHis->NUnder());
73 rs += buff;
74 }
75 sprintf(buff, "Mean= %lg \n", mHis->Mean());
76 rs += buff;
77 sprintf(buff, "Sigma= %lg \n", mHis->Sigma());
78 rs += buff;
79 return rs;
80}
81
82/* --Methode-- */
[3008]83string NOMAdapter_Histo::GetInfoString(vector<string>& opts)
84{
85 string blabla = "Histo1D: nbin binw mean sigma over under nentries ndata";
[3197]86 blabla += " xmin xmax vmin vmax imin imax sum sum2";
[3008]87
88 if(opts.size() == 0) return GetInfoString(3);
89
90 char buff[64];
91 if(opts[0] == "nbin") {
92 sprintf(buff, "%d",mHis->NBins());
93 } else if(opts[0] == "binw") {
94 sprintf(buff, "%lg",mHis->BinWidth());
95 } else if(opts[0] == "mean") {
96 sprintf(buff, "%lg",mHis->Mean());
97 } else if(opts[0] == "sigma") {
98 sprintf(buff, "%lg",mHis->Sigma());
99 } else if(opts[0] == "over") {
100 sprintf(buff, "%lg",mHis->NOver());
101 } else if(opts[0] == "under") {
102 sprintf(buff, "%lg",mHis->NUnder());
103 } else if(opts[0] == "nentries") {
104 sprintf(buff, "%llu",mHis->NEntries());
105 } else if(opts[0] == "ndata") {
106 sprintf(buff, "%lg",mHis->NData());
107 } else if(opts[0] == "xmin") {
108 sprintf(buff, "%lg",mHis->XMin());
109 } else if(opts[0] == "xmax") {
110 sprintf(buff, "%lg",mHis->XMax());
111 } else if(opts[0] == "vmin") {
112 sprintf(buff, "%lg",mHis->VMin());
113 } else if(opts[0] == "vmax") {
114 sprintf(buff, "%lg",mHis->VMax());
115 } else if(opts[0] == "imin") {
116 sprintf(buff, "%d",mHis->IMin());
117 } else if(opts[0] == "imax") {
118 sprintf(buff, "%d",mHis->IMax());
[3197]119 } else if(opts[0] == "sum") {
120 sprintf(buff, "%lg",mHis->Sum());
121 } else if(opts[0] == "sum2") {
122 sprintf(buff, "%lg",mHis->Sum2());
[3008]123 } else {
124 return blabla;
125 }
126 return string(buff);
127}
128
129/* --Methode-- */
[1315]130AnyDataObj* NOMAdapter_Histo::CloneDataObj(bool /*share*/)
[1165]131{
[1090]132mHis->UpdateHisto(); // pour le cas ou c'est un HProf
[463]133HProf * hp = dynamic_cast<HProf *>(mHis);
[2605]134if(hp) return( new HProf(*hp) );
135else return( new Histo(*mHis) );
[463]136}
[295]137
138/* --Methode-- */
139void NOMAdapter_Histo::SavePPF(POutPersist& pos, string const & nom)
140{
141#ifdef SANS_EVOLPLANCK
142// PEIDA-EROS L'histo est lui-meme PPersist
143string tag = nom; // A cause de const
144mHis->Write(pos,0,tag);
145#else
[584]146ObjFileIO<Histo> fio(mHis);
147fio.Write(pos, nom);
[295]148#endif
149}
150
151/* --Methode-- */
[2975]152void NOMAdapter_Histo::Print(ostream& os, int lev)
[295]153{
[2975]154mHis->Show(os);
155if (lev > 0) mHis->Print(60);
[295]156}
157
158/* --Methode-- */
159PIDrawer* NOMAdapter_Histo::GetDrawer(string & dopt)
160{
[1971]161if (typeid(*mHis) == typeid(HProf)) dopt = "fcirclemarker5 " + dopt;
162else dopt = "thinline " + dopt;
[3125]163HistoWrapper* hw = new HistoWrapper(mHis, false); // false: le Wrapper ne delete pas l'objet Histo mHis
164PIHisto * pih = new PIHisto(hw, true); // true: PIHisto delete l'objet HistoWrapper hw
[546]165return( pih );
[295]166}
167
168/* --Methode-- */
[344]169NTupleInterface* NOMAdapter_Histo::GetNTupleInterface(bool& adel)
[295]170{
[344]171adel = true;
[295]172return( new NTupInt_Histo(mHis) );
173}
174
[1207]175/* --Methode-- */
176GeneralFitData* NOMAdapter_Histo::GetGeneralFitData(bool& adel
177 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
178 ,int i1,int i2,int j1,int j2)
179{
180adel = false;
181if(!mHis) return(NULL);
[295]182
[1207]183int nx = mHis->NBins();
184if(nx<=0) return(NULL);
185
186i1 = (i1<0||i1>=nx)? 0: i1;
187i2 = (i2<0||i2>=nx||i2<i1)? nx-1: i2;
188
189GeneralFitData* mGData = new GeneralFitData(1,i2-i1+1,0);
190adel = true;
191
192for(int i=i1;i<=i2;i++) {
193 double x = mHis->BinCenter(i);
194 double f = (*mHis)(i);
195 double e = (mHis->HasErrors())? mHis->Error(i) : 1.;
196 e = GeneralFitData::ComputeError(f,e,errtype,errscale,errmin);
197 mGData->AddData1(x,f,e);
198}
199
200return mGData;
201}
202
203AnyDataObj* NOMAdapter_Histo::FitResidusObj(GeneralFit& mfit)
204{
205Histo* h = NULL;
206#ifdef SANS_EVOLPLANCK
207h = mHis->FitResidus(mfit);
208#else
209h = new Histo(ObjectFitter::FitResidus(*mHis,mfit));
210#endif
211return h;
212}
213
214AnyDataObj* NOMAdapter_Histo::FitFunctionObj(GeneralFit& mfit)
215{
216Histo* h = NULL;
217#ifdef SANS_EVOLPLANCK
218h = mHis->FitFunction(mfit);
219#else
220h = new Histo(ObjectFitter::FitFunction(*mHis,mfit));
221#endif
222return h;
223}
224
[295]225// -------------------------------------------------------------
226
227/* --Methode-- */
228NTupInt_Histo::NTupInt_Histo(Histo* h)
229{
[3052]230mHis = h;
231mHpr = dynamic_cast<HProf *>(h);
[295]232}
233
234/* --Methode-- */
235NTupInt_Histo::~NTupInt_Histo()
236{
237}
238
239/* --Methode-- */
[2683]240sa_size_t NTupInt_Histo::NbLines() const
[295]241{
242return(mHis->NBins());
243}
244
245/* --Methode-- */
[2683]246sa_size_t NTupInt_Histo::NbColumns() const
[295]247{
[3052]248return(5);
[295]249}
250
251/* --Methode-- */
[2683]252r_8* NTupInt_Histo::GetLineD(sa_size_t k) const
[295]253{
254int i;
255if ((k < 0) || (k >= mHis->NBins()))
[3052]256 for(i=0; i<5; i++) mRet[i] = 0.;
[295]257else {
258 mRet[0] = k; mRet[1] = mHis->BinCenter(k);
[3052]259 mRet[2] = (*mHis)(k); mRet[3] = mHis->Error(k);
[3123]260 if(mHpr) mRet[4] = mHpr->SumW(k); else mRet[4] = 0.;
[295]261 }
262return(mRet);
263}
264
265/* --Methode-- */
[326]266string NTupInt_Histo::VarList_C(const char* nx) const
[295]267{
268string nomx;
269if (nx) nomx = nx;
270else nomx = "_xh_";
[3052]271string vardec = "double i,x,val,err,nb; \n";
[295]272vardec += "i = " + nomx + "[0]; x = " + nomx + "[1]; \n";
273vardec += "val = " + nomx + "[2]; err = " + nomx + "[3]; \n";
[3052]274vardec += "nb = " + nomx + "[4]; \n";
[295]275return(vardec);
276}
277
278//-------------------------------------------------------------------------
279// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo2D
280//-------------------------------------------------------------------------
281
282
283/* --Methode-- */
284NOMAdapter_Histo2D::NOMAdapter_Histo2D(Histo2D* o)
285 : NObjMgrAdapter(o)
286{
287mHis = o;
288}
289
290/* --Methode-- */
291NOMAdapter_Histo2D::~NOMAdapter_Histo2D()
292{
293}
294
295/* --Methode-- */
296NObjMgrAdapter* NOMAdapter_Histo2D::Clone(AnyDataObj* o)
297{
298Histo2D* h = dynamic_cast<Histo2D *>(o);
299if (h) return ( new NOMAdapter_Histo2D(h) );
300return ( new NObjMgrAdapter(o) );
301}
302
[463]303/* --Methode-- */
[1165]304string NOMAdapter_Histo2D::GetDataObjType()
[463]305{
[1165]306return ("Histo2D ");
307}
308
309/* --Methode-- */
[1315]310AnyDataObj* NOMAdapter_Histo2D::CloneDataObj(bool /*share*/)
[1165]311{
[463]312return ( new Histo2D(*mHis) );
313}
[295]314
315/* --Methode-- */
316void NOMAdapter_Histo2D::SavePPF(POutPersist& pos, string const & nom)
317{
318#ifdef SANS_EVOLPLANCK
319// PEIDA-EROS L'histo est lui-meme PPersist
320string tag = nom; // A cause de const
321mHis->Write(pos,0,tag);
322#else
[584]323ObjFileIO<Histo2D> fio(mHis);
324fio.Write(pos, nom);
[295]325#endif
326}
327
328/* --Methode-- */
[2975]329void NOMAdapter_Histo2D::Print(ostream& os, int lev)
[295]330{
[2975]331mHis->Show(os);
332if (lev > 0) mHis->Print();
[295]333}
334
335/* --Methode-- */
336PIDrawer* NOMAdapter_Histo2D::GetDrawer(string & dopt)
337{
[3149]338dopt = "thinline " + dopt;
[3145]339return( new PIHisto2D(new Histo2DWrapper(mHis, false), true) );
[295]340}
341
342/* --Methode-- */
343P2DArrayAdapter* NOMAdapter_Histo2D::Get2DArray(string & dopt)
344{
[3145]345Histo2DWrapper* hwp = new Histo2DWrapper(mHis, false);
346return hwp;
[295]347}
348
349/* --Methode-- */
[344]350NTupleInterface* NOMAdapter_Histo2D::GetNTupleInterface(bool& adel)
[295]351{
[344]352adel = true;
[295]353return( new NTupInt_Histo2D(mHis) );
354}
355
356
[1207]357/* --Methode-- */
358GeneralFitData* NOMAdapter_Histo2D::GetGeneralFitData(bool& adel
359 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
360 ,int i1,int i2,int j1,int j2)
361{
362adel = false;
363if(!mHis) return(NULL);
[295]364
[1207]365int nx = mHis->NBinX();
366int ny = mHis->NBinY();
367if(nx<=0 || ny<=0) return(NULL);
368
369i1 = (i1<0||i1>=nx)? 0: i1;
370i2 = (i2<0||i2>=nx||i2<i1)? nx-1: i2;
371j1 = (j1<0||j1>=ny)? 0: j1;
372j2 = (j2<0||j2>=ny||j2<j1)? ny-1: j2;
373
374GeneralFitData* mGData = new GeneralFitData(2,(i2-i1+1)*(j2-j1+1),0);
375adel = true;
376
377for(int i=i1;i<=i2;i++) for(int j=j1;j<=j2;j++) {
378 double x,y; mHis->BinCenter(i,j,x,y);
379 double f = (*mHis)(i,j);
380 double e = (mHis->HasErrors())? mHis->Error(i,j) : 1.;
381 e = GeneralFitData::ComputeError(f,e,errtype,errscale,errmin);
382 mGData->AddData2(x,y,f,e);
383}
384
385return mGData;
386}
387
388AnyDataObj* NOMAdapter_Histo2D::FitResidusObj(GeneralFit& mfit)
389{
390Histo2D* h2 = NULL;
391#ifdef SANS_EVOLPLANCK
392h2 = mHis->FitFunction(mfit);
393#else
394h2 = new Histo2D(ObjectFitter::FitResidus(*mHis,mfit));
395#endif
396return h2;
397}
398
399AnyDataObj* NOMAdapter_Histo2D::FitFunctionObj(GeneralFit& mfit)
400{
401Histo2D* h2 = NULL;
402#ifdef SANS_EVOLPLANCK
403h2 = mHis->FitFunction(mfit);
404#else
405h2 = new Histo2D(ObjectFitter::FitFunction(*mHis,mfit));
406#endif
407return h2;
408}
409
410
[3008]411/* --Methode-- */
412string NOMAdapter_Histo2D::GetInfoString(vector<string>& opts)
413{
414 string blabla = "Histo2D: nbin binw nband nslice nentries ndata xmin xmax";
415 blabla += " ymin ymax vmin vmax ijmin ijmax";
416
417 if(opts.size() == 0) return blabla;
418
419 char buff[128];
420 if(opts[0] == "nbin") {
421 sprintf(buff, "%d %d",mHis->NBinX(),mHis->NBinY());
422 } else if(opts[0] == "binw") {
423 sprintf(buff, "%lg %lg",mHis->WBinX(),mHis->WBinY());
424 } else if(opts[0] == "nband") {
425 sprintf(buff, "%d %d",mHis->NBandX(),mHis->NBandY());
426 } else if(opts[0] == "nslice") {
427 sprintf(buff, "%d %d",mHis->NSliX(),mHis->NSliY());
428 } else if(opts[0] == "nentries") {
429 sprintf(buff, "%d",mHis->NEntries());
430 } else if(opts[0] == "ndata") {
431 sprintf(buff, "%lg",mHis->NData());
432 } else if(opts[0] == "xmin") {
433 sprintf(buff, "%lg",mHis->XMin());
434 } else if(opts[0] == "xmax") {
435 sprintf(buff, "%lg",mHis->XMax());
436 } else if(opts[0] == "ymin") {
437 sprintf(buff, "%lg",mHis->YMin());
438 } else if(opts[0] == "ymax") {
439 sprintf(buff, "%lg",mHis->YMax());
440 } else if(opts[0] == "vmin") {
441 sprintf(buff, "%lg",mHis->VMin());
442 } else if(opts[0] == "vmax") {
443 sprintf(buff, "%lg",mHis->VMax());
444 } else if(opts[0] == "ijmin") {
445 int_4 i,j;
446 mHis->IJMin(i,j);
447 sprintf(buff, "%d %d",i,j);
448 } else if(opts[0] == "ijmax") {
449 int_4 i,j;
450 mHis->IJMax(i,j);
451 sprintf(buff, "%d %d",i,j);
452 } else {
453 return blabla;
454 }
455 return string(buff);
456}
457
[295]458// -------------------------------------------------------------
459
460/* --Methode-- */
461NTupInt_Histo2D::NTupInt_Histo2D(Histo2D* h)
462{
463mHis = h;
464}
465
466/* --Methode-- */
467NTupInt_Histo2D::~NTupInt_Histo2D()
468{
469}
470
471/* --Methode-- */
[2683]472sa_size_t NTupInt_Histo2D::NbLines() const
[295]473{
474return(mHis->NBinX()*mHis->NBinY());
475}
476
477/* --Methode-- */
[2683]478sa_size_t NTupInt_Histo2D::NbColumns() const
[295]479{
480return(6);
481}
482
483/* --Methode-- */
[2683]484r_8* NTupInt_Histo2D::GetLineD(sa_size_t n) const
[295]485{
486int i,j;
[1091]487r_8 f2,f3;
[295]488if ((n < 0) || (n >= mHis->NBinX()*mHis->NBinY()))
489 for(i=0; i<6; i++) mRet[i] = 0.;
490else {
491 i = n%mHis->NBinX(); j = n/mHis->NBinX();
492 mRet[0] = i; mRet[1] = j;
493 mHis->BinCenter(i,j,f2,f3);
494 mRet[2] = f2; mRet[3] = f3;
495 mRet[4] = (*mHis)(i,j); mRet[5] = mHis->Error(i, j);
496 }
497return(mRet);
498}
499
500/* --Methode-- */
[326]501string NTupInt_Histo2D::VarList_C(const char* nx) const
[295]502{
503string nomx;
504if (nx) nomx = nx;
505else nomx = "_xh_";
506string vardec = "double i,j,x,y,val,err; \n";
507vardec += "i = " + nomx + "[0]; j = " + nomx + "[1]; \n";
508vardec += "x = " + nomx + "[2]; y = " + nomx + "[3]; \n";
509vardec += "val = " + nomx + "[4]; err = " + nomx + "[5]; \n";
510return(vardec);
511}
512
513
514
515//-------------------------------------------------------------------------
516// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet NTuple
517//-------------------------------------------------------------------------
518
519/* --Methode-- */
520NOMAdapter_NTuple::NOMAdapter_NTuple(NTuple* o)
521 : NObjMgrAdapter(o)
522{
523mNt = o;
524}
525
526/* --Methode-- */
527NOMAdapter_NTuple::~NOMAdapter_NTuple()
528{
529}
530
531/* --Methode-- */
532NObjMgrAdapter* NOMAdapter_NTuple::Clone(AnyDataObj* o)
533{
534NTuple* nt = dynamic_cast<NTuple *>(o);
535if (nt) return ( new NOMAdapter_NTuple(nt) );
536return ( new NObjMgrAdapter(o) );
537}
538
[1165]539
[463]540/* --Methode-- */
[1165]541string NOMAdapter_NTuple::GetDataObjType()
[463]542{
[1165]543return ("NTuple ");
544}
545
546/* --Methode-- */
[1315]547AnyDataObj* NOMAdapter_NTuple::CloneDataObj(bool /*share*/)
[1165]548{
[463]549return ( new NTuple(*mNt) );
550}
[295]551
[1321]552
553
554/* --Methode-- */
[295]555void NOMAdapter_NTuple::SavePPF(POutPersist& pos, string const & nom)
556{
557#ifdef SANS_EVOLPLANCK
558// PEIDA-EROS L'histo est lui-meme PPersist
559string tag = nom; // A cause de const
560mNt->Write(pos,0,tag);
561#else
[584]562ObjFileIO<NTuple> fio(mNt);
563fio.Write(pos, nom);
[295]564#endif
565}
566
567/* --Methode-- */
[3033]568string NOMAdapter_NTuple::GetInfoString(vector<string>& opts)
569{
570if (opts.size() == 0) return NObjMgrAdapter::GetInfoString(opts);
571char buff[128];
572if (opts[0] == "sizes") {
573 sprintf(buff, "%ld %ld", mNt->NEntry(), mNt->NVar());
574 return string(buff);
575}
576else if ((opts[0] == "nlines") || (opts[0] == "nentry") || (opts[0] == "nrows")) {
577 sprintf(buff, "%ld", mNt->NEntry());
578 return string(buff);
579}
580else if ((opts[0] == "nvar") || (opts[0] == "ncols")) {
581 sprintf(buff, "%ld", mNt->NVar());
582 return string(buff);
583}
[3039]584else return "NTuple.Att: nlines/nentry/nrows nvar/ncols";
[3033]585}
586
587/* --Methode-- */
[2975]588void NOMAdapter_NTuple::Print(ostream& os, int lev)
[295]589{
[2975]590mNt->Show(os);
[3033]591if (lev > 2) os << mNt->Info();
592if (lev > 0) mNt->Print(0, 10*lev);
[295]593}
594
595
596/* --Methode-- */
[344]597NTupleInterface* NOMAdapter_NTuple::GetNTupleInterface(bool& adel)
[295]598{
[344]599adel = false;
600return(mNt);
601// return( new NTupInt_NTuple(mNt) );
[295]602}
603
[361]604//-------------------------------------------------------------------------
605// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet XNTuple
606//-------------------------------------------------------------------------
[295]607
[361]608/* --Methode-- */
609NOMAdapter_XNTuple::NOMAdapter_XNTuple(XNTuple* o)
610 : NObjMgrAdapter(o)
611{
612mNt = o;
613}
614
615/* --Methode-- */
616NOMAdapter_XNTuple::~NOMAdapter_XNTuple()
617{
618}
619
620/* --Methode-- */
621NObjMgrAdapter* NOMAdapter_XNTuple::Clone(AnyDataObj* o)
622{
623XNTuple* nt = dynamic_cast<XNTuple *>(o);
624if (nt) return ( new NOMAdapter_XNTuple(nt) );
625return ( new NObjMgrAdapter(o) );
626}
627
[1165]628/* --Methode-- */
629string NOMAdapter_XNTuple::GetDataObjType()
630{
631return ("XNTuple ");
632}
[361]633
634/* --Methode-- */
[1315]635AnyDataObj* NOMAdapter_XNTuple::CloneDataObj(bool /*share*/)
[1165]636{
637return ( new XNTuple(*mNt) );
638}
639
640/* --Methode-- */
[361]641void NOMAdapter_XNTuple::SavePPF(POutPersist& pos, string const & nom)
642{
643#ifdef SANS_EVOLPLANCK
644// PEIDA-EROS L'histo est lui-meme PPersist
645string tag = nom; // A cause de const
646mNt->Write(pos,0,tag);
647#else
[719]648ObjFileIO<XNTuple> fio(mNt);
649fio.Write(pos, nom);
[361]650#endif
651}
652
653/* --Methode-- */
[2975]654void NOMAdapter_XNTuple::Print(ostream& os, int lev)
[361]655{
656// os << mNt->Info();
657mNt->Show(os);
658}
659
660
661/* --Methode-- */
662NTupleInterface* NOMAdapter_XNTuple::GetNTupleInterface(bool& adel)
663{
664adel = false;
665return(mNt);
666}
[2697]667
668
669//-------------------------------------------------------------------------
670// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet BaseDataTable
671//-------------------------------------------------------------------------
672
673/* --Methode-- */
674NOMAdapter_DataTable::NOMAdapter_DataTable(BaseDataTable* o)
675 : NObjMgrAdapter(o)
676{
677mDT = o;
678}
679
680/* --Methode-- */
681NOMAdapter_DataTable::~NOMAdapter_DataTable()
682{
683}
684
685/* --Methode-- */
686NObjMgrAdapter* NOMAdapter_DataTable::Clone(AnyDataObj* o)
687{
688 BaseDataTable* dt = dynamic_cast<BaseDataTable *>(o);
689 if (dt) return ( new NOMAdapter_DataTable(dt) );
690 else return ( new NObjMgrAdapter(o) );
691}
692
693/* --Methode-- */
694string NOMAdapter_DataTable::GetDataObjType()
695{
696 DataTable* dt = dynamic_cast<DataTable *>(mDT);
697 if (dt) return ("DataTable ");
[2701]698 else {
699 SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
700 if (swdt) return ("SwPPFDataTable ");
701 return ("BaseDataTable ");
702 }
[2697]703}
704
705/* --Methode-- */
706AnyDataObj* NOMAdapter_DataTable::CloneDataObj(bool share)
707{
708 DataTable* dt = dynamic_cast<DataTable *>(mDT);
709 if (dt) return new DataTable(*dt, share);
[2701]710 else {
711 SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
712 if (swdt) cout << "NOMAdapter_DataTable::CloneDataObj() Object type SwPPFDataTable can not be cloned !" << endl;
713 return NULL;
714 }
[2697]715}
716
717
718/* --Methode-- */
719void NOMAdapter_DataTable::SavePPF(POutPersist& pos, string const & nom)
720{
721 DataTable* dt = dynamic_cast<DataTable *>(mDT);
[2701]722 SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
723 if (dt) {
724 ObjFileIO<BaseDataTable> fio(dt);
[2697]725 fio.Write(pos, nom);
726 }
[2701]727 else if (swdt) {
728 ObjFileIO<BaseDataTable> fio(swdt);
729 fio.Write(pos, nom);
730 }
[2697]731 else {
[2701]732 cerr << " NOMAdapter_DataTable::SavePPF() Objet pas de type DataTable/SwPPFDataTable (nom="
[2697]733 << nom << ")" << endl;
734 }
735}
736
737/* --Methode-- */
[3033]738string NOMAdapter_DataTable::GetInfoString(vector<string>& opts)
739{
740if (opts.size() == 0) return NObjMgrAdapter::GetInfoString(opts);
741char buff[128];
742if (opts[0] == "sizes") {
743 sprintf(buff, "%ld %ld", mDT->NEntry(), mDT->NVar());
744 return string(buff);
745}
746else if ((opts[0] == "nlines") || (opts[0] == "nentry") || (opts[0] == "nrows")) {
747 sprintf(buff, "%ld", mDT->NEntry());
748 return string(buff);
749}
750else if ((opts[0] == "nvar") || (opts[0] == "ncols")) {
751 sprintf(buff, "%ld", mDT->NVar());
752 return string(buff);
753}
[3221]754else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info()
755 if (opts.size() < 2) return string("");
756 else if (mDT->Info().HasKey(opts[1]) == false) return string("");
757 else return mDT->Info().GetS(opts[1]);
[3033]758}
[3221]759else if (opts[0] == "row") { // Pour recuperer une ligne de la table
760 if (opts.size() < 2) return string("");
761 long num = atol(opts[1].c_str());
762 return mDT->TableRowToString(num, true);
763}
[3033]764
[3221]765else return "BaseDataTable.Att: nlines/nentry/nrows nvar/ncols info.varname row.num ";
766}
767
[3033]768/* --Methode-- */
[2975]769void NOMAdapter_DataTable::Print(ostream& os, int lev)
[2697]770{
771mDT->Show(os);
[2975]772if (lev < 1) return;
773if (lev < 5) mDT->Print(os, 0, lev*10);
774else mDT->Print(os);
[2697]775}
776
777
778/* --Methode-- */
779NTupleInterface* NOMAdapter_DataTable::GetNTupleInterface(bool& adel)
780{
781adel = false;
782return(mDT);
783}
Note: See TracBrowser for help on using the repository browser.