CMS 3D CMS Logo

Functions
insertMaterial Namespace Reference

Functions

def createCompositeMaterial (doc, rootNode, name, density, fractions, method="mixture by weight", symbol=" ")
 
def dokument (domina)
 
def getAttributes (node)
 
def getMaterial (material, fileName)
 
def getMaterialSection (rootNode)
 
def getNodes (rootNode, name)
 
def getSection (rootNode, name)
 
def main ()
 
def prettierprint (dom)
 
def printMaterials (rootNode)
 
def readFractions (fileName, materialMap)
 
def readXML (fileName)
 

Function Documentation

def insertMaterial.createCompositeMaterial (   doc,
  rootNode,
  name,
  density,
  fractions,
  method = "mixture by weight",
  symbol = " " 
)

Definition at line 140 of file insertMaterial.py.

References getNodes(), and str.

Referenced by main().

140 def createCompositeMaterial(doc,rootNode,name, density,fractions,method="mixture by weight", symbol=" "):
141  newMaterial = doc.createElement("CompositeMaterial")
142  newMaterial.setAttribute("name",name)
143  newMaterial.setAttribute("density",density)
144  newMaterial.setAttribute("method",method)
145  newMaterial.setAttribute("symbol",symbol)
146 
147  for fracMaterialName in fractions:
148  fraction = doc.createElement("MaterialFraction")
149  fraction.setAttribute("fraction",str(fractions[fracMaterialName]))
150  newMaterial.appendChild(fraction)
151  fracMaterial = doc.createElement("rMaterial")
152  fracMaterial.setAttribute("name",fracMaterialName)
153  fraction.appendChild(fracMaterial)
154 
155  exMaterials = getNodes(rootNode,"CompositeMaterial")
156  if name in exMaterials:
157  rootNode.replaceChild(newMaterial,exMaterials[name])
158  else:
159  rootNode.appendChild(newMaterial)
160 
161 #main
def getNodes(rootNode, name)
def createCompositeMaterial(doc, rootNode, name, density, fractions, method="mixture by weight", symbol=" ")
#define str(s)
def insertMaterial.dokument (   domina)

Definition at line 104 of file insertMaterial.py.

References getAttributes(), and edm.print().

104 def dokument(domina):
105  for node in domina.childNodes:
106  print("NodeName:", node.nodeName, end=' ')
107  if node.nodeType == node.ELEMENT_NODE:
108  print("Typ ELEMENT_NODE")
109  print(getAttributes(node))
110  elif node.nodeType == node.TEXT_NODE:
111  print("Typ TEXT_NODE, Content: ", node.nodeValue.strip())
112  elif node.nodeType == node.COMMENT_NODE:
113  print("Typ COMMENT_NODE, ")
114  #dokument(node)
115 
116 #prints all CompositeMaterials beneeth [rootNode]
117 #(not used but interessting for debug)
def dokument(domina)
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def getAttributes(node)
def insertMaterial.getAttributes (   node)

Definition at line 95 of file insertMaterial.py.

Referenced by dokument(), and printMaterials().

95 def getAttributes(node):
96  result = {};
97  for i in range(0,node.attributes.length):
98 # print " "+node.attributes.item(i).name+" = "+node.attributes.item(i).nodeValue
99  result[node.attributes.item(i).name] = node.attributes.item(i).nodeValue
100  return result
101 
102 #print information on all subnodes of [domina]
103 #(not used but interessting for debug)
def getAttributes(node)
def insertMaterial.getMaterial (   material,
  fileName 
)

Definition at line 44 of file insertMaterial.py.

Referenced by readFractions().

44 def getMaterial(material, fileName):
45  materialMap ={}
46  file = open(fileName,"r")
47  for line in file:
48  line = line.strip("\n")
49  content = line.split()
50  if len(content) == 2:
51  materialMap[content[0]] = content[1]
52  if material in materialMap:
53  result = materialMap[material]+":"+material
54  else:
55  result = "materials:"+material
56  return result
57 
58 #parse XML-File
def getMaterial(material, fileName)
def insertMaterial.getMaterialSection (   rootNode)

