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

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

1/ Petites modifs ds PIHisto et le P1DHistoWrapper - en particulier decodage des options et choix renvoi BinContent/Error/NEntries
2/ Codage Wrapper pour Histo-2D et modifs PIHisto2D
3/ Suppression des adaptateurs de tableaux PI des Histos2D ds pipodrw.h .cc, les
Wrappers d'histos heritant de P1D,P2DArrayAdapter
4/ Mise a jour Makefile et smakefile

Reza , 18/01/2007

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