/// \file /// \ingroup tutorial_tree /// \notebook -nodraw /// Read data (CERN staff) from an ascii file and create a root file with a Tree. /// See also a variant in staff.C /// /// \macro_code /// /// \author Rene Brun TFile *txttoroot(Int_t getFile=0, Int_t print=1) { Int_t RayleighCrystal1; Int_t RayleighCrystal2; Int_t RayleighPhantom1; Int_t RayleighPhantom2; Float_t axialPos; Int_t comptonCrystal1; Int_t comptonCrystal2; Int_t crystalID1; Int_t crystalID2; Int_t comptonPhantom1; Int_t comptonPhantom2; Float_t energy1; Float_t energy2; Int_t eventID1; Int_t eventID2; Int_t gantryID1; Int_t gantryID2; Float_t globalPosX1; Float_t globalPosX2; Float_t globalPosY1; Float_t globalPosY2; Float_t globalPosZ1; Float_t globalPosZ2; Int_t layerID1; Int_t layerID2; Int_t moduleID1; Int_t moduleID2; Float_t rotationAngle; Int_t rsectorID1; Int_t rsectorID2; Int_t runID; Float_t sinogramS; Float_t sinogramTheta; Int_t sourceID1; Int_t sourceID2; Float_t sourcePosX1; Float_t sourcePosX2; Float_t sourcePosY1; Float_t sourcePosY2; Float_t sourcePosZ1; Float_t sourcePosZ2; Int_t submoduleID1; Int_t submoduleID2; Double_t time1; Double_t time2; //The input file cern.dat is a copy of the CERN staff data base //from 1988 TString filename = "DBrain1mm_LCTOFs_test.root"; FILE *fp = fopen("DBrain1mm_LCTOFs.txt","r"); TFile *hfile = 0; hfile = TFile::Open(filename,"RECREATE"); TTree *tree = new TTree("Coincidences","data from ascii file"); tree->Branch("runID",&runID,"runID/I"); tree->Branch("axialPos",&axialPos,"axialPos/F"); tree->Branch("rotationAngle",&rotationAngle,"rotationAngle/F"); tree->Branch("eventID1",&eventID1,"eventID1/I"); tree->Branch("sourceID1",&sourceID1,"sourceID1/I"); tree->Branch("sourcePosX1",&sourcePosX1,"sourcePosX1/F"); tree->Branch("sourcePosY1",&sourcePosY1,"sourcePosY1/F"); tree->Branch("sourcePosZ1",&sourcePosZ1,"sourcePosZ1/F"); tree->Branch("time1",&time1,"time1/D"); tree->Branch("energy1",&energy1,"energy1/F"); tree->Branch("globalPosX1",&globalPosX1,"globalPosX1/F"); tree->Branch("globalPosY1",&globalPosY1,"globalPosY1/F"); tree->Branch("globalPosZ1",&globalPosZ1,"globalPosZ1/F"); tree->Branch("gantryID1",&gantryID1,"gantryID1/I"); tree->Branch("rsectorID1",&rsectorID1,"rsectorID1/I"); tree->Branch("moduleID1",&moduleID1,"moduleID1/I"); tree->Branch("submoduleID1",&submoduleID1,"submoduleID1/I"); tree->Branch("crystalID1",&crystalID1,"crystalID1/I"); tree->Branch("layerID1",&layerID1,"layerID1/I"); tree->Branch("comptonPhantom1",&comptonPhantom1,"comptonPhantom1/I"); tree->Branch("comptonCrystal1",&comptonCrystal1,"comptonCrystal1/I"); tree->Branch("RayleighPhantom1",&RayleighPhantom1,"RayleighPhantom1/I"); tree->Branch("RayleighCrystal1",&RayleighCrystal1,"RayleighCrystal1/I"); tree->Branch("eventID2",&eventID2,"eventID2/I"); tree->Branch("sourceID2",&sourceID2,"sourceID2/I"); tree->Branch("sourcePosX2",&sourcePosX2,"sourcePosX2/F"); tree->Branch("sourcePosY2",&sourcePosY2,"sourcePosY2/F"); tree->Branch("sourcePosZ2",&sourcePosZ2,"sourcePosZ2/F"); tree->Branch("time2",&time2,"time2/D"); tree->Branch("energy2",&energy2,"energy2/F"); tree->Branch("globalPosX2",&globalPosX2,"globalPosX2/F"); tree->Branch("globalPosY2",&globalPosY2,"globalPosY2/F"); tree->Branch("globalPosZ2",&globalPosZ2,"globalPosZ2/F"); tree->Branch("gantryID2",&gantryID2,"gantryID2/I"); tree->Branch("rsectorID2",&rsectorID2,"rsectorID2/I"); tree->Branch("moduleID2",&moduleID2,"moduleID2/I"); tree->Branch("submoduleID2",&submoduleID2,"submoduleID2/I"); tree->Branch("crystalID2",&crystalID2,"crystalID1/I"); tree->Branch("layerID2",&layerID2,"layerID2/I"); tree->Branch("comptonPhantom2",&comptonPhantom2,"comptonPhantom2/I"); tree->Branch("comptonCrystal2",&comptonCrystal2,"comptonCrystal2/I"); tree->Branch("RayleighPhantom2",&RayleighPhantom2,"RayleighPhantom2/I"); tree->Branch("RayleighCrystal2",&RayleighCrystal2,"RayleighCrystal2/I"); tree->Branch("sinogramS",&sinogramS,"sinogramS/F"); tree->Branch("sinogramTheta",&sinogramTheta,"sinogramTheta/F"); char line[64000]; while (fgets(line,64000,fp)) { sscanf(&line[0],"%d %f %f %d %d %f %f %f %lf %f %f %f %f %d %d %d %d %d %d %d %d %d %d %d %d %f %f %f %lf %f %f %f %f %d %d %d %d %d %d %d %d %d %d %f %f", &runID,&axialPos,&rotationAngle,&eventID1,&sourceID1,&sourcePosX1,&sourcePosY1,&sourcePosZ1,\ &time1,&energy1,&globalPosX1,&globalPosY1,&globalPosZ1,&gantryID1,&rsectorID1,&moduleID1,&submoduleID1,\ &crystalID1,&layerID1,&comptonPhantom1,&comptonCrystal1,&RayleighPhantom1,&RayleighCrystal1,\ &eventID2,&sourceID2,&sourcePosX2,&sourcePosY2,&sourcePosZ2,&time2,&energy2,&globalPosX2,&globalPosY2,&globalPosZ2,\ &gantryID2,&rsectorID2,&moduleID2,&submoduleID2,&crystalID2,&layerID2,&comptonPhantom2,&comptonCrystal2,\ &RayleighPhantom2,&RayleighCrystal2,&sinogramTheta,&sinogramS); tree->Fill(); } if (print) tree->Print(); tree->Write(); fclose(fp); delete hfile; return 0; }