示例#1
0
TEST(map_value_iteratorTest, assignment)
{
    IntCharMap map;

    value_map_iterator<IntCharMap> c_iterator(map.cbegin());
    value_map_iterator<IntCharMap> iterator(map.begin());

    value_map_iterator<IntCharMap> c_iterator2 = map.cbegin();
}
示例#2
0
TEST(map_iteratorTest, dereference)
{
    IntCharMap map = { {123, 'c'} };

    key_map_iterator<IntCharMap> iterator(map.cbegin());

    const int v = *iterator;

    EXPECT_EQ(v, 123);
}
示例#3
0
TEST(map_iteratorTest, preincrementation)
{
    IntCharMap map = { {123, 'c'}, {234, 'd'}, {345, 'e'} };

    key_map_iterator<IntCharMap> iterator(map.cbegin());

    const int v1 = *iterator;
    ++iterator;
    const int v2 = *iterator;
    ++iterator;
    const int v3 = *iterator;

    EXPECT_EQ(v1, 123);
    EXPECT_EQ(v2, 234);
    EXPECT_EQ(v3, 345);
}
示例#4
0
TEST(map_iteratorTest, equal_operator)
{
    IntCharMap map = { {123, 'c'}, {234, 'd'}, {345, 'e'} };

    key_map_iterator<IntCharMap> iterator(map.cbegin());
    key_map_iterator<IntCharMap> iterator2(map.cbegin());

    EXPECT_EQ(iterator, iterator2);
    EXPECT_EQ(iterator, map.cbegin());

    ++iterator;
    ++iterator2;

    ++iterator;
    ++iterator2;

    EXPECT_EQ(iterator, iterator2);

    ++iterator;
    ++iterator2;

    EXPECT_EQ(iterator, iterator2);
    EXPECT_EQ(iterator, map.cend());
}
示例#5
0
int create_plots(const char* file = "/home/wagners/acqu/acqu_user/PHYS_CB_2014-06-06_completeSet.root")
{
	/* some initial stuff */
	const char* suffix = "pdf";  // file format for saving the histograms

	gStyle->SetCanvasColor(0);
	//gStyle->SetOptStat(0);

	// Color used for histograms
	Int_t color = TColor::GetColor("#014ED0");

	// enum for numbering of different cuts and cut combinations
	enum cut {
		protE,
		copl,
		balance,
		dAlpha,
		missM,
		invM,
		copl_balance,
		balance_missM,
		protE_copl,
		copl_missM,
		missM_invM,
		balance_dAlpha,
		copl_dAlpha,
		protE_copl_balance,
		copl_balance_dAlpha,
		all,
		unknown
	};

	IntCharMap cuts;
	cuts.insert(ICPair(protE, "protE"));
	cuts.insert(ICPair(copl, "copl"));
	cuts.insert(ICPair(balance, "balance"));
	cuts.insert(ICPair(dAlpha, "dAlpha"));
	cuts.insert(ICPair(missM, "missM"));
	cuts.insert(ICPair(invM, "invM"));
	cuts.insert(ICPair(copl_balance, "copl_balance"));
	cuts.insert(ICPair(balance_missM, "balance_missM"));
	cuts.insert(ICPair(protE_copl, "protE_copl"));
	cuts.insert(ICPair(copl_missM, "copl_missM"));
	cuts.insert(ICPair(missM_invM, "missM_invM"));
	cuts.insert(ICPair(balance_dAlpha, "balance_dAlpha"));
	cuts.insert(ICPair(copl_dAlpha, "copl_dAlpha"));
	cuts.insert(ICPair(protE_copl_balance, "protE_copl_balance"));
	cuts.insert(ICPair(copl_balance_dAlpha, "copl_balance_dAlpha"));
	cuts.insert(ICPair(all, "allCuts"));

	std::vector<const char*> props;
	props.push_back("invM");
	props.push_back("missM");

	const char* windows[2] = {"prompt", "random"};

	// connect to the file to read from
	TFile f(file, "READ");
	if (!f.IsOpen()) {
		printf("Error opening file %s!\n", file);
		return 1;
	}
	printf("Read ");
	f.Print();
	// load the desired folder from file (not needed in case the EndFileMacro was used)
	//TFolder *t = (TFolder*)f.Get("ROOT Memory");

	// Get the Prompt-Random-Ratio from the analysed root file
	TH1F *h_ratio = (TH1F*)f.FindObjectAny("PHYS_promptRandomRatio");
	const double ratio = h_ratio->GetMean();
	std::cout << "[INFO] Prompt-Random-Ratio: " << ratio << std::endl;

	// declare some temporary used variables
	TH1F* h[N_WINDOWS];
	char buffer[50];
	// create an empty canvas for histogram drawing
	TCanvas *c = new TCanvas("c", "plot", 20, 10, 700, 500);
	c->SetFillColor(0);
	c->SetBorderMode(0);
	c->SetBorderSize(2);
	//c->SetLogy();
	c->SetFrameBorderMode(0);
	c->SetLeftMargin(.14);
	c->SetRightMargin(.1);
	c->SetBottomMargin(.125);
	c->SetTopMargin(.05);

	for (std::vector<const char*>::iterator it_prop = props.begin(); it_prop != props.end(); ++it_prop) {
		for (ICIter it_cut = cuts.begin(); it_cut != cuts.end(); ++it_cut) {
			// skip the current combination if the cut contains the current variable, e. g. invM with some cut involving invM
			if (strstr(it_cut->second, *it_prop))
				continue;
			// get prompt and random histograms for every property cut combination
			for (unsigned int i = 0; i < N_WINDOWS; i++) {
				sprintf(buffer, "%s_%s_%s", *it_prop, it_cut->second, windows[i]);
				h[i] = (TH1F*)f.FindObjectAny(buffer);
				if (!h[i]) {
					std::cout << "[ERROR] Couldn't find histogram " << buffer << std::endl;
					exit(1);
				}
			}
			c->Clear();
			// subtract to chosen window size normalized random-background from events inside the prompt-window
			h[PROMPT]->Add(h[RANDOM], -1*ratio);
			prepare_hist(h[PROMPT]);
			/* Rebin histogram */
			int n = 50;
			h[PROMPT]->Rebin(n);  // combine n bins => n MeV binning
			/*char* label;
			if (label)
				free(label);
			char* label = malloc(strlen("#Events / ") + 5 + strlen(" MeV^{2}") + 1);
			//sprintf(label, "%s%.2f%s", "#Events / ", n/1000., " GeV^{2}");
			sprintf(label, "%s%d%s", "#Events / ", n, " MeV^{2}");
			h->GetYaxis()->SetTitle(label);*/
			/* set axes according to plotted values and prepare histogram for saving */
			sprintf(buffer, "%s%d%s", "#Events / ", n, " MeV");
			h[PROMPT]->GetYaxis()->SetTitle(buffer);
			h[PROMPT]->SetLineColor(color);
			sprintf(buffer, "%s [MeV]", *it_prop);
			h[PROMPT]->GetXaxis()->SetTitle(buffer);
			h[PROMPT]->Draw();
			sprintf(buffer, "%s_%s.%s", *it_prop, it_cut->second, suffix);
			c->Print(buffer);
		}
		std::cout << "[INFO] Created all random-subtracted plots for " << *it_prop << std::endl;
	}

	f.Close();

	return EXIT_SUCCESS;
}