Definition at line 132 of file insertMaterial.py.

References getSection().

Referenced by main().

132 def getMaterialSection(rootNode):
133  dddef = getSection(rootNode,'DDDefinition')
134  matSec = getSection(dddef,'MaterialSection')
135  return matSec
136 
137 #creates a CompositeMaterial with [name] [method] [density] and [symbol] beneeth [rootNode].
138 #fractions is a map of material Names containing the fractions
139 #NOTE: if an material of that name allready exists it will be overridden.
def getSection(rootNode, name)
def getMaterialSection(rootNode)
def insertMaterial.getNodes (   rootNode,
  name 
)

Definition at line 76 of file insertMaterial.py.

Referenced by L1TStage2Layer2Producer.beginRun(), createCompositeMaterial(), and printMaterials().

76 def getNodes(rootNode, name):
77  result = {}
78  for node in rootNode.childNodes:
79  if node.nodeName == name and node.nodeType == node.ELEMENT_NODE:
80  for i in range(0,node.attributes.length):
81  if node.attributes.item(i).name == "name":
82  result[node.attributes.item(i).nodeValue] = node
83  return result
84 #returns a pretty printed string of [dom] withot whitespace-only-lines
def getNodes(rootNode, name)
def insertMaterial.getSection (   rootNode,
  name 
)

Definition at line 66 of file insertMaterial.py.

Referenced by getMaterialSection(), METCorrectorParametersCollection.getSections(), MEtXYcorrectParametersCollection.getSections(), JetCorrectorParametersCollection.getSections(), JetCorrectorParameters.JetCorrectorParameters(), METCorrectorParameters.METCorrectorParameters(), MEtXYcorrectParameters.MEtXYcorrectParameters(), and std::hash< std::tuple<> >.operator()().

66 def getSection(rootNode, name):
67  result = None
68  for node in rootNode.childNodes:
69  if node.nodeName == name:
70  result = node
71  if result == None:
72  raise Exception("Could not find: \""+name+"\" in childnodes of the rootNode!")
73  return result
74 
75 #returns a map of [name] nodes by their names. stating from rootNode
def getSection(rootNode, name)
def insertMaterial.main ( )

Definition at line 162 of file insertMaterial.py.

References createCompositeMaterial(), getMaterialSection(), prettierprint(), readFractions(), readXML(), and str.

162 def main():
163  optParser = optparse.OptionParser()
164  optParser.add_option("-t", "--titles", dest="titlesFile",
165  help="the .titles file to parse (as generated by mixture)", metavar="TITLES")
166  optParser.add_option("-x", "--xml", dest="xmlFile",
167  help="the .xml file to parse (must be DDD complient)", metavar="XML")
168  optParser.add_option("-o", "--output", dest="output",
169  help="the file to write the new materials into default: materialOutput.xml", metavar="XMLOUT")
170  optParser.add_option("-m", "--materialMap", dest="materialMap",
171  help="file containing map of materials not defined in materials.xml. default: material.map", metavar="MMAP")
172 
173  (options, args) = optParser.parse_args()
174 
175  if options.titlesFile == None:
176  raise Exception("no .titles File given!")
177  if options.xmlFile == None:
178  raise Exception("no .xml File given!")
179  if options.output == None:
180  options.output = "materialOutput.xml"
181  if options.materialMap == None:
182  options.materialMap = "material.map"
183  theOptions = options
184 
185  materials = readFractions(options.titlesFile, options.materialMap)
186 
187  dom = readXML(options.xmlFile)
188  matSec = getMaterialSection(dom)
189 
190  # print "before:"
191  # printMaterials(matSec)
192 
193  for material in materials:
194  createCompositeMaterial(dom,matSec,material,str(materials[material][0])+"*g/cm3",materials[material][1])
195 
196 # print "after:"
197 # printMaterials(matSec)
198  outFile = open(options.output,"w")
199  outFile.write(prettierprint(dom))
200  outFile.close()
201 
202 main()
203 
204 
def readXML(fileName)
def createCompositeMaterial(doc, rootNode, name, density, fractions, method="mixture by weight", symbol=" ")
Definition: main.py:1
def prettierprint(dom)
def getMaterialSection(rootNode)
def readFractions(fileName, materialMap)
#define str(s)
def insertMaterial.prettierprint (   dom)

