source: Sophya/trunk/SophyaPI/PIext/sohiswrap.h@ 3139

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

suite du display des HistoErr avec Wrapper cmv 12/01/07

File size: 3.2 KB
RevLine 
[3125]1// This may look like C code, but it is really -*- C++ -*-
2// Classes d'emballage (wrapper) d'histos SOPHYA/HiStats
3// pour trace par PIHisto
4// C. Magneville / R. Ansari 2007
5// (C) CEA-DAPNIA LAL-IN2P3/CNRS
6
7#ifndef SOHISWRAP_H
8#define SOHISWRAP_H
9
10#include "histos.h"
11#include "hisprof.h"
12#include "histerr.h"
13
14#include "pexceptions.h"
15
16#include "phistwrapper.h"
17
18namespace SOPHYA {
19
20//! Wrapper class for SOPHYA::Histo , SOPHYA::HProf
21class HistoWrapper : public P1DHistoWrapper
22{
23public:
24 HistoWrapper(Histo* h, bool ad=true)
25 {
26 if (h == NULL) throw NullPtrError("HistoWrapper(Histo* h = NULL)");
[3135]27 mHis = h;
28 mHpr = dynamic_cast<HProf*>(h);
29 mAD = ad;
[3125]30 }
31 ~HistoWrapper() { if (mAD) delete mHis; }
32
33 virtual int_4 NBins() { return mHis->NBins(); }
34 virtual r_8 XMin() { return mHis->XMin() ; }
35 virtual r_8 XMax() { return mHis->XMax() ; }
36 virtual r_8 BinWidth() { return mHis->BinWidth() ; }
37
38 virtual r_8 BinLowEdge(int_4 i) { return mHis->BinLowEdge(i) ; }
39 virtual r_8 BinCenter(int_4 i) { return mHis->BinCenter(i) ; }
40 virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; }
41
[3132]42 virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }
[3125]43 virtual r_8 Error(int_4 i) { return mHis->Error(i) ; }
[3135]44 virtual r_8 NbEntries(int_4 i) { if(mHpr) return mHpr->SumW(i); else return 0.; }
[3125]45
46 virtual void Update() { mHis->UpdateHisto(); }
47
48 // ajoute des lignes de texte avec les infos statistiques
49 virtual int GetStatInfoAsText(vector<string> & text)
50 {
51 char label[64];
52 string s;
53 sprintf(label, "N= %-g",mHis->NData());
54 s = label; text.push_back(s);
55 sprintf(label, "m= %-g",mHis->Mean());
56 s = label; text.push_back(s);
57 sprintf(label, "s= %-g",mHis->Sigma());
58 s = label; text.push_back(s);
59 return 3;
60 }
61
62 // pointeur sur l'objet histo
63 inline Histo* getHisto() { return mHis; }
[3135]64
[3125]65protected:
66 Histo* mHis;
[3135]67 HProf* mHpr;
[3125]68 bool mAD;
69};
70
71
72//! Wrapper class for SOPHYA::HistoErr
73class HistoErrWrapper : public P1DHistoWrapper
74{
75public:
76 HistoErrWrapper(HistoErr* h, bool ad=false)
77 {
78 if (h == NULL) throw NullPtrError("HistoWrapper(HistoErr* h = NULL)");
79 mHis = h; mAD = ad;
80 }
81 ~HistoErrWrapper() { if (mAD) delete mHis; }
82
83 virtual int_4 NBins() { return mHis->NBins(); }
84 virtual r_8 XMin() { return mHis->XMin() ; }
85 virtual r_8 XMax() { return mHis->XMax() ; }
86 virtual r_8 BinWidth() { return mHis->BinWidth() ; }
87
88 virtual r_8 BinLowEdge(int_4 i) { return mHis->BinLowEdge(i) ; }
89 virtual r_8 BinCenter(int_4 i) { return mHis->BinCenter(i) ; }
90 virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; }
91
[3132]92 virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }
[3125]93 virtual r_8 Error(int_4 i) { return mHis->Error(i) ; }
[3135]94 virtual r_8 NbEntries(int_4 i) { return mHis->NEntBin(i) ; }
[3125]95
96 // ajoute des lignes de texte avec les infos statistiques
97 virtual int GetStatInfoAsText(vector<string> & text)
98 {
[3135]99 char label[64]; string s;
100
101 sprintf(label, "NCor= %d",mHis->NCorrel());
102 s = label; text.push_back(s);
103
[3125]104 return 1;
105 }
106
107 // pointeur sur l'objet histo
108 inline HistoErr* getHistoErr() { return mHis; }
[3135]109
[3125]110protected:
111 HistoErr* mHis;
112 bool mAD;
113};
114
115} // Fin du namespace
116
117#endif
Note: See TracBrowser for help on using the repository browser.