Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

ROOT TH1::SetDirectory

  1. Jul 22, 2015 #1

    ChrisVer

    User Avatar
    Gold Member

    Can someone explain me what SetDirectory actually does?

    I found the problem with a macro like that:

    Code (C):

    #include<iostream>
    #include <TH1F.h>
    #include <TCanvas.h>
    #include <TFile.h>

    int histoSum(){

    //create histograms to use
    TH1F* histo1 = new TH1F("histo1",";A", 100, 0,10);
    TH1F* histo2 = new TH1F("histo2",";B", 100, 0,10);
    TH1F* histoSUM = new TH1F("histoSUM",";C", 100, 0,10);

    //call histograms from a root file
    TFile f ("histograms.root");
    f.GetObject("h_A_events",histo1);
    f.GetObject("h_B_events",histo2);

    //add the histograms of A,B
    histo1->sumw2();
    histo2->sumw2();
    histoSUM->Add(histo1,histo2);

    //print the histogram of SUM on canvas
    TCanvas * c= new TCanvas("sum_histos",900,700);
    histoSUM->Draw();

    return 0;
    }
     
    The problem when I ran the program like this, is that the Canvas appeared empty...
    On the other hand if I set for my histos histo1,histo2,histoSUM the ->SetDirectory(0)

    Code (C):

    [...]
    f.GetObject("h_B_events",histo2);

    histo1->SetDirectory(0);
    histo2->SetDirectory(0);
    histoSUM->SetDirectory(0);

    //add the histograms of A,B
    histo1->sumw2();
    [...]
     
    the histogram appeared in the canvas...
    I only found this:
    https://root.cern.ch/drupal/content/histograms-and-current-directory [Broken]
    but it doesn't help me understand how it works.
     
    Last edited by a moderator: May 7, 2017
  2. jcsd
  3. Jul 22, 2015 #2

    jedishrfu

    Staff: Mentor

    My reading of it is that the Directory is a means to group histograms together for easier organized operations. Specifically, it says that if you delete the Directory all associated histograms are deleted as well.

    It seems to work like a filesystem with histograms representing files and Directories representing filesystem subdirectories. In the filesystem paradigm, one can work with files as a group with a common subdirectory name ie one can copy files or on can delete the subdirectory to delete its files (some cautions may apply ie might have to force the operation).

    This page talks about changing Directory to get a different set of histograms:

    https://root.cern.ch/drupal/content/subdirectories-and-navigation [Broken]
     
    Last edited by a moderator: May 7, 2017
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: ROOT TH1::SetDirectory
  1. Cubic Root (Replies: 3)

  2. Root Finding (Replies: 5)

  3. Root programming (Replies: 3)

  4. Root programming (Replies: 3)

Loading...