BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
PartProduce Class Reference

#include <PartProduce.hh>

Public Member Functions

 PartProduce ()
 ~PartProduce ()
void IniParam ()
G4VSolid * sd_containerOut (double smallL=0, string name="")
G4VSolid * sd_containerIn (double smallL=0, string name="")
G4LogicalVolume * lg_containerFrame (string name="")
G4VSolid * sd_upCover (double smallL=0, string name="")
G4VSolid * sd_lowCover1 (double smallL=0, string name="")
G4VSolid * sd_lowCover2 (double smallL=0, string name="")
G4LogicalVolume * lg_upCover (string name="")
G4LogicalVolume * lg_lowCover1 (string name="")
G4LogicalVolume * lg_lowCover2 (string name="")
G4VSolid * sd_upFEE (double smallL=0, string name="")
G4LogicalVolume * lg_upFEE_pcb (string name="")
G4LogicalVolume * lg_upFEE (string name="")
G4VSolid * sd_sideFEE (double smallL=0, string name="")
G4LogicalVolume * lg_sideFEE_pcb (string name="")
G4LogicalVolume * lg_sideFEE (string name="")
G4VSolid * sd_castingDie_outline (double smallL=0, string name="")
G4LogicalVolume * lg_castingDie (string name="")
G4LogicalVolume * lg_container (int flag, string name="")
G4LogicalVolume * lg_gasContainer (string name="")
G4LogicalVolume * lg_bareChamber (string name="")
G4LogicalVolume * lg_honeyComb (string name="")
G4LogicalVolume * lg_tape_mrpc (string name="")
G4LogicalVolume * lg_pcbBoard (G4int flag, string name="")
G4AssemblyVolume * lg_strip (string name="")
G4LogicalVolume * lg_mylar (string name="")
G4LogicalVolume * lg_glass (G4int flag, string name="")
G4LogicalVolume * lg_gasLayer (string name="")
G4LogicalVolume * lg_bracket (string name="")
G4LogicalVolume * lg_upStopBlock (string name="")
G4LogicalVolume * lg_sideStopBlock (string name="")
 PartProduce ()
 ~PartProduce ()
void IniParam ()
G4VSolid * sd_containerOut (double smallL=0, string name="")
G4VSolid * sd_containerIn (double smallL=0, string name="")
G4LogicalVolume * lg_containerFrame (string name="")
G4VSolid * sd_upCover (double smallL=0, string name="")
G4VSolid * sd_lowCover1 (double smallL=0, string name="")
G4VSolid * sd_lowCover2 (double smallL=0, string name="")
G4LogicalVolume * lg_upCover (string name="")
G4LogicalVolume * lg_lowCover1 (string name="")
G4LogicalVolume * lg_lowCover2 (string name="")
G4VSolid * sd_upFEE (double smallL=0, string name="")
G4LogicalVolume * lg_upFEE_pcb (string name="")
G4LogicalVolume * lg_upFEE (string name="")
G4VSolid * sd_sideFEE (double smallL=0, string name="")
G4LogicalVolume * lg_sideFEE_pcb (string name="")
G4LogicalVolume * lg_sideFEE (string name="")
G4VSolid * sd_castingDie_outline (double smallL=0, string name="")
G4LogicalVolume * lg_castingDie (string name="")
G4LogicalVolume * lg_container (int flag, string name="")
G4LogicalVolume * lg_gasContainer (string name="")
G4LogicalVolume * lg_bareChamber (string name="")
G4LogicalVolume * lg_honeyComb (string name="")
G4LogicalVolume * lg_tape_mrpc (string name="")
G4LogicalVolume * lg_pcbBoard (G4int flag, string name="")
G4AssemblyVolume * lg_strip (string name="")
G4LogicalVolume * lg_mylar (string name="")
G4LogicalVolume * lg_glass (G4int flag, string name="")
G4LogicalVolume * lg_gasLayer (string name="")
G4LogicalVolume * lg_bracket (string name="")
G4LogicalVolume * lg_upStopBlock (string name="")
G4LogicalVolume * lg_sideStopBlock (string name="")
 PartProduce ()
 ~PartProduce ()
void IniParam ()
G4VSolid * sd_containerOut (double smallL=0, string name="")
G4VSolid * sd_containerIn (double smallL=0, string name="")
G4LogicalVolume * lg_containerFrame (string name="")
G4VSolid * sd_upCover (double smallL=0, string name="")
G4VSolid * sd_lowCover1 (double smallL=0, string name="")
G4VSolid * sd_lowCover2 (double smallL=0, string name="")
G4LogicalVolume * lg_upCover (string name="")
G4LogicalVolume * lg_lowCover1 (string name="")
G4LogicalVolume * lg_lowCover2 (string name="")
G4VSolid * sd_upFEE (double smallL=0, string name="")
G4LogicalVolume * lg_upFEE_pcb (string name="")
G4LogicalVolume * lg_upFEE (string name="")
G4VSolid * sd_sideFEE (double smallL=0, string name="")
G4LogicalVolume * lg_sideFEE_pcb (string name="")
G4LogicalVolume * lg_sideFEE (string name="")
G4VSolid * sd_castingDie_outline (double smallL=0, string name="")
G4LogicalVolume * lg_castingDie (string name="")
G4LogicalVolume * lg_container (int flag, string name="")
G4LogicalVolume * lg_gasContainer (string name="")
G4LogicalVolume * lg_bareChamber (string name="")
G4LogicalVolume * lg_honeyComb (string name="")
G4LogicalVolume * lg_tape_mrpc (string name="")
G4LogicalVolume * lg_pcbBoard (G4int flag, string name="")
G4AssemblyVolume * lg_strip (string name="")
G4LogicalVolume * lg_mylar (string name="")
G4LogicalVolume * lg_glass (G4int flag, string name="")
G4LogicalVolume * lg_gasLayer (string name="")
G4LogicalVolume * lg_bracket (string name="")
G4LogicalVolume * lg_upStopBlock (string name="")
G4LogicalVolume * lg_sideStopBlock (string name="")

Detailed Description

Constructor & Destructor Documentation

◆ PartProduce() [1/3]

PartProduce::PartProduce ( )

Definition at line 25 of file PartProduce.cc.

25{ IniParam(); }
void IniParam()

◆ ~PartProduce() [1/3]

PartProduce::~PartProduce ( )

Definition at line 27 of file PartProduce.cc.

27{}

◆ PartProduce() [2/3]

PartProduce::PartProduce ( )

◆ ~PartProduce() [2/3]

PartProduce::~PartProduce ( )

◆ PartProduce() [3/3]

PartProduce::PartProduce ( )

◆ ~PartProduce() [3/3]

PartProduce::~PartProduce ( )

Member Function Documentation

◆ IniParam() [1/3]

void PartProduce::IniParam ( )

Definition at line 29 of file PartProduce.cc.

