DetectorConstruction Class Reference

#include <DetectorConstruction.hh>

Inheritance diagram for DetectorConstruction:

Inheritance graph
[legend]
Collaboration diagram for DetectorConstruction:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 DetectorConstruction ()
 ~DetectorConstruction ()
void SetWorldMaterial (G4String)
void SetSpacecraftMaterial (G4String)
void SetCabinMaterial (G4String)
void SetFloorMaterial (G4String)
void SetAstronautMaterial (G4String)
void SetWorldSizeXY (G4double val)
void SetWorldSizeZ (G4double val)
void SetSpacecraftRadius (G4double val)
void SetSpacecraftLength (G4double val)
void SetSpacecraftThickness (G4double val)
void SetCabinRadius (G4double val)
void SetCabinLength (G4double val)
void SetFloorThickness (G4double val)
void SetFloorWidth (G4double val)
void SetFloorLength (G4double val)
void SetFloorYcenter (G4double val)
void SetAstronautHeight (G4double val)
void SetAstronautTopWidth (G4double val)
void SetAstronautBottomWidth (G4double val)
void SetAstronautPosition (G4double val)
void SetMagField (G4double)
void SetMaxStep (G4double)
G4VPhysicalVolume * Construct ()
void UpdateGeometry ()
G4VPhysicalVolume * GetWorld ()
G4VPhysicalVolume * GetSpacecraft ()
G4VPhysicalVolume * GetCabin ()
G4VPhysicalVolume * GetFloor ()
G4VPhysicalVolume * GetAstronaut ()
G4Material * GetWorldMaterial ()
G4Material * GetSpacecraftMaterial ()
G4Material * GetCabinMaterial ()
G4Material * GetFloorMaterial ()
G4Material * GetAstronautMaterial ()
G4double GetWorldSizeXY ()
G4double GetWorldSizeZ ()
G4double GetSpacecraftRadius ()
G4double GetSpacecraftLength ()
G4double GetSpacecraftThickness ()
G4double GetCabinRadius ()
G4double GetCabinLength ()
G4double GetFloorThickness ()
G4double GetFloorWidth ()
G4double GetFloorLength ()
G4double GetFloorYcenter ()
G4double GetAstronautHeight ()
G4double GetAstronautTopWidth ()
G4double GetAstronautBottomWidth ()
G4double GetAstronautPosition ()
void PrintParameters ()

Private Member Functions

void DefineMaterials ()
G4VPhysicalVolume * ConstructVolumes ()

Private Attributes

G4VPhysicalVolume * m_physiWorld
G4VPhysicalVolume * m_physiSpacecraft
G4VPhysicalVolume * m_physiCabin
G4VPhysicalVolume * m_physiFloor
G4VPhysicalVolume * m_physiAstronaut
G4Material * m_worldMaterial
G4Material * m_spacecraftMaterial
G4Material * m_cabinMaterial
G4Material * m_floorMaterial
G4Material * m_astronautMaterial
G4UniformMagField * m_magField
G4UserLimits * m_stepLimiter
G4double m_worldSizeXY
G4double m_worldSizeZ
G4double m_spacecraftRadius
G4double m_spacecraftLength
G4double m_spacecraftThickness
G4double m_cabinRadius
G4double m_cabinLength
G4double m_floorThickness
G4double m_floorWidth
G4double m_floorLength
G4double m_floorYcenter
G4double m_astronautHeight
G4double m_astronautTopWidth
G4double m_astronautBottomWidth
G4double m_astronautPosition
DetectorMessengerm_detectorMessenger


Detailed Description

Definition at line 21 of file DetectorConstruction.hh.


Constructor & Destructor Documentation

DetectorConstruction::DetectorConstruction (  ) 

Definition at line 32 of file DetectorConstruction.cc.

00033 {  
00034   DefineMaterials();
00035   
00036   //define geometrical parameters
00037   //
00038   m_cabinRadius = 50*cm;       
00039   m_cabinLength = 80*cm;
00040   m_spacecraftThickness = 2*cm;
00041   
00042   m_floorThickness = 2*cm;
00043 
00044   m_astronautHeight = 50*cm;
00045   m_astronautTopWidth = 40*cm;
00046   m_astronautBottomWidth = 60*cm;
00047   
00048   m_magField = 0;
00049   m_stepLimiter = 0;
00050       
00051   // create commands for interactive definition of the detector  
00052   m_detectorMessenger = new DetectorMessenger(this);        
00053 }

