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

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

modifs mineures et intro POHe2DAdapter cmv 17/01/2007

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