Subversion Repositories f9daq

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
316 f9daq 1
#define tree_cxx
2
#include "tree.h"
3
#include <TH2.h>
4
#include <TStyle.h>
5
#include <TCanvas.h>
6
#include <TMath.h>
7
#include <iostream>
8
void tree::Loop(int mode, TString ext)
9
{
10
//   In a ROOT session, you can do:
11
//      Root > .L tree.C
12
//      Root > tree t
13
//      Root > t.GetEntry(12); // Fill t data members with entry number 12
14
//      Root > t.Show();       // Show values of entry 12
15
//      Root > t.Show(16);     // Read and show values of entry 16
16
//      Root > t.Loop();       // Loop on all entries
17
//
18
 
19
//     This is the loop skeleton where:
20
//    jentry is the global entry number in the chain
21
//    ientry is the entry number in the current Tree
22
//  Note that the argument to GetEntry must be:
23
//    jentry for TChain::GetEntry
24
//    ientry for TTree::GetEntry and TBranch::GetEntry
25
//
26
//       To read only selected branches, Insert statements like:
27
// METHOD1:
28
//    fChain->SetBranchStatus("*",0);  // disable all branches
29
//    fChain->SetBranchStatus("branchname",1);  // activate branchname
30
// METHOD2: replace line
31
//    fChain->GetEntry(jentry);       //read all branches
32
//by  b_branchname->GetEntry(ientry); //read only this branch
33
   if (fChain == 0) return;
34
 
35
   Long64_t nentries = fChain->GetEntriesFast();
36
 
37
   Long64_t nbytes = 0, nb = 0;
38
   int snp=0;
39
   TCanvas *c=0;
40
   gStyle->SetOptStat(0) ;
41
 
42
   //gROOT->ForceStyle();
43
   //gStyle->SetTitleSize(0.2);
44
   TString pdfname("tmp.pdf");
45
   for (Long64_t jentry=0; jentry<nentries;jentry++) {
46
      Long64_t ientry = LoadTree(jentry);
47
      if (ientry < 0) break;
48
      nb = fChain->GetEntry(jentry);   nbytes += nb;
49
      // if (Cut(ientry) < 0) continue;
50
	  TString msn=*sn;
51
	  TObjArray *ppname = msn.Tokenize("_");
52
	  int snid = (((TObjString *)(ppname->At(0)))->String()).Atoi();
53
	  cout << "Event" << voltage << " " << temp << " " << *id << " " << snid << qdc2->GetMean() <<endl;
54
	  qdc2->SetTitle( Form("T=%d V=%d sn=",temp, voltage, snid ) );
55
	  //qdc2->SetTitleSize(5.2,"t");
56
	  if (snp!=snid){
57
 
58
 
59
		if (c){
60
			c->Modified();
61
	        c->Update();
62
			if (ext.Length()>2) c->Print(pdfname, ext);
63
	    }
64
	    pdfname=TString("results/")+*id + "_"+*sn+ Form("_%d.", mode) + ext;
65
		c= new TCanvas(*sn,*id + " "+*sn,600,900);
66
        c->Divide(5,12,0,0.01,0.01);
67
	  }
68
	  snp = snid;
69
	  c->cd((temp+30)/5*5+(voltage/100-1)+1);
70
	  if (mode==2 || mode==3) gPad->SetLogz(1) ;
71
      else gPad->SetLogz(0) ;
72
	  if (mode==6) gPad->SetLogy(1) ;
73
      else gPad->SetLogy(0) ;
74
 
75
	  switch (mode){
76
		 case 0: qdc2->DrawCopy(); break;
77
		 case 1: qdc2->DrawCopy(); break;
78
		 case 2: dpo2->DrawCopy("col"); break;
79
		 case 3: dpo3->DrawCopy("col"); break;
80
		 case 4: tdc2->GetXaxis()->SetRangeUser(86, 92); tdc2->DrawCopy();  break;
81
		 case 5: tdc3->GetXaxis()->SetRangeUser(128, 132); tdc3->DrawCopy(); break;
82
		 case 6: {
83
		   TGraph *gr=(TGraph *)thscan->Clone();
84
		   gr->Draw("awl");
85
		   gr->GetXaxis()->SetRangeUser(0,TMath::Power(2,voltage/100)*33);
86
		   break;}
87
		 case 7: cout  << thscan->GetName()<<" " << thscan->GetN() << endl; break;
88
	  }
89
 
90
   }
91
   c->Modified();
92
   c->Update();
93
   if (ext.Length()>2)  c->Print(pdfname,ext);
94
}