source: trunk/examples/novice/gemc/src/run_conditions.cc@ 1036

Last change on this file since 1036 was 807, checked in by garnier, 17 years ago

update

File size: 3.0 KB
RevLine 
[807]1// %%%%%%%%%%%%%
2// gemc headers
3// %%%%%%%%%%%%%
4#include "run_conditions.h"
5
6run_conditions::run_conditions(gemc_opts gemcOpt)
7{
8 string hd_msg = gemcOpt.args["LOG_MSG"].args + " gcard: >> " ;
9
10 string file = gemcOpt.args["gcard"].args;
11 if(file=="no") return;
12
13 QFile gcard(file.c_str());
14
15 if (!domDocument.setContent(&gcard))
16 {
17 gcard.close();
18 cout << hd_msg << " gcard format is wrong - check XML syntax. Exiting." << endl;
19 return;
20 }
21 gcard.close();
22
23 QDomElement docElem = domDocument.documentElement();
24 QDomNode n;
25
26
27 n = docElem.firstChild();
28 while(!n.isNull())
29 {
30 QDomElement e = n.toElement();
31 if(!e.isNull())
32 if(e.tagName().toStdString() == "sqltable")
33 {
34 string table_name = e.attributeNode("name").value().toStdString();
35 gTab_Vec.push_back(table_name);
36 }
37 n = n.nextSibling();
38 }
39
40
41 n = docElem.firstChild();
42 while(!n.isNull())
43 {
44 QDomElement e = n.toElement();
45 if(!e.isNull())
46 if(e.tagName().toStdString() == "detector")
47 {
48 gcard_detector gdet;
49 gdet.set_position("0*cm", "0*cm", "0*cm");
50 gdet.set_rotation("0*deg", "0*deg", "0*deg");
51
52 string det_name = e.attributeNode("name").value().toStdString();
53
54 QDomNode nn = e.firstChild();
55 while(!nn.isNull())
56 {
57 QDomElement ee = nn.toElement();
58 if(!ee.isNull())
59 {
60 if(ee.tagName().toStdString() == "position")
61 {
62 gdet.set_position(ee.attributeNode("x").value().toStdString(),
63 ee.attributeNode("y").value().toStdString(),
64 ee.attributeNode("z").value().toStdString());
65 }
66 if(ee.tagName().toStdString() == "rotation")
67 {
68 gdet.set_rotation(ee.attributeNode("x").value().toStdString(),
69 ee.attributeNode("y").value().toStdString(),
70 ee.attributeNode("z").value().toStdString());
71 }
72 }
73
74 nn = nn.nextSibling();
75 }
76 gDet_Map[det_name] = gdet;
77
78 }
79
80 n = n.nextSibling();
81 }
82
83 cout << hd_msg << " Importing SQL tables: " << endl << endl;
84 for(int i=0; i<gTab_Vec.size(); i++)
85 cout << " \"" << gTab_Vec[i] << "\"" << endl ;
86 cout << endl;
87}
88
89run_conditions::~run_conditions(){}
90
91
92void gcard_detector::set_position(string X, string Y, string Z)
93{
94 pos.setX(get_number(X));
95 pos.setY(get_number(Y));
96 pos.setZ(get_number(Z));
97}
98
99void gcard_detector::set_rotation(string X, string Y, string Z)
100{
101 rot = G4RotationMatrix(G4ThreeVector(1, 0, 0),
102 G4ThreeVector(0, 1, 0),
103 G4ThreeVector(0, 0, 1));
104
105 rot.rotateX(get_number(X));
106 rot.rotateY(get_number(Y));
107 rot.rotateZ(get_number(Z));
108}
109
110
Note: See TracBrowser for help on using the repository browser.