Geant4  10.02.p03
Em10DetectorConstruction Class Reference

#include <Em10DetectorConstruction.hh>

Inheritance diagram for Em10DetectorConstruction:
Collaboration diagram for Em10DetectorConstruction:

Public Member Functions

 Em10DetectorConstruction ()
 
 ~Em10DetectorConstruction ()
 
void SetAbsorberMaterial (G4String)
 
void SetAbsorberThickness (G4double)
 
void SetAbsorberRadius (G4double)
 
void SetAbsorberZpos (G4double)
 
void SetRadiatorMaterial (G4String)
 
void SetRadiatorThickness (G4double)
 
void SetGasGapThickness (G4double)
 
void SetFoilNumber (G4int i)
 
void SetWorldMaterial (G4String)
 
void SetWorldSizeZ (G4double)
 
void SetWorldSizeR (G4double)
 
void SetDetectorSetUp (G4String s)
 
void SetMagField (G4double)
 
G4VPhysicalVolumeConstruct ()
 
void UpdateGeometry ()
 
void PrintGeometryParameters ()
 
G4MaterialGetWorldMaterial ()
 
G4double GetWorldSizeZ ()
 
G4double GetWorldSizeR ()
 
G4double GetAbsorberZpos ()
 
G4MaterialGetAbsorberMaterial ()
 
G4double GetAbsorberThickness ()
 
G4double GetAbsorberRadius ()
 
const G4VPhysicalVolumeGetphysiWorld ()
 
const G4VPhysicalVolumeGetAbsorber ()
 
G4LogicalVolumeGetLogicalAbsorber ()
 
G4LogicalVolumeGetLogicalRadiator ()
 
G4double GetFoilThick ()
 
G4double GetGasThick ()
 
G4int GetFoilNumber ()
 
G4MaterialGetFoilMaterial ()
 
G4MaterialGetGasMaterial ()
 
- Public Member Functions inherited from G4VUserDetectorConstruction
 G4VUserDetectorConstruction ()
 
virtual ~G4VUserDetectorConstruction ()
 
virtual void ConstructSDandField ()
 
virtual void CloneSD ()
 
virtual void CloneF ()
 
void RegisterParallelWorld (G4VUserParallelWorld *)
 
G4int ConstructParallelGeometries ()
 
void ConstructParallelSD ()
 
G4int GetNumberOfParallelWorld () const
 
G4VUserParallelWorldGetParallelWorld (G4int i) const
 

Private Member Functions

G4VPhysicalVolumeConstructDetectorXTR ()
 
G4VPhysicalVolumeSimpleSetUpALICE ()
 
G4VPhysicalVolumeSetUpALICE06 ()
 
G4VPhysicalVolumeSetUpBari05 ()
 
G4VPhysicalVolumeSetUpHarris73 ()
 
G4VPhysicalVolumeSetUpWatase86 ()
 
G4VPhysicalVolumeSetUpBarr90 ()
 
void TestOld ()
 

Private Attributes

G4bool fWorldChanged
 
G4MaterialfAbsorberMaterial
 
G4double fAbsorberThickness
 
G4double fAbsorberRadius
 
G4MaterialfPipeMat
 
G4MaterialfWindowMat
 
G4double fWindowThick
 
G4MaterialfElectrodeMat
 
G4double fElectrodeThick
 
G4MaterialfGapMat
 
G4double fGapThick
 
G4double fAbsorberZ
 
G4String fSetUp
 
G4MaterialfWorldMaterial
 
G4double fWorldSizeR
 
G4double fWorldSizeZ
 
G4BoxfSolidWorld
 
G4LogicalVolumefLogicWorld
 
G4VPhysicalVolumefPhysicsWorld
 
G4BoxfSolidRadiator
 
G4LogicalVolumefLogicRadiator
 
G4VPhysicalVolumefPhysicsRadiator
 
G4MaterialfRadiatorMat
 
G4MaterialfFoilMat
 
G4MaterialfGasMat
 
G4double fRadThickness
 
G4double fGasGap
 
G4double foilGasRatio
 
G4int fFoilNumber
 
G4double fDetThickness
 
G4double fDetLength
 
G4double fDetGap
 
G4double fStartR
 
G4double fStartZ
 
G4int fModuleNumber
 
G4double fRadThick
 
G4double fMylarThick
 
G4double fPipeLength
 
G4bool fPipe
 
G4bool fPipeField
 
G4double fRadZ
 
G4double fWindowZ
 
G4double fGapZ
 
G4double fElectrodeZ
 
G4BoxfSolidAbsorber
 
G4LogicalVolumefLogicAbsorber
 
G4VPhysicalVolumefPhysicsAbsorber
 
G4UniformMagFieldfMagField
 
Em10DetectorMessengerfDetectorMessenger
 
Em10CalorimeterSDfCalorimeterSD
 
G4RegionfRegGasDet
 
G4RegionfRadRegion
 
Em10MaterialsfMat
 

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 54 of file Em10DetectorConstruction.hh.

Constructor & Destructor Documentation

◆ Em10DetectorConstruction()

Em10DetectorConstruction::Em10DetectorConstruction ( )

Definition at line 66 of file Em10DetectorConstruction.cc.

68  fWorldChanged(false), fAbsorberMaterial(0), fGapMat(0), fSetUp("simpleALICE"),
70 // fSolidRadSlice(0), fLogicRadSlice(0), fPhysicRadSlice(0),
72  fRadiatorMat(0), fPipe(false), fPipeField(false),
75  fRadRegion(0), fMat(0)
76 {
78  fMat = new Em10Materials();
79 }
Em10DetectorMessenger * fDetectorMessenger

◆ ~Em10DetectorConstruction()

Em10DetectorConstruction::~Em10DetectorConstruction ( )

Definition at line 83 of file Em10DetectorConstruction.cc.

84 {
85  delete fDetectorMessenger;
86  delete fMat;
87 }
Em10DetectorMessenger * fDetectorMessenger

Member Function Documentation

◆ Construct()

G4VPhysicalVolume * Em10DetectorConstruction::Construct ( void  )
virtual

Implements G4VUserDetectorConstruction.

Definition at line 91 of file Em10DetectorConstruction.cc.

92 {
93  return ConstructDetectorXTR();
94 }
G4VPhysicalVolume * ConstructDetectorXTR()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructDetectorXTR()

G4VPhysicalVolume * Em10DetectorConstruction::ConstructDetectorXTR ( )
private

Definition at line 98 of file Em10DetectorConstruction.cc.

99 {
100  // Cleanup old geometry
101 
106 
107  if( fSetUp == "simpleALICE" )
108  {
109  return SimpleSetUpALICE();
110  }
111  else if( fSetUp == "alice06" )
112  {
113  return SetUpALICE06();
114  }
115  else if( fSetUp == "bari05" )
116  {
117  return SetUpBari05();
118  }
119  else if( fSetUp == "harris73" )
120  {
121  return SetUpHarris73();
122  }
123  else if( fSetUp == "watase86" )
124  {
125  return SetUpWatase86();
126  }
127  else if( fSetUp == "barr90" )
128  {
129  return SetUpBarr90();
130  }
131  else
132  {
133  G4cout <<
134  "Experimental setup is unsupported. Check /XTRdetector/setup " <<G4endl;
135  G4cout<<"Run default: barr90 "<<G4endl;
136  return SetUpBarr90();
137 
138  // return 0;
139  }
140 }
static void Clean()
Definition: G4SolidStore.cc:79
static G4PhysicalVolumeStore * GetInstance()
G4GLOB_DLL std::ostream G4cout
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
static G4GeometryManager * GetInstance()
G4VPhysicalVolume * SetUpHarris73()
G4VPhysicalVolume * SimpleSetUpALICE()
G4VPhysicalVolume * SetUpALICE06()
#define G4endl
Definition: G4ios.hh:61
void OpenGeometry(G4VPhysicalVolume *vol=0)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAbsorber()

const G4VPhysicalVolume* Em10DetectorConstruction::GetAbsorber ( )
inline

Definition at line 102 of file Em10DetectorConstruction.hh.

102 {return fPhysicsAbsorber;};
Here is the caller graph for this function:

◆ GetAbsorberMaterial()

G4Material* Em10DetectorConstruction::GetAbsorberMaterial ( )
inline

Definition at line 97 of file Em10DetectorConstruction.hh.

Here is the caller graph for this function:

◆ GetAbsorberRadius()

G4double Em10DetectorConstruction::GetAbsorberRadius ( )
inline

Definition at line 99 of file Em10DetectorConstruction.hh.

◆ GetAbsorberThickness()

G4double Em10DetectorConstruction::GetAbsorberThickness ( )
inline

Definition at line 98 of file Em10DetectorConstruction.hh.

◆ GetAbsorberZpos()

G4double Em10DetectorConstruction::GetAbsorberZpos ( )
inline

Definition at line 95 of file Em10DetectorConstruction.hh.

◆ GetFoilMaterial()

G4Material* Em10DetectorConstruction::GetFoilMaterial ( )
inline

Definition at line 109 of file Em10DetectorConstruction.hh.

109 {return fFoilMat;};
Here is the caller graph for this function:

◆ GetFoilNumber()

G4int Em10DetectorConstruction::GetFoilNumber ( )
inline

Definition at line 108 of file Em10DetectorConstruction.hh.

Here is the caller graph for this function:

◆ GetFoilThick()

G4double Em10DetectorConstruction::GetFoilThick ( )
inline

Definition at line 106 of file Em10DetectorConstruction.hh.

Here is the caller graph for this function:

◆ GetGasMaterial()

G4Material* Em10DetectorConstruction::GetGasMaterial ( )
inline

Definition at line 110 of file Em10DetectorConstruction.hh.

110 {return fGasMat;};
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetGasThick()

G4double Em10DetectorConstruction::GetGasThick ( )
inline

Definition at line 107 of file Em10DetectorConstruction.hh.

Here is the caller graph for this function:

◆ GetLogicalAbsorber()

G4LogicalVolume* Em10DetectorConstruction::GetLogicalAbsorber ( )
inline

Definition at line 103 of file Em10DetectorConstruction.hh.

103 {return fLogicAbsorber;};

◆ GetLogicalRadiator()

G4LogicalVolume* Em10DetectorConstruction::GetLogicalRadiator ( )
inline