DetectorConstruction::~DetectorConstruction (  ) 

Definition at line 57 of file DetectorConstruction.cc.

00058 {delete m_stepLimiter; delete m_detectorMessenger;  }


Member Function Documentation

void DetectorConstruction::SetWorldMaterial ( G4String  materialChoice  ) 

Definition at line 343 of file DetectorConstruction.cc.

00344 {
00345   // search the material by its name   
00346   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00347   if (pttoMaterial) m_worldMaterial = pttoMaterial;
00348 }

void DetectorConstruction::SetSpacecraftMaterial ( G4String  materialChoice  ) 

Definition at line 352 of file DetectorConstruction.cc.

Referenced by DetectorMessenger::SetNewValue().

00353 {
00354   // search the material by its name   
00355   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00356   if (pttoMaterial) m_spacecraftMaterial = pttoMaterial;
00357 }

void DetectorConstruction::SetCabinMaterial ( G4String  materialChoice  ) 

Definition at line 361 of file DetectorConstruction.cc.

00362 {
00363   // search the material by its name   
00364   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00365   if (pttoMaterial) m_cabinMaterial = pttoMaterial;
00366 }

void DetectorConstruction::SetFloorMaterial ( G4String  materialChoice  ) 

Definition at line 370 of file DetectorConstruction.cc.

00371 {
00372   // search the material by its name   
00373   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00374   if (pttoMaterial) m_floorMaterial = pttoMaterial;
00375 }

void DetectorConstruction::SetAstronautMaterial ( G4String  materialChoice  ) 

Definition at line 379 of file DetectorConstruction.cc.

00380 {
00381   // search the material by its name   
00382   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00383   if (pttoMaterial) m_astronautMaterial = pttoMaterial;
00384 }

void DetectorConstruction::SetWorldSizeXY ( G4double  val  )  [inline]

Definition at line 36 of file DetectorConstruction.hh.

00036 {m_worldSizeXY = val;};

void DetectorConstruction::SetWorldSizeZ ( G4double  val  )  [inline]

Definition at line 37 of file DetectorConstruction.hh.

00037 {m_worldSizeZ = val;};

void DetectorConstruction::SetSpacecraftRadius ( G4double  val  )  [inline]

Definition at line 38 of file DetectorConstruction.hh.

00038 {m_spacecraftRadius = val;};

void DetectorConstruction::SetSpacecraftLength ( G4double  val  )  [inline]

Definition at line 39 of file DetectorConstruction.hh.

00039 {m_spacecraftLength = val;};

void DetectorConstruction::SetSpacecraftThickness ( G4double  val  )  [inline]

Definition at line 40 of file DetectorConstruction.hh.

Referenced by DetectorMessenger::SetNewValue().

00040 {m_spacecraftThickness = val;};

void DetectorConstruction::SetCabinRadius ( G4double  val  )  [inline]

Definition at line 41 of file DetectorConstruction.hh.

Referenced by DetectorMessenger::SetNewValue().

00041 {m_cabinRadius = val;};

void DetectorConstruction::SetCabinLength ( G4double  val  )  [inline]

Definition at line 42 of file DetectorConstruction.hh.

Referenced by DetectorMessenger::SetNewValue().

00042 {m_cabinLength = val;};

void DetectorConstruction::SetFloorThickness ( G4double  val  )  [inline]

Definition at line 43 of file DetectorConstruction.hh.

00043 {m_floorThickness = val;};

void DetectorConstruction::SetFloorWidth ( G4double  val  )  [inline]

Definition at line 44 of file DetectorConstruction.hh.

00044 {m_floorWidth = val;};

void DetectorConstruction::SetFloorLength ( G4double  val  )  [inline]

Definition at line 45 of file DetectorConstruction.hh.

00045 {m_floorLength = val;};

void DetectorConstruction::SetFloorYcenter ( G4double  val  )  [inline]

Definition at line 46 of file DetectorConstruction.hh.

00046 {m_floorYcenter = val;};

