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

LCDXML2G4DetConst Class Reference

#include <LCDXML2G4DetConst.hh>

Inheritance diagram for LCDXML2G4DetConst:

Inheritance graph
[legend]
Collaboration diagram for LCDXML2G4DetConst:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LCDXML2G4DetConst ()
 LCDXML2G4DetConst (const char *xmlfilename)
 ~LCDXML2G4DetConst ()
G4VPhysicalVolume * Construct ()
int SetXMLFile (const char *xmlfile)
std::map< G4LogicalVolume *,
G4int > * 
GetDetTypeMap ()

Private Attributes

LCD_Documentm_detdb
std::map< G4LogicalVolume *,
G4int > 
m_dettype

Constructor & Destructor Documentation

XERCES_CPP_NAMESPACE_USE LCDXML2G4DetConst::LCDXML2G4DetConst  ) 
 

Definition at line 56 of file LCDXML2G4DetConst.cc.

References m_detdb, and m_dettype.

00056                                      {
00057   m_detdb=0;
00058   if (m_dettype.size()) {
00059     m_dettype.clear();
00060   }
00061 }

LCDXML2G4DetConst::LCDXML2G4DetConst const char *  xmlfilename  ) 
 

Definition at line 67 of file LCDXML2G4DetConst.cc.

References m_dettype, and SetXMLFile().

00067                                                        {
00068   if (m_dettype.size()) {
00069     m_dettype.clear();
00070   }
00071   SetXMLFile(xmlfile);
00072 }

LCDXML2G4DetConst::~LCDXML2G4DetConst  ) 
 

Definition at line 78 of file LCDXML2G4DetConst.cc.

00078                                      {
00079 }


Member Function Documentation

G4VPhysicalVolume * LCDXML2G4DetConst::Construct  ) 
 

Definition at line 112 of file LCDXML2G4DetConst.cc.

References cm, LCD_Document::eltPresent(), LCD_Document::getElement(), LCDG4MaterialMgr::GetMaterial(), LCDG4MaterialMgr::Init(), m_detdb, and m_dettype.

