Message: Re: drawing histograms using ROOT in Example N02 Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: drawing histograms using ROOT in Example N02 

Forum: Documentation and Examples
Re: None drawing histograms using ROOT in Example N02
Date: 10 Aug, 2012
From: Michael H. Kelsey <Michael H. Kelsey>

On Thu, 09 Aug 2012 19:34:27 GMT, nimishak wrote:
> I'm working on Example N02 given in the section Novice Examples of
> Geant4 documentation. I wish to draw histograms for the energy deposited
> in each step of the process, by using ROOT.

I guess that you want to have one histogram for your job, which will show the range of energies deposited at each step. Is that correct?

> For this, in the source code
> of N02TrackerHit.cc, I'm adding the following commands in the
> constructor N02TrackerHit:
> 
> f= new TFile("edep.root", "RECREATE"); h = new TH1F("h", "energy
> deposited", 1000, 0, 1000); h = GetXAxis()->SetTitle("Energy (keV)");

This is going to create a new TFile (all writing to the same file on disk!) for every hit which is created. I don't think that was your intention.

> In the deconstructor, I do:
> 
> f->Write(); f->Close(); Delete f;
> 
> In the class Print, I added:
> 
> h->fill(fEdep);
> 
> But this code is not working. I think that there can be two following
> reasons:
> 
> 1. The commands of root in the constructor are called for each hit, so
> it's creating a histogram for the energy deposited in each step for each
> hit, instead of one histogram for the energy deposited in the entire
> process.

Correct; see above.

You should probably do the histogramming in G4UserRunAction.

You want to open just one ROOT file for the whole job (or a new ROOT file for each beamOn, and use the run number (G4Run::GetRunID()) as part of the filename), and you want to create a single histogram at that point. Do this in yourRunAction::BeginOfRunAction(), and save the histogram pointer in a data member of that class.

Then, in yourRunAction::transferEvent(), you can get the hit collection you created out of the G4Event pointer, loop over the hits in the collection, and fill the histogram.

Finally, in yourRunAction::EndOfRunAction(), you should call h->Write() to make sure the histogram data is written to the file, then close the file and delete everything.

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: drawing histograms using ROOT in Example N02   (nimisha.kumari@polytechnique.edu - 23 Aug, 2012)
(_ None: Re: drawing histograms using ROOT in Example N02   (nimisha.kumari@polytechnique.edu - 28 Aug, 2012)
 Add Message Add Message
to: "Re: drawing histograms using ROOT in Example N02"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]