void DetectorConstruction::SetAstronautHeight ( G4double  val  )  [inline]

Definition at line 47 of file DetectorConstruction.hh.

00047 {m_astronautHeight = val;};

void DetectorConstruction::SetAstronautTopWidth ( G4double  val  )  [inline]

Definition at line 48 of file DetectorConstruction.hh.

00048 {m_astronautTopWidth = val;};

void DetectorConstruction::SetAstronautBottomWidth ( G4double  val  )  [inline]

Definition at line 49 of file DetectorConstruction.hh.

00049 {m_astronautBottomWidth = val;};     

void DetectorConstruction::SetAstronautPosition ( G4double  val  )  [inline]

Definition at line 50 of file DetectorConstruction.hh.

00050 {m_astronautPosition = val;};

void DetectorConstruction::SetMagField ( G4double  fieldValue  ) 

Definition at line 391 of file DetectorConstruction.cc.

Referenced by DetectorMessenger::SetNewValue().

00392 {
00393   //apply a global uniform magnetic field along Z axis
00394   G4FieldManager* fieldMgr
00395    = G4TransportationManager::GetTransportationManager()->GetFieldManager();
00396 
00397   if (m_magField) delete m_magField;    //delete the existing magn field
00398 
00399   if (fieldValue!=0.)                   // create a new one if non nul
00400     {
00401       m_magField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldValue));
00402       fieldMgr->SetDetectorField(m_magField);
00403       fieldMgr->CreateChordFinder(m_magField);
00404     }
00405    else
00406     {
00407       m_magField = 0;
00408       fieldMgr->SetDetectorField(m_magField);
00409     }
00410 }

void DetectorConstruction::SetMaxStep ( G4double  maxStep  ) 

Definition at line 414 of file DetectorConstruction.cc.

Referenced by DetectorMessenger::SetNewValue().

00415 {
00416   if ((m_stepLimiter)&&(maxStep>0.))
00417     m_stepLimiter->SetMaxAllowedStep(maxStep);
00418 }

G4VPhysicalVolume * DetectorConstruction::Construct (  ) 

Definition at line 62 of file DetectorConstruction.cc.

00063 {
00064   return ConstructVolumes();
00065 }

void DetectorConstruction::UpdateGeometry (  ) 

Definition at line 424 of file DetectorConstruction.cc.

Referenced by DetectorMessenger::SetNewValue().

00425 {
00426   G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
00427 }

G4VPhysicalVolume* DetectorConstruction::GetWorld (  )  [inline]

Definition at line 60 of file DetectorConstruction.hh.

00060 {return m_physiWorld;};

G4VPhysicalVolume* DetectorConstruction::GetSpacecraft (  )  [inline]

Definition at line 61 of file DetectorConstruction.hh.

00061 {return m_physiSpacecraft;};

G4VPhysicalVolume* DetectorConstruction::GetCabin (  )  [inline]

Definition at line 62 of file DetectorConstruction.hh.

00062 {return m_physiCabin;};

G4VPhysicalVolume* DetectorConstruction::GetFloor (  )  [inline]

Definition at line 63 of file DetectorConstruction.hh.

00063 {return m_physiFloor;};     

G4VPhysicalVolume* DetectorConstruction::GetAstronaut (  )  [inline]

Definition at line 64 of file DetectorConstruction.hh.

Referenced by RunAction::EndOfRunAction(), and SteppingAction::UserSteppingAction().

00064 {return m_physiAstronaut;};

G4Material* DetectorConstruction::GetWorldMaterial (  )  [inline]

Definition at line 66 of file DetectorConstruction.hh.

00066 {return m_worldMaterial;};                                  

G4Material* DetectorConstruction::GetSpacecraftMaterial (  )  [inline]

Definition at line 67 of file DetectorConstruction.hh.

00067 {return m_spacecraftMaterial;};

G4Material* DetectorConstruction::GetCabinMaterial (  )  [inline]

Definition at line 68 of file DetectorConstruction.hh.

00068 {return m_cabinMaterial;};     

G4Material* DetectorConstruction::GetFloorMaterial (  )  [inline]

Definition at line 69 of file DetectorConstruction.hh.

00069 {return m_floorMaterial;};

G4Material* DetectorConstruction::GetAstronautMaterial (  )  [inline]

