#include <LCDXML2G4DetConst.hh>
Inheritance diagram for LCDXML2G4DetConst:


Public Member Functions | |
| LCDXML2G4DetConst () | |
| LCDXML2G4DetConst (const char *xmlfilename) | |
| ~LCDXML2G4DetConst () | |
| G4VPhysicalVolume * | Construct () |
| int | SetXMLFile (const char *xmlfile) |
| std::map< G4LogicalVolume *, G4int > * | GetDetTypeMap () |
Private Attributes | |
| LCD_Document * | m_detdb |
| std::map< G4LogicalVolume *, G4int > | m_dettype |
|
|
Definition at line 56 of file LCDXML2G4DetConst.cc. References m_detdb, and m_dettype.
|
|
|
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 }
|
|
|
Definition at line 78 of file LCDXML2G4DetConst.cc.
00078 {
00079 }
|
|
|
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 }
|
|
|
Definition at line 31 of file LCDXML2G4DetConst.hh. References m_dettype. Referenced by main().
00031 { return &m_dettype; }
|
|
|
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 }
|
|
|
Definition at line 34 of file LCDXML2G4DetConst.hh. Referenced by Construct(), LCDXML2G4DetConst(), and SetXMLFile(). |
|
|
Definition at line 35 of file LCDXML2G4DetConst.hh. Referenced by Construct(), GetDetTypeMap(), and LCDXML2G4DetConst(). |
1.3.4