203 lines
4.3 KiB
Plaintext
203 lines
4.3 KiB
Plaintext
// Copyright (C) 2010, Guy Barrand. All rights reserved.
|
|
// See the file tools.license for terms.
|
|
|
|
#ifndef tools_hbook_h2
|
|
#define tools_hbook_h2
|
|
|
|
#include "base_histo"
|
|
|
|
namespace tools {
|
|
namespace hbook {
|
|
|
|
class h2 : public base_histo {
|
|
public:
|
|
h2(int aID,const std::string& aTitle,
|
|
int aXnumber,rarg aXmin,rarg aXmax,
|
|
int aYnumber,rarg aYmin,rarg aYmax)
|
|
:base_histo(aID)
|
|
,m_axis_x(m_path,aID,2,true,true)
|
|
,m_axis_y(m_path,aID,2,false,true)
|
|
{
|
|
//m_axis_x.copy(fHistogram.getAxis(0));
|
|
//m_axis_y.copy(fHistogram.getAxis(1));
|
|
cd_beg();
|
|
CHBOOK2(m_id,aTitle,aXnumber,aXmin,aXmax,
|
|
aYnumber,aYmin,aYmax);
|
|
cd_end();
|
|
}
|
|
virtual ~h2(){
|
|
cd_beg();
|
|
CHDELET(m_id);
|
|
cd_end();
|
|
}
|
|
private:
|
|
h2(const h2& a_from)
|
|
:base_histo(a_from)
|
|
,m_axis_x(a_from.m_axis_x)
|
|
,m_axis_y(a_from.m_axis_y)
|
|
{}
|
|
h2& operator=(const h2& a_from){
|
|
base_histo::operator=(a_from);
|
|
m_axis_x = a_from.m_axis_x;
|
|
m_axis_y = a_from.m_axis_y;
|
|
return *this;
|
|
}
|
|
public:
|
|
bool configure(int aXnumber,rarg aXmin,rarg aXmax,
|
|
int aYnumber,rarg aYmin,rarg aYmax){
|
|
cd_beg();
|
|
CHBOOK2(m_id,title(),aXnumber,aXmin,aXmax,aYnumber,aYmin,aYmax);
|
|
cd_end();
|
|
return true;
|
|
}
|
|
public:
|
|
void fill(rarg aX,rarg aY,rarg aWeight = 1) {
|
|
cd_beg();
|
|
CHFILL(m_id,aX,aY,aWeight);
|
|
cd_end();
|
|
}
|
|
|
|
// optimization :
|
|
void fill_beg() const {cd_beg();}
|
|
void fill_fast(rarg aX,rarg aY,rarg aWeight = 1) {
|
|
CHFILL(m_id,aX,aY,aWeight);
|
|
}
|
|
void fill_end() const {cd_end();}
|
|
|
|
int dimension() const {return 2;}
|
|
|
|
rret mean_x() const {
|
|
cd_beg();
|
|
rret v = CHSTATI(m_id,1,"PROX",0);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret mean_y() const{
|
|
cd_beg();
|
|
rret v = CHSTATI(m_id,1,"PROY",0);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret rms_x() const {
|
|
cd_beg();
|
|
rret v = CHSTATI(m_id,2,"PROX",0);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret rms_y() const {
|
|
cd_beg();
|
|
rret v = CHSTATI(m_id,2,"PROY",0);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
const hbook::axis& axis_x() const {return m_axis_x;}
|
|
hbook::axis& axis_x() {return m_axis_x;}
|
|
const hbook::axis& axis_y() const {return m_axis_y;}
|
|
hbook::axis& axis_y() {return m_axis_y;}
|
|
int coord_to_index_x(rarg aCoordX) const {
|
|
return m_axis_x.coord_to_index(aCoordX);
|
|
}
|
|
int coord_to_index_y(rarg aCoordY) const {
|
|
return m_axis_y.coord_to_index(aCoordY);
|
|
}
|
|
rret min_bin_height() const {
|
|
cd_beg();
|
|
rret v = CHMIN(m_id);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret max_bin_height() const {
|
|
cd_beg();
|
|
rret v = CHMAX(m_id);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret bin_height(int aIndexX,int aIndexY) const {
|
|
cd_beg();
|
|
rret v = CHIJ(m_id,hindex(aIndexX,axis_x()),hindex(aIndexY,axis_y()));
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret sum_bin_heights() const {
|
|
int NX = axis_x().bins();
|
|
int NY = axis_y().bins();
|
|
rret w = 0;
|
|
cd_beg();
|
|
for(int i=1;i<=NX;i++) {
|
|
for(int j=1;j<=NY;j++) {
|
|
w += CHIJ(m_id,i,j);
|
|
}
|
|
}
|
|
cd_end();
|
|
return w;
|
|
}
|
|
rret sum_all_bin_heights() const {
|
|
int NX1 = axis_x().bins()+1;
|
|
int NY1 = axis_y().bins()+1;
|
|
rret w = 0;
|
|
cd_beg();
|
|
for(int i=0;i<=NX1;i++) {
|
|
for(int j=0;j<=NY1;j++) {
|
|
w += CHIJ(m_id,i,j);
|
|
}
|
|
}
|
|
cd_end();
|
|
return w;
|
|
}
|
|
rret sum_extra_bin_heights() const {
|
|
int NX = axis_x().bins();
|
|
int NY = axis_y().bins();
|
|
int NX1 = NX+1;
|
|
int NY1 = NY+1;
|
|
rret w = 0;
|
|
cd_beg();
|
|
{for(int j=0;j<=NY1;j++) {
|
|
w += CHIJ(m_id,0,j);
|
|
}}
|
|
for(int i=1;i<=NX;i++) {
|
|
w += CHIJ(m_id,i,0);
|
|
w += CHIJ(m_id,i,NY1);
|
|
}
|
|
{for(int j=0;j<=NY1;j++) {
|
|
w += CHIJ(m_id,NX1,j);
|
|
}}
|
|
cd_end();
|
|
return w;
|
|
}
|
|
rret bin_error(int aIndexX,int aIndexY) const {
|
|
cd_beg();
|
|
rret v = CHIJE(m_id,aIndexX+1,aIndexY+1);
|
|
cd_end();
|
|
return v;
|
|
}
|
|
rret bin_height_x(int aIndexX) const {
|
|
int i = hindex(aIndexX,axis_x());
|
|
int NY1 = axis_y().bins()+1;
|
|
rret w = 0;
|
|
cd_beg();
|
|
for(int j=0;j<=NY1;j++) {
|
|
w += CHIJ(m_id,i,j);
|
|
}
|
|
cd_end();
|
|
return w;
|
|
}
|
|
rret bin_height_y(int aIndexY) const {
|
|
int j = hindex(aIndexY,axis_y());
|
|
int NX1 = axis_x().bins()+1;
|
|
rret w = 0;
|
|
cd_beg();
|
|
for(int i=0;i<=NX1;i++) {
|
|
w += CHIJ(m_id,i,j);
|
|
}
|
|
cd_end();
|
|
return w;
|
|
}
|
|
protected:
|
|
hbook::axis m_axis_x;
|
|
hbook::axis m_axis_y;
|
|
};
|
|
|
|
}}
|
|
|
|
#endif
|