Definition at line 70 of file DetectorConstruction.hh.

00070 {return m_astronautMaterial;};

G4double DetectorConstruction::GetWorldSizeXY (  )  [inline]

Definition at line 72 of file DetectorConstruction.hh.

Referenced by PrimaryGeneratorAction::GeneratePrimaries().

00072 {return m_worldSizeXY;};

G4double DetectorConstruction::GetWorldSizeZ (  )  [inline]

Definition at line 73 of file DetectorConstruction.hh.

Referenced by PrimaryGeneratorAction::GeneratePrimaries().

00073 {return m_worldSizeZ;};

G4double DetectorConstruction::GetSpacecraftRadius (  )  [inline]

Definition at line 74 of file DetectorConstruction.hh.

00074 {return m_spacecraftRadius;};            

G4double DetectorConstruction::GetSpacecraftLength (  )  [inline]

Definition at line 75 of file DetectorConstruction.hh.

00075 {return m_spacecraftLength;};    

G4double DetectorConstruction::GetSpacecraftThickness (  )  [inline]

Definition at line 76 of file DetectorConstruction.hh.

00076 {return m_spacecraftThickness;};

G4double DetectorConstruction::GetCabinRadius (  )  [inline]

Definition at line 77 of file DetectorConstruction.hh.

00077 {return m_cabinRadius;};            

G4double DetectorConstruction::GetCabinLength (  )  [inline]

Definition at line 78 of file DetectorConstruction.hh.

00078 {return m_cabinLength;};         

G4double DetectorConstruction::GetFloorThickness (  )  [inline]

Definition at line 79 of file DetectorConstruction.hh.

00079 {return m_floorThickness;};     

G4double DetectorConstruction::GetFloorWidth (  )  [inline]

Definition at line 80 of file DetectorConstruction.hh.

00080 {return m_floorWidth;};     

G4double DetectorConstruction::GetFloorLength (  )  [inline]

Definition at line 81 of file DetectorConstruction.hh.

00081 {return m_floorLength;};

G4double DetectorConstruction::GetFloorYcenter (  )  [inline]

Definition at line 82 of file DetectorConstruction.hh.

00082 {return m_floorYcenter;};     

G4double DetectorConstruction::GetAstronautHeight (  )  [inline]

G4double DetectorConstruction::GetAstronautTopWidth (  )  [inline]

Definition at line 84 of file DetectorConstruction.hh.

00084 {return m_astronautTopWidth;};

G4double DetectorConstruction::GetAstronautBottomWidth (  )  [inline]

Definition at line 85 of file DetectorConstruction.hh.

00085 {return m_astronautBottomWidth;};     

G4double DetectorConstruction::GetAstronautPosition (  )  [inline]

Definition at line 86 of file DetectorConstruction.hh.

00086 {return m_astronautPosition;};

void DetectorConstruction::PrintParameters (  ) 

Definition at line 311 of file DetectorConstruction.cc.

Referenced by ConstructVolumes().

00312 {
00313   G4cout << "\n---------------------------------------------------------\n";
00314   G4cout 
00315     << "---> World : (" << m_worldSizeXY/m << " X " << m_worldSizeXY/m << " X "
00316                         << m_worldSizeZ/m << ") m of "
00317                         << m_worldMaterial->GetName() << G4endl;
00318   G4cout
00319     << "---> Spacecraft : radius = " << G4BestUnit(m_spacecraftRadius,"Length")
00320     << "\t length = " << G4BestUnit(m_spacecraftLength,"Length")
00321     << "\t thickness = " << G4BestUnit(m_spacecraftThickness,"Length")        
00322     << "\t material : " << m_spacecraftMaterial->GetName() << G4endl;
00323   G4cout
00324     << "---> Cabin : radius = " << G4BestUnit(m_cabinRadius,"Length")
00325     << "\t length = " << G4BestUnit(m_cabinLength,"Length")
00326     << "\t material : " << m_cabinMaterial->GetName() << G4endl;
00327   G4cout
00328     << "---> Floor : thickness = " << G4BestUnit(m_floorThickness,"Length")
00329     << "\t width = " << G4BestUnit(m_floorWidth,"Length")    
00330     << "\t length = " << G4BestUnit(m_floorLength,"Length")
00331     << "\t material : " << m_floorMaterial->GetName() << G4endl;
00332   G4cout
00333     << "---> Astronaut : height = " << G4BestUnit(m_astronautHeight,"Length")
00334     << "\t bottom width = " << G4BestUnit(m_astronautBottomWidth,"Length")
00335     << "\t top width = " << G4BestUnit(m_astronautTopWidth,"Length")    
00336     << "\t material : " << m_astronautMaterial->GetName() << G4endl;            
00337   G4cout << "\n---------------------------------------------------------\n";
00338   G4cout << G4endl;
00339 }