29 {
31
32 // All the values are in units of mm or deg
33 containerOut_xdown = tofPara->Get( "containerOut_xdown" );
34 containerOut_xup = tofPara->Get( "containerOut_xup" );
35 containerOut_y = tofPara->Get( "containerOut_y" );
36 containerOut_z = tofPara->Get( "containerOut_z" );
37 container_thickness = tofPara->Get( "container_thickness" );
38 container_lowBorder = tofPara->Get( "container_lowBorder" );
39
40 containerIn_xdown = tofPara->Get( "containerIn_xdown" );
41 containerIn_xup = tofPara->Get( "containerIn_xup" );
42 containerIn_y = tofPara->Get( "containerIn_y" );
43 containerIn_z = tofPara->Get( "containerIn_z" );
44
45 upCover_xdown = tofPara->Get( "upCover_xdown" );
46 upCover_xup = tofPara->Get( "upCover_xup" );
47 upCover_y = tofPara->Get( "upCover_y" );
48 upCover_z = tofPara->Get( "upCover_z" );
49 upCover_posz = tofPara->Get( "upCover_posz" );
50
51 lowCover1_xdown = tofPara->Get( "lowCover1_xdown" );
52 lowCover1_xup = tofPara->Get( "lowCover1_xup" );
53 lowCover1_y = tofPara->Get( "lowCover1_y" );
54 lowCover1_z = tofPara->Get( "lowCover1_z" );
55 lowCover1_addx = tofPara->Get( "lowCover1_addx" );
56 lowCover1_addz = tofPara->Get( "lowCover1_addz" );
57 lowCover1_posz = tofPara->Get( "lowCover1_posz" );
58
59 lowCover2_xdown = tofPara->Get( "lowCover2_xdown" );
60 lowCover2_xup = tofPara->Get( "lowCover2_xup" );
61 lowCover2_y = tofPara->Get( "lowCover2_y" );
62 lowCover2_z = tofPara->Get( "lowCover2_z" );
63 lowCover2_posz = tofPara->Get( "lowCover2_posz" );
64
65 upFEE_xdown = tofPara->Get( "upFEE_xdown" );
66 upFEE_xup = tofPara->Get( "upFEE_xup" );
67 upFEE_y = tofPara->Get( "upFEE_y" );
68 upFEE_z = tofPara->Get( "upFEE_z" );
69 FEE_thickness = tofPara->Get( "FEE_thickness" );
70 upFEE_posz = tofPara->Get( "upFEE_posz" );
71
72 upFEE_pcb_xdown = tofPara->Get( "upFEE_pcb_xdown" );
73 upFEE_pcb_xup = tofPara->Get( "upFEE_pcb_xup" );
74 upFEE_pcb_y = tofPara->Get( "upFEE_pcb_y" );
75 upFEE_pcb_z = tofPara->Get( "upFEE_pcb_z" );
76
77 sideFEE_x = tofPara->Get( "sideFEE_x" );
78 sideFEE_y = tofPara->Get( "sideFEE_y" );
79 sideFEE_z = tofPara->Get( "sideFEE_z" );
80 sideFEE_posl = tofPara->Get( "sideFEE_posl" );
81
82 sideFEE_pcb_x = tofPara->Get( "sideFEE_pcb_x" );
83 sideFEE_pcb_y = tofPara->Get( "sideFEE_pcb_y" );
84 sideFEE_pcb_z = tofPara->Get( "sideFEE_pcb_z" );
85
86 castingDie_x = tofPara->Get( "castingDie_x" );
87 castingDie_y = tofPara->Get( "castingDie_y" );
88 castingDie_z = tofPara->Get( "castingDie_z" );
89 castingDie_addr = tofPara->Get( "castingDie_addr" );
90 castingDie_subtractx = tofPara->Get( "castingDie_subtractx" );
91 castingDie_subtract_posz = tofPara->Get( "castingDie_subtract_posz" );
92 castingDie_posz1 = tofPara->Get( "castingDie_posz1" );
93 castingDie_posz2 = tofPara->Get( "castingDie_posz2" );
94
95 chamber_in_posy = tofPara->Get( "chamber_in_posy" );
96 chamber_out_posy = tofPara->Get( "chamber_out_posy" );
97
98 bracket_x = tofPara->Get( "bracket_x" );
99 bracket_y = tofPara->Get( "bracket_y" );
100 bracket_z = tofPara->Get( "bracket_z" );
101 bracket_r = tofPara->Get( "bracket_r" );
102 bracket_posx = tofPara->Get( "bracket_posx" );
103
104 upStopBlock_x = tofPara->Get( "upStopBlock_x" );
105 upStopBlock_y = tofPara->Get( "upStopBlock_y" );
106 upStopBlock_z = tofPara->Get( "upStopBlock_z" );
107 upStopBlock_subtractr = tofPara->Get( "upStopBlock_subtractr" );
108 upStopBlock_subtractposz = tofPara->Get( "upStopBlock_subtractposz" );
109
110 sideStopBlock_x = tofPara->Get( "sideStopBlock_x" );
111 sideStopBlock_y = tofPara->Get( "sideStopBlock_y" );
112 sideStopBlock_z = tofPara->Get( "sideStopBlock_z" );
113 sideStopBlock_thickness = tofPara->Get( "sideStopBlock_thickness" );
114 sideStopBlock_posz0 = tofPara->Get( "sideStopBlock_posz0" );
115 sideStopBlock_posz1 = tofPara->Get( "sideStopBlock_posz1" );
116
117 honeyComb_xdown = tofPara->Get( "honeyComb_xdown" );
118 honeyComb_xup = tofPara->Get( "honeyComb_xup" );
119 honeyComb_y = tofPara->Get( "honeyComb_y" );
120 honeyComb_z = tofPara->Get( "honeyComb_z" );
121 honeyComb_surface_y = tofPara->Get( "honeyComb_surface_y" );
122 honeyComb_posz = tofPara->Get( "honeyComb_posz" );
123
124 tape_mrpc_xdown = tofPara->Get( "tape_mrpc_xdown" );
125 tape_mrpc_xup = tofPara->Get( "tape_mrpc_xup" );
126 tape_mrpc_y = tofPara->Get( "tape_mrpc_y" );
127 tape_mrpc_z = tofPara->Get( "tape_mrpc_z" );
128 tape_mrpc_posz = tofPara->Get( "tape_mrpc_posz" );
129
130 pcbBoard_xdown = tofPara->Get( "pcbBoard_xdown" );
131 pcbBoard_xup = tofPara->Get( "pcbBoard_xup" );
132 pcbBoard_y0 = tofPara->Get( "pcbBoard_y0" );
133 pcbBoard_y1 = tofPara->Get( "pcbBoard_y1" );
134 pcbBoard_z = tofPara->Get( "pcbBoard_z" );
135
136 strip_x[0] = tofPara->Get( "strip_x[0]" );
137 strip_x[1] = tofPara->Get( "strip_x[1]" );
138 strip_x[2] = tofPara->Get( "strip_x[2]" );
139 strip_x[3] = tofPara->Get( "strip_x[3]" );
140 strip_x[4] = tofPara->Get( "strip_x[4]" );
141 strip_x[5] = tofPara->Get( "strip_x[5]" );
142 strip_x[6] = tofPara->Get( "strip_x[6]" );
143 strip_x[7] = tofPara->Get( "strip_x[7]" );
144 strip_x[8] = tofPara->Get( "strip_x[8]" );
145 strip_x[9] = tofPara->Get( "strip_x[9]" );
146 strip_x[10] = tofPara->Get( "strip_x[10]" );
147 strip_x[11] = tofPara->Get( "strip_x[11]" );
148 strip_y = tofPara->Get( "strip_y" );
149 strip_z = tofPara->Get( "strip_z" );
150 strip_gap = tofPara->Get( "strip_gap" );
151 strip_posz = tofPara->Get( "strip_posz" );
152
153 mylar_xdown = tofPara->Get( "mylar_xdown" );
154 mylar_xup = tofPara->Get( "mylar_xup" );
155 mylar_y = tofPara->Get( "mylar_y" );
156 mylar_z = tofPara->Get( "mylar_z" );
157 mylar_posz = tofPara->Get( "mylar_posz" );
158
159 glass0_xdown = tofPara->Get( "glass0_xdown" );
160 glass0_xup = tofPara->Get( "glass0_xup" );
161 glass0_y = tofPara->Get( "glass0_y" );
162 glass0_z = tofPara->Get( "glass0_z" );
163 glass0_posz = tofPara->Get( "glass0_posz" );
164
165 glass1_xdown = tofPara->Get( "glass1_xdown" );
166 glass1_xup = tofPara->Get( "glass1_xup" );
167 glass1_y = tofPara->Get( "glass1_y" );
168 glass1_z = tofPara->Get( "glass1_z" );
169 glass1_posz = tofPara->Get( "glass1_posz" );
170
171 gasLayer_xdown = tofPara->Get( "gasLayer_xdown" );
172 gasLayer_xup = tofPara->Get( "gasLayer_xup" );
173 gasLayer_y = tofPara->Get( "gasLayer_y" );
174 gasLayer_z = tofPara->Get( "gasLayer_z" );
175 gasLayer_posz = tofPara->Get( "gasLayer_posz" );
176
177 endcap_r = tofPara->Get( "endcap_r" );
178 endcap_length = tofPara->Get( "endcap_length" );
179 layer_posz = tofPara->Get( "layer_posz" );
180 startAngle_east = tofPara->Get( "startAngle_east" );
181 startAngle_west = tofPara->Get( "startAngle_west" );
182}
static BesTofGeoParameter * GetInstance()

Referenced by BesTofConstruction::ConstructEcTof_mrpc(), and PartProduce().

◆ IniParam() [2/3]

void PartProduce::IniParam ( )

◆ IniParam() [3/3]

void PartProduce::IniParam ( )

◆ lg_bareChamber() [1/3]

G4LogicalVolume * PartProduce::lg_bareChamber ( string name = "")

Definition at line 657 of file PartProduce.cc.

