package histgrams;
/**ヒストグラムの最も親なクラス.
 * 1は1次元の1なんだけど、
 * なんと2次元も3次元も親クラスはTH1なのである.
 * なんでかはしらんけどね. 
 * 
 */
public class TH1 {
	/** 画面にヒストグラムを描画する.
	 * 画面にヒストグラムを描画します.
	 * 描画する前に、h1.Fill()等で、データを
	 * ヒストグラムに詰め込む作業が必要です.
	 * <pre>
	 * #include &lt;fstream.h&gt;
	 * ifstream data("[filename]");
	 * double x;
	 * while(data&ght;&ght;x)h1.Fill(x);
	 * data.close();
	 * </pre>
	 * @see #Fill(double)
	 * @see #Draw(String)
	 */
	public void Draw(){}

	/** 画面にヒストグラムをオプション機能を付けて描画する.
	 * Draw()のオーバーライドです.詳しくは,Draw()を
	 * 参照して下さい.
	 * @param strOption オプション機能
	 * <ul>
	 * <li />"AH" x軸やy軸などを表示しない.
	 * <li />"B"  バーチャートらしいけど、何か白塗りされて表示される湯尾に見える
	 * <li />"C" ビンじゃなしに、滑らかな線で結ぶ.
	 * <li />"E" エラーバー.
	 * <li />"E0" Draw the error bars including bins with 0 contents
	 * <li />"E1" 端に垂直な線を入れる.
	 * <li />"E2" エラーバーを長方形で表示する.
	 * <li />"E3" 滑らかな白い線で表示された・・・。
	 * <li />"E4" よくわからんが、x軸の最小と最大の周りにうにょってでてきた.Draw a smothed filled area through the end points of the error bars.
	 * <li />"L" 折れ線グラフ.
	 * <li />"P" 点をプロットする.
	 * <li />"P0" 空のビンも点を打つ.
	 * <li />"*H" ヒストグラムの各場所に*を付ける.(何でこんなのが必要なんだろう？)
	 * <li />"LF2" Lと一緒だけどfill areaするらしい.
	 * <li />"9" 高解像度で出力するらしいけど、やってみたらヒストグラムが消えた.
	 * <li />"LEGO" レゴプロットする.やったことない人はやってみたらわかる.``あ、レゴだ。''と思うでしょう。1次元ヒストなのに、３次元表示される.
	 * <li />"LEGO1" レゴプロットだけど、横から見たところが赤く着色されている.
	 * <li />"LEGO2" 全面的にカラフル.でも、派手な色は使ってない.
	 * </ul>
	 * <pre>
	 * h1.Draw("E");//エラーバーで表示
	 * </pre>
	 * @see #Draw()
	 */
	public void Draw(String strOption){}

	/** ヒストグラムにデータを詰め込みます.
	 * ヒストグラムにデータを詰め込む方法は、
	 * ファイルから読み込む方法やプログラム内部で
	 * 詰め込む方法と複数あります.
	 * ヒストグラムにつめこんだ後は、Draw()で書き込めばOKです.
	 * <pre>
	 * #include &lt;fstream.h&gt;
	 * ifstream data("[filename]");
	 * double x;
	 * while(data&gt;&gt;x)h1.Fill(x);
	 * data.close();
	 * </pre>
	 * @see #Draw()
	 */
	public void Fill(double x){}

	/** ランダムなデータをヒストグラムに詰め込みます.
	 * 内容はよくわからないけど、任意の既に存在するヒストグラムからの
	 * ランダムデータも
	 * 詰め込めるらしい.
	 * @param histgram 任意のヒストグラム(TH1FじゃなくてもTH1SでもTH2FでTHで始まるクラスだと何でもOK)
	 * @param iNum		いくつ作るか.
	 * <pre>
	 * h1.FillRandom(h1, 10000);
	 * </pre>
	 * @see #FillRandom(String,int)
	 */
	public void FillRandom(TH1F histgram, int iNum){}

	/** ランダムなデータをヒストグラムに詰め込みます.
	 * 第一引数はgausしか今はわかってません...
	 * @param strFunc 何処から乱数データを詰め込むか.
	 * @param iNum		いくつ作るか.
	 * <dl>第一引数について
	 * 	<dt>gaus</dt><dd>平均0&sigma;が1の標準正規分布</dd>
	 * </dl>
	 * <pre>
	 * TH1F("h1","histo from gaussian",100, -3, 3 );
	 * h1.FillRandom("gaus", 10000);
	 * </pre>
	 * @see #FillRandom(TH1F,int)
	 */
	public void FillRandom( String strFunc, int iNum){}

	/** デフォルトのオプションを設定する.
	 * オプションの機能を付けてグラフを描画するには、
	 * Draw(stroption)ですが、これをDraw()だけで、
	 * オプション機能をつけてグラフ描画します.
	 * @param strOption デフォルトにするオプション
	 * どんなオプションがあるかはDraw(String)メソッドを
	 * 参照して下さい.
	 * @see #Draw(String)
	 */


	/** 予約された関数でヒストグラムのフィッティングを行う.
	 * ガウシアンのFittingなどで使う．pawで言うところのh/fit
	 * @param strPredefined 予約された関数
	 * 
	 * <table>
	 * <tr>
	 * 	<td>gaus</td>
	 *  <td>ガウシアンでFitting</td>
	 * </tr>
	 * <tr>
	 *	<td>expo</td>
	 *	<td>exponential Fitting</td>
	 * </tr>
	 * <tr>
	 * 	<td>pol1とかpol2</td>
	 * 	<td>1次や2次のべき乗</td> 
	 * </tr>
	 * <tr>
	 *	<td>poln</td>
	 *	<td>n次のべき乗</td>
	 * </tr>
	 * </table>
	 */
	public void Fit( String strPredefined ){}
	public void SetOption(String strOption){}

	/** ヒストグラムをコピーする.
	 * クローンした後は、SetNameでインスタンスの名前を変更
	 * しましょう.（そうするのをrecommentded, because otherwise you
	 * will have 2 histograms with the same name）とか書いてるし.
	 * <pre>
	 * TH1F *hnew = (TH1F*)h-&gt;Clone();
	 * hnew-&gt;SetName("hnew");
	 * </pre>
	 * @see #SetName(String)
	 */
	public void Clone(){}

	/** ヒストグラムのインスタンスの名前を変更する.
	 * そのまんまなんですが.Clone()と一緒に使うことで、
	 * ヒストグラムをコピーできます.で、その後変更した
	 * インスタンスの名前を変更したらコピーになります.
	 * @param strName インスタンスの名前
	 * @see #Clone()
	 */
	public void SetName(String strName){}
}