void DetectorConstruction::DefineMaterials (  )  [private]

Definition at line 69 of file DetectorConstruction.cc.

Referenced by DetectorConstruction().

00070 { 
00071   //
00072   // define simple materials
00073   //
00074   G4double Z,A,density;
00075   
00076   G4Material* Al =
00077   new G4Material("Aluminium", Z=13., A=26.98*g/mole, density=2.700*g/cm3);
00078   
00079   //
00080   // build compounds from Elements
00081   //
00082   G4Element* H  = new G4Element("Hydrogen" ,"H" , Z=1., A= 1.01*g/mole);  
00083   G4Element* N  = new G4Element("Nitrogen" ,"N" , Z=7., A=14.01*g/mole);
00084   G4Element* O  = new G4Element("Oxygen"   ,"O" , Z=8., A=16.00*g/mole);
00085 
00086   G4int ncomponents, natoms;
00087   G4double fractionmass;  
00088   
00089   G4Material* Air = 
00090   new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
00091   Air->AddElement(N, fractionmass=70.*perCent);
00092   Air->AddElement(O, fractionmass=30.*perCent);
00093 
00094   G4Material* H2O = 
00095   new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
00096   H2O->AddElement(H, natoms=2);
00097   H2O->AddElement(O, natoms=1);
00098         
00099   // Vacuum standard definition...
00100   //
00101   G4Material* Vacuum =
00102   new G4Material("Galactic", Z=1., A=1.01*g/mole, density= 1.e-10*g/cm3,
00103                            kStateGas, 2.73*kelvin, 3.e-18*pascal);
00104                            
00105   //associate materials
00106   //
00107   m_worldMaterial = Vacuum;
00108   ////m_spacecraftMaterial = m_floorMaterial = Al;
00109   m_spacecraftMaterial = m_floorMaterial = Air;  
00110   m_cabinMaterial = Air;
00111   m_astronautMaterial = H2O;
00112                              
00113   // Print
00114   //
00115   G4cout << *(G4Material::GetMaterialTable()) << G4endl;
00116 }

G4VPhysicalVolume * DetectorConstruction::ConstructVolumes (  )  [private]

Definition at line 120 of file DetectorConstruction.cc.

Referenced by Construct(), and UpdateGeometry().

