CbmRoot
Loading...
Searching...
No Matches
CbmLitCheckBrem.cxx
Go to the documentation of this file.
1/* Copyright (C) 2009-2021 GSI/JINR-LIT, Darmstadt/Dubna
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Andrey Lebedev [committer] */
4
6
7#include "TAxis.h"
8#include "TCanvas.h"
9#include "TGraph.h"
10#include "TLegend.h"
11#include "TMultiGraph.h"
12#include "TPad.h"
13#include "TStyle.h"
17
18#include <cmath>
19#include <cstdlib>
20#include <iostream>
21
23{
24 fNofMom = 10;
25 fMom.resize(fNofMom);
26 fMom[0] = 0.05; // GeV
27 fMom[1] = 0.06; // GeV
28 fMom[2] = 0.08; // GeV
29 fMom[3] = 0.1; // GeV
30 fMom[4] = 0.2; // GeV
31 fMom[5] = 0.5; // GeV
32 fMom[6] = 1.; // GeV
33 fMom[7] = 2.; // GeV
34 fMom[8] = 5.; // GeV
35 fMom[9] = 10.; // GeV
36
37 fNofMaterials = 3;
38 fTable.resize(fNofMaterials);
39 fCalc.resize(fNofMaterials);
41
42 //N2 gas
44 m0.fA = 14.00674;
45 m0.fZ = 7;
46 m0.fRho = 1.250; //* 1e-3; // [g/cm3]
47 m0.fX0 = 47.1; // [cm]
48 m0.fPHIRAD.resize(fNofMom);
49 m0.fPHIRAD[0] = 17.63;
50 m0.fPHIRAD[1] = 17.99;
51 m0.fPHIRAD[2] = 18.51;
52 m0.fPHIRAD[3] = 18.87;
53 m0.fPHIRAD[4] = 19.81;
54 m0.fPHIRAD[5] = 20.60;
55 m0.fPHIRAD[6] = 20.96;
56 m0.fPHIRAD[7] = 21.18;
57 m0.fPHIRAD[8] = 21.36;
58 m0.fPHIRAD[9] = 21.43;
59 fMaterials[0] = m0;
60
61 // Cu
63 m1.fA = 63.546;
64 m1.fZ = 29;
65 m1.fRho = 8.96; // [g/cm3]
66 m1.fX0 = 1.43; // [cm]
67 m1.fPHIRAD.resize(fNofMom);
68 m1.fPHIRAD[0] = 14.36;
69 m1.fPHIRAD[1] = 14.60;
70 m1.fPHIRAD[2] = 14.95;
71 m1.fPHIRAD[3] = 15.19;
72 m1.fPHIRAD[4] = 15.81;
73 m1.fPHIRAD[5] = 16.30;
74 m1.fPHIRAD[6] = 16.52;
75 m1.fPHIRAD[7] = 16.66;
76 m1.fPHIRAD[8] = 16.76;
77 m1.fPHIRAD[9] = 16.80;
78 fMaterials[1] = m1;
79
80 // Sn
82 m2.fA = 118.710;
83 m2.fZ = 50;
84 m2.fRho = 7.31; // [g/cm3]
85 m2.fX0 = 1.21; // [cm]
86 m2.fPHIRAD.resize(fNofMom);
87 m2.fPHIRAD[0] = 13.31;
88 m2.fPHIRAD[1] = 13.53;
89 m2.fPHIRAD[2] = 13.83;
90 m2.fPHIRAD[3] = 14.05;
91 m2.fPHIRAD[4] = 14.58;
92 m2.fPHIRAD[5] = 15.01;
93 m2.fPHIRAD[6] = 15.20;
94 m2.fPHIRAD[7] = 15.32;
95 m2.fPHIRAD[8] = 15.41;
96 m2.fPHIRAD[9] = 15.44;
97 fMaterials[2] = m2;
98}
99
101
103{
104 gStyle->SetCanvasColor(kWhite);
105 gStyle->SetFrameFillColor(kWhite);
106 gStyle->SetPadColor(kWhite);
107 gStyle->SetStatColor(kWhite);
108 gStyle->SetTitleFillColor(kWhite);
109 gStyle->SetPalette(1);
110
111 CreateGraphs();
112 FillGraphs();
113 DrawGraphs();
114}
115
117{
118 TCanvas* c1 = new TCanvas("brem_loss", "c1", 800, 800);
119 c1->SetGrid();
120
121 for (int i = 0; i < fNofMaterials; i++) {
122 fTable[i]->SetLineStyle(3);
123 fTable[i]->SetLineColor(2);
124 fTable[i]->SetMarkerColor(2);
125 fTable[i]->SetLineWidth(3);
126 fTable[i]->SetMarkerSize(2);
127
128 fCalc[i]->SetLineStyle(1);
129 fCalc[i]->SetLineColor(4);
130 fCalc[i]->SetMarkerColor(4);
131 fCalc[i]->SetLineWidth(3);
132 fCalc[i]->SetMarkerSize(2);
133 }
134 fTable[0]->SetMarkerStyle(20);
135 fTable[1]->SetMarkerStyle(26);
136 fTable[2]->SetMarkerStyle(27);
137 // fTable[3]->SetMarkerStyle(25);
138
139 fCalc[0]->SetMarkerStyle(20);
140 fCalc[1]->SetMarkerStyle(26);
141 fCalc[2]->SetMarkerStyle(27);
142 // fCalc[3]->SetMarkerStyle(25);
143
144 TMultiGraph* mg = new TMultiGraph();
145 for (int i = 0; i < fNofMaterials; i++) {
146 mg->Add(fTable[i]);
147 mg->Add(fCalc[i]);
148 }
149 mg->SetMinimum(0.001);
150 mg->SetMaximum(10.);
151 gPad->SetLogx();
152 gPad->SetLogy();
153
154 mg->Draw("ALP");
155
156 mg->GetXaxis()->SetTitle("Electron momentum [GeV/c]");
157 mg->GetYaxis()->SetTitle("Brehmstrahlung energy loss [GeV/cm]");
158 mg->GetXaxis()->SetLimits(0.04, 11);
159
160 TLegend* l1 = new TLegend(0.20, 0.97, 0.9, 0.7);
161 l1->SetFillColor(kWhite);
162 l1->SetHeader("Energy losses for muons in iron vs. momentum");
163 l1->AddEntry(fTable[0], "N2 (table)", "lp");
164 l1->AddEntry(fCalc[0], "N2 (calculation)", "lp");
165 l1->AddEntry(fTable[1], "Cu (table)", "lp");
166 l1->AddEntry(fCalc[1], "Cu (calculation)", "lp");
167 l1->AddEntry(fTable[2], "Sn (table)", "lp");
168 l1->AddEntry(fCalc[2], "Sn (calculation)", "lp");
169 l1->Draw();
170
171 c1->SaveAs("brem_loss.gif");
172 c1->SaveAs("brem_loss.eps");
173 c1->SaveAs("brem_loss.svg");
174}
175
177{
178 for (Int_t i = 0; i < fNofMom; i++) {
179 Double_t p = fMom[i];
180
181 for (Int_t j = 0; j < fNofMaterials; j++) {
183 // Double_t brem_calc = p / (m.fX0);
184 // Double_t Z2 = (m.fZ*m.fZ);
185 // Double_t X0 = 1./(m.fA * 716.408) * (Z2 * (std::log(184.15/std::pow(Z, 1./3.)) ) + Z*)
186 Double_t X0 = (716.4 * m.fA) / (m.fZ * (m.fZ + 1) * std::log(287. / std::sqrt(m.fZ)));
187 std::cout << "X0=" << m.fX0 * m.fRho << " X0calc=" << X0 << std::endl;
188 Double_t brem_calc = p / X0;
189 fCalc[j]->SetPoint(i, p, brem_calc);
190
191 Double_t brem_table =
192 (6.022045e23 / m.fA) * 5.794661e-28 * (m.fZ * m.fZ) * (p + 0.000511) * m.fPHIRAD[i]; // * m.fRho;
193 fTable[j]->SetPoint(i, p, brem_table);
194 }
195 }
196}
197
199{
200 for (int i = 0; i < fNofMaterials; i++) {
201 fTable[i] = new TGraph();
202 fCalc[i] = new TGraph();
203 }
204}
205
ClassImp(CbmConverterManager)
Calculation of multiple scattering and energy loss.
Data class for track parameters.
virtual void Check()
std::vector< TGraph * > fCalc
std::vector< double > fMom
std::vector< TGraph * > fTable
std::vector< CbmLitSimpleMaterial > fMaterials
std::vector< Double_t > fPHIRAD