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
Admin message
Gitlab has been updated. More info
here
and
there
.
Show more breadcrumbs
np
nptool
Commits
c4260546
Commit
c4260546
authored
2 years ago
by
Morfouace
Browse files
Options
Downloads
Patches
Plain Diff
Updating GladFieldMap
parent
6bbabd60
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#197850
passed
2 years ago
Stage: build-NPLib
Stage: build-NPSimulation
Stage: test
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
NPLib/Detectors/Sofia/GladFieldMap.cxx
+213
-46
213 additions, 46 deletions
NPLib/Detectors/Sofia/GladFieldMap.cxx
NPLib/Detectors/Sofia/GladFieldMap.h
+14
-3
14 additions, 3 deletions
NPLib/Detectors/Sofia/GladFieldMap.h
Projects/s455/Analysis.cxx
+34
-34
34 additions, 34 deletions
Projects/s455/Analysis.cxx
with
261 additions
and
83 deletions
NPLib/Detectors/Sofia/GladFieldMap.cxx
+
213
−
46
View file @
c4260546
...
@@ -32,31 +32,31 @@ using namespace std;
...
@@ -32,31 +32,31 @@ using namespace std;
ClassImp
(
GladFieldMap
)
ClassImp
(
GladFieldMap
)
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
GladFieldMap
::
GladFieldMap
()
{
GladFieldMap
::
GladFieldMap
()
{
m_BrhoScan
=
NULL
;
m_
BrhoScan
=
NULL
;
m_
min
=
ROOT
::
Math
::
Factory
::
CreateMinimizer
(
"Minuit2"
,
"Migrad"
)
;
m_
min
=
ROOT
::
Math
::
F
a
ctor
y
::
CreateMinimizer
(
"Minuit2"
,
"Migrad"
);
m_
func
=
ROOT
::
Math
::
F
un
ctor
(
this
,
&
GladFieldMap
::
Delta
,
1
);
m_
func
=
ROOT
::
Math
::
Functor
(
this
,
&
GladFieldMap
::
Delta
,
1
);
m_
min
->
SetFunction
(
m_func
);
m_min
->
Set
Function
(
m_func
);
m_min
->
Set
PrintLevel
(
-
1
);
m_
min
->
SetPrintLevel
(
-
1
)
;
m_
bin
=
50
;
m_
Bfield
=
TVector3
(
0
,
1.5
/
1000
,
0
)
;
m_
Scale
=
-
2135.
/
3583.81
;
m_Z_Glad
=
4.434
*
m
;
m_Z_Glad
=
4.434
*
m
;
m_Leff
=
2.
*
m
;
m_Leff
=
2.
*
m
;
m_Tilt
=
14.
*
deg
;
m_Tilt
=
14.
*
deg
;
m_Zmax
=
9.
*
m
;
m_Zmax
=
9.
*
m
;
m_Limit
=
1000
;
m_Limit
=
1000
;
m_dt
=
0.1
*
nanosecond
;
m_dt
=
0.1
*
nanosecond
;
m_CentralTheta
=
20.
*
deg
;
m_CentralTheta
=
20.
*
deg
;
m_X_MWPC3
=
-
1436.
;
m_X_MWPC3
=
-
1436.
;
m_Z_MWPC3
=
8380.
;
m_Z_MWPC3
=
8380.
;
m_InitPos
=
TVector3
(
0
,
0
,
0
);
m_InitPos
=
TVector3
(
0
,
0
,
0
);
m_InitDir
=
TVector3
(
0
,
0
,
1
);
m_InitDir
=
TVector3
(
0
,
0
,
1
);
}
}
...
@@ -187,11 +187,12 @@ void GladFieldMap::func(NPL::Particle& N, TVector3 Pos, TVector3 Imp, TVector3&
...
@@ -187,11 +187,12 @@ void GladFieldMap::func(NPL::Particle& N, TVector3 Pos, TVector3 Imp, TVector3&
xk
.
SetY
(
vy
);
xk
.
SetY
(
vy
);
xk
.
SetZ
(
vz
);
xk
.
SetZ
(
vz
);
TVector3
B
=
LoadMap
(
Pos
);
vector
<
double
>
position
=
{
Pos
.
X
(),
Pos
.
Y
(),
Pos
.
Z
()};
vector
<
double
>
B
=
InterpolateB
(
position
);
double
Bx
,
By
,
Bz
;
double
Bx
,
By
,
Bz
;
Bx
=
B
.
X
()
;
Bx
=
B
[
0
]
;
By
=
B
.
Y
()
;
By
=
B
[
1
]
;
Bz
=
B
.
Z
()
;
Bz
=
B
[
2
]
;
double
q
=
N
.
GetZ
()
*
eplus
;
double
q
=
N
.
GetZ
()
*
eplus
;
pk
.
SetX
(
q
*
(
vy
*
Bz
-
vz
*
By
));
pk
.
SetX
(
q
*
(
vy
*
Bz
-
vz
*
By
));
pk
.
SetY
(
q
*
(
vz
*
Bx
-
vx
*
Bz
));
pk
.
SetY
(
q
*
(
vz
*
Bx
-
vx
*
Bz
));
...
@@ -202,7 +203,7 @@ void GladFieldMap::func(NPL::Particle& N, TVector3 Pos, TVector3 Imp, TVector3&
...
@@ -202,7 +203,7 @@ void GladFieldMap::func(NPL::Particle& N, TVector3 Pos, TVector3 Imp, TVector3&
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
TVector3
GladFieldMap
::
CalculateIntersectionPoint
(
vector
<
TVector3
>
vPos
){
TVector3
GladFieldMap
::
CalculateIntersectionPoint
(
vector
<
TVector3
>
vPos
){
unsigned
int
size
=
vPos
.
size
();
unsigned
int
size
=
vPos
.
size
();
// Track equation Z = a0*X + b0
// Track equation Z = a0*X + b0
...
@@ -225,22 +226,188 @@ TVector3 GladFieldMap::CalculateIntersectionPoint(vector<TVector3> vPos){
...
@@ -225,22 +226,188 @@ TVector3 GladFieldMap::CalculateIntersectionPoint(vector<TVector3> vPos){
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
TVector3
GladFieldMap
::
LoadMap
(
TVector3
Pos
)
{
void
GladFieldMap
::
LoadMap
(
string
filename
)
{
ifstream
ifile
(
filename
.
c_str
());
double
Bx
=
0
;
if
(
!
ifile
.
is_open
()){
double
By
=
0
;
cout
<<
"Error: failed to load Glad field map: "
<<
filename
<<
endl
;
double
Bz
=
0
;
exit
(
1
);
}
double
Zinf
=
m_Z_Glad
+
Pos
.
X
()
*
tan
(
m_Tilt
)
-
m_Leff
/
2
;
double
Zsup
=
m_Z_Glad
+
Pos
.
X
()
*
tan
(
m_Tilt
)
+
m_Leff
/
2
;
cout
<<
"///////// Loading ASCII Glad field map: "
<<
filename
<<
endl
;
double
x
,
y
,
z
,
Bx
,
By
,
Bz
;
if
(
Pos
.
Z
()
>
Zinf
&&
Pos
.
Z
()
<
Zsup
){
Bx
=
m_Bfield
.
X
();
unsigned
int
count
=
0
;
By
=
m_Bfield
.
Y
();
while
(
!
ifile
.
eof
()){
Bz
=
m_Bfield
.
Z
();
ifile
>>
x
>>
y
>>
z
>>
Bx
>>
By
>>
Bz
;
if
(
++
count
%
10000
==
0
)
cout
<<
"
\r
- Loading "
<<
count
<<
" values "
<<
flush
;
x
=
x
*
10
;
y
=
y
*
10
;
z
=
z
*
10
+
m_Z_Glad
;
Bx
*=
m_Scale
;
By
*=
m_Scale
;
Bz
*=
m_Scale
;
vector
<
double
>
p
=
{
x
,
y
,
z
};
Bx
*=
tesla
;
By
*=
tesla
;
Bz
*=
tesla
;
vector
<
double
>
B
=
{
Bx
,
By
,
Bz
};
m_field
[
p
]
=
B
;
if
(
x
<
m_x_min
)
m_x_min
=
x
;
if
(
y
<
m_y_min
)
m_y_min
=
y
;
if
(
z
<
m_z_min
)
m_z_min
=
z
;
if
(
x
>
m_x_max
)
m_x_max
=
x
;
if
(
y
>
m_y_max
)
m_y_max
=
y
;
if
(
z
>
m_z_max
)
m_z_max
=
z
;
}
cout
<<
"///////// ASCII file loaded"
<<
endl
;
}
//////////////////////////////////
vector
<
double
>
GladFieldMap
::
InterpolateB
(
const
vector
<
double
>&
pos
)
{
static
vector
<
double
>
nullv
=
{
0
,
0
,
0
};
double
x
,
y
,
z
;
x
=
pos
[
0
];
y
=
pos
[
1
];
z
=
pos
[
2
];
// out of bound
if
(
x
<
m_x_min
||
x
>
m_x_max
)
return
nullv
;
if
(
y
<
m_y_min
||
y
>
m_y_max
)
return
nullv
;
if
(
z
<
m_z_min
||
z
>
m_z_max
)
return
nullv
;
double
x0
=
(
double
)((
int
)(
x
)
/
m_bin
)
*
m_bin
;
if
(
x
<=
x0
)
x0
=
(
double
)((
int
)(
x
-
m_bin
)
/
m_bin
)
*
m_bin
;
double
x1
=
(
double
)((
int
)(
x
)
/
m_bin
)
*
m_bin
;
if
(
x
>=
x1
)
x1
=
(
double
)((
int
)(
x
+
m_bin
)
/
m_bin
)
*
m_bin
;
double
y0
=
(
double
)((
int
)(
y
)
/
m_bin
)
*
m_bin
;
if
(
y
<=
y0
)
y0
=
(
double
)((
int
)(
y
-
m_bin
)
/
m_bin
)
*
m_bin
;
double
y1
=
(
double
)((
int
)(
y
)
/
m_bin
)
*
m_bin
;
if
(
y
>=
y1
)
y1
=
(
double
)((
int
)(
y
+
m_bin
)
/
m_bin
)
*
m_bin
;
double
z0
=
(
double
)((
int
)(
z
)
/
m_bin
)
*
m_bin
;
if
(
z
<=
z0
)
z0
=
(
double
)((
int
)(
z
-
m_bin
)
/
m_bin
)
*
m_bin
;
double
z1
=
(
double
)((
int
)(
z
)
/
m_bin
)
*
m_bin
;
if
(
z
>=
z1
)
z1
=
(
double
)((
int
)(
z
+
m_bin
)
/
m_bin
)
*
m_bin
;
//vector<double> X={xm,ym,zm};
vector
<
double
>
X000
=
{
x0
,
y0
,
z0
};
vector
<
double
>
X111
=
{
x1
,
y1
,
z1
};
vector
<
double
>
X100
=
{
x1
,
y0
,
z0
};
vector
<
double
>
X010
=
{
x0
,
y1
,
z0
};
vector
<
double
>
X001
=
{
x0
,
y0
,
z1
};
vector
<
double
>
X101
=
{
x1
,
y0
,
z1
};
vector
<
double
>
X011
=
{
x0
,
y1
,
z1
};
vector
<
double
>
X110
=
{
x1
,
y1
,
z0
};
vector
<
double
>
C000
;
vector
<
double
>
C111
;
vector
<
double
>
C100
;
vector
<
double
>
C010
;
vector
<
double
>
C001
;
vector
<
double
>
C101
;
vector
<
double
>
C011
;
vector
<
double
>
C110
;
if
(
m_field
.
lower_bound
(
X000
)
!=
m_field
.
end
())
C000
=
m_field
.
lower_bound
(
X000
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X111
)
!=
m_field
.
end
())
C111
=
m_field
.
lower_bound
(
X111
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X100
)
!=
m_field
.
end
())
C100
=
m_field
.
lower_bound
(
X100
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X010
)
!=
m_field
.
end
())
C010
=
m_field
.
lower_bound
(
X010
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X001
)
!=
m_field
.
end
())
C001
=
m_field
.
lower_bound
(
X001
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X101
)
!=
m_field
.
end
())
C101
=
m_field
.
lower_bound
(
X101
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X011
)
!=
m_field
.
end
())
C011
=
m_field
.
lower_bound
(
X011
)
->
second
;
else
return
nullv
;
if
(
m_field
.
lower_bound
(
X110
)
!=
m_field
.
end
())
C110
=
m_field
.
lower_bound
(
X110
)
->
second
;
else
return
nullv
;
double
xd
=
(
x
-
x0
)
/
(
x1
-
x0
);
double
yd
=
(
y
-
y0
)
/
(
y1
-
y0
);
double
zd
=
(
z
-
z0
)
/
(
z1
-
z0
);
double
alphaX
=
1
-
xd
;
double
alphaY
=
1
-
yd
;
double
alphaZ
=
1
-
zd
;
// X
vector
<
double
>
C00
=
{
C000
[
0
]
*
alphaX
+
C100
[
0
]
*
xd
,
C000
[
1
]
*
alphaX
+
C100
[
1
]
*
xd
,
C000
[
2
]
*
alphaX
+
C100
[
2
]
*
xd
};
vector
<
double
>
C01
=
{
C001
[
0
]
*
alphaX
+
C101
[
0
]
*
xd
,
C001
[
1
]
*
alphaX
+
C101
[
1
]
*
xd
,
C001
[
2
]
*
alphaX
+
C101
[
2
]
*
xd
};
vector
<
double
>
C10
=
{
C010
[
0
]
*
alphaX
+
C110
[
0
]
*
xd
,
C010
[
1
]
*
alphaX
+
C110
[
1
]
*
xd
,
C010
[
2
]
*
alphaX
+
C110
[
2
]
*
xd
};
vector
<
double
>
C11
=
{
C011
[
0
]
*
alphaX
+
C111
[
0
]
*
xd
,
C011
[
1
]
*
alphaX
+
C111
[
1
]
*
xd
,
C011
[
2
]
*
alphaX
+
C111
[
2
]
*
xd
};
// Y
vector
<
double
>
C0
=
{
C00
[
0
]
*
alphaY
+
C10
[
0
]
*
yd
,
C00
[
1
]
*
alphaY
+
C10
[
1
]
*
yd
,
C00
[
2
]
*
alphaY
+
C10
[
2
]
*
yd
};
vector
<
double
>
C1
=
{
C01
[
0
]
*
alphaY
+
C11
[
0
]
*
yd
,
C01
[
1
]
*
alphaY
+
C11
[
1
]
*
yd
,
C01
[
2
]
*
alphaY
+
C11
[
2
]
*
yd
};
// Z
vector
<
double
>
res
=
{
C0
[
0
]
*
alphaZ
+
C1
[
0
]
*
zd
,
C0
[
1
]
*
alphaZ
+
C1
[
1
]
*
zd
,
C0
[
2
]
*
alphaZ
+
C1
[
2
]
*
zd
};
return
res
;
}
//////////////////////////////////
vector
<
double
>
GladFieldMap
::
GetB
(
const
vector
<
double
>&
pos
)
{
static
vector
<
double
>
nullv
=
{
0
,
0
,
0
};
auto
it
=
m_field
.
find
(
pos
);
if
(
it
!=
m_field
.
end
()){
return
it
->
second
;
}
}
else
TVector3
B
=
TVector3
(
Bx
,
By
,
Bz
)
;
return
nullv
;
return
B
;
}
}
This diff is collapsed.
Click to expand it.
NPLib/Detectors/Sofia/GladFieldMap.h
+
14
−
3
View file @
c4260546
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
// STL
// STL
#include
<vector>
#include
<vector>
#include
<map>
using
namespace
std
;
using
namespace
std
;
// ROOT
// ROOT
...
@@ -35,6 +36,7 @@ using namespace std;
...
@@ -35,6 +36,7 @@ using namespace std;
#include
"NPParticle.h"
#include
"NPParticle.h"
class
GladFieldMap
{
class
GladFieldMap
{
public:
public:
GladFieldMap
();
GladFieldMap
();
...
@@ -42,10 +44,18 @@ class GladFieldMap{
...
@@ -42,10 +44,18 @@ class GladFieldMap{
private:
private:
// GLAD parameters
// GLAD parameters
TVector3
m_
B
field
;
map
<
vector
<
double
>
,
vector
<
double
>>
m_field
;
double
m_Z_Glad
;
double
m_Z_Glad
;
double
m_Leff
;
double
m_Leff
;
double
m_Tilt
;
double
m_Tilt
;
double
m_x_min
;
double
m_y_min
;
double
m_z_min
;
double
m_x_max
;
double
m_y_max
;
double
m_z_max
;
double
m_Scale
;
int
m_bin
;
// MWPC3 paramters
// MWPC3 paramters
double
m_CentralTheta
;
double
m_CentralTheta
;
double
m_X_MWPC3
;
double
m_X_MWPC3
;
...
@@ -61,7 +71,6 @@ class GladFieldMap{
...
@@ -61,7 +71,6 @@ class GladFieldMap{
public:
public:
void
SetBfield
(
TVector3
vec
)
{
m_Bfield
=
vec
;}
void
SetZGlad
(
double
val
)
{
m_Z_Glad
=
val
;}
void
SetZGlad
(
double
val
)
{
m_Z_Glad
=
val
;}
void
SetLeff
(
double
val
)
{
m_Leff
=
val
;}
void
SetLeff
(
double
val
)
{
m_Leff
=
val
;}
void
SetGladTiltAngle
(
double
val
)
{
m_Tilt
=
val
;}
void
SetGladTiltAngle
(
double
val
)
{
m_Tilt
=
val
;}
...
@@ -78,7 +87,9 @@ class GladFieldMap{
...
@@ -78,7 +87,9 @@ class GladFieldMap{
void
SetInitDir
(
TVector3
Dir
)
{
m_InitPos
=
Dir
;}
void
SetInitDir
(
TVector3
Dir
)
{
m_InitPos
=
Dir
;}
public
:
public
:
TVector3
LoadMap
(
TVector3
pos
);
void
LoadMap
(
string
filename
);
vector
<
double
>
InterpolateB
(
const
vector
<
double
>&
pos
);
vector
<
double
>
GetB
(
const
vector
<
double
>&
pos
);
TGraph
*
BrhoScan
(
double
Brho_min
,
double
Brho_max
,
double
Brho_step
);
TGraph
*
BrhoScan
(
double
Brho_min
,
double
Brho_max
,
double
Brho_step
);
TVector3
CalculateIntersectionPoint
(
vector
<
TVector3
>
vPos
);
TVector3
CalculateIntersectionPoint
(
vector
<
TVector3
>
vPos
);
vector
<
TVector3
>
Propagate
(
double
Brho
,
TVector3
Pos
,
TVector3
Dir
);
vector
<
TVector3
>
Propagate
(
double
Brho
,
TVector3
Pos
,
TVector3
Dir
);
...
...
This diff is collapsed.
Click to expand it.
Projects/s455/Analysis.cxx
+
34
−
34
View file @
c4260546
...
@@ -77,7 +77,15 @@ void Analysis::Init(){
...
@@ -77,7 +77,15 @@ void Analysis::Init(){
SofTofW
=
(
TSofTofWPhysics
*
)
m_DetectorManager
->
GetDetector
(
"SofTofW"
);
SofTofW
=
(
TSofTofWPhysics
*
)
m_DetectorManager
->
GetDetector
(
"SofTofW"
);
SofAt
=
(
TSofAtPhysics
*
)
m_DetectorManager
->
GetDetector
(
"SofAt"
);
SofAt
=
(
TSofAtPhysics
*
)
m_DetectorManager
->
GetDetector
(
"SofAt"
);
SofMwpc
=
(
TSofMwpcPhysics
*
)
m_DetectorManager
->
GetDetector
(
"SofMwpc"
);
SofMwpc
=
(
TSofMwpcPhysics
*
)
m_DetectorManager
->
GetDetector
(
"SofMwpc"
);
m_GladField
=
new
GladFieldMap
();
m_GladField
=
new
GladFieldMap
();
m_GladField
->
SetZGlad
(
4.434
*
m
);
m_GladField
->
SetLeff
(
2.067
*
m
);
m_GladField
->
SetGladTiltAngle
(
14.
*
deg
);
m_GladField
->
SetCentralTheta
(
20.
*
deg
);
m_GladField
->
SetX_MWPC3
(
-
1.436
*
m
);
m_GladField
->
SetZ_MWPC3
(
8.380
*
m
);
m_GladField
->
LoadMap
(
"GladFieldMap.dat"
);
InitParameter
();
InitParameter
();
InitOutputBranch
();
InitOutputBranch
();
...
@@ -241,17 +249,17 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -241,17 +249,17 @@ void Analysis::FissionFragmentAnalysis(){
if
(
SofMwpc
->
DetectorNbr
[
i
]
==
4
){
if
(
SofMwpc
->
DetectorNbr
[
i
]
==
4
){
if
(
SofMwpc
->
PositionX1
[
i
]
!=-
1000
)
if
(
SofMwpc
->
PositionX1
[
i
]
!=-
1000
)
X3
.
push_back
(
SofMwpc
->
PositionX1
[
i
]);
X3
.
push_back
(
SofMwpc
->
PositionX1
[
i
]);
if
(
SofMwpc
->
PositionY
[
i
]
!=-
1000
)
if
(
SofMwpc
->
PositionY
[
i
]
!=-
1000
)
Y3
.
push_back
(
SofMwpc
->
PositionY
[
i
]);
Y3
.
push_back
(
SofMwpc
->
PositionY
[
i
]);
}
}
}
}
for
(
unsigned
int
i
=
0
;
i
<
2
;
i
++
){
for
(
unsigned
int
i
=
0
;
i
<
2
;
i
++
){
double
tofx
=
TofHit
[
i
].
x
;
double
tofx
=
TofHit
[
i
].
x
;
for
(
unsigned
int
k
=
0
;
k
<
X3
.
size
();
k
++
){
for
(
unsigned
int
k
=
0
;
k
<
X3
.
size
();
k
++
){
double
posx
=
X3
[
k
];
double
posx
=
X3
[
k
];
double
posy
=
-
1000
;
double
posy
=
-
1000
;
if
(
Y3
.
size
()
==
X3
.
size
())
if
(
Y3
.
size
()
==
X3
.
size
())
...
@@ -351,7 +359,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -351,7 +359,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta2
;
TofHit
[
0
].
theta_in
=
Theta2
;
TofHit
[
1
].
theta_in
=
Theta1
;
TofHit
[
1
].
theta_in
=
Theta1
;
TofHit
[
0
].
DT
=
DT2
;
TofHit
[
0
].
DT
=
DT2
;
TofHit
[
1
].
DT
=
DT1
;
TofHit
[
1
].
DT
=
DT1
;
...
@@ -364,7 +372,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -364,7 +372,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta1
;
TofHit
[
0
].
theta_in
=
Theta1
;
TofHit
[
1
].
theta_in
=
Theta2
;
TofHit
[
1
].
theta_in
=
Theta2
;
TofHit
[
0
].
DT
=
DT1
;
TofHit
[
0
].
DT
=
DT1
;
TofHit
[
1
].
DT
=
DT2
;
TofHit
[
1
].
DT
=
DT2
;
...
@@ -381,7 +389,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -381,7 +389,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta3
;
TofHit
[
0
].
theta_in
=
Theta3
;
TofHit
[
1
].
theta_in
=
Theta1
;
TofHit
[
1
].
theta_in
=
Theta1
;
TofHit
[
0
].
DT
=
DT3
;
TofHit
[
0
].
DT
=
DT3
;
TofHit
[
1
].
DT
=
DT1
;
TofHit
[
1
].
DT
=
DT1
;
...
@@ -397,7 +405,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -397,7 +405,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta1
;
TofHit
[
0
].
theta_in
=
Theta1
;
TofHit
[
1
].
theta_in
=
Theta3
;
TofHit
[
1
].
theta_in
=
Theta3
;
TofHit
[
0
].
section
=
1
;
TofHit
[
0
].
section
=
1
;
TofHit
[
1
].
section
=
3
;
TofHit
[
1
].
section
=
3
;
}
}
...
@@ -411,7 +419,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -411,7 +419,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta1
;
TofHit
[
0
].
theta_in
=
Theta1
;
TofHit
[
1
].
theta_in
=
Theta4
;
TofHit
[
1
].
theta_in
=
Theta4
;
TofHit
[
0
].
DT
=
DT1
;
TofHit
[
0
].
DT
=
DT1
;
TofHit
[
1
].
DT
=
DT4
;
TofHit
[
1
].
DT
=
DT4
;
...
@@ -424,7 +432,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -424,7 +432,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta4
;
TofHit
[
0
].
theta_in
=
Theta4
;
TofHit
[
1
].
theta_in
=
Theta1
;
TofHit
[
1
].
theta_in
=
Theta1
;
TofHit
[
0
].
DT
=
DT4
;
TofHit
[
0
].
DT
=
DT4
;
TofHit
[
1
].
DT
=
DT1
;
TofHit
[
1
].
DT
=
DT1
;
...
@@ -441,7 +449,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -441,7 +449,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta2
;
TofHit
[
0
].
theta_in
=
Theta2
;
TofHit
[
1
].
theta_in
=
Theta3
;
TofHit
[
1
].
theta_in
=
Theta3
;
TofHit
[
0
].
DT
=
DT2
;
TofHit
[
0
].
DT
=
DT2
;
TofHit
[
1
].
DT
=
DT3
;
TofHit
[
1
].
DT
=
DT3
;
...
@@ -454,7 +462,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -454,7 +462,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta3
;
TofHit
[
0
].
theta_in
=
Theta3
;
TofHit
[
1
].
theta_in
=
Theta2
;
TofHit
[
1
].
theta_in
=
Theta2
;
TofHit
[
0
].
DT
=
DT3
;
TofHit
[
0
].
DT
=
DT3
;
TofHit
[
1
].
DT
=
DT2
;
TofHit
[
1
].
DT
=
DT2
;
...
@@ -471,7 +479,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -471,7 +479,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta2
;
TofHit
[
0
].
theta_in
=
Theta2
;
TofHit
[
1
].
theta_in
=
Theta4
;
TofHit
[
1
].
theta_in
=
Theta4
;
TofHit
[
0
].
DT
=
DT2
;
TofHit
[
0
].
DT
=
DT2
;
TofHit
[
1
].
DT
=
DT4
;
TofHit
[
1
].
DT
=
DT4
;
...
@@ -484,7 +492,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -484,7 +492,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta4
;
TofHit
[
0
].
theta_in
=
Theta4
;
TofHit
[
1
].
theta_in
=
Theta2
;
TofHit
[
1
].
theta_in
=
Theta2
;
TofHit
[
0
].
DT
=
DT4
;
TofHit
[
0
].
DT
=
DT4
;
TofHit
[
1
].
DT
=
DT2
;
TofHit
[
1
].
DT
=
DT2
;
...
@@ -501,7 +509,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -501,7 +509,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta3
;
TofHit
[
0
].
theta_in
=
Theta3
;
TofHit
[
1
].
theta_in
=
Theta4
;
TofHit
[
1
].
theta_in
=
Theta4
;
TofHit
[
0
].
DT
=
DT3
;
TofHit
[
0
].
DT
=
DT3
;
TofHit
[
1
].
DT
=
DT4
;
TofHit
[
1
].
DT
=
DT4
;
...
@@ -514,7 +522,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -514,7 +522,7 @@ void Analysis::FissionFragmentAnalysis(){
TofHit
[
0
].
theta_in
=
Theta4
;
TofHit
[
0
].
theta_in
=
Theta4
;
TofHit
[
1
].
theta_in
=
Theta3
;
TofHit
[
1
].
theta_in
=
Theta3
;
TofHit
[
0
].
DT
=
DT4
;
TofHit
[
0
].
DT
=
DT4
;
TofHit
[
1
].
DT
=
DT3
;
TofHit
[
1
].
DT
=
DT3
;
...
@@ -529,10 +537,10 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -529,10 +537,10 @@ void Analysis::FissionFragmentAnalysis(){
int
section
=
TofHit
[
i
].
section
;
int
section
=
TofHit
[
i
].
section
;
/*double drift_time;
/*double drift_time;
if(section==1) drift_time = DT1;
if(section==1) drift_time = DT1;
if(section==2) drift_time = DT2;
if(section==2) drift_time = DT2;
if(section==3) drift_time = DT3;
if(section==3) drift_time = DT3;
if(section==4) drift_time = DT4;*/
if(section==4) drift_time = DT4;*/
double
DT_eval
;
double
DT_eval
;
if
(
section
<
3
)
DT_eval
=
55
;
if
(
section
<
3
)
DT_eval
=
55
;
...
@@ -577,7 +585,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -577,7 +585,7 @@ void Analysis::FissionFragmentAnalysis(){
InitPos
[
i
]
=
TVector3
(
XA
,
0
,
ZA
);
InitPos
[
i
]
=
TVector3
(
XA
,
0
,
ZA
);
InitDir
[
i
]
=
TVector3
(
sin
(
TofHit
[
i
].
theta_in
),
0
,
cos
(
TofHit
[
i
].
theta_in
));
InitDir
[
i
]
=
TVector3
(
sin
(
TofHit
[
i
].
theta_in
),
0
,
cos
(
TofHit
[
i
].
theta_in
));
FinalPos
[
i
]
=
TVector3
(
X3lab
,
0
,
Z3lab
);
FinalPos
[
i
]
=
TVector3
(
X3lab
,
0
,
Z3lab
);
vC
=
TVector3
(
XC
,
0
,
ZC
);
vC
=
TVector3
(
XC
,
0
,
ZC
);
vOut
=
TVector3
(
X3lab
-
XC
,
0
,
Z3lab
-
ZC
);
vOut
=
TVector3
(
X3lab
-
XC
,
0
,
Z3lab
-
ZC
);
...
@@ -616,23 +624,15 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -616,23 +624,15 @@ void Analysis::FissionFragmentAnalysis(){
TVector3
B
=
TVector3
(
Bx
,
By
,
Bz
);
TVector3
B
=
TVector3
(
Bx
,
By
,
Bz
);
double
Leff
=
2.067
;
double
Leff
=
2.067
;
/*double rho1 = Leff/abs(2*sin(0.5*(TofHit[0].theta_out-TofHit[0].theta_in))*cos(Tilt-0.5*(TofHit[0].theta_out-TofHit[0].theta_in)));
/*double rho1 = Leff/abs(2*sin(0.5*(TofHit[0].theta_out-TofHit[0].theta_in))*cos(Tilt-0.5*(TofHit[0].theta_out-TofHit[0].theta_in)));
double rho2 = Leff/abs(2*sin(0.5*(TofHit[1].theta_out-TofHit[1].theta_in))*cos(Tilt-0.5*(TofHit[1].theta_out-TofHit[1].theta_in)));
double rho2 = Leff/abs(2*sin(0.5*(TofHit[1].theta_out-TofHit[1].theta_in))*cos(Tilt-0.5*(TofHit[1].theta_out-TofHit[1].theta_in)));
double Brho1 = MagB*rho1;
double Brho1 = MagB*rho1;
double Brho2 = MagB*rho2;*/
double Brho2 = MagB*rho2;*/
m_GladField
->
SetBfield
(
B
);
m_GladField
->
SetZGlad
(
4.434
*
m
);
m_GladField
->
SetLeff
(
2.067
*
m
);
m_GladField
->
SetGladTiltAngle
(
14.
*
deg
);
m_GladField
->
SetCentralTheta
(
20.
*
deg
);
m_GladField
->
SetX_MWPC3
(
-
1.436
*
m
);
m_GladField
->
SetZ_MWPC3
(
8.380
*
m
);
double
Brho1
=
0
;
double
Brho1
=
0
;
double
Brho2
=
0
;
double
Brho2
=
0
;
//Brho1 = m_GladField->FindBrho(InitPos[0], InitDir[0], FinalPos[0]);
//Brho1 = m_GladField->FindBrho(InitPos[0], InitDir[0], FinalPos[0]);
//Brho2 = m_GladField->FindBrho(InitPos[1], InitDir[1], FinalPos[1]);
//Brho2 = m_GladField->FindBrho(InitPos[1], InitDir[1], FinalPos[1]);
Beta_Z1
=
TofHit
[
0
].
beta
;
Beta_Z1
=
TofHit
[
0
].
beta
;
Beta_Z2
=
TofHit
[
1
].
beta
;
Beta_Z2
=
TofHit
[
1
].
beta
;
Gamma1
=
1.
/
sqrt
(
1
-
Beta_Z1
*
Beta_Z1
);
Gamma1
=
1.
/
sqrt
(
1
-
Beta_Z1
*
Beta_Z1
);
...
@@ -662,7 +662,7 @@ void Analysis::FissionFragmentAnalysis(){
...
@@ -662,7 +662,7 @@ void Analysis::FissionFragmentAnalysis(){
SofFF
->
SetPosX3
(
TofHit
[
1
].
x3
);
SofFF
->
SetPosX3
(
TofHit
[
1
].
x3
);
SofFF
->
SetPosY3
(
TofHit
[
0
].
y3
);
SofFF
->
SetPosY3
(
TofHit
[
0
].
y3
);
SofFF
->
SetPosY3
(
TofHit
[
1
].
y3
);
SofFF
->
SetPosY3
(
TofHit
[
1
].
y3
);
//SofFF->SetPosX3(TofHit[0].x3lab);
//SofFF->SetPosX3(TofHit[0].x3lab);
//SofFF->SetPosX3(TofHit[1].x3lab);
//SofFF->SetPosX3(TofHit[1].x3lab);
...
...
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