Definition at line 105 of file Em10DetectorConstruction.hh.

105 {return fLogicRadiator;};
Here is the caller graph for this function:

◆ GetphysiWorld()

const G4VPhysicalVolume* Em10DetectorConstruction::GetphysiWorld ( )
inline

Definition at line 101 of file Em10DetectorConstruction.hh.

101 {return fPhysicsWorld;};

◆ GetWorldMaterial()

G4Material* Em10DetectorConstruction::GetWorldMaterial ( )
inline

Definition at line 91 of file Em10DetectorConstruction.hh.

◆ GetWorldSizeR()

G4double Em10DetectorConstruction::GetWorldSizeR ( )
inline

Definition at line 93 of file Em10DetectorConstruction.hh.

◆ GetWorldSizeZ()

G4double Em10DetectorConstruction::GetWorldSizeZ ( )
inline

Definition at line 92 of file Em10DetectorConstruction.hh.

◆ PrintGeometryParameters()

void Em10DetectorConstruction::PrintGeometryParameters ( )

Definition at line 1529 of file Em10DetectorConstruction.cc.

1530 {
1531  G4cout << "\n The WORLD is made of "
1532  << fWorldSizeZ/mm << "mm of " << fWorldMaterial->GetName();
1533  G4cout << ", the transverse size (R) of the world is " <<
1534  fWorldSizeR/mm << " mm. " << G4endl;
1535  G4cout << " The ABSORBER is made of "
1536  << fAbsorberThickness/mm << "mm of " << fAbsorberMaterial->GetName();
1537  G4cout << ", the transverse size (R) is " << fAbsorberRadius/mm <<
1538  " mm. " << G4endl;
1539  G4cout << " Z position of the (middle of the) absorber "
1540  << fAbsorberZ/mm << " mm." << G4endl;
1541 
1542  G4cout<<"fRadZ = "<<fRadZ/mm<<" mm"<<G4endl;
1543 
1544  G4cout<<"fStartZ = "<<fStartZ/mm<<" mm"<<G4endl;
1545 
1546  G4cout<<"fRadThick = "<<fRadThick/mm<<" mm"<<G4endl;
1547  G4cout<<"fFoilNumber = "<<fFoilNumber<<G4endl;
1548  G4cout<<"fRadiatorMat = "<<fRadiatorMat->GetName()<<G4endl;
1549  G4cout<<"WorldMaterial = "<<fWorldMaterial->GetName()<<G4endl;
1550  // G4cout<<"fAbsorberZ = "<<fAbsorberZ/mm<<" mm"<<G4endl;
1551  G4cout << G4endl;
1552 }
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
const G4String & GetName() const
Definition: G4Material.hh:178
static const double mm
Definition: G4SIunits.hh:114
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetAbsorberMaterial()

void Em10DetectorConstruction::SetAbsorberMaterial ( G4String  materialChoice)

Definition at line 1556 of file Em10DetectorConstruction.cc.

1557 {
1558  // get the pointer to the material table
1559  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1560 
1561  // search the material by its name
1562  G4Material* pttoMaterial;
1563 
1564  for (size_t J=0 ; J<theMaterialTable->size() ; J++)
1565  {
1566  pttoMaterial = (*theMaterialTable)[J];
1567 
1568  if(pttoMaterial->GetName() == materialChoice)
1569  {
1570  fAbsorberMaterial = pttoMaterial;
1571  fLogicAbsorber->SetMaterial(pttoMaterial);
1572  // PrintCalorParameters();
1573  }
1574  }
1575 }
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:589
std::vector< G4Material * > G4MaterialTable
const G4String & GetName() const
Definition: G4Material.hh:178
void SetMaterial(G4Material *pMaterial)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetAbsorberRadius()

void Em10DetectorConstruction::SetAbsorberRadius ( G4double  val)

Definition at line 1653 of file Em10DetectorConstruction.cc.

1654 {
1655  // change the transverse size and recompute the calorimeter parameters
1656  fAbsorberRadius = val;
1657  // ComputeCalorParameters();
1658 }
Here is the caller graph for this function:

◆ SetAbsorberThickness()

void Em10DetectorConstruction::SetAbsorberThickness ( G4double  val)

Definition at line 1626 of file Em10DetectorConstruction.cc.

1627 {
1628  // change Absorber thickness and recompute the calorimeter parameters
1629  fAbsorberThickness = val;
1630  // ComputeCalorParameters();
1631 }
Here is the caller graph for this function:

◆ SetAbsorberZpos()

void Em10DetectorConstruction::SetAbsorberZpos ( G4double  val)

Definition at line 1680 of file Em10DetectorConstruction.cc.

1681 {
1682  fAbsorberZ = val;
1683  // ComputeCalorParameters();
1684 }
Here is the caller graph for this function:

◆ SetDetectorSetUp()

void Em10DetectorConstruction::SetDetectorSetUp ( G4String  s)
inline

Definition at line 78 of file Em10DetectorConstruction.hh.

78 {fSetUp = s;};
static const double s
Definition: G4SIunits.hh:168
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetFoilNumber()

void Em10DetectorConstruction::SetFoilNumber ( G4int  i)
inline

Definition at line 73 of file Em10DetectorConstruction.hh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetGasGapThickness()

void Em10DetectorConstruction::SetGasGapThickness ( G4double  val)

Definition at line 1644 of file Em10DetectorConstruction.cc.

1645 {
1646  // change XTR gas gap thickness and recompute the calorimeter parameters
1647  fGasGap = val;
1648  // ComputeCalorParameters();
1649 }
Here is the caller graph for this function:

◆ SetMagField()

void Em10DetectorConstruction::SetMagField ( G4double  )

Definition at line 1688 of file Em10DetectorConstruction.cc.

1689 {
1690  //apply a global uniform magnetic field along X axis
1691 
1692  /* *********************************************************
1693 
1694  G4FieldManager* fieldMgr
1695  = G4TransportationManager::GetTransportationManager()->GetFieldManager();
1696 
1697  if(magField) delete magField; //delete the existing magn field
1698 
1699  if(fieldValue!=0.) // create a new one if non null
1700  {
1701  magField = new G4UniformMagField(G4ThreeVector(fieldValue,0.,0.));
1702  fieldMgr->SetDetectorField(magField);
1703  fieldMgr->CreateChordFinder(magField);
1704  }
1705  else
1706  {
1707  magField = 0;
1708  fieldMgr->SetDetectorField(magField);
1709  }
1710 
1711  *************************************************************** */
1712 
1713 }
Here is the caller graph for this function:

◆ SetRadiatorMaterial()

void Em10DetectorConstruction::SetRadiatorMaterial ( G4String  materialChoice)

Definition at line 1579 of file Em10DetectorConstruction.cc.

1580 {
1581  // get the pointer to the material table
1582 
1583  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1584 
1585  // search the material by its name
1586 
1587  G4Material* pttoMaterial;
1588  for (size_t J=0 ; J<theMaterialTable->size() ; J++)
1589  {
1590  pttoMaterial = (*theMaterialTable)[J];
1591 
1592  if(pttoMaterial->GetName() == materialChoice)
1593  {
1594  fRadiatorMat = pttoMaterial;
1595 // fLogicRadSlice->SetMaterial(pttoMaterial);
1596  // PrintCalorParameters();
1597  }
1598  }
1599 }
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:589
std::vector< G4Material * > G4MaterialTable
const G4String & GetName() const
Definition: G4Material.hh:178
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetRadiatorThickness()

void Em10DetectorConstruction::SetRadiatorThickness ( G4double  val)

Definition at line 1635 of file Em10DetectorConstruction.cc.

1636 {
1637  // change XTR radiator thickness and recompute the calorimeter parameters
1638  fRadThickness = val;
1639  // ComputeCalorParameters();
1640 }
Here is the caller graph for this function:

◆ SetUpALICE06()

G4VPhysicalVolume * Em10DetectorConstruction::SetUpALICE06 ( )
private

Definition at line 312 of file Em10DetectorConstruction.cc.

