sfAngInt_epsilonT.cxx 3.77 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 91 92 93 94 95 96 97 98 99
{
	TCanvas *canEpsilonT[nointervals];
	for (Int_t i = 0; i<nointervals; i++) {	//energy intervals (canvases)

	TH1F *hseT[nointervals][6];
	TH1F *heeT[nointervals][6];
	TH1F *hieT[nointervals][6];

		if (epsilonT[i]) {

			canEpsilonT[i] = new TCanvas();

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

			che->SetLineColor(kBlack);
			for (Int_t j = 0; j < 6; j++) {	//different files
				if (!kChains[j]) continue;
				canEpsilonT[i]->cd(j+1);
				chs[j]->SetLineColor(kGray+1);
				chs[j]->SetFillColor(kGray+1);
				hsName.Form("hseT%d_%d", i, j);
//				drawCommand.Form("fTpp/f6BeIM>>%s(50,0,1)", hsName.Data());
				drawCommand.Form("fTpp/f6BeIM>>%s(30,0,1)", hsName.Data());
//				chs[j]->Draw(drawCommand.Data(), cQ && crBeE[i] && crAngles && sRatio[j], "", sEventsECuts[i][j]);
				chs[j]->Draw(drawCommand.Data(), cProtons && cQ && crBeE[i] && crAngles && sRatio[j], "", sEventsECuts[i][j]);
				hseT[i][j] = (TH1F*)gPad->FindObject(hsName.Data());
				heName.Form("heeT%d_%d", i, j);
//				drawCommand.Form("fTpp/fBeIM>>%s(50,0,1)", heName.Data());
				drawCommand.Form("fTpp/fBeIM>>%s", heName.Data());
//				che->Draw(drawCommand.Data(), cQ && cBeE[i] && cAngles, "E same", eEventsECuts[i][j]);
				che->Draw(drawCommand.Data(), cProtons && cQ && cBeE[i] && cAngles, "E same", eEventsECuts[i][j]);
				heeT[i][j] = (TH1F*)gPad->FindObject(heName.Data());

				hseT[i][j]->Draw();
				hseT[i][j]->SetTitle("");
				hseT[i][j]->SetXTitle("\\varepsilon");
				hseT[i][j]->GetXaxis()->SetTitleOffset(0.95);
				hseT[i][j]->GetXaxis()->CenterTitle();
				hseT[i][j]->SetYTitle("counts");
//				hseT[i][j]->GetYaxis()->SetTitleOffset(1.09);
				hseT[i][j]->GetYaxis()->SetTitleOffset(0.7);
				hseT[i][j]->GetYaxis()->CenterTitle();
				heeT[i][j]->Draw("E same");
				if (kAutoRange) {
					Float_t leftMaxMC = kRangeProportion*hseT[i][j]->GetMaximum();
					Float_t leftMaxE = kRangeProportion*heeT[i][j]->GetMaximum();
					hseT[i][j]->GetYaxis()->SetRangeUser(0, leftMaxE);
					leftMaxMC > leftMaxE ? hseT[i][j]->GetYaxis()->SetRangeUser(0, leftMaxMC) : hseT[i][j]->GetYaxis()->SetRangeUser(0, leftMaxE);
				}
				else {
					hseT[i][j]->GetYaxis()->SetRangeUser(0, eTRange[i][j]);
				}
				canEpsilonT[i]->Update();


				hiName.Form("hieT%d_%d", i, j);
//				drawCommand.Form("sTpp/E_IM>>%s(50,0,1)", hiName.Data());
				drawCommand.Form("sTpp/E_IM>>%s", hiName.Data());
				ti[j]->Draw(drawCommand.Data(), ciBeE[i] && sRatio[j], "same");
				TH1F *hieT[i][j] = (TH1F*)gPad->FindObject(hiName.Data());
				Float_t rightmax = kRangeProportionIn*hieT[i][j]->GetMaximum();
				Float_t scale = canEpsilonT[i]->GetPad(j+1)->GetUymax()/rightmax;
				hieT[i][j]->SetLineColor(kRed);
				hieT[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();

				canEpsilonT[i]->Update();

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

			}//for j
			if (kVerbose) cout << endl;

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

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