LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
plot.C File Reference

Go to the source code of this file.

Functions

void SetLeafAddress (TNtuple *ntuple, const char *name, void *address)
 
void plot ()
 

Function Documentation

void plot ( )

Definition at line 13 of file plot.C.

References c1, f(), nentries, ntuple, radius, SetLeafAddress(), y, and z.

14 {
15  gROOT->Reset();
16  gStyle->SetPalette(1);
17  gROOT->SetStyle("Plain");
18  gStyle->SetOptStat(00000);
19 
20  //***************************************
21  //***************************************
22  // MAKE YOUR SELECTIONS
23  // for histograms
24  //***************************************
25  //***************************************
26 
27  Int_t linB=100; // linear histo: nb of bins in x - 1000 is best for integration
28  Double_t ymin=1; // minimum x-axis value
29  Double_t ymax=300; // maximum x-axis value
30 
31  //***************************************
32  //***************************************
33 
34  //Uncomment for manual merging of histograms
35  //system ("rm -rf yz.root");
36  //system ("hadd yz.root yz_*.root");
37 
38  TCanvas* c1 = new TCanvas ("c1","",60,60,800,800);
39  Int_t mycolor;
40 
41  TFile* f = new TFile("yz.root");
42  mycolor=4;
43 
44  TNtuple* ntuple;
45  ntuple = (TNtuple*)f->Get("yz");
46  bool rowWise = true;
47  TBranch* eventBranch = ntuple->FindBranch("row_wise_branch");
48  if ( ! eventBranch ) rowWise = false;
49  // std::cout << "rowWise: " << rowWise << std::endl;
50 
51  Double_t radius,eventID,nofHits,nbEdep,y,z,Einc;
52  if ( ! rowWise ) {
53  ntuple->SetBranchAddress("radius",&radius);
54  ntuple->SetBranchAddress("eventID",&eventID);
55  ntuple->SetBranchAddress("nbHits",&nofHits);
56  ntuple->SetBranchAddress("nbScoredHits",&nbEdep);
57  ntuple->SetBranchAddress("y",&y);
58  ntuple->SetBranchAddress("z",&z);
59  ntuple->SetBranchAddress("Einc",&Einc);
60  }
61  else {
62  SetLeafAddress(ntuple, "radius",&radius);
63  SetLeafAddress(ntuple, "eventID",&eventID);
64  SetLeafAddress(ntuple, "nbHits",&nofHits);
65  SetLeafAddress(ntuple, "nbScoredHits",&nbEdep);
66  SetLeafAddress(ntuple, "y",&y);
67  SetLeafAddress(ntuple, "z",&z);
68  SetLeafAddress(ntuple, "Einc",&Einc);
69  }
70 
71  //plot f(y)
72 
73  c1->cd(1);
74 
75  TH1F *hfyw = new TH1F ("hfyw","hfyw",linB,0,ymax);
76 
77  Int_t nentries = (Int_t)ntuple->GetEntries();
78  Double_t population=0;
79  Double_t yLocalMin=1e100;
80  Double_t yLocalMax=0;
81 
82  Double_t yF_anal=0;
83  Double_t yD_anal=0;
84 
85  for (Int_t i=0; i<nentries; i++)
86  {
87  ntuple->GetEntry(i);
88 
89  hfyw->Fill(y,nofHits/nbEdep);
90  if (yLocalMin>y) yLocalMin=y;
91  if (yLocalMax<y) yLocalMax=y;
92  population=population+nofHits/nbEdep;
93  yF_anal = yF_anal + (nofHits/nbEdep)*y;
94  yD_anal = yD_anal + (nofHits/nbEdep)*y*y;
95  }
96 
97  cout << "**** Results ****" << endl;
98  cout << endl;
99  cout << "---> yF =" << yF_anal/population << " keV/um" << endl;
100  cout << "---> yD =" << (yD_anal/population)/(yF_anal/population) << " keV/um" << endl;
101  cout << endl;
102  cout << "---> Limits: " << endl;
103  cout << " * min value of y = " << yLocalMin << " keV/um" << endl;
104  cout << " * max value of y = " << yLocalMax << " keV/um" << endl;
105 
106  if ( (yLocalMax>ymax) || (yLocalMin<ymin) )
107  {
108  cout << "WARNING: please check your histogram limits ! " << endl;
109  }
110 
111  gPad->SetLogy();
112  hfyw->Scale (1./(population*hfyw->GetBinWidth(1)));
113  hfyw->SetTitle("f(y) (um/keV)");
114  hfyw->GetXaxis()->SetTitle("y (keV/um)");
115  hfyw->SetFillColor(2);
116  hfyw->SetLineColor(2);
117  hfyw->Draw("HIST");
118 }
Double_t y
Definition: plot.C:276
TFile f("microbeam.root")
Double_t z
Definition: plot.C:276
TNtuple * ntuple
Definition: plot.C:20
void SetLeafAddress(TNtuple *ntuple, const char *name, void *address)
Definition: plot.C:170
Float_t radius
Definition: plot.C:23
Int_t nentries
Definition: plot.C:280
c1
Definition: plot.C:27
void SetLeafAddress ( TNtuple *  ntuple,
const char *  name,
void *  address 
)

Definition at line 120 of file plot.C.

120  {
121  TLeaf* leaf = ntuple->FindLeaf(name);
122  if ( ! leaf ) {
123  std::cerr << "Error in <SetLeafAddress>: unknown leaf --> " << name << std::endl;
124  return;
125  }
126  leaf->SetAddress(address);
127 }
TNtuple * ntuple
Definition: plot.C:20