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

LCDXML2G4VXD Class Reference

#include <LCDXML2G4VXD.hh>

Collaboration diagram for LCDXML2G4VXD:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LCDXML2G4VXD ()
 LCDXML2G4VXD (G4VPhysicalVolume *momvol, LCDG4MaterialMgr *matmgr, LCD_Document *detdb, std::map< G4LogicalVolume *, G4int > *m)
 ~LCDXML2G4VXD ()
void SetMotherVolume (G4VPhysicalVolume *momvol)
void SetMaterialMgr (LCDG4MaterialMgr *matmgr)
int SetGeom (LCD_Document *detdb)
void SetDetTypeMap (std::map< G4LogicalVolume *, G4int > *m)
LCDG4VXDSDSetSensitiveDetector ()
int MakeBarrel (const int sysNo, const XERCES_CPP_NAMESPACE::DOM_Element &voldb, int *realLayer)
int MakeEndCap (const int sysNo, const XERCES_CPP_NAMESPACE::DOM_Element &voldb, int *realLayer)

Private Attributes

G4VPhysicalVolume * m_momvol
LCDG4MaterialMgrm_matmgr
LCDG4VXDSDm_vxdSD
std::map< G4LogicalVolume *,
G4int > * 
m_pdettype

Constructor & Destructor Documentation

XERCES_CPP_NAMESPACE_USE LCDXML2G4VXD::LCDXML2G4VXD  ) 
 

Definition at line 32 of file LCDXML2G4VXD.cc.

References m_matmgr, m_momvol, m_pdettype, and m_vxdSD.

00032                            {
00033   m_momvol   =0;
00034   m_matmgr   =0;
00035   m_vxdSD    =0;
00036   m_pdettype =0;
00037 }

LCDXML2G4VXD::LCDXML2G4VXD G4VPhysicalVolume *  momvol,
LCDG4MaterialMgr matmgr,
LCD_Document detdb,
std::map< G4LogicalVolume *, G4int > *  m
 

Definition at line 44 of file LCDXML2G4VXD.cc.

References m_vxdSD, SetDetTypeMap(), SetGeom(), SetMaterialMgr(), SetMotherVolume(), and SetSensitiveDetector().

00047                                                               {
00048   SetMotherVolume(momvol);
00049   SetMaterialMgr(matmgr);
00050   SetDetTypeMap(m);
00051   m_vxdSD=0;
00052   SetSensitiveDetector();
00053   SetGeom(detDb);
00054 }

LCDXML2G4VXD::~LCDXML2G4VXD  ) 
 

Definition at line 60 of file LCDXML2G4VXD.cc.

00060                             {
00061 }


Member Function Documentation

int LCDXML2G4VXD::MakeBarrel const int  sysNo,
const XERCES_CPP_NAMESPACE::DOM_Element &  voldb,
int *  realLayer
 

Referenced by SetGeom().

int LCDXML2G4VXD::MakeEndCap const int  sysNo,
const XERCES_CPP_NAMESPACE::DOM_Element &  voldb,
int *  realLayer
 

Referenced by SetGeom().

void LCDXML2G4VXD::SetDetTypeMap std::map< G4LogicalVolume *, G4int > *  m  )  [inline]
 

Definition at line 34 of file LCDXML2G4VXD.hh.

References m_pdettype.

Referenced by LCDXML2G4VXD().

00034 { m_pdettype=m; }

int LCDXML2G4VXD::SetGeom LCD_Document detdb  ) 
 

Definition at line 83 of file LCDXML2G4VXD.cc.

References LCD_Document::getElement(), m_matmgr, m_momvol, MakeBarrel(), MakeEndCap(), and SetSensitiveDetector().

Referenced by LCDXML2G4VXD().

