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

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

suite adaptation travail reza 2D et adapteur + adaptation aux modifs HistoErr cmv 18/01/2007

File size: 8.5 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);
254vector<string> vopts;
255FillVStringFrString(dopt,vopts,' ');
256hwp->DecodeOptionString(vopts,false);
257return hwp;
258}
259
260/* --Methode-- */
261NTupleInterface* NOMAdapter_Histo2DErr::GetNTupleInterface(bool& adel)
262{
263adel = true;
264return( new NTupInt_Histo2DErr(mHerr) );
265}
266
267
268/* --Methode-- */
269GeneralFitData* NOMAdapter_Histo2DErr::GetGeneralFitData(bool& adel
270 ,GeneralFitData::FitErrType errtype,double errscale,double errmin
271 ,int i1,int i2,int j1,int j2)
272{
273 cout<<"NOMAdapter_Histo2DErr::GetGeneralFitData: NOT IMPLEMENTED"<<endl;
274 return NULL;
275}
276
277AnyDataObj* NOMAdapter_Histo2DErr::FitResidusObj(GeneralFit& mfit)
278{
279 cout<<"NOMAdapter_Histo2DErr::FitResidusObj: NOT IMPLEMENTED"<<endl;
280 return NULL;
281}
282
283AnyDataObj* NOMAdapter_Histo2DErr::FitFunctionObj(GeneralFit& mfit)
284{
285 cout<<"NOMAdapter_Histo2DErr::FitFunctionObj: NOT IMPLEMENTED"<<endl;
286 return NULL;
287}
288
289
290/* --Methode-- */
291string NOMAdapter_Histo2DErr::GetInfoString(vector<string>& opts)
292{
293 string blabla = "Histo2DErr: nbin binw xmin xmax ymin ymax";
294
295 if(opts.size() == 0) return blabla;
296
297 char buff[128];
298 if(opts[0] == "nbin") {
299 sprintf(buff, "%d %d",mHerr->NBinX(),mHerr->NBinY());
300 } else if(opts[0] == "binw") {
301 sprintf(buff, "%lg %lg",mHerr->WBinX(),mHerr->WBinY());
302 } else if(opts[0] == "xmin") {
303 sprintf(buff, "%lg",mHerr->XMin());
304 } else if(opts[0] == "xmax") {
305 sprintf(buff, "%lg",mHerr->XMax());
306 } else if(opts[0] == "ymin") {
307 sprintf(buff, "%lg",mHerr->YMin());
308 } else if(opts[0] == "ymax") {
309 sprintf(buff, "%lg",mHerr->YMax());
310 } else {
311 return blabla;
312 }
313 return string(buff);
314}
315
316// -------------------------------------------------------------
317
318/* --Methode-- */
319NTupInt_Histo2DErr::NTupInt_Histo2DErr(Histo2DErr* h)
320{
321mHerr = h;
322}
323
324/* --Methode-- */
325NTupInt_Histo2DErr::~NTupInt_Histo2DErr()
326{
327}
328
329/* --Methode-- */
330sa_size_t NTupInt_Histo2DErr::NbLines() const
331{
332return(mHerr->NBinX()*mHerr->NBinY());
333}
334
335/* --Methode-- */
336sa_size_t NTupInt_Histo2DErr::NbColumns() const
337{
338return(6);
339}
340
341/* --Methode-- */
342r_8* NTupInt_Histo2DErr::GetLineD(sa_size_t n) const
343{
344int i,j;
345r_8 f2,f3;
346if(n<0 || n>=mHerr->NBinX()*mHerr->NBinY())
347 for(i=0; i<7; i++) mRet[i] = 0.;
348else {
349 i = n%mHerr->NBinX(); j = n/mHerr->NBinX();
350 mRet[0] = i; mRet[1] = j;
351 mHerr->BinCenter(i,j,f2,f3);
352 mRet[2] = f2; mRet[3] = f3;
353 mRet[4] = (*mHerr)(i,j);
354 mRet[5] = mHerr->Error2(i,j);
355 mRet[6] = mHerr->NEntBin(i,j);
356}
357return(mRet);
358}
359
360/* --Methode-- */
361string NTupInt_Histo2DErr::VarList_C(const char* nx) const
362{
363string nomx;
364if (nx) nomx = nx;
365else nomx = "_xh_";
366string vardec = "double i,j,x,y,val,err2,nb; \n";
367vardec += "i = " + nomx + "[0]; j = " + nomx + "[1]; \n";
368vardec += "x = " + nomx + "[2]; y = " + nomx + "[3]; \n";
369vardec += "val = " + nomx + "[4]; err2 = " + nomx + "[5]; \n";
370vardec += "nb = " + nomx + "[6]; \n";
371return(vardec);
372}
373
Note: See TracBrowser for help on using the repository browser.