// Program utilizing ROOT framework headers to process a large // data set and generate a ROOT output file containing an NTuple // file with the relevant data required for analysis // // Author: Shawn Havery // Modified: Volker Crede // // Creation Date: 03-31-08 #include // Root Ntuple header #include // Root File Object header #include #include #include // Lorentz vector header // input file ifstream fin ("/export/home/crede/data/pi0pi0_data.txt"); int main() { float skip; // to accept unused data float Nrun, Ebeam; // run number, beam energy float Px, Py, Pz, E; // for reading momentum and energy TLorentzVector p[3]; // particles: 0 = proton; 1,2 = pions // Open a Root Data File Object TFile file("project10.root","RECREATE"); // Create an instance of a TNtuple object TNtuple ntuple("ntp1", "Project 10 Ntuple", "Mppi1pi2:Mpi1pi2:Mppi1:Mppi2:Ebeam:Nrun"); while (! fin.eof()) { fin >> Nrun >> skip >> Ebeam >> skip; // read event header for (int i = 0; i < 3; i++) { // for each particle fin >> Px >> Py >> Pz >> E; // read particle data p[i].SetPxPyPzE(Px,Py,Pz,E); // store in TLorentzVector } // Create the data table entry ntuple.Fill((p[0] + p[1] + p[2]).M(), (p[1] + p[2]).M(), (p[0] + p[1]).M(), (p[0] + p[2]).M(), Eb, Nr); } // Write all known objects to file file.Write(); return 0; }