	#ifndef histo
    #define histo

 
	    class histo2d
	{
		decl 
		//obiektem bedzie zbior danych do obrobki
		//jakas metoda musi dolaczac zbior danych
		//defaultowo zbieramy
		m_iIter,				//number of observations
		m_m2dData,				//2d data
		
		m_dLeftTailQuantile,	//
		m_dRightTailQuantile,	// as 1-alpha, i.e. 0.01, not 0.99
		m_mOut2d,				//output
		m_mData_buffer,			//buffer
		m_iBuffer_size,			//
		m_iBuffer_count,
		m_sOutputLabel,			//label for store files
		m_dAxis_min,
		m_dAxis_step,
		m_dAxis_ref,
		m_vLeft_tail_obs,
		m_vRight_tail_obs,
		m_iLT_index,
		m_iRT_index,
		m_iHist_Nbars,			//number of bars for finding density, mode etc
		m_b_smooth_histogram,
		m_vTCount,
		m_iLT_bars,
		m_iRT_bars,
		m_LTHist,
		m_RTHist,
		m_mDens,
		m_bTailsProcessed
		;

		histo2d(const i_Hist_dim);

		append_data(const mData_Added);

		get_step_l();
 		get_min_a();
 		get_mode();
 		get_axis(const i_axid);
 		get_quantile(const i_dQt);
		get_histo1d(const i_iBarNum, const i_dTailProb);
		get_part_histo1d(const i_dLowBd, const i_dUppBd);
		get_real_iter();
		get_output();
		get_density(const d_arg);
		get_rps(const d_arg);
		get_cdf(const d_arg);
		get_hpd(const d_cl);
		process_tails();
		store_output();
		restore_output(const sLbl1);

		set_buffer(const iNewBufferSize);
		set_label(const s_newL);		
		};
		
    #endif
