Geant4  10.02.p03
CexmcSetup Class Reference

#include <CexmcSetup.hh>

Inheritance diagram for CexmcSetup:
Collaboration diagram for CexmcSetup:

Classes

struct  CalorimeterGeometryData
 

Public Types

enum  SpecialVolumeType { Monitor, VetoCounter, Calorimeter, Target }
 

Public Member Functions

 CexmcSetup (const G4String &gdmlFile="default.gdml", G4bool validateGDMLFile=true)
 
G4VPhysicalVolumeConstruct (void)
 
const G4AffineTransformGetTargetTransform (void) const
 
const G4AffineTransformGetCalorimeterLeftTransform (void) const
 
const G4AffineTransformGetCalorimeterRightTransform (void) const
 
void ConvertToCrystalGeometry (const G4ThreeVector &src, G4int &row, G4int &column, G4ThreeVector &dst) const
 
const CalorimeterGeometryDataGetCalorimeterGeometry (void) const
 
const G4LogicalVolumeGetVolume (SpecialVolumeType volume) const
 
G4bool IsRightDetector (const G4VPhysicalVolume *pVolume) const
 
G4bool IsRightCalorimeter (const G4VPhysicalVolume *pVolume) const
 
- 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

void SetupSpecialVolumes (const G4GDMLParser &gdmlParser)
 
void ReadTransforms (const G4GDMLParser &gdmlParser)
 
void ReadCalorimeterGeometryData (const G4LogicalVolume *lVolume)
 
void ReadRightDetectors (void)
 

Static Private Member Functions

static void AssertAndAsignDetectorRole (CexmcDetectorRole &detectorRole, CexmcDetectorRole value)
 
static void RotateMatrix (const G4ThreeVector &pos, G4RotationMatrix &rm)
 

Private Attributes

G4VPhysicalVolumeworld
 
G4String gdmlFile
 
G4bool validateGDMLFile
 
G4bool calorimeterRegionInitialized
 
G4bool calorimeterGeometryDataInitialized
 
G4LogicalVolumemonitorVolume
 
G4LogicalVolumevetoCounterVolume
 
G4LogicalVolumecalorimeterVolume
 
G4LogicalVolumetargetVolume
 
G4VPhysicalVolumerightVetoCounter
 
G4VPhysicalVolumerightCalorimeter
 
G4AffineTransform targetTransform
 
G4AffineTransform calorimeterLeftTransform
 
G4AffineTransform calorimeterRightTransform
 
CalorimeterGeometryData calorimeterGeometry
 

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 59 of file CexmcSetup.hh.

Member Enumeration Documentation

◆ SpecialVolumeType

Enumerator
Monitor 
VetoCounter 
Calorimeter 
Target 

Definition at line 62 of file CexmcSetup.hh.

Constructor & Destructor Documentation

◆ CexmcSetup()

CexmcSetup::CexmcSetup ( const G4String gdmlFile = "default.gdml",
G4bool  validateGDMLFile = true 
)
explicit

Definition at line 71 of file CexmcSetup.cc.

71  :
72  world( 0 ), gdmlFile( gdmlFile ), validateGDMLFile( validateGDMLFile ),
75  vetoCounterVolume( NULL ), calorimeterVolume( NULL ), targetVolume( NULL ),
76  rightVetoCounter( NULL ), rightCalorimeter( NULL )
77 {
78 }
G4VPhysicalVolume * rightVetoCounter
Definition: CexmcSetup.hh:147
G4bool validateGDMLFile
Definition: CexmcSetup.hh:133
G4bool calorimeterGeometryDataInitialized
Definition: CexmcSetup.hh:137
G4VPhysicalVolume * rightCalorimeter
Definition: CexmcSetup.hh:149
G4LogicalVolume * calorimeterVolume
Definition: CexmcSetup.hh:143
G4String gdmlFile
Definition: CexmcSetup.hh:131
G4LogicalVolume * monitorVolume
Definition: CexmcSetup.hh:139
G4bool calorimeterRegionInitialized
Definition: CexmcSetup.hh:135
G4LogicalVolume * targetVolume
Definition: CexmcSetup.hh:145
G4VPhysicalVolume * world
Definition: CexmcSetup.hh:129
G4LogicalVolume * vetoCounterVolume
Definition: CexmcSetup.hh:141