313 {
314  fWorldSizeZ = 600.*cm;
315  fWorldSizeR = 22.*cm;
316 
317  // Radiator and detector parameters
318 
319  //fRadThickness = 0.01*mm; // Gamma XTR (malz: 0.01)
320  //fGasGap = 0.19*mm; // Gamma XTR (malz: 0.09)
321  //fFoilNumber = 240; // Gamma XTR (malz: 480)
322 
323  fRadThickness = 0.020*mm; // Reg1
324  fGasGap = 0.500*mm; // Reg1
325  fFoilNumber = 120; // Reg1
326 
327  //fRadThickness = 0.013*mm; // Anton
328  //fGasGap = 0.060*mm; // Anton
329  //fFoilNumber = 550; // Anton
330 
331  // fRadThickness = 0.020*mm; // Reg2
332  // fGasGap = 0.250*mm; // Reg2
333  // fFoilNumber = 220; // Reg2
334 
336 
337  fAbsorberThickness = 37.*mm; // 38.3*mm;
338 
339  fAbsorberRadius = 100.*mm;
340  fAbsorberZ = 136.*cm;
341 
342  fPipeLength = 160.0*cm;
343  fMylarThick = 20.0*micrometer;
344 
345  fWindowThick = 51.0*micrometer;
346  fElectrodeThick = 100.0*micrometer;
347  fGapThick = 10.0*cm;
348 
349  fDetThickness = 40.0*mm;
350  fDetLength = 200.0*cm;
351  fDetGap = 0.01*mm;
352 
353  fStartR = 40*cm;
354  fStartZ = 100.0*mm;
355 
356  fModuleNumber = 1;
357 
358  // Preparation of mixed radiator material
359 
360  G4Material* Mylar = fMat->GetMaterial("Mylar");
361  G4Material* Air = fMat->GetMaterial("Air");
362  G4Material* Al = fMat->GetMaterial("Al");
363  G4Material* CH2 = fMat->GetMaterial("CH2");
364  G4Material* He = fMat->GetMaterial("He");
365 
366  G4double foilDensity = CH2->GetDensity();
367  G4double gasDensity = Air->GetDensity();
368  G4double totDensity = foilDensity*foilGasRatio +
369  gasDensity*(1.0-foilGasRatio);
370 
371  G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
372  G4double fractionGas = 1.0 - fractionFoil;
373 // gasDensity*(1.0-foilGasRatio)/totDensity ;
374 
375  G4Material* radiatorMat = new G4Material("radiatorMat" , totDensity,
376  2);
377  radiatorMat->AddMaterial( CH2, fractionFoil );
378  radiatorMat->AddMaterial( Air, fractionGas );
379 
380  // default materials of the detector and TR radiator
381 
382  fRadiatorMat = radiatorMat;
383  fFoilMat = CH2; // Kapton; // Mylar ; // Li ; // CH2 ;
384  fGasMat = Air; // CO2; // He; //
385 
386  fWindowMat = Mylar;
387  fElectrodeMat = Al;
388 
389  fAbsorberMaterial = fMat->GetMaterial("Xe15CO2");
390 
391  // pipe material is assumed to be He + small admixture of air
392  /*
393  foilGasRatio = 0.000001;
394  foilDensity = Air->GetDensity();
395  gasDensity = He->GetDensity();
396  totDensity = foilDensity*foilGasRatio + gasDensity*( 1.0 - foilGasRatio );
397 
398  fractionFoil = foilDensity*foilGasRatio/totDensity;
399  fractionGas = 1.0 - fractionFoil;
400  // gasDensity*(1.0 - foilGasRatio)/totDensity;
401 
402  fPipeMat = new G4Material("pipeMat" , totDensity, 2);
403  fPipeMat->AddMaterial( Air, fractionFoil );
404  fPipeMat->AddMaterial( He, fractionGas );
405  */
406  fPipeMat = He;
407 
409 
411 
412  fSolidWorld = new G4Box("World", fWorldSizeR, fWorldSizeR, fWorldSizeZ/2.);
413 
415 
416  fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
417  fLogicWorld, 0, false, 0);
418 
419  // TR radiator envelope
420 
422 
423  fRadZ = fStartZ + 0.5*fRadThick;
424 
425  // fRadZ = -fRadThick/2. - fElectrodeThick;
426  // if ( fabs(pipe) > 1.e-15 ) fRadZ -= ( fPipeLength/2. + pipeDist );
427 
428  fSolidRadiator = new G4Box("Radiator",1.1*fAbsorberRadius ,
429  1.1*fAbsorberRadius, 0.5*fRadThick );
430 
432  "Radiator");
433 
435  G4ThreeVector(0,0,fRadZ),
436  "Radiator", fLogicRadiator,
437  fPhysicsWorld, false, 0 );
438 
439  // create region for radiator
440 
441  if( fRadRegion != 0 ) delete fRadRegion;
442  if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
444 
445  // Drift Electrode on both sides of Radiator:
446 
447  G4double zElectrode1 = fRadZ - fRadThick/2. - fElectrodeThick/2.;
448  G4double zElectrode2 = fRadZ + fRadThick/2. + fElectrodeThick/2.;
449  /*
450  G4Box* solidElectrode = new G4Box("Electrode",fAbsorberRadius*1.1,
451  fAbsorberRadius*1.1,
452  fElectrodeThick/2.);
453 
454  G4LogicalVolume* logicElectrode = new G4LogicalVolume(solidElectrode,
455  fElectrodeMat,
456  "Electrode");
457 
458  G4VPhysicalVolume* physiElectrode1 = new G4PVPlacement(0,
459  G4ThreeVector(0.,0.,zElectrode1),
460  "Electrode1",logicElectrode,
461  fPhysicsWorld,false,0);
462 
463  G4VPhysicalVolume* physiElectrode2 = new G4PVPlacement(0,
464  G4ThreeVector(0.,0.,zElectrode2),
465  "Electrode1",logicElectrode,
466  fPhysicsWorld,false,0);
467  */
468  G4cout<<"zElectrode1 = "<<zElectrode1/mm<<" mm"<<G4endl;
469  G4cout<<"zElectrode2 = "<<zElectrode2/mm<<" mm"<<G4endl;
470  G4cout<<"fElectrodeThick = "<<fElectrodeThick/mm<<" mm"<<G4endl<<G4endl;
471 
472  // Helium Pipe:
473 
474  //Distance between pipe and radiator / absorber
475  G4double pipeDist = 1.*cm;
476  G4double fieldStrength = 1.0*tesla; // 0.01*tesla; // field strength in pipe
477  G4double alphaB = 90.*degree;
478  fPipe = true; // 0.; // use helium pipe is setup
479 
480  fPipeField = true; // field in helium pipe used?
481 
482  G4double zPipe = zElectrode2 + fElectrodeThick/2. +
483  pipeDist/2. + fPipeLength/2.;
484 
485  if ( fPipe )
486  {
487 
488  G4Box* solidPipe = new G4Box("Pipe",fAbsorberRadius*0.5,
489  fAbsorberRadius*0.5,
490  fPipeLength/2. );
491 
492  G4LogicalVolume* logicPipe = new G4LogicalVolume(solidPipe,
493  fPipeMat, //fWorldMaterial
494  "Pipe");
495 
496  // G4VPhysicalVolume* physiPipe = new G4PVPlacement(0,
497  // G4ThreeVector(0., 0., zPipe),
498  // "Pipe1",logicPipe,
499  // fPhysicsWorld,false,0);
500 
501  G4cout<<"zPipe = "<<zPipe/mm<<" mm"<<G4endl;
502  G4cout<<"fPipeLength = "<<fPipeLength/mm<<" mm"<<G4endl<<G4endl;
503 
504  // magnetic field in Pipe:
505 
506  if ( fPipeField )
507  {
508  if( fMagField ) delete fMagField; //delete the existing mag field
509 
510  fMagField =
511  new G4UniformMagField(G4ThreeVector(fieldStrength*std::sin(alphaB),
512  0., fieldStrength*std::cos(alphaB)));
513  // fMagField = new G4UniformMagField(G4ThreeVector(fieldStrength,0.,0.));
514  // fMagField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldStrength));
515  G4FieldManager* fieldMgr = new G4FieldManager(fMagField);
516  fieldMgr->SetDetectorField(fMagField);
517  fieldMgr->CreateChordFinder(fMagField);
518  logicPipe->SetFieldManager(fieldMgr, true);
519  }
520 
521  }
522  else G4cout<<"No Helium pipe is used"<<G4endl<<G4endl;
523 
524  // Mylar Foil on both sides of helium pipe:
525 
526  G4double zMylar1 = zPipe - fPipeLength/2. - fMylarThick/2. - 0.001*mm;
527  G4double zMylar2 = zPipe + fPipeLength/2. + fMylarThick/2. + 0.001*mm;
528 
529  // G4Box* solidMylar = new G4Box("MylarB",fAbsorberRadius*0.6,
530  // fAbsorberRadius*0.6,
531  // fMylarThick/2.);
532 
533  // G4LogicalVolume* logicMylar = new G4LogicalVolume(solidMylar,
534  // fWindowMat,
535  // "MylarL");
536 
537  if ( fPipe )
538  {
539 
540  // G4VPhysicalVolume* physiMylar1 = new G4PVPlacement(0,
541  // G4ThreeVector( 0., 0., zMylar1),
542  // "Mylar1", logicMylar, fPhysicsWorld,
543  // false, 0);
544 
545  // G4VPhysicalVolume* physiMylar2 = new G4PVPlacement(0,
546  // G4ThreeVector(0., 0., zMylar2),
547  // "Mylar2", logicMylar, fPhysicsWorld,
548  // false, 0);
549 
550  G4cout<<"zMylar1 = "<<zMylar1/mm<<" mm"<<G4endl;
551  G4cout<<"zMylar2 = "<<zMylar2/mm<<" mm"<<G4endl;
552  G4cout<<"fMylarThick = "<<fMylarThick/mm<<" mm"<<G4endl<<G4endl;
553  }
554 
555  // Mylar Foil on Chamber:
556 
557  G4double zMylar = zElectrode2 + fElectrodeThick/2. + fMylarThick/2. + 1.0*mm;
558 
559  // if ( fPipe )
560  {
561  zMylar += ( fPipeLength + pipeDist );
562  }
563  // G4VPhysicalVolume* physiMylar = new G4PVPlacement(0,
564  // G4ThreeVector(0., 0., zMylar),
565  // "Mylar",logicMylar,fPhysicsWorld,false,0);
566 
567  G4cout<<"zMylar = "<<zMylar/mm<<" mm"<<G4endl;
568  G4cout<<"fMylarThick = "<<fMylarThick/mm<<" mm"<<G4endl<<G4endl;
569 
570  // Absorber
571 
572  fAbsorberZ = zMylar + fMylarThick + fAbsorberThickness/2.;
573 
574  fSolidAbsorber = new G4Box("Absorber",
576  // fAbsorberRadius,
577  // 10.*mm,
578  10.*mm,
579  fAbsorberThickness/2.);
580 
582  "Absorber");
583 
585  G4ThreeVector(0., 0., fAbsorberZ),
586  "Absorber", fLogicAbsorber,
587  fPhysicsWorld, false, 0);
588 
589  if( fRegGasDet != 0 ) delete fRegGasDet;
590  if( fRegGasDet == 0 ) fRegGasDet = new G4Region("XTRdEdxDetector");
592 
593  // Sensitive Detectors: Absorber
594 
596 
597  if(!fCalorimeterSD)
598  {
599  fCalorimeterSD = new Em10CalorimeterSD("CalorSD",this);
600  SDman->AddNewDetector( fCalorimeterSD );
601  }
603 
605 
606  return fPhysicsWorld;
607 }
static const double cm
Definition: G4SIunits.hh:118
G4Material * Air
Definition: TRTMaterials.hh:57
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:290
G4bool SetDetectorField(G4Field *detectorField)
void AddMaterial(G4Material *material, G4double fraction)
Definition: G4Material.cc:469
Definition: G4Box.hh:64
G4double GetDensity() const
Definition: G4Material.hh:180
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
G4GLOB_DLL std::ostream G4cout
G4Material * GetMaterial(const G4String &)
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static const double micrometer
Definition: G4SIunits.hh:99
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
static const double degree
Definition: G4SIunits.hh:143
#define G4endl
Definition: G4ios.hh:61
static const double tesla
Definition: G4SIunits.hh:265
double G4double
Definition: G4Types.hh:76
void CreateChordFinder(G4MagneticField *detectorMagField)
static const double mm
Definition: G4SIunits.hh:114
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4Material * Al
Definition: TRTMaterials.hh:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetUpBari05()

