Geant4  10.02.p03
XDetectorConstruction Class Reference

#include <XDetectorConstruction.hh>

Inheritance diagram for XDetectorConstruction:
Collaboration diagram for XDetectorConstruction:

Public Member Functions

 XDetectorConstruction ()
 
virtual ~XDetectorConstruction ()
 
virtual G4VPhysicalVolume * Construct ()
 
virtual void ConstructSDandField ()
 
void Field (G4bool bl)
 
- Public Member Functions inherited from G4VUserDetectorConstruction
 G4VUserDetectorConstruction ()
 
virtual ~G4VUserDetectorConstruction ()
 
virtual void CloneSD ()
 
virtual void CloneF ()
 
void RegisterParallelWorld (G4VUserParallelWorld *)
 
G4int ConstructParallelGeometries ()
 
void ConstructParallelSD ()
 
G4int GetNumberOfParallelWorld () const
 
G4VUserParallelWorld * GetParallelWorld (G4int i) const
 

Private Member Functions

void DefineMaterials ()
 
void SetupGeometry ()
 

Private Attributes

G4Material * fLiquidHelium
 
G4Material * fGermanium
 
G4Material * fAluminum
 
G4Material * fTungsten
 
G4VPhysicalVolume * fWorldPhys
 
G4bool fConstructed
 
G4bool fIfField
 

Additional Inherited Members