Definition at line 85 of file insertMaterial.py.

Referenced by main().

85 def prettierprint(dom):
86  result = ""
87  output = dom.toprettyxml()
88  for line in output.splitlines():
89  if not line.strip(" \t") == "":
90  result+= line+"\n"
91  return result
92 
93 #gets a map of attributes and their values of [node]
94 #(not used but interessting for debug)
def prettierprint(dom)
def insertMaterial.printMaterials (   rootNode)

Definition at line 118 of file insertMaterial.py.

References getAttributes(), getNodes(), edm.print(), and split.

118 def printMaterials(rootNode):
119  matNodes = getNodes(rootNode,"CompositeMaterial")
120  for name in matNodes:
121  print(" "+name+" (dens = "+getAttributes(matNodes[name])["density"]+")")
122  for fractionNode in matNodes[name].childNodes:
123  if fractionNode.nodeName == "MaterialFraction":
124  fractionString = getAttributes(fractionNode)["fraction"]
125  for materialNode in fractionNode.childNodes:
126  if materialNode.nodeName == "rMaterial":
127  fractionString += "\tof "+getAttributes(materialNode)["name"].split(":")[1]
128  fractionString += "\tfrom "+getAttributes(materialNode)["name"].split(":")[0]
129  print(" |-- "+fractionString)
130 
131 #returns the Material Section doe of a DDD Material xmlfile
def getNodes(rootNode, name)
def printMaterials(rootNode)
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def getAttributes(node)
double split
Definition: MVATrainer.cc:139
def insertMaterial.readFractions (   fileName,
  materialMap 
)

Definition at line 11 of file insertMaterial.py.

References objects.autophobj.float, getMaterial(), split, and str.

Referenced by main().

11 def readFractions(fileName, materialMap):
12  result = {}
13  file = open(fileName,"r")
14  name = None
15  dens = None
16  fractions = {}
17  for line in file:
18  line = line.strip("\n")
19  if len(line.split("\""))==3:
20  contentName = line.split("\"")[1]
21  content = line.split("\"")[2].split()
22  if len(content) == 2:
23  if not name == None:
24  result[name] = dens,fractions
25  name = contentName
26  dens = content[1]
27  fractions = {}
28  elif len(content) == 1:
29  # print " "+contentName+" "+str(float(content[0][1:])*0.01)
30  fractions[getMaterial(contentName,materialMap)] = float(content[0][1:])*0.01
31 
32  if not name == None:
33  result[name] = dens,fractions
34 
35  for material in result:
36  sum = 0
37  for fraction in result[material][1]:
38  sum+= result[material][1][fraction]
39  if math.fabs(sum - 1.0) > maxDist:
40  raise Exception("Material Fractions do not add up to 100%: "+ material+" "+str(sum))
41  return result
42 
43 #get a source:material from the [material] only
def readFractions(fileName, materialMap)
#define str(s)
def getMaterial(material, fileName)
double split
Definition: MVATrainer.cc:139
def insertMaterial.readXML (   fileName)

Definition at line 59 of file insertMaterial.py.

Referenced by EcalFloatCondObjectContainerXMLTranslator.barrelfromXML(), EcalFloatCondObjectContainerXMLTranslator.endcapfromXML(), EcalCondHandler< Payload, XMLTranslator >.getNewObjects(), and main().

59 def readXML(fileName):
60  file = open(fileName,'r')
61  dom = xml.dom.minidom.parse(file)
62  file.close()
63  return dom
64 
65 #get the last subnode named [name] of [rootNode]
def readXML(fileName)