72   :solidWorld(0),logicWorld(0),physiWorld(0),
 
   73    solidPayload(0),logicPayload(0),physiPayload(0),
 
   74    solidTKR(0),logicTKR(0),physiTKR(0),
 
   75    solidCAL(0),logicCAL(0),physiCAL(0),
 
   76    solidACT(0),logicACT(0),physiACT(0),
 
   77    solidACL1(0),logicACL1(0),physiACL1(0),
 
   78    solidACL2(0),logicACL2(0),physiACL2(0),
 
   79    solidTKRDetectorX(0),logicTKRDetectorX(0),physiTKRDetectorX(0),
 
   80    solidTKRDetectorY(0),logicTKRDetectorY(0),physiTKRDetectorY(0),
 
   81    solidCALLayerX(0),logicCALLayerX(0),physiCALLayerX(0),
 
   82    solidCALLayerY(0),logicCALLayerY(0),physiCALLayerY(0),
 
   83    solidCALDetectorX(0),logicCALDetectorX(0),physiCALDetectorX(0),
 
   84    solidCALDetectorY(0),logicCALDetectorY(0),physiCALDetectorY(0),
 
   85    solidPlane(0),logicPlane(0),physiPlane(0),
 
   86    solidConverter(0),logicConverter(0),physiConverter(0),
 
   87    trackerSD(0),calorimeterSD(0),anticoincidenceSD(0)
 
   94   TKRSiliconTileXY = 9.*
cm;
 
   96   TKRLayerDistance = 3.*
cm;
 
   97   SiliconGuardRing = 1.5*
mm;
 
   98   TKRViewsDistance = 1.*
mm;
 
  101   CALBarThickness = 1.5*
cm;
 
  104   ACDThickness = 1.*
cm;
 
  106   NbOfACDLateralTiles = 2;
 
  109   ACDTKRDistance = 5.*
cm;
 
  110   CALTKRDistance = 1.5*
cm;
 
  112   ComputePayloadParameters();
 
  122 { 
delete detectorMessenger;}
 
  129   return ConstructPayload();
 
  134 void GammaRayTelDetectorConstruction::DefineMaterials()
 
  140   G4int ncomponents, natoms;
 
  182   density = 19.3*
g/
cm3;
 
  191   density = 1.032*
g/
cm3;
 
  196   density = 4.53*
g/
cm3;
 
  205   density = 1.290*
mg/
cm3;
 
  210   density = 2.700*
g/
cm3;
 
  214   density = 2.333*
g/
cm3;  
 
  218   density = 7.87*
g/
cm3;
 
  222   density = 11.35*
g/
cm3;
 
  232   temperature = 2.73*
kelvin;
 
  235   density     = 1.e-5*
g/
cm3;
 
  236   pressure    = 2.e-2*
bar;
 
  246   ConverterMaterial = W;
 
  247   defaultMaterial  = vacuum;
 
  259   ComputePayloadParameters();
 
  265   solidWorld = 
new G4Box(
"World",                    
 
  266              WorldSizeXY/2,WorldSizeXY/2,WorldSizeZ/2);  
 
  298   solidPayload = 
new G4Box(
"Payload",       
 
  318   solidCAL = 
new G4Box(
"CAL",           
 
  319                CALSizeXY/2,CALSizeXY/2,CALSizeZ/2); 
 
  326                          -PayloadSizeZ/2+CALSizeZ/2),
 
  336   solidTKR = 
new G4Box(
"TKR",           
 
  337                TKRSizeXY/2,TKRSizeXY/2,TKRSizeZ/2); 
 
  344                          -PayloadSizeZ/2+CALSizeZ+
 
  345                          CALTKRDistance+TKRSizeZ/2),
 
  357   solidACT = 
new G4Box(
"ACT",           
 
  358                ACTSizeXY/2,ACTSizeXY/2,ACTSizeZ/2); 
 
  364                          -PayloadSizeZ/2+CALSizeZ+
 
  365                          CALTKRDistance+TKRSizeZ+
 
  366                          ACDTKRDistance+ACTSizeZ/2),
 
  377   solidACL1 = 