- Protected Member Functions inherited from G4VUserDetectorConstruction
void SetSensitiveDetector (const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
void SetSensitiveDetector (G4LogicalVolume *logVol, G4VSensitiveDetector *aSD)
 

Detailed Description

Definition at line 41 of file XDetectorConstruction.hh.

Constructor & Destructor Documentation

◆ XDetectorConstruction()

XDetectorConstruction::XDetectorConstruction ( )

Definition at line 59 of file XDetectorConstruction.cc.

60  : fConstructed(false), fIfField(false) {
61  fLiquidHelium = NULL;
62  fGermanium = NULL;
63  fAluminum = NULL;
64  fTungsten = NULL;
65  fWorldPhys = NULL;
66 }
G4VPhysicalVolume * fWorldPhys

◆ ~XDetectorConstruction()

XDetectorConstruction::~XDetectorConstruction ( )
virtual

Definition at line 70 of file XDetectorConstruction.cc.

70 {;}

Member Function Documentation

◆ Construct()

G4VPhysicalVolume * XDetectorConstruction::Construct ( void  )
virtual

Implements G4VUserDetectorConstruction.

Definition at line 74 of file XDetectorConstruction.cc.

75 {
76  if(!fConstructed)
77  {
78  fConstructed = true;
80  SetupGeometry();
81  }
82  return fWorldPhys;
83 }
G4VPhysicalVolume * fWorldPhys
Here is the call graph for this function:

◆ ConstructSDandField()

void XDetectorConstruction::ConstructSDandField ( )
virtual

Reimplemented from G4VUserDetectorConstruction.

Definition at line 163 of file XDetectorConstruction.cc.

163  {
164  //
165  // detector -- Note : Aluminum electrode sensitivity is attached to Germanium
166  //
167  XAluminumElectrodeSensitivity* electrodeSensitivity =
168  new XAluminumElectrodeSensitivity("XAluminumElectrode");
169 
170  SetSensitiveDetector("fGermaniumLogical", electrodeSensitivity);
171 }
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
Here is the call graph for this function:

◆ DefineMaterials()

void XDetectorConstruction::DefineMaterials ( )
private

Definition at line 87 of file XDetectorConstruction.cc.

88 {
89  G4NistManager* nistManager = G4NistManager::Instance();
90 
91  fLiquidHelium = nistManager->FindOrBuildMaterial("G4_AIR"); // to be corrected
92  fGermanium = nistManager->FindOrBuildMaterial("G4_Ge");
93  fAluminum = nistManager->FindOrBuildMaterial("G4_Al");
94  fTungsten = nistManager->FindOrBuildMaterial("G4_W");
95 }
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static G4NistManager * Instance()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Field()

void XDetectorConstruction::Field ( G4bool  bl)
inline

Definition at line 64 of file XDetectorConstruction.hh.

◆ SetupGeometry()

void XDetectorConstruction::SetupGeometry ( )
private

Definition at line 99 of file XDetectorConstruction.cc.

100 {
101  //
102  // World
103  //
104  G4VSolid* worldSolid = new G4Box("World",16.*cm,16.*cm,16.*cm);
105  G4LogicalVolume* worldLogical =
106  new G4LogicalVolume(worldSolid,fLiquidHelium,"World");
107  worldLogical->SetUserLimits(new G4UserLimits(10*mm, DBL_MAX, DBL_MAX, 0, 0));
108  fWorldPhys = new G4PVPlacement(0,G4ThreeVector(),worldLogical,"World",0,
109  false,0);
110 
111  //
112  // Germanium cylinder - this is the volume in which we will propagate phonons
113  //
114  G4VSolid* fGermaniumSolid = new G4Tubs("fGermaniumSolid",0.*cm,3.81*cm,
115  1.27*cm, 0.*deg, 360.*deg);
116  G4LogicalVolume* fGermaniumLogical =
117  new G4LogicalVolume(fGermaniumSolid,fGermanium,"fGermaniumLogical");
118  G4VPhysicalVolume* GePhys =
119  new G4PVPlacement(0,G4ThreeVector(),fGermaniumLogical,"fGermaniumPhysical",
120  worldLogical,false,0);
121 
122  //
123  //Germanium lattice information
124  //
125 
126  // G4LatticeManager gives physics processes access to lattices by volume
128  G4LatticeLogical* GeLogical = LM->LoadLattice(fGermanium, "Ge");
129 
130  // G4LatticePhysical assigns G4LatticeLogical a physical orientation
131  G4LatticePhysical* GePhysical =
132  new G4LatticePhysical(GeLogical, GePhys->GetFrameRotation());
133  LM->RegisterLattice(GePhys, GePhysical);
134 
135  // NOTE: Above registration can also be done in single step:
136  // G4LatticlePhysical* GePhysical = LM->LoadLattice(GePhys, "Ge");
137 
138  //
139  // Aluminum - crystal end caps. This is where phonon hits are registered
140  //
141  G4VSolid* fAluminumSolid = new G4Tubs("aluminiumSolid",0.*cm,3.81*cm,0.01*cm,
142  0.*deg, 360.*deg);
143 
144  G4LogicalVolume* fAluminumLogical =
145  new G4LogicalVolume(fAluminumSolid,fAluminum,"fAluminumLogical");
146  new G4PVPlacement(0,G4ThreeVector(0.,0.,1.28*cm),fAluminumLogical,
147  "fAluminumPhysical",worldLogical,false,0);
148  new G4PVPlacement(0,G4ThreeVector(0.,0.,-1.28*cm),fAluminumLogical,
149  "fAluminumPhysical",worldLogical,false,1);
150 
151  //
152  // Visualization attributes
153  //
155  G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
156  simpleBoxVisAtt->SetVisibility(true);
157  fGermaniumLogical->SetVisAttributes(simpleBoxVisAtt);
158  fAluminumLogical->SetVisAttributes(simpleBoxVisAtt);
159 }
static const double cm
Definition: G4SIunits.hh:118
const G4RotationMatrix * GetFrameRotation() const
static G4LatticeManager * GetLatticeManager()
G4VPhysicalVolume * fWorldPhys
CLHEP::Hep3Vector G4ThreeVector
Definition: G4Box.hh:64
void SetVisibility(G4bool)
void SetUserLimits(G4UserLimits *pULimits)
Definition: G4Tubs.hh:85
static const double deg
Definition: G4SIunits.hh:151
G4LatticeLogical * LoadLattice(G4Material *, const G4String &latDir)
static const G4VisAttributes Invisible
G4bool RegisterLattice(G4VPhysicalVolume *, G4LatticePhysical *)
#define DBL_MAX
Definition: templates.hh:83
static const double mm
Definition: G4SIunits.hh:114
void SetVisAttributes(const G4VisAttributes *pVA)
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ fAluminum

G4Material* XDetectorConstruction::fAluminum
private

Definition at line 57 of file XDetectorConstruction.hh.

◆ fConstructed

G4bool XDetectorConstruction::fConstructed
private

Definition at line 60 of file XDetectorConstruction.hh.

◆ fGermanium

G4Material* XDetectorConstruction::fGermanium
private

Definition at line 56 of file XDetectorConstruction.hh.

◆ fIfField

G4bool XDetectorConstruction::fIfField
private

Definition at line 61 of file XDetectorConstruction.hh.

◆ fLiquidHelium

G4Material* XDetectorConstruction::fLiquidHelium
private

Definition at line 55 of file XDetectorConstruction.hh.

◆ fTungsten

G4Material* XDetectorConstruction::fTungsten
private

Definition at line 58 of file XDetectorConstruction.hh.

◆ fWorldPhys

G4VPhysicalVolume* XDetectorConstruction::fWorldPhys
private

Definition at line 59 of file XDetectorConstruction.hh.


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