source: Sophya/trunk/SophyaPI/PIext/nomherradapter.cc@ 3153

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

Adaptation+petites corrections, suite gestion P1D,P2DArrayAdapter::DecodeOptionString() ::OptionToString() par PIImage et PISurfDrawer, Reza 19/01/2007

File size: 8.4 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 "nomherradapter.h"
9#include "pihisto.h" /* Traceur pour Histo1D */
10#include "pihisto2d.h" /* Traceur pour Histo2D */
11#include "sohiswrap.h" /* Wrapper pour histos (HistoErr Histo2DErr ...) */
12
13#include "pipodrw.h"
14
15#include "servnobjm.h"
16
17#include "objfitter.h"
18#include "strutilxx.h"
19
20//-----------------------------------------------------------------------------
21// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet HistoErr
22//-----------------------------------------------------------------------------
23
24/* --Methode-- */
25NOMAdapter_HistoErr::NOMAdapter_HistoErr(HistoErr* o)
26 : NObjMgrAdapter(o)
27{
28mHerr = o;
29}
30
31/* --Methode-- */
32NOMAdapter_HistoErr::~NOMAdapter_HistoErr()
33{
34}
35
36/* --Methode-- */
37NObjMgrAdapter* NOMAdapter_HistoErr::Clone(AnyDataObj* o)
38{
39HistoErr* h = dynamic_cast<HistoErr *>(o);
40if (h) return ( new NOMAdapter_HistoErr(h) );
41return ( new NObjMgrAdapter(o) );
42}
43
44/* --Methode-- */
45string NOMAdapter_HistoErr::GetDataObjType()
46{
47return("HistoErr ");
48}
49
50/* --Methode-- */
51string NOMAdapter_HistoErr::GetInfoString(int lev)
52{
53 char buff[128];
54 string rs;
55 if (lev > 2) {
56 sprintf(buff, "HistoErr: NBin=%d XMin=%lg XMax=%lg\n", mHerr->NBins(),
57 mHerr->XMin(), mHerr->XMax());
58 rs += buff;
59 }
60 return rs;
61}
62
63/* --Methode-- */
64string NOMAdapter_HistoErr::GetInfoString(vector<string>& opts)
65{
66 string blabla = "HistoErr: nbin binw xmin xmax";
67
68 if(opts.size() == 0) return GetInfoString(3);
69
70 char buff[64];
71 if(opts[0] == "nbin") {
72 sprintf(buff, "%d",mHerr->NBins());
73 } else if(opts[0] == "binw") {
74 sprintf(buff, "%lg",mHerr->BinWidth());
75 } else if(opts[0] == "xmin") {
76 sprintf(buff, "%lg",mHerr->XMin());
77 } else if(opts[0] == "xmax") {
78 sprintf(buff, "%lg",mHerr->XMax());
79 } else {
80 return blabla;
81 }
82 return string(buff);
83}
84
85/* --Methode-- */
86AnyDataObj* NOMAdapter_HistoErr::CloneDataObj(bool /*share*/)
87{
88 return( new HistoErr(*mHerr) );
89}
90
91/* --Methode-- */
92void NOMAdapter_HistoErr::SavePPF(POutPersist& pos, string const & nom)
93{
94ObjFileIO<HistoErr> fio(mHerr);
95fio.Write(pos, nom);
96}
97
98/* --Methode-- */
99void NOMAdapter_HistoErr::Print(ostream& os, int lev)
100{
101mHerr->Show(os);
102}
103
104/* --Methode-- */
105PIDrawer* NOMAdapter_HistoErr::GetDrawer(string & dopt)
106{
107dopt = "thinline " + dopt;
108HistoErrWrapper* hw = new HistoErrWrapper(mHerr, false); // false: le Wrapper ne delete pas l'objet mHerr
109PIHisto * pih = new PIHisto(hw, true); // true: PIHisto delete l'objet HistoErrWrapper hw
110return( pih );
111}
112
113/* --Methode-- */
114NTupleInterface* NOMAdapter_HistoErr::GetNTupleInterface(bool& adel)
115{
116adel = true;
117return( new NTupInt_HistoErr(mHerr) );
118}
119
120/* --Methode-- */
121GeneralFitData* NOMAdapter_HistoErr::GetGeneralFitData(bool& adel
122 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
123 ,int i1,int i2,int j1,int j2)
124{
125 cout<<"NOMAdapter_HistoErr::GetGeneralFitData: NOT IMPLEMENTED"<<endl;
126 return NULL;
127}
128
129AnyDataObj* NOMAdapter_HistoErr::FitResidusObj(GeneralFit& mfit)
130{
131 cout<<"NOMAdapter_HistoErr::FitResidusObj: NOT IMPLEMENTED"<<endl;
132 return NULL;
133}
134
135AnyDataObj* NOMAdapter_HistoErr::FitFunctionObj(GeneralFit& mfit)
136{
137 cout<<"NOMAdapter_HistoErr::FitFunctionObj: NOT IMPLEMENTED"<<endl;
138 return NULL;
139}
140
141// -------------------------------------------------------------
142
143/* --Methode-- */
144NTupInt_HistoErr::NTupInt_HistoErr(HistoErr* h)
145{
146mHerr = h;
147}
148
149/* --Methode-- */
150NTupInt_HistoErr::~NTupInt_HistoErr()
151{
152}
153
154/* --Methode-- */
155sa_size_t NTupInt_HistoErr::NbLines() const
156{
157return(mHerr->NBins());
158}
159
160/* --Methode-- */
161sa_size_t NTupInt_HistoErr::NbColumns() const
162{
163return(5);
164}
165
166/* --Methode-- */
167r_8* NTupInt_HistoErr::GetLineD(sa_size_t k) const
168{
169 int i;
170 if(k<0 || k>=mHerr->NBins()) {
171 for(i=0; i<5; i++) mRet[i] = 0.;
172 } else {
173 mRet[0] = k; mRet[1] = mHerr->BinCenter(k);
174 mRet[2] = (*mHerr)(k); mRet[3] = mHerr->Error2(k);
175 mRet[4] = mHerr->NEntBin(k);
176 }
177 return(mRet);
178}
179
180/* --Methode-- */
181string NTupInt_HistoErr::VarList_C(const char* nx) const
182{
183string nomx;
184if (nx) nomx = nx;
185else nomx = "_xh_";
186string vardec = "double i,x,val,err2,nb; \n";
187vardec += "i = " + nomx + "[0]; x = " + nomx + "[1]; \n";
188vardec += "val = " + nomx + "[2]; err2 = " + nomx + "[3]; \n";
189vardec += "nb = " + nomx + "[4]; \n";
190return(vardec);
191}
192
193//-------------------------------------------------------------------------
194// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo2DErr
195//-------------------------------------------------------------------------
196
197
198/* --Methode-- */
199NOMAdapter_Histo2DErr::NOMAdapter_Histo2DErr(Histo2DErr* o)
200 : NObjMgrAdapter(o)
201{
202mHerr = o;
203}
204
205/* --Methode-- */
206NOMAdapter_Histo2DErr::~NOMAdapter_Histo2DErr()
207{
208}
209
210/* --Methode-- */
211NObjMgrAdapter* NOMAdapter_Histo2DErr::Clone(AnyDataObj* o)
212{
213Histo2DErr* h = dynamic_cast<Histo2DErr *>(o);
214if (h) return ( new NOMAdapter_Histo2DErr(h) );
215return ( new NObjMgrAdapter(o) );
216}
217
218/* --Methode-- */
219string NOMAdapter_Histo2DErr::GetDataObjType()
220{
221return ("Histo2DErr ");
222}
223
224/* --Methode-- */
225AnyDataObj* NOMAdapter_Histo2DErr::CloneDataObj(bool /*share*/)
226{
227return ( new Histo2DErr(*mHerr) );
228}
229
230/* --Methode-- */
231void NOMAdapter_Histo2DErr::SavePPF(POutPersist& pos, string const & nom)
232{
233ObjFileIO<Histo2DErr> fio(mHerr);
234fio.Write(pos, nom);
235}
236
237/* --Methode-- */
238void NOMAdapter_Histo2DErr::Print(ostream& os, int lev)
239{
240mHerr->Show(os);
241}
242
243/* --Methode-- */
244PIDrawer* NOMAdapter_Histo2DErr::GetDrawer(string & dopt)
245{
246dopt = "thinline " + dopt;
247return( new PIHisto2D(new Histo2DErrWrapper(mHerr, false), true) );
248}
249
250/* --Methode-- */
251P2DArrayAdapter* NOMAdapter_Histo2DErr::Get2DArray(string & dopt)
252{
253Histo2DErrWrapper* hwp = new Histo2DErrWrapper(mHerr, false);
254return hwp;
255}
256
257/* --Methode-- */
258NTupleInterface* NOMAdapter_Histo2DErr::GetNTupleInterface(bool& adel)
259{
260adel = true;
261return( new NTupInt_Histo2DErr(mHerr) );
262}
263
264
265/* --Methode-- */
266GeneralFitData* NOMAdapter_Histo2DErr::GetGeneralFitData(bool& adel
267 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
268 ,int i1,int i2,int j1,int j2)
269{
270 cout<<"NOMAdapter_Histo2DErr::GetGeneralFitData: NOT IMPLEMENTED"<<endl;
271 return NULL;
272}
273
274AnyDataObj* NOMAdapter_Histo2DErr::FitResidusObj(GeneralFit& mfit)
275{
276 cout<<"NOMAdapter_Histo2DErr::FitResidusObj: NOT IMPLEMENTED"<<endl;
277 return NULL;
278}
279
280AnyDataObj* NOMAdapter_Histo2DErr::FitFunctionObj(GeneralFit& mfit)
281{
282 cout<<"NOMAdapter_Histo2DErr::FitFunctionObj: NOT IMPLEMENTED"<<endl;
283 return NULL;
284}
285
286
287/* --Methode-- */
288string NOMAdapter_Histo2DErr::GetInfoString(vector<string>& opts)
289{
290 string blabla = "Histo2DErr: nbin binw xmin xmax ymin ymax";
291
292 if(opts.size() == 0) return blabla;
293
294 char buff[128];
295 if(opts[0] == "nbin") {
296 sprintf(buff, "%d %d",mHerr->NBinX(),mHerr->NBinY());
297 } else if(opts[0] == "binw") {
298 sprintf(buff, "%lg %lg",mHerr->WBinX(),mHerr->WBinY());
299 } else if(opts[0] == "xmin") {
300 sprintf(buff, "%lg",mHerr->XMin());
301 } else if(opts[0] == "xmax") {
302 sprintf(buff, "%lg",mHerr->XMax());
303 } else if(opts[0] == "ymin") {
304 sprintf(buff, "%lg",mHerr->YMin());
305 } else if(opts[0] == "ymax") {
306 sprintf(buff, "%lg",mHerr->YMax());
307 } else {
308 return blabla;
309 }
310 return string(buff);
311}
312
313// -------------------------------------------------------------
314
315/* --Methode-- */
316NTupInt_Histo2DErr::NTupInt_Histo2DErr(Histo2DErr* h)
317{
318mHerr = h;
319}
320
321/* --Methode-- */
322NTupInt_Histo2DErr::~NTupInt_Histo2DErr()
323{
324}
325
326/* --Methode-- */
327sa_size_t NTupInt_Histo2DErr::NbLines() const
328{
329return(mHerr->NBinX()*mHerr->NBinY());
330}
331
332/* --Methode-- */
333sa_size_t NTupInt_Histo2DErr::NbColumns() const
334{
335return(6);
336}
337
338/* --Methode-- */
339r_8* NTupInt_Histo2DErr::GetLineD(sa_size_t n) const
340{
341int i,j;
342r_8 f2,f3;
343if(n<0 || n>=mHerr->NBinX()*mHerr->NBinY())
344 for(i=0; i<7; i++) mRet[i] = 0.;
345else {
346 i = n%mHerr->NBinX(); j = n/mHerr->NBinX();
347 mRet[0] = i; mRet[1] = j;
348 mHerr->BinCenter(i,j,f2,f3);
349 mRet[2] = f2; mRet[3] = f3;
350 mRet[4] = (*mHerr)(i,j);
351 mRet[5] = mHerr->Error2(i,j);
352 mRet[6] = mHerr->NEntBin(i,j);
353}
354return(mRet);
355}
356
357/* --Methode-- */
358string NTupInt_Histo2DErr::VarList_C(const char* nx) const
359{
360string nomx;
361if (nx) nomx = nx;
362else nomx = "_xh_";
363string vardec = "double i,j,x,y,val,err2,nb; \n";
364vardec += "i = " + nomx + "[0]; j = " + nomx + "[1]; \n";
365vardec += "x = " + nomx + "[2]; y = " + nomx + "[3]; \n";
366vardec += "val = " + nomx + "[4]; err2 = " + nomx + "[5]; \n";
367vardec += "nb = " + nomx + "[6]; \n";
368return(vardec);
369}
370
Note: See TracBrowser for help on using the repository browser.