new G4Box(
"ACL1",         
 
  378             ACL1SizeX/2,ACL1SizeY/2,ACL1SizeZ/2); 
 
  384                           -PayloadSizeXY/2+ACL1SizeY/2,
 
  385                           -PayloadSizeZ/2+ACL1SizeZ/2),
 
  394                           PayloadSizeXY/2-ACL1SizeY/2,
 
  395                           -PayloadSizeZ/2+ACL1SizeZ/2),
 
  402   solidACL2 = 
new G4Box(
"ACL2",         
 
  403             ACL2SizeX/2,ACL2SizeY/2,ACL2SizeZ/2); 
 
  412                           PayloadSizeXY/2-ACL2SizeY/2,
 
  413                           -PayloadSizeZ/2+ACL2SizeZ/2),
 
  422                           -PayloadSizeXY/2+ACL2SizeY/2,
 
  423                           -PayloadSizeZ/2+ACL2SizeZ/2),
 
  433   solidPlane = 
new G4Box(
"Plane",           
 
  434              TKRSizeXY/2,TKRSizeXY/2,TKRSupportThickness/2); 
 
  440   solidTKRDetectorY = 
new G4Box 
  441     (
"TKRDetectorY",TKRSizeXY/2,TKRSizeXY/2,TKRSiliconThickness/2); 
 
  448   solidTKRDetectorX = 
new G4Box 
  449     (
"TKRDetectorX",TKRSizeXY/2,TKRSizeXY/2,TKRSiliconThickness/2); 
 
  456   solidConverter = 
new G4Box 
  457     (
"Converter",TKRSizeXY/2,TKRSizeXY/2,ConverterThickness/2); 
 
  465   for (i = 0; i < NbOfTKRLayers; i++)
 
  470                       +TKRSiliconThickness/2 
 
  471                       +(i)*TKRLayerDistance),
 
  481                       TKRSiliconThickness/2 +
 
  484                       (i)*TKRLayerDistance),
 
  495                       2*TKRSiliconThickness +
 
  497                       ConverterThickness/2+
 
  498                       (i)*TKRLayerDistance),
 
  510                       2*TKRSiliconThickness +
 
  513                       TKRSupportThickness/2+
 
  514                       (i)*TKRLayerDistance),
 
  525   G4VSolid * solidTKRActiveTileX = 
new 
  526     G4Box(
"Active Tile X", TKRActiveTileXY/2,
 
  527       TKRActiveTileXY/2,TKRActiveTileZ/2);
 
  530   G4VSolid * solidTKRActiveTileY = 
new 
  531     G4Box(
"Active Tile Y", TKRActiveTileXY/2,
 
  532       TKRActiveTileXY/2,TKRActiveTileZ/2);
 
  537             "Active Tile X",0,0,0);
 
  542             "Active Tile Y",0,0,0);
 
  552   for (i=0;i< NbOfTKRTiles; i++)
 
  554       for (j=0;j< NbOfTKRTiles; j++)
 
  556       k = i*NbOfTKRTiles + j;
 
  559       x = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
 
  560         TKRActiveTileXY/2+(i)*((2*SiliconGuardRing)+
 
  561                    TilesSeparation+TKRActiveTileXY);
 
  562       y = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
 
  563         TKRActiveTileXY/2+(j)*((2*SiliconGuardRing)+TilesSeparation+
 
  576       x = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
 
  577         TKRActiveTileXY/2+(j)*((2*SiliconGuardRing)+
 
  578                    TilesSeparation+TKRActiveTileXY);
 
  579       y = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
 
  580         TKRActiveTileXY/2+(i)*((2*SiliconGuardRing)+
 
  581                    TilesSeparation+TKRActiveTileXY);
 
  599   solidCALLayerX = 
new G4Box(
"CALLayerX",           
 
  600                  CALSizeXY/2,CALSizeXY/2,CALBarThickness/2); 
 
  606   solidCALLayerY = 
new G4Box(
"CALLayerY",           
 
  607                  CALSizeXY/2,CALSizeXY/2,CALBarThickness/2); 
 
  613   for (i = 0; i < NbOfCALLayers; i++)
 
  620                       (i)*2*CALBarThickness),
 
  632                       (i)*2*CALBarThickness),
 
  643   solidCALDetectorX = 
