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(); }
TEST(map_iteratorTest, dereference) { IntCharMap map = { {123, 'c'} }; key_map_iterator<IntCharMap> iterator(map.cbegin()); const int v = *iterator; EXPECT_EQ(v, 123); }
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); }
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()); }
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; }