657 {
658 // A trapezoid to contain the bare chamber
659 double xdown = pcbBoard_xdown;
660 double xup = pcbBoard_xup;
661 double y = honeyComb_y * 2 + tape_mrpc_y * 2 + pcbBoard_y0 * 2 + pcbBoard_y1 + mylar_y * 4 +
662 glass0_y * 4 + glass1_y * 10 + gasLayer_y * 12;
663 double z = pcbBoard_z;
664 Name.str( "" );
665 Name << "solid_bareChamber_" << name;
666 G4Trd* solid_bareChamber = new G4Trd( Name.str(), xdown / 2. + smallL, xup / 2. + smallL,
667 y / 2. + smallL, y / 2. + smallL, z / 2. + smallL );
668 G4LogicalVolume* logical_bareChamber =
669 new G4LogicalVolume( solid_bareChamber, G4Material::GetMaterial( "MRPCGas" ), name );
670
671 G4VisAttributes* vis = new G4VisAttributes();
672 // vis->SetColor(G4Color(0.3, 0.3, 0.3));
673 vis->SetVisibility( 0 );
674 // vis->SetForceWireframe(true);
675 logical_bareChamber->SetVisAttributes( vis );
676
677 return logical_bareChamber;
678}
DOUBLE_PRECISION xup[20]
G4double smallL
std::ostringstream Name

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_bareChamber() [2/3]

G4LogicalVolume * PartProduce::lg_bareChamber ( string name = "")

◆ lg_bareChamber() [3/3]

G4LogicalVolume * PartProduce::lg_bareChamber ( string name = "")

◆ lg_bracket() [1/3]

G4LogicalVolume * PartProduce::lg_bracket ( string name = "")

Definition at line 865 of file PartProduce.cc.

865 {
866 Name.str( "" );
867 Name << "solid_bracket_" << name << "_1";
868 G4Tubs* solid_bracket_1 =
869 new G4Tubs( Name.str(), 0, bracket_r, bracket_z / 2, 0 * degree, 360 * degree );
870
871 Name.str( "" );
872 Name << "solid_bracket_" << name << "_2";
873 G4Trd* solid_bracket_2 = new G4Trd( Name.str(), bracket_x / 2, bracket_x / 2, bracket_x / 2,
874 bracket_x / 2, bracket_y / 2 );
875
876 G4Transform3D transform_bracket( rot_dummy,
877 G4ThreeVector( 0, 0, ( bracket_y + bracket_z ) / 2 ) );
878 Name.str( "" );
879 Name << "solid_bracket_" << name;
880 G4UnionSolid* solid_bracket =
881 new G4UnionSolid( Name.str(), solid_bracket_1, solid_bracket_2, transform_bracket );
882 G4LogicalVolume* logical_bracket =
883 new G4LogicalVolume( solid_bracket, G4Material::GetMaterial( "Nylon" ), name );
884
885 G4VisAttributes* vis = new G4VisAttributes();
886 vis->SetColor( G4Color( 0.3, 0.3, 0.3 ) );
887 // vis->SetForceSolid(true);
888 logical_bracket->SetVisAttributes( vis );
889
890 return logical_bracket;
891}
G4RotationMatrix rot_dummy(0 *deg, 0 *deg, 0 *deg)

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_bracket() [2/3]

G4LogicalVolume * PartProduce::lg_bracket ( string name = "")

◆ lg_bracket() [3/3]

G4LogicalVolume * PartProduce::lg_bracket ( string name = "")

◆ lg_castingDie() [1/3]

G4LogicalVolume * PartProduce::lg_castingDie ( string name = "")

Definition at line 486 of file PartProduce.cc.

486 {
487 Name.str( "" );
488 Name << "solid_castingDie_outline_" << name;
489 G4VSolid* solid_castingDie_outline = sd_castingDie_outline( 0, Name.str() );
490
491 Name.str( "" );
492 Name << "solid_castingDie_subtract_" << name;
493 G4Trd* solid_castingDie_subtract =
494 new G4Trd( Name.str(), castingDie_subtractx / 2, castingDie_subtractx / 2, castingDie_y,
495 castingDie_y, castingDie_z / 2 );
496
497 G4Transform3D transform_castingDie( rot_dummy,
498 G4ThreeVector( 0, 0, -1 * castingDie_subtract_posz ) );
499 Name.str( "" );
500 Name << "solid_castingDie_" << name;
501 G4SubtractionSolid* solid_castingDie = new G4SubtractionSolid(
502 Name.str(), solid_castingDie_outline, solid_castingDie_subtract, transform_castingDie );
503 G4LogicalVolume* logical_castingDie =
504 new G4LogicalVolume( solid_castingDie, G4Material::GetMaterial( "Aluminium" ), name );
505
506 G4VisAttributes* vis = new G4VisAttributes();
507 vis->SetColor( G4Color( 0.2, 0., 1 ) );
508 // vis->SetForceSolid(true);
509 // vis->SetForceWireframe(true);
510 logical_castingDie->SetVisAttributes( vis );
511
512 return logical_castingDie;
513}
G4VSolid * sd_castingDie_outline(double smallL=0, string name="")

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_castingDie() [2/3]

G4LogicalVolume * PartProduce::lg_castingDie ( string name = "")

◆ lg_castingDie() [3/3]

G4LogicalVolume * PartProduce::lg_castingDie ( string name = "")

◆ lg_container() [1/3]

G4LogicalVolume * PartProduce::lg_container ( int flag,
string name = "" )

Definition at line 515 of file PartProduce.cc.

515 {
516 Name.str( "" );
517 Name << "solid_containerOut_" << name;
518 G4VSolid* solid_containerOut = sd_containerOut( smallL, Name.str() );
519
520 // add top cover
521 Name.str( "" );
522 Name << "solid_upCover_" << name;
523 G4VSolid* solid_upCover = sd_upCover( smallL, Name.str() );
524 G4ThreeVector translation_upCover( 0, ( containerOut_y + upCover_y ) / 2,
525 ( upCover_z - containerOut_z ) / 2 - upCover_posz );
526 G4Transform3D transform_upCover( rot_dummy, translation_upCover );
527 Name.str( "" );
528 Name << "solid_container_" << name << "_1";
529 G4UnionSolid* solid_container_1 =
530 new G4UnionSolid( Name.str(), solid_containerOut, solid_upCover, transform_upCover );
531
532 // add FEE on the top cover
533 Name.str( "" );
534 Name << "solid_upFEE_" << name;
535 G4VSolid* solid_upFEE = sd_upFEE( smallL, Name.str() );
536 G4ThreeVector translation_upFEE( 0, containerOut_y / 2 + upCover_y + upFEE_y / 2,
537 upCover_z - upFEE_posz - upFEE_z / 2 - upCover_posz -
538 containerOut_z / 2 );
539 G4Transform3D transform_upFEE( rot_dummy, translation_upFEE );
540 Name.str( "" );
541 Name << "solid_container_" << name << "_2";
542 G4UnionSolid* solid_container_2 =
543 new G4UnionSolid( Name.str(), solid_container_1, solid_upFEE, transform_upFEE );
544
545 // add FEE at the side
546 Name.str( "" );
547 Name << "solid_sideFEE_" << name;
548 G4VSolid* solid_sideFEE = sd_sideFEE( smallL, Name.str() );
549
550 double angle_containerFrameSide =
551 atan( ( containerOut_xup - containerOut_xdown ) / 2 / containerOut_z ) * rad;
552 double l_containerFrameSide = containerOut_z / cos( angle_containerFrameSide );
553 double x_sideFEE =
554 ( l_containerFrameSide / 2 - sideFEE_posl ) * sin( angle_containerFrameSide ) +
555 ( containerOut_xup + containerOut_xdown ) / 4 +
556 sideFEE_x / 2 * cos( angle_containerFrameSide );
557 double z_sideFEE =
558 ( l_containerFrameSide / 2 - sideFEE_posl ) * cos( angle_containerFrameSide ) -
559 sideFEE_x / 2 * sin( angle_containerFrameSide );
560 G4ThreeVector translation_sideFEE_left( -x_sideFEE, 0, z_sideFEE );
561 G4RotationMatrix rot_sideFEE_left;
562 rot_sideFEE_left.rotateY( -angle_containerFrameSide );
563 G4Transform3D transform_sideFEE_left( rot_sideFEE_left, translation_sideFEE_left );
564 Name.str( "" );
565 Name << "solid_container_" << name << "_3";
566 G4UnionSolid* solid_container_3 =
567 new G4UnionSolid( Name.str(), solid_container_2, solid_sideFEE, transform_sideFEE_left );
568
569 G4ThreeVector translation_sideFEE_right( x_sideFEE, 0, z_sideFEE );
570 G4RotationMatrix rot_sideFEE_right;
571 rot_sideFEE_right.rotateY( angle_containerFrameSide );
572 G4Transform3D transform_sideFEE_right( rot_sideFEE_right, translation_sideFEE_right );
573 Name.str( "" );
574 Name << "solid_container_" << name << "_4";
575 G4UnionSolid* solid_container_4 = new G4UnionSolid( Name.str(), solid_container_3,
576 solid_sideFEE, transform_sideFEE_right );
577
578 // add casting die
579 Name.str( "" );
580 Name << "solid_castingDie_" << name;
581 G4VSolid* solid_castingDie = sd_castingDie_outline( smallL, Name.str() );
582
583 G4RotationMatrix rot_castingDie;
584 rot_castingDie.rotateX( 90 * deg );
585 G4ThreeVector translation_castingDie_1( 0, containerOut_y / 2 + upCover_y + castingDie_z / 2,
586 -containerOut_z / 2 + upCover_posz +
587 castingDie_posz1 );
588 G4Transform3D transform_castingDie_1( rot_castingDie, translation_castingDie_1 );
589 Name.str( "" );
590 Name << "solid_container_" << name << "_5";
591 G4UnionSolid* solid_container_5 = new G4UnionSolid(
592 Name.str(), solid_container_4, solid_castingDie, transform_castingDie_1 );
593
594 G4ThreeVector translation_castingDie_2( 0, containerOut_y / 2 + upCover_y + castingDie_z / 2,
595 -containerOut_z / 2 + upCover_posz +
596 castingDie_posz2 );
597 G4Transform3D transform_castingDie_2( rot_castingDie, translation_castingDie_2 );
598 Name.str( "" );
599 Name << "solid_container_" << name << "_6";
600 G4UnionSolid* solid_container_6 = new G4UnionSolid(
601 Name.str(), solid_container_5, solid_castingDie, transform_castingDie_2 );
602
603 // add bottom cover
604 G4VSolid* solid_lowCover;
605 Name.str( "" );
606 Name << "solid_lowCover_" << name;
607 double z_lowCover;
608 if ( flag == 0 )
609 {
610 z_lowCover = ( lowCover1_z - containerOut_z ) / 2 - lowCover1_posz;
611 solid_lowCover = sd_lowCover1( smallL, Name.str() );
612 }
613 else if ( flag == 1 )
614 {
615 z_lowCover = ( lowCover2_z - containerOut_z ) / 2 - lowCover2_posz;
616 solid_lowCover = sd_lowCover2( smallL, Name.str() );
617 }
618 else
619 {
620 G4cout << "!!!!!!!! Wrong lower Board !!!!!!!!!" << G4endl;
621 abort();
622 }
623
624 G4ThreeVector translation_lowCover( 0, -1 * ( containerOut_y + upCover_y ) / 2, z_lowCover );
625 G4Transform3D transform_lowCover( rot_dummy, translation_lowCover );
626 Name.str( "" );
627 Name << "solid_container_" << name;
628 G4UnionSolid* solid_container =
629 new G4UnionSolid( Name.str(), solid_container_6, solid_lowCover, transform_lowCover );
630 G4LogicalVolume* logical_container =
631 new G4LogicalVolume( solid_container, G4Material::GetMaterial( "Air" ), name );
632
633 G4VisAttributes* vis = new G4VisAttributes();
634 vis->SetColor( G4Color( 0.5, 0.5, 0.6 ) );
635 vis->SetForceWireframe( true );
636 logical_container->SetVisAttributes( vis );
637 // logical_container->SetVisAttributes(G4VisAttributes::Invisible);
638
639 return logical_container;
640}
G4VSolid * sd_sideFEE(double smallL=0, string name="")
G4VSolid * sd_upFEE(double smallL=0, string name="")
G4VSolid * sd_lowCover2(double smallL=0, string name="")
G4VSolid * sd_upCover(double smallL=0, string name="")
G4VSolid * sd_lowCover1(double smallL=0, string name="")
G4VSolid * sd_containerOut(double smallL=0, string name="")

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_container() [2/3]

