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

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

modif HistoErr Histo2DErr cmv 10/01/07

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