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 G4VPhysicalVolumeConstruct ()
 
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
 
G4VUserParallelWorldGetParallelWorld (G4int i) const
 

Private Member Functions

void DefineMaterials ()
 
void SetupGeometry ()
 

Private Attributes

G4MaterialfLiquidHelium
 
G4MaterialfGermanium
 
G4MaterialfAluminum
 
G4MaterialfTungsten
 
G4VPhysicalVolumefWorldPhys
 
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: