Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

MaGeGeneratorPositionSampling.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * DISCLAIMER                                                       *
00004 // *                                                                  *
00005 // * Neither the authors of this software system, nor their employing *
00006 // * institutes,nor the agencies providing financial support for this *
00007 // * work  make  any representation or  warranty, express or implied, *
00008 // * regarding  this  software system or assume any liability for its *
00009 // * use.                                                             *
00010 // *                                                                  *
00011 // ********************************************************************
00012 //
00013 // This class is supposed to sample the position of the primary 
00014 // particle randomly in a volume or on a surface. The actual 
00015 // algorithms are not implemented, but the interfaces are ok
00016 //
00017 // History:
00018 // --------
00019 // 28 Oct 2004   L.Pandola    First implementation (interfaces ok)
00020 // 19 Nov 2004   Luciano      Implemented a modified 
00021 //                            version of Dave Jordan algorithm
00022 
00023 #ifndef MaGeGeneratorPositionSampling_h
00024 #define MaGeGeneratorPositionSampling_h 1
00025 
00026 #include "globals.hh"
00027 #include "G4ThreeVector.hh"
00028 #include "G4VSolid.hh"
00029 #include "G4VPhysicalVolume.hh"
00030 #include "G4RotationMatrix.hh"
00031 #include "G4Point3D.hh"
00032 #include <vector>
00033 #include "G4Navigator.hh"
00034 #include "G4TouchableHistory.hh"
00035 
00036 //This class is supposed to sample one random point uniformly from 
00037 //a given volume or from a surface
00038 
00039 class MJGeneratorUtil;
00040 class G4Navigator;
00041 class G4VPhysicalVolume;
00042 class MaGeGeneratorPositionSampling 
00043 {
00044 public:
00045   MaGeGeneratorPositionSampling(); 
00046   ~MaGeGeneratorPositionSampling();
00047   
00048   G4ThreeVector SampleUniformlyInVolume(G4String volName,G4int copynumber);
00049   G4ThreeVector SampleOnSurface(G4String volName,G4int copynumber);
00050 
00051   void SetGlobalTranslation(G4ThreeVector vect) {globalTranslation = vect;};
00052   void SetGlobalRotation(G4RotationMatrix mat) {globalRotation = mat;};
00053   G4ThreeVector GetGlobalTranslation() {return globalTranslation;};
00054   G4RotationMatrix GetGlobalRotation() {return globalRotation;};
00055 
00056 private:
00057   G4String volumeName;
00058   MJGeneratorUtil* generatorUtil;
00059   G4bool InitializeSamplingVolume();
00060   G4int copyNumber;
00061 
00062   G4Navigator* myNavigator;
00063   G4VPhysicalVolume* myVolume;
00064 
00065   G4RotationMatrix globalRotation;
00066   G4ThreeVector globalTranslation;
00067 
00068   G4double radius;
00069 
00070   G4GeometryType fSolid_type;
00071   G4double fSolid_par_arr[6];
00072 
00073   G4VPhysicalVolume* FindTheDirectMother(G4VPhysicalVolume*);
00074 
00075 };
00076 #endif

Generated on Mon Nov 29 16:58:50 2004 for Majorana Simulation by  doxygen 1.3.9.1