new G4Box(
"CALDetectorX",         
 
  644                 CALBarX/2,CALBarY/2,CALBarThickness/2); 
 
  650   solidCALDetectorY = 
new G4Box(
"CALDetectorY",         
 
  651                 CALBarY/2,CALBarX/2,CALBarThickness/2); 
 
  657   for (i = 0; i < NbOfCALBars; i++)
 
  716   G4String ROgeometryName = 
"TrackerROGeom";
 
  723   if (logicTKRActiveTileX)
 
  725   if (logicTKRActiveTileY)
 
  740   if (logicCALDetectorX)
 
  742   if (logicCALDetectorY)
 
  749   if(!anticoincidenceSD)
 
  752     (
"AnticoincidenceSD");
 
  815   G4cout << 
"\n------------------------------------------------------------" 
  816          << 
"\n---> The Tracker is " << NbOfTKRLayers << 
" layers of:  " 
  817          << ConverterThickness/
mm << 
"mm of " << ConverterMaterial->
GetName() 
 
  818          << 
"\n------------------------------------------------------------\n";
 
  832       ConverterMaterial = pttoMaterial;
 
  840   ConverterThickness = val;
 
  847   TKRSiliconThickness = val;
 
  853   TKRSiliconPitch = val;
 
  859   TKRSiliconTileXY = val;
 
  876   TKRLayerDistance = val;
 
  881   TKRViewsDistance = val;
 
  899   CALBarThickness = val;
 
  917   if(magField) 
delete magField;     
 
void SetNbOfCALLayers(G4int)
 
~GammaRayTelDetectorConstruction()
 
void SetForceWireframe(G4bool)
 
void UpdateMaterialList(G4VPhysicalVolume *currentWorld=0)
 
void SetNbOfTKRLayers(G4int)
 
CLHEP::Hep3Vector G4ThreeVector
 
void SetCALBarThickness(G4double)
 
G4bool SetDetectorField(G4Field *detectorField)
 
void SetTKRSiliconThickness(G4double)
 
void AddMaterial(G4Material *material, G4double fraction)
 
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
 
int universe_mean_density
 
const G4String & GetName() const 
 
void SetVisibility(G4bool)
 
static G4MaterialTable * GetMaterialTable()
 
void SetTKRViewsDistance(G4double)
 
void SetForceSolid(G4bool)
 
void SetTKRSiliconPitch(G4double)
 
void SetNbOfCALBars(G4int)
 
virtual void DefineWorldVolume(G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
 
void SetConverterMaterial(G4String)
 
static G4RegionStore * GetInstance()
 
G4GLOB_DLL std::ostream G4cout
 
void SetTKRLayerDistance(G4double)
 
void PhysicsHasBeenModified()
 
void SetROgeometry(G4VReadOutGeometry *value)
 
void PrintPayloadParameters()
 
void SetNbOfTKRTiles(G4int)
 
GammaRayTelDetectorConstruction()
 
void SetTKRTileSizeXY(G4double)
 
static G4TransportationManager * GetTransportationManager()
 
void AddNewDetector(G4VSensitiveDetector *aSD)
 
G4FieldManager * GetFieldManager() const 
 
static G4RunManager * GetRunManager()
 
static G4SDManager * GetSDMpointer()
 
static const G4VisAttributes Invisible
 
void SetMagField(G4double)
 
void AddElement(G4Element *element, G4int nAtoms)
 
G4VPhysicalVolume * Construct()
 
void CreateChordFinder(G4MagneticField *detectorMagField)
 
void SetMaterial(G4Material *pMaterial)
 
void SetVisAttributes(const G4VisAttributes *pVA)
 
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
 
void SetConverterThickness(G4double)
 
void SetACDThickness(G4double)