void tv3Write() { //creates the Tree TVector3 *v = new TVector3(); TVector3::Class()->IgnoreTObjectStreamer(); TFile *f = new TFile("v3.root","recreate"); TTree *T = new TTree("T","v3 Tree"); T->Branch("v3","TVector3",&v,32000,1); TRandom r; for (Int_t i=0;i<10000;i++) { v->SetXYZ(r.Gaus(0,1),r.Landau(0,1),r.Gaus(100,10)); T->Fill(); } T->Write(); T->Print(); delete f; }
void treegetval() { // create a simple TTree with 5 branches Int_t run, evt; Float_t x,y,z; TTree *T = new TTree("T","test friend trees"); T->Branch("Run",&run,"Run/I"); T->Branch("Event",&evt,"Event/I"); T->Branch("x",&x,"x/F"); T->Branch("y",&y,"y/F"); T->Branch("z",&z,"z/F"); TRandom r; for (Int_t i=0;i<10000;i++) { if (i < 5000) run = 1; else run = 2; evt = i; x = r.Gaus(10,1); y = r.Gaus(20,2); z = r.Landau(2,1); T->Fill(); } // Draw with option goff and generate seven variables Int_t n = T->Draw("x:y:z:Run:Event:sin(x):cos(x)","Run==1","goff"); printf("The arrays' dimension is %d\n",n); // Retrieve variables 5 et 6 Double_t *vxs = T->GetVal(5); Double_t *vxc = T->GetVal(6); // Draw with option goff and generate only one variable T->Draw("x","Run==1","goff"); // Retrieve variable 0 Double_t *vx = T->GetVal(0); // Create and draw graphs TGraph *gs = new TGraph(n,vx,vxs); TGraph *gc = new TGraph(n,vx,vxc); gs->Draw("ap"); gc->Draw("p"); }
void CreateParentTree() { // create a simple TTree with 5 branches // Two branches ("Run" and "Event") will be used to index the Tree TFile *f = new TFile("treeparent.root","recreate"); TTree *T = new TTree("T","test friend trees"); T->Branch("Run",&Run,"Run/I"); T->Branch("Event",&Event,"Event/I"); T->Branch("x",&x,"x/F"); T->Branch("y",&y,"y/F"); T->Branch("z",&z,"z/F"); TRandom r; for (Int_t i=0;i<10000;i++) { if (i < 5000) Run = 1; else Run = 2; Event = i; x = r.Gaus(10,1); y = r.Gaus(20,2); z = r.Landau(2,1); T->Fill(); } T->Print(); T->Write(); delete f; }
//_____________________________________________________________________________ Int_t ProofAux::GenerateTree(const char *fnt, Long64_t ent, TString &fn) { // Generate the main tree for the 'friends' tutorial; the tree is called // 'Tmain', has 'ent' entries and is saved to file 'fnt'. // The full file path is returned in 'fn'. // Return 0 on success, -1 on error. Int_t rc = -1; // Check the filename fn = fnt; if (fn.IsNull()) { Error("GenerateTree", "file name undefined!"); return rc; } TUrl uu(fn, kTRUE); if (!strcmp(uu.GetProtocol(), "file") && !fn.BeginsWith("/")) { // Local file with relative path: create under the data directory if (!gProofServ || !(gProofServ->GetDataDir()) || strlen(gProofServ->GetDataDir()) <= 0) { Error("GenerateTree", "data directory undefined!"); return rc; } // Insert data directory fn.Insert(0, TString::Format("%s/", gProofServ->GetDataDir())); // Make sure the directory exists TString dir = gSystem->DirName(fn); if (gSystem->AccessPathName(dir, kWritePermission)) { if (gSystem->mkdir(dir, kTRUE) != 0) { Error("GenerateTree", "problems creating directory %s to store the file", dir.Data()); return rc; } } } // Create the file TDirectory* savedir = gDirectory; TFile *f = new TFile(fn, "RECREATE"); if (!f || f->IsZombie()) { Error("GenerateTree", "problems opening file %s", fn.Data()); return rc; } savedir->cd(); rc = 0; // Create the tree TTree *T = new TTree("Tmain","Main tree for tutorial friends"); T->SetDirectory(f); Int_t Run = 1; T->Branch("Run",&Run,"Run/I"); Long64_t Event = 0; T->Branch("Event",&Event,"Event/L"); Float_t x = 0., y = 0., z = 0.; T->Branch("x",&x,"x/F"); T->Branch("y",&y,"y/F"); T->Branch("z",&z,"z/F"); TRandom r; for (Long64_t i = 0; i < ent; i++) { if (i > 0 && i%1000 == 0) Run++; Event = i; x = r.Gaus(10,1); y = r.Gaus(20,2); z = r.Landau(2,1); T->Fill(); } T->Print(); f->cd(); T->Write(); T->SetDirectory(0); f->Close(); delete f; delete T; // Notify success Info("GenerateTree", "file '%s' successfully created", fn.Data()); // Add to the list TString fds(fn); if (!strcmp(uu.GetProtocol(), "file")) { if (gSystem->Getenv("LOCALDATASERVER")) { if (strcmp(TUrl(gSystem->Getenv("LOCALDATASERVER"), kTRUE).GetProtocol(), "file")) fds.Insert(0, TString::Format("%s/", gSystem->Getenv("LOCALDATASERVER"))); } else { fds.Insert(0, TString::Format("root://%s/", gSystem->HostName())); } } fMainList->Add(new TObjString(fds)); // Done return rc; }