389 def writeToFile(self,filename) :
390 from ROOT import TFile,TTree,TParameter
391 from ROOT import gROOT, addressof
392 gROOT.ProcessLine(
393 "struct MyMetaStruct {\
394 Char_t detector[40];\
395 Char_t release[40];\
396 Char_t geometry[40];\
397 Char_t geant[40];\
398 Char_t phys[40];\
399 Char_t comment[400];\
400 Int_t particle;\
401 };" )
402 from ROOT import MyMetaStruct
403 gROOT.ProcessLine(
404 "struct MyStruct {\
405 Float_t x;\
406 Float_t y;\
407 Float_t z;\
408 Float_t e;\
409 Float_t time;\
410 };" )
411 from ROOT import MyStruct
412
413 tfile = TFile(filename,"RECREATE")
414
415 ver = TParameter(int)("version",1)
416 ver.Write("version")
417
418 meta = TTree()
419 libr = TTree()
420
421 mmstruct = MyMetaStruct()
422
423 mmstruct.detector = "%s" % (str(self.detector))
424 mmstruct.particle = int(self.particle)
425 mmstruct.release = "%s" % (str(self.release))
426 mmstruct.geometry = "%s" % (str(self.geometry))
427 mmstruct.geant = "%s" % (str(self.geant))
428 mmstruct.phys = "%s" % (str(self.phys))
429 mmstruct.comment = "%s" % (str(self.comment))
430
431 meta.Branch("detector",addressof(mmstruct,"detector"),"detector/C")
432 meta.Branch("particle",addressof(mmstruct,"particle"),"particle/I")
433 meta.Branch("release",addressof(mmstruct,"release"),"release/C")
434 meta.Branch("geometry",addressof(mmstruct,"geometry"),"geometry/C")
435 meta.Branch("geantVersion",addressof(mmstruct,"geant"),"geantVersion/C")
436 meta.Branch("physicsList",addressof(mmstruct,"phys"),"physicsList/C")
437 meta.Branch("comment",addressof(mmstruct,"comment"),"physicsList/C")
438
439 meta.Fill()
440
441 mstruct = MyStruct()
442
443 libr.Branch("x",addressof(mstruct,"x"),"x/F")
444 libr.Branch("y",addressof(mstruct,"y"),"y/F")
445 libr.Branch("z",addressof(mstruct,"z"),"z/F")
446 libr.Branch("e",addressof(mstruct,"e"),"e/F")
447 libr.Branch("time",addressof(mstruct,"time"),"time/F")
448
449 etas = self.library.keys()
450
451 for eta in sorted(etas) :
452 mstruct.x = len(self.library[eta])
453 mstruct.y = eta
454 mstruct.z = self.mineta
455 mstruct.e = self.maxeta
456 mstruct.time = 0
457 libr.Fill()
458 self.library[eta].
sort(key=
lambda x: x.egen)
459 for storedShower in self.library[eta] :
460 mstruct.x = len(storedShower.shower)
461 mstruct.y = storedShower.rsize
462 mstruct.z = storedShower.zsize
463 mstruct.e = storedShower.egen
464 mstruct.time = 0
465 libr.Fill()
466 for hit in storedShower.shower:
467 mstruct.e = hit.e
468 mstruct.x = hit.x
469 mstruct.y = hit.y
470 mstruct.z = hit.z
471 mstruct.time = hit.time
472 libr.Fill()
473 meta.Write("meta")
474 libr.Write("library")
475 tfile.Close()
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.