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 10.0.p1)


  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 68718 2013-04-05 09:16:24Z gcosmo $
                                                   >>  28 //
                                                   >>  29 // class G4PVDivisionFactory Implementation file
                                                   >>  30 //
                                                   >>  31 // Author: Ivana Hrivnacova, 4.5.2004  (Ivana.Hrivnacova@cern.ch)
 29 // -------------------------------------------     32 // --------------------------------------------------------------------
 30                                                    33 
 31 #include "G4PVDivisionFactory.hh"                  34 #include "G4PVDivisionFactory.hh"
 32 #include "G4PVDivision.hh"                         35 #include "G4PVDivision.hh"
 33 #include "G4VDivisionParameterisation.hh"          36 #include "G4VDivisionParameterisation.hh"
 34                                                    37 
 35 //____________________________________________     38 //_____________________________________________________________________________
 36                                                    39 
                                                   >>  40 G4PVDivisionFactory::G4PVDivisionFactory()
                                                   >>  41   : G4VPVDivisionFactory()
                                                   >>  42 {
                                                   >>  43   // Protected singleton constructor.
                                                   >>  44   // ---
                                                   >>  45 }
                                                   >>  46 
                                                   >>  47 //_____________________________________________________________________________
                                                   >>  48 
                                                   >>  49 G4PVDivisionFactory::~G4PVDivisionFactory()
                                                   >>  50 {
                                                   >>  51 }
                                                   >>  52 
                                                   >>  53 //_____________________________________________________________________________
                                                   >>  54 
 37 G4PVDivisionFactory* G4PVDivisionFactory::GetI     55 G4PVDivisionFactory* G4PVDivisionFactory::GetInstance()
 38 {                                                  56 {
 39   if (fgInstance == nullptr)                   <<  57   if (!fgInstance)
 40   {                                                58   {
 41     fgInstance =  new G4PVDivisionFactory;         59     fgInstance =  new G4PVDivisionFactory;
 42   }                                                60   }
 43   return dynamic_cast<G4PVDivisionFactory*>(fg     61   return dynamic_cast<G4PVDivisionFactory*>(fgInstance);
 44 }                                                  62 } 
 45                                                    63 
 46 //____________________________________________     64 //_____________________________________________________________________________
 47                                                    65 
 48 G4VPhysicalVolume*                                 66 G4VPhysicalVolume* 
 49 G4PVDivisionFactory::CreatePVDivision(const G4     67 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 50                              G4LogicalVolume*      68                              G4LogicalVolume* pLogical,
 51                              G4LogicalVolume*      69                              G4LogicalVolume* pMotherLogical,
 52                              const EAxis pAxis     70                              const EAxis pAxis,
 53                              const G4int nRepl     71                              const G4int nReplicas,
 54                              const G4double wi     72                              const G4double width,
 55                              const G4double of     73                              const G4double offset )
 56 {                                                  74 {     
 57   // Create division - with number of division     75   // Create division - with number of divisions and width
 58   // ---                                           76   // ---
 59                                                    77 
 60   return new G4PVDivision(pName, pLogical, pMo     78   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 61                           pAxis, nReplicas, wi     79                           pAxis, nReplicas, width, offset);
 62 }                                                  80 }    
 63                                                    81 
 64 //____________________________________________     82 //_____________________________________________________________________________
 65                                                    83 
 66 G4VPhysicalVolume*                                 84 G4VPhysicalVolume* 
 67 G4PVDivisionFactory::CreatePVDivision(const G4     85 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 68                              G4LogicalVolume*      86                              G4LogicalVolume* pLogical,
 69                              G4LogicalVolume*      87                              G4LogicalVolume* pMotherLogical,
 70                              const EAxis pAxis     88                              const EAxis pAxis,
 71                              const G4int nRepl     89                              const G4int nReplicas,
 72                              const G4double of     90                              const G4double offset )
 73 {                                                  91 {     
 74   // Create division - with number of division     92   // Create division - with number of divisions 
 75   // ---                                           93   // ---
 76                                                    94 
 77   return new G4PVDivision(pName, pLogical, pMo     95   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 78                           pAxis, nReplicas, of     96                           pAxis, nReplicas, offset);
 79 }                                                  97 }    
 80                                                    98 
 81 //____________________________________________     99 //_____________________________________________________________________________
 82                                                   100 
 83 G4VPhysicalVolume*                                101 G4VPhysicalVolume* 
 84 G4PVDivisionFactory::CreatePVDivision(const G4    102 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
 85                              G4LogicalVolume*     103                              G4LogicalVolume* pLogical,
 86                              G4LogicalVolume*     104                              G4LogicalVolume* pMotherLogical,
 87                              const EAxis pAxis    105                              const EAxis pAxis,
 88                              const G4double wi    106                              const G4double width,
 89                              const G4double of    107                              const G4double offset )
 90 {                                                 108 {     
 91   // Create division - with width                 109   // Create division - with width
 92   // ---                                          110   // ---
 93                                                   111 
 94   return new G4PVDivision(pName, pLogical, pMo    112   return new G4PVDivision(pName, pLogical, pMotherLogical, 
 95                           pAxis, width, offset    113                           pAxis, width, offset);
 96 }                                                 114 }    
 97                                                   115 
 98 //____________________________________________    116 //_____________________________________________________________________________
 99                                                   117 
100 G4VPhysicalVolume*                                118 G4VPhysicalVolume* 
101 G4PVDivisionFactory::CreatePVDivision(const G4    119 G4PVDivisionFactory::CreatePVDivision(const G4String& pName,
102                              G4LogicalVolume*     120                              G4LogicalVolume* pLogical,
103                              G4LogicalVolume*     121                              G4LogicalVolume* pMotherLogical,
104                              const G4VPVParame    122                              const G4VPVParameterisation* param)
105 {                                                 123 {     
106   // Create division - with parameterisation      124   // Create division - with parameterisation
107   // ---                                          125   // ---
108                                                   126 
109   // Get parameterisation data                    127   // Get parameterisation data
110   //                                              128   //
111   const auto divParam = dynamic_cast<const G4V << 129   const G4VDivisionParameterisation* divParam
                                                   >> 130     = dynamic_cast<const G4VDivisionParameterisation*>(param);
112                                                   131 
113   if (divParam == nullptr)                     << 132   if (!divParam)
114   {                                               133   {
115     G4Exception("G4PVDivisionFactory::CreatePV    134     G4Exception("G4PVDivisionFactory::CreatePVDivision()",
116                 "GeomDiv0001", FatalException,    135                 "GeomDiv0001", FatalException,
117                 "Unexpected parameterisation t    136                 "Unexpected parameterisation type!");
118     return nullptr;                            << 137     return 0;
119   }                                               138   }
120   else                                            139   else
121   {                                               140   {
122     EAxis axis = divParam->GetAxis();             141     EAxis axis = divParam->GetAxis();
123     G4int nofDivisions = divParam->GetNoDiv();    142     G4int nofDivisions = divParam->GetNoDiv();
124     G4double width = divParam->GetWidth();        143     G4double width = divParam->GetWidth();
125     G4double offset = divParam->GetOffset();      144     G4double offset = divParam->GetOffset();
126                                                   145 
127     return new G4PVDivision(pName, pLogical, p    146     return new G4PVDivision(pName, pLogical, pMotherLogical, 
128                             axis, nofDivisions    147                             axis, nofDivisions, width, offset);
129   }                                               148   }
130 }                                                 149 }    
131                                                   150 
132 //____________________________________________    151 //_____________________________________________________________________________
133                                                   152 
134 G4bool G4PVDivisionFactory::IsPVDivision(const    153 G4bool G4PVDivisionFactory::IsPVDivision(const G4VPhysicalVolume* pv) const
135 {                                                 154 { 
136   // Returns true if pv is division               155   // Returns true if pv is division
137   // ---                                          156   // ---
138                                                   157 
139   return dynamic_cast<const G4PVDivision*>(pv) << 158   if (dynamic_cast<const G4PVDivision*>(pv))
                                                   >> 159     return true;
                                                   >> 160   else
                                                   >> 161     return false;  
140 }                                                 162 }
141                                                   163 
142                                                   164