G4LogicalVolume * PartProduce::lg_container ( int flag,
string name = "" )

◆ lg_container() [3/3]

G4LogicalVolume * PartProduce::lg_container ( int flag,
string name = "" )

◆ lg_containerFrame() [1/3]

G4LogicalVolume * PartProduce::lg_containerFrame ( string name = "")

Definition at line 198 of file PartProduce.cc.

198 {
199 Name.str( "" );
200 Name << "solid_containerOut_" << name;
201 G4VSolid* solid_containerOut = sd_containerOut( 0, Name.str() );
202 Name.str( "" );
203 Name << "solid_containerIn_" << name;
204 G4VSolid* solid_containerIn = sd_containerIn( smallL, Name.str() );
205
206 double lz = ( container_lowBorder - container_thickness ) / 2;
207 G4ThreeVector translation_containerFrame( 0, 0, lz );
208 G4Transform3D transform_containerFrame( rot_dummy, translation_containerFrame );
209 Name.str( "" );
210 Name << "solid_containerFrame_" << name;
211 G4SubtractionSolid* solid_containerFrame = new G4SubtractionSolid(
212 Name.str(), solid_containerOut, solid_containerIn, transform_containerFrame );
213 G4LogicalVolume* logical_containerFrame = new G4LogicalVolume(
214 solid_containerFrame, G4Material::GetMaterial( "Aluminium" ), name );
215
216 G4VisAttributes* vis = new G4VisAttributes();
217 vis->SetColor( G4Color( 0.5, 0.5, 0.6 ) );
218 logical_containerFrame->SetVisAttributes( vis );
219
220 return logical_containerFrame;
221}
G4VSolid * sd_containerIn(double smallL=0, string name="")

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_containerFrame() [2/3]

G4LogicalVolume * PartProduce::lg_containerFrame ( string name = "")

◆ lg_containerFrame() [3/3]

G4LogicalVolume * PartProduce::lg_containerFrame ( string name = "")

◆ lg_gasContainer() [1/3]

G4LogicalVolume * PartProduce::lg_gasContainer ( string name = "")

Definition at line 642 of file PartProduce.cc.

642 {
643 Name.str( "" );
644 Name << "solid_gasContainer_" << name;
645 G4VSolid* solid_gasContainer = sd_containerIn( 0, Name.str() );
646 G4LogicalVolume* logical_gasContainer =
647 new G4LogicalVolume( solid_gasContainer, G4Material::GetMaterial( "MRPCGas" ), name );
648
649 G4VisAttributes* vis = new G4VisAttributes();
650 // vis->SetVisibility(0);
651 vis->SetForceWireframe( true );
652 logical_gasContainer->SetVisAttributes( vis );
653
654 return logical_gasContainer;
655}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_gasContainer() [2/3]

G4LogicalVolume * PartProduce::lg_gasContainer ( string name = "")

◆ lg_gasContainer() [3/3]

G4LogicalVolume * PartProduce::lg_gasContainer ( string name = "")

◆ lg_gasLayer() [1/3]

G4LogicalVolume * PartProduce::lg_gasLayer ( string name = "")

Definition at line 849 of file PartProduce.cc.

849 {
850 Name.str( "" );
851 Name << "solid_gasLayer_" << name;
852 G4Trd* solid_gasLayer = new G4Trd( Name.str(), gasLayer_xdown / 2., gasLayer_xup / 2.,
853 gasLayer_y / 2., gasLayer_y / 2., gasLayer_z / 2. );
854 G4LogicalVolume* logical_gasLayer =
855 new G4LogicalVolume( solid_gasLayer, G4Material::GetMaterial( "MRPCGas" ), name );
856
857 G4VisAttributes* vis = new G4VisAttributes();
858 vis->SetColor( G4Color::Blue() );
859 // vis->SetForceSolid(true);
860 // logical_gasLayer->SetVisAttributes(vis);
861
862 return logical_gasLayer;
863}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_gasLayer() [2/3]

G4LogicalVolume * PartProduce::lg_gasLayer ( string name = "")

◆ lg_gasLayer() [3/3]

G4LogicalVolume * PartProduce::lg_gasLayer ( string name = "")

◆ lg_glass() [1/3]

G4LogicalVolume * PartProduce::lg_glass ( G4int flag,
string name = "" )

Definition at line 813 of file PartProduce.cc.

814{
815 double glass_xdown;
816 double glass_xup;
817 double glass_y;
818 double glass_z;
819 if ( flag == 0 )
820 {
821 glass_xdown = glass0_xdown;
822 glass_xup = glass0_xup;
823 glass_y = glass0_y;
824 glass_z = glass0_z;
825 }
826 else
827 {
828 glass_xdown = glass1_xdown;
829 glass_xup = glass1_xup;
830 glass_y = glass1_y;
831 glass_z = glass1_z;
832 }
833
834 Name.str( "" );
835 Name << "solid_glass_" << name;
836 G4Trd* solid_glass = new G4Trd( Name.str(), glass_xdown / 2., glass_xup / 2., glass_y / 2.,
837 glass_y / 2., glass_z / 2. );
838 G4LogicalVolume* logical_glass =
839 new G4LogicalVolume( solid_glass, G4Material::GetMaterial( "SiO2" ), name );
840
841 G4VisAttributes* vis = new G4VisAttributes();
842 vis->SetColor( G4Color( 0.2, 0.4, 1 ) );
843 // vis->SetForceSolid(true);
844 logical_glass->SetVisAttributes( vis );
845
846 return logical_glass;
847}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_glass() [2/3]

