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)
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
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 19 of file DetectorConstruction.hh.


Constructor & Destructor Documentation

DetectorConstruction::DetectorConstruction (  ) 

Definition at line 36 of file DetectorConstruction.cc.

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

DetectorConstruction::~DetectorConstruction (  ) 

Definition at line 58 of file DetectorConstruction.cc.

00059 {delete m_detectorMessenger;  }


Member Function Documentation

void DetectorConstruction::SetWorldMaterial ( G4String  materialChoice  ) 

Definition at line 380 of file DetectorConstruction.cc.

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

void DetectorConstruction::SetSpacecraftMaterial ( G4String  materialChoice  ) 

Definition at line 389 of file DetectorConstruction.cc.

Referenced by DetectorMessenger::SetNewValue().

00390 {
00391   // search the material by its name   
00392   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00393   if (pttoMaterial) m_spacecraftMaterial = pttoMaterial;
00394 }

void DetectorConstruction::SetCabinMaterial ( G4String  materialChoice  ) 

Definition at line 398 of file DetectorConstruction.cc.

00399 {
00400   // search the material by its name   
00401   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00402   if (pttoMaterial) m_cabinMaterial = pttoMaterial;
00403 }

void DetectorConstruction::SetFloorMaterial ( G4String  materialChoice  ) 

Definition at line 407 of file DetectorConstruction.cc.

00408 {
00409   // search the material by its name   
00410   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00411   if (pttoMaterial) m_floorMaterial = pttoMaterial;
00412 }

void DetectorConstruction::SetAstronautMaterial ( G4String  materialChoice  ) 

Definition at line 416 of file DetectorConstruction.cc.

00417 {
00418   // search the material by its name   
00419   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);     
00420   if (pttoMaterial) m_astronautMaterial = pttoMaterial;
00421 }

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

Definition at line 34 of file DetectorConstruction.hh.

00034 {m_worldSizeXY = val;};

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

Definition at line 35 of file DetectorConstruction.hh.

00035 {m_worldSizeZ = val;};

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

Definition at line 36 of file DetectorConstruction.hh.

00036 {m_spacecraftRadius = val;};

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

Definition at line 37 of file DetectorConstruction.hh.

00037 {m_spacecraftLength = val;};

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

Definition at line 38 of file DetectorConstruction.hh.

Referenced by DetectorMessenger::SetNewValue().

00038 {m_spacecraftThickness = val;};

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

Definition at line 39 of file DetectorConstruction.hh.

Referenced by DetectorMessenger::SetNewValue().

00039 {m_cabinRadius = val;};

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

Definition at line 40 of file DetectorConstruction.hh.

Referenced by DetectorMessenger::SetNewValue().

00040 {m_cabinLength = val;};

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

Definition at line 41 of file DetectorConstruction.hh.

00041 {m_floorThickness = val;};

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

Definition at line 42 of file DetectorConstruction.hh.

00042 {m_floorWidth = val;};

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

Definition at line 43 of file DetectorConstruction.hh.

00043 {m_floorLength = val;};

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

Definition at line 44 of file DetectorConstruction.hh.

00044 {m_floorYcenter = val;};

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

Definition at line 45 of file DetectorConstruction.hh.

00045 {m_astronautHeight = val;};

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

Definition at line 46 of file DetectorConstruction.hh.

00046 {m_astronautTopWidth = val;};

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

Definition at line 47 of file DetectorConstruction.hh.

00047 {m_astronautBottomWidth = val;};     

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

Definition at line 48 of file DetectorConstruction.hh.

00048 {m_astronautPosition = val;};

G4VPhysicalVolume * DetectorConstruction::Construct (  ) 

Definition at line 63 of file DetectorConstruction.cc.

00064 {
00065   return ConstructVolumes();
00066 }

void DetectorConstruction::UpdateGeometry (  ) 

Definition at line 427 of file DetectorConstruction.cc.

Referenced by DetectorMessenger::SetNewValue().

00428 {
00429   G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
00430 }

G4VPhysicalVolume* DetectorConstruction::GetWorld (  )  [inline]

Definition at line 55 of file DetectorConstruction.hh.

00055 {return m_physiWorld;};

G4VPhysicalVolume* DetectorConstruction::GetSpacecraft (  )  [inline]

Definition at line 56 of file DetectorConstruction.hh.

