sfAngInt_epsilonY.cxx 3.03 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
{

	TCanvas *canEpsilonY[nointervals];
	for (Int_t i = 0; i<nointervals; i++) {	//energy intervals (canvases)

	TH1F *hseY[nointervals][6];
	TH1F *heeY[nointervals][6];
	TH1F *hieY[nointervals][6];

		if (epsilonY[i]) {

			canEpsilonY[i] = new TCanvas();

			canvasTitle.Form("epsilon in %s Y-system;\t(%d,%d) degrees", (const char*)cBeE[i], kMinAngle, kMaxAngle);
			canEpsilonY[i]->SetTitle(canvasTitle.Data());
			canEpsilonY[i]->Divide(2, 3);

			che->SetLineColor(kBlack);
			for (Int_t j = 0; j < 6; j++) {	//different files
				canEpsilonY[i]->cd(j+1);
				chs[j]->SetLineColor(kGray+1);
				chs[j]->SetFillColor(kGray+1);
				hsName.Form("hseY%d_%d", i, j);
				drawCommand.Form("fTap/f6BeIM>>%s(50,0,1)", hsName.Data());
				chs[j]->Draw(drawCommand.Data(), cQ && crBeE[i] && crAngles && sRatio[j], "", sEvents[j]);
				hseY[i][j] = (TH1F*)gPad->FindObject(hsName.Data());
				heName.Form("heeY%d_%d", i, j);
				drawCommand.Form("fTap/fBeIM>>%s(50,0,1)", heName.Data());
				che->Draw(drawCommand.Data(), cQ && cBeE[i] && cAngles, "E same", eEvents[j]);
				heeY[i][j] = (TH1F*)gPad->FindObject(heName.Data());

				hseY[i][j]->Draw();
				heeY[i][j]->Draw("E same");
				if (kAutoRange) {
					Float_t leftMaxMC = kRangeProportion*heeY[i][j]->GetMaximum();
					Float_t leftMaxE = kRangeProportion*hseY[i][j]->GetMaximum();
					hseY[i][j]->GetYaxis()->SetRangeUser(0, leftMaxE);
					leftMaxMC > leftMaxE ? hseY[i][j]->GetYaxis()->SetRangeUser(0, leftMaxMC) : hseY[i][j]->GetYaxis()->SetRangeUser(0, leftMaxE);
				}
				else {
					hseY[i][j]->GetYaxis()->SetRangeUser(0, eTRange[i][j]);
				}
				canEpsilonY[i]->Update();



//				ti[j]->Draw("sTap/E_IM", ciBeE[i] && sRatio[j], "same", iEvents[j]);

				hiName.Form("hieY%d_%d", i, j);
				drawCommand.Form("sTap/E_IM>>%s(50,0,1)", hiName.Data());
				ti[j]->Draw(drawCommand.Data(), ciBeE[i] && sRatio[j], "same");
				TH1F *hieY[i][j] = (TH1F*)gPad->FindObject(hiName.Data());
				Float_t rightmax = 1.1*hieY[i][j]->GetMaximum();
				Float_t scale = canEpsilonY[i]->GetPad(j+1)->GetUymax()/rightmax;
				hieY[i][j]->SetLineColor(kRed);
				hieY[i][j]->Scale(scale);

				//draw an axis on the right side
				TGaxis *axis = new TGaxis(gPad->GetUxmax(),gPad->GetUymin(),
						gPad->GetUxmax(), gPad->GetUymax(),0,rightmax,510,"+L");
				axis->SetLineColor(kRed);
				axis->SetLabelColor(kRed);
				axis->Draw();



				canEpsilonY[i]->Update();

				if (kVerbose) {
					Info("sfAngInt_epsilonY.cxx", "cut%d; case%d: %3.1f (exp)/ %3.1f (sim) = %3.3f",
							i, j, heeY[i][j]->Integral(0,heeY[i][j]->GetNbinsX()),
							hseY[i][j]->Integral(0,hseY[i][j]->GetNbinsX()),
							heeY[i][j]->Integral(0,heeY[i][j]->GetNbinsX())/hseY[i][j]->Integral(0,hseY[i][j]->GetNbinsX()) );
				}

			}//for j

			if (savePictures) {
				canvasName.Form("%sfig%dEpsilonY:%s%s", ppath.Data(), i, configuration.Data(), pictFormat.Data());
				cout << canvasName.Data() << endl;
				canEpsilonY[i]->SaveAs(canvasName.Data());
				canEpsilonY[i]->cd();
				canEpsilonY[i]->Close();
			}//if save pictures
		}//if
	}//for i

	sw.Print();
	sw.Continue();
}