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

Last change on this file since 3197 was 3197, checked in by cmv, 18 years ago

add info sum,sum2,sumn cmv 03/04/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";
[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}
[3039]754else return "BaseDataTable.Att: nlines/nentry/nrows nvar/ncols";
[3033]755}
756
757/* --Methode-- */
[2975]758void NOMAdapter_DataTable::Print(ostream& os, int lev)
[2697]759{
760mDT->Show(os);
[2975]761if (lev < 1) return;
762if (lev < 5) mDT->Print(os, 0, lev*10);
763else mDT->Print(os);
[2697]764}
765
766
767/* --Methode-- */
768NTupleInterface* NOMAdapter_DataTable::GetNTupleInterface(bool& adel)
769{
770adel = false;
771return(mDT);
772}
Note: See TracBrowser for help on using the repository browser.