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

Last change on this file since 3149 was 3149, checked in by cmv, 19 years ago

suite adaptation travail reza 2D et adapteur + adaptation aux modifs HistoErr cmv 18/01/2007

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