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

Last change on this file since 3132 was 3125, checked in by ansari, 19 years ago

1/ Introduction d'une classe P1DHistoWrapper (fichier phistwrapper.h) pour rendre PIHisto independant de SOPHYA et des objets Histo, HistErr, HProf ...
2/ Ecriture du wrapper/adaptateur pour SOPHYA::Histo,HProf,HistErr
3/ mise en conformite des ObjAdapter piapp pour Histo,HistErr, chgt numero de version

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