G4LogicalVolume * PartProduce::lg_glass ( G4int flag,
string name = "" )

◆ lg_glass() [3/3]

G4LogicalVolume * PartProduce::lg_glass ( G4int flag,
string name = "" )

◆ lg_honeyComb() [1/3]

G4LogicalVolume * PartProduce::lg_honeyComb ( string name = "")

Definition at line 680 of file PartProduce.cc.

680 {
681 Name.str( "" );
682 Name << "solid_honeyComb_" << name;
683 G4Trd* solid_honeyComb = new G4Trd( Name.str(), honeyComb_xdown / 2, honeyComb_xup / 2,
684 honeyComb_y / 2, honeyComb_y / 2, honeyComb_z / 2 );
685 G4LogicalVolume* logical_honeyComb =
686 new G4LogicalVolume( solid_honeyComb, G4Material::GetMaterial( "honeycombCore" ), name );
687
688 // Two surfaces
689 Name.str( "" );
690 Name << "solid_honeyComb_surface_" << name;
691 G4Trd* solid_honeyComb_surface =
692 new G4Trd( Name.str(), honeyComb_xdown / 2, honeyComb_xup / 2, honeyComb_surface_y / 2,
693 honeyComb_surface_y / 2, honeyComb_z / 2 );
694
695 Name.str( "" );
696 Name << "logical_honeyComb_surface_" << name;
697 G4LogicalVolume* logical_honeyComb_surface = new G4LogicalVolume(
698 solid_honeyComb_surface, G4Material::GetMaterial( "insulationBoard" ), Name.str() );
699
700 Name.str( "" );
701 Name << "physical_honeyComb_surface_" << name << "_0";
702 new G4PVPlacement(
703 0, G4ThreeVector( 0, ( honeyComb_y - honeyComb_surface_y ) / 2. - smallL, 0 ),
704 logical_honeyComb_surface, Name.str(), logical_honeyComb, false, 0, checkOverlap );
705
706 Name.str( "" );
707 Name << "physical_honeyComb_surface_" << name << "_1";
708 new G4PVPlacement(
709 0, G4ThreeVector( 0, -( honeyComb_y - honeyComb_surface_y ) / 2. + smallL, 0 ),
710 logical_honeyComb_surface, Name.str(), logical_honeyComb, false, 0, checkOverlap );
711
712 G4VisAttributes* vis1 = new G4VisAttributes();
713 vis1->SetColor( G4Color::Green() );
714 // vis1->SetForceWireframe(true);
715 logical_honeyComb_surface->SetVisAttributes( vis1 );
716
717 G4VisAttributes* vis = new G4VisAttributes();
718 vis->SetColor( G4Color( 0.55, 0.3, 0.3 ) );
719 // vis->SetForceWireframe(true);
720 logical_honeyComb->SetVisAttributes( vis );
721
722 return logical_honeyComb;
723}
bool checkOverlap

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_honeyComb() [2/3]

G4LogicalVolume * PartProduce::lg_honeyComb ( string name = "")

◆ lg_honeyComb() [3/3]

G4LogicalVolume * PartProduce::lg_honeyComb ( string name = "")

◆ lg_lowCover1() [1/3]

G4LogicalVolume * PartProduce::lg_lowCover1 ( string name = "")

Definition at line 272 of file PartProduce.cc.

272 {
273 Name.str( "" );
274 Name << "solid_lowCover1_" << name;
275 G4VSolid* solid_lowCover1 = sd_lowCover1( 0, Name.str() );
276 G4LogicalVolume* logical_lowCover1 =
277 new G4LogicalVolume( solid_lowCover1, G4Material::GetMaterial( "Aluminium" ), name );
278
279 G4VisAttributes* vis = new G4VisAttributes();
280 vis->SetColor( G4Color( 0.5, 0.5, 0.6 ) );
281 // vis->SetForceWireframe(true);
282 logical_lowCover1->SetVisAttributes( vis );
283
284 return logical_lowCover1;
285}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_lowCover1() [2/3]

G4LogicalVolume * PartProduce::lg_lowCover1 ( string name = "")

◆ lg_lowCover1() [3/3]

G4LogicalVolume * PartProduce::lg_lowCover1 ( string name = "")

◆ lg_lowCover2() [1/3]

G4LogicalVolume * PartProduce::lg_lowCover2 ( string name = "")

Definition at line 287 of file PartProduce.cc.

287 {
288 Name.str( "" );
289 Name << "solid_lowCover2_" << name;
290 G4VSolid* solid_lowCover2 = sd_lowCover2( 0, Name.str() );
291 G4LogicalVolume* logical_lowCover2 =
292 new G4LogicalVolume( solid_lowCover2, G4Material::GetMaterial( "Aluminium" ), name );
293
294 G4VisAttributes* vis = new G4VisAttributes();
295 vis->SetColor( G4Color( 0.5, 0.5, 0.6 ) );
296 // vis->SetForceWireframe(true);
297 logical_lowCover2->SetVisAttributes( vis );
298
299 return logical_lowCover2;
300}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_lowCover2() [2/3]

G4LogicalVolume * PartProduce::lg_lowCover2 ( string name = "")

◆ lg_lowCover2() [3/3]

G4LogicalVolume * PartProduce::lg_lowCover2 ( string name = "")

◆ lg_mylar() [1/3]

G4LogicalVolume * PartProduce::lg_mylar ( string name = "")

Definition at line 797 of file PartProduce.cc.

797 {
798 Name.str( "" );
799 Name << "solid_mylar_" << name;
800 G4Trd* solid_mylar = new G4Trd( Name.str(), mylar_xdown / 2., mylar_xup / 2., mylar_y / 2.,
801 mylar_y / 2., mylar_z / 2. );
802 G4LogicalVolume* logical_mylar =
803 new G4LogicalVolume( solid_mylar, G4Material::GetMaterial( "PET" ), name );
804
805 G4VisAttributes* vis = new G4VisAttributes();
806 vis->SetColor( G4Color( 1, 0., 0.7 ) );
807 // vis->SetForceSolid(true);
808 logical_mylar->SetVisAttributes( vis );
809
810 return logical_mylar;
811}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_mylar() [2/3]

G4LogicalVolume * PartProduce::lg_mylar ( string name = "")

◆ lg_mylar() [3/3]

G4LogicalVolume * PartProduce::lg_mylar ( string name = "")

◆ lg_pcbBoard() [1/3]

G4LogicalVolume * PartProduce::lg_pcbBoard ( G4int flag,
string name = "" )

Definition at line 742 of file PartProduce.cc.

743{
744 double pcbBoard_y;
745 if ( flag == 0 ) pcbBoard_y = pcbBoard_y0;
746 else pcbBoard_y = pcbBoard_y1;
747
748 Name.str( "" );
749 Name << "solid_pcbBoard_" << name;
750 G4Trd* solid_pcbBoard = new G4Trd( Name.str(), pcbBoard_xdown / 2., pcbBoard_xup / 2.,
751 pcbBoard_y / 2., pcbBoard_y / 2., pcbBoard_z / 2. );
752 G4LogicalVolume* logical_pcbBoard = new G4LogicalVolume(
753 solid_pcbBoard, G4Material::GetMaterial( "insulationBoard" ), name );
754
755 G4VisAttributes* vis = new G4VisAttributes();
756 vis->SetColor( G4Color( 0.2, 1, 0 ) );
757 // vis->SetForceSolid(true);
758 // vis->SetForceWireframe(true);
759 logical_pcbBoard->SetVisAttributes( vis );
760
761 return logical_pcbBoard;
762}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_pcbBoard() [2/3]

G4LogicalVolume * PartProduce::lg_pcbBoard ( G4int flag,
string name = "" )

◆ lg_pcbBoard() [3/3]

G4LogicalVolume * PartProduce::lg_pcbBoard ( G4int flag,
string name = "" )

◆ lg_sideFEE() [1/3]

G4LogicalVolume * PartProduce::lg_sideFEE ( string name = "")

Definition at line 402 of file PartProduce.cc.