G4VPhysicalVolume * Em10DetectorConstruction::SetUpBari05 ( )
private

Definition at line 615 of file Em10DetectorConstruction.cc.

616 {
617  fWorldSizeZ = 600.*cm;
618  fWorldSizeR = 22.*cm;
619 
620  // Radiator and detector parameters
621 
622  //fRadThickness = 0.01*mm; // Gamma XTR (malz: 0.01)
623  //fGasGap = 0.19*mm; // Gamma XTR (malz: 0.09)
624  //fFoilNumber = 240; // Gamma XTR (malz: 480)
625 
626  //fRadThickness = 0.020*mm; // Reg1
627  //fGasGap = 0.500*mm; // Reg1
628  //fFoilNumber = 120; // Reg1
629 
630  //fRadThickness = 0.013*mm; // Anton
631  //fGasGap = 0.230*mm; // Anton
632  //fFoilNumber = 550; // Anton
633 
634  fRadThickness = 0.0055*mm; // Reg2
635  fGasGap = 0.23*mm; // Reg2
636  fFoilNumber = 191; // Reg2
637 
639 
640  fAbsorberThickness = 0.4*mm;
641 
642  fAbsorberRadius = 100.*mm;
643  fAbsorberZ = 136.*cm;
644 
645  fPipeLength = 50.0*cm;
646  fMylarThick = 20.0*micrometer;
647 
648  fWindowThick = 51.0*micrometer;
649  fElectrodeThick = 100.0*micrometer;
650  fGapThick = 10.0*cm;
651 
652  fDetThickness = 40.0*mm;
653  fDetLength = 200.0*cm;
654  fDetGap = 0.01*mm;
655 
656  fStartR = 40*cm;
657  fStartZ = 100.0*mm;
658 
659  fModuleNumber = 1;
660 
661  // Preparation of mixed radiator material
662 
663  G4Material* Mylar = fMat->GetMaterial("Mylar");
664  G4Material* Air = fMat->GetMaterial("Air");
665  G4Material* Al = fMat->GetMaterial("Al");
666  G4Material* CH2 = fMat->GetMaterial("CH2");
667  G4Material* He = fMat->GetMaterial("He");
668 
669  G4double foilDensity = 0.91*g/cm3;
670  // CH2 1.39*g/cm3; // Mylar // 0.534*g/cm3; //Li
671  G4double gasDensity = 1.2928*mg/cm3;
672  // Air // 1.977*mg/cm3; // CO2 0.178*mg/cm3; // He
673  G4double totDensity = foilDensity*foilGasRatio +
674  gasDensity*(1.0-foilGasRatio);
675 
676  G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
677  G4double fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
678 
679  G4Material* radiatorMat = new G4Material("radiatorMat" , totDensity,
680  2);
681  radiatorMat->AddMaterial( CH2, fractionFoil );
682  radiatorMat->AddMaterial( Air, fractionGas );
683 
684  // default materials of the detector and TR radiator
685 
686  fRadiatorMat = radiatorMat;
687  fFoilMat = CH2; // Kapton; // Mylar ; // Li ; // CH2 ;
688  fGasMat = Air; // CO2; // He; //
689 
690  fWindowMat = Mylar;
691  fElectrodeMat = Al;
692 
694 
695  // pipe material is assumed to be He + small admixture of air
696 
697  foilGasRatio = 0.99999;
698  foilDensity = 1.2928*mg/cm3; // Air
699  gasDensity = 0.178*mg/cm3; // He
700  totDensity = foilDensity*foilGasRatio + gasDensity*(1.0-foilGasRatio);
701 
702  fractionFoil = foilDensity*foilGasRatio/totDensity;
703  fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
704 
705  fPipeMat = new G4Material("pipeMat" , totDensity, 2);
706  fPipeMat->AddMaterial( Air, fractionFoil );
707  fPipeMat->AddMaterial( He, fractionGas );
708 
709  // fPipeMat = He;
710 
712 
714 
716 
718 
719  fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
720  fLogicWorld, 0, false, 0);
721 
722  // TR radiator envelope
723 
725 
726  fRadZ = fStartZ + 0.5*fRadThick;
727  // fRadZ = -fRadThick/2. - fElectrodeThick;
728  // if ( fabs(pipe) > 1.e-15 ) fRadZ -= ( fPipeLength/2. + pipeDist );
729 
730  fSolidRadiator = new G4Box("Radiator",1.1*fAbsorberRadius ,
731  1.1*fAbsorberRadius, 0.5*fRadThick );
732 
734  "Radiator");
735 
737  G4ThreeVector(0,0,fRadZ),
738  "Radiator", fLogicRadiator,
739  fPhysicsWorld, false, 0 );
740 
741  // create region for radiator
742 
743  if( fRadRegion != 0 ) delete fRadRegion;
744  if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
746 
747  // Drift Electrode on both sides of Radiator:
748 
749  // G4Box* solidElectrode = new G4Box("Electrode",fAbsorberRadius*1.1,
750  // fAbsorberRadius*1.1,
751  // fElectrodeThick/2.);
752 
753  // G4LogicalVolume* logicElectrode = new G4LogicalVolume(solidElectrode,
754  // fElectrodeMat,
755  // "Electrode");
756 
757  G4double zElectrode1 = fRadZ - fRadThick/2. - fElectrodeThick/2.;
758  G4double zElectrode2 = fRadZ + fRadThick/2. + fElectrodeThick/2.;
759 
760  // G4VPhysicalVolume* physiElectrode1 = new G4PVPlacement(0,
761  // G4ThreeVector(0.,0.,zElectrode1),
762  // "Electrode1",logicElectrode,
763  // fPhysicsWorld,false,0);
764 
765  // G4VPhysicalVolume* physiElectrode2 = new G4PVPlacement(0,
766  // G4ThreeVector(0.,0.,zElectrode2),
767  // "Electrode1",logicElectrode,
768  // fPhysicsWorld,false,0);
769 
770  G4cout<<"zElectrode1 = "<<zElectrode1/mm<<" mm"<<G4endl;
771  G4cout<<"zElectrode2 = "<<zElectrode2/mm<<" mm"<<G4endl;
772  G4cout<<"fElectrodeThick = "<<fElectrodeThick/mm<<" mm"<<G4endl<<G4endl;
773 
774  // Helium Pipe:
775 
776  G4double pipe = 1.0; // use helium pipe is setup
777 
778  G4double pipeDist = 1.*cm; //Distance between pipe and radiator / absorber
779 
780  G4double zPipe = zElectrode2 + fElectrodeThick/2. +
781  fPipeLength/2. + pipeDist/2.;
782 
783  // G4double field = 1.0; // field in helium pipe used?
784  // G4double fieldStrength = 1.0*tesla; // field strength in pipe
785 
786  if ( std::fabs(pipe) > 1.e-15 )
787  {
788 
789  // G4Box* solidPipe = new G4Box("Pipe",fAbsorberRadius*0.5,
790  // fAbsorberRadius*0.5,
791  // fPipeLength/2. );
792 
793  // G4LogicalVolume* logicPipe = new G4LogicalVolume(solidPipe,
794  // fPipeMat,
795  // "Pipe");
796 
797  // magnetic field in Pipe:
798  // if( fMagField ) delete fMagField; //delete the existing mag field
799  // fMagField = new G4UniformMagField(G4ThreeVector(fieldStrength,0.,0.));
800  // G4FieldManager* fieldMgr= new G4FieldManager(fMagField);
801  // fieldMgr->SetDetectorField(fMagField);
802  // fieldMgr->CreateChordFinder(fMagField);
803  // if ( fabs(field) > 1.e-15 ) logicPipe->SetFieldManager(fieldMgr, true);
804 
805  // G4VPhysicalVolume* physiPipe = new G4PVPlacement(0,
806  // G4ThreeVector(0.,0.,zPipe),
807  // "Pipe1",logicPipe,
808  // fPhysicsWorld,false,0);
809 
810  G4cout<<"zPipe = "<<zPipe/mm<<" mm"<<G4endl;
811  G4cout<<"fPipeLength = "<<fPipeLength/mm<<" mm"<<G4endl<<G4endl;
812 
813  }
814  else G4cout<<"No Helium pipe is used"<<G4endl<<G4endl;
815 
816  // Mylar Foil on both sides of helium pipe:
817 
818  G4double zMylar1 = zPipe - fPipeLength/2. - fMylarThick/2 - 0.01*mm;
819  G4double zMylar2 = zPipe + fPipeLength/2. + fMylarThick/2 + 0.01*mm;
820 
821  // G4Box* solidMylar = new G4Box("Mylar",fAbsorberRadius*0.6,
822  // fAbsorberRadius*0.6,
823  // fMylarThick/2.);
824 
825  // G4LogicalVolume* logicMylar = new G4LogicalVolume(solidMylar,
826  // fWindowMat,
827  // "Mylar");
828 
829  if ( std::fabs(pipe) > 1.e-15 )
830  {
831 
832  // G4VPhysicalVolume* physiMylar1 = new G4PVPlacement(0,
833  // G4ThreeVector( 0., 0., zMylar1),
834  // "Mylar1", logicMylar, fPhysicsWorld,
835  // false, 0);
836 
837  // G4VPhysicalVolume* physiMylar2 = new G4PVPlacement(0,
838  // G4ThreeVector(0.,0.,zMylar2),
839  // "Mylar2", logicMylar, fPhysicsWorld,
840  // false, 0);
841 
842  G4cout<<"zMylar1 = "<<zMylar1/mm<<" mm"<<G4endl;
843  G4cout<<"zMylar2 = "<<zMylar2/mm<<" mm"<<G4endl;
844  G4cout<<"fMylarThick = "<<fMylarThick/mm<<" mm"<<G4endl<<G4endl;
845 
846  }
847 
848  // Mylar Foil on Chamber:
849 
850  G4double zMylar = zElectrode2 + fElectrodeThick/2. + fMylarThick/2. + 1.0*mm;
851 
852  if ( std::fabs(pipe) > 1.e-15 ) zMylar += ( fPipeLength + pipeDist );
853 
854  // G4VPhysicalVolume* physiMylar = new G4PVPlacement(0,
855  // G4ThreeVector(0.,0.,zMylar),
856  // "Mylar",logicMylar,fPhysicsWorld,false,0);
857 
858  G4cout<<"zMylar = "<<zMylar/mm<<" mm"<<G4endl;
859  G4cout<<"fMylarThick = "<<fMylarThick/mm<<" mm"<<G4endl<<G4endl;
860 
861  // Absorber
862 
863  fAbsorberZ = zMylar + fMylarThick/2. + fAbsorberThickness/2.;
864 
865  fSolidAbsorber = new G4Box("Absorber",
866  // fAbsorberRadius, fAbsorberRadius,
867  10.*mm,10.*mm,
868  fAbsorberThickness/2.);
869 
871  "Absorber");
872 
874  "Absorber", fLogicAbsorber,
875  fPhysicsWorld, false, 0);
876 
877  if( fRegGasDet != 0 ) delete fRegGasDet;
878  if( fRegGasDet == 0 ) fRegGasDet = new G4Region("XTRdEdxDetector");
880 
881  // Sensitive Detectors: Absorber
882 
884 
885  if(!fCalorimeterSD)
886  {
887  fCalorimeterSD = new Em10CalorimeterSD("CalorSD",this);
888  SDman->AddNewDetector( fCalorimeterSD );
889  }
891 
893 
894  return fPhysicsWorld;
895 }
static const double cm
Definition: G4SIunits.hh:118
G4Material * Air
Definition: TRTMaterials.hh:57
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:290
Definition: G4Box.hh:64
static const double mg
Definition: G4SIunits.hh:181
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5206
G4GLOB_DLL std::ostream G4cout
static const double cm3
Definition: G4SIunits.hh:120
G4Material * GetMaterial(const G4String &)
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static const double micrometer
Definition: G4SIunits.hh:99
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
static const double mm
Definition: G4SIunits.hh:114
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4Material * Al
Definition: TRTMaterials.hh:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetUpBarr90()

