File indexing completed on 2025-12-15 09:32:29
0001 struct SpeciesInfo
0002 {
0003 SpeciesInfo()
0004 {
0005 }
0006 SpeciesInfo(const SpeciesInfo& right) :
0007 fG(right.fG),
0008 fGerr(right.fGerr),
0009 fLET(right.fLET),
0010 fLETerr(right.fLETerr),
0011 fName(right.fName)
0012 {}
0013 SpeciesInfo& operator=(const SpeciesInfo& right)
0014 {
0015 if(this == &right) return *this;
0016 fG = right.fG;
0017 fGerr = right.fGerr;
0018 fLET = right.fLET;
0019 fLETerr = right.fLETerr;
0020 fName = right.fName;
0021 return *this;
0022 }
0023
0024 std::vector<Double_t> fG;
0025 std::vector<Double_t> fGerr;
0026 std::vector<Double_t> fLET;
0027 std::vector<Double_t> fLETerr;
0028 string fName;
0029 };
0030
0031 const char* filetypes[] = {
0032 "PostScript", "*.ps",
0033 "Encapsulated PostScript", "*.eps",
0034 "PDF files", "*.pdf",
0035 "Gif files", "*.gif",
0036 "PNG files", "*.png",
0037 "All files", "*",
0038 0, 0
0039 };
0040
0041 TGTab *gTab = nullptr;
0042
0043 void Save()
0044 {
0045 TGFileInfo fi;
0046 fi.fFileTypes = filetypes;
0047
0048 new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),kFDSave,&fi);
0049 gROOT->GetListOfCanvases()->At(gTab->GetCurrent())->SaveAs(fi.fFilename);
0050 }
0051
0052 void plotG_LET()
0053 {
0054
0055 std::map<Int_t, SpeciesInfo> speciesInfo;
0056
0057 gROOT->SetStyle("Plain");
0058 gStyle->SetPalette(1);
0059 gStyle->SetCanvasBorderMode(0);
0060 gStyle->SetFrameBorderMode(0);
0061 gStyle->SetPadTickX(1);
0062 gStyle->SetPadTickY(1);
0063
0064 TGMainFrame *main = new TGMainFrame(gClient->GetRoot(), 200, 200);
0065 gTab = new TGTab(main, 200, 200);
0066
0067 Int_t ncols, tag, runID;
0068 Double_t LET, LET_sigma, Gvalue, Gvalue_sigma;
0069 string name;
0070 string dummy;
0071 string string_key, string_value;
0072
0073 ifstream file;
0074 file.open("Species.txt",std::ios::in);
0075
0076 runID = 0;
0077
0078 while(1) {
0079
0080 file >> dummy >> LET >> dummy >> LET_sigma;
0081 if (file.eof()) break;
0082
0083 std::getline(file,dummy);
0084
0085 if (!std::getline(file,string_key)) break;
0086 std::istringstream key(string_key);
0087 if (!std::getline(file,string_value)) break;
0088 std::istringstream value(string_value);
0089 while(1) {
0090 key >> name >> tag;
0091 value >> Gvalue >> Gvalue_sigma;
0092 if (!key || !value) break;
0093 speciesInfo[tag].fName = name;
0094 speciesInfo[tag].fG.resize(runID+1);
0095 speciesInfo[tag].fGerr.resize(runID+1);
0096 speciesInfo[tag].fLET.resize(runID+1);
0097 speciesInfo[tag].fLETerr.resize(runID+1);
0098
0099 speciesInfo[tag].fG[runID] = Gvalue;
0100 speciesInfo[tag].fGerr[runID] = Gvalue_sigma;
0101 speciesInfo[tag].fLET[runID] = LET;
0102 speciesInfo[tag].fLETerr[runID] = LET_sigma;
0103 }
0104 runID++;
0105 }
0106 file.close();
0107
0108 for (auto it_map : speciesInfo) {
0109
0110 auto map = it_map.second;
0111 TGraphErrors* gSpecies = new TGraphErrors(map.fG.size(),
0112 map.fLET.data(),
0113 map.fG.data(),
0114 map.fLETerr.data(),
0115 map.fGerr.data());
0116
0117 Int_t color = (2+it_map.first)%TColor::GetNumberOfColors();
0118 if (color == 5 || color == 10 || color == 0) ++color;
0119
0120
0121 TGCompositeFrame *tf = gTab->AddTab(map.fName.c_str());
0122 TGCompositeFrame *frame = new TGCompositeFrame(tf, 60, 60,
0123 kHorizontalFrame);
0124
0125 tf->AddFrame(frame, new TGLayoutHints(kLHintsExpandX|kLHintsExpandY,
0126 10,10,10,2));
0127
0128 TRootEmbeddedCanvas *c1 = new TRootEmbeddedCanvas(map.fName.c_str(),
0129 frame, 700, 500);
0130 frame->AddFrame(c1, new TGLayoutHints(kLHintsExpandX|kLHintsExpandY,
0131 10,10,10,2));
0132 c1->GetCanvas()->SetLogx();
0133
0134 TGHorizontalFrame* hframe = new TGHorizontalFrame(tf, 200, 40);
0135
0136 TGTextButton* save = new TGTextButton(hframe, "&Save as ...",
0137 "Save()");
0138 hframe->AddFrame(save, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4));
0139
0140 TGTextButton *exit = new TGTextButton(hframe, "&Exit ",
0141 "gApplication->Terminate()");
0142 hframe->AddFrame(exit, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4));
0143
0144 tf->AddFrame(hframe, new TGLayoutHints(kLHintsCenterX, 2, 2, 2, 2));
0145
0146 gSpecies->SetTitle(map.fName.c_str());
0147 gSpecies->SetMarkerStyle(20+it_map.first);
0148 gSpecies->SetMarkerColor(color);
0149 gSpecies->GetXaxis()->SetTitle("LET (keV/um)");
0150 gSpecies->GetXaxis()->SetTitleOffset(1.1);
0151 gSpecies->GetYaxis()->SetTitle("G value (molecules/100 eV)");
0152 gSpecies->GetYaxis()->SetTitleOffset(1.2);
0153 gSpecies->Draw("AP");
0154 }
0155
0156 main->AddFrame(gTab, new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
0157 kLHintsExpandY, 2, 2, 5, 1));
0158
0159 main->MapSubwindows();
0160 main->Resize();
0161 main->MapWindow();
0162 }
0163