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 | } |