G4VPhysicalVolume * Em10DetectorConstruction::SetUpBarr90 ( )
private

Definition at line 1233 of file Em10DetectorConstruction.cc.

1234 {
1235  fWorldSizeZ = 400.*cm;
1236  fWorldSizeR = 20.*cm;
1237 
1238  // Radiator and detector parameters
1239 
1240  fRadThickness = 0.019*mm;
1241  fGasGap = 0.6*mm;
1243 
1244  fFoilNumber = 350;
1245 
1246  fAbsorberThickness = 50.0*mm;
1247 
1248  fAbsorberRadius = 100.*mm;
1249  fAbsorberZ = 136.*cm;
1250 
1251  fWindowThick = 51.0*micrometer;
1252  fElectrodeThick = 10.0*micrometer;
1253  fGapThick = 10.0*cm;
1254 
1255  fDetThickness = 50.0*mm;
1256  fDetLength = 200.0*cm;
1257  fDetGap = 0.01*mm;
1258 
1259  fStartR = 40*cm;
1260  fStartZ = 100.0*mm;
1261 
1262  fModuleNumber = 1;
1263 
1264  // Preparation of mixed radiator material
1265 
1266  G4Material* CH2 = fMat->GetMaterial("CH2");
1267  G4Material* CO2 = fMat->GetMaterial("CO2");
1268  G4Material* Air = fMat->GetMaterial("Air");
1269  G4Material* Al = fMat->GetMaterial("Al");
1270  G4Material* Mylar = fMat->GetMaterial("Mylar");
1271 
1272  G4double foilDensity = 0.91*g/cm3;
1273  // CH21.39*g/cm3; // Mylar // 0.534*g/cm3; //Li
1274  G4double gasDensity = 1.977*mg/cm3;
1275  // CO2 1.2928*mg/cm3; // Air // 0.178*mg/cm3; // He
1276 
1277  G4double totDensity = foilDensity*foilGasRatio +
1278  gasDensity*(1.0-foilGasRatio);
1279 
1280  G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
1281  G4double fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
1282 
1283  G4Material* radiatorMat = new G4Material("radiatorMat" , totDensity,
1284  2);
1285  radiatorMat->AddMaterial( CH2, fractionFoil );
1286  radiatorMat->AddMaterial( CO2, fractionGas );
1287 
1288  // default materials of the detector and TR radiator
1289 
1290  fRadiatorMat = radiatorMat;
1291  fFoilMat = CH2;
1292  fGasMat = CO2;
1293 
1294  fWindowMat = Mylar;
1295  fElectrodeMat = Al;
1296 
1297  fAbsorberMaterial = fMat->GetMaterial("Xe55He15CH4");
1298 
1300 
1301  fWorldMaterial = Air; // CO2; //
1302 
1304 
1306 
1307  fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
1308  fLogicWorld, 0, false, 0);
1309 
1310  // TR radiator envelope
1311 
1313 
1314  fRadZ = fStartZ + 0.5*fRadThick;
1315 
1316  fSolidRadiator = new G4Box("Radiator",1.1*fAbsorberRadius ,
1317  1.1*fAbsorberRadius, 0.5*fRadThick );
1318 
1320  "Radiator");
1321 
1323  G4ThreeVector(0,0,fRadZ),
1324  "Radiator", fLogicRadiator,
1325  fPhysicsWorld, false, 0 );
1326 
1327  // create region for window inside windowR for
1328 
1329  if( fRadRegion != 0 ) delete fRadRegion;
1330  if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
1332 
1333  fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm;
1334 
1335  // G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
1336  // fAbsorberRadius+0.001,
1337  // fWindowThick/2.+0.001 );
1338 
1339  // G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
1340  // fWorldMaterial, "WindowR");
1341  //
1342  // G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
1343  // G4ThreeVector(0.,0.,fWindowZ),
1344  // "WindowR",logicWindowR,fPhysicsWorld,false,0);
1345  // window
1346 
1347  // G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
1348  // fAbsorberRadius, fWindowThick/2.);
1349 
1350  // G4LogicalVolume* logicWindow = new G4LogicalVolume(solidWindow,
1351  // fWindowMat, "Window");
1352 
1353  // G4VPhysicalVolume* physiWindow =
1354  // new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),
1355  // "Window", logicWindow, physiWindowR, false, 0);
1356 
1357  fGapZ = fWindowZ + fWindowThick/2. + fGapThick/2. + 0.01*mm;
1358 
1359  fElectrodeZ = fGapZ + fGapThick/2. + fElectrodeThick/2. + 0.01*mm;
1360 
1361  // Absorber
1362 
1364  fAbsorberThickness/2. + 0.01*mm;
1365 
1366  fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
1368 
1370  "Absorber");
1371 
1373  "Absorber", fLogicAbsorber,
1374  fPhysicsWorld, false, 0);
1375 
1376  if( fRegGasDet != 0 ) delete fRegGasDet;
1377  if( fRegGasDet == 0 ) fRegGasDet = new G4Region("XTRdEdxDetector");
1379 
1380  // Sensitive Detectors: Absorber
1381 
1383 
1384  if(!fCalorimeterSD)
1385  {
1386  fCalorimeterSD = new Em10CalorimeterSD("CalorSD",this);
1387  SDman->AddNewDetector( fCalorimeterSD );
1388  }
1390 
1392 
1393  return fPhysicsWorld;
1394 }
static const double cm
Definition: G4SIunits.hh:118
G4Material * Air
Definition: TRTMaterials.hh:57
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:290
Definition: G4Box.hh:64
static const double mg
Definition: G4SIunits.hh:181
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5206
static const double cm3
Definition: G4SIunits.hh:120
G4Material * GetMaterial(const G4String &)
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static const double micrometer
Definition: G4SIunits.hh:99
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
double G4double
Definition: G4Types.hh:76
G4Material * CO2
Definition: TRTMaterials.hh:81
static const double mm
Definition: G4SIunits.hh:114
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4Material * Al
Definition: TRTMaterials.hh:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetUpHarris73()

G4VPhysicalVolume * Em10DetectorConstruction::SetUpHarris73 ( )
private

Definition at line 901 of file Em10DetectorConstruction.cc.

