File indexing completed on 2024-05-12 03:49:30

0001 /*
0002     File                 : samplefiles.C
0003     Project              : LabPlot
0004     Description          : ROOT script to create test files for ROOT importer
0005     -------------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2018 Christoph Roick <chrisito@gmx.de>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 // ROOT test files are regenerated by calling 'root samplefiles.C'.
0011 // Note that creation date and random numbers will be different in the new files.
0012 
0013 void samplefiles()
0014 {
0015     TFile fBasic("basic_lz4.root", "RECREATE");
0016     fBasic.SetCompressionAlgorithm(ROOT::kLZ4);
0017 
0018     TH1D doubleHist("doubleHist", "", 100, -5., 5.);
0019     doubleHist.Sumw2();
0020     doubleHist.FillRandom("gaus", 10000);
0021     doubleHist.Write();
0022 
0023     TH1F floatHist("floatHist", "", 100, -5., 5.);
0024     floatHist.Sumw2();
0025     floatHist.FillRandom("gaus", 10000);
0026     floatHist.Write();
0027 
0028     TH1I intHist("intHist", "", 100, -5., 5.);
0029     intHist.Sumw2();
0030     intHist.FillRandom("gaus", 10000);
0031     intHist.Write();
0032 
0033     TH1S shortHist("shortHist", "", 100, -5., 5.);
0034     shortHist.Sumw2();
0035     shortHist.FillRandom("gaus", 10000);
0036     shortHist.Write();
0037 
0038     TH1C charHist("charHist", "", 100, -5., 5.);
0039     charHist.Sumw2();
0040     charHist.FillRandom("gaus", 1000);
0041     charHist.Write();
0042 
0043     fBasic.Close();
0044 
0045     TFile fAdvanced("advanced_zlib.root", "RECREATE");
0046     fAdvanced.SetCompressionAlgorithm(ROOT::kZLIB);
0047 
0048     vector<double> borders;
0049     for (size_t i = 0; i < 101; ++i)
0050         borders.push_back(0.09 * i - 5. + 1.e-4 * i * i);
0051 
0052     TH1D variableBinHist("variableBinHist", "", 100, borders.data());
0053     variableBinHist.Sumw2();
0054     variableBinHist.FillRandom("gaus", 10000);
0055     variableBinHist.Write();
0056     variableBinHist.FillRandom("gaus", 1000000);
0057     variableBinHist.Write();
0058 
0059     TTree tree("tree", "TTree title");
0060     double d;
0061     int i;
0062     struct {
0063         int a[2];
0064         Double_t d;
0065         float f;
0066     } s;
0067     tree.Branch("doubleTest", &d, "doubleTest/D");
0068     tree.Branch("intTest", &i, "intTest/I");
0069     tree.Branch("structTest", &s, "array[2]/I:double/D:float/F");
0070 
0071     for (size_t j = 0; j < 10; ++j) {
0072         d = j;
0073         i = j;
0074         s.f = 9 - j;
0075         s.a[0] = j; s.a[1] = 2 * j;
0076         s.d = s.f * s.f;
0077         tree.Fill();
0078     }
0079     tree.Write();
0080 
0081     TNtuple tuple("tuple", "TNtuple title", "x:y:z");
0082     tuple.Fill(1., 2., 3.);
0083     tuple.Write();
0084     tuple.Fill(3., 4., 5.);
0085     tuple.Write();
0086 
0087     fAdvanced.Close();
0088 
0089     ifstream infile("basic_lz4.root");
0090     ofstream outfile("broken_basic.root");
0091 
0092     char buffer[3000];
0093     infile.read(buffer, 3000);
0094     outfile.write(buffer, 3000);
0095 }