00056 {return m_physiSpacecraft;};

G4VPhysicalVolume* DetectorConstruction::GetCabin (  )  [inline]

Definition at line 57 of file DetectorConstruction.hh.

00057 {return m_physiCabin;};

G4VPhysicalVolume* DetectorConstruction::GetFloor (  )  [inline]

Definition at line 58 of file DetectorConstruction.hh.

00058 {return m_physiFloor;};     

G4VPhysicalVolume* DetectorConstruction::GetAstronaut (  )  [inline]

G4Material* DetectorConstruction::GetWorldMaterial (  )  [inline]

Definition at line 61 of file DetectorConstruction.hh.

00061 {return m_worldMaterial;};                                  

G4Material* DetectorConstruction::GetSpacecraftMaterial (  )  [inline]

Definition at line 62 of file DetectorConstruction.hh.

00062 {return m_spacecraftMaterial;};

G4Material* DetectorConstruction::GetCabinMaterial (  )  [inline]

Definition at line 63 of file DetectorConstruction.hh.

00063 {return m_cabinMaterial;};     

G4Material* DetectorConstruction::GetFloorMaterial (  )  [inline]

Definition at line 64 of file DetectorConstruction.hh.

00064 {return m_floorMaterial;};

G4Material* DetectorConstruction::GetAstronautMaterial (  )  [inline]

Definition at line 65 of file DetectorConstruction.hh.

00065 {return m_astronautMaterial;};

G4double DetectorConstruction::GetWorldSizeXY (  )  [inline]

Definition at line 67 of file DetectorConstruction.hh.

Referenced by PrimaryGeneratorAction::GeneratePrimaries().

00067 {return m_worldSizeXY;};

G4double DetectorConstruction::GetWorldSizeZ (  )  [inline]

Definition at line 68 of file DetectorConstruction.hh.

Referenced by PrimaryGeneratorAction::GeneratePrimaries().

00068 {return m_worldSizeZ;};

G4double DetectorConstruction::GetSpacecraftRadius (  )  [inline]

Definition at line 69 of file DetectorConstruction.hh.

00069 {return m_spacecraftRadius;};            

G4double DetectorConstruction::GetSpacecraftLength (  )  [inline]

Definition at line 70 of file DetectorConstruction.hh.

00070 {return m_spacecraftLength;};    

G4double DetectorConstruction::GetSpacecraftThickness (  )  [inline]

Definition at line 71 of file DetectorConstruction.hh.

00071 {return m_spacecraftThickness;};

G4double DetectorConstruction::GetCabinRadius (  )  [inline]

Definition at line 72 of file DetectorConstruction.hh.

00072 {return m_cabinRadius;};            

G4double DetectorConstruction::GetCabinLength (  )  [inline]

Definition at line 73 of file DetectorConstruction.hh.

00073 {return m_cabinLength;};         

G4double DetectorConstruction::GetFloorThickness (  )  [inline]

Definition at line 74 of file DetectorConstruction.hh.

00074 {return m_floorThickness;};     

G4double DetectorConstruction::GetFloorWidth (  )  [inline]

Definition at line 75 of file DetectorConstruction.hh.

00075 {return m_floorWidth;};     

G4double DetectorConstruction::GetFloorLength (  )  [inline]

Definition at line 76 of file DetectorConstruction.hh.

00076 {return m_floorLength;};

G4double DetectorConstruction::GetFloorYcenter (  )  [inline]

Definition at line 77 of file DetectorConstruction.hh.

00077 {return m_floorYcenter;};     

G4double DetectorConstruction::GetAstronautHeight (  )  [inline]

G4double DetectorConstruction::GetAstronautTopWidth (  )  [inline]

Definition at line 79 of file DetectorConstruction.hh.

00079 {return m_astronautTopWidth;};

G4double DetectorConstruction::GetAstronautBottomWidth (  )  [inline]

Definition at line 80 of file DetectorConstruction.hh.

00080 {return m_astronautBottomWidth;};     

G4double DetectorConstruction::GetAstronautPosition (  )  [inline]

Definition at line 81 of file DetectorConstruction.hh.

00081 {return m_astronautPosition;};

void DetectorConstruction::PrintParameters (  ) 

Definition at line 348 of file DetectorConstruction.cc.

Referenced by ConstructVolumes().