902 {
903  fWorldSizeZ = 400.*cm;
904  fWorldSizeR = 20.*cm;
905 
906  // Radiator and detector parameters
907 
908  fRadThickness = 0.0127*mm;
909  fGasGap = 0.762*mm;
911 
912  fFoilNumber = 100;
913 
914  fAbsorberThickness = 15.0*mm;
915 
916  fAbsorberRadius = 100.*mm;
917  fAbsorberZ = 136.*cm;
918 
919  fWindowThick = 51.0*micrometer;
921  fGapThick = 10.0*cm;
922 
923  fDetThickness = 40.0*mm;
924  fDetLength = 200.0*cm;
925  fDetGap = 0.01*mm;
926 
927  fStartR = 40*cm;
928  fStartZ = 100.0*mm;
929 
930  fModuleNumber = 1;
931 
932  // Preparation of mixed radiator material
933 
934  G4Material* Mylar = fMat->GetMaterial("Mylar");
935  G4Material* Air = fMat->GetMaterial("Air");
936  G4Material* Al = fMat->GetMaterial("Al");
937 
938  G4double foilDensity = 1.39*g/cm3;
939  // Mylar // 0.91*g/cm3; // CH2 0.534*g/cm3; //Li
940  G4double gasDensity = 1.2928*mg/cm3;
941  // Air // 1.977*mg/cm3; // CO2 0.178*mg/cm3; // He
942 
943  G4double totDensity = foilDensity*foilGasRatio +
944  gasDensity*(1.0-foilGasRatio);
945 
946  G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
947  G4double fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
948 
949  G4Material* radiatorMat = new G4Material("radiatorMat" , totDensity,
950  2);
951  radiatorMat->AddMaterial( Mylar, fractionFoil );
952  radiatorMat->AddMaterial( Air, fractionGas );
953 
954  // default materials of the detector and TR radiator
955 
956  fRadiatorMat = radiatorMat;
957  fFoilMat = Mylar;
958  fGasMat = Air;
959 
960  fWindowMat = Mylar;
961  fElectrodeMat = Al;
962 
963  fAbsorberMaterial = fMat->GetMaterial("Kr7CH4");
964 
966 
967  fWorldMaterial = Air; // CO2;
968 
970 
972 
973  fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
974  fLogicWorld, 0, false, 0);
975 
976  // TR radiator envelope
977 
979 
980  fRadZ = fStartZ + 0.5*fRadThick;
981 
982  fSolidRadiator = new G4Box("Radiator",1.1*fAbsorberRadius ,
983  1.1*fAbsorberRadius, 0.5*fRadThick );
984 
986  "Radiator");
987 
989  G4ThreeVector(0,0,fRadZ),
990  "Radiator", fLogicRadiator,
991  fPhysicsWorld, false, 0 );
992 
993  // create region for window inside windowR for
994 
995  if( fRadRegion != 0 ) delete fRadRegion;
996  if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
998 
999  fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm;
1000 
1001  // G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
1002  // fAbsorberRadius+0.001,
1003  // fWindowThick/2.+0.001 );
1004 
1005  // G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
1006  // fWorldMaterial, "WindowR");
1007 
1008  // G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
1009  // G4ThreeVector(0.,0.,fWindowZ),
1010  // "WindowR",logicWindowR,fPhysicsWorld,false,0);
1011  // window
1012 
1013  // G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
1014  // fAbsorberRadius, fWindowThick/2.);
1015 
1016  // G4LogicalVolume* logicWindow = new G4LogicalVolume(solidWindow,
1017  // fWindowMat, "Window");
1018 
1019  // G4VPhysicalVolume* physiWindow =
1020  // new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),
1021  // "Window", logicWindow, physiWindowR, false, 0);
1022 
1023  fGapZ = fWindowZ + fWindowThick/2. + fGapThick/2. + 0.01*mm;
1024 
1025  fElectrodeZ = fGapZ + fGapThick/2. + fElectrodeThick/2. + 0.01*mm;
1026 
1027  // Absorber
1028 
1030  fAbsorberThickness/2. + 0.01*mm;
1031 
1032  fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
1034 
1036  "Absorber");
1037 
1039  "Absorber", fLogicAbsorber,
1040  fPhysicsWorld, false, 0);
1041 
1042  if( fRegGasDet != 0 ) delete fRegGasDet;
1043  if( fRegGasDet == 0 ) fRegGasDet = new G4Region("XTRdEdxDetector");
1045 
1046  // Sensitive Detectors: Absorber
1047 
1049 
1050  if(!fCalorimeterSD)
1051  {
1052  fCalorimeterSD = new Em10CalorimeterSD("CalorSD",this);
1053  SDman->AddNewDetector( fCalorimeterSD );
1054  }
1056 
1058 
1059  return fPhysicsWorld;
1060 }
static const double cm
Definition: G4SIunits.hh:118
G4Material * Air
Definition: TRTMaterials.hh:57
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:290
Definition: G4Box.hh:64
static const double mg
Definition: G4SIunits.hh:181
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5206
static const double cm3
Definition: G4SIunits.hh:120
G4Material * GetMaterial(const G4String &)
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static const double micrometer
Definition: G4SIunits.hh:99
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
double G4double
Definition: G4Types.hh:76
static const double mm
Definition: G4SIunits.hh:114
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4Material * Al
Definition: TRTMaterials.hh:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetUpWatase86()

G4VPhysicalVolume * Em10DetectorConstruction::SetUpWatase86 ( )
private

Definition at line 1066 of file Em10DetectorConstruction.cc.

1067 {
1068  fWorldSizeZ = 400.*cm;
1069  fWorldSizeR = 20.*cm;
1070 
1071  // Radiator and detector parameters
1072 
1073  fRadThickness = 0.04*mm;
1074  fGasGap = 0.126*mm;
1076 
1077  fFoilNumber = 300;
1078 
1079  fAbsorberThickness = 30.0*mm;
1080 
1081  fAbsorberRadius = 100.*mm;
1082  fAbsorberZ = 136.*cm;
1083 
1084  fWindowThick = 51.0*micrometer;
1085  fElectrodeThick = 10.0*micrometer;
1086  fGapThick = 10.0*cm;
1087 
1088  fDetThickness = 30.0*mm;
1089  fDetLength = 200.0*cm;
1090  fDetGap = 0.01*mm;
1091 
1092  fStartR = 40*cm;
1093  fStartZ = 100.0*mm;
1094 
1095  fModuleNumber = 1;
1096 
1097  // Preparation of mixed radiator material
1098 
1099  G4Material* Li = fMat->GetMaterial("Li");
1100  // G4Material* Air = fMat->GetMaterial("Air");
1101  G4Material* He = fMat->GetMaterial("He");
1102  G4Material* Al = fMat->GetMaterial("Al");
1103  G4Material* Mylar = fMat->GetMaterial("Mylar");
1104 
1105  G4double foilDensity = 0.534*g/cm3;
1106  //Li 1.39*g/cm3; // Mylar 0.91*g/cm3; // CH2
1107  G4double gasDensity = 0.178*mg/cm3;
1108  // He 1.2928*mg/cm3; // Air // 1.977*mg/cm3; // CO2
1109 
1110  G4double totDensity = foilDensity*foilGasRatio +
1111  gasDensity*(1.0-foilGasRatio);
1112 
1113  G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
1114  G4double fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
1115 
1116  G4Material* radiatorMat = new G4Material("radiatorMat" , totDensity,
1117  2);
1118  radiatorMat->AddMaterial( Li, fractionFoil );
1119  radiatorMat->AddMaterial( He, fractionGas );
1120 
1121  // default materials of the detector and TR radiator
1122 
1123  fRadiatorMat = radiatorMat;
1124  fFoilMat = Li;
1125  fGasMat = He;
1126 
1127  fWindowMat = Mylar;
1128  fElectrodeMat = Al;
1129 
1130  fAbsorberMaterial = fMat->GetMaterial("Xe10CH4");
1131 
1133 
1134  fWorldMaterial = He; // Air; // CO2 ;
1135 
1137 
1139 
1140  fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
1141  fLogicWorld, 0, false, 0);
1142 
1143  // TR radiator envelope
1144 
1146 
1147  fRadZ = fStartZ + 0.5*fRadThick;
1148 
1149  fSolidRadiator = new G4Box("Radiator",1.1*fAbsorberRadius ,
1150  1.1*fAbsorberRadius, 0.5*fRadThick );
1151 
1153  "Radiator");
1154 
1156  G4ThreeVector(0,0,fRadZ),
1157  "Radiator", fLogicRadiator,
1158  fPhysicsWorld, false, 0 );
1159 
1160  // create region for window inside windowR for
1161 
1162  if( fRadRegion != 0 ) delete fRadRegion;
1163  if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
1165 
1166  fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm;
1167 
1168  // G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
1169  // fAbsorberRadius+0.001,
1170  // fWindowThick/2.+0.001 );
1171 
1172  // G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
1173  // fWorldMaterial, "WindowR");
1174 
1175  // G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
1176  // G4ThreeVector(0.,0.,fWindowZ),
1177  // "WindowR",logicWindowR,fPhysicsWorld,false,0);
1178  // window
1179 
1180  // G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
1181  // fAbsorberRadius, fWindowThick/2.);
1182 
1183  // G4LogicalVolume* logicWindow = new G4LogicalVolume(solidWindow,
1184  // fWindowMat, "Window");
1185 
1186  // G4VPhysicalVolume* physiWindow =
1187  // new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),
1188  // "Window", logicWindow, physiWindowR, false, 0);
1189 
1190  fGapZ = fWindowZ + fWindowThick/2. + fGapThick/2. + 0.01*mm;
1191 
1192  fElectrodeZ = fGapZ + fGapThick/2. + fElectrodeThick/2. + 0.01*mm;
1193 
1194  // Absorber
1195 
1197  fAbsorberThickness/2. + 0.01*mm;
1198 
1199  fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
1201 
1203  "Absorber");
1204 
1206  "Absorber", fLogicAbsorber,
1207  fPhysicsWorld, false, 0);
1208 
1209  if( fRegGasDet != 0 ) delete fRegGasDet;
1210  if( fRegGasDet == 0 ) fRegGasDet = new G4Region("XTRdEdxDetector");
1212 
1213  // Sensitive Detectors: Absorber
1214 
1216 
1217  if(!fCalorimeterSD)
1218  {
1219  fCalorimeterSD = new Em10CalorimeterSD("CalorSD",this);
1220  SDman->AddNewDetector( fCalorimeterSD );
1221  }
1223 
1225 
1226  return fPhysicsWorld;
1227 }
static const double cm
Definition: G4SIunits.hh:118
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:290
Definition: G4Box.hh:64
static const double mg
Definition: G4SIunits.hh:181
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5206
static const double cm3
Definition: G4SIunits.hh:120
G4Material * GetMaterial(const G4String &)
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static const double micrometer
Definition: G4SIunits.hh:99
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
double G4double
Definition: G4Types.hh:76
static const double mm
Definition: G4SIunits.hh:114
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4Material * Al
Definition: TRTMaterials.hh:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWorldMaterial()

void Em10DetectorConstruction::SetWorldMaterial ( G4String  materialChoice)

Definition at line 1603 of file Em10DetectorConstruction.cc.

1604 {
1605  // get the pointer to the material table
1606  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1607 
1608  // search the material by its name
1609  G4Material* pttoMaterial;
1610 
1611  for (size_t J=0 ; J<theMaterialTable->size() ; J++)
1612  {
1613  pttoMaterial = (*theMaterialTable)[J];
1614 
1615  if(pttoMaterial->GetName() == materialChoice)
1616  {
1617  fWorldMaterial = pttoMaterial;
1618  fLogicWorld->SetMaterial(pttoMaterial);
1619  // PrintCalorParameters();
1620  }
1621  }
1622 }
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:589
std::vector< G4Material * > G4MaterialTable
const G4String & GetName() const
Definition: G4Material.hh:178
void SetMaterial(G4Material *pMaterial)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWorldSizeR()

void Em10DetectorConstruction::SetWorldSizeR ( G4double  val)

Definition at line 1671 of file Em10DetectorConstruction.cc.

1672 {
1673  fWorldChanged=true;
1674  fWorldSizeR = val;
1675  // ComputeCalorParameters();
1676 }
Here is the caller graph for this function:

◆ SetWorldSizeZ()

void Em10DetectorConstruction::SetWorldSizeZ ( G4double  val)

Definition at line 1662 of file Em10DetectorConstruction.cc.

1663 {
1664  fWorldChanged=true;
1665  fWorldSizeZ = val;
1666  // ComputeCalorParameters();
1667 }
Here is the caller graph for this function:

◆ SimpleSetUpALICE()