00121 {
00122   // Cleanup old geometry
00123   G4GeometryManager::GetInstance()->OpenGeometry();
00124   G4PhysicalVolumeStore::GetInstance()->Clean();
00125   G4LogicalVolumeStore::GetInstance()->Clean();
00126   G4SolidStore::GetInstance()->Clean();
00127   
00128   //define geometrical parameters
00129   //    
00130   m_spacecraftRadius = m_cabinRadius + m_spacecraftThickness;       
00131   m_spacecraftLength = m_cabinLength + 2*m_spacecraftThickness;
00132   
00133   m_floorYcenter   = - 0.5*m_cabinRadius;
00134   G4double floorYtop      = m_floorYcenter + 0.5*m_floorThickness;
00135   G4double floorYbottom   = m_floorYcenter - 0.5*m_floorThickness;      
00136   m_floorWidth =
00137           2*std::sqrt(m_cabinRadius*m_cabinRadius - floorYbottom*floorYbottom);
00138   m_floorLength    = m_cabinLength;
00139     
00140   m_worldSizeXY = 2.2*m_spacecraftRadius;
00141   m_worldSizeZ  = 1.1*m_spacecraftLength;
00142   
00143   m_astronautPosition = floorYtop + 0.5*m_astronautHeight;
00144   
00145     
00146   // World volume
00147   //
00148 
00149   G4Box*
00150   solidWorld = new G4Box("World",                                  //its name
00151                  m_worldSizeXY/2,m_worldSizeXY/2,m_worldSizeZ/2);  //its size
00152   
00153   G4LogicalVolume*  
00154   logicWorld = new G4LogicalVolume(solidWorld,          //its solid
00155                                    m_worldMaterial,     //its material
00156                                    "World");            //its name
00157 
00158   m_physiWorld = new G4PVPlacement(0,                   //no rotation
00159                                  G4ThreeVector(),       //at (0,0,0)
00160                                  logicWorld,            //its logical volume
00161                                  "World",               //its name
00162                                  0,                     //its mother  volume
00163                                  false,                 //no boolean operation
00164                                  0);                    //copy number
00165                                  
00166   // SpaceCraft volume
00167   //
00168   G4Tubs*
00169   solidSpacecraft = new G4Tubs("Spacecraft",            //name
00170                          0*cm, m_spacecraftRadius,      //r1, r2
00171                          0.5*m_spacecraftLength,        //half-length 
00172                          0., twopi);                    //teta1, teta2
00173                          
00174   G4LogicalVolume*    
00175   logicSpacecraft = new G4LogicalVolume(solidSpacecraft,   //solid
00176                                     m_spacecraftMaterial,  //material
00177                                         "Spacecraft");     //name
00178   
00179   m_physiSpacecraft = new G4PVPlacement(0,              //no rotation
00180                                   G4ThreeVector(0,0,0), //position
00181                                   logicSpacecraft,      //logicalVolume
00182                                   "Spacecraft",         //name
00183                                    logicWorld,          //mother
00184                                    false,               //no boolean
00185                                    0);                  //copy nb
00186   
00187   // Cabin
00188   //
00189   G4Tubs*
00190   solidCabin = new G4Tubs("Cabin",                      //name
00191                          0*cm, m_cabinRadius,           //r1, r2
00192                          0.5*m_cabinLength,             //half-length 
00193                          0., 360*deg);                  //teta1, teta2
00194                          
00195   G4LogicalVolume*    
00196   logicCabin = new G4LogicalVolume(solidCabin,          //solid
00197                                    m_cabinMaterial,     //material
00198                                    "Cabin");            //name
00199                                           
00200   m_physiCabin = new G4PVPlacement(0,                   //no rotation
00201                                  G4ThreeVector(0,0,0),  //position
00202                                  logicCabin,            //logicalVolume
00203                                  "Cabin",               //name
00204                                   logicSpacecraft,      //mother
00205                                   false,                //no boolean
00206                                   0);                   //copy nb
00207   
00208 
00209   // Floor
00210   //
00211   G4Box*
00212   solidFloor = new G4Box("Floor",                                    //name
00213               m_floorWidth/2,m_floorLength/2,m_floorThickness/2);    //size
00214                     
00215   G4LogicalVolume*  
00216   logicFloor = new G4LogicalVolume(solidFloor, m_floorMaterial, "Floor");
00217   
00218   //rotation matrix to place the floor within cabin
00219   G4RotationMatrix* rotm1 = new G4RotationMatrix();
00220   rotm1->rotateX(90*deg);
00221 
00222   m_physiFloor = new G4PVPlacement(rotm1,               //rotation
00223                              G4ThreeVector(0,m_floorYcenter,0), //position 
00224                                  logicFloor,            //logicalVolume 
00225                                  "Floor",               //name 
00226                                  logicCabin,            //mother
00227                                  false,                 //no boolean
00228                                  0);                    //copy nb
00229                                  
00230   // Astronaut
00231   //
00232   G4Trd*
00233    solidAstronaut = new G4Trd("Astronaut",              //name
00234                0.5 * m_astronautBottomWidth,            //dx1
00235                0.5 * m_astronautTopWidth,               //dx2
00236                0.5 * m_astronautBottomWidth,            //dy1
00237                0.5 * m_astronautTopWidth,               //dy2
00238                0.5 * m_astronautHeight);                //dz
00239                          
00240   G4LogicalVolume*    
00241   logicAstronaut = new G4LogicalVolume(solidAstronaut,  //solid
00242                                    m_astronautMaterial, //material
00243                                    "Astronaut");        //name
00244                                    
00245   //rotation matrix to place astronaut within cabin
00246   G4RotationMatrix* rotm2 = new G4RotationMatrix();
00247   rotm2->rotateX(90*deg);
00248   
00249   //translation vector to place astronaut within cabin
00250   G4ThreeVector position = G4ThreeVector(0.,m_astronautPosition,0.);                               
00251                                           
00252   m_physiAstronaut = new G4PVPlacement(rotm2,           //no rotation
00253                                  position,              //position
00254                                  logicAstronaut,        //logicalVolume
00255                                  "Astronaut",           //name
00256                                   logicCabin,           //mother
00257                                   false,                //no boolean
00258                                   0);                   //copy nb
00259   //colour attributes
00260   //
00261   
00262   G4VisAttributes* colourWhite= new G4VisAttributes(G4Colour(1.,1.,1.)); 
00263   colourWhite->SetVisibility(true);
00264   colourWhite->SetForceSolid(false);
00265   
00266   G4VisAttributes* colourGrey= new G4VisAttributes(G4Colour(0.5,0.5,0.5)); 
00267   colourGrey->SetVisibility(true);
00268   colourGrey->SetForceSolid(false);
00269   
00270   G4VisAttributes* colourCyan= new G4VisAttributes(G4Colour(0.,1.,1.)); 
00271   colourCyan->SetVisibility(true);
00272   colourCyan->SetForceSolid(false);
00273 
00274   G4VisAttributes* colourMagenta= new G4VisAttributes(G4Colour(1.,0.,1.)); 
00275   colourMagenta->SetVisibility(true);
00276   colourMagenta->SetForceSolid(true);
00277 
00278   G4VisAttributes* colourBlue= new G4VisAttributes(G4Colour(0.,0.,1.)); 
00279   colourBlue->SetVisibility(true);
00280   colourBlue->SetForceSolid(false);
00281   
00282   logicWorld->SetVisAttributes(colourGrey);
00283   logicSpacecraft->SetVisAttributes(colourCyan);
00284   logicCabin->SetVisAttributes(colourCyan);
00285   logicFloor->SetVisAttributes(colourWhite);
00286   logicAstronaut->SetVisAttributes(colourBlue);
00287     
00288   //print parameters
00289   //
00290   PrintParameters();
00291   
00292   // below is an example of how to set tracking constraints in a given
00293   // logical volume    
00294   // Sets a max Step length everywhere, with G4StepLimiter
00295   // (see also in PhysicsList how to setup the process G4StepLimiter)  
00296   //
00297   m_stepLimiter = new G4UserLimits();
00298   logicWorld->SetUserLimits(m_stepLimiter);
00299   logicSpacecraft->SetUserLimits(m_stepLimiter);  
00300   logicCabin->SetUserLimits(m_stepLimiter);
00301   logicFloor->SetUserLimits(m_stepLimiter);  
00302   logicAstronaut->SetUserLimits(m_stepLimiter);
00303     
00304   // always return Physical World
00305   //
00306   return m_physiWorld;
00307 }


Member Data Documentation

G4VPhysicalVolume* DetectorConstruction::m_physiWorld [private]

Definition at line 97 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetWorld().

G4VPhysicalVolume* DetectorConstruction::m_physiSpacecraft [private]

Definition at line 98 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetSpacecraft().

G4VPhysicalVolume* DetectorConstruction::m_physiCabin [private]

Definition at line 99 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetCabin().

G4VPhysicalVolume* DetectorConstruction::m_physiFloor [private]

Definition at line 100 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetFloor().

G4VPhysicalVolume* DetectorConstruction::m_physiAstronaut [private]

Definition at line 101 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetAstronaut().

G4UniformMagField* DetectorConstruction::m_magField [private]

Definition at line 109 of file DetectorConstruction.hh.

Referenced by DetectorConstruction(), and SetMagField().

G4UserLimits* DetectorConstruction::m_stepLimiter [private]

Definition at line 125 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), GetFloorYcenter(), and SetFloorYcenter().

Definition at line 132 of file DetectorConstruction.hh.

Referenced by DetectorConstruction(), and ~DetectorConstruction().


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

Generated on Fri Nov 21 10:21:35 2008 for jour4d by  doxygen 1.5.7.1