Member Function Documentation

◆ AssertAndAsignDetectorRole()

void CexmcSetup::AssertAndAsignDetectorRole ( CexmcDetectorRole detectorRole,
CexmcDetectorRole  value 
)
staticprivate

Definition at line 474 of file CexmcSetup.cc.

476 {
477  if ( detectorRole != CexmcNumberOfDetectorRoles && detectorRole != value )
479 
480  detectorRole = value;
481 }
Here is the caller graph for this function:

◆ Construct()

G4VPhysicalVolume * CexmcSetup::Construct ( void  )
virtual

Implements G4VUserDetectorConstruction.

Definition at line 81 of file CexmcSetup.cc.

82 {
83  if ( world )
84  return world;
85 
86  G4GDMLParser gdmlParser;
87 
88  gdmlParser.Read( gdmlFile, validateGDMLFile );
89  world = gdmlParser.GetWorldVolume();
90 
91  SetupSpecialVolumes( gdmlParser );
92 
93  ReadTransforms( gdmlParser );
94 
96 
97  CexmcRunManager * runManager( static_cast< CexmcRunManager * >(
99 
100  runManager->SetupConstructionHook();
101 
102  const CexmcPhysicsManager * physicsManager(
103  dynamic_cast< const CexmcPhysicsManager * >(
104  runManager->GetUserPhysicsList() ) );
105 
106  if ( ! physicsManager )
108 
109  CexmcPhysicsManager * thePhysicsManager(
110  const_cast< CexmcPhysicsManager * >( physicsManager ) );
111  thePhysicsManager->SetupConstructionHook( this );
112 
113  return world;
114 }
G4bool validateGDMLFile
Definition: CexmcSetup.hh:133
void SetupSpecialVolumes(const G4GDMLParser &gdmlParser)
Definition: CexmcSetup.cc:117
G4String gdmlFile
Definition: CexmcSetup.hh:131
void ReadRightDetectors(void)
Definition: CexmcSetup.cc:440
G4VPhysicalVolume * GetWorldVolume(const G4String &setupName="Default") const
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
void Read(const G4String &filename, G4bool Validate=true)
void ReadTransforms(const G4GDMLParser &gdmlParser)
Definition: CexmcSetup.cc:337
G4VPhysicalVolume * world
Definition: CexmcSetup.hh:129
Here is the call graph for this function:

◆ ConvertToCrystalGeometry()

void CexmcSetup::ConvertToCrystalGeometry ( const G4ThreeVector src,
G4int row,
G4int column,
G4ThreeVector dst 
) const

Definition at line 417 of file CexmcSetup.cc.

419 {
420  G4int nCrystalsInColumn( calorimeterGeometry.nCrystalsInColumn );
421  G4int nCrystalsInRow( calorimeterGeometry.nCrystalsInRow );
422  G4double crystalWidth( calorimeterGeometry.crystalWidth );
423  G4double crystalHeight( calorimeterGeometry.crystalHeight );
424 
425  row = G4int( ( src.y() + crystalHeight * nCrystalsInColumn / 2 ) /
426  crystalHeight );
427  column = G4int( ( src.x() + crystalWidth * nCrystalsInRow / 2 ) /
428  crystalWidth );
429  G4double xInCalorimeterOffset(
430  ( G4double( column ) - G4double( nCrystalsInRow ) / 2 ) *
431  crystalWidth + crystalWidth / 2 );
432  G4double yInCalorimeterOffset(
433  ( G4double( row ) - G4double( nCrystalsInColumn ) / 2 ) *
434  crystalHeight + crystalHeight / 2 );
435  dst.setX( src.x() - xInCalorimeterOffset );
436  dst.setY( src.y() - yInCalorimeterOffset );
437 }
CalorimeterGeometryData calorimeterGeometry
Definition: CexmcSetup.hh:157
int G4int
Definition: G4Types.hh:78
void setY(double)
void setX(double)
double x() const
double y() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetCalorimeterGeometry()

const CexmcSetup::CalorimeterGeometryData & CexmcSetup::GetCalorimeterGeometry ( void  ) const
inline

Definition at line 182 of file CexmcSetup.hh.

183 {
184  return calorimeterGeometry;
185 }
CalorimeterGeometryData calorimeterGeometry
Definition: CexmcSetup.hh:157
Here is the caller graph for this function:

◆ GetCalorimeterLeftTransform()

const G4AffineTransform & CexmcSetup::GetCalorimeterLeftTransform ( void  ) const
inline

Definition at line 167 of file CexmcSetup.hh.

169 {
171 }
G4AffineTransform calorimeterLeftTransform
Definition: CexmcSetup.hh:153
Here is the caller graph for this function:

◆ GetCalorimeterRightTransform()

const G4AffineTransform & CexmcSetup::GetCalorimeterRightTransform ( void  ) const
inline

Definition at line 174 of file CexmcSetup.hh.

176 {
178 }
G4AffineTransform calorimeterRightTransform
Definition: CexmcSetup.hh:155
Here is the caller graph for this function:

◆ GetTargetTransform()

const G4AffineTransform & CexmcSetup::GetTargetTransform ( void  ) const
inline

Definition at line 161 of file CexmcSetup.hh.

162 {
163  return targetTransform;
164 }
G4AffineTransform targetTransform
Definition: CexmcSetup.hh:151
Here is the caller graph for this function:

◆ GetVolume()

const G4LogicalVolume * CexmcSetup::GetVolume ( SpecialVolumeType  volume) const
inline

Definition at line 188 of file CexmcSetup.hh.

190 {
191  switch ( volume )
192  {
193  case Monitor :
194  return monitorVolume;
195  case VetoCounter :
196  return vetoCounterVolume;
197  case Calorimeter :
198  return calorimeterVolume;
199  case Target :
200  return targetVolume;
201  default :
202  return NULL;
203  }
204 }
G4LogicalVolume * calorimeterVolume
Definition: CexmcSetup.hh:143
G4LogicalVolume * monitorVolume
Definition: CexmcSetup.hh:139
G4LogicalVolume * targetVolume
Definition: CexmcSetup.hh:145
G4LogicalVolume * vetoCounterVolume
Definition: CexmcSetup.hh:141
Here is the caller graph for this function:

◆ IsRightCalorimeter()

G4bool CexmcSetup::IsRightCalorimeter ( const G4VPhysicalVolume pVolume) const
inline

Definition at line 217 of file CexmcSetup.hh.

219 {
220  if ( pVolume == rightCalorimeter )
221  return true;
222 
223  return false;
224 }
G4VPhysicalVolume * rightCalorimeter
Definition: CexmcSetup.hh:149
Here is the caller graph for this function:

◆ IsRightDetector()

G4bool CexmcSetup::IsRightDetector ( const G4VPhysicalVolume pVolume) const
inline

Definition at line 207 of file CexmcSetup.hh.

209 {
210  if ( pVolume == rightVetoCounter || pVolume == rightCalorimeter )
211  return true;
212 
213  return false;
214 }
G4VPhysicalVolume * rightVetoCounter
Definition: CexmcSetup.hh:147
G4VPhysicalVolume * rightCalorimeter
Definition: CexmcSetup.hh:149
Here is the caller graph for this function:

◆ ReadCalorimeterGeometryData()

void CexmcSetup::ReadCalorimeterGeometryData ( const G4LogicalVolume lVolume)
private

Definition at line 363 of file CexmcSetup.cc.

365 {
366  if ( lVolume->GetNoDaughters() == 0 )
368 
369  G4VPhysicalVolume * pVolume( lVolume->GetDaughter( 0 ) );
370  EAxis axis;
371  G4double width;
372  G4double offset;
373  G4bool consuming;
374 
375  if ( ! pVolume )
377 
378  if ( pVolume->IsReplicated() )
379  {
380  pVolume->GetReplicationData( axis,
382  width, offset, consuming );
383  }
384 
385  lVolume = pVolume->GetLogicalVolume();
386 
387  if ( lVolume->GetNoDaughters() == 0 )
389 
390  pVolume = lVolume->GetDaughter( 0 );
391 
392  if ( ! pVolume )
394 
395  if ( pVolume->IsReplicated() )
396  {
397  pVolume->GetReplicationData( axis, calorimeterGeometry.nCrystalsInRow,
398  width, offset, consuming );
399  }
400 
401  lVolume = pVolume->GetLogicalVolume();
402 
403  /* NB: this is not necessarily a crystal itself as far as crystals can be
404  * wrapped in paper and other materials, but this is what reconstructor and
405  * digitizers really need */
406  G4Box * crystalBox( dynamic_cast< G4Box * >( lVolume->GetSolid() ) );
407 
408  if ( ! crystalBox )
410 
411  calorimeterGeometry.crystalWidth = crystalBox->GetXHalfLength() * 2;
412  calorimeterGeometry.crystalHeight = crystalBox->GetYHalfLength() * 2;
413  calorimeterGeometry.crystalLength = crystalBox->GetZHalfLength() * 2;
414 }
G4int GetNoDaughters() const
Definition: G4Box.hh:64
#define width
CalorimeterGeometryData calorimeterGeometry
Definition: CexmcSetup.hh:157
bool G4bool
Definition: G4Types.hh:79
EAxis
Definition: geomdefs.hh:54
G4VPhysicalVolume * GetDaughter(const G4int i) const
double G4double
Definition: G4Types.hh:76
G4VSolid * GetSolid() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadRightDetectors()

void CexmcSetup::ReadRightDetectors ( void  )
private

Definition at line 440 of file CexmcSetup.cc.

441 {
443 
444  for ( std::vector< G4VPhysicalVolume * >::const_iterator k( pvs->begin() );
445  k != pvs->end(); ++k )
446  {
447  /* FIXME: it would be more reasonable to find detectors from volumes
448  * tagged with 'EnergyDepositDetector' or 'TrackPointsDetector', and not
449  * from volumes tagged with 'SpecialVolume' as it is done here. However
450  * in case of calorimeters the role of detectors are played by crystal
451  * volumes, not the calorimeters themselves, but only calorimeters can
452  * hold information about their left or right positions! Thus, following
453  * considerations of convenience, right detectors for all detector roles
454  * are chosen from volumes tagged with 'SpecialVolume' */
455  do
456  {
457  if ( ( *k )->GetLogicalVolume() == vetoCounterVolume )
458  {
459  if ( ( *k )->GetName().contains( "Right" ) )
460  rightVetoCounter = *k;
461  break;
462  }
463  if ( ( *k )->GetLogicalVolume() == calorimeterVolume )
464  {
465  if ( ( *k )->GetName().contains( "Right" ) )
466  rightCalorimeter = *k;
467  break;
468  }
469  } while ( false );
470  }
471 }
G4VPhysicalVolume * rightVetoCounter
Definition: CexmcSetup.hh:147
G4VPhysicalVolume * rightCalorimeter
Definition: CexmcSetup.hh:149
static G4PhysicalVolumeStore * GetInstance()
G4LogicalVolume * calorimeterVolume
Definition: CexmcSetup.hh:143
G4LogicalVolume * vetoCounterVolume
Definition: CexmcSetup.hh:141
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadTransforms()

void CexmcSetup::ReadTransforms ( const G4GDMLParser gdmlParser)
private

Definition at line 337 of file CexmcSetup.cc.

338 {
339  G4ThreeVector position( gdmlParser.GetPosition( "TargetPos" ) );
340  G4ThreeVector rotation( gdmlParser.GetRotation( "TargetRot" ) );
341  G4RotationMatrix rm;
342 
343  RotateMatrix( rotation, rm );
346 
347  position = gdmlParser.GetPosition( "CalorimeterLeftPos" );
348  rotation = gdmlParser.GetRotation( "CalorimeterLeftRot" );
349  rm = G4RotationMatrix();
350  RotateMatrix( rotation, rm );
353 
354  position = gdmlParser.GetPosition( "CalorimeterRightPos" );
355  rotation = gdmlParser.GetRotation( "CalorimeterRightRot" );
356  rm = G4RotationMatrix();
357  RotateMatrix( rotation, rm );
360 }
CLHEP::HepRotation G4RotationMatrix
G4AffineTransform calorimeterRightTransform
Definition: CexmcSetup.hh:155
static void RotateMatrix(const G4ThreeVector &pos, G4RotationMatrix &rm)
Definition: CexmcSetup.cc:484
#define position
Definition: xmlparse.cc:622
void SetNetTranslation(const G4ThreeVector &tlate)
void SetNetRotation(const G4RotationMatrix &rot)
G4AffineTransform calorimeterLeftTransform
Definition: CexmcSetup.hh:153
G4ThreeVector GetRotation(const G4String &name) const
G4ThreeVector GetPosition(const G4String &name) const
G4AffineTransform targetTransform
Definition: CexmcSetup.hh:151
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RotateMatrix()

void CexmcSetup::RotateMatrix ( const G4ThreeVector pos,
G4RotationMatrix rm 
)
staticprivate

Definition at line 484 of file CexmcSetup.cc.

486 {
487  rm.rotateX( rot.x() );
488  rm.rotateY( rot.y() );
489  rm.rotateZ( rot.z() );
490 }
HepRotation & rotateX(double delta)
Definition: Rotation.cc:66
HepRotation & rotateY(double delta)
Definition: Rotation.cc:79
HepRotation & rotateZ(double delta)
Definition: Rotation.cc:92
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetupSpecialVolumes()

void CexmcSetup::SetupSpecialVolumes ( const G4GDMLParser gdmlParser)
private

Definition at line 117 of file CexmcSetup.cc.

118 {
120  { NULL };
122 
123  for ( std::vector< G4LogicalVolume * >::const_iterator
124  lvIter( lvs->begin() ); lvIter != lvs->end(); ++lvIter )
125  {
126  G4String volumeName( G4String( ( *lvIter )->GetName() ) );
128  *lvIter ) );
130 
131  for ( G4GDMLAuxListType::const_iterator pair( auxInfo.begin() );
132  pair != auxInfo.end(); ++pair )
133  {
134  CexmcPrimitiveScorer * scorer( NULL );
135  G4String detectorName( "uninitialized" );
136  do
137  {
138  if ( pair->type == "EnergyDepositDetector" )
139  {
140  do
141  {
142  if ( pair->value == "MonitorRole" )
143  {
144  AssertAndAsignDetectorRole( curDetectorRole,
146  scorer = new CexmcSimpleEnergyDeposit(
148  break;
149  }
150  if ( pair->value == "VetoCounterRole" )
151  {
152  AssertAndAsignDetectorRole( curDetectorRole,
156  this );
157  break;
158  }
159  if ( pair->value == "CalorimeterRole" )
160  {
161  AssertAndAsignDetectorRole( curDetectorRole,
163  scorer = new CexmcEnergyDepositInCalorimeter(
165  this );
166  break;
167  }
168  } while ( false );
169  detectorName = CexmcDetectorRoleName[ curDetectorRole ];
170  G4cout << CEXMC_LINE_START "ED Scorer of detector role '" <<
171  detectorName << "' in volume '" << volumeName <<
172  "'" << G4endl;
173  break;
174  }
175  if ( pair->type == "TrackPointsDetector" )
176  {
177  do
178  {
179  if ( pair->value == "MonitorRole" )
180  {
181  AssertAndAsignDetectorRole( curDetectorRole,
183  scorer = new CexmcTrackPoints(
185  break;
186  }
187  if ( pair->value == "VetoCounterRole" )
188  {
189  AssertAndAsignDetectorRole( curDetectorRole,
191  scorer = new CexmcTrackPointsInLeftRightSet(
193  this );
194  break;
195  }
196  if ( pair->value == "CalorimeterRole" )
197  {
198  AssertAndAsignDetectorRole( curDetectorRole,
200  scorer = new CexmcTrackPointsInCalorimeter(
202  this );
203  break;
204  }
205  if ( pair->value == "TargetRole" )
206  {
207  AssertAndAsignDetectorRole( curDetectorRole,
209  scorer = new CexmcTrackPoints(
211  break;
212  }
213  } while ( false );
214  detectorName = CexmcDetectorRoleName[ curDetectorRole ];
215  G4cout << CEXMC_LINE_START "TP Scorer of detector role '" <<
216  detectorName << "' in volume '" << volumeName <<
217  "'" << G4endl;
218  if ( scorer )
219  {
220  CexmcTrackPointsFilter * filter(
221  new CexmcTrackPointsFilter( "trackPoints" ) );
222  scorer->SetFilter( filter );
223  }
224  break;
225  }
226  if ( pair->type == "SensitiveRegion" )
227  {
228  do
229  {
230  if ( pair->value == "CalorimeterRegion" )
231  {
232  G4Region * region( NULL );
234  {
235  region = G4RegionStore::GetInstance()->
236  GetRegion( CexmcCalorimeterRegionName );
237  }
238  else
239  {
240  region = new G4Region(
242  G4ProductionCuts * cuts(
243  new G4ProductionCuts );
244  G4double defaultProductionCut( 1.0 * mm );
245  const G4VUserPhysicsList * physicsList(
247  GetUserPhysicsList() );
248  if ( physicsList )
249  defaultProductionCut =
250  physicsList->GetDefaultCutValue();
251  cuts->SetProductionCut( defaultProductionCut );
252  region->SetProductionCuts( cuts );
254  }
255  region->AddRootLogicalVolume( *lvIter );
256  break;
257  }
258  } while ( false );
259  G4cout << CEXMC_LINE_START "Sensitive Region for logical "
260  "volume '" << volumeName << "' registered" <<
261  G4endl;
262  break;
263  }
264  if ( pair->type == "SpecialVolume" )
265  {
266  do
267  {
268  if ( pair->value == "Monitor" )
269  {
270  monitorVolume = *lvIter;
271  G4cout << CEXMC_LINE_START "Monitor volume '";
272  break;
273  }
274  if ( pair->value == "VetoCounter" )
275  {
276  vetoCounterVolume = *lvIter;
277  G4cout << CEXMC_LINE_START "VetoCounter volume '";
278  break;
279  }
280  if ( pair->value == "Calorimeter" )
281  {
282  calorimeterVolume = *lvIter;
283  G4cout << CEXMC_LINE_START "Calorimeter volume '";
284  ReadCalorimeterGeometryData( *lvIter );
286  break;
287  }
288  if ( pair->value == "Target" )
289  {
290  targetVolume = *lvIter;
291  G4cout << CEXMC_LINE_START "Target volume '";
292  break;
293  }
294  } while ( false );
295  G4cout << volumeName << "' registered" << G4endl;
296  break;
297  }
298  }
299  while ( false );
300 
301  if ( scorer )
302  {
303  /* curDetectorRole must be intact when scorer is not NULL */
304  if ( ! detector[ curDetectorRole ] )
305  {
306  detector[ curDetectorRole ] =
307  new G4MultiFunctionalDetector( detectorName );
308  }
309  detector[ curDetectorRole ]->RegisterPrimitive( scorer );
310  /* now that scorer has initialized pointer to its detector, its
311  * messenger's path shall be properly initialized as well */
312  scorer->InitializeMessenger();
313  /* NB: logical volumes in GDML file may not have multiple
314  * detector roles: for example volume Monitor may have only one
315  * role MonitorRole. This restriction arises from that fact that
316  * a logical volume may contain only one sensitive detector. */
317  ( *lvIter )->SetSensitiveDetector(
318  detector[ curDetectorRole ] );
319  }
320  }
321  }
322 
325 
328 
329  for ( G4int i( 0 ); i < CexmcNumberOfDetectorRoles; ++i )
330  {
331  if ( detector[ i ] )
332  G4SDManager::GetSDMpointer()->AddNewDetector( detector[ i ] );
333  }
334 }
G4bool RegisterPrimitive(G4VPrimitiveScorer *)
G4GDMLAuxListType GetVolumeAuxiliaryInformation(G4LogicalVolume *lvol) const
const G4String CexmcDetectorTypeName[CexmcNumberOfDetectorTypes]
int G4int
Definition: G4Types.hh:78
G4bool calorimeterGeometryDataInitialized
Definition: CexmcSetup.hh:137
static G4RegionStore * GetInstance()
G4GLOB_DLL std::ostream G4cout
#define CEXMC_LINE_START
Definition: CexmcCommon.hh:52
G4LogicalVolume * calorimeterVolume
Definition: CexmcSetup.hh:143
static G4LogicalVolumeStore * GetInstance()
void ReadCalorimeterGeometryData(const G4LogicalVolume *lVolume)
Definition: CexmcSetup.cc:363
const G4String CexmcDetectorRoleName[CexmcNumberOfDetectorRoles]
G4LogicalVolume * monitorVolume
Definition: CexmcSetup.hh:139
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:71
static void AssertAndAsignDetectorRole(CexmcDetectorRole &detectorRole, CexmcDetectorRole value)
Definition: CexmcSetup.cc:474
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
const G4String CexmcCalorimeterRegionName("Calorimeter")
std::vector< G4GDMLAuxStructType > G4GDMLAuxListType
G4bool calorimeterRegionInitialized
Definition: CexmcSetup.hh:135
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
G4LogicalVolume * targetVolume
Definition: CexmcSetup.hh:145
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4LogicalVolume * vetoCounterVolume
Definition: CexmcSetup.hh:141
static const double mm
Definition: G4SIunits.hh:114
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ calorimeterGeometry

CalorimeterGeometryData CexmcSetup::calorimeterGeometry
private

Definition at line 157 of file CexmcSetup.hh.

◆ calorimeterGeometryDataInitialized

G4bool CexmcSetup::calorimeterGeometryDataInitialized
private

Definition at line 137 of file CexmcSetup.hh.

◆ calorimeterLeftTransform

G4AffineTransform CexmcSetup::calorimeterLeftTransform
private

Definition at line 153 of file CexmcSetup.hh.

◆ calorimeterRegionInitialized

G4bool CexmcSetup::calorimeterRegionInitialized
private

Definition at line 135 of file CexmcSetup.hh.

◆ calorimeterRightTransform

G4AffineTransform CexmcSetup::calorimeterRightTransform
private

Definition at line 155 of file CexmcSetup.hh.

◆ calorimeterVolume

G4LogicalVolume* CexmcSetup::calorimeterVolume
private

Definition at line 143 of file CexmcSetup.hh.

◆ gdmlFile

G4String CexmcSetup::gdmlFile
private

Definition at line 131 of file CexmcSetup.hh.

◆ monitorVolume

G4LogicalVolume* CexmcSetup::monitorVolume
private

Definition at line 139 of file CexmcSetup.hh.

◆ rightCalorimeter

G4VPhysicalVolume* CexmcSetup::rightCalorimeter
private

Definition at line 149 of file CexmcSetup.hh.

◆ rightVetoCounter

G4VPhysicalVolume* CexmcSetup::rightVetoCounter
private

Definition at line 147 of file CexmcSetup.hh.

◆ targetTransform

G4AffineTransform CexmcSetup::targetTransform
private

Definition at line 151 of file CexmcSetup.hh.

◆ targetVolume

G4LogicalVolume* CexmcSetup::targetVolume
private

Definition at line 145 of file CexmcSetup.hh.

◆ validateGDMLFile

G4bool CexmcSetup::validateGDMLFile
private

Definition at line 133 of file CexmcSetup.hh.

◆ vetoCounterVolume

G4LogicalVolume* CexmcSetup::vetoCounterVolume
private

Definition at line 141 of file CexmcSetup.hh.

◆ world

G4VPhysicalVolume* CexmcSetup::world
private

Definition at line 129 of file CexmcSetup.hh.


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