Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
nptool
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
np
nptool
Commits
bebb7231
Commit
bebb7231
authored
5 months ago
by
Pierre Morfouace
Browse files
Options
Downloads
Patches
Plain Diff
Adding macro for charge
parent
a15b619a
No related branches found
No related tags found
1 merge request
!27
Draft: [Epic] Preparation of the environement for the new GaseousDetectorScorers...
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Projects/ana_e850/macro/Charge/FillHistoCharge.C
+138
-0
138 additions, 0 deletions
Projects/ana_e850/macro/Charge/FillHistoCharge.C
Projects/ana_e850/macro/Charge/FitCharge.C
+168
-0
168 additions, 0 deletions
Projects/ana_e850/macro/Charge/FitCharge.C
with
306 additions
and
0 deletions
Projects/ana_e850/macro/Charge/FillHistoCharge.C
0 → 100644
+
138
−
0
View file @
bebb7231
TChain
*
chain
;
TCutG
*
cut10Be
[
8
];
/////////////////////////////////////////////////////////////////
void
LoadCut
(
string
part
){
string
path
=
"../Mass/cut/"
+
part
+
"/cut10Be.root"
;
TFile
*
fcut
=
new
TFile
(
path
.
c_str
());
for
(
int
i
=
0
;
i
<
8
;
i
++
){
cut10Be
[
i
]
=
(
TCutG
*
)
fcut
->
Get
(
Form
(
"cut10Be_det%i"
,
i
+
1
));
}
}
/////////////////////////////////////////////////////////////////
void
FillHistoCharge
(
string
part
=
"part1"
){
LoadCut
(
part
);
chain
=
new
TChain
(
"PhysicsTree"
);
if
(
part
==
"part1"
){
//chain->Add("../../root/analysis/run_28.root");
//chain->Add("../../root/analysis/run_29.root");
//chain->Add("../../root/analysis/run_30.root");
//chain->Add("../../root/analysis/run_32.root");
//chain->Add("../../root/analysis/run_36.root");
//chain->Add("../../root/analysis/run_37.root");
//chain->Add("../../root/analysis/run_39.root");
//chain->Add("../../root/analysis/run_41.root");
//chain->Add("../../root/analysis/run_42.root");
//chain->Add("../../root/analysis/run_43.root");
//chain->Add("../../root/analysis/run_44.root");
//chain->Add("../../root/analysis/run_45.root");
//chain->Add("../../root/analysis/run_46.root");
chain
->
Add
(
"../../root/analysis/run_48.root"
);
//chain->Add("../../root/analysis/run_49.root");
//chain->Add("../../root/analysis/run_50.root");
//chain->Add("../../root/analysis/run_51.root");
//chain->Add("../../root/analysis/run_52.root");
//chain->Add("../../root/analysis/run_53.root");
}
else
if
(
part
==
"part2"
){
chain
->
Add
(
"../../root/analysis/run_55.root"
);
chain
->
Add
(
"../../root/analysis/run_56.root"
);
chain
->
Add
(
"../../root/analysis/run_57.root"
);
chain
->
Add
(
"../../root/analysis/run_58.root"
);
chain
->
Add
(
"../../root/analysis/run_59.root"
);
chain
->
Add
(
"../../root/analysis/run_60.root"
);
chain
->
Add
(
"../../root/analysis/run_61.root"
);
chain
->
Add
(
"../../root/analysis/run_62.root"
);
chain
->
Add
(
"../../root/analysis/run_63.root"
);
chain
->
Add
(
"../../root/analysis/run_64.root"
);
chain
->
Add
(
"../../root/analysis/run_65.root"
);
chain
->
Add
(
"../../root/analysis/run_66.root"
);
chain
->
Add
(
"../../root/analysis/run_67.root"
);
chain
->
Add
(
"../../root/analysis/run_68.root"
);
chain
->
Add
(
"../../root/analysis/run_69.root"
);
}
double
DeltaEcorr
;
double
Elab
;
double
Mass
;
double
Ex240Pu
;
double
VAMOS_TS_hour
;
int
Telescope
;
int
m_2alpha
;
int
FPMW_Section
;
double
FF_Z
;
chain
->
SetBranchStatus
(
"DeltaEcorr"
,
"true"
);
chain
->
SetBranchAddress
(
"DeltaEcorr"
,
&
DeltaEcorr
);
chain
->
SetBranchStatus
(
"Elab"
,
"true"
);
chain
->
SetBranchAddress
(
"Elab"
,
&
Elab
);
chain
->
SetBranchStatus
(
"FF_Mass13"
,
"true"
);
chain
->
SetBranchAddress
(
"FF_Mass13"
,
&
Mass
);
chain
->
SetBranchStatus
(
"Ex240Pu"
,
"true"
);
chain
->
SetBranchAddress
(
"Ex240Pu"
,
&
Ex240Pu
);
chain
->
SetBranchStatus
(
"VAMOS_TS_hour"
,
"true"
);
chain
->
SetBranchAddress
(
"VAMOS_TS_hour"
,
&
VAMOS_TS_hour
);
chain
->
SetBranchStatus
(
"Telescope"
,
"true"
);
chain
->
SetBranchAddress
(
"Telescope"
,
&
Telescope
);
chain
->
SetBranchStatus
(
"m_2alpha"
,
"true"
);
chain
->
SetBranchAddress
(
"m_2alpha"
,
&
m_2alpha
);
chain
->
SetBranchStatus
(
"FPMW_Section"
,
"true"
);
chain
->
SetBranchAddress
(
"FPMW_Section"
,
&
FPMW_Section
);
chain
->
SetBranchStatus
(
"FF_Z"
,
"true"
);
chain
->
SetBranchAddress
(
"FF_Z"
,
&
FF_Z
);
TH1F
*
hcharge
[
11
];
for
(
int
i
=
0
;
i
<
11
;
i
++
){
TString
histo_name
=
Form
(
"hcharge_%iMeV"
,
i
+
6
);
hcharge
[
i
]
=
new
TH1F
(
histo_name
,
histo_name
,
1000
,
20
,
80
);
}
TH1F
*
hChargeAll
=
new
TH1F
(
"hcharge_all"
,
"hcharge_all"
,
1000
,
20
,
80
);
TH2D
*
hChargeVsEx
=
new
TH2D
(
"hcharge_vs_ex"
,
"hcharge_vs_ex"
,
20
,
0
,
20
,
1000
,
20
,
80
);
int
nentries
=
chain
->
GetEntries
();
cout
<<
"**** Number of entries to be treated: "
<<
nentries
<<
" ****"
<<
endl
;
for
(
int
i
=
0
;
i
<
nentries
;
i
++
){
chain
->
GetEntry
(
i
);
if
(
i
%
100000
==
0
){
cout
<<
"
\033
[34m
\r
Processing tree..."
<<
(
double
)
i
/
nentries
*
100
<<
"\% done"
<<
flush
;
}
if
(
VAMOS_TS_hour
>
0
){
hChargeAll
->
Fill
(
FF_Z
);
if
(
Telescope
>
0
)
{
if
(
FPMW_Section
>
4
&&
cut10Be
[
Telescope
-
1
]
->
IsInside
(
Elab
,
DeltaEcorr
)){
hChargeVsEx
->
Fill
(
Ex240Pu
,
FF_Z
);
if
(
Ex240Pu
>
5
.
5
&&
Ex240Pu
<
6
.
5
)
hcharge
[
0
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
6
.
5
&&
Ex240Pu
<
7
.
5
)
hcharge
[
1
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
7
.
5
&&
Ex240Pu
<
8
.
5
)
hcharge
[
2
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
8
.
5
&&
Ex240Pu
<
9
.
5
)
hcharge
[
3
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
9
.
5
&&
Ex240Pu
<
10
.
5
)
hcharge
[
4
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
10
.
5
&&
Ex240Pu
<
11
.
5
)
hcharge
[
5
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
11
.
5
&&
Ex240Pu
<
12
.
5
)
hcharge
[
6
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
12
.
5
&&
Ex240Pu
<
13
.
5
)
hcharge
[
7
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
13
.
5
&&
Ex240Pu
<
14
.
5
)
hcharge
[
8
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
14
.
5
&&
Ex240Pu
<
15
.
5
)
hcharge
[
9
]
->
Fill
(
FF_Z
);
else
if
(
Ex240Pu
>
15
.
5
&&
Ex240Pu
<
16
.
5
)
hcharge
[
10
]
->
Fill
(
FF_Z
);
}
}
}
}
TString
filename
=
Form
(
"histo_charge_%s.root"
,
part
.
c_str
());
TFile
*
ofile
=
new
TFile
(
filename
,
"recreate"
);
for
(
int
i
=
0
;
i
<
11
;
i
++
){
hcharge
[
i
]
->
Write
();
}
hChargeAll
->
Write
();
hChargeVsEx
->
Write
();
ofile
->
Close
();
}
This diff is collapsed.
Click to expand it.
Projects/ana_e850/macro/Charge/FitCharge.C
0 → 100644
+
168
−
0
View file @
bebb7231
void
Fit
(
TH1F
*
hcharge
,
string
Energy
);
TFile
*
ofile
;
int
rebin
=
1
;
//////////////////////////////////////////////////////
void
FitCharge
(){
TFile
*
ifile
=
new
TFile
(
"histo_charge_part1.root"
,
"read"
);
ofile
=
new
TFile
(
"histo_charge_fitted.root"
,
"recreate"
);
TH1F
*
hall
=
(
TH1F
*
)
ifile
->
FindObjectAny
(
"hcharge_all"
);
Fit
(
hall
,
"AllEnergy"
);
/*for(int i=0; i<11; i++){
int Ex = i+6;
if(i>4) rebin=2;
else rebin=1;
string Energy = to_string(Ex) + "MeV";
TString histo_name = Form("hcharge_%iMeV",i+6);
TH1F* h1 = (TH1F*)ifile->FindObjectAny(histo_name);
Fit(h1,Energy);
}*/
ofile
->
Close
();
}
//////////////////////////////////////////////////////
void
Fit
(
TH1F
*
hcharge
,
string
Energy
){
TGraphErrors
*
gsigma
=
new
TGraphErrors
();
hcharge
->
Rebin
(
rebin
);
hcharge
->
Draw
();
int
Zmin
=
32
;
int
Zmax
=
65
;
int
Z
=
Zmin
;
int
NumberOfZ
=
Zmax
-
Zmin
;
Double_t
para
[
3
*
NumberOfZ
];
TF1
*
g
[
NumberOfZ
];
double
Integral
[
NumberOfZ
];
double
Integral_err
[
NumberOfZ
];
double
total_integral
=
0
;
double
Yield
[
NumberOfZ
];
for
(
int
i
=
0
;
i
<
NumberOfZ
;
i
++
){
g
[
i
]
=
new
TF1
(
Form
(
"g%i"
,
i
),
"gaus"
,
Z
-
0
.
4
,
Z
+
0
.
4
);
if
(
i
==
0
){
g
[
i
]
->
SetParameter
(
0
,
100
);
g
[
i
]
->
SetParameter
(
1
,
Zmin
);
g
[
i
]
->
SetParameter
(
2
,
0
.
3
);
}
else
if
(
i
>
0
){
g
[
i
]
->
SetParameter
(
0
,
g
[
i
-
1
]
->
GetParameter
(
0
));
g
[
i
]
->
SetParameter
(
1
,
Z
);
g
[
i
]
->
SetParameter
(
2
,
g
[
i
-
1
]
->
GetParameter
(
2
));
}
g
[
i
]
->
SetParLimits
(
1
,
Z
-
0
.
2
,
Z
+
0
.
2
);
g
[
i
]
->
SetParLimits
(
2
,
0
.
22
,
0
.
4
);
hcharge
->
Fit
(
g
[
i
],
"qBR"
);
g
[
i
]
->
Draw
(
"lsame"
);
g
[
i
]
->
GetParameters
(
&
para
[
3
*
i
]);
Z
++
;
}
TString
total_func
=
"gaus(0)"
;
for
(
int
i
=
1
;
i
<
NumberOfZ
;
i
++
){
TString
gaus_func
=
Form
(
"gaus(%i)"
,
3
*
i
);
total_func
+=
"+"
+
gaus_func
;
}
TF1
*
total
=
new
TF1
(
"total"
,
total_func
,
Zmin
-
0
.
5
,
Zmin
+
NumberOfZ
-
0
.
5
);
total
->
SetParameters
(
para
);
Z
=
Zmin
;
for
(
int
i
=
0
;
i
<
NumberOfZ
;
i
++
){
total
->
SetParameter
(
3
*
i
,
g
[
i
]
->
GetParameter
(
0
));
total
->
SetParameter
(
3
*
i
+
1
,
g
[
i
]
->
GetParameter
(
1
));
total
->
SetParameter
(
3
*
i
+
2
,
g
[
i
]
->
GetParameter
(
2
));
total
->
SetParLimits
(
3
*
i
+
1
,
Z
-
0
.
2
,
Z
+
0
.
2
);
total
->
SetParLimits
(
3
*
i
+
2
,
g
[
i
]
->
GetParameter
(
2
)
*
0
.
85
,
g
[
i
]
->
GetParameter
(
2
)
*
1
.
01
);
Z
++
;
}
total
->
SetLineColor
(
4
);
total
->
SetNpx
(
1000
);
hcharge
->
Fit
(
total
,
"RBq"
);
Z
=
Zmin
;
//TF1* one_gauss = new TF1("one_gaus","gaus");
for
(
int
i
=
0
;
i
<
NumberOfZ
;
i
++
){
double
Amplitude
=
total
->
GetParameter
(
3
*
i
);
double
mean
=
total
->
GetParameter
(
3
*
i
+
1
);
double
sigma
=
total
->
GetParameter
(
3
*
i
+
2
);
double
Amplitude_err
=
total
->
GetParError
(
3
*
i
);
double
mean_err
=
total
->
GetParError
(
3
*
i
+
1
);
double
sigma_err
=
total
->
GetParError
(
3
*
i
+
2
);
/*double Amplitude = g[i]->GetParameter(0);
double mean = g[i]->GetParameter(1);
double sigma = g[i]->GetParameter(2);
double Amplitude_err = g[i]->GetParError(0);
double mean_err = g[i]->GetParError(1);
double sigma_err = g[i]->GetParError(2);*/
//one_gauss->SetParameter(0,Amplitude);
//one_gauss->SetParameter(1,mean);
//one_gauss->SetParameter(2,sigma);
//one_gauss->SetParError(0,Amplitude_err);
//one_gauss->SetParError(1,mean_err);
//one_gauss->SetParError(2,sigma_err);
cout
<<
"************************"
<<
endl
;
cout
<<
"Z= "
<<
Z
<<
endl
;
//cout << "Amplitude= " << Amplitude << "+/-" << Amplitude_err << endl;
//cout << "Mean= " << mean << endl;
cout
<<
"Sigma= "
<<
sigma
<<
"+/-"
<<
sigma_err
<<
endl
;
gsigma
->
SetPoint
(
i
,
Z
,
sigma
);
gsigma
->
SetPointError
(
i
,
0
,
sigma_err
);
Integral
[
i
]
=
(
12
.
5
/
rebin
)
*
Amplitude
*
sigma
*
sqrt
(
2
*
TMath
::
Pi
());
Integral_err
[
i
]
=
(
12
.
5
/
rebin
)
*
sqrt
(
2
*
TMath
::
Pi
()
*
(
pow
(
sigma
*
Amplitude_err
,
2
)
+
pow
(
Amplitude
*
sigma_err
,
2
)));
//Integral_err[i] = sqrt(Integral[i]);
total_integral
+=
Integral
[
i
];
Z
++
;
}
double
histo_integral
=
hcharge
->
Integral
();
hcharge
->
Write
();
total
->
Write
();
string
output_filename
=
"Charge_Yield_"
+
Energy
+
".dat"
;
ofstream
ofile
;
ofile
.
open
(
output_filename
.
c_str
());
// Yield calculation //
Z
=
Zmin
;
for
(
int
i
=
0
;
i
<
NumberOfZ
;
i
++
){
//Yield[i] = Integral[i]/total_integral*200;
Yield
[
i
]
=
Integral
[
i
]
/
histo_integral
*
200
;
//double yield_err = Integral_err[i]/total_integral*200;
double
yield_err
=
Integral_err
[
i
]
/
histo_integral
*
200
;
ofile
<<
Z
<<
" "
<<
Yield
[
i
]
<<
" "
<<
yield_err
<<
endl
;
Z
++
;
}
ofile
.
close
();
gsigma
->
SetMarkerStyle
(
8
);
gsigma
->
Write
();
TCanvas
*
csig
=
new
TCanvas
(
"csig"
,
"csig"
,
800
,
800
);
csig
->
cd
();
gsigma
->
Draw
(
"ap"
);
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment