Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

GLG4_PMT_LogicalVolume.hh

00001 // This file is part of the GenericLAND software library.
00002 // $Id: GLG4_PMT_LogicalVolume.hh,v 1.1.1.1 2004/12/21 22:29:48 GLG4sim Exp $
00003 //
00004 // GLG4_PMT_LogicalVolume.hh
00005 // defines classes for constructing PMT assemblies for GenericLAND
00006 // Original by Glenn Horton-Smith, Dec 1999
00007 #ifndef __GLG4_PMT_LogicalVolume_hh__
00008 #define __GLG4_PMT_LogicalVolume_hh__
00009 
00010 #include "G4LogicalVolume.hh"
00011 
00012 class G4Material;
00013 class G4OpticalSurface;
00014 
00015 typedef enum
00016 { kPmtStyle_TorusStack, kPmtStyle_Ellipsoid } ePmtStyle;
00017 
00018 // GLG4_PMT_LogicalVolume is parent class for specific tube classes below
00019 class GLG4_PMT_LogicalVolume : public G4LogicalVolume {
00020 public:
00021   
00022   GLG4_PMT_LogicalVolume
00023     (const G4String& plabel, // label -- subvolume names are derived from this
00024      G4double r_bound,       // radius of bounding cylinder
00025      G4double hh_bound,      // half height of bounding cylinder
00026      G4Material* ExteriorMat);  // material which fills the bounding cylinder
00027 
00028   G4double GetZEquator() { return z_equator; }
00029   
00030 protected:
00031   G4double z_equator;        // Z location of equator of tube
00032 
00033   static G4OpticalSurface* our_Mirror_opsurf;
00034   
00035   void ConstructPMT_UsingTorusStack
00036    (const G4int n_edge,
00037     const G4double outer_z_edge[],
00038     const G4double outer_rho_edge[],
00039     const G4double outer_z_o[],
00040     G4double r_dynode,     // radius of dynode stack
00041     G4double z_dynode,     // z coordinate of top of dynode stack, equator=0.
00042     G4double d_wall,       // thickness of the walls
00043     G4Material* Exterior,          // material outside tube
00044     G4Material* Glass,             // glass material
00045     G4OpticalSurface* Photocathode_opsurf,  // photocathode surface
00046     G4Material* PMT_Vac,           // tube interior
00047     G4Material* Dynode_mat,        // dynode stack metal
00048     G4VSensitiveDetector *detector // sensitive detector hook
00049    );
00050     
00051   void ConstructPMT_UsingEllipsoid
00052    (G4double r_equat,      // equatorial radius of phototube
00053     G4double h_face,       // height of face above eq.
00054     G4double h_back,       // depth of back below eq.
00055     G4double r_stem,       // radius of stem
00056     G4double l_stem,       // length of stem
00057     G4double r_dynode,     // radius of dynode stack
00058     G4double z_dynode,     // z coordinate of top of dynode stack, equator=0.
00059     G4double d_wall,       // thickness of the walls
00060     G4Material* Exterior,          // material outside tube
00061     G4Material* Glass,             // glass material
00062     G4OpticalSurface* Photocathode_opsurf,  // photocathode surface
00063     G4Material* PMT_Vac,           // tube interior
00064     G4Material* Dynode_mat,        // dynode stack metal
00065     G4VSensitiveDetector *detector // sensitive detector hook
00066    );
00067 };
00068 
00069 // Hamamatsu R7250 PMT (so-called "17-inch") with optional face mask:
00070 // note that the R7250 has the same outside shape and size as the
00071 // R3600 "20-inch" PMT, but has less usable photocathode area.
00072 class GLG4_17inch_LogicalVolume : public GLG4_PMT_LogicalVolume {
00073 public:
00074   
00075   GLG4_17inch_LogicalVolume
00076     (const G4String& plabel, // label -- subvolume names are derived from this
00077      G4Material* ExteriorMat,// material which fills the bounding cylinder
00078      G4Material* GlassMat,   // glass material
00079      G4OpticalSurface* Photocathode_opsurf,  // photocathode surface
00080      G4Material* PMT_Vacuum, // vacuum inside tube
00081      G4Material* DynodeMat,  // dynode material
00082      G4Material* MaskMat,    // material for photocathode mask (e.g, blk acryl)
00083                              // OK to set MaskMat == NULL for no mask
00084      G4VSensitiveDetector *detector, // sensitive detector hook
00085      ePmtStyle PmtStyle      // PMT approx. style (TorusStack or Ellipsoid)
00086      );  
00087 };
00088 
00089 
00090 // Hamamatsu R3600 ("20-inch") PMT with optional face mask
00091 class GLG4_20inch_LogicalVolume : public GLG4_PMT_LogicalVolume {
00092 public:
00093   
00094   GLG4_20inch_LogicalVolume
00095     (const G4String& plabel, // label -- subvolume names are derived from this
00096      G4Material* ExteriorMat,// material which fills the bounding cylinder
00097      G4Material* GlassMat,   // glass material
00098      G4OpticalSurface* Photocathode_opsurf,  // photocathode surface
00099      G4Material* PMT_Vacuum, // vacuum inside tube
00100      G4Material* DynodeMat,  // dynode material
00101      G4Material* MaskMat,    // material for photocathode mask (e.g, blk acryl)
00102                              // OK to set MaskMat == NULL for no mask
00103      G4VSensitiveDetector *detector, // sensitive detector hook
00104      ePmtStyle PmtStyle      // PMT approx. style (TorusStack or Ellipsoid)
00105      );  
00106 };
00107 
00108 
00109 // Hamamatsu R1408 ("8-inch") PMT with optional face mask
00110 //  (note R5912 and R4558 use same glass envelope, but dynode may be different)
00111 class GLG4_8inch_LogicalVolume : public GLG4_PMT_LogicalVolume {
00112 public:
00113   
00114   GLG4_8inch_LogicalVolume
00115     (const G4String& plabel, // label -- subvolume names are derived from this
00116      G4Material* ExteriorMat,// material which fills the bounding cylinder
00117      G4Material* GlassMat,   // glass material
00118      G4OpticalSurface* Photocathode_opsurf,  // photocathode surface
00119      G4Material* PMT_Vacuum, // vacuum inside tube
00120      G4Material* DynodeMat,  // dynode material
00121      G4Material* MaskMat,    // material for photocathode mask (e.g, blk acryl)
00122                              // OK to set MaskMat == NULL for no mask
00123      G4VSensitiveDetector *detector, // sensitive detector hook
00124      ePmtStyle PmtStyle      // PMT approx. style (TorusStack or Ellipsoid)
00125      );  
00126 };
00127 
00128 class GLG4_5inch_LogicalVolume : public GLG4_PMT_LogicalVolume {
00129 public:
00130   
00131   GLG4_5inch_LogicalVolume
00132     (const G4String& plabel, // label -- subvolume names are derived from this
00133      G4Material* ExteriorMat,// material which fills the bounding cylinder
00134      G4Material* GlassMat,   // glass material
00135      G4OpticalSurface* Photocathode_opsurf,  // photocathode surface
00136      G4Material* PMT_Vacuum, // vacuum inside tube
00137      G4Material* DynodeMat,  // dynode material
00138      G4Material* MaskMat,    // material for photocathode mask (e.g, blk acryl)
00139                              // OK to set MaskMat == NULL for no mask
00140      G4VSensitiveDetector *detector, // sensitive detector hook
00141      ePmtStyle PmtStyle      // PMT approx. style (TorusStack or Ellipsoid)
00142      );  
00143 };
00144 
00145 #endif /*__GLG4_PMT_LogicalVolume_hh__*/
00146 
00147 

Generated on Fri Jul 6 13:31:46 2007 for GLG4sim by  doxygen 1.3.9.1