Finalize and merge results from all threads.
135 {
137
138 RadiationMapsMaker::Report maps;
139
140
141 std::vector<std::vector<double> *> pVal = {
142 &(maps.m_rz_tid),&(maps.m_rz_eion),&(maps.m_rz_niel),&(maps.m_rz_h20),&(maps.m_rz_neut),&(maps.m_rz_chad),
143 &(maps.m_full_rz_tid),&(maps.m_full_rz_eion),&(maps.m_full_rz_niel),&(maps.m_full_rz_h20),&(maps.m_full_rz_neut),&(maps.m_full_rz_chad)
144 };
145
146 std::vector<std::vector<double> *> pVal3d = {
147 &(maps.m_3d_tid),&(maps.m_3d_eion),&(maps.m_3d_niel),&(maps.m_3d_h20),&(maps.m_3d_neut),&(maps.m_3d_chad)
148 };
149
150 std::vector<std::vector<double> *> pValSpec = {
151 &(maps.m_rz_neut_spec),&(maps.m_rz_gamm_spec),&(maps.m_rz_elec_spec),&(maps.m_rz_muon_spec),&(maps.m_rz_pion_spec),&(maps.m_rz_prot_spec),&(maps.m_rz_rest_spec),
152 &(maps.m_full_rz_neut_spec),&(maps.m_full_rz_gamm_spec),&(maps.m_full_rz_elec_spec),&(maps.m_full_rz_muon_spec),&(maps.m_full_rz_pion_spec),&(maps.m_full_rz_prot_spec),&(maps.m_full_rz_rest_spec)
153 };
154
155 std::vector<int> nBinslogE = {
158 };
159
160 std::vector<std::vector<double> *> pValThetaSpec = {
161 &(maps.m_theta_full_rz_neut_spec),&(maps.m_theta_full_rz_gamm_spec),&(maps.m_theta_full_rz_elec_spec),&(maps.m_theta_full_rz_muon_spec),&(maps.m_theta_full_rz_pion_spec),&(maps.m_theta_full_rz_prot_spec),&(maps.m_theta_full_rz_rchgd_spec),&(maps.m_theta_full_rz_rneut_spec)
162 };
163
164 std::vector<int> nBinsThetalogE = {
166 };
167
168 for(unsigned int hi=0;hi<pVal.size();hi++) {
169
170
171
172 (pVal[hi])->resize(0);
173
174
175
176
177
179 }
180
181
182
183 for(unsigned int hi=0;hi<pVal3d.size();hi++) {
184 (pVal3d[hi])->resize(0);
186 }
187
188
189
190 for(unsigned int hi=0;hi<pValSpec.size();hi++) {
191 (pValSpec[hi])->resize(0);
193 }
194
195
196
197 for(unsigned int hi=0;hi<pValThetaSpec.size();hi++) {
198 (pValThetaSpec[hi])->resize(0);
200 }
201
202
203
204 maps.m_rz_tid_time .resize(0);
205 maps.m_rz_ht_time .resize(0);
206 maps.m_full_rz_tid_time .resize(0);
207 maps.m_full_rz_ht_time .resize(0);
208
209 maps.m_rz_element .resize(0);
210 maps.m_full_rz_element .resize(0);
211
213
214
215 maps.m_rz_vol .resize(0);
216 maps.m_rz_norm.resize(0);
217
218 maps.m_full_rz_vol.resize(0);
219 maps.m_full_rz_norm.resize(0);
220
221 maps.m_3d_vol .resize(0);
222 maps.m_3d_norm.resize(0);
223 }
224
225
226
227
228
233
236
238
239
242
245
248 }
249
250
251
254
256
257
258
259
260 std::vector<const char *> h2dNames = {
261 "rz_tid","rz_eion","rz_niel","rz_h20","rz_neut","rz_chad",
262 "full_rz_tid","full_rz_eion","full_rz_niel","full_rz_h20","full_rz_neut","full_rz_chad"
263 };
264
265 std::vector<const char *> h2dZTitles = {
266 "TID [Gy]","E_{ion}/V [MeV/cm^{3}]","NIEL [n_{eq}/cm^{2}]","SEE [h_{>20 MeV}/cm^{2}]","FLUX [n_{>100 keV}/cm^{2}]","FLUX [h_{charged}/cm^{2}]",
267 "TID [Gy]","E_{ion}/V [MeV/cm^{3}]","NIEL [n_{eq}/cm^{2}]","SEE [h_{>20 MeV}/cm^{2}]","FLUX [n_{>100 keV}/cm^{2}]","FLUX [h_{charged}/cm^{2}]"
268 };
269
270 std::vector<double> zMin = {
273 };
274
275 std::vector<double> zMax = {
278 };
279
280 std::vector<double> rMin = {
283 };
284
285 std::vector<double> rMax = {
288 };
289
291
292 TH2D * h_rz_vol = 0;
293 TH2D * h_rz_norm = 0;
294 TH2D * h_full_rz_vol = 0;
295 TH2D * h_full_rz_norm = 0;
296
297 for(unsigned int hi=0;hi<h2dNames.size();hi++) {
298 TH2D *h2d =
new TH2D(h2dNames[hi],h2dNames[hi],
m_config.nBinsz,zMin[hi],zMax[hi],
m_config.nBinsr,rMin[hi],rMax[hi]);
299 h2d->SetXTitle(xtitle);
300 h2d->SetYTitle("r [cm]");
301 h2d->SetZTitle(h2dZTitles[hi]);
302 if (hi==0 && !
m_config.materials.empty()) {
303
304
305
306
307
308
309
314
315 h_rz_vol ->SetXTitle(xtitle);
316 h_rz_norm ->SetXTitle(xtitle);
317 h_rz_vol ->SetYTitle("r [cm]");
318 h_rz_norm ->SetYTitle("r [cm]");
319 std::string
hname(
"Volume fraction of");
321 for(
const std::string& matName :
m_config.materials) {
325 }
326 h_rz_vol ->SetZTitle(
hname.data());
327 h_rz_norm ->SetZTitle("Volume norm");
328
329 h_full_rz_vol ->SetXTitle(xtitle);
330 h_full_rz_norm ->SetXTitle(xtitle);
331 h_full_rz_vol ->SetYTitle("r [cm]");
332 h_full_rz_norm ->SetYTitle("r [cm]");
333 h_full_rz_vol ->SetZTitle(
hname.data());
334 h_full_rz_norm ->SetZTitle("Volume norm");
335 }
336
337
338 for(
int i=0;
i<h2d->GetNbinsX();
i++) {
339 for(int j=0;j<h2d->GetNbinsY();j++) {
340 int iBin = h2d->GetBin(i+1,j+1);
342 double r0=h2d->GetYaxis()->GetBinLowEdge(j+1);
343 double r1=h2d->GetYaxis()->GetBinUpEdge(j+1);
344 double z0=h2d->GetXaxis()->GetBinLowEdge(i+1);
345 double z1=h2d->GetXaxis()->GetBinUpEdge(i+1);
346 double vol=(z1-
z0)*
M_PI*(r1*r1-r0*r0);
347
348 if (
m_config.zMinFull >= 0 ) vol *= 2;
349
350 if (
m_config.posYOnly ) vol *= 0.5;
351 double val = (*(pVal[hi]))[vBin];
352 h2d->SetBinContent(iBin,val/vol);
353 if (hi ==0 && !
m_config.materials.empty()) {
354
355
356 val =maps.m_rz_vol[vBin];
357 h_rz_vol->SetBinContent(iBin,val/vol);
358
359 val =maps.m_rz_norm[vBin];
360 h_rz_norm->SetBinContent(iBin,val/vol);
361 }
362 if (hi ==h2dNames.size()/2 && !
m_config.materials.empty()) {
363
364
365 val =maps.m_full_rz_vol[vBin];
366 h_full_rz_vol->SetBinContent(iBin,val/vol);
367
368 val =maps.m_full_rz_norm[vBin];
369 h_full_rz_norm->SetBinContent(iBin,val/vol);
370 }
371 }
372 }
373 h2d->Write();
374 h2d->Delete();
375 if (hi ==h2dNames.size()/2 && !
m_config.materials.empty()) {
376 h_rz_vol->Write();
377 h_rz_vol->Delete();
378 h_rz_norm->Write();
379 h_rz_norm->Delete();
380 h_full_rz_vol->Write();
381 h_full_rz_vol->Delete();
382 h_full_rz_norm->Write();
383 h_full_rz_norm->Delete();
384 }
385 }
386
387 std::vector<const char *> h3dNames = {
388 "h3d_tid","h3d_eion","h3d_niel","h3d_h20","h3d_neut","h3d_chad"
389 };
390
391 std::vector<const char *> h3dTitles = {
392 "TID [Gy]","E_{ion}/V [MeV/cm^{3}]","NIEL [n_{eq}/cm^{2}]","SEE [h_{>20 MeV}/cm^{2}]","FLUX [n_{>100 keV}/cm^{2}]","FLUX [h_{charged}/cm^{2}]"
393 };
394
395 TH3D * h_3d_vol = 0;
396 TH3D * h_3d_norm = 0;
397
398 for(unsigned int hi=0;hi<h3dNames.size();hi++) {
399 TH3D *h3d =
new TH3D(h3dNames[hi],h3dNames[hi],
m_config.nBinsz3d,
m_config.zMinZoom,
m_config.zMaxZoom,
m_config.nBinsr3d,
m_config.rMinZoom,
m_config.rMaxZoom,
m_config.nBinsphi3d,
m_config.phiMinZoom,
m_config.phiMaxZoom);
400 h3d->SetXTitle(xtitle);
401 h3d->SetYTitle("r [cm]");
402 h3d->SetZTitle("#phi [#circ]");
403 h3d->SetTitle(h3dTitles[hi]);
404 if (hi == 0 && !
m_config.materials.empty()) {
405 h_3d_vol =
new TH3D(
"h3d_vol" ,
"h3d_vol" ,
m_config.nBinsz3d,
m_config.zMinZoom,
m_config.zMaxZoom,
m_config.nBinsr3d,
m_config.rMinZoom,
m_config.rMaxZoom,
m_config.nBinsphi3d,
m_config.phiMinZoom,
m_config.phiMaxZoom);
406 h_3d_norm =
new TH3D(
"h3d_norm",
"h3d_norm",
m_config.nBinsz3d,
m_config.zMinZoom,
m_config.zMaxZoom,
m_config.nBinsr3d,
m_config.rMinZoom,
m_config.rMaxZoom,
m_config.nBinsphi3d,
m_config.phiMinZoom,
m_config.phiMaxZoom);
407 h_3d_vol ->SetXTitle(xtitle);
408 h_3d_norm ->SetXTitle(xtitle);
409 h_3d_vol ->SetYTitle("r [cm]");
410 h_3d_norm ->SetYTitle("r [cm]");
411 h_3d_vol ->SetZTitle("#phi [#circ]");
412 h_3d_norm ->SetZTitle("#phi [#circ]");
413 std::string
hname(
"Volume fraction of");
415 for(
const std::string& matName :
m_config.materials) {
419 }
420 h_3d_vol ->SetTitle(
hname.data());
421 h_3d_norm ->SetTitle("Volume norm");
422 }
423
424 for(
int i=0;
i<h3d->GetNbinsX();
i++) {
425 for(int j=0;j<h3d->GetNbinsY();j++) {
426 for(
int k=0;
k<h3d->GetNbinsZ();
k++) {
428 int iBin = h3d->GetBin(i+1,j+1,k+1);
429 double phi0=h3d->GetZaxis()->GetBinLowEdge(k+1);
430 double phi1=h3d->GetZaxis()->GetBinUpEdge(k+1);
431 double r0=h3d->GetYaxis()->GetBinLowEdge(j+1);
432 double r1=h3d->GetYaxis()->GetBinUpEdge(j+1);
433 double z0=h3d->GetXaxis()->GetBinLowEdge(i+1);
434 double z1=h3d->GetXaxis()->GetBinUpEdge(i+1);
435 double vol=(z1-
z0)*
M_PI*(r1*r1-r0*r0)*(phi1-
phi0)/360.;
436
437 if (
m_config.zMinFull >= 0 ) vol *= 2;
438
439
442
444 vol *= 0.5;
445 }
446 double val = (*(pVal3d[hi]))[vBin];
447 h3d->SetBinContent(iBin,val/vol);
448 if (hi == 0 && !
m_config.materials.empty()) {
449
450 val =maps.m_3d_vol[vBin];
451 h_3d_vol->SetBinContent(iBin,val/vol);
452
453 val =maps.m_3d_norm[vBin];
454 h_3d_norm->SetBinContent(iBin,val/vol);
455 }
456 }
457 }
458 }
459 h3d->Write();
460 h3d->Delete();
461 if (hi == 0 && !
m_config.materials.empty()) {
462 h_3d_vol->Write();
463 h_3d_vol->Delete();
464 h_3d_norm->Write();
465 h_3d_norm->Delete();
466 }
467 }
468
469
470
471 std::vector<const char *> hSpecNames = {
472 "rz_neut_spec","rz_gamm_spec","rz_elec_spec","rz_muon_spec","rz_pion_spec","rz_prot_spec","rz_rest_spec",
473 "full_rz_neut_spec","full_rz_gamm_spec","full_rz_elec_spec","full_rz_muon_spec","full_rz_pion_spec","full_rz_prot_spec","full_rz_rest_spec"
474 };
475
476 std::vector<const char *> hSpecTitles = {
477 "FLUX [n(log_{10}(E/MeV))/cm^{2}]","FLUX [#gamma(log_{10}(E/MeV))/cm^{2}]","FLUX [e^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [#mu^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [#pi^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [p(log_{10}(E/MeV))/cm^{2}]","FLUX [rest(log_{10}(E/MeV))/cm^{2}]",
478 "FLUX [n(log_{10}(E/MeV))/cm^{2}]","FLUX [#gamma(log_{10}(E/MeV))/cm^{2}]","FLUX [e^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [#mu^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [#pi^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [p(log_{10}(E/MeV))/cm^{2}]","FLUX [rest(log_{10}(E/MeV))/cm^{2}]"
479 };
480
481 std::vector<double> zMinSpec = {
484 };
485
486 std::vector<double> zMaxSpec = {
489 };
490
491 std::vector<double> rMinSpec = {
494 };
495
496 std::vector<double> rMaxSpec = {
499 };
500
501 std::vector<double> logEMin = {
504 };
505
506 std::vector<double> logEMax = {
509 };
510
511 for(unsigned int hi=0;hi<hSpecNames.size();hi++) {
512 TH3D *hSpec =
new TH3D(hSpecNames[hi],hSpecNames[hi],
m_config.nBinsz,zMinSpec[hi],zMaxSpec[hi],
m_config.nBinsr,rMinSpec[hi],rMaxSpec[hi],nBinslogE[hi],logEMin[hi],logEMax[hi]);
513 hSpec->SetXTitle(xtitle);
514 hSpec->SetYTitle("r [cm]");
515 hSpec->SetZTitle("log_{10}(E/MeV)");
516 hSpec->SetTitle(hSpecTitles[hi]);
517
518 for(
int i=0;
i<hSpec->GetNbinsX();
i++) {
519 for(int j=0;j<hSpec->GetNbinsY();j++) {
520 double r0=hSpec->GetYaxis()->GetBinLowEdge(j+1);
521 double r1=hSpec->GetYaxis()->GetBinUpEdge(j+1);
522 double z0=hSpec->GetXaxis()->GetBinLowEdge(i+1);
523 double z1=hSpec->GetXaxis()->GetBinUpEdge(i+1);
524 double vol=(z1-
z0)*
M_PI*(r1*r1-r0*r0);
525
526 if (
m_config.zMinFull >= 0 ) vol *= 2;
527
528 if (
m_config.posYOnly ) vol *= 0.5;
530
531 for(
int k=0;
k<hSpec->GetNbinsZ();
k++) {
532 int kBin = hSpec->GetBin(i+1,j+1,k+1);
533 int vBinE =
m_config.nBinsr*nBinslogE[hi]*
i+j*nBinslogE[hi]+
k;
534 val = (*(pValSpec[hi]))[vBinE];
535 hSpec->SetBinContent(kBin,val/vol);
536 }
537 }
538 }
539 hSpec->Write();
540 hSpec->Delete();
541 }
542
543 std::vector<const char *> hThetaSpecNames = {
544 "theta_dphi_full_rz_neut_spec","theta_dphi_full_rz_gamm_spec","theta_dphi_full_rz_elec_spec","theta_dphi_full_rz_muon_spec","theta_dphi_full_rz_pion_spec","theta_dphi_full_rz_prot_spec","theta_dphi_full_rz_rchgd_spec","theta_dphi_full_rz_rneut_spec"
545 };
546
547 std::vector<const char *> hThetaSpecTitles = {
548 "FLUX [n(log_{10}(E/MeV))/cm^{2}]","FLUX [#gamma(log_{10}(E/MeV))/cm^{2}]","FLUX [e^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [#mu^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [#pi^{#pm}(log_{10}(E/MeV))/cm^{2}]","FLUX [p(log_{10}(E/MeV))/cm^{2}]","FLUX [rest^{chgd}(log_{10}(E/MeV))/cm^{2}]","FLUX [rest^{neut}(log_{10}(E/MeV))/cm^{2}]"
549 };
550
551 std::vector<double> thetalogEMin = {
553 };
554
555 std::vector<double> thetalogEMax = {
557 };
558
559 for(unsigned int hi=0;hi<hThetaSpecNames.size();hi++) {
561 for(
int j=0;j<
m_config.nBinsdphi;j++) {
562 TString
hname(hThetaSpecNames[hi]);
571 TH3D * hThetaSpec =
new TH3D(
hname.Data(),
hname.Data(),
m_config.nBinsz,
m_config.zMinFull,
m_config.zMaxFull,
m_config.nBinsr,
m_config.rMinFull,
m_config.rMaxFull,nBinsThetalogE[hi],thetalogEMin[hi],thetalogEMax[hi]);
572
573 hThetaSpec->SetXTitle(xtitle);
574 hThetaSpec->SetYTitle("r [cm]");
575 hThetaSpec->SetZTitle("log_{10}(E/MeV)");
576 hname = TString(hThetaSpecTitles[hi]);
585 hThetaSpec->SetTitle(
hname.Data());
586
587 for(
int k=0;
k<hThetaSpec->GetNbinsX();
k++) {
588 for(
int l=0;
l<hThetaSpec->GetNbinsY();
l++) {
589 double r0=hThetaSpec->GetYaxis()->GetBinLowEdge(l+1);
590 double r1=hThetaSpec->GetYaxis()->GetBinUpEdge(l+1);
591 double z0=hThetaSpec->GetXaxis()->GetBinLowEdge(k+1);
592 double z1=hThetaSpec->GetXaxis()->GetBinUpEdge(k+1);
593 double vol=(z1-
z0)*
M_PI*(r1*r1-r0*r0);
594
595 if (
m_config.zMinFull >= 0 ) vol *= 2;
596
597 if (
m_config.posYOnly ) vol *= 0.5;
599
600 for(
int m=0;
m<hThetaSpec->GetNbinsZ();
m++) {
601 int mBin = hThetaSpec->GetBin(k+1,l+1,m+1);
603 val = (*(pValThetaSpec[hi]))[vBinETh];
604 hThetaSpec->SetBinContent(mBin,val/vol);
605 }
606 }
607 }
608 hThetaSpec->Write();
609 hThetaSpec->Delete();
610 }
611 }
612 }
613
614
615 TH3D * h_rz_tid_time =
new TH3D(
"rz_tid_time" ,
"rz_tid_time" ,
m_config.nBinsz,
m_config.zMinZoom,
m_config.zMaxZoom,
m_config.nBinsr,
m_config.rMinZoom,
m_config.rMaxZoom,
m_config.nBinslogT,
m_config.logTMin,
m_config.logTMax);
616 h_rz_tid_time ->SetXTitle(xtitle);
617 h_rz_tid_time ->SetYTitle("r [cm]");
618 h_rz_tid_time ->SetZTitle("log_{10}(t_{cut}/s)");
619
620 TH3D * h_rz_ht_time =
new TH3D(
"rz_ht_time" ,
"rz_ht_time" ,
m_config.nBinsz,
m_config.zMinZoom,
m_config.zMaxZoom,
m_config.nBinsr,
m_config.rMinZoom,
m_config.rMaxZoom,
m_config.nBinslogT,
m_config.logTMin,
m_config.logTMax);
621 h_rz_ht_time ->SetXTitle(xtitle);
622 h_rz_ht_time ->SetYTitle("r [cm]");
623 h_rz_ht_time ->SetZTitle("log_{10}(t_{cut}/s)");
624
625
626 TH3D * h_rz_element =
new TH3D(
"rz_element" ,
"rz_element" ,
m_config.nBinsz,
m_config.zMinZoom,
m_config.zMaxZoom,
m_config.nBinsr,
m_config.rMinZoom,
m_config.rMaxZoom,
m_config.elemZMax-
m_config.elemZMin+1,
m_config.elemZMin-0.5,
m_config.elemZMax+0.5);
627 h_rz_element ->SetXTitle(xtitle);
628 h_rz_element ->SetYTitle("r [cm]");
629 h_rz_element ->SetZTitle("Z");
630
631
632 for(
int i=0;
i<h_rz_tid_time->GetNbinsX();
i++) {
633 for(int j=0;j<h_rz_tid_time->GetNbinsY();j++) {
634 double r0=h_rz_tid_time->GetYaxis()->GetBinLowEdge(j+1);
635 double r1=h_rz_tid_time->GetYaxis()->GetBinUpEdge(j+1);
636 double z0=h_rz_tid_time->GetXaxis()->GetBinLowEdge(i+1);
637 double z1=h_rz_tid_time->GetXaxis()->GetBinUpEdge(i+1);
638 double vol=(z1-
z0)*
M_PI*(r1*r1-r0*r0);
639
640 if (
m_config.zMinFull >= 0 ) vol *= 2;
641
642 if (
m_config.posYOnly ) vol *= 0.5;
644
645 for(
int k=0;
k<h_rz_tid_time->GetNbinsZ();
k++) {
646 int kBin = h_rz_tid_time->GetBin(i+1,j+1,k+1);
648
649 val =maps.m_rz_tid_time[vBinT];
650 h_rz_tid_time->SetBinContent(kBin,val/vol);
651
652 val =maps.m_rz_ht_time[vBinT];
653 h_rz_ht_time->SetBinContent(kBin,val/vol);
654 }
655
656 for(
int k=0;
k<h_rz_element->GetNbinsZ();
k++) {
657 int kBin = h_rz_element->GetBin(i+1,j+1,k+1);
659 val =maps.m_rz_element[vBinElem];
660 h_rz_element->SetBinContent(kBin,val/vol);
661 }
662 }
663 }
664
665 h_rz_tid_time->Write();
666 h_rz_tid_time->Delete();
667 h_rz_ht_time->Write();
668 h_rz_ht_time->Delete();
669 h_rz_element->Write();
670 h_rz_element->Delete();
671
672
673 TH3D * h_full_rz_tid_time =
new TH3D(
"full_rz_tid_time" ,
"full_rz_tid_time" ,
m_config.nBinsz,
m_config.zMinFull,
m_config.zMaxFull,
m_config.nBinsr,
m_config.rMinFull,
m_config.rMaxFull,
m_config.nBinslogT,
m_config.logTMin,
m_config.logTMax);
674 h_full_rz_tid_time->SetXTitle(xtitle);
675 h_full_rz_tid_time->SetYTitle("r [cm]");
676 h_full_rz_tid_time->SetZTitle("log_{10}(t_{cut}/s)");
677
678 TH3D * h_full_rz_ht_time =
new TH3D(
"full_rz_ht_time" ,
"full_rz_ht_time" ,
m_config.nBinsz,
m_config.zMinFull,
m_config.zMaxFull,
m_config.nBinsr,
m_config.rMinFull,
m_config.rMaxFull,
m_config.nBinslogT,
m_config.logTMin,
m_config.logTMax);
679 h_full_rz_ht_time->SetXTitle(xtitle);
680 h_full_rz_ht_time->SetYTitle("r [cm]");
681 h_full_rz_ht_time->SetZTitle("log_{10}(t_{cut}/s)");
682
683
684 TH3D * h_full_rz_element =
new TH3D(
"full_rz_element" ,
"full_rz_element" ,
m_config.nBinsz,
m_config.zMinFull,
m_config.zMaxFull,
m_config.nBinsr,
m_config.rMinFull,
m_config.rMaxFull,
m_config.elemZMax-
m_config.elemZMin+1,
m_config.elemZMin-0.5,
m_config.elemZMax+0.5);
685 h_full_rz_element->SetXTitle(xtitle);
686 h_full_rz_element->SetYTitle("r [cm]");
687 h_full_rz_element->SetZTitle("Z");
688
689
690 for(
int i=0;
i<h_full_rz_tid_time->GetNbinsX();
i++) {
691 for(int j=0;j<h_full_rz_tid_time->GetNbinsY();j++) {
692 double r0=h_full_rz_tid_time->GetYaxis()->GetBinLowEdge(j+1);
693 double r1=h_full_rz_tid_time->GetYaxis()->GetBinUpEdge(j+1);
694 double z0=h_full_rz_tid_time->GetXaxis()->GetBinLowEdge(i+1);
695 double z1=h_full_rz_tid_time->GetXaxis()->GetBinUpEdge(i+1);
696 double vol=(z1-
z0)*
M_PI*(r1*r1-r0*r0);
697
698 if (
m_config.zMinFull >= 0 ) vol *= 2;
699
700 if (
m_config.posYOnly ) vol *= 0.5;
702
703 for(
int k=0;
k<h_full_rz_tid_time->GetNbinsZ();
k++) {
704 int kBin = h_full_rz_tid_time->GetBin(i+1,j+1,k+1);
706
707 val =maps.m_full_rz_tid_time[vBinT];
708 h_full_rz_tid_time->SetBinContent(kBin,val/vol);
709
710 val =maps.m_full_rz_ht_time[vBinT];
711 h_full_rz_ht_time->SetBinContent(kBin,val/vol);
712 }
713
714 for(
int k=0;
k<h_full_rz_element->GetNbinsZ();
k++) {
715 int kBin = h_full_rz_element->GetBin(i+1,j+1,k+1);
717 val =maps.m_full_rz_element[vBinElem];
718 h_full_rz_element->SetBinContent(kBin,val/vol);
719 }
720 }
721 }
722 h_full_rz_tid_time->Write();
723 h_full_rz_tid_time->Delete();
724 h_full_rz_ht_time->Write();
725 h_full_rz_ht_time->Delete();
726 h_full_rz_element->Write();
727 h_full_rz_element->Delete();
728
730
731 return StatusCode::SUCCESS;
732 }
const Report & getReport() const
Retrieve my maps.
l
Printing final latex table to .tex output file.
const double r0
electron radius{cm}
void merge(const Report &maps)