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

Last change on this file since 3572 was 3572, checked in by cmv, 17 years ago

char* -> const char* pour regler les problemes de deprecated string const... + comparaison unsigned signed + suppression EVOL_PLANCK rz+cmv 07/02/2009

File size: 16.8 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#include "strutilxx.h"
17
18#include "objfitter.h"
19// Pour les DataTable ( Depuis Avril 2005 )
20#include "datatable.h"
21#include "swppfdtable.h"
22
23//-----------------------------------------------------------------------------
24// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo / HProf
25//-----------------------------------------------------------------------------
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
47/* --Methode-- */
48string NOMAdapter_Histo::GetDataObjType()
49{
50HProf * hp = dynamic_cast<HProf *>(mHis);
51if(hp) return("HProf ");
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 sum sum2";
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 if(opts[0] == "sum") {
118 sprintf(buff, "%lg",mHis->Sum());
119 } else if(opts[0] == "sum2") {
120 sprintf(buff, "%lg",mHis->Sum2());
121 } else {
122 return blabla;
123 }
124 return string(buff);
125}
126
127/* --Methode-- */
128AnyDataObj* NOMAdapter_Histo::CloneDataObj(bool /*share*/)
129{
130mHis->UpdateHisto(); // pour le cas ou c'est un HProf
131HProf * hp = dynamic_cast<HProf *>(mHis);
132if(hp) return( new HProf(*hp) );
133else return( new Histo(*mHis) );
134}
135
136/* --Methode-- */
137void NOMAdapter_Histo::SavePPF(POutPersist& pos, string const & nom)
138{
139ObjFileIO<Histo> fio(mHis);
140fio.Write(pos, nom);
141}
142
143/* --Methode-- */
144void NOMAdapter_Histo::Print(ostream& os, int lev)
145{
146mHis->Show(os);
147if (lev > 0) mHis->Print(60);
148}
149
150/* --Methode-- */
151PIDrawer* NOMAdapter_Histo::GetDrawer(string & dopt)
152{
153if (typeid(*mHis) == typeid(HProf)) dopt = "fcirclemarker5 " + dopt;
154else dopt = "thinline " + dopt;
155HistoWrapper* hw = new HistoWrapper(mHis, false); // false: le Wrapper ne delete pas l'objet Histo mHis
156PIHisto * pih = new PIHisto(hw, true); // true: PIHisto delete l'objet HistoWrapper hw
157return( pih );
158}
159
160/* --Methode-- */
161NTupleInterface* NOMAdapter_Histo::GetNTupleInterface(bool& adel)
162{
163adel = true;
164return( new NTupInt_Histo(mHis) );
165}
166
167/* --Methode-- */
168GeneralFitData* NOMAdapter_Histo::GetGeneralFitData(bool& adel
169 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
170 ,int i1,int i2,int j1,int j2)
171{
172adel = false;
173if(!mHis) return(NULL);
174
175int nx = mHis->NBins();
176if(nx<=0) return(NULL);
177
178i1 = (i1<0||i1>=nx)? 0: i1;
179i2 = (i2<0||i2>=nx||i2<i1)? nx-1: i2;
180
181GeneralFitData* mGData = new GeneralFitData(1,i2-i1+1,0);
182adel = true;
183
184for(int i=i1;i<=i2;i++) {
185 double x = mHis->BinCenter(i);
186 double f = (*mHis)(i);
187 double e = (mHis->HasErrors())? mHis->Error(i) : 1.;
188 e = GeneralFitData::ComputeError(f,e,errtype,errscale,errmin);
189 mGData->AddData1(x,f,e);
190}
191
192return mGData;
193}
194
195AnyDataObj* NOMAdapter_Histo::FitResidusObj(GeneralFit& mfit)
196{
197Histo* h = NULL;
198h = new Histo(ObjectFitter::FitResidus(*mHis,mfit));
199return h;
200}
201
202AnyDataObj* NOMAdapter_Histo::FitFunctionObj(GeneralFit& mfit)
203{
204Histo* h = NULL;
205h = new Histo(ObjectFitter::FitFunction(*mHis,mfit));
206return h;
207}
208
209// -------------------------------------------------------------
210
211/* --Methode-- */
212NTupInt_Histo::NTupInt_Histo(Histo* h)
213{
214mHis = h;
215mHpr = dynamic_cast<HProf *>(h);
216}
217
218/* --Methode-- */
219NTupInt_Histo::~NTupInt_Histo()
220{
221}
222
223/* --Methode-- */
224sa_size_t NTupInt_Histo::NbLines() const
225{
226return(mHis->NBins());
227}
228
229/* --Methode-- */
230sa_size_t NTupInt_Histo::NbColumns() const
231{
232return(5);
233}
234
235/* --Methode-- */
236r_8* NTupInt_Histo::GetLineD(sa_size_t k) const
237{
238int i;
239if ((k < 0) || (k >= mHis->NBins()))
240 for(i=0; i<5; i++) mRet[i] = 0.;
241else {
242 mRet[0] = k; mRet[1] = mHis->BinCenter(k);
243 mRet[2] = (*mHis)(k); mRet[3] = mHis->Error(k);
244 if(mHpr) mRet[4] = mHpr->SumW(k); else mRet[4] = 0.;
245 }
246return(mRet);
247}
248
249/* --Methode-- */
250string NTupInt_Histo::VarList_C(const char* nx) const
251{
252string nomx;
253if (nx) nomx = nx;
254else nomx = "_xh_";
255string vardec = "double i,x,val,err,nb; \n";
256vardec += "i = " + nomx + "[0]; x = " + nomx + "[1]; \n";
257vardec += "val = " + nomx + "[2]; err = " + nomx + "[3]; \n";
258vardec += "nb = " + nomx + "[4]; \n";
259return(vardec);
260}
261
262//-------------------------------------------------------------------------
263// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo2D
264//-------------------------------------------------------------------------
265
266
267/* --Methode-- */
268NOMAdapter_Histo2D::NOMAdapter_Histo2D(Histo2D* o)
269 : NObjMgrAdapter(o)
270{
271mHis = o;
272}
273
274/* --Methode-- */
275NOMAdapter_Histo2D::~NOMAdapter_Histo2D()
276{
277}
278
279/* --Methode-- */
280NObjMgrAdapter* NOMAdapter_Histo2D::Clone(AnyDataObj* o)
281{
282Histo2D* h = dynamic_cast<Histo2D *>(o);
283if (h) return ( new NOMAdapter_Histo2D(h) );
284return ( new NObjMgrAdapter(o) );
285}
286
287/* --Methode-- */
288string NOMAdapter_Histo2D::GetDataObjType()
289{
290return ("Histo2D ");
291}
292
293/* --Methode-- */
294AnyDataObj* NOMAdapter_Histo2D::CloneDataObj(bool /*share*/)
295{
296return ( new Histo2D(*mHis) );
297}
298
299/* --Methode-- */
300void NOMAdapter_Histo2D::SavePPF(POutPersist& pos, string const & nom)
301{
302ObjFileIO<Histo2D> fio(mHis);
303fio.Write(pos, nom);
304}
305
306/* --Methode-- */
307void NOMAdapter_Histo2D::Print(ostream& os, int lev)
308{
309mHis->Show(os);
310if (lev > 0) mHis->Print();
311}
312
313/* --Methode-- */
314PIDrawer* NOMAdapter_Histo2D::GetDrawer(string & dopt)
315{
316dopt = "thinline " + dopt;
317return( new PIHisto2D(new Histo2DWrapper(mHis, false), true) );
318}
319
320/* --Methode-- */
321P2DArrayAdapter* NOMAdapter_Histo2D::Get2DArray(string & dopt)
322{
323Histo2DWrapper* hwp = new Histo2DWrapper(mHis, false);
324return hwp;
325}
326
327/* --Methode-- */
328NTupleInterface* NOMAdapter_Histo2D::GetNTupleInterface(bool& adel)
329{
330adel = true;
331return( new NTupInt_Histo2D(mHis) );
332}
333
334
335/* --Methode-- */
336GeneralFitData* NOMAdapter_Histo2D::GetGeneralFitData(bool& adel
337 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
338 ,int i1,int i2,int j1,int j2)
339{
340adel = false;
341if(!mHis) return(NULL);
342
343int nx = mHis->NBinX();
344int ny = mHis->NBinY();
345if(nx<=0 || ny<=0) return(NULL);
346
347i1 = (i1<0||i1>=nx)? 0: i1;
348i2 = (i2<0||i2>=nx||i2<i1)? nx-1: i2;
349j1 = (j1<0||j1>=ny)? 0: j1;
350j2 = (j2<0||j2>=ny||j2<j1)? ny-1: j2;
351
352GeneralFitData* mGData = new GeneralFitData(2,(i2-i1+1)*(j2-j1+1),0);
353adel = true;
354
355for(int i=i1;i<=i2;i++) for(int j=j1;j<=j2;j++) {
356 double x,y; mHis->BinCenter(i,j,x,y);
357 double f = (*mHis)(i,j);
358 double e = (mHis->HasErrors())? mHis->Error(i,j) : 1.;
359 e = GeneralFitData::ComputeError(f,e,errtype,errscale,errmin);
360 mGData->AddData2(x,y,f,e);
361}
362
363return mGData;
364}
365
366AnyDataObj* NOMAdapter_Histo2D::FitResidusObj(GeneralFit& mfit)
367{
368Histo2D* h2 = NULL;
369h2 = new Histo2D(ObjectFitter::FitResidus(*mHis,mfit));
370return h2;
371}
372
373AnyDataObj* NOMAdapter_Histo2D::FitFunctionObj(GeneralFit& mfit)
374{
375Histo2D* h2 = NULL;
376h2 = new Histo2D(ObjectFitter::FitFunction(*mHis,mfit));
377return h2;
378}
379
380
381/* --Methode-- */
382string NOMAdapter_Histo2D::GetInfoString(vector<string>& opts)
383{
384 string blabla = "Histo2D: nbin binw nband nslice nentries ndata xmin xmax";
385 blabla += " ymin ymax vmin vmax ijmin ijmax";
386
387 if(opts.size() == 0) return blabla;
388
389 char buff[128];
390 if(opts[0] == "nbin") {
391 sprintf(buff, "%d %d",mHis->NBinX(),mHis->NBinY());
392 } else if(opts[0] == "binw") {
393 sprintf(buff, "%lg %lg",mHis->WBinX(),mHis->WBinY());
394 } else if(opts[0] == "nband") {
395 sprintf(buff, "%d %d",mHis->NBandX(),mHis->NBandY());
396 } else if(opts[0] == "nslice") {
397 sprintf(buff, "%d %d",mHis->NSliX(),mHis->NSliY());
398 } else if(opts[0] == "nentries") {
399 sprintf(buff, "%d",mHis->NEntries());
400 } else if(opts[0] == "ndata") {
401 sprintf(buff, "%lg",mHis->NData());
402 } else if(opts[0] == "xmin") {
403 sprintf(buff, "%lg",mHis->XMin());
404 } else if(opts[0] == "xmax") {
405 sprintf(buff, "%lg",mHis->XMax());
406 } else if(opts[0] == "ymin") {
407 sprintf(buff, "%lg",mHis->YMin());
408 } else if(opts[0] == "ymax") {
409 sprintf(buff, "%lg",mHis->YMax());
410 } else if(opts[0] == "vmin") {
411 sprintf(buff, "%lg",mHis->VMin());
412 } else if(opts[0] == "vmax") {
413 sprintf(buff, "%lg",mHis->VMax());
414 } else if(opts[0] == "ijmin") {
415 int_4 i,j;
416 mHis->IJMin(i,j);
417 sprintf(buff, "%d %d",i,j);
418 } else if(opts[0] == "ijmax") {
419 int_4 i,j;
420 mHis->IJMax(i,j);
421 sprintf(buff, "%d %d",i,j);
422 } else {
423 return blabla;
424 }
425 return string(buff);
426}
427
428// -------------------------------------------------------------
429
430/* --Methode-- */
431NTupInt_Histo2D::NTupInt_Histo2D(Histo2D* h)
432{
433mHis = h;
434}
435
436/* --Methode-- */
437NTupInt_Histo2D::~NTupInt_Histo2D()
438{
439}
440
441/* --Methode-- */
442sa_size_t NTupInt_Histo2D::NbLines() const
443{
444return(mHis->NBinX()*mHis->NBinY());
445}
446
447/* --Methode-- */
448sa_size_t NTupInt_Histo2D::NbColumns() const
449{
450return(6);
451}
452
453/* --Methode-- */
454r_8* NTupInt_Histo2D::GetLineD(sa_size_t n) const
455{
456int i,j;
457r_8 f2,f3;
458if ((n < 0) || (n >= mHis->NBinX()*mHis->NBinY()))
459 for(i=0; i<6; i++) mRet[i] = 0.;
460else {
461 i = n%mHis->NBinX(); j = n/mHis->NBinX();
462 mRet[0] = i; mRet[1] = j;
463 mHis->BinCenter(i,j,f2,f3);
464 mRet[2] = f2; mRet[3] = f3;
465 mRet[4] = (*mHis)(i,j); mRet[5] = mHis->Error(i, j);
466 }
467return(mRet);
468}
469
470/* --Methode-- */
471string NTupInt_Histo2D::VarList_C(const char* nx) const
472{
473string nomx;
474if (nx) nomx = nx;
475else nomx = "_xh_";
476string vardec = "double i,j,x,y,val,err; \n";
477vardec += "i = " + nomx + "[0]; j = " + nomx + "[1]; \n";
478vardec += "x = " + nomx + "[2]; y = " + nomx + "[3]; \n";
479vardec += "val = " + nomx + "[4]; err = " + nomx + "[5]; \n";
480return(vardec);
481}
482
483
484
485//-------------------------------------------------------------------------
486// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet NTuple
487//-------------------------------------------------------------------------
488
489/* --Methode-- */
490NOMAdapter_NTuple::NOMAdapter_NTuple(NTuple* o)
491 : NObjMgrAdapter(o)
492{
493mNt = o;
494}
495
496/* --Methode-- */
497NOMAdapter_NTuple::~NOMAdapter_NTuple()
498{
499}
500
501/* --Methode-- */
502NObjMgrAdapter* NOMAdapter_NTuple::Clone(AnyDataObj* o)
503{
504NTuple* nt = dynamic_cast<NTuple *>(o);
505if (nt) return ( new NOMAdapter_NTuple(nt) );
506return ( new NObjMgrAdapter(o) );
507}
508
509
510/* --Methode-- */
511string NOMAdapter_NTuple::GetDataObjType()
512{
513return ("NTuple ");
514}
515
516/* --Methode-- */
517AnyDataObj* NOMAdapter_NTuple::CloneDataObj(bool /*share*/)
518{
519return ( new NTuple(*mNt) );
520}
521
522
523
524/* --Methode-- */
525void NOMAdapter_NTuple::SavePPF(POutPersist& pos, string const & nom)
526{
527ObjFileIO<NTuple> fio(mNt);
528fio.Write(pos, nom);
529}
530
531/* --Methode-- */
532string NOMAdapter_NTuple::GetInfoString(vector<string>& opts)
533{
534if (opts.size() == 0) return NObjMgrAdapter::GetInfoString(opts);
535char buff[128];
536if (opts[0] == "sizes") {
537 sprintf(buff, "%ld %ld", (long)mNt->NEntry(), (long)mNt->NVar());
538 return string(buff);
539}
540else if ((opts[0] == "nlines") || (opts[0] == "nentry") || (opts[0] == "nrows")) {
541 sprintf(buff, "%ld", (long)mNt->NEntry());
542 return string(buff);
543}
544else if ((opts[0] == "nvar") || (opts[0] == "ncols")) {
545 sprintf(buff, "%ld", (long)mNt->NVar());
546 return string(buff);
547}
548else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info()
549 if (opts.size() < 2) return string("");
550 else if (mNt->Info().HasKey(opts[1]) == false) return string("");
551 else return mNt->Info().GetS(opts[1]);
552}
553else if (opts[0] == "row") { // Pour recuperer une ligne de la table
554 if (opts.size() < 2) return string("");
555 sa_size_t num = atol(opts[1].c_str());
556 return mNt->LineToString(num);
557}
558else return "NTuple.Att: nlines/nentry/nrows nvar/ncols info.varname row.num";
559}
560
561/* --Methode-- */
562void NOMAdapter_NTuple::Print(ostream& os, int lev)
563{
564mNt->Show(os);
565if (lev > 2) os << mNt->Info();
566if (lev > 0) mNt->Print(0, 10*lev);
567}
568
569
570/* --Methode-- */
571NTupleInterface* NOMAdapter_NTuple::GetNTupleInterface(bool& adel)
572{
573adel = false;
574return(mNt);
575// return( new NTupInt_NTuple(mNt) );
576}
577
578
579//-------------------------------------------------------------------------
580// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet BaseDataTable
581//-------------------------------------------------------------------------
582
583/* --Methode-- */
584NOMAdapter_DataTable::NOMAdapter_DataTable(BaseDataTable* o)
585 : NObjMgrAdapter(o)
586{
587mDT = o;
588}
589
590/* --Methode-- */
591NOMAdapter_DataTable::~NOMAdapter_DataTable()
592{
593}
594
595/* --Methode-- */
596NObjMgrAdapter* NOMAdapter_DataTable::Clone(AnyDataObj* o)
597{
598 BaseDataTable* dt = dynamic_cast<BaseDataTable *>(o);
599 if (dt) return ( new NOMAdapter_DataTable(dt) );
600 else return ( new NObjMgrAdapter(o) );
601}
602
603/* --Methode-- */
604string NOMAdapter_DataTable::GetDataObjType()
605{
606 DataTable* dt = dynamic_cast<DataTable *>(mDT);
607 if (dt) return ("DataTable ");
608 else {
609 SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
610 if (swdt) return ("SwPPFDataTable ");
611 return ("BaseDataTable ");
612 }
613}
614
615/* --Methode-- */
616AnyDataObj* NOMAdapter_DataTable::CloneDataObj(bool share)
617{
618 DataTable* dt = dynamic_cast<DataTable *>(mDT);
619 if (dt) return new DataTable(*dt, share);
620 else {
621 SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
622 if (swdt) cout << "NOMAdapter_DataTable::CloneDataObj() Object type SwPPFDataTable can not be cloned !" << endl;
623 return NULL;
624 }
625}
626
627
628/* --Methode-- */
629void NOMAdapter_DataTable::SavePPF(POutPersist& pos, string const & nom)
630{
631 DataTable* dt = dynamic_cast<DataTable *>(mDT);
632 SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
633 if (dt) {
634 ObjFileIO<BaseDataTable> fio(dt);
635 fio.Write(pos, nom);
636 }
637 else if (swdt) {
638 ObjFileIO<BaseDataTable> fio(swdt);
639 fio.Write(pos, nom);
640 }
641 else {
642 cerr << " NOMAdapter_DataTable::SavePPF() Objet pas de type DataTable/SwPPFDataTable (nom="
643 << nom << ")" << endl;
644 }
645}
646
647/* --Methode-- */
648string NOMAdapter_DataTable::GetInfoString(vector<string>& opts)
649{
650if (opts.size() == 0) return NObjMgrAdapter::GetInfoString(opts);
651char buff[128];
652if (opts[0] == "sizes") {
653 sprintf(buff, "%ld %ld", (long)mDT->NEntry(), (long)mDT->NVar());
654 return string(buff);
655}
656else if ((opts[0] == "nlines") || (opts[0] == "nentry") || (opts[0] == "nrows")) {
657 sprintf(buff, "%ld", (long)mDT->NEntry());
658 return string(buff);
659}
660else if ((opts[0] == "nvar") || (opts[0] == "ncols")) {
661 sprintf(buff, "%ld", (long)mDT->NVar());
662 return string(buff);
663}
664else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info()
665 if (opts.size() < 2) return string("");
666 else if (mDT->Info().HasKey(opts[1]) == false) return string("");
667 else return mDT->Info().GetS(opts[1]);
668}
669else if (opts[0] == "row") { // Pour recuperer une ligne de la table
670 if (opts.size() < 2) return string("");
671 long num = atol(opts[1].c_str());
672 return mDT->TableRowToString(num, true);
673}
674
675else return "BaseDataTable.Att: nlines/nentry/nrows nvar/ncols info.varname row.num";
676}
677
678/* --Methode-- */
679void NOMAdapter_DataTable::Print(ostream& os, int lev)
680{
681mDT->Show(os);
682if (lev < 1) return;
683if (lev < 5) mDT->Print(os, 0, lev*10);
684else mDT->Print(os);
685}
686
687
688/* --Methode-- */
689NTupleInterface* NOMAdapter_DataTable::GetNTupleInterface(bool& adel)
690{
691adel = false;
692return(mDT);
693}
Note: See TracBrowser for help on using the repository browser.