Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/g3tog4/src/G4gspos.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 /g3tog4/src/G4gspos.cc (Version 11.3.0) and /g3tog4/src/G4gspos.cc (Version 6.1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
 26 //                                                 23 //
                                                   >>  24 // $Id: G4gspos.cc,v 1.12 2001/07/11 09:59:02 gunter Exp $
                                                   >>  25 // GEANT4 tag $Name: geant4-05-02-patch-01 $
 27 //                                                 26 //
 28 // by I.Hrivnacova, 13.10.99                       27 // by I.Hrivnacova, 13.10.99
 29                                                    28 
 30 #include "G3G4Interface.hh"                        29 #include "G3G4Interface.hh"
 31 #include "G3VolTable.hh"                           30 #include "G3VolTable.hh"
 32 #include "G3toG4.hh"                               31 #include "G3toG4.hh"
 33 #include "G3Pos.hh"                                32 #include "G3Pos.hh"
 34 #include "globals.hh"                              33 #include "globals.hh"
 35 #include "G4SystemOfUnits.hh"                  << 
 36                                                    34 
 37 void G4CreateCloneVTE(G3VolTableEntry* vte, G3     35 void G4CreateCloneVTE(G3VolTableEntry* vte, G3VolTableEntry* mvte,
 38               G4double pars[], G4int npar, G4i     36               G4double pars[], G4int npar, G4int num,
 39               G4double x, G4double y, G4double     37               G4double x, G4double y, G4double z, G4int irot, G4String vonly);
 40                                                    38 
 41 void PG4gspos(G4String *tokens)                <<  39 void PG4gspos(G4String tokens[])
 42 {                                                  40 {
 43         // fill the parameter containers           41         // fill the parameter containers
 44     G3fillParams(tokens,PTgspos);                  42     G3fillParams(tokens,PTgspos);
 45                                                    43   
 46         // interpret the parameters                44         // interpret the parameters
 47     G4String name = Spar[0];                       45     G4String name = Spar[0];
 48     G4String moth = Spar[1];                       46     G4String moth = Spar[1];
 49     G4String only = Spar[2];                       47     G4String only = Spar[2];
 50     G4int num = Ipar[0];                           48     G4int num = Ipar[0];
 51     G4int irot = Ipar[1];                          49     G4int irot = Ipar[1];
 52         // all parameters are passed to G4gsxx     50         // all parameters are passed to G4gsxxx methods
 53         // in G3 default units                     51         // in G3 default units         
 54     //G4double x = Rpar[0]*cm;                     52     //G4double x = Rpar[0]*cm;
 55     //G4double y = Rpar[1]*cm;                     53     //G4double y = Rpar[1]*cm;
 56     //G4double z = Rpar[2]*cm;                     54     //G4double z = Rpar[2]*cm;
 57     G4double x = Rpar[0];                          55     G4double x = Rpar[0];
 58     G4double y = Rpar[1];                          56     G4double y = Rpar[1];
 59     G4double z = Rpar[2];                          57     G4double z = Rpar[2];
 60                                                    58   
 61     G4gspos(name, num, moth, x, y, z, irot, on     59     G4gspos(name, num, moth, x, y, z, irot, only);
 62 }                                                  60 }
 63                                                    61 
 64 void G4gspos(G4String vname, G4int num, G4Stri     62 void G4gspos(G4String vname, G4int num, G4String vmoth, G4double x,
 65              G4double y, G4double z, G4int iro     63              G4double y, G4double z, G4int irot, G4String vonly)
 66 {                                                  64 {
 67   // find VTEs                                     65   // find VTEs
 68   G3VolTableEntry* vte = G3Vol.GetVTE(vname);      66   G3VolTableEntry* vte = G3Vol.GetVTE(vname);
 69   G3VolTableEntry* mvte = G3Vol.GetVTE(vmoth);     67   G3VolTableEntry* mvte = G3Vol.GetVTE(vmoth);
 70                                                    68 
 71   if (vte == 0) {                                  69   if (vte == 0) {
 72     G4String text = "G4gspos: '" + vname + "'  <<  70     G4Exception("G4gspos: '" + vname + "' has no VolTableEntry");
 73     G4Exception("G4gspos()", "G3toG40017", Fat << 
 74     return;                                    << 
 75   }                                                71   } 
 76   else if (mvte == 0) {                            72   else if (mvte == 0) {
 77     G4String text = "G4gspos: '" + vmoth + "'  <<  73     G4Exception("G4gspos: '" + vmoth + "' has no VolTableEntry");
 78     G4Exception("G4gspos()", "G3toG40018", Fat << 
 79     return;                                    << 
 80   }                                                74   } 
 81   else {                                           75   else { 
 82     if (!vte->HasNegPars()) {                      76     if (!vte->HasNegPars()) {
 83       // position vector                           77       // position vector
 84       G4ThreeVector* offset = new G4ThreeVecto     78       G4ThreeVector* offset = new G4ThreeVector(x*cm, y*cm, z*cm);
 85                                                    79 
 86       // create a G3Pos object and add it to t     80       // create a G3Pos object and add it to the vte
 87       G3Pos* aG3Pos = new G3Pos(vmoth, num, of     81       G3Pos* aG3Pos = new G3Pos(vmoth, num, offset, irot, vonly);              
 88       vte->AddG3Pos(aG3Pos);                       82       vte->AddG3Pos(aG3Pos);
 89                                                    83 
 90       // loop over all mothers                     84       // loop over all mothers
 91       for (G4int i=0; i<mvte->GetNoClones(); i     85       for (G4int i=0; i<mvte->GetNoClones(); i++) {
 92                        // (mvte is retrieved f     86                        // (mvte is retrieved from its "master" name
 93                        //  -> there is no need     87                        //  -> there is no need to call GetMasterClone()
 94         G3VolTableEntry* mvteClone = mvte->Get     88         G3VolTableEntry* mvteClone = mvte->GetClone(i);
 95         vte->AddMother(mvteClone);                 89         vte->AddMother(mvteClone);
 96         mvteClone->AddDaughter(vte);               90         mvteClone->AddDaughter(vte);
 97       }                                            91       }     
 98     }                                              92     } 
 99     else {                                         93     else {
100       // if vte has neg parameters                 94       // if vte has neg parameters 
101       // a new vte clone copy is created for e     95       // a new vte clone copy is created for each mother (clone copy)  
102       // and its parameters are derived from i     96       // and its parameters are derived from it if possible
103                                                    97 
104       G4CreateCloneVTE(vte, mvte, vte->GetRpar     98       G4CreateCloneVTE(vte, mvte, vte->GetRpar(), vte->GetNpar(), num,
105                      x, y, z, irot, vonly);        99                      x, y, z, irot, vonly);
106     }                                             100     }    
107   }                                               101   }      
108 }                                                 102 }
109                                                   103