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

LCDXML2G4Cal Class Reference

#include <LCDXML2G4Cal.hh>

Collaboration diagram for LCDXML2G4Cal:

Collaboration graph
[legend]
List of all members.

Public Member Functions

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

Private Attributes

G4VPhysicalVolume * m_momvol
LCDG4MaterialMgrm_matmgr
LCDG4CalSDm_calSDBarrel
LCDG4CalSDm_calSDEndcap
std::map< G4LogicalVolume *,
G4int > * 
m_pdettype
G4int sysNo
G4String sysName
G4String radical
G4String xmlPrefix

Constructor & Destructor Documentation

XERCES_CPP_NAMESPACE_USE LCDXML2G4Cal::LCDXML2G4Cal  ) 
 

Definition at line 28 of file LCDXML2G4Cal.cc.

References m_calSDBarrel, m_calSDEndcap, m_matmgr, m_momvol, and m_pdettype.

00028                            {
00029   m_momvol = 0;
00030   m_matmgr = 0;
00031   m_pdettype = 0;
00032   m_calSDBarrel = 0;
00033   m_calSDEndcap = 0;
00034 }

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

Definition at line 39 of file LCDXML2G4Cal.cc.

References m_calSDBarrel, m_calSDEndcap, radical, SetDetTypeMap(), SetGeom(), SetMaterialMgr(), SetMotherVolume(), sysName, sysNo, and xmlPrefix.

00043                                         {
00044   SetMotherVolume(momvol);
00045   SetMaterialMgr(matmgr);
00046   SetDetTypeMap(m);
00047   m_calSDBarrel=0;
00048   m_calSDEndcap=0;
00049 
00050   sysNo = sysno;
00051   switch(sysNo) {
00052   case 10: // ECal
00053     sysName = "EM";
00054     xmlPrefix = "EM";
00055     radical = "ecal";
00056     break;
00057   case 12: // HCal
00058     sysName = "HD";
00059     xmlPrefix = "HAD";
00060     radical = "hcal";
00061     break;
00062   default:
00063     G4cout<< "LCDXML2G4Cal: Bad sysNo provided!!" << G4endl;
00064     exit(1);
00065   }
00066   SetGeom(detDb);
00067 }

LCDXML2G4Cal::~LCDXML2G4Cal  ) 
 

Definition at line 72 of file LCDXML2G4Cal.cc.

00072                             {
00073 }


Member Function Documentation

int LCDXML2G4Cal::MakeBarrel const XERCES_CPP_NAMESPACE::DOM_Element &  voldb,
int *  realLayer
 

Referenced by SetGeom().

int LCDXML2G4Cal::MakeEndCap const XERCES_CPP_NAMESPACE::DOM_Element &  voldb,
int *  realLayer
 

Referenced by SetGeom().

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

Definition at line 32 of file LCDXML2G4Cal.hh.

References m_pdettype.

Referenced by LCDXML2G4Cal().

00032 { m_pdettype=m; }

int LCDXML2G4Cal::SetGeom LCD_Document detdb  ) 
 

Definition at line 119 of file LCDXML2G4Cal.cc.

References LCD_Document::getElement(), m_calSDBarrel, m_calSDEndcap, m_matmgr, m_momvol, MakeBarrel(), MakeEndCap(), radical, SetSensitiveDetector(), and xmlPrefix.

Referenced by LCDXML2G4Cal().