G4VPhysicalVolume * Em10DetectorConstruction::SimpleSetUpALICE ( )
private

Definition at line 147 of file Em10DetectorConstruction.cc.

148 {
149  fWorldSizeZ = 400.*cm;
150  fWorldSizeR = 20.*cm;
151 
152  // Radiator and detector parameters
153 
154  fRadThickness = 0.020*mm;
155  fGasGap = 0.250*mm;
157 
158  fFoilNumber = 220;
159 
160  fAbsorberThickness = 38.3*mm;
161 
162  fAbsorberRadius = 100.*mm;
163  fAbsorberZ = 136.*cm;
164 
165  fWindowThick = 51.0*micrometer;
167  fGapThick = 10.0*cm;
168 
169  fDetThickness = 40.0*mm;
170  fDetLength = 200.0*cm;
171  fDetGap = 0.01*mm;
172 
173  fStartR = 40*cm;
174  fStartZ = 100.0*mm;
175 
176  fModuleNumber = 1;
177 
178  // Preparation of mixed radiator material
179 
180  G4Material* Mylar = fMat->GetMaterial("Mylar");
181  G4Material* Air = fMat->GetMaterial("Air");
182  G4Material* Al = fMat->GetMaterial("Al");
183 
184  G4double foilDensity = 1.39*g/cm3;
185  // Mylar // 0.91*g/cm3; // CH2 0.534*g/cm3; //Li
186  G4double gasDensity = 1.2928*mg/cm3;
187  // Air // 1.977*mg/cm3; // CO2 0.178*mg/cm3; //He
188  G4double totDensity = foilDensity*foilGasRatio +
189  gasDensity*(1.0-foilGasRatio);
190 
191  G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
192  G4double fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
193 
194  G4Material* radiatorMat = new G4Material("radiatorMat" , totDensity,
195  2);
196  radiatorMat->AddMaterial( Mylar, fractionFoil );
197  radiatorMat->AddMaterial( Air, fractionGas );
198 
199  // default materials of the detector and TR radiator
200 
201  fRadiatorMat = radiatorMat;
202  fFoilMat = Mylar; // CH2; // Kapton; // Mylar ; // Li ; // CH2 ;
203  fGasMat = Air; // CO2; // He; //
204 
205  fWindowMat = Mylar;
206  fElectrodeMat = Al;
207 
208  fAbsorberMaterial = fMat->GetMaterial("Xe15CO2");
209 
211 
212  fWorldMaterial = Air; // CO2;
213 
215 
217 
218  fPhysicsWorld = new G4PVPlacement(0, G4ThreeVector(), "World",
219  fLogicWorld, 0, false, 0);
220 
221  // TR radiator envelope
222 
224 
225  fRadZ = fStartZ + 0.5*fRadThick;
226 
227  fSolidRadiator = new G4Box("Radiator",1.1*fAbsorberRadius ,
228  1.1*fAbsorberRadius, 0.5*fRadThick );
229 
231  "Radiator");
232 
234  G4ThreeVector(0,0,fRadZ),
235  "Radiator", fLogicRadiator,
236  fPhysicsWorld, false, 0 );
237 
238  // create region for window inside windowR for
239 
240  if( fRadRegion != 0 ) delete fRadRegion;
241  if( fRadRegion == 0 ) fRadRegion = new G4Region("XTRradiator");
243 
244  fWindowZ = fStartZ + fRadThick + fWindowThick/2. + 15.0*mm;
245 
246  // G4Box* solidWindowR = new G4Box("WindowR",fAbsorberRadius+0.001,
247  // fAbsorberRadius+0.001,
248  // fWindowThick/2.+0.001 );
249 
250  // G4LogicalVolume* logicWindowR = new G4LogicalVolume(solidWindowR,
251  // fWorldMaterial, "WindowR");
252 
253  // G4VPhysicalVolume* physiWindowR = new G4PVPlacement(0,
254  // G4ThreeVector(0.,0.,fWindowZ),
255  // "WindowR",logicWindowR,fPhysicsWorld,false,0);
256  // window
257 
258  // G4Box* solidWindow = new G4Box("Window",fAbsorberRadius,
259  // fAbsorberRadius, fWindowThick/2.);
260 
261  // G4LogicalVolume* logicWindow = new G4LogicalVolume(solidWindow,
262  // fWindowMat, "Window");
263 
264  // G4VPhysicalVolume* physiWindow =
265  // new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),
266  // "Window", logicWindow, physiWindowR, false, 0);
267 
268  fGapZ = fWindowZ + fWindowThick/2. + fGapThick/2. + 0.01*mm;
269 
270  fElectrodeZ = fGapZ + fGapThick/2. + fElectrodeThick/2. + 0.01*mm;
271 
272  // Absorber
273 
275  fAbsorberThickness/2. + 0.01*mm;
276 
277  fSolidAbsorber = new G4Box("Absorber", fAbsorberRadius,
279 
281  "Absorber");
282 
284  "Absorber", fLogicAbsorber,
285  fPhysicsWorld, false, 0);
286 
287  if( fRegGasDet != 0 ) delete fRegGasDet;
288  if( fRegGasDet == 0 ) fRegGasDet = new G4Region("XTRdEdxDetector");
290 
291  // Sensitive Detectors: Absorber
292 
294 
295  if(!fCalorimeterSD)
296  {
297  fCalorimeterSD = new Em10CalorimeterSD("CalorSD",this);
298  SDman->AddNewDetector( fCalorimeterSD );
299  }
301 
303 
304  return fPhysicsWorld;
305 }
static const double cm
Definition: G4SIunits.hh:118
G4Material * Air
Definition: TRTMaterials.hh:57
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:290
Definition: G4Box.hh:64
static const double mg
Definition: G4SIunits.hh:181
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5206
static const double cm3
Definition: G4SIunits.hh:120
G4Material * GetMaterial(const G4String &)
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static const double micrometer
Definition: G4SIunits.hh:99
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
double G4double
Definition: G4Types.hh:76
static const double mm
Definition: G4SIunits.hh:114
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4Material * Al
Definition: TRTMaterials.hh:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ TestOld()

void Em10DetectorConstruction::TestOld ( )
private

Definition at line 1398 of file Em10DetectorConstruction.cc.

1399 {
1400  // G4double inch = 2.54*cm;
1401  // G4double mil = inch/1000.0;
1402  // G4double GetzstartAbs() {return zstartAbs;};
1403  // G4double GetzendAbs() {return zendAbs;};
1404  // void ComputeCalorParameters();
1405 
1406  // void SetGammaCut(G4double cut){fGammaCut = cut;};
1407  // void SetElectronCut(G4double cut){fElectronCut = cut;};
1408  // void SetPositronCut(G4double cut){fPositronCut = cut;};
1409  // G4int fModelNumber ; // selection of parametrisation model1-10
1410  // void SetAlphaPlate (G4double val){fAlphaPlate = val;};
1411  // void SetAlphaGas (G4double val){fAlphaGas = val;};
1412 
1413  // G4double fAlphaPlate ;
1414  // G4double fAlphaGas ;
1415 
1416  // fAlphaPlate = 160.0;
1417  // fAlphaGas = 160.0;
1418  // fModelNumber = 0;
1419 
1420  // create commands for interactive definition of the calorimeter
1421 
1422  // fGammaCut = 23*mm;
1423  // fElectronCut = 23*mm;
1424  // fPositronCut = 23*mm;
1425 
1426  // G4cout << *(G4Material::GetMaterialTable()) << G4endl;
1427 
1428  // G4int i, j ;
1429  // G4int j ;
1430  // G4double zModule, zRadiator, rModule, rRadiator ;
1431 
1432  // complete the Calor parameters definition and Print
1433 
1434  //ComputeCalorParameters();
1435 
1436  // zRadiator ;
1437 
1438  // World
1439 
1440  // if(solidWorld) delete solidWorld ;
1441  // if(logicWorld) delete logicWorld ;
1442  // if(physiWorld) delete physiWorld ;
1443 
1444  // if(solidRadiator) delete solidRadiator;
1445  // if(logicRadiator) delete logicRadiator;
1446  // if(physiRadiator) delete physiRadiator;
1447 
1448  // radThick *= 1.02 ;
1449 
1450  // if(fSolidRadSlice) delete fSolidRadSlice;
1451  // if(fLogicRadSlice) delete fLogicRadSlice;
1452  // if(fPhysicRadSlice) delete fPhysicRadSlice;
1453  // fSolidRadSlice = new G4Box("RadSlice",fAbsorberRadius,
1454  // fAbsorberRadius,0.5*fRadThickness );
1455 
1456  // fLogicRadSlice = new G4LogicalVolume(fSolidRadSlice,fRadiatorMat,
1457  // "RadSlice",0,0,0);
1458 
1459 // for(j=0;j<fFoilNumber;j++)
1460 // {
1461 //
1462 // zRadiator = zModule + j*(fRadThickness + fGasGap) ;
1463 // G4cout<<zRadiator/mm<<" mm"<<"\t" ;
1464 // // G4cout<<"j = "<<j<<"\t" ;
1465 //
1466 // fPhysicRadSlice =
1467 // new G4PVPlacement(0,G4ThreeVector(0.,0.,zRadiator-zRad),
1468 // "RadSlice",fLogicRadSlice,
1469 // physiRadiator,false,j);
1470 // }
1471 // G4cout<<G4endl ;
1472 
1473  // fRadRegion->RemoveRootLogicalVolume(logicWindowR);
1474  // G4ProductionCuts* cutsR = 0;
1475  // cutsR = new G4ProductionCuts();
1476  // fRadRegion->SetProductionCuts(cutsR);
1477 
1478  // else // Second time - get a cut object from region
1479  {
1480  // cutsR = fRadRegion->GetProductionCuts();
1481  }
1482 
1483  // cutsR->SetProductionCut(fGammaCut,"gamma");
1484  // cutsR->SetProductionCut(fElectronCut,"e-");
1485  // cutsR->SetProductionCut(fPositronCut,"e+");
1486  // G4Box* solidGap = new G4Box("Gap",fAbsorberRadius, fAbsorberRadius,
1487  // fGapThick/2. ) ;
1488 
1489  // G4LogicalVolume* logicGap = new G4LogicalVolume(solidGap,fGapMat, "Gap");
1490 
1491  // G4VPhysicalVolume* physiGap = new G4PVPlacement(0,
1492  // G4ThreeVector(0.,0.,zGap),
1493  // "Gap",logicGap,physiWorld,false,0);
1494 
1495  // G4Box* solidElectrode = new G4Box("Electrode",fAbsorberRadius,
1496  // fAbsorberRadius, fElectrodeThick/2. );
1497 
1498  // G4LogicalVolume* logicElectrode = new G4LogicalVolume(solidElectrode,
1499  // fElectrodeMat, "Electrode");
1500 
1501  // G4VPhysicalVolume* physiElectrode = new G4PVPlacement(0,
1502  // G4ThreeVector(0.,0.,zElectrode),
1503  // "Electrode",logicElectrode,
1504  // physiWorld,false,0);
1505  // if(solidAbsorber) delete solidAbsorber;
1506  // if(logicAbsorber) delete logicAbsorber;
1507  // if(physiAbsorber) delete physiAbsorber;
1508 // if (fAbsorberThickness > 0.)
1509 // {
1510 // }
1511 
1512  // fRegGasDet->RemoveRootLogicalVolume(logicAbsorber);
1513  // G4ProductionCuts* cuts = 0;
1514  // cuts = new G4ProductionCuts();
1515  // fRegGasDet->SetProductionCuts(cuts);
1516  // else // Second time - get a cut object from region
1517  {
1518  // cuts = fRegGasDet->GetProductionCuts();
1519  }
1520 
1521  // cuts->SetProductionCut(fGammaCut,"gamma");
1522  // cuts->SetProductionCut(fElectronCut,"e-");
1523  // cuts->SetProductionCut(fPositronCut,"e+");
1524 
1525 }
Here is the caller graph for this function:

