Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
go4egor
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vratislav Chudoba
go4egor
Commits
1131bddf
Commit
1131bddf
authored
Sep 14, 2018
by
Vratislav Chudoba
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Check of coordinates system finished. Script works at Ubunutu 18.04 with new EXPERTroot
parent
64f0f092
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
27 deletions
+65
-27
fillChain.cxx
analysis/fillChain.cxx
+65
-27
No files found.
analysis/fillChain.cxx
View file @
1131bddf
#if !defined(__CLING__)
#include "TSystem.h"
#include "TFile.h"
#include "TTree.h"
#include "TVector3.h"
//#include "../src/TNeEvent.h"
//#include "../../AculUtils/TELoss/TELoss.h"
#include "TH2F.h"
#include "../src/TNeEvent.h"
#include "../src/TNeDet16.h"
#include "TStopwatch.h"
#endif
using
std
::
cout
;
using
std
::
endl
;
...
...
@@ -295,8 +301,9 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
//left telescope
const
Float_t
z1mm
=
230.
;
const
Float_t
zThin
=
230.
-
53.6
;
const
Float_t
xThinOffset
=
-
3.
;
const
Float_t
yThinOffset
=
-
1.8
;
//TODO: check signs and values
// const Float_t xThinOffset = -3.;
// const Float_t yThinOffset = -1.8;
//TODO: add sign taking into account direction of numbering
...
...
@@ -304,11 +311,17 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
const
Int_t
kSQL_Y_strips
=
16
;
const
Int_t
kSQL_20_strips
=
16
;
//1mm left size
const
Float_t
kSQL_X_size
=
60.
;
const
Float_t
kSQL_Y_size
=
60.
;
//thin detector
const
Double_t
kSQ20_norm_thickness
=
20.
;
const
Float_t
kSQ20_X_size
=
50.
;
const
Float_t
kSQ20_Y_size
=
50.
;
const
Double_t
thinXoffset
=
1.
;
const
Double_t
t
hinYoffset
=
-
1.8
;
const
Double_t
kThinXoffset
=
-
1.
;
const
Double_t
kT
hinYoffset
=
-
1.8
;
//left CsI detectors
...
...
@@ -672,6 +685,9 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
// correction for thickness inhomogeneity
// when not taking into account hitting
// particle tracking
//
// note: correction for thickness is not affected
// by used system of coordinates
///////////////////////////////////////////////
Double_t
currThickness
;
...
...
@@ -679,13 +695,14 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
if
(
SQLXmult
==
1
&&
SQLYmult
==
1
)
{
for
(
Int_t
yi
=
0
;
yi
<
kSQL_Y_strips
;
yi
++
)
{
// cout << "y bin: " << yi+1 << "\t\t";
//if energy in 1mm Y strip is reasonable
if
(
SQLYE
[
yi
]
>
0
)
{
for
(
Int_t
xi
=
0
;
xi
<
TMath
::
Abs
(
kSQL_X_strips
);
xi
++
)
{
//if energy in 1mm X strip is reasonable
if
(
SQLXE
[
xi
]
>
0
)
{
//TODO: check the mapping here at first
currThickness
=
hThickness
->
GetBinContent
(
xi
+
1
,
yi
+
1
);
for
(
Int_t
x20
=
0
;
x20
<
kSQL_20_strips
;
x20
++
)
{
...
...
@@ -695,12 +712,12 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
SQ20EcorrMult
++
;
}
}
//for
*/
}
}
//for
thin detector X strips
}
//if 1 mm X
}
}
}
}
//for thick detector X strips
}
//if 1 mm Y
}
//for thick detector Y strips
}
//if for correction according energy multiplicity
...
...
@@ -724,8 +741,8 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
if
(
SQLXtimeMult
==
1
)
{
for
(
Int_t
i
=
0
;
i
<
32
;
i
++
)
{
if
(
SQLXEtimeFiltered
[
i
]
>
0
)
{
//todo: check the system of coordinates
x1mm
=
-
30.
+
(
i
+
1.
/
2.
)
*
60.
/
32.
;
// x1mm = -30. + (i+1./2.)*60./32.;
x1mm
=
(
i
+
0.5
)
*
kSQL_X_size
/
kSQL_X_strips
+
kSQL_X_size
/
2.
;
//ok
}
}
}
...
...
@@ -734,14 +751,15 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
if
(
SQLYtimeMult
==
1
)
{
for
(
Int_t
i
=
0
;
i
<
16
;
i
++
)
{
if
(
SQLYEtimeFiltered
[
i
]
>
0
)
{
//todo: check the system of coordinates
y1mm
=
-
30.
+
(
i
+
1.
/
2.
)
*
60.
/
16.
;
// y1mm = -30. + (i+1./2.)*60./16.;
y1mm
=
-
kSQL_Y_size
/
2.
+
(
i
+
0.5
)
*
kSQL_Y_size
/
kSQL_Y_strips
;
//ok
}
}
}
//for MWPC wire multiplicity == 1
//vHit1mm conversion to plane of thin detector
if
(
SQLXtimeMult
==
1
&&
SQLYtimeMult
==
1
&&
xt
>-
50.
&&
yt
>-
50.
)
{
vHit1mm
.
SetXYZ
(
x1mm
-
xt
,
y1mm
-
yt
,
z1mm
);
vHit1mm
*=
zThin
/
z1mm
;
...
...
@@ -750,16 +768,22 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
if
(
SQLXtimeMult
==
1
&&
SQLYtimeMult
==
1
&&
vHit1mm
.
X
()
+
xt
>-
30.
&&
vHit1mm
.
X
()
+
xt
<
30.
&&
vHit1mm
.
Y
()
+
yt
>-
30.
&&
vHit1mm
.
Y
()
+
yt
<
30.
)
{
//check if the particle passed through sensitive area of thin detector
&&
vHit1mm
.
X
()
+
xt
<
(
kSQ20_X_size
/
2.
+
kThinXoffset
)
&&
vHit1mm
.
X
()
+
xt
>
(
-
kSQ20_X_size
/
2.
+
kThinXoffset
)
&&
vHit1mm
.
Y
()
+
yt
<
(
kSQ20_Y_size
/
2.
+
kThinYoffset
)
&&
vHit1mm
.
Y
()
+
yt
>
(
-
kSQ20_Y_size
/
2.
+
kThinYoffset
)
)
{
mapYbin
=
(
vHit1mm
.
Y
()
+
yt
+
thinYoffset
+
30.
-
0.5
*
60.
/
16.
)
*
16.
/
60.
;
mapXbin
=
(
vHit1mm
.
X
()
+
xt
+
thinXoffset
+
30.
-
0.5
*
60.
/
32.
)
*
32.
/
60.
;
//coordinate in the thin detector plane
xThin
=
vHit1mm
.
X
()
+
xt
;
yThin
=
vHit1mm
.
Y
()
+
yt
;
mapYbin
=
yThin
*
kSQL_Y_strips
/
kSQL_Y_size
+
kSQL_Y_strips
/
2.
;
//ok
mapXbin
=
xThin
*
kSQL_X_strips
/
kSQL_X_size
-
kSQL_X_strips
/
2.
;
//ok
//calculation of corrected energy
//TODO: check the mapping here at second
currThickness
=
hThickness
->
GetBinContent
(
mapXbin
+
1
,
mapYbin
+
1
);
...
...
@@ -767,6 +791,7 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
for
(
Int_t
x20
=
0
;
x20
<
kSQL_20_strips
;
x20
++
)
{
if
(
SQ20E
[
x20
]
>
0
/*SQ20timeMult==1*/
&&
currThickness
<
30.
)
{
SQ20EcorrHit
[
x20
]
=
(
kSQ20_norm_thickness
/
currThickness
)
*
SQ20E
[
x20
];
//when multiplicity larger than 1, we obtain incorrect information
SQ20EcorrHitMult
++
;
// cout << mapXbin << "\t" << mapYbin << "\t" << x20
// << "\t" << currThickness
...
...
@@ -789,16 +814,26 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
if
(
SQLXtimeMult
==
1
&&
SQLYtimeMult
==
1
&&
vHit1mm
.
X
()
+
xtc
>-
30.
&&
vHit1mm
.
X
()
+
xtc
<
30.
&&
vHit1mm
.
Y
()
+
ytc
>-
30.
&&
vHit1mm
.
Y
()
+
ytc
<
30.
)
{
//check if the particle passed through sensitive area of thin detector
&&
vHit1mm
.
X
()
+
xtc
<
(
kSQ20_X_size
/
2.
+
kThinXoffset
)
&&
vHit1mm
.
X
()
+
xtc
>
(
-
kSQ20_X_size
/
2.
+
kThinXoffset
)
&&
vHit1mm
.
Y
()
+
ytc
<
(
kSQ20_Y_size
/
2.
+
kThinYoffset
)
&&
vHit1mm
.
Y
()
+
ytc
>
(
-
kSQ20_Y_size
/
2.
+
kThinYoffset
)
// && vHit1mm.X()+xtc>-30. && vHit1mm.X()+xtc<30.
// && vHit1mm.Y()+ytc>-30. && vHit1mm.Y()+ytc<30.
)
{
mapYbin
=
(
vHit1mm
.
Y
()
+
ytc
+
thinYoffset
+
30.
-
0.5
*
60.
/
16.
)
*
16.
/
60.
;
mapXbin
=
(
vHit1mm
.
X
()
+
xtc
+
thinXoffset
+
30.
-
0.5
*
60.
/
32.
)
*
32.
/
60.
;
//coordinate in the thin detector plane
xThin
=
vHit1mm
.
X
()
+
xtc
;
yThin
=
vHit1mm
.
Y
()
+
ytc
;
mapYbin
=
yThin
*
kSQL_Y_strips
/
kSQL_Y_size
+
kSQL_Y_strips
/
2.
;
//ok
mapXbin
=
xThin
*
kSQL_X_strips
/
kSQL_X_size
-
kSQL_X_strips
/
2.
;
//ok
// mapYbin = (vHit1mm.Y()+ytc+kThinYoffset+30.-0.5*60./16.)*16./60.;
// mapXbin = (vHit1mm.X()+xtc+kThinXoffset+30.-0.5*60./32.)*32./60.;
//coordinate in the thin detector plane
//calculation of corrected energy
currThickness
=
hThickness
->
GetBinContent
(
mapXbin
+
1
,
mapYbin
+
1
);
...
...
@@ -814,7 +849,8 @@ void fillTree(const TString beam = "he", Int_t nofile = 0, const Int_t noevents
}
//for*/
if
(
SQ20EcorrHitCMult
==
1
)
{
expectedThinStrip
=
(
xThin
+
25.
-
thinXoffset
)
*
(
16.
/
50.
)
-
0.5
;
//TODO: check this statement
expectedThinStrip
=
(
xThin
+
25.
-
kThinXoffset
)
*
(
16.
/
50.
)
-
0.5
;
}
}
//if inside the map
...
...
@@ -849,6 +885,8 @@ void fillChain(const TString beam = "he", const Int_t from = 0, const Int_t to =
TStopwatch
stopwatch
;
stopwatch
.
Start
();
// cout << "aksjdlkajbdlkjasd" << endl;
for
(
Int_t
i
=
from
;
i
<=
to
;
i
++
)
{
fillTree
(
beam
,
i
,
noevents
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment