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

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

nombre entrees ds bin HProf/HistoErr ds Ntuple Interface cmv 12/8/2006

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