1147 def writeToFile(self,filename) :
1148 from ROOT import TFile,TTree,TParameter
1149 from ROOT import gROOT, addressof
1150 gROOT.ProcessLine(
1151 "struct MyMetaStruct {\
1152 Char_t detector[40];\
1153 Char_t release[40];\
1154 Char_t geometry[40];\
1155 Char_t geant[40];\
1156 Char_t phys[40];\
1157 Char_t comment[400];\
1158 Int_t particle;\
1159 };" )
1160 from ROOT import MyMetaStruct
1161 gROOT.ProcessLine(
1162 "struct MyStruct {\
1163 Float_t x;\
1164 Float_t y;\
1165 Float_t z;\
1166 Float_t e;\
1167 Float_t time;\
1168 };" )
1169 from ROOT import MyStruct
1170
1171 tfile = TFile(filename,"RECREATE")
1172
1173 ver = TParameter(int)("version",5)
1174 ver.Write("version")
1175
1176 meta = TTree()
1177 libr = TTree()
1178
1179 mmstruct = MyMetaStruct()
1180
1181 mmstruct.detector =
"%s" % (
str(self.detector))
1182 mmstruct.particle = int(self.particle)
1183 mmstruct.release =
"%s" % (
str(self.release))
1184 mmstruct.geometry =
"%s" % (
str(self.geometry))
1185 mmstruct.geant =
"%s" % (
str(self.geant))
1186 mmstruct.phys =
"%s" % (
str(self.phys))
1187 mmstruct.comment =
"%s" % (
str(self.comment))
1188
1189 meta.Branch("detector",addressof(mmstruct,"detector"),"detector/C")
1190 meta.Branch("particle",addressof(mmstruct,"particle"),"particle/I")
1191 meta.Branch("release",addressof(mmstruct,"release"),"release/C")
1192 meta.Branch("geometry",addressof(mmstruct,"geometry"),"geometry/C")
1193 meta.Branch("geantVersion",addressof(mmstruct,"geant"),"geantVersion/C")
1194 meta.Branch("physicsList",addressof(mmstruct,"phys"),"physicsList/C")
1195 meta.Branch("comment",addressof(mmstruct,"comment"),"physicsList/C")
1196
1197 meta.Fill()
1198
1199 mstruct = MyStruct()
1200
1201 libr.Branch("x",addressof(mstruct,"x"),"x/F")
1202 libr.Branch("y",addressof(mstruct,"y"),"y/F")
1203 libr.Branch("z",addressof(mstruct,"z"),"z/F")
1204 libr.Branch("e",addressof(mstruct,"e"),"e/F")
1205 libr.Branch("time",addressof(mstruct,"time"),"time/F")
1206
1207 etas = sorted(self.library.keys())
1208
1209 mstruct.x = self.xrod_cent
1210 mstruct.y = self.yrod_cent
1211 mstruct.z = self.step
1212 mstruct.e = 0
1213 mstruct.time = 0
1214 libr.Fill()
1215
1216 for eta in etas :
1217 dists = sorted(self.library[eta].keys())
1218 mstruct.x = len(self.library[eta])
1219 mstruct.y = eta
1220 mstruct.z = 0
1221 mstruct.e = 0
1222 mstruct.time = 0
1223 libr.Fill()
1224 for dist in dists :
1225 mstruct.x = len(self.library[eta][dist])
1226 mstruct.y = dist
1227 mstruct.z = 0
1228 mstruct.e = 0
1229 mstruct.time = 0
1230 libr.Fill()
1231 self.library[eta][dist].
sort(key=
lambda x: x.egen)
1232 for storedShower in self.library[eta][dist] :
1233 mstruct.x = len(storedShower.shower)
1234 mstruct.y = storedShower.rsize
1235 mstruct.z = storedShower.zsize
1236 mstruct.e = storedShower.egen
1237 mstruct.time = 0
1238 libr.Fill()
1239 for hit in storedShower.shower:
1240 mstruct.e = hit.e
1241 mstruct.x = hit.x
1242 mstruct.y = hit.y
1243 mstruct.z = hit.z
1244 mstruct.time = hit.time
1245 libr.Fill()
1246 meta.Write("meta")
1247 libr.Write("library")
1248 tfile.Close()
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.