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