00349 {
00350   G4cout << "\n---------------------------------------------------------\n";
00351   G4cout 
00352     << "---> World : (" << m_worldSizeXY/m << " X " << m_worldSizeXY/m << " X "
00353                         << m_worldSizeZ/m << ") m of "
00354                         << m_worldMaterial->GetName() << G4endl;
00355   G4cout
00356     << "---> Spacecraft : radius = " << G4BestUnit(m_spacecraftRadius,"Length")
00357     << "\t length = " << G4BestUnit(m_spacecraftLength,"Length")
00358     << "\t thickness = " << G4BestUnit(m_spacecraftThickness,"Length")        
00359     << "\t material : " << m_spacecraftMaterial->GetName() << G4endl;
00360   G4cout
00361     << "---> Cabin : radius = " << G4BestUnit(m_cabinRadius,"Length")
00362     << "\t length = " << G4BestUnit(m_cabinLength,"Length")
00363     << "\t material : " << m_cabinMaterial->GetName() << G4endl;
00364   G4cout
00365     << "---> Floor : thickness = " << G4BestUnit(m_floorThickness,"Length")
00366     << "\t width = " << G4BestUnit(m_floorWidth,"Length")    
00367     << "\t length = " << G4BestUnit(m_floorLength,"Length")
00368     << "\t material : " << m_floorMaterial->GetName() << G4endl;
00369   G4cout
00370     << "---> Astronaut : height = " << G4BestUnit(m_astronautHeight,"Length")
00371     << "\t bottom width = " << G4BestUnit(m_astronautBottomWidth,"Length")
00372     << "\t top width = " << G4BestUnit(m_astronautTopWidth,"Length")    
00373     << "\t material : " << m_astronautMaterial->GetName() << G4endl;            
00374   G4cout << "\n---------------------------------------------------------\n";
00375   G4cout << G4endl;
00376 }

void DetectorConstruction::DefineMaterials (  )  [private]

Definition at line 70 of file DetectorConstruction.cc.

Referenced by DetectorConstruction().