◆ UpdateGeometry()

void Em10DetectorConstruction::UpdateGeometry ( )

Definition at line 1717 of file Em10DetectorConstruction.cc.

1718 {
1720 }
virtual void DefineWorldVolume(G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
G4VPhysicalVolume * ConstructDetectorXTR()
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ fAbsorberMaterial

G4Material* Em10DetectorConstruction::fAbsorberMaterial
private

Definition at line 128 of file Em10DetectorConstruction.hh.

◆ fAbsorberRadius

G4double Em10DetectorConstruction::fAbsorberRadius
private

Definition at line 130 of file Em10DetectorConstruction.hh.

◆ fAbsorberThickness

G4double Em10DetectorConstruction::fAbsorberThickness
private

Definition at line 129 of file Em10DetectorConstruction.hh.

◆ fAbsorberZ

G4double Em10DetectorConstruction::fAbsorberZ
private

Definition at line 143 of file Em10DetectorConstruction.hh.

◆ fCalorimeterSD

Em10CalorimeterSD* Em10DetectorConstruction::fCalorimeterSD
private

Definition at line 207 of file Em10DetectorConstruction.hh.

◆ fDetectorMessenger

Em10DetectorMessenger* Em10DetectorConstruction::fDetectorMessenger
private

Definition at line 206 of file Em10DetectorConstruction.hh.

◆ fDetGap

G4double Em10DetectorConstruction::fDetGap
private

Definition at line 181 of file Em10DetectorConstruction.hh.

◆ fDetLength

G4double Em10DetectorConstruction::fDetLength
private

Definition at line 180 of file Em10DetectorConstruction.hh.

◆ fDetThickness

G4double Em10DetectorConstruction::fDetThickness
private

Definition at line 179 of file Em10DetectorConstruction.hh.

◆ fElectrodeMat

G4Material* Em10DetectorConstruction::fElectrodeMat
private

Definition at line 137 of file Em10DetectorConstruction.hh.

◆ fElectrodeThick

G4double Em10DetectorConstruction::fElectrodeThick
private

Definition at line 138 of file Em10DetectorConstruction.hh.

◆ fElectrodeZ

G4double Em10DetectorConstruction::fElectrodeZ
private

Definition at line 196 of file Em10DetectorConstruction.hh.

◆ fFoilMat

G4Material* Em10DetectorConstruction::fFoilMat
private

Definition at line 170 of file Em10DetectorConstruction.hh.

◆ fFoilNumber

G4int Em10DetectorConstruction::fFoilNumber
private

Definition at line 177 of file Em10DetectorConstruction.hh.

◆ fGapMat

G4Material* Em10DetectorConstruction::fGapMat
private

Definition at line 140 of file Em10DetectorConstruction.hh.

◆ fGapThick

G4double Em10DetectorConstruction::fGapThick
private

Definition at line 141 of file Em10DetectorConstruction.hh.

◆ fGapZ

G4double Em10DetectorConstruction::fGapZ
private

Definition at line 195 of file Em10DetectorConstruction.hh.

◆ fGasGap

G4double Em10DetectorConstruction::fGasGap
private

Definition at line 174 of file Em10DetectorConstruction.hh.

◆ fGasMat

G4Material* Em10DetectorConstruction::fGasMat
private

Definition at line 171 of file Em10DetectorConstruction.hh.

◆ fLogicAbsorber

G4LogicalVolume* Em10DetectorConstruction::fLogicAbsorber
private

Definition at line 199 of file Em10DetectorConstruction.hh.

◆ fLogicRadiator

G4LogicalVolume* Em10DetectorConstruction::fLogicRadiator
private

Definition at line 166 of file Em10DetectorConstruction.hh.

◆ fLogicWorld

G4LogicalVolume* Em10DetectorConstruction::fLogicWorld
private

Definition at line 152 of file Em10DetectorConstruction.hh.

◆ fMagField

G4UniformMagField* Em10DetectorConstruction::fMagField
private

Definition at line 202 of file Em10DetectorConstruction.hh.

◆ fMat

Em10Materials* Em10DetectorConstruction::fMat
private

Definition at line 210 of file Em10DetectorConstruction.hh.

◆ fModuleNumber

G4int Em10DetectorConstruction::fModuleNumber
private

Definition at line 186 of file Em10DetectorConstruction.hh.

◆ fMylarThick

G4double Em10DetectorConstruction::fMylarThick
private

Definition at line 189 of file Em10DetectorConstruction.hh.

◆ foilGasRatio

G4double Em10DetectorConstruction::foilGasRatio
private

Definition at line 175 of file Em10DetectorConstruction.hh.

◆ fPhysicsAbsorber

G4VPhysicalVolume* Em10DetectorConstruction::fPhysicsAbsorber
private

Definition at line 200 of file Em10DetectorConstruction.hh.

◆ fPhysicsRadiator

G4VPhysicalVolume* Em10DetectorConstruction::fPhysicsRadiator
private

Definition at line 167 of file Em10DetectorConstruction.hh.

◆ fPhysicsWorld

G4VPhysicalVolume* Em10DetectorConstruction::fPhysicsWorld
private

Definition at line 153 of file Em10DetectorConstruction.hh.

◆ fPipe

G4bool Em10DetectorConstruction::fPipe
private

Definition at line 191 of file Em10DetectorConstruction.hh.

◆ fPipeField

G4bool Em10DetectorConstruction::fPipeField
private

Definition at line 192 of file Em10DetectorConstruction.hh.

◆ fPipeLength

G4double Em10DetectorConstruction::fPipeLength
private

Definition at line 190 of file Em10DetectorConstruction.hh.

◆ fPipeMat

G4Material* Em10DetectorConstruction::fPipeMat
private

Definition at line 132 of file Em10DetectorConstruction.hh.

◆ fRadiatorMat

G4Material* Em10DetectorConstruction::fRadiatorMat
private

Definition at line 169 of file Em10DetectorConstruction.hh.

◆ fRadRegion

G4Region* Em10DetectorConstruction::fRadRegion
private

Definition at line 209 of file Em10DetectorConstruction.hh.

◆ fRadThick

G4double Em10DetectorConstruction::fRadThick
private

Definition at line 188 of file Em10DetectorConstruction.hh.

◆ fRadThickness

G4double Em10DetectorConstruction::fRadThickness
private

Definition at line 173 of file Em10DetectorConstruction.hh.

◆ fRadZ

G4double Em10DetectorConstruction::fRadZ
private

Definition at line 193 of file Em10DetectorConstruction.hh.

◆ fRegGasDet

G4Region* Em10DetectorConstruction::fRegGasDet
private

Definition at line 208 of file Em10DetectorConstruction.hh.

◆ fSetUp

G4String Em10DetectorConstruction::fSetUp
private

Definition at line 145 of file Em10DetectorConstruction.hh.

◆ fSolidAbsorber

G4Box* Em10DetectorConstruction::fSolidAbsorber
private

Definition at line 198 of file Em10DetectorConstruction.hh.

◆ fSolidRadiator

G4Box* Em10DetectorConstruction::fSolidRadiator
private

Definition at line 165 of file Em10DetectorConstruction.hh.

◆ fSolidWorld

G4Box* Em10DetectorConstruction::fSolidWorld
private

Definition at line 151 of file Em10DetectorConstruction.hh.

◆ fStartR

G4double Em10DetectorConstruction::fStartR
private

Definition at line 183 of file Em10DetectorConstruction.hh.

◆ fStartZ

G4double Em10DetectorConstruction::fStartZ
private

Definition at line 184 of file Em10DetectorConstruction.hh.

◆ fWindowMat

G4Material* Em10DetectorConstruction::fWindowMat
private

Definition at line 134 of file Em10DetectorConstruction.hh.

◆ fWindowThick

G4double Em10DetectorConstruction::fWindowThick
private

Definition at line 135 of file Em10DetectorConstruction.hh.

◆ fWindowZ

G4double Em10DetectorConstruction::fWindowZ
private

Definition at line 194 of file Em10DetectorConstruction.hh.

◆ fWorldChanged

G4bool Em10DetectorConstruction::fWorldChanged
private

Definition at line 127 of file Em10DetectorConstruction.hh.

◆ fWorldMaterial

G4Material* Em10DetectorConstruction::fWorldMaterial
private

Definition at line 147 of file Em10DetectorConstruction.hh.

◆ fWorldSizeR

G4double Em10DetectorConstruction::fWorldSizeR
private

Definition at line 148 of file Em10DetectorConstruction.hh.

◆ fWorldSizeZ

G4double Em10DetectorConstruction::fWorldSizeZ
private

Definition at line 149 of file Em10DetectorConstruction.hh.


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