402 {
403 Name.str( "" );
404 Name << "solid_sideFEE_" << name;
405 G4VSolid* solid_sideFEE = sd_sideFEE( 0, Name.str() );
406 G4LogicalVolume* logical_sideFEE =
407 new G4LogicalVolume( solid_sideFEE, G4Material::GetMaterial( "Air" ), name );
408
409 Name.str( "" );
410 Name << "solid_sideFEE_out_" << name;
411 G4VSolid* solid_sideFEE_out = sd_sideFEE( -1 * smallL, Name.str() );
412
413 Name.str( "" );
414 Name << "solid_sideFEE_in_" << name;
415 G4Trd* solid_sideFEE_in =
416 new G4Trd( Name.str(), sideFEE_x / 2, sideFEE_x / 2, sideFEE_y / 2 - FEE_thickness,
417 sideFEE_y / 2 - FEE_thickness, sideFEE_z / 2 - FEE_thickness );
418
419 Name.str( "" );
420 Name << "solid_sideFEE_box_" << name;
421 G4Transform3D transform_sideFEE( rot_dummy, G4ThreeVector( FEE_thickness, 0, 0 ) );
422 G4SubtractionSolid* solid_sideFEE_box = new G4SubtractionSolid(
423 Name.str(), solid_sideFEE_out, solid_sideFEE_in, transform_sideFEE );
424
425 Name.str( "" );
426 Name << "logical_sideFEE_box_" << name;
427 G4LogicalVolume* logical_sideFEE_box = new G4LogicalVolume(
428 solid_sideFEE_box, G4Material::GetMaterial( "Aluminium" ), Name.str() );
429
430 Name.str( "" );
431 Name << "logical_sideFEE_pcb_" << name;
432 G4LogicalVolume* logical_sideFEE_pcb = lg_sideFEE_pcb( Name.str() );
433
434 Name.str( "" );
435 Name << "physical_sideFEE_pcb_" << name;
436 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logical_sideFEE_pcb, Name.str(),
437 logical_sideFEE, false, 0, checkOverlap );
438
439 Name.str( "" );
440 Name << "physical_sideFEE_box_" << name;
441 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logical_sideFEE_box, Name.str(),
442 logical_sideFEE, false, 0, checkOverlap );
443
444 G4VisAttributes* vis = new G4VisAttributes();
445 vis->SetColor( G4Color( 0.2, 0., 1 ) );
446 // vis->SetForceWireframe(true);
447 logical_sideFEE_box->SetVisAttributes( vis );
448
449 G4VisAttributes* vis1 = new G4VisAttributes();
450 vis1->SetVisibility( 0 );
451 logical_sideFEE->SetVisAttributes( vis1 );
452
453 return logical_sideFEE;
454}
G4LogicalVolume * lg_sideFEE_pcb(string name="")

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_sideFEE() [2/3]

G4LogicalVolume * PartProduce::lg_sideFEE ( string name = "")

◆ lg_sideFEE() [3/3]

G4LogicalVolume * PartProduce::lg_sideFEE ( string name = "")

◆ lg_sideFEE_pcb() [1/3]

G4LogicalVolume * PartProduce::lg_sideFEE_pcb ( string name = "")

Definition at line 386 of file PartProduce.cc.

386 {
387 Name.str( "" );
388 Name << "solid_sideFEE_pcb_" << name;
389 G4Trd* solid_sideFEE_pcb =
390 new G4Trd( Name.str(), sideFEE_pcb_x / 2, sideFEE_pcb_x / 2, sideFEE_pcb_y / 2,
391 sideFEE_pcb_y / 2, sideFEE_pcb_z / 2 );
392 G4LogicalVolume* logical_sideFEE_pcb = new G4LogicalVolume(
393 solid_sideFEE_pcb, G4Material::GetMaterial( "insulationBoard" ), name );
394
395 G4VisAttributes* vis = new G4VisAttributes();
396 vis->SetColor( G4Color( 0.2, 1, 0 ) );
397 logical_sideFEE_pcb->SetVisAttributes( vis );
398
399 return logical_sideFEE_pcb;
400}

Referenced by lg_sideFEE().

◆ lg_sideFEE_pcb() [2/3]

G4LogicalVolume * PartProduce::lg_sideFEE_pcb ( string name = "")

◆ lg_sideFEE_pcb() [3/3]

G4LogicalVolume * PartProduce::lg_sideFEE_pcb ( string name = "")

◆ lg_sideStopBlock() [1/3]

G4LogicalVolume * PartProduce::lg_sideStopBlock ( string name = "")

Definition at line 929 of file PartProduce.cc.

929 {
930 Name.str( "" );
931 Name << "solid_sideStopBlock_" << name << "_1";
932 G4Trd* solid_sideStopBlock_1 =
933 new G4Trd( Name.str(), sideStopBlock_x / 2, sideStopBlock_x / 2, sideStopBlock_y / 2,
934 sideStopBlock_y / 2, sideStopBlock_z / 2 );
935
936 Name.str( "" );
937 Name << "solid_sideStopBlock_" << name << "_2";
938 G4Trd* solid_sideStopBlock_2 = new G4Trd(
939 Name.str(), ( sideStopBlock_x - sideStopBlock_thickness ) / 2 + smallL,
940 ( sideStopBlock_x - sideStopBlock_thickness ) / 2 + smallL, sideStopBlock_y / 2 + smallL,
941 sideStopBlock_y / 2 + smallL, sideStopBlock_z / 2 - sideStopBlock_thickness );
942
943 G4Transform3D transform_upStopBlock( rot_dummy,
944 G4ThreeVector( sideStopBlock_thickness / 2, 0, 0 ) );
945
946 Name.str( "" );
947 Name << "solid_sideStopBlock_" << name;
948 G4SubtractionSolid* solid_sideStopBlock = new G4SubtractionSolid(
949 Name.str(), solid_sideStopBlock_1, solid_sideStopBlock_2, transform_upStopBlock );
950 G4LogicalVolume* logical_sideStopBlock =
951 new G4LogicalVolume( solid_sideStopBlock, G4Material::GetMaterial( "Nylon" ), name );
952
953 G4VisAttributes* vis = new G4VisAttributes();
954 vis->SetColor( G4Color( 0.3, 0.3, 0.3 ) );
955 // vis->SetForceSolid(true);
956 logical_sideStopBlock->SetVisAttributes( vis );
957
958 return logical_sideStopBlock;
959}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_sideStopBlock() [2/3]

G4LogicalVolume * PartProduce::lg_sideStopBlock ( string name = "")

◆ lg_sideStopBlock() [3/3]

G4LogicalVolume * PartProduce::lg_sideStopBlock ( string name = "")

◆ lg_strip() [1/3]

G4AssemblyVolume * PartProduce::lg_strip ( string name = "")

Definition at line 764 of file PartProduce.cc.

764 {
765 const G4int no = 12;
766 G4Trd* solid_strip[no];
767 G4LogicalVolume* logical_strip[no];
768 G4VisAttributes* vis = new G4VisAttributes();
769 vis->SetColor( G4Color( 1, 0, 0 ) );
770 vis->SetForceSolid( 1 );
771 for ( G4int i = 0; i < no; i++ )
772 {
773 Name.str( "" );
774 Name << "solid_strip_" << name << "_" << i;
775 solid_strip[i] = new G4Trd( Name.str(), strip_x[i] / 2., strip_x[i] / 2., strip_y / 2.,
776 strip_y / 2., strip_z / 2. );
777 Name.str( "" );
778 Name << name << "_" << i;
779 logical_strip[i] =
780 new G4LogicalVolume( solid_strip[i], G4Material::GetMaterial( "Copper" ), Name.str() );
781 logical_strip[i]->SetVisAttributes( vis );
782 }
783
784 G4AssemblyVolume* logical_strip_unified = new G4AssemblyVolume();
785 G4ThreeVector translation_strip;
786 G4Transform3D transform_strip;
787 for ( G4int i = 0; i < no; i++ )
788 {
789 translation_strip.set( 0, 0, ( i - 5.5 ) * ( strip_z + strip_gap ) );
790 transform_strip = G4Transform3D( rot_dummy, translation_strip );
791 logical_strip_unified->AddPlacedVolume( logical_strip[i], transform_strip );
792 }
793
794 return logical_strip_unified;
795}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_strip() [2/3]

G4AssemblyVolume * PartProduce::lg_strip ( string name = "")

◆ lg_strip() [3/3]

G4AssemblyVolume * PartProduce::lg_strip ( string name = "")

◆ lg_tape_mrpc() [1/3]

G4LogicalVolume * PartProduce::lg_tape_mrpc ( string name = "")

Definition at line 725 of file PartProduce.cc.

725 {
726 Name.str( "" );
727 Name << "solid_tape_mrpc_" << name;
728 G4Trd* solid_tape_mrpc = new G4Trd( Name.str(), tape_mrpc_xdown / 2, tape_mrpc_xup / 2,
729 tape_mrpc_y / 2, tape_mrpc_y / 2, tape_mrpc_z / 2 );
730 G4LogicalVolume* logical_tape_mrpc =
731 new G4LogicalVolume( solid_tape_mrpc, G4Material::GetMaterial( "PET" ), name );
732
733 G4VisAttributes* vis = new G4VisAttributes();
734 vis->SetColor( G4Color( 1, 1, 0 ) );
735 // vis->SetForceWireframe(true);
736 // vis->SetForceSolid(true);
737 logical_tape_mrpc->SetVisAttributes( vis );
738
739 return logical_tape_mrpc;
740}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_tape_mrpc() [2/3]

