File indexing completed on 2025-10-13 08:25:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 {
0020
0021
0022 system ("hadd -O -f molecular-dna.root molecular-dna_t*.root");
0023
0024
0025 char ifile[256] = "molecular-dna.root";
0026 Double_t r3 = 10575e-9 * 3450e-9 * 10575e-9;
0027 Double_t Nbp = 6383.848410;
0028 Double_t mass = 997 * 4 * 3.141592 * r3 / 3 ;
0029
0030
0031
0032 typedef std::pair <int64_t, int64_t> ipair;
0033 bool greaterPair(const ipair &l, const ipair &r);
0034 bool smallerPair(const ipair &l, const ipair &r);
0035
0036 void BinLogX(TH1 *h);
0037
0038 gROOT->Reset();
0039 gStyle->SetPalette(1);
0040 gROOT->SetStyle("Plain");
0041 gStyle->SetOptStat(00000);
0042
0043
0044 TCanvas *cfragment = new TCanvas("cfragment","DNA Fragments Distribution", 900, 120, 600,400);
0045 cfragment->SetLogx();
0046 cfragment->SetLogy();
0047 TH1F *h1fragments = new TH1F("h1fragments","h1fragments",40,0,5);
0048 BinLogX(h1fragments);
0049
0050 TCanvas *c1 = new TCanvas("c1", "Molecular DNA - Damage Quantification", 60, 120, 800, 800);
0051 c1->SetBorderSize(0);
0052 c1->SetFillColor(0);
0053 c1->SetFillStyle(4000);
0054 gPad->SetLeftMargin(0.13);
0055
0056 TPad* pad1 = new TPad("pad1","Species", 0, 0.51, 0.49, 1);
0057 pad1->SetBorderSize(0);
0058 pad1->SetFillColor(0);
0059 pad1->SetFillStyle(4000);
0060 pad1->SetLeftMargin(0.15);
0061 pad1->SetRightMargin(0.01);
0062 pad1->SetBottomMargin(0.2);
0063
0064 TPad* pad2 = new TPad("pad2","Damage Yield", 0.51, 0.5, 1, 1);
0065 pad2->SetBorderSize(0);
0066 pad2->SetFillColor(0);
0067 pad2->SetFillStyle(4000);
0068 pad2->SetLeftMargin(0.15);
0069 pad2->SetRightMargin(0.05);
0070 pad2->SetBottomMargin(0.2);
0071
0072 TPad* pad3 = new TPad("pad3","Breaks Yield SSB", 0, 0, 0.49, 0.49);
0073 pad3->SetBorderSize(0);
0074 pad3->SetFillColor(0);
0075 pad3->SetFillStyle(4000);
0076 pad3->SetLeftMargin(0.15);
0077 pad3->SetRightMargin(0.01);
0078
0079 pad3->SetBottomMargin(0.2);
0080
0081 TPad* pad4 = new TPad("pad4","Breaks Yield DSB", 0.51, 0, 1, 0.49);
0082 pad4->SetBorderSize(0);
0083 pad4->SetFillColor(0);
0084 pad4->SetFillStyle(4000);
0085 pad4->SetLeftMargin(0.15);
0086 pad4->SetRightMargin(0.05);
0087
0088 pad4->SetBottomMargin(0.2);
0089
0090 pad1->Draw();
0091 pad2->Draw();
0092 pad3->Draw();
0093 pad4->Draw();
0094
0095
0096 TFile *f = TFile::Open(ifile);
0097
0098
0099 Int_t EB, ES, OHB, OHS, HB, HS, FL;
0100 Int_t total_EB, total_ES, total_OHB, total_OHS, total_HB, total_HS, total_FL;
0101 Float_t total_EB2, total_ES2, total_OHB2, total_OHS2, total_HB2, total_HS2, total_FL2;
0102 Float_t SD_EB, SD_ES, SD_OHB, SD_OHS, SD_HB, SD_HS;
0103 Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi, SD_SSBm;
0104 Float_t SD_DSB, SD_DSBp, SD_DSBpp, SD_sDSB, SD_DSBd, SD_DSBi, SD_DSBm, SD_DSBh;
0105
0106 Int_t SSB, SSBp, SSB2p;
0107 Int_t total_SSB, total_SSBp, total_SSB2p;
0108 Float_t total_SSB2, total_SSBp2, total_SSB2p2;
0109 Int_t DSB, DSBp, DSBpp;
0110 Int_t total_DSB, total_DSBp, total_DSBpp;
0111 Float_t total_DSB2, total_DSBp2, total_DSBpp2;
0112
0113 Int_t SSBd, SSBi, SSBm;
0114 Int_t total_sSSB, total_SSBd, total_SSBi, total_SSBm;
0115 Float_t total_sSSB2, total_SSBd2, total_SSBi2, total_SSBm2;
0116 Int_t DSBd, DSBi, DSBm, DSBh;
0117 Int_t total_sDSB, total_DSBd, total_DSBi, total_DSBm, total_DSBh;
0118 Float_t total_sDSB2, total_DSBd2, total_DSBi2, total_DSBm2, total_DSBh2;
0119
0120 Double_t dose = 0;
0121 Double_t SD_dose = 0;
0122
0123 Double_t EB_yield = 0; Double_t ES_yield = 0; Double_t OHB_yield = 0; Double_t OHS_yield = 0; Double_t HB_yield = 0; Double_t HS_yield = 0;
0124 Double_t SD_EB_yield = 0; Double_t SD_ES_yield = 0; Double_t SD_OHB_yield = 0; Double_t SD_OHS_yield = 0; Double_t SD_HB_yield = 0; Double_t SD_HS_yield = 0;
0125
0126 Double_t SSB_yield = 0; Double_t SSBp_yield = 0; Double_t SSB2p_yield = 0;
0127 Double_t SD_SSB_yield = 0; Double_t SD_SSBp_yield = 0; Double_t SD_SSB2p_yield = 0;
0128 Double_t DSB_yield = 0; Double_t DSBp_yield = 0; Double_t DSBpp_yield = 0;
0129 Double_t SD_DSB_yield = 0; Double_t SD_DSBp_yield = 0; Double_t SD_DSBpp_yield = 0;
0130
0131 Double_t sSSB_yield = 0; Double_t SSBi_yield = 0; Double_t SSBd_yield = 0; Double_t SSBm_yield = 0;
0132 Double_t SD_sSSB_yield = 0; Double_t SD_SSBi_yield = 0; Double_t SD_SSBd_yield = 0; Double_t SD_SSBm_yield = 0;
0133 Double_t sDSB_yield = 0; Double_t DSBi_yield = 0; Double_t DSBd_yield = 0; Double_t DSBm_yield = 0; Double_t DSBh_yield = 0;
0134 Double_t SD_sDSB_yield = 0; Double_t SD_DSBi_yield = 0; Double_t SD_DSBd_yield = 0; Double_t SD_DSBm_yield = 0; Double_t SD_DSBh_yield = 0;
0135
0136 total_EB = 0; total_ES = 0; total_OHB = 0; total_OHS = 0; total_HB = 0; total_HS = 0;
0137
0138 total_SSB = 0; total_SSBp = 0; total_SSB2p = 0;
0139 total_SSB2 = 0; total_SSBp2 = 0; total_SSB2p2 = 0;
0140 total_DSB = 0; total_DSBp = 0; total_DSBpp = 0;
0141 total_DSB2 = 0; total_DSBp2 = 0; total_DSBpp2 = 0;
0142
0143 total_sSSB = 0; total_SSBd = 0; total_SSBi = 0; total_SSBm = 0;
0144 total_sSSB2 = 0; total_SSBd2 = 0; total_SSBi2 = 0; total_SSBm2 = 0;
0145 total_sDSB = 0; total_DSBd = 0; total_DSBi = 0; total_DSBm = 0; total_DSBh = 0;
0146 total_sDSB2 = 0; total_DSBd2 = 0; total_DSBi2 = 0; total_DSBm2 = 0; total_DSBh2 = 0;
0147
0148 Double_t eVtoJ = 1.60218e-19;
0149 Double_t EnergyDeposited_eV = 0;
0150 Double_t acc_edep = 0;
0151 Double_t acc_edep2 = 0;
0152
0153 Double_t Energy;
0154 Double_t BPID;
0155 Char_t Primary;
0156 char *primaryName = new char[32];
0157 char *type= new char[256];
0158
0159
0160 TTree* tree = (TTree*) f->Get("tuples/primary_source");
0161 Float_t number = (Float_t) tree->GetEntries();
0162
0163 if (number<2) {
0164 std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
0165 gApplication->Terminate(0);
0166 }
0167
0168 vector<pair<int,int64_t>> DSBBPID;
0169
0170
0171 tree = (TTree*) f->Get("tuples/damage");
0172 tree->SetBranchAddress("Primary", &Primary);
0173 tree->SetBranchAddress("Energy", &Energy);
0174 tree->SetBranchAddress("EaqBaseHits", &EB);
0175 tree->SetBranchAddress("EaqStrandHits", &ES);
0176 tree->SetBranchAddress("OHBaseHits", &OHB);
0177 tree->SetBranchAddress("OHStrandHits", &OHS);
0178 tree->SetBranchAddress("HBaseHits", &HB);
0179 tree->SetBranchAddress("HStrandHits", &HS);
0180 tree->SetBranchAddress("TypeClassification", type);
0181 tree->SetBranchAddress("BasePair", &BPID);
0182
0183
0184 Long64_t nentries = tree->GetEntries();
0185 for(int i = 0;i<nentries;i++){
0186 tree->GetEntry(i);
0187
0188 total_EB += EB;
0189 total_EB2 += pow(EB,2);
0190 total_ES += ES;
0191 total_ES2 += pow(ES,2);
0192 total_OHB += OHB;
0193 total_OHB2 += pow(OHB,2);
0194 total_OHS += OHS;
0195 total_OHS2 += pow(OHS,2);
0196 total_HB += HB;
0197 total_HB2 += pow(HB,2);
0198 total_HS += HS;
0199 total_HS2 += pow(HS,2);
0200
0201 if((string)type=="DSB"||(string)type=="DSB+"||(string)type=="DSB++"){
0202
0203 DSBBPID.push_back(make_pair(i,(int64_t)BPID));
0204 }
0205
0206 }
0207
0208
0209
0210
0211
0212 if (DSBBPID.size() < 2) {
0213 std::cerr << "Not enough damage to create fragments distribution." << std::endl;
0214
0215 }
0216 if (DSBBPID.size() >= 2) {
0217
0218 sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
0219 for(int ie = 0;ie<DSBBPID.size()-1;ie++){
0220 int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
0221
0222 double val = (double)dsbfragment/1000.;
0223 double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
0224 double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
0225 h1fragments->Fill(val,1./binw/1000);
0226
0227 }
0228 }
0229
0230
0231 SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number,2)))/(number -1));
0232 SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number,2)))/(number -1));
0233 SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number,2)))/(number -1));
0234 SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number,2)))/(number -1));
0235 SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number,2)))/(number -1));
0236 SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number,2)))/(number -1));
0237
0238
0239
0240
0241
0242 tree = (TTree *) f->Get("tuples/classification");
0243 tree->SetBranchAddress("Primary",&Primary);
0244 tree->SetBranchAddress("Energy", &Energy);
0245 tree->SetBranchAddress("SSB", &SSB);
0246 tree->SetBranchAddress("SSBp", &SSBp);
0247 tree->SetBranchAddress("2SSB", &SSB2p);
0248 tree->SetBranchAddress("DSB", &DSB);
0249 tree->SetBranchAddress("DSBp", &DSBp);
0250 tree->SetBranchAddress("DSBpp", &DSBpp);
0251
0252
0253 Long64_t nentriesC = tree->GetEntries();
0254 for(int i = 0;i<nentriesC;i++){
0255 tree->GetEntry(i);
0256
0257 total_SSBp += SSBp;
0258 total_SSBp2 += pow(SSBp,2);
0259 total_SSB2p += SSB2p;
0260 total_SSB2p2 += pow(SSB2p,2);
0261 total_SSB += SSB;
0262 total_SSB2 += pow(SSB,2);
0263
0264 total_DSBp += DSBp;
0265 total_DSBp2 += pow(DSBp,2);
0266 total_DSBpp += DSBpp;
0267 total_DSBpp2 += pow(DSBpp,2);
0268 total_DSB += DSB;
0269 total_DSB2 += pow(DSB,2);
0270
0271 }
0272
0273
0274 SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2)))/(number -1));
0275 SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2)))/(number -1));
0276 SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number,2)))/(number -1));
0277
0278 SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2)))/(number -1));
0279 SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2)))/(number -1));
0280 SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2)))/(number -1));
0281
0282
0283
0284
0285
0286 tree = (TTree *) f->Get("tuples/source");
0287 tree->SetBranchAddress("Primary",primaryName);
0288 tree->SetBranchAddress("Energy", &Energy);
0289 tree->SetBranchAddress("SSBd", &SSBd);
0290 tree->SetBranchAddress("SSBi", &SSBi);
0291 tree->SetBranchAddress("SSBm", &SSBm);
0292 tree->SetBranchAddress("DSBd", &DSBd);
0293 tree->SetBranchAddress("DSBi", &DSBi);
0294 tree->SetBranchAddress("DSBm", &DSBm);
0295 tree->SetBranchAddress("DSBh", &DSBh);
0296
0297 Long64_t nentriesS = tree->GetEntries();
0298 for(int i = 0;i<nentriesS;i++){
0299 tree->GetEntry(i);
0300
0301 total_SSBd += SSBd;
0302 total_SSBd2 += pow((SSBd),2);
0303 total_SSBi += SSBi;
0304 total_SSBi2 += pow((SSBi),2);
0305 total_SSBm += SSBm;
0306 total_SSBm2 += pow((SSBm),2);
0307 total_sSSB += SSBd + SSBi + SSBm;
0308 total_sSSB2 += pow((SSBd+SSBi+SSBm),2);
0309
0310 total_DSBd += DSBd;
0311 total_DSBd2 += pow(DSBd,2);
0312 total_DSBi += DSBi;
0313 total_DSBi2 += pow(DSBi,2);
0314 total_DSBm += DSBm;
0315 total_DSBm2 += pow(DSBm,2);
0316 total_DSBh += DSBh;
0317 total_DSBh2 += pow(DSBh,2);
0318 total_sDSB += DSBd + DSBi + DSBm + DSBh;
0319 total_sDSB2 += pow((DSBd+DSBi+DSBm+DSBh),2);
0320
0321 }
0322
0323
0324 SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number,2)))/(number -1));
0325 SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
0326 SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
0327 SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
0328
0329 SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number,2)))/(number -1));
0330 SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
0331 SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
0332 SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
0333 SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
0334
0335
0336
0337
0338 tree = (TTree *) f->Get("tuples/chromosome_hits");
0339 tree->SetBranchAddress("e_chromosome_kev",&EnergyDeposited_eV);
0340 nentries = tree->GetEntries();
0341 for(int i = 0;i<nentries;i++){
0342 tree->GetEntry(i);
0343 acc_edep += EnergyDeposited_eV *1e3;
0344 acc_edep2 += EnergyDeposited_eV *EnergyDeposited_eV *1e6;
0345 }
0346 tree->SetBranchAddress("e_dna_kev",&EnergyDeposited_eV);
0347 nentries = tree->GetEntries();
0348 for(int i = 0;i<nentries;i++){
0349 tree->GetEntry(i);
0350 acc_edep += EnergyDeposited_eV *1e3;
0351 acc_edep2 += EnergyDeposited_eV *EnergyDeposited_eV *1e6;
0352 }
0353
0354
0355 f->Close();
0356
0357
0358 dose = acc_edep * eVtoJ / mass;
0359
0360
0361
0362
0363 double norm = 1000;
0364
0365
0366 EB_yield = (Double_t) total_EB / dose / Nbp;
0367 ES_yield = (Double_t) total_ES / dose / Nbp;
0368 OHB_yield = (Double_t) total_OHB / dose / Nbp;
0369 OHS_yield = (Double_t) total_OHS / dose / Nbp;
0370 HB_yield = (Double_t) total_HB / dose / Nbp;
0371 HS_yield = (Double_t) total_HS / dose / Nbp;
0372
0373 SD_EB_yield = SD_EB / dose / Nbp;
0374 SD_ES_yield = SD_ES / dose / Nbp;
0375 SD_OHB_yield = SD_OHB / dose / Nbp;
0376 SD_OHS_yield = SD_OHS / dose / Nbp;
0377 SD_HB_yield = SD_HB / dose / Nbp;
0378 SD_HS_yield = SD_HS / dose / Nbp;
0379
0380
0381 SSB_yield = (Double_t) norm * total_SSB / dose / Nbp;
0382 SSBp_yield = (Double_t) norm * total_SSBp / dose / Nbp;
0383 SSB2p_yield = (Double_t) norm * total_SSB2p / dose / Nbp;
0384
0385 DSB_yield = (Double_t) norm * total_DSB / dose / Nbp;
0386 DSBp_yield = (Double_t) norm * total_DSBp / dose / Nbp;
0387 DSBpp_yield = (Double_t) norm * total_DSBpp / dose / Nbp;
0388
0389 SD_SSB_yield = norm * SD_SSB / dose / Nbp;
0390 SD_SSBp_yield = norm * SD_SSBp / dose / Nbp;
0391 SD_SSB2p_yield = norm * SD_SSB2p / dose / Nbp;
0392
0393 SD_DSB_yield = norm * SD_DSB / dose / Nbp;
0394 SD_DSBp_yield = norm * SD_DSBp / dose / Nbp;
0395 SD_DSBpp_yield = norm * SD_DSBpp / dose / Nbp;
0396
0397
0398 sSSB_yield = (Double_t) norm * total_sSSB / dose / Nbp;
0399 SSBi_yield = (Double_t) norm * total_SSBi / dose / Nbp;
0400 SSBd_yield = (Double_t) norm * total_SSBd / dose / Nbp;
0401 SSBm_yield = (Double_t) norm * total_SSBm / dose / Nbp;
0402
0403 sDSB_yield = (Double_t) norm * total_sDSB / dose / Nbp;
0404 DSBi_yield = (Double_t) norm * total_DSBi / dose / Nbp;
0405 DSBd_yield = (Double_t) norm * total_DSBd / dose / Nbp;
0406 DSBm_yield = (Double_t) norm * total_DSBm / dose / Nbp;
0407 DSBh_yield = (Double_t) norm * total_DSBh / dose / Nbp;
0408
0409 SD_sSSB_yield = norm * SD_sSSB / dose / Nbp;
0410 SD_SSBi_yield = norm * SD_SSBi / dose / Nbp;
0411 SD_SSBd_yield = norm * SD_SSBd / dose / Nbp;
0412 SD_SSBm_yield = norm * SD_SSBm / dose / Nbp;
0413
0414 SD_sDSB_yield = norm * SD_sDSB / dose / Nbp;
0415 SD_DSBi_yield = norm * SD_DSBi / dose / Nbp;
0416 SD_DSBd_yield = norm * SD_DSBd / dose / Nbp;
0417 SD_DSBm_yield = norm * SD_DSBm / dose / Nbp;
0418 SD_DSBh_yield = norm * SD_DSBh / dose / Nbp;
0419
0420
0421
0422
0423 float total_SSB_totalYield = SSB_yield + SSBp_yield + SSB2p_yield;
0424 float total_DSB_totalYield = DSB_yield + DSBp_yield + DSBpp_yield;
0425
0426 cout<<"\n" <<ifile <<'\n'
0427 <<"\nDose Absorbed (Gy): " <<dose <<'\n'
0428 <<"Particle : " <<primaryName <<'\t'
0429 <<"Energy (MeV) : " <<Energy <<'\t'
0430 <<"Number of Primaries : " <<number <<'\n'
0431 <<" Output Damage : " <<'\n'<<'\t'
0432 <<" Species Hits (Gy-1 Mbp-1) " <<'\n'<<'\t'
0433 <<"EaqBaseHits : " <<EB_yield <<" \t" <<" error %: " <<100*SD_EB_yield/EB_yield <<'\n'<<'\t'
0434 <<"EaqStrandHits : " <<ES_yield <<" \t" <<" error %: " <<100*SD_ES_yield/ES_yield <<'\n'<<'\t'
0435 <<"OHBaseHits : " <<OHB_yield <<" \t" <<" error %: " <<100*SD_OHB_yield/OHB_yield <<'\n'<<'\t'
0436 <<"OHStrandHits : " <<OHS_yield <<" \t" <<" error %: " <<100*SD_OHS_yield/OHS_yield <<'\n'<<'\t'
0437 <<"HBaseHits : " <<HB_yield <<" \t" <<" error %: " <<100*SD_HB_yield/HB_yield <<'\n'<<'\t'
0438 <<"HStrandHits : " <<HS_yield <<" \t" <<" error %: " <<100*SD_HS_yield/HS_yield <<'\n'<<'\n'<<'\t'
0439 <<" Damage yield (Gy-1 Gbp-1) " <<'\n'<<'\t'
0440 <<"SSB : " <<SSB_yield <<" \t" <<" error %: " <<100*SD_SSB_yield/SSB_yield <<'\n'<<'\t'
0441 <<"SSB+ : " <<SSBp_yield <<" \t" <<" error %: " <<100*SD_SSBp_yield/SSBp_yield <<'\n'<<'\t'
0442 <<"2SSB : " <<SSB2p_yield <<" \t" <<" error %: " <<100*SD_SSB2p_yield/SSB2p_yield <<'\n'<<'\t'
0443 <<"SSB total : " <<total_SSB_totalYield <<'\n'<<'\t'
0444 <<"DSB : " <<DSB_yield <<" \t" <<" error %: " <<100*SD_DSB_yield/DSB_yield <<'\n'<<'\t'
0445 <<"DSB+ : " <<DSBp_yield <<" \t" <<" error %: " <<100*SD_DSBp_yield/DSBp_yield <<'\n'<<'\t'
0446 <<"DSB++ : " <<DSBpp_yield <<" \t" <<" error %: " <<100*SD_DSBpp_yield/DSBpp_yield <<'\n'<<'\t'
0447 <<"DSB total : " <<total_DSB_totalYield <<'\n'<<'\n'<<'\t'
0448 <<" Breaks yield (Gy-1 Gbp-1) " <<'\n'<<'\t'
0449 <<"SSB direct : " <<SSBd_yield <<" \t" <<" error %: " <<100*SD_SSBd_yield/SSBd_yield <<'\n'<<'\t'
0450 <<"SSB indirect : " <<SSBi_yield <<" \t" <<" error %: " <<100*SD_SSBi_yield/SSBi_yield <<'\n'<<'\t'
0451 <<"SSB mixed : " <<SSBm_yield <<" \t" <<" error %: " <<100*SD_SSBm_yield/SSBi_yield <<'\n'<<'\t'
0452 <<"SSB total : " <<sSSB_yield <<" \t" <<" error %: " <<100*SD_sSSB_yield/sSSB_yield <<'\n'<<'\t'
0453 <<"DSB direct : " <<DSBd_yield <<" \t" <<" error %: " <<100*SD_DSBd_yield/DSBd_yield <<'\n'<<'\t'
0454 <<"DSB indirect : " <<DSBi_yield <<" \t" <<" error %: " <<100*SD_DSBi_yield/DSBi_yield <<'\n'<<'\t'
0455 <<"DSB mixed : " <<DSBm_yield <<" \t" <<" error %: " <<100*SD_DSBm_yield/DSBm_yield <<'\n'<<'\t'
0456 <<"DSB hybrid : " <<DSBh_yield <<" \t" <<" error %: " <<100*SD_DSBh_yield/DSBh_yield <<'\n'<<'\t'
0457 <<"DSB total : " <<sDSB_yield <<" \t" <<" error %: " <<100*SD_sDSB_yield/sDSB_yield <<'\n'<<'\n'<<'\t'
0458 <<"SSB/DSB : " <<sSSB_yield/sDSB_yield <<'\n'<<'\n';
0459
0460
0461
0462
0463 cfragment->GetCanvas()->cd();
0464 h1fragments->SetStats(false);
0465 h1fragments->SetMarkerSize(0.1);
0466 h1fragments->SetMarkerColor(kRed);
0467 h1fragments->SetLineColor (kRed);
0468 h1fragments->Scale(1./(Nbp*1e6));
0469 h1fragments->SetTitle("");
0470 h1fragments->SetYTitle("Number of Fragments (bp^{-2})");
0471 h1fragments->SetXTitle("Fragment Length (kbp)");
0472 h1fragments->SetAxisRange(10,1e4);
0473 h1fragments->SetMaximum(3e-11);
0474 h1fragments->SetMinimum(1e-15);
0475 h1fragments->Draw();
0476
0477
0478 c1->GetCanvas()->cd();
0479 pad1->cd();
0480 const Int_t n = 6;
0481 Double_t x[n] = {1,2,3,4,5,6};
0482 Double_t y[n] = {EB_yield,ES_yield,OHB_yield,OHS_yield,HB_yield,HS_yield};
0483 Double_t err_y[n] = {SD_EB_yield,SD_ES_yield,SD_OHB_yield,SD_OHS_yield,SD_HB_yield,SD_HS_yield};
0484 TGraph* gr = new TGraphErrors(n,x,y,0,err_y);
0485 gr->SetTitle("Species");
0486 gr->GetXaxis()->SetBinLabel(9, "EaqBaseHits");
0487 gr->GetXaxis()->SetBinLabel(25,"EaqStrandHits");
0488 gr->GetXaxis()->SetBinLabel(42,"OHBaseHits");
0489 gr->GetXaxis()->SetBinLabel(58,"OHStrandHits");
0490 gr->GetXaxis()->SetBinLabel(75,"HBaseHits");
0491 gr->GetXaxis()->SetBinLabel(92,"HStrandHits");
0492 gr->GetYaxis()->SetTitle("Species Hits (Gy^{-1} Mbp^{-1})");
0493 gr->GetYaxis()->SetTitleOffset(2);
0494
0495 gr->SetFillColor(49);
0496 gr->Draw("ba");
0497
0498
0499 pad2->cd();
0500 Double_t x2[n] = {1,2,3,4,5,6};
0501 Double_t y2[n] = {SSBp_yield,SSB2p_yield,SSB_yield,DSBp_yield,DSBpp_yield,DSB_yield};
0502 Double_t err_y2[n] = {SD_SSBp_yield,SD_SSB2p_yield,SD_SSB_yield,SD_DSBp_yield,SD_DSBpp_yield,SD_DSB_yield};
0503 TGraph* gr2 = new TGraphErrors(n,x2,y2,0,err_y2);
0504 gr2->SetTitle("Damage Yield");
0505 gr2->GetXaxis()->SetBinLabel(9, "SSB+");
0506 gr2->GetXaxis()->SetBinLabel(25,"2SSB");
0507 gr2->GetXaxis()->SetBinLabel(42,"SSB");
0508 gr2->GetXaxis()->SetBinLabel(58,"DSB+");
0509 gr2->GetXaxis()->SetBinLabel(75,"DSB++");
0510 gr2->GetXaxis()->SetBinLabel(92,"DSB");
0511
0512 gr2->GetYaxis()->SetTitle("Damage yield (Gy^{-1} Gbp^{-1})");
0513 gr2->GetYaxis()->SetTitleOffset(2);
0514
0515 gr2->SetFillColor(8);
0516 gr2->Draw("ba");
0517
0518
0519 pad3->cd();
0520 const Int_t m = 4;
0521 Double_t x3[m] = {1,2,3,4};
0522 Double_t y3[m] = {SSBd_yield,SSBi_yield,SSBm_yield,sSSB_yield};
0523 Double_t err_y3[m] = {SD_SSBd_yield,SD_SSBi_yield,SD_SSBm_yield,SD_sSSB_yield};
0524 TGraph* gr3 = new TGraphErrors(m,x3,y3,0,err_y3);
0525 gr3->SetTitle("Breaks Yield");
0526 gr3->GetXaxis()->SetBinLabel(8, "SSB direct");
0527 gr3->GetXaxis()->SetBinLabel(35,"SSB indirect");
0528 gr3->GetXaxis()->SetBinLabel(64,"SSB mixed");
0529 gr3->GetXaxis()->SetBinLabel(92,"SSB all");
0530
0531 gr3->GetYaxis()->SetTitle("SSB yield (Gy^{-1} Gbp^{-1})");
0532 gr3->GetYaxis()->SetTitleOffset(2);
0533
0534 gr3->SetFillColor(7);
0535 gr3->Draw("ba");
0536
0537
0538 pad4->cd();
0539 const Int_t k = 5;
0540 Double_t x4[k] = {1,2,3,4,5};
0541 Double_t y4[k] = {DSBd_yield,DSBi_yield,DSBm_yield,DSBh_yield,sDSB_yield};
0542 Double_t err_y4[k] = {SD_DSBd_yield,SD_DSBi_yield,SD_DSBm_yield,SD_DSBh_yield,SD_sDSB_yield};
0543 TGraph* gr4 = new TGraphErrors(k,x4,y4,0,err_y4);
0544 gr4->SetTitle("Breaks Yield");
0545 gr4->GetXaxis()->SetBinLabel(8,"DSB direct");
0546 gr4->GetXaxis()->SetBinLabel(29,"DSB indirect");
0547 gr4->GetXaxis()->SetBinLabel(50,"DSB mixed");
0548 gr4->GetXaxis()->SetBinLabel(71,"DSB hybrid");
0549 gr4->GetXaxis()->SetBinLabel(92,"DSB all");
0550
0551 gr4->GetYaxis()->SetTitle("DSB yield (Gy^{-1} Gbp^{-1})");
0552 gr4->GetYaxis()->SetTitleOffset(2);
0553
0554 gr4->SetFillColor(4);
0555 gr4->Draw("ba");
0556
0557 }
0558
0559
0560 bool greaterPair(const ipair& l, const ipair& r){return l.second > r.second;}
0561 bool smallerPair(const ipair& l, const ipair& r){return l.second < r.second;}
0562
0563 void BinLogX(TH1 *h) {
0564 TAxis *axis = h->GetXaxis();
0565 int bins = axis->GetNbins();
0566 Axis_t from = axis->GetXmin();
0567 Axis_t to = axis->GetXmax();
0568 Axis_t width = (to - from) / bins;
0569 Axis_t *new_bins = new Axis_t[bins + 1];
0570 for (int i = 0; i <= bins; i++) {
0571 new_bins[i] = TMath::Power(10, from + i * width);
0572 }
0573 axis->Set(bins, new_bins);
0574 delete[] new_bins;
0575
0576 }