00119                                              {
00120   // Build detector geometry
00121   int iret=0;
00122 
00123   // Check MotherVolume , Material Manager and detDB were set?
00124   if (m_momvol == 0) {
00125     G4cerr<<"LCDXML2G4Cal::SetGeom Error!!! MotherVolume was not set!!!\n";
00126   }
00127   if (m_matmgr == 0) {
00128     G4cerr<<"LCDXML2G4Cal::SetGeom Error!!! MaterialMgr was not set!!!\n";
00129   }
00130   if (detDb == 0) {
00131     G4cerr<<"LCDXML2G4Cal::SetGeom Error!!! detDb was not set!!!\n";
00132   }
00133   if (m_momvol == 0 || m_matmgr == 0 || detDb == 0) {
00134     return iret;
00135   }
00136 
00137   DOM_Element voldb;
00138 
00139   // ===  BARREL ===
00140 
00141   G4String xmlName = xmlPrefix+"_BARREL";
00142   voldb=detDb->getElement(xmlName.c_str());
00143 
00144   if( voldb == DOM_Element() ) {
00145     G4cout<<"*** "<<  xmlName << " not found."<< G4endl;
00146   }
00147   else {
00148     G4String SDname = radical + "B";
00149     m_calSDBarrel = SetSensitiveDetector( SDname, voldb );
00150 
00151     int realLayer=0;
00152     if ((voldb.getTagName()).equals("volume")) {
00153       MakeBarrel(voldb,&realLayer);
00154     } else {
00155       // must be complex volume
00156       int iBarrel;
00157       DOM_NodeList volList = voldb.getElementsByTagName("volume");
00158       int nBarrel = volList.getLength();
00159       for (iBarrel=0 ; iBarrel < nBarrel ; iBarrel++) {
00160         DOM_Node node = volList.item(iBarrel);
00161         voldb = (DOM_Element &)node;
00162         MakeBarrel(voldb,&realLayer);
00163       }
00164     }
00165     iret=1;
00166   }
00167 
00168   // ===  ENDCAP ===
00169 
00170   xmlName = xmlPrefix+"_ENDCAP";
00171   voldb=detDb->getElement(xmlName.c_str());
00172   if( voldb == DOM_Element() ) {
00173     G4cout<<"*** "<<  xmlName << " not found."<< G4endl;
00174   }
00175   else {
00176     G4String SDname = radical + "EC";
00177     m_calSDEndcap = SetSensitiveDetector( SDname, voldb );
00178 
00179     int realLayer=0;
00180     if ((voldb.getTagName()).equals("volume")) {
00181       MakeEndCap(voldb,&realLayer);
00182     } else {
00183       // must be complex volume
00184       int iBarrel;
00185       DOM_NodeList volList = voldb.getElementsByTagName("volume");
00186       int nBarrel = volList.getLength();
00187       for (iBarrel=0 ; iBarrel < nBarrel ; iBarrel++) {
00188         DOM_Node node = volList.item(iBarrel);
00189         voldb = (DOM_Element &)node;
00190         MakeEndCap(voldb,&realLayer);
00191       }
00192     }
00193     iret=1;
00194   }
00195 
00196   return iret;
00197 }

void LCDXML2G4Cal::SetMaterialMgr LCDG4MaterialMgr matmgr  )  [inline]
 

Definition at line 30 of file LCDXML2G4Cal.hh.

References m_matmgr.

Referenced by LCDXML2G4Cal().

00030 { m_matmgr = matmgr; }

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

Definition at line 29 of file LCDXML2G4Cal.hh.

References m_momvol.

Referenced by LCDXML2G4Cal().

00029 { m_momvol = momvol; }

LCDG4CalSD* LCDXML2G4Cal::SetSensitiveDetector G4String &  SDname,
const XERCES_CPP_NAMESPACE::DOM_Element &  voldb
 

Referenced by SetGeom().


Member Data Documentation

LCDG4CalSD* LCDXML2G4Cal::m_calSDBarrel [private]
 

Definition at line 48 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal(), and SetGeom().

LCDG4CalSD* LCDXML2G4Cal::m_calSDEndcap [private]
 

Definition at line 49 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal(), and SetGeom().

LCDG4MaterialMgr* LCDXML2G4Cal::m_matmgr [private]
 

Definition at line 47 of file LCDXML2G4Cal.hh.

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

G4VPhysicalVolume* LCDXML2G4Cal::m_momvol [private]
 

Definition at line 46 of file LCDXML2G4Cal.hh.

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

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

Definition at line 51 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal(), and SetDetTypeMap().

G4String LCDXML2G4Cal::radical [private]
 

Definition at line 54 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal(), and SetGeom().

G4String LCDXML2G4Cal::sysName [private]
 

Definition at line 53 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal().

G4int LCDXML2G4Cal::sysNo [private]
 

Definition at line 52 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal().

G4String LCDXML2G4Cal::xmlPrefix [private]
 

Definition at line 55 of file LCDXML2G4Cal.hh.

Referenced by LCDXML2G4Cal(), and SetGeom().


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