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

Last change on this file since 4037 was 3197, checked in by cmv, 18 years ago

add info sum,sum2,sumn cmv 03/04/2007

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