Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CDC_online/CDC_occupancy.C
Go to the documentation of this file.
1 
2 // The following are special comments used by RootSpy to know
3 // which histograms to fetch for the macro.
4 //
5 // hnamepath: /CDC/cdc_num_events
6 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[1]
7 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[2]
8 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[3]
9 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[4]
10 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[5]
11 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[6]
12 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[7]
13 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[8]
14 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[9]
15 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[10]
16 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[11]
17 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[12]
18 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[13]
19 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[14]
20 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[15]
21 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[16]
22 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[17]
23 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[18]
24 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[19]
25 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[20]
26 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[21]
27 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[22]
28 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[23]
29 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[24]
30 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[25]
31 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[26]
32 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[27]
33 // hnamepath: /CDC/rings_occupancy/cdc_occ_ring[28]
34 
35 
36 {
37  // Get number of events
38  double Nevents = 1.0;
39  TDirectory *CDCdir = (TDirectory*)gDirectory->FindObjectAny("CDC");
40  if(CDCdir){
41  TH1I *cdc_num_events = (TH1I*)CDCdir->Get("cdc_num_events");
42  if(cdc_num_events) Nevents = (double)cdc_num_events->GetBinContent(1);
43  }
44 
45  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("rings_occupancy");
46  if(!dir) return;
47 
48  dir->cd();
49 
50  // Just for testing
51  if(gPad == NULL){
52  TCanvas *c1 = new TCanvas("c1");
53  c1->cd(0);
54  c1->Draw();
55  c1->Update();
56  }
57 
58  if(!gPad) return;
59 
60  TCanvas *c1 = gPad->GetCanvas();
61 
62  // Draw axes
63  TH2D *axes = (TH2D *)dir->Get("axes");
64  if(!axes) axes = new TH2D("axes", "CDC Occupancy", 100, -65.0, 65.0, 100, -65.0, 65.0);
65 
66  double minScale = 0.08, maxScale = 0.15;
67  axes->SetStats(0);
68  axes->Fill(100,100); // without this, the color ramp is not drawn
69  axes->GetZaxis()->SetRangeUser(minScale, maxScale);
70  axes->Draw("colz");
71 
72  double TheMax = 0.;
73  double TheMin = 99999999;;
74  for(unsigned int iring=1; iring<=28; iring++){
75  char hname[256];
76  sprintf(hname, "cdc_occ_ring[%d]", iring);
77  TH1 *h = (TH1*)(dir->Get(hname));
78  if(h){
79  double min = h->GetMinimum();
80  if (min<TheMin){
81  TheMin = min;
82  }
83  double max = h->GetMaximum();
84  if (max>TheMax){
85  TheMax = max;
86  }
87  }
88  }
89  for(unsigned int iring=1; iring<=28; iring++){
90  char hname[256];
91  sprintf(hname, "cdc_occ_ring[%d]", iring);
92  TH1 *h = (TH1*)(dir->Get(hname));
93  if(h){
94  sprintf(hname, "cdc_occ_ring_norm[%d]", iring);
95  TH1 *hh = (TH1*)h->Clone(hname);
96  hh->Scale(1.0/Nevents);
97  //hh->GetZaxis()->SetRangeUser(minScale, maxScale);
98  hh->GetZaxis()->SetRangeUser(TheMin*0.95, TheMax*1.05);
99  hh->SetStats(0);
100  hh->Draw("same col pol"); // draw remaining histos without overwriting color palette
101  }
102  gPad->SetGrid();
103  }
104 }
TDirectory * CDCdir
TH2D * axes
Float_t maxScale
sprintf(text,"Post KinFit Cut")
double TheMax
Double_t c1[2][NMODULES]
Definition: tw_corr.C:68
static TH1I * cdc_num_events
double Nevents
double TheMin
TDirectory * dir
Definition: bcal_hist_eff.C:31
Float_t minScale