00083                                              {
00084   // Make VXD detector geometry
00085   int iret=0;
00086 
00087   SetSensitiveDetector();
00088 
00089   // Check MotherVolume , Material Manager and detDB were set?
00090   if (m_momvol == 0) {
00091     fprintf(stderr,
00092             "LCDXML2G4VXD::SetGeom Error!!!"
00093             "MotherVolume was not set!!!\n");
00094   }
00095   if (m_matmgr == 0) {
00096     fprintf(stderr,
00097             "LCDXML2G4VXD::SetGeom Error!!! MaterialMgr was not set!!!\n");
00098   }
00099   if (detDb == 0) {
00100     fprintf(stderr,
00101             "LCDXML2G4VXD::SetGeom Error!!! detDb was not set!!!\n");
00102   }
00103   if (m_momvol == 0 || m_matmgr == 0 || detDb == 0) {
00104     return iret;
00105   }
00106 
00107 
00108   DOM_Element voldb;
00109 
00110   voldb=detDb->getElement("VERTEX_BARREL"); // BARREL
00111   if( voldb == DOM_Element() ) {
00112     G4cout<<"*** VERTEX_BARREL not found."<< G4endl;
00113   }
00114   else {
00115     int realLayer=0;
00116     if ((voldb.getTagName()).equals("volume")) {
00117       MakeBarrel(1,voldb,&realLayer);
00118     }
00119     else {
00120       // must be complex volume
00121       int iBarrel;
00122       DOM_NodeList volList = voldb.getElementsByTagName("volume");
00123       int nBarrel = volList.getLength();
00124       for (iBarrel=0 ; iBarrel < nBarrel ; iBarrel++) {
00125         DOM_Node node = volList.item(iBarrel);
00126         voldb = (DOM_Element &)node;
00127         MakeBarrel(1,voldb,&realLayer);
00128       }
00129     }
00130     iret=1;
00131   }
00132 
00133   voldb=detDb->getElement("VERTEX_BARREL_INTERMEDIATE"); // BARREL
00134   if( voldb != DOM_Element() ) {
00135     int realLayer=0;
00136     if ((voldb.getTagName()).equals("volume")) {
00137       MakeBarrel(2,voldb,&realLayer);
00138     } else {
00139       // must be complex volume
00140       int iBarrel;
00141       DOM_NodeList volList = voldb.getElementsByTagName("volume");
00142       int nBarrel = volList.getLength();
00143       for (iBarrel=0 ; iBarrel < nBarrel ; iBarrel++) {
00144         DOM_Node node = volList.item(iBarrel);
00145         voldb = (DOM_Element &)node;
00146         MakeBarrel(2,voldb,&realLayer);
00147       }
00148     }
00149     iret=1;
00150   }
00151 
00152   voldb=detDb->getElement("VERTEX_ENDCAP"); // ENDCAP
00153   if ( voldb == DOM_Element() ) {
00154     G4cout<<"*** VERTEX_ENDCAP not found."<< G4endl;
00155   }
00156   else {
00157     int realLayer=0;
00158     if ((voldb.getTagName()).equals("volume")) {
00159       MakeEndCap(0,voldb,&realLayer);
00160     } else {
00161       // must be complex volume
00162       int iBarrel;
00163       DOM_NodeList volList = voldb.getElementsByTagName("volume");
00164       int nBarrel = volList.getLength();
00165       for (iBarrel=0 ; iBarrel < nBarrel ; iBarrel++) {
00166         DOM_Node node = volList.item(iBarrel);
00167         voldb = (DOM_Element &)node;
00168         MakeEndCap(0,voldb,&realLayer);
00169       }
00170     }
00171     iret=1;
00172   }
00173 
00174   return iret;
00175 }

void LCDXML2G4VXD::SetMaterialMgr LCDG4MaterialMgr matmgr  )  [inline]
 

Definition at line 32 of file LCDXML2G4VXD.hh.

References m_matmgr.

Referenced by LCDXML2G4VXD().

00032 { m_matmgr = matmgr; }

void LCDXML2G4VXD::SetMotherVolume G4VPhysicalVolume *  momvol  )  [inline]
 

Definition at line 31 of file LCDXML2G4VXD.hh.

References m_momvol.

Referenced by LCDXML2G4VXD().

00031 { m_momvol = momvol; }

LCDG4VXDSD * LCDXML2G4VXD::SetSensitiveDetector  ) 
 

Definition at line 68 of file LCDXML2G4VXD.cc.

References m_vxdSD.

Referenced by LCDXML2G4VXD(), and SetGeom().

00068                                                {
00069   if (m_vxdSD == 0) {
00070     // Define Sensitive Detector Module
00071     G4SDManager* SDman = G4SDManager::GetSDMpointer();
00072     G4String vxdSDname = "/lcddet/vxd";
00073     m_vxdSD = new LCDG4VXDSD(vxdSDname);
00074     SDman->AddNewDetector(m_vxdSD);
00075   }
00076   return m_vxdSD;
00077 }


Member Data Documentation

LCDG4MaterialMgr* LCDXML2G4VXD::m_matmgr [private]
 

Definition at line 52 of file LCDXML2G4VXD.hh.

Referenced by LCDXML2G4VXD(), SetGeom(), and SetMaterialMgr().

G4VPhysicalVolume* LCDXML2G4VXD::m_momvol [private]
 

Definition at line 51 of file LCDXML2G4VXD.hh.

Referenced by LCDXML2G4VXD(), SetGeom(), and SetMotherVolume().

std::map<G4LogicalVolume*,G4int>* LCDXML2G4VXD::m_pdettype [private]
 

Definition at line 55 of file LCDXML2G4VXD.hh.

Referenced by LCDXML2G4VXD(), and SetDetTypeMap().

LCDG4VXDSD* LCDXML2G4VXD::m_vxdSD [private]
 

Definition at line 53 of file LCDXML2G4VXD.hh.

Referenced by LCDXML2G4VXD(), and SetSensitiveDetector().


The documentation for this class was generated from the following files:
Generated on Thu Oct 7 18:45:08 2004 for LCDG4 by doxygen 1.3.4