00112                                                 {
00113   //-------------------------------------------------------------------------
00114   // Magnetic field
00115   //-------------------------------------------------------------------------
00116 
00117   static G4bool fieldIsInitialized = false;
00118   if(!fieldIsInitialized)  {
00119     if (m_detdb->eltPresent("COIL")) {
00120       /*XERCES_CPP_NAMESPACE::*/DOM_Element coilDb =
00121         m_detdb->getElement(DOMString("COIL"), DOMString("volume"));
00122       LCDXML2G4Field* myField = new LCDXML2G4Field(coilDb);
00123       G4FieldManager* fieldMgr
00124         = G4TransportationManager::GetTransportationManager()
00125         ->GetFieldManager();
00126       fieldMgr->SetDetectorField(myField);
00127       fieldMgr->CreateChordFinder(myField);
00128       fieldIsInitialized = true;
00129     }
00130   }
00131 
00132   //-------------------------------------------------------------------------
00133   // Detector geometry
00134   //-------------------------------------------------------------------------
00135   LCDG4MaterialMgr matmgr;
00136   matmgr.Init();
00137 
00138   G4Material* mat=0;
00139 
00140   //------------------------------ experimental hall
00141   mat=matmgr.GetMaterial("Air");
00142   G4Box * experimentalHall_box
00143     = new G4Box("expHall_b",1000*cm,1000*cm,1200*cm);
00144   G4LogicalVolume * experimentalHall_log
00145     = new G4LogicalVolume(experimentalHall_box,mat,"expHall_L",0,0,0);
00146   G4VPhysicalVolume * experimentalHall_phys
00147     = new G4PVPlacement(0,G4ThreeVector(),"expHall_P",
00148                         experimentalHall_log,0,false,0);
00149   G4VisAttributes* experimentalHallVisAtt
00150     = new G4VisAttributes(G4Colour(1.0,1.0,1.0));
00151   experimentalHallVisAtt->SetForceWireframe(true);
00152   experimentalHall_log->SetVisAttributes(experimentalHallVisAtt);
00153   m_dettype.insert(std::pair<G4LogicalVolume*,G4int>(experimentalHall_log,1));
00154 
00155   //------------------------------ vertex detector
00156   if (m_detdb->eltPresent("VERTEX_BARREL")) {
00157     printf("LCDXML2G4DetConst::Construct Vertex\n");
00158     LCDXML2G4VXD xml2vxd(experimentalHall_phys,&matmgr,m_detdb,&m_dettype);
00159   }
00160 
00161   //------------------------------ tracker
00162   if (m_detdb->eltPresent("TRACK_BARREL") ||
00163       m_detdb->eltPresent("TRACK_ENDCAP") ||
00164       m_detdb->eltPresent("TRACK_BARREL_INTERMEDIATE")) {
00165     printf("LCDXML2G4DetConst::Construct Tracker\n");
00166     LCDXML2G4Tracker xml2trk(experimentalHall_phys,&matmgr,m_detdb,&m_dettype);
00167   }
00168 
00169   //------------------------------ lum
00170   if (m_detdb->eltPresent("LUM_ENDCAP")) {
00171     printf("LCDXML2G4DetConst::Construct Lum.\n");
00172     LCDXML2G4Lum xml2lum(experimentalHall_phys,&matmgr,m_detdb,&m_dettype);
00173   }
00174 
00175   //------------------------------ EMCal
00176   if (m_detdb->eltPresent("EM_BARREL") ||
00177       m_detdb->eltPresent("EM_ENDCAP") ){
00178     printf("LCDXML2G4DetConst::Construct EMCal.\n");
00179     LCDXML2G4Cal xml2ecl(experimentalHall_phys,&matmgr,m_detdb,&m_dettype,10);
00180   }
00181 
00182   //------------------------------ HDCal
00183   if (m_detdb->eltPresent("HAD_BARREL") ||
00184       m_detdb->eltPresent("HAD_ENDCAP") ){
00185     printf("LCDXML2G4DetConst::Construct HDCal.\n");
00186     LCDXML2G4Cal xml2hcl(experimentalHall_phys,&matmgr,m_detdb,&m_dettype,12);
00187   }
00188 
00189   //------------------------------ muon
00190   if (m_detdb->eltPresent("MUON_BARREL") ||
00191       m_detdb->eltPresent("MUON_ENDCAP") ){
00192     printf("LCDXML2G4DetConst::Construct Muon.\n");
00193     LCDXML2G4Muon xml2muo(experimentalHall_phys,&matmgr,m_detdb,&m_dettype);
00194   }
00195 
00196   //------------------------------ Inactive Volumes
00197   printf("LCDXML2G4DetConst::Construct Inactive Volumes.\n");
00198   LCDXML2G4InactiveVolume xml2ina(experimentalHall_phys,&matmgr,m_detdb,
00199                                   &m_dettype);
00200 
00201   return experimentalHall_phys;
00202 }

std::map<G4LogicalVolume*,G4int>* LCDXML2G4DetConst::GetDetTypeMap  )  [inline]
 

Definition at line 31 of file LCDXML2G4DetConst.hh.

References m_dettype.

Referenced by main().

00031 { return &m_dettype; }

int LCDXML2G4DetConst::SetXMLFile const char *  xmlfile  ) 
 

Definition at line 84 of file LCDXML2G4DetConst.cc.

References FileExists(), m_detdb, and LCD_DocManager::makeDocument().

Referenced by LCDXML2G4DetConst().

00084                                                     {
00085   // always tell about xml file JM 08-29-03
00086   G4String g4file = G4String((char *)xmlfile);
00087 
00088   if (FileExists(xmlfile))
00089     G4cout << "Found XML input file <" << g4file << ">." << G4endl;
00090   else
00091     {
00092       G4cerr << "Fatal error: document not found <" << g4file << ">" << G4endl;
00093       exit(1);
00094     }
00095 
00096   // don't these people use G4cout for gods sake
00097   G4cout << "Making XML document..." << "<" << g4file << ">." << G4endl;
00098 
00099   // Make an LCD document and parse it
00100   m_detdb = LCD_DocManager::makeDocument(xmlfile);
00101   if (!m_detdb) {
00102     fprintf(stderr,
00103             " ===> LCDXML2G4DetConst::SetXMLFile Irrecoverable error.  Bye\n");
00104     return 0;
00105   }
00106   return 1;
00107 }


Member Data Documentation

LCD_Document* LCDXML2G4DetConst::m_detdb [private]
 

Definition at line 34 of file LCDXML2G4DetConst.hh.

Referenced by Construct(), LCDXML2G4DetConst(), and SetXMLFile().

std::map<G4LogicalVolume*,G4int> LCDXML2G4DetConst::m_dettype [private]
 

Definition at line 35 of file LCDXML2G4DetConst.hh.

Referenced by Construct(), GetDetTypeMap(), and LCDXML2G4DetConst().


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