G4LogicalVolume * PartProduce::lg_tape_mrpc ( string name = "")

◆ lg_tape_mrpc() [3/3]

G4LogicalVolume * PartProduce::lg_tape_mrpc ( string name = "")

◆ lg_upCover() [1/3]

G4LogicalVolume * PartProduce::lg_upCover ( string name = "")

Definition at line 257 of file PartProduce.cc.

257 {
258 Name.str( "" );
259 Name << "solid_upCover_" << name;
260 G4VSolid* solid_upCover = sd_upCover( 0, Name.str() );
261 G4LogicalVolume* logical_upCover =
262 new G4LogicalVolume( solid_upCover, G4Material::GetMaterial( "Aluminium" ), name );
263
264 G4VisAttributes* vis = new G4VisAttributes();
265 vis->SetColor( G4Color( 0.5, 0.5, 0.6 ) );
266 // vis->SetForceWireframe(true);
267 logical_upCover->SetVisAttributes( vis );
268
269 return logical_upCover;
270}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_upCover() [2/3]

G4LogicalVolume * PartProduce::lg_upCover ( string name = "")

◆ lg_upCover() [3/3]

G4LogicalVolume * PartProduce::lg_upCover ( string name = "")

◆ lg_upFEE() [1/3]

G4LogicalVolume * PartProduce::lg_upFEE ( string name = "")

Definition at line 325 of file PartProduce.cc.

325 {
326 Name.str( "" );
327 Name << "solid_upFEE_" << name;
328 G4VSolid* solid_upFEE = sd_upFEE( 0, Name.str() );
329 G4LogicalVolume* logical_upFEE =
330 new G4LogicalVolume( solid_upFEE, G4Material::GetMaterial( "Air" ), name );
331
332 Name.str( "" );
333 Name << "solid_upFEE_out_" << name;
334 G4VSolid* solid_upFEE_out = sd_upFEE( -1 * smallL, Name.str() );
335
336 Name.str( "" );
337 Name << "solid_upFEE_in_" << name;
338 G4Trd* solid_upFEE_in =
339 new G4Trd( Name.str(), upFEE_xdown / 2 - FEE_thickness, upFEE_xup / 2 - FEE_thickness,
340 upFEE_y / 2, upFEE_y / 2, upFEE_z / 2 - FEE_thickness );
341
342 Name.str( "" );
343 Name << "solid_upFEE_box_" << name;
344 G4Transform3D transform_upFEE( rot_dummy, G4ThreeVector( 0, -1 * FEE_thickness, 0 ) );
345 G4SubtractionSolid* solid_upFEE_box =
346 new G4SubtractionSolid( Name.str(), solid_upFEE_out, solid_upFEE_in, transform_upFEE );
347
348 Name.str( "" );
349 Name << "logical_upFEE_box_" << name;
350 G4LogicalVolume* logical_upFEE_box = new G4LogicalVolume(
351 solid_upFEE_box, G4Material::GetMaterial( "Aluminium" ), Name.str() );
352
353 Name.str( "" );
354 Name << "logical_upFEE_pcb_" << name;
355 G4LogicalVolume* logical_upFEE_pcb = lg_upFEE_pcb( Name.str() );
356
357 Name.str( "" );
358 Name << "physical_upFEE_pcb_" << name;
359 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logical_upFEE_pcb, Name.str(), logical_upFEE,
360 false, 0, checkOverlap );
361
362 Name.str( "" );
363 Name << "physical_upFEE_box_" << name;
364 new G4PVPlacement( 0, G4ThreeVector( 0, 0, 0 ), logical_upFEE_box, Name.str(), logical_upFEE,
365 false, 0, checkOverlap );
366
367 G4VisAttributes* vis = new G4VisAttributes();
368 vis->SetColor( G4Color( 0.2, 0., 1 ) );
369 // vis->SetForceWireframe(true);
370 logical_upFEE_box->SetVisAttributes( vis );
371
372 G4VisAttributes* vis1 = new G4VisAttributes();
373 vis1->SetVisibility( 0 );
374 logical_upFEE->SetVisAttributes( vis1 );
375
376 return logical_upFEE;
377}
G4LogicalVolume * lg_upFEE_pcb(string name="")

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_upFEE() [2/3]

G4LogicalVolume * PartProduce::lg_upFEE ( string name = "")

◆ lg_upFEE() [3/3]

G4LogicalVolume * PartProduce::lg_upFEE ( string name = "")

◆ lg_upFEE_pcb() [1/3]

G4LogicalVolume * PartProduce::lg_upFEE_pcb ( string name = "")

Definition at line 309 of file PartProduce.cc.

309 {
310 Name.str( "" );
311 Name << "solid_upFEE_pcb_" << name;
312 G4Trd* solid_upFEE_pcb = new G4Trd( Name.str(), upFEE_pcb_xdown / 2, upFEE_pcb_xup / 2,
313 upFEE_pcb_y / 2, upFEE_pcb_y / 2, upFEE_pcb_z / 2 );
314 G4LogicalVolume* logical_upFEE_pcb = new G4LogicalVolume(
315 solid_upFEE_pcb, G4Material::GetMaterial( "insulationBoard" ), name );
316
317 G4VisAttributes* vis = new G4VisAttributes();
318 vis->SetForceWireframe( true );
319 vis->SetColor( G4Color( 0.2, 1, 0 ) );
320 logical_upFEE_pcb->SetVisAttributes( vis );
321
322 return logical_upFEE_pcb;
323}

Referenced by lg_upFEE().

◆ lg_upFEE_pcb() [2/3]

G4LogicalVolume * PartProduce::lg_upFEE_pcb ( string name = "")

◆ lg_upFEE_pcb() [3/3]

G4LogicalVolume * PartProduce::lg_upFEE_pcb ( string name = "")

◆ lg_upStopBlock() [1/3]

G4LogicalVolume * PartProduce::lg_upStopBlock ( string name = "")

Definition at line 893 of file PartProduce.cc.

893 {
894 Name.str( "" );
895 Name << "solid_upStopBlock_" << name << "_1";
896 G4Trd* solid_upStopBlock_1 =
897 new G4Trd( Name.str(), upStopBlock_x / 2, upStopBlock_x / 2, upStopBlock_y / 2,
898 upStopBlock_y / 2, upStopBlock_z / 2 );
899
900 Name.str( "" );
901 Name << "solid_upStopBlock_" << name << "_2";
902 G4Tubs* solid_upStopBlock_2 =
903 new G4Tubs( Name.str(), 0, upStopBlock_subtractr + smallL, upStopBlock_x / 2 + smallL,
904 0 * degree, 360 * degree );
905
906 G4RotationMatrix rot_upStopBlock;
907 // Rotation outside of the transform3D. In transform3D the 3 angles are Euler
908 rot_upStopBlock.rotateY( 90 * degree );
909 G4Transform3D transform_upStopBlock(
910 rot_upStopBlock,
911 G4ThreeVector(
912 0, 0, ( upStopBlock_z - upStopBlock_subtractr ) / 2 - upStopBlock_subtractposz ) );
913
914 Name.str( "" );
915 Name << "solid_upStopBlock_" << name;
916 G4SubtractionSolid* solid_upStopBlock = new G4SubtractionSolid(
917 Name.str(), solid_upStopBlock_1, solid_upStopBlock_2, transform_upStopBlock );
918 G4LogicalVolume* logical_upStopBlock =
919 new G4LogicalVolume( solid_upStopBlock, G4Material::GetMaterial( "Nylon" ), name );
920
921 G4VisAttributes* vis = new G4VisAttributes();
922 vis->SetColor( G4Color( 0.3, 0.3, 0.3 ) );
923 // vis->SetForceSolid(true);
924 logical_upStopBlock->SetVisAttributes( vis );
925
926 return logical_upStopBlock;
927}

Referenced by BesTofConstruction::ConstructEcTof_mrpc().

◆ lg_upStopBlock() [2/3]

G4LogicalVolume * PartProduce::lg_upStopBlock ( string name = "")

◆ lg_upStopBlock() [3/3]

G4LogicalVolume * PartProduce::lg_upStopBlock ( string name = "")

◆ sd_castingDie_outline() [1/3]

G4VSolid * PartProduce::sd_castingDie_outline ( double smallL = 0,
string name = "" )

Definition at line 456 of file PartProduce.cc.

