718 def writeToFile(self,filename) :
719 from ROOT import TFile,TTree,TParameter
720 from ROOT import gROOT, addressof
721 gROOT.ProcessLine(
722 "struct MyMetaStruct {\
723 Char_t detector[40];\
724 Char_t release[40];\
725 Char_t geometry[40];\
726 Char_t geant[40];\
727 Char_t phys[40];\
728 Char_t comment[400];\
729 Int_t particle;\
730 };" )
731 from ROOT import MyMetaStruct
732 gROOT.ProcessLine(
733 "struct MyStruct {\
734 Float_t x;\
735 Float_t y;\
736 Float_t z;\
737 Float_t e;\
738 Float_t time;\
739 };" )
740 from ROOT import MyStruct
741
742 tfile = TFile(filename,"RECREATE")
743
744 ver = TParameter(int)("version",4)
745 ver.Write("version")
746
747 meta = TTree()
748 libr = TTree()
749
750 mmstruct = MyMetaStruct()
751
752 mmstruct.detector = "%s" % (str(self.detector))
753 mmstruct.particle = int(self.particle)
754 mmstruct.release = "%s" % (str(self.release))
755 mmstruct.geometry = "%s" % (str(self.geometry))
756 mmstruct.geant = "%s" % (str(self.geant))
757 mmstruct.phys = "%s" % (str(self.phys))
758 mmstruct.comment = "%s" % (str(self.comment))
759
760 meta.Branch("detector",addressof(mmstruct,"detector"),"detector/C")
761 meta.Branch("particle",addressof(mmstruct,"particle"),"particle/I")
762 meta.Branch("release",addressof(mmstruct,"release"),"release/C")
763 meta.Branch("geometry",addressof(mmstruct,"geometry"),"geometry/C")
764 meta.Branch("geantVersion",addressof(mmstruct,"geant"),"geantVersion/C")
765 meta.Branch("physicsList",addressof(mmstruct,"phys"),"physicsList/C")
766 meta.Branch("comment",addressof(mmstruct,"comment"),"physicsList/C")
767
768 meta.Fill()
769
770 mstruct = MyStruct()
771
772 libr.Branch("x",addressof(mstruct,"x"),"x/F")
773 libr.Branch("y",addressof(mstruct,"y"),"y/F")
774 libr.Branch("z",addressof(mstruct,"z"),"z/F")
775 libr.Branch("e",addressof(mstruct,"e"),"e/F")
776 libr.Branch("time",addressof(mstruct,"time"),"time/F")
777
778 mstruct.x = self.xrod_cent
779 mstruct.y = self.yrod_cent
780 mstruct.z = self.step
781 mstruct.e = 0
782 mstruct.time = 0
783 libr.Fill()
784
785 dists = sorted(self.library.keys())
786
787 for dist in dists :
788 mstruct.x = len(self.library[dist])
789 mstruct.y = dist
790 mstruct.z = 0
791 mstruct.e = 0
792 mstruct.time = 0
793 libr.Fill()
794 self.library[dist].
sort(key=
lambda x: x.egen)
795 for storedShower in self.library[dist] :
796 mstruct.x = len(storedShower.shower)
797 mstruct.y = storedShower.rsize
798 mstruct.z = storedShower.zsize
799 mstruct.e = storedShower.egen
800 mstruct.time = 0
801 libr.Fill()
802 for hit in storedShower.shower:
803 mstruct.e = hit.e
804 mstruct.x = hit.x
805 mstruct.y = hit.y
806 mstruct.z = hit.z
807 mstruct.time = hit.time
808 libr.Fill()
809 meta.Write("meta")
810 libr.Write("library")
811 tfile.Close()
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.