00071 { 
00072   //
00073   // define simple materials
00074   //
00075   G4double Z,A,density;
00076   
00077   G4Material* Al =
00078   new G4Material("Aluminium", Z=13., A=26.98*g/mole, density=2.700*g/cm3);
00079   
00080   //
00081   // build compounds from Elements
00082   //
00083   G4Element* H  = new G4Element("Hydrogen" ,"H" , Z=1., A= 1.01*g/mole);  
00084   G4Element* N  = new G4Element("Nitrogen" ,"N" , Z=7., A=14.01*g/mole);
00085   G4Element* O  = new G4Element("Oxygen"   ,"O" , Z=8., A=16.00*g/mole);
00086 
00087   G4int ncomponents, natoms;
00088   G4double fractionmass;  
00089   
00090   G4Material* Air = 
00091   new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
00092   Air->AddElement(N, fractionmass=70.*perCent);
00093   Air->AddElement(O, fractionmass=30.*perCent);
00094 
00095   G4Material* H2O = 
00096   new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
00097   H2O->AddElement(H, natoms=2);
00098   H2O->AddElement(O, natoms=1);
00099         
00100   // Vacuum standard definition...
00101   //
00102   G4Material* Vacuum =
00103   new G4Material("Galactic", Z=1., A=1.01*g/mole, density= 1.e-10*g/cm3,
00104                            kStateGas, 2.73*kelvin, 3.e-18*pascal);
00105                            
00106   //associate materials
00107   //
00108   m_worldMaterial = Vacuum;
00109   m_spacecraftMaterial = m_floorMaterial = Al;
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 
00260 
00261   // ----------------------------------------------------------
00262   // -- Binding SensitiveDetector code to astronaut volume:
00263   // -- Note that it is possible to set the sensitive detector
00264   // -- at construction of the G4LogicalVolume (fith argument
00265   // -- is a G4VSensitiveDetector*).
00266   // ----------------------------------------------------------
00267   SensitiveDetector* sensitive = new SensitiveDetector("astronautSD");
00268   logicAstronaut->SetSensitiveDetector(sensitive);
00269   // -- inform the G4SDManager of this new sensitive detector object
00270   G4SDManager::GetSDMpointer()->AddNewDetector(sensitive);
00271 
00272 
00273   // ----------------------------------------------------------
00274   // -- Add sensitive detector to the floor, using the scorer
00275   // -- facilities. This made by a G4MultiFunctionalDetector
00276   // -- to which several "Primitive Scorer" (PS) object are
00277   // -- bound. Each of these primitive take care of a single
00278   // -- quantity.
00279   // ----------------------------------------------------------
00280   // -- create a multifunctional detector, this is of G4VSensitiveDetector type:
00281   G4MultiFunctionalDetector *floorScorer = new G4MultiFunctionalDetector("floorScorer");
00282   // -- attach it to the spaceship floor:
00283   logicFloor->SetSensitiveDetector(floorScorer);
00284   // -- and declare it to the G4SDManager:
00285   G4SDManager::GetSDMpointer()->AddNewDetector(floorScorer);
00286 
00287   G4VPrimitiveScorer* primitive;
00288 
00289   // -- create a "primitive" 
00290   primitive = new G4PSEnergyDeposit("edepFloor",0);
00291   // -- and register it to the multifunctionnal detector
00292   floorScorer->RegisterPrimitive(primitive);
00293   // -- it is possible to register as many primitives you wish 
00294 
00295   // -- entering track counter scorer:
00296   primitive = new G4PSTrackCounter("trackCounterFloor", fCurrent_In, 0); // <-- flag fCurrentIn defined in source/digits_hits/scorer/include/G4PSDirectionFlag.hh
00297   floorScorer->RegisterPrimitive(primitive);
00298   
00299   // -- entering proton counter scorer:
00300   primitive = new G4PSTrackCounter("protonCounterFloor", fCurrent_In ,0);
00301   // -- create a filter for protons...
00302   G4SDParticleFilter* protonFilter = new G4SDParticleFilter("protonFilter","proton");
00303   // -- that is attached to the scorer:
00304   primitive->SetFilter(protonFilter);
00305   floorScorer->RegisterPrimitive(primitive);
00306 
00307 
00308   //colour attributes
00309   //
00310   
00311   G4VisAttributes* colourWhite= new G4VisAttributes(G4Colour(1.,1.,1.)); 
00312   colourWhite->SetVisibility(true);
00313   colourWhite->SetForceSolid(false);
00314   
00315   G4VisAttributes* colourGrey= new G4VisAttributes(G4Colour(0.5,0.5,0.5)); 
00316   colourGrey->SetVisibility(true);
00317   colourGrey->SetForceSolid(false);
00318   
00319   G4VisAttributes* colourCyan= new G4VisAttributes(G4Colour(0.,1.,1.)); 
00320   colourCyan->SetVisibility(true);
00321   colourCyan->SetForceSolid(false);
00322 
00323   G4VisAttributes* colourMagenta= new G4VisAttributes(G4Colour(1.,0.,1.)); 
00324   colourMagenta->SetVisibility(true);
00325   colourMagenta->SetForceSolid(true);
00326 
00327   G4VisAttributes* colourBlue= new G4VisAttributes(G4Colour(0.,0.,1.)); 
00328   colourBlue->SetVisibility(true);
00329   colourBlue->SetForceSolid(false);
00330   
00331   logicWorld->SetVisAttributes(colourGrey);
00332   logicSpacecraft->SetVisAttributes(colourCyan);
00333   logicCabin->SetVisAttributes(colourCyan);
00334   logicFloor->SetVisAttributes(colourWhite);
00335   logicAstronaut->SetVisAttributes(colourBlue);
00336     
00337   //print parameters
00338   //
00339   PrintParameters();
00340   
00341   // always return Physical World
00342   //
00343   return m_physiWorld;
00344 }


Member Data Documentation

G4VPhysicalVolume* DetectorConstruction::m_physiWorld [private]

Definition at line 92 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetWorld().

G4VPhysicalVolume* DetectorConstruction::m_physiSpacecraft [private]

Definition at line 93 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetSpacecraft().

G4VPhysicalVolume* DetectorConstruction::m_physiCabin [private]

Definition at line 94 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetCabin().

G4VPhysicalVolume* DetectorConstruction::m_physiFloor [private]

Definition at line 95 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetFloor().

G4VPhysicalVolume* DetectorConstruction::m_physiAstronaut [private]

Definition at line 96 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), and GetAstronaut().

Definition at line 117 of file DetectorConstruction.hh.

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

Definition at line 124 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:24 2008 for jour4b5 by  doxygen 1.5.7.1