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
80d852cc
"ReadMe.md" did not exist on "dca08d32bdbf971618334f1ffdb3ade61b2160b3"
Commit
80d852cc
authored
12 years ago
by
matta
Browse files
Options
Downloads
Patches
Plain Diff
* Progress on Sharc
- QQQ working - Adding PAD in progress
parent
64e1412c
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Inputs/DetectorConfiguration/sharc.detector
+43
-33
43 additions, 33 deletions
Inputs/DetectorConfiguration/sharc.detector
NPSimulation/include/Sharc.hh
+33
-5
33 additions, 5 deletions
NPSimulation/include/Sharc.hh
NPSimulation/src/Sharc.cc
+184
-22
184 additions, 22 deletions
NPSimulation/src/Sharc.cc
with
260 additions
and
60 deletions
Inputs/DetectorConfiguration/sharc.detector
+
43
−
33
View file @
80d852cc
...
@@ -13,26 +13,27 @@ Target
...
@@ -13,26 +13,27 @@ Target
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sharc
Sharc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
Upstream CD
%Upstream CD
Sharc
CD
Sharc
QQQ
Z= -
7
0
Z= -
10
0
R= 0
R= 0
Phi=
25
Phi=
0
ThicknessDector= 100
Sharc
CD
Sharc
QQQ
Z= -
7
0
Z= -
10
0
R= 0
R= 0
Phi=
5
0
Phi=
9
0
ThicknessDector= 100
Sharc
CD
Sharc
QQQ
Z= -
7
0
Z= -
10
0
R= 0
R= 0
Phi=
75
Phi=
180
ThicknessDector= 100
Sharc
CD
Sharc
QQQ
Z= -
7
0
Z= -
10
0
R= 0
R= 0
Phi= 100
Phi= 270
ThicknessDector= 100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Upstream Box
% Upstream Box
SharcBOX
SharcBOX
...
@@ -41,7 +42,10 @@ Sharc
...
@@ -41,7 +42,10 @@ Sharc
ThicknessDector2= 100
ThicknessDector2= 100
ThicknessDector3= 100
ThicknessDector3= 100
ThicknessDector4= 100
ThicknessDector4= 100
ThicknessPAD1= 0
ThicknessPAD2= 0
ThicknessPAD3= 0
ThicknessPAD4= 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Down Stream Box
% Down Stream Box
SharcBOX
SharcBOX
...
@@ -50,24 +54,30 @@ Sharc
...
@@ -50,24 +54,30 @@ Sharc
ThicknessDector2= 100
ThicknessDector2= 100
ThicknessDector3= 100
ThicknessDector3= 100
ThicknessDector4= 100
ThicknessDector4= 100
ThicknessPAD1= 1000
ThicknessPAD2= 1000
ThicknessPAD3= 1000
ThicknessPAD4= 1000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
Down
stream CD
%Downstream CD
Sharc
CD
Sharc
QQQ
Z=
7
0
Z=
10
0
R= 0
R= 0
Phi=
25
Phi=
0
ThicknessDector= 100
Sharc
CD
Sharc
QQQ
Z=
7
0
Z=
10
0
R= 0
R= 0
Phi=
5
0
Phi=
9
0
ThicknessDector= 100
Sharc
CD
Sharc
QQQ
Z=
7
0
Z=
10
0
R= 0
R= 0
Phi=
75
Phi=
180
ThicknessDector= 100
Sharc
CD
Sharc
QQQ
Z=
7
0
Z=
10
0
R= 0
R= 0
Phi= 100
Phi= 270
ThicknessDector= 100
This diff is collapsed.
Click to expand it.
NPSimulation/include/Sharc.hh
+
33
−
5
View file @
80d852cc
...
@@ -62,7 +62,7 @@ namespace SHARC
...
@@ -62,7 +62,7 @@ namespace SHARC
// BOX Wafer
// BOX Wafer
const
G4double
BOX_Wafer_Width
=
51.00
*
mm
;
const
G4double
BOX_Wafer_Width
=
51.00
*
mm
;
const
G4double
BOX_Wafer_Length
=
7
6
.00
*
mm
;
const
G4double
BOX_Wafer_Length
=
7
7
.00
*
mm
;
const
G4double
BOX_Wafer_Thickness
=
100
*
um
;
const
G4double
BOX_Wafer_Thickness
=
100
*
um
;
const
G4double
BOX_Wafer_DeadLayer_Thickness
=
0.1
*
um
;
const
G4double
BOX_Wafer_DeadLayer_Thickness
=
0.1
*
um
;
...
@@ -76,6 +76,30 @@ namespace SHARC
...
@@ -76,6 +76,30 @@ namespace SHARC
BOX_PCB_Length
/
2.
-
BOX_PCB_Border_ShortSide
-
BOX_Wafer_Length
/
2.
;
BOX_PCB_Length
/
2.
-
BOX_PCB_Border_ShortSide
-
BOX_Wafer_Length
/
2.
;
const
G4double
BOX_PCB_Slot_Position
=
(
BOX_Wafer_Length
/
2.
-
BOX_Wafer_Length_Offset
)
+
BOX_PCB_Slot_Border
+
BOX_PCB_Slot_Width
/
2.
;
const
G4double
BOX_PCB_Slot_Position
=
(
BOX_Wafer_Length
/
2.
-
BOX_Wafer_Length_Offset
)
+
BOX_PCB_Slot_Border
+
BOX_PCB_Slot_Width
/
2.
;
// PAD //
// PAD PCB
const
G4double
PAD_PCB_Width
=
61.0
*
mm
;
const
G4double
PAD_PCB_Length
=
104.00
*
mm
;
const
G4double
PAD_PCB_Thickness
=
3
*
mm
;
const
G4double
PAD_PCB_Border_LongSide
=
1
*
mm
;
const
G4double
PAD_PCB_Border_ShortSide
=
2
*
mm
;
const
G4double
PAD_PCB_Slot_Width
=
3
*
mm
;
const
G4double
PAD_PCB_Slot_Border
=
5
*
mm
;
const
G4double
PAD_PCB_Slot_Deepness
=
1
*
mm
;
// PAD Wafer
const
G4double
PAD_Wafer_Width
=
52.00
*
mm
;
const
G4double
PAD_Wafer_Length
=
74.00
*
mm
;
const
G4double
PAD_Wafer_Thickness
=
100
*
um
;
const
G4double
PAD_Wafer_DeadLayer_Thickness
=
0.1
*
um
;
// Compute
const
G4double
PAD_Wafer_Width_Offset
=
PAD_PCB_Width
/
2.
-
PAD_PCB_Border_LongSide
-
PAD_Wafer_Width
/
2.
;
const
G4double
PAD_Wafer_Length_Offset
=
PAD_PCB_Length
/
2.
-
PAD_PCB_Border_ShortSide
-
PAD_Wafer_Length
/
2.
;
// QQQ //
// QQQ //
// QQQ PCB
// QQQ PCB
const
G4double
QQQ_PCB_Outer_Radius
=
61
*
mm
;
const
G4double
QQQ_PCB_Outer_Radius
=
61
*
mm
;
...
@@ -88,8 +112,8 @@ namespace SHARC
...
@@ -88,8 +112,8 @@ namespace SHARC
const
G4double
QQQ_Wafer_Thickness
=
100
*
um
;
const
G4double
QQQ_Wafer_Thickness
=
100
*
um
;
const
G4double
QQQ_Wafer_Starting_Phi
=
8
*
deg
;
const
G4double
QQQ_Wafer_Starting_Phi
=
8
*
deg
;
const
G4double
QQQ_Wafer_Stopping_Phi
=
162
*
deg
;
const
G4double
QQQ_Wafer_Stopping_Phi
=
162
*
deg
;
const
G4int
QQQ_Wafer_
Front_
NumberOfStrip
=
16
;
const
G4int
QQQ_Wafer_NumberOf
_Radial
Strip
=
16
;
const
G4int
QQQ_Wafer_
Back_
NumberOfStrip
=
16
;
const
G4int
QQQ_Wafer_NumberOf
_Annular
Strip
=
24
;
}
}
...
@@ -109,7 +133,7 @@ public:
...
@@ -109,7 +133,7 @@ public:
////////////////////////////////////////////////////
////////////////////////////////////////////////////
public:
public:
// To add a box detector
// To add a box detector
void
AddBoxDetector
(
G4double
Z
,
G4double
Thickness1
,
G4double
Thickness2
,
G4double
Thickness3
,
G4double
Thickness4
);
void
AddBoxDetector
(
G4double
Z
,
G4double
Thickness1
,
G4double
Thickness2
,
G4double
Thickness3
,
G4double
Thickness4
,
G4double
ThicknessPAD1
,
G4double
ThicknessPAD2
,
G4double
ThicknessPAD3
,
G4double
ThicknessPAD4
);
// To add a Quadrant detector
// To add a Quadrant detector
void
AddQQQDetector
(
G4ThreeVector
Pos
);
void
AddQQQDetector
(
G4ThreeVector
Pos
);
...
@@ -173,7 +197,7 @@ private:
...
@@ -173,7 +197,7 @@ private:
vector
<
bool
>
m_Type
;
vector
<
bool
>
m_Type
;
// Used for Quadrant detectors
// Used for Quadrant detectors
vector
<
G4ThreeVector
>
m_Pos
;
vector
<
G4ThreeVector
>
m_Pos
;
// R , Phi , Z
vector
<
G4double
>
m_Thickness
;
vector
<
G4double
>
m_Thickness
;
// Used for Box detectors
// Used for Box detectors
...
@@ -182,6 +206,10 @@ private:
...
@@ -182,6 +206,10 @@ private:
vector
<
G4double
>
m_Thickness2
;
vector
<
G4double
>
m_Thickness2
;
vector
<
G4double
>
m_Thickness3
;
vector
<
G4double
>
m_Thickness3
;
vector
<
G4double
>
m_Thickness4
;
vector
<
G4double
>
m_Thickness4
;
vector
<
G4double
>
m_ThicknessPAD1
;
vector
<
G4double
>
m_ThicknessPAD2
;
vector
<
G4double
>
m_ThicknessPAD3
;
vector
<
G4double
>
m_ThicknessPAD4
;
// Set to true if you want to see Telescope Frame in your visualisation
// Set to true if you want to see Telescope Frame in your visualisation
bool
m_non_sensitive_part_visiualisation
;
bool
m_non_sensitive_part_visiualisation
;
...
...
This diff is collapsed.
Click to expand it.
NPSimulation/src/Sharc.cc
+
184
−
22
View file @
80d852cc
...
@@ -75,7 +75,7 @@ Sharc::~Sharc()
...
@@ -75,7 +75,7 @@ Sharc::~Sharc()
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void
Sharc
::
AddBoxDetector
(
G4double
Z
,
G4double
Thickness1
,
G4double
Thickness2
,
G4double
Thickness3
,
G4double
Thickness4
)
void
Sharc
::
AddBoxDetector
(
G4double
Z
,
G4double
Thickness1
,
G4double
Thickness2
,
G4double
Thickness3
,
G4double
Thickness4
,
G4double
ThicknessPAD1
,
G4double
ThicknessPAD2
,
G4double
ThicknessPAD3
,
G4double
ThicknessPAD4
)
{
{
m_Type
.
push_back
(
true
);
m_Type
.
push_back
(
true
);
...
@@ -85,6 +85,11 @@ void Sharc::AddBoxDetector(G4double Z,G4double Thickness1,G4double Thickness2,G4
...
@@ -85,6 +85,11 @@ void Sharc::AddBoxDetector(G4double Z,G4double Thickness1,G4double Thickness2,G4
m_Thickness3
.
push_back
(
Thickness3
);
m_Thickness3
.
push_back
(
Thickness3
);
m_Thickness4
.
push_back
(
Thickness4
);
m_Thickness4
.
push_back
(
Thickness4
);
m_ThicknessPAD1
.
push_back
(
ThicknessPAD1
);
m_ThicknessPAD2
.
push_back
(
ThicknessPAD2
);
m_ThicknessPAD3
.
push_back
(
ThicknessPAD3
);
m_ThicknessPAD4
.
push_back
(
ThicknessPAD4
);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
...
@@ -109,7 +114,7 @@ void Sharc::ReadConfiguration(string Path)
...
@@ -109,7 +114,7 @@ void Sharc::ReadConfiguration(string Path)
string
LineBuffer
;
string
LineBuffer
;
string
DataBuffer
;
string
DataBuffer
;
G4double
R
,
Phi
,
Thickness1
,
Thickness2
,
Thickness3
,
Thickness4
,
Z
;
G4double
R
,
Phi
,
Thickness1
,
Thickness2
,
Thickness3
,
Thickness4
,
ThicknessPAD1
,
ThicknessPAD2
,
ThicknessPAD3
,
ThicknessPAD4
,
Z
;
G4ThreeVector
Pos
;
G4ThreeVector
Pos
;
bool
check_R
=
false
;
bool
check_R
=
false
;
bool
check_Phi
=
false
;
bool
check_Phi
=
false
;
...
@@ -117,6 +122,10 @@ void Sharc::ReadConfiguration(string Path)
...
@@ -117,6 +122,10 @@ void Sharc::ReadConfiguration(string Path)
bool
check_Thickness2
=
false
;
bool
check_Thickness2
=
false
;
bool
check_Thickness3
=
false
;
bool
check_Thickness3
=
false
;
bool
check_Thickness4
=
false
;
bool
check_Thickness4
=
false
;
bool
check_PAD1
=
false
;
bool
check_PAD2
=
false
;
bool
check_PAD3
=
false
;
bool
check_PAD4
=
false
;
bool
check_Z
=
false
;
bool
check_Z
=
false
;
bool
ReadingStatusQQQ
=
false
;
bool
ReadingStatusQQQ
=
false
;
...
@@ -192,7 +201,7 @@ void Sharc::ReadConfiguration(string Path)
...
@@ -192,7 +201,7 @@ void Sharc::ReadConfiguration(string Path)
if
(
check_R
&&
check_Phi
&&
check_Z
){
if
(
check_R
&&
check_Phi
&&
check_Z
){
ReadingStatusQQQ
=
false
;
ReadingStatusQQQ
=
false
;
AddQQQDetector
(
G4ThreeVector
(
Z
,
R
,
Phi
));
AddQQQDetector
(
G4ThreeVector
(
R
,
Phi
,
Z
));
// Reinitialisation of Check Boolean
// Reinitialisation of Check Boolean
check_R
=
false
;
check_R
=
false
;
check_Phi
=
false
;
check_Phi
=
false
;
...
@@ -243,6 +252,34 @@ void Sharc::ReadConfiguration(string Path)
...
@@ -243,6 +252,34 @@ void Sharc::ReadConfiguration(string Path)
cout
<<
" ThicknessDetector4= "
<<
Thickness4
/
um
<<
"mm"
<<
endl
;
cout
<<
" ThicknessDetector4= "
<<
Thickness4
/
um
<<
"mm"
<<
endl
;
}
}
else
if
(
DataBuffer
==
"ThicknessPAD1="
)
{
check_PAD1
=
true
;
ConfigFile
>>
DataBuffer
;
ThicknessPAD1
=
atof
(
DataBuffer
.
c_str
())
*
um
;
cout
<<
" ThicknessPAD1= "
<<
ThicknessPAD1
<<
endl
;
}
else
if
(
DataBuffer
==
"ThicknessPAD2="
)
{
check_PAD2
=
true
;
ConfigFile
>>
DataBuffer
;
ThicknessPAD2
=
atof
(
DataBuffer
.
c_str
())
*
um
;
cout
<<
" ThicknessPAD2= "
<<
ThicknessPAD2
<<
endl
;
}
else
if
(
DataBuffer
==
"ThicknessPAD3="
)
{
check_PAD3
=
true
;
ConfigFile
>>
DataBuffer
;
ThicknessPAD3
=
atof
(
DataBuffer
.
c_str
())
*
um
;
cout
<<
" ThicknessPAD3= "
<<
ThicknessPAD3
<<
endl
;
}
else
if
(
DataBuffer
==
"ThicknessPAD4="
)
{
check_PAD4
=
true
;
ConfigFile
>>
DataBuffer
;
ThicknessPAD4
=
atof
(
DataBuffer
.
c_str
())
*
um
;
cout
<<
" ThicknessPAD4= "
<<
ThicknessPAD4
<<
endl
;
}
///////////////////////////////////////////////////
///////////////////////////////////////////////////
// If no Detector Token and no comment, toggle out
// If no Detector Token and no comment, toggle out
else
{
else
{
...
@@ -254,17 +291,24 @@ void Sharc::ReadConfiguration(string Path)
...
@@ -254,17 +291,24 @@ void Sharc::ReadConfiguration(string Path)
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// If All necessary information there, toggle out
// If All necessary information there, toggle out
if
(
check_Thickness1
&&
check_Thickness2
&&
check_Thickness3
&&
check_Thickness4
&&
check_Z
){
if
(
check_Thickness1
&&
check_Thickness2
&&
check_Thickness3
&&
check_Thickness4
&&
check_PAD1
&&
check_PAD2
&&
check_PAD3
&&
check_PAD4
&&
check_Z
){
ReadingStatusBOX
=
false
;
ReadingStatusBOX
=
false
;
AddBoxDetector
(
Z
,
Thickness1
,
Thickness2
,
Thickness3
,
Thickness4
);
AddBoxDetector
(
Z
,
Thickness1
,
Thickness2
,
Thickness3
,
Thickness4
,
ThicknessPAD1
,
ThicknessPAD2
,
ThicknessPAD3
,
ThicknessPAD4
);
// Reinitialisation of Check Boolean
// Reinitialisation of Check Boolean
check_R
=
false
;
check_R
=
false
;
check_Phi
=
false
;
check_Phi
=
false
;
check_Thickness1
=
false
;
check_Thickness1
=
false
;
check_Thickness2
=
false
;
check_Thickness2
=
false
;
check_Thickness3
=
false
;
check_Thickness3
=
false
;
check_Thickness4
=
false
;
check_Thickness4
=
false
;
check_Z
=
false
;
check_PAD1
=
false
;
check_PAD2
=
false
;
check_PAD3
=
false
;
check_PAD4
=
false
;
check_Z
=
false
;
}
}
}
}
...
@@ -293,7 +337,7 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
...
@@ -293,7 +337,7 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
const
G4VisAttributes
*
FrameVisAtt
=
new
G4VisAttributes
(
G4Colour
(
0.5
,
0.5
,
0.5
))
;
const
G4VisAttributes
*
FrameVisAtt
=
new
G4VisAttributes
(
G4Colour
(
0.5
,
0.5
,
0.5
))
;
// create the Box
// create the Box
DSSD
// Make the a single detector geometry
// Make the a single detector geometry
G4Box
*
BoxDetector
=
new
G4Box
(
"BoxDetector"
,
G4Box
*
BoxDetector
=
new
G4Box
(
"BoxDetector"
,
...
@@ -412,7 +456,123 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
...
@@ -412,7 +456,123 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
logicBoxDetector
,
"Box"
,
world
,
false
,
i
+
3
);
logicBoxDetector
,
"Box"
,
world
,
false
,
i
+
3
);
}
}
// create the PAD
// Make the a single detector geometry
G4Box
*
PADDetector
=
new
G4Box
(
"PADDetector"
,
PAD_PCB_Length
/
2.
,
PAD_PCB_Width
/
2.
,
PAD_PCB_Thickness
/
2.
);
G4Box
*
PADPCBFull
=
new
G4Box
(
"PCBFull"
,
PAD_PCB_Length
/
2.
,
PAD_PCB_Width
/
2.
,
PAD_PCB_Thickness
/
2.
);
G4Box
*
PADWaferShape
=
new
G4Box
(
"PADWaferShape"
,
PAD_Wafer_Length
/
2.
,
PAD_Wafer_Width
/
2.
,
PAD_PCB_Thickness
/
2.
+
0.1
*
mm
);
G4Box
*
PADWafer
=
new
G4Box
(
"PADWafer"
,
PAD_Wafer_Length
/
2.
,
PAD_Wafer_Width
/
2.
,
PAD_Wafer_Thickness
/
2.
);
G4ThreeVector
PAD_Wafer_Offset
=
G4ThreeVector
(
PAD_Wafer_Length_Offset
,
PAD_Wafer_Width_Offset
,
0
);
G4SubtractionSolid
*
PADPCB
=
new
G4SubtractionSolid
(
"PADPCB"
,
PADPCBFull
,
PADWaferShape
,
new
G4RotationMatrix
,
PAD_Wafer_Offset
);
// Master Volume
G4LogicalVolume
*
logicPADDetector
=
new
G4LogicalVolume
(
PADDetector
,
m_MaterialVacuum
,
"logicPADDetector"
,
0
,
0
,
0
);
logicPADDetector
->
SetVisAttributes
(
G4VisAttributes
::
Invisible
);
// Sub Volume PCB
G4LogicalVolume
*
logicPADPCB
=
new
G4LogicalVolume
(
PCB
,
m_MaterialPCB
,
"logicPADPCB"
,
0
,
0
,
0
);
logicPADPCB
->
SetVisAttributes
(
PCBVisAtt
);
// Sub Volume Wafer
G4LogicalVolume
*
logicPADWafer
=
new
G4LogicalVolume
(
Wafer
,
m_MaterialSilicon
,
"logicPADWafer"
,
0
,
0
,
0
);
logicPADWafer
->
SetVisAttributes
(
SiliconVisAtt
);
// Place the sub volume in the master volume
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
0
),
G4ThreeVector
(
0
,
0
,
0
),
logicPCB
,
"PAD_PCB"
,
logicPADDetector
,
false
,
0
);
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
0
),
PAD_Wafer_Offset
,
logicWafer
,
"PAD_Wafer"
,
logicPADDetector
,
false
,
0
);
// Place the detector in the world
for
(
unsigned
int
i
=
0
;
i
<
m_Z
.
size
()
;
i
++
){
G4ThreeVector
DetectorPosition
=
-
PAD_Wafer_Offset
+
0.5
*
G4ThreeVector
(
PAD_PCB_Slot_Border
+
0.5
*
PAD_PCB_Slot_Width
-
(
PAD_PCB_Border_ShortSide
-
PAD_PCB_Slot_Deepness
),
0
,
0
);
// Det 1
G4RotationMatrix
*
DetectorRotation1
=
new
G4RotationMatrix
;
G4ThreeVector
DetectorSpacing
=
-
G4ThreeVector
(
0
,
0
,
0.5
*
(
PAD_Wafer_Length
+
(
PAD_PCB_Border_ShortSide
-
PAD_PCB_Slot_Deepness
)
+
PAD_PCB_Slot_Border
+
0.5
*
PAD_PCB_Slot_Width
));
DetectorRotation1
->
rotateX
(
90
*
deg
);
if
(
m_Z
[
i
]
>
0
)
DetectorRotation1
->
rotateY
(
180
*
deg
);
G4ThreeVector
DetectorPosition1
=
DetectorPosition
+
DetectorSpacing
;
DetectorPosition1
.
transform
(
*
DetectorRotation1
);
DetectorPosition1
+=
G4ThreeVector
(
0
,
0
,
m_Z
[
i
]);
new
G4PVPlacement
(
G4Transform3D
(
*
DetectorRotation1
,
DetectorPosition1
),
logicPADDetector
,
"PAD"
,
world
,
false
,
i
+
0
);
// Det2
G4RotationMatrix
*
DetectorRotation2
=
new
G4RotationMatrix
;
DetectorRotation2
->
rotateZ
(
180
*
deg
);
DetectorRotation2
->
rotateX
(
-
90
*
deg
);
if
(
m_Z
[
i
]
>
0
)
DetectorRotation2
->
rotateY
(
180
*
deg
);
G4ThreeVector
DetectorPosition2
=
DetectorPosition
+
DetectorSpacing
;
DetectorPosition2
.
transform
(
*
DetectorRotation2
);
DetectorPosition2
+=
G4ThreeVector
(
0
,
0
,
m_Z
[
i
]);
new
G4PVPlacement
(
G4Transform3D
(
*
DetectorRotation2
,
DetectorPosition2
),
logicPADDetector
,
"PAD"
,
world
,
false
,
i
+
1
);
// Det 3
G4RotationMatrix
*
DetectorRotation3
=
new
G4RotationMatrix
;
DetectorRotation3
->
rotateX
(
90
*
deg
);
DetectorRotation3
->
rotateZ
(
90
*
deg
);
if
(
m_Z
[
i
]
>
0
)
DetectorRotation3
->
rotateY
(
180
*
deg
);
G4ThreeVector
DetectorPosition3
=
DetectorPosition
+
DetectorSpacing
;
DetectorPosition3
.
transform
(
*
DetectorRotation3
);
DetectorPosition3
+=
G4ThreeVector
(
0
,
0
,
m_Z
[
i
]);
new
G4PVPlacement
(
G4Transform3D
(
*
DetectorRotation3
,
DetectorPosition3
),
logicPADDetector
,
"PAD"
,
world
,
false
,
i
+
2
);
// Det 4
G4RotationMatrix
*
DetectorRotation4
=
new
G4RotationMatrix
;
DetectorRotation4
->
rotateX
(
90
*
deg
);
DetectorRotation4
->
rotateZ
(
-
90
*
deg
);
if
(
m_Z
[
i
]
>
0
)
DetectorRotation4
->
rotateY
(
180
*
deg
);
G4ThreeVector
DetectorPosition4
=
DetectorPosition
+
DetectorSpacing
;
DetectorPosition4
.
transform
(
*
DetectorRotation4
);
DetectorPosition4
+=
G4ThreeVector
(
0
,
0
,
m_Z
[
i
]);
new
G4PVPlacement
(
G4Transform3D
(
*
DetectorRotation4
,
DetectorPosition4
),
logicPADDetector
,
"PAD"
,
world
,
false
,
i
+
3
);
}
}
}
///////////////////////////////////////////////////
///////////////////////////////////////////////////
...
@@ -428,7 +588,7 @@ void Sharc::ConstructQQQDetector(G4LogicalVolume* world)
...
@@ -428,7 +588,7 @@ void Sharc::ConstructQQQDetector(G4LogicalVolume* world)
const
G4VisAttributes
*
FrameVisAtt
=
new
G4VisAttributes
(
G4Colour
(
0.5
,
0.5
,
0.5
))
;
const
G4VisAttributes
*
FrameVisAtt
=
new
G4VisAttributes
(
G4Colour
(
0.5
,
0.5
,
0.5
))
;
// create the
Box
// create the
QQQ
// Make the a single detector geometry
// Make the a single detector geometry
G4Tubs
*
QQQDetector
=
new
G4Tubs
(
"QQQDetector"
,
G4Tubs
*
QQQDetector
=
new
G4Tubs
(
"QQQDetector"
,
...
@@ -470,25 +630,27 @@ void Sharc::ConstructQQQDetector(G4LogicalVolume* world)
...
@@ -470,25 +630,27 @@ void Sharc::ConstructQQQDetector(G4LogicalVolume* world)
new
G4LogicalVolume
(
PCB
,
m_MaterialPCB
,
"logicPCB"
,
0
,
0
,
0
);
new
G4LogicalVolume
(
PCB
,
m_MaterialPCB
,
"logicPCB"
,
0
,
0
,
0
);
logicPCB
->
SetVisAttributes
(
PCBVisAtt
);
logicPCB
->
SetVisAttributes
(
PCBVisAtt
);
/*
// Sub Volume Wafer
// Sub Volume Wafer
G4LogicalVolume
*
logicWafer
=
G4LogicalVolume
*
logicWafer
=
new
G4LogicalVolume
(
Wafer
,
m_MaterialSilicon
,
"logicWafer"
,
0
,
0
,
0
);
new
G4LogicalVolume
(
Wafer
,
m_MaterialSilicon
,
"logicWafer"
,
0
,
0
,
0
);
logicWafer->SetVisAttributes(SiliconVisAtt);
*/
logicWafer
->
SetVisAttributes
(
SiliconVisAtt
);
// Place the sub volume in the master volume
// Place the sub volume in the master volume
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
0
),
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
0
),
G4ThreeVector
(
0
,
0
,
0
),
G4ThreeVector
(
0
,
0
,
0
),
logicPCB
,
"QQQ_PCB"
,
logicQQQDetector
,
false
,
0
);
logicPCB
,
"QQQ_PCB"
,
logicQQQDetector
,
false
,
0
);
/* new G4PVPlacement(new G4RotationMatrix(0,0,0),
Box_Wafer_Offset,
logicWafer,"Box_Wafer",logicBoxDetector,false,0);*/
// Place the master volume in the world
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
0
),
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
0
),
G4ThreeVector
(
0
,
0
,
100
),
G4ThreeVector
(
0
,
0
,
0
),
logicWafer
,
"QQQ_Wafer"
,
logicQQQDetector
,
false
,
0
);
// Place the masters volume in the world
for
(
unsigned
int
i
=
0
;
i
<
m_Pos
.
size
()
;
i
++
){
new
G4PVPlacement
(
new
G4RotationMatrix
(
0
,
0
,
m_Pos
[
i
].
y
()),
G4ThreeVector
(
0
,
0
,
m_Pos
[
i
].
z
()),
logicQQQDetector
,
"QQQ"
,
world
,
false
,
0
);
logicQQQDetector
,
"QQQ"
,
world
,
false
,
0
);
}
}
}
// Add Detector branch to the EventTree.
// Add Detector branch to the EventTree.
...
...
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