Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/geometry/divisions/src/G4PVDivisionFactory.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /geometry/divisions/src/G4PVDivisionFactory.cc (Version 11.3.0) and /geometry/divisions/src/G4PVDivisionFactory.cc (Version 9.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // G4PVDivisionFactory Implementation file     << 
 27 //                                                 26 //
 28 // Author: Ivana Hrivnacova, 04.05.2004  (Ivan <<  27 // $Id: G4PVDivisionFactory.cc,v 1.2 2006/06/29 18:18:33 gunter Exp $
                                                   >>  28 // GEANT4 tag $Name: geant4-09-02 $
                                                   >>  29 //
                                                   >>  30 // class G4PVDivisionFactory Implementation file
                                                   >>  31 //
                                                   >>  32 // Author: Ivana Hrivnacova, 4.5.2004  (Ivana.Hrivnacova@cern.ch)
 29 // -------------------------------------------     33 // --------------------------------------------------------------------
 30                                                    34 
 31 #include "G4PVDivisionFactory.hh"                  35 #include "G4PVDivisionFactory.hh"
 32 #include "G4PVDivision.hh"                         36 #include "G4PVDivision.hh"
 33 #include "G4VDivisionParameterisation.hh"          37 #include "G4VDivisionParameterisation.hh"
 34                                                    38 
 35 //____________________________________________     39 //_____________________________________________________________________________
 36                                                    40 
                                                   >>  41 G4PVDivisionFactory::G4PVDivisionFactory()
                                                   >>  42   : G4VPVDivisionFactory()
                                                   >>  43 {
                                                   >>  44   // Protected singleton constructor.
                                                   >>  45   // ---
                                                   >>  46 }
                                                   >>  47 
                                                   >>  48 //_____________________________________________________________________________
                                                   >>  49 
                                                   >>  50 G4PVDivisionFactory::~G4PVDivisionFactory()
                                                   >>  51 {
                                                   >>  52 }
                                                   >>  53 
                                                   >>  54 //_____________________________________________________________________________
                                                   >>  55 
 37 G4PVDivisionFactory* G4PVDivisionFactory::GetI     56 G4PVDivisionFactory* G4PVDivisionFactory::GetInstance()
 38 {                                                  57 {
 39   if (fgInstance == nullptr)                   <<  58   static G4PVDivisionFactory theFactory;
                                                   >>  59   if (!fgInstance)
 40   {                                                60   {
 41     fgInstance =  new G4PVDivisionFactory;     <<  61     fgInstance = &theFactory;
 42   }                                                62   }
 43   return dynamic_cast<G4PVDivisionFactory*>(fg <<  63   return &theFactory;
 44 }                                                  64 } 
 45                                                    65 
 46 //____________________________________________     66 //_____________________________________________________________________________
 47                                                    67 
 48 G4VPhysicalVolume*                                 68 G4VPhysicalVolume* 
 49 G4PVDivisionFactory::CreatePVDivision(const G4     69 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 50                              G4LogicalVolume*      70                              G4LogicalVolume* pLogical,
 51                              G4LogicalVolume*      71                              G4LogicalVolume* pMotherLogical,
 52                              const EAxis pAxis     72                              const EAxis pAxis,
 53                              const G4int nRepl     73                              const G4int nReplicas,
 54                              const G4double wi     74                              const G4double width,
 55                              const G4double of     75                              const G4double offset )
 56 {                                                  76 {     
 57   // Create division - with number of division     77   // Create division - with number of divisions and width
 58   // ---                                           78   // ---
 59                                                    79 
 60   return new G4PVDivision(pName, pLogical, pMo     80   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 61                           pAxis, nReplicas, wi     81                           pAxis, nReplicas, width, offset);
 62 }                                                  82 }    
 63                                                    83 
 64 //____________________________________________     84 //_____________________________________________________________________________
 65                                                    85 
 66 G4VPhysicalVolume*                                 86 G4VPhysicalVolume* 
 67 G4PVDivisionFactory::CreatePVDivision(const G4     87 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 68                              G4LogicalVolume*      88                              G4LogicalVolume* pLogical,
 69                              G4LogicalVolume*      89                              G4LogicalVolume* pMotherLogical,
 70                              const EAxis pAxis     90                              const EAxis pAxis,
 71                              const G4int nRepl     91                              const G4int nReplicas,
 72                              const G4double of     92                              const G4double offset )
 73 {                                                  93 {     
 74   // Create division - with number of division     94   // Create division - with number of divisions 
 75   // ---                                           95   // ---
 76                                                    96 
 77   return new G4PVDivision(pName, pLogical, pMo     97   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 78                           pAxis, nReplicas, of     98                           pAxis, nReplicas, offset);
 79 }                                                  99 }    
 80                                                   100 
 81 //____________________________________________    101 //_____________________________________________________________________________
 82                                                   102 
 83 G4VPhysicalVolume*                                103 G4VPhysicalVolume* 
 84 G4PVDivisionFactory::CreatePVDivision(const G4    104 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 85                              G4LogicalVolume*     105                              G4LogicalVolume* pLogical,
 86                              G4LogicalVolume*     106                              G4LogicalVolume* pMotherLogical,
 87                              const EAxis pAxis    107                              const EAxis pAxis,
 88                              const G4double wi    108                              const G4double width,
 89                              const G4double of    109                              const G4double offset )
 90 {                                                 110 {     
 91   // Create division - with width                 111   // Create division - with width
 92   // ---                                          112   // ---
 93                                                   113 
 94   return new G4PVDivision(pName, pLogical, pMo    114   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 95                           pAxis, width, offset    115                           pAxis, width, offset);
 96 }                                                 116 }    
 97                                                   117 
 98 //____________________________________________    118 //_____________________________________________________________________________
 99                                                   119 
100 G4VPhysicalVolume*                                120 G4VPhysicalVolume* 
101 G4PVDivisionFactory::CreatePVDivision(const G4    121 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
102                              G4LogicalVolume*     122                              G4LogicalVolume* pLogical,
103                              G4LogicalVolume*     123                              G4LogicalVolume* pMotherLogical,
104                              const G4VPVParame    124                              const G4VPVParameterisation* param)
105 {                                                 125 {     
106   // Create division - with parameterisation      126   // Create division - with parameterisation
107   // ---                                          127   // ---
108                                                   128 
109   // Get parameterisation data                    129   // Get parameterisation data
110   //                                              130   //
111   const auto divParam = dynamic_cast<const G4V << 131   const G4VDivisionParameterisation* divParam
                                                   >> 132     = dynamic_cast<const G4VDivisionParameterisation*>(param);
112                                                   133 
113   if (divParam == nullptr)                     << 134   if (!divParam)
114   {                                               135   {
115     G4Exception("G4PVDivisionFactory::CreatePV    136     G4Exception("G4PVDivisionFactory::CreatePVDivision()",
116                 "GeomDiv0001", FatalException, << 137                 "WrongType", FatalException,
117                 "Unexpected parameterisation t << 138                 "Unexpected parameterisation type !");
118     return nullptr;                            << 
119   }                                               139   }
120   else                                         << 
121   {                                            << 
122     EAxis axis = divParam->GetAxis();          << 
123     G4int nofDivisions = divParam->GetNoDiv(); << 
124     G4double width = divParam->GetWidth();     << 
125     G4double offset = divParam->GetOffset();   << 
126                                                   140 
127     return new G4PVDivision(pName, pLogical, p << 141   EAxis axis = divParam->GetAxis();
128                             axis, nofDivisions << 142   G4int nofDivisions = divParam->GetNoDiv();
129   }                                            << 143   G4double width = divParam->GetWidth();
                                                   >> 144   G4double offset = divParam->GetOffset();
                                                   >> 145 
                                                   >> 146   return new G4PVDivision(pName, pLogical, pMotherLogical, 
                                                   >> 147                           axis, nofDivisions, width, offset);
130 }                                                 148 }    
131                                                   149 
132 //____________________________________________    150 //_____________________________________________________________________________
133                                                   151 
134 G4bool G4PVDivisionFactory::IsPVDivision(const    152 G4bool G4PVDivisionFactory::IsPVDivision(const G4VPhysicalVolume* pv) const
135 {                                                 153 { 
136   // Returns true if pv is division               154   // Returns true if pv is division
137   // ---                                          155   // ---
138                                                   156 
139   return dynamic_cast<const G4PVDivision*>(pv) << 157   if (dynamic_cast<const G4PVDivision*>(pv))
                                                   >> 158     return true;
                                                   >> 159   else
                                                   >> 160     return false;  
140 }                                                 161 }
141                                                   162 
142                                                   163