29 #include "G4Material.hh"
32 #include "G4Polyhedra.hh"
33 #include "G4Sphere.hh"
34 #include "G4GenericTrap.hh"
35 #include "G4Polycone.hh"
37 #include "G4LogicalVolume.hh"
38 #include "G4AssemblyVolume.hh"
40 #include "G4PVPlacement.hh"
41 #include "G4PVParameterised.hh"
42 #include "G4UserLimits.hh"
43 #include "G4VisAttributes.hh"
44 #include "G4Colour.hh"
46 #include "G4SubtractionSolid.hh"
47 #include "G4UnionSolid.hh"
48 #include "G4IntersectionSolid.hh"
50 #include "G4PhysicalVolumeStore.hh"
51 #include "G4LogicalVolumeStore.hh"
52 #include "G4SDManager.hh"
53 #include "G4UnitsTable.hh"
79 G4VPhysicalVolume *theDetector = 0x0;
81 const G4double world_x = 10.*CLHEP::cm;
82 const G4double world_y = 10.*CLHEP::cm;
83 const G4double world_z = 10.*CLHEP::cm;
87 G4Box *detWorld=
new G4Box(detname,world_x,world_y,world_z);
88 G4LogicalVolume *detlogicWorld=
new G4LogicalVolume(detWorld, SToGS::MaterialConsultant::theConsultant()->FindOrBuildMaterial(
"AIR"), detname, 0, 0, 0);
90 detlogicWorld->SetVisAttributes(G4VisAttributes::Invisible);
93 theDetector =
new G4PVPlacement(0,
107 G4double cube_x = 1.*CLHEP::mm;
108 G4double cube_y = 1.*CLHEP::mm;
109 G4double cube_z = 1.*CLHEP::mm;
112 G4double innerRadius = 10.*CLHEP::mm;
113 G4double outerRadius = 20.*CLHEP::mm;
114 G4double hz = 20.*CLHEP::mm;
115 G4double startAngle = 0.*CLHEP::deg;
116 G4double spanningAngle = 360.*CLHEP::deg;
119 G4double sphereRmin= 0.* CLHEP::mm;
120 G4double sphereRmax= 100*CLHEP::mm;
121 G4double sphereSPhi= 0.*CLHEP::mm;
122 G4double sphereDPhi= 360.*CLHEP::deg;
123 G4double sphereSTheta = 0 *CLHEP::deg;
124 G4double sphereDTheta = 180 *CLHEP::deg;
127 G4VSolid *plaindetector = 0x0; G4VPhysicalVolume *plain_physical = 0x0;
131 if (detname==
"PLAIN_cube")
133 plaindetector=
new G4Box(tmp,cube_x,cube_y,cube_z);
135 if (detname==
"PLAIN_tube")
137 plaindetector =
new G4Tubs(tmp,
145 if (detname==
"PLAIN_sphere")
147 plaindetector=
new G4Sphere (tmp,
157 G4LogicalVolume *plain_logic=
new G4LogicalVolume(plaindetector, SToGS::MaterialConsultant::theConsultant()->FindOrBuildMaterial(
"AIR"), tmp, 0, 0, 0);
160 G4VisAttributes *plain_logicVisAtt=
new G4VisAttributes(G4Colour(1.0,0.0,0.0));
161 plain_logic->SetVisAttributes(plain_logicVisAtt);
164 plain_physical =
new G4PVPlacement(0,
314 MakeInStore(
"PLAIN_cube",
"");
317 MakeInStore(
"PLAIN_tube",
"");
320 MakeInStore(
"PLAIN_sphere",
"");
virtual void MakeStore()
build the default store i.e. all the Ge detectors.
static G4int SetGCopyNb(G4int val)
virtual G4VPhysicalVolume * Make(G4String, G4String)
Should be implemented in any sub factory. It built (C++) a detector and return it.
Base classe to build all Ge like detectors.
static G4VSensitiveDetector * GetTrackerSD(G4String name="/SToGS/SD/Tracker")
to get a general SToGS tracker. In Multi-threading mode, return a new instance otherwise a global one...