456 {
457 Name.str( "" );
458 Name << name << "_1";
459 // We make Z larger by 10*smallL to make a successful connection with the cover
460 G4Trd* solid_castingDie_outline_1 = new G4Trd(
461 Name.str(), castingDie_x / 2 + smallL, castingDie_x / 2 + smallL,
462 castingDie_y / 2 + smallL, castingDie_y / 2 + smallL, castingDie_z / 2 + smallL * 10 );
463 Name.str( "" );
464 Name << name << "_2";
465 G4Tubs* solid_castingDie_outline_2 =
466 new G4Tubs( Name.str(), 0, castingDie_addr + smallL, castingDie_z / 2 + smallL * 10,
467 0 * degree, 360 * degree );
468
469 // We make a 0.1*mm for successful connection
470 G4Transform3D transform_castingDie_outline_1(
471 rot_dummy, G4ThreeVector( castingDie_x / 2 - 0.1 * mm, 0, 0 ) );
472 Name.str( "" );
473 Name << name << "_3";
474 G4UnionSolid* solid_castingDie_outline_3 =
475 new G4UnionSolid( Name.str(), solid_castingDie_outline_1, solid_castingDie_outline_2,
476 transform_castingDie_outline_1 );
477
478 G4Transform3D transform_castingDie_outline_2(
479 rot_dummy, G4ThreeVector( -1 * castingDie_x / 2 + 0.1 * mm, 0, 0 ) );
480 G4UnionSolid* solid_castingDie_outline =
481 new G4UnionSolid( name, solid_castingDie_outline_3, solid_castingDie_outline_2,
482 transform_castingDie_outline_2 );
483 return solid_castingDie_outline;
484}

Referenced by lg_castingDie(), and lg_container().

◆ sd_castingDie_outline() [2/3]

G4VSolid * PartProduce::sd_castingDie_outline ( double smallL = 0,
string name = "" )

◆ sd_castingDie_outline() [3/3]

G4VSolid * PartProduce::sd_castingDie_outline ( double smallL = 0,
string name = "" )

◆ sd_containerIn() [1/3]

G4VSolid * PartProduce::sd_containerIn ( double smallL = 0,
string name = "" )

Definition at line 191 of file PartProduce.cc.

191 {
192 G4Trd* solid_containerIn = new G4Trd(
193 name, containerIn_xdown / 2 + smallL, containerIn_xup / 2 + smallL,
194 containerIn_y / 2 + smallL, containerIn_y / 2 + smallL, containerIn_z / 2 + smallL );
195 return solid_containerIn;
196}

Referenced by lg_containerFrame(), and lg_gasContainer().

◆ sd_containerIn() [2/3]

G4VSolid * PartProduce::sd_containerIn ( double smallL = 0,
string name = "" )

◆ sd_containerIn() [3/3]

G4VSolid * PartProduce::sd_containerIn ( double smallL = 0,
string name = "" )

◆ sd_containerOut() [1/3]

G4VSolid * PartProduce::sd_containerOut ( double smallL = 0,
string name = "" )

Definition at line 184 of file PartProduce.cc.

184 {
185 G4Trd* solid_containerOut = new G4Trd(
186 name, containerOut_xdown / 2 + smallL, containerOut_xup / 2 + smallL,
187 containerOut_y / 2 + smallL, containerOut_y / 2 + smallL, containerOut_z / 2 + smallL );
188 return solid_containerOut;
189}

Referenced by lg_container(), and lg_containerFrame().

◆ sd_containerOut() [2/3]

G4VSolid * PartProduce::sd_containerOut ( double smallL = 0,
string name = "" )

◆ sd_containerOut() [3/3]

G4VSolid * PartProduce::sd_containerOut ( double smallL = 0,
string name = "" )

◆ sd_lowCover1() [1/3]

G4VSolid * PartProduce::sd_lowCover1 ( double smallL = 0,
string name = "" )

Definition at line 230 of file PartProduce.cc.

230 {
231 Name.str( "" );
232 Name << name << "_1";
233 G4Trd* solid_lowCover1_1 = new G4Trd( Name.str(), lowCover1_xdown / 2 + smallL,
234 lowCover1_xup / 2 + smallL, lowCover1_y / 2 + smallL,
235 lowCover1_y / 2 + smallL, lowCover1_z / 2 + smallL );
236
237 Name.str( "" );
238 Name << name << "_2";
239 G4Trd* solid_lowCover1_2 = new G4Trd(
240 Name.str(), lowCover1_addx / 2 + smallL, lowCover1_addx / 2 + smallL,
241 lowCover1_y / 2 + smallL, lowCover1_y / 2 + smallL, lowCover1_addz / 2 + smallL );
242
243 G4Transform3D transform_lowCover1(
244 rot_dummy, G4ThreeVector( 0, 0, -( lowCover1_z + lowCover1_addz ) / 2 ) );
245 G4UnionSolid* solid_lowCover1 =
246 new G4UnionSolid( name, solid_lowCover1_1, solid_lowCover1_2, transform_lowCover1 );
247 return solid_lowCover1;
248}

Referenced by lg_container(), and lg_lowCover1().

◆ sd_lowCover1() [2/3]

G4VSolid * PartProduce::sd_lowCover1 ( double smallL = 0,
string name = "" )

◆ sd_lowCover1() [3/3]

G4VSolid * PartProduce::sd_lowCover1 ( double smallL = 0,
string name = "" )

◆ sd_lowCover2() [1/3]

G4VSolid * PartProduce::sd_lowCover2 ( double smallL = 0,
string name = "" )

Definition at line 250 of file PartProduce.cc.

250 {
251 G4Trd* solid_lowCover2 = new G4Trd( name, lowCover2_xdown / 2 + smallL,
252 lowCover2_xup / 2 + smallL, lowCover2_y / 2 + smallL,
253 lowCover2_y / 2 + smallL, lowCover2_z / 2 + smallL );
254 return solid_lowCover2;
255}

Referenced by lg_container(), and lg_lowCover2().

◆ sd_lowCover2() [2/3]

G4VSolid * PartProduce::sd_lowCover2 ( double smallL = 0,
string name = "" )

◆ sd_lowCover2() [3/3]

G4VSolid * PartProduce::sd_lowCover2 ( double smallL = 0,
string name = "" )

◆ sd_sideFEE() [1/3]

G4VSolid * PartProduce::sd_sideFEE ( double smallL = 0,
string name = "" )

Definition at line 379 of file PartProduce.cc.

379 {
380 G4Trd* solid_sideFEE =
381 new G4Trd( name, sideFEE_x / 2 + smallL, sideFEE_x / 2 + smallL, sideFEE_y / 2 + smallL,
382 sideFEE_y / 2 + smallL, sideFEE_z / 2 + smallL );
383 return solid_sideFEE;
384}

Referenced by lg_container(), and lg_sideFEE().

◆ sd_sideFEE() [2/3]

G4VSolid * PartProduce::sd_sideFEE ( double smallL = 0,
string name = "" )

◆ sd_sideFEE() [3/3]

G4VSolid * PartProduce::sd_sideFEE ( double smallL = 0,
string name = "" )

◆ sd_upCover() [1/3]

G4VSolid * PartProduce::sd_upCover ( double smallL = 0,
string name = "" )

Definition at line 223 of file PartProduce.cc.

223 {
224 G4Trd* solid_upCover =
225 new G4Trd( name, upCover_xdown / 2 + smallL, upCover_xup / 2 + smallL,
226 upCover_y / 2 + smallL, upCover_y / 2 + smallL, upCover_z / 2 + smallL );
227 return solid_upCover;
228}

Referenced by lg_container(), and lg_upCover().

◆ sd_upCover() [2/3]

G4VSolid * PartProduce::sd_upCover ( double smallL = 0,
string name = "" )

◆ sd_upCover() [3/3]

G4VSolid * PartProduce::sd_upCover ( double smallL = 0,
string name = "" )

◆ sd_upFEE() [1/3]

G4VSolid * PartProduce::sd_upFEE ( double smallL = 0,
string name = "" )

Definition at line 302 of file PartProduce.cc.

302 {
303 G4Trd* solid_upFEE =
304 new G4Trd( name, upFEE_xdown / 2 + smallL, upFEE_xup / 2 + smallL, upFEE_y / 2 + smallL,
305 upFEE_y / 2 + smallL, upFEE_z / 2 + smallL );
306 return solid_upFEE;
307}

Referenced by lg_container(), and lg_upFEE().

◆ sd_upFEE() [2/3]

G4VSolid * PartProduce::sd_upFEE ( double smallL = 0,
string name = "" )

◆ sd_upFEE() [3/3]

G4VSolid * PartProduce::sd_upFEE ( double smallL = 0,
string name = "" )

The documentation for this class was generated from the following files: