1 void DrawTrendingPHOSQA(TString mergedTrendFile = "trending.root")
3 //Reads merged trending.root file and draws trending plots.
5 TFile * fin = TFile::Open(mergedTrendFile.Data());
6 if(!fin) { printf("File trending.root not exists.\n"); return; }
8 TTree * ttree = (TTree*) fin->Get("trending");
9 if (!ttree) { printf("Trending tree not found."); return; }
11 Int_t nRuns = ttree->GetEntries();
13 Int_t runNumber = 0; Float_t nEvents = 0;
15 Float_t avCluEnergySM1=0., avCluMultSM1=0., avNcellPerCluSM1=0.; // Module 1
16 Float_t avCluEnergySM2=0., avCluMultSM2=0., avNcellPerCluSM2=0.; // Module 2
17 Float_t avCluEnergySM3=0., avCluMultSM3=0., avNcellPerCluSM3=0.; // Module 3
19 Float_t avPi0NumSM1=0., avPi0MassSM1=0., avPi0SigmaSM1=0.;
20 Float_t avPi0NumErrSM1=0., avPi0MassErrSM1=0., avPi0SigmaErrSM1=0.;
22 Float_t avPi0NumSM2=0., avPi0MassSM2=0., avPi0SigmaSM2=0.;
23 Float_t avPi0NumErrSM2=0., avPi0MassErrSM2=0., avPi0SigmaErrSM2=0.;
25 Float_t avPi0NumSM3=0., avPi0MassSM3=0., avPi0SigmaSM3=0.;
26 Float_t avPi0NumErrSM3=0., avPi0MassErrSM3=0., avPi0SigmaErrSM3=0.;
29 ttree->SetBranchAddress("run",&runNumber);
30 ttree->SetBranchAddress("nEvents",&nEvents);
32 ttree->SetBranchAddress("avCluEnergySM1",&avCluEnergySM1);
33 ttree->SetBranchAddress("avCluMultSM1",&avCluMultSM1);
34 ttree->SetBranchAddress("avNcellPerCluSM1",&avNcellPerCluSM1);
36 ttree->SetBranchAddress("avCluEnergySM2",&avCluEnergySM2);
37 ttree->SetBranchAddress("avCluMultSM2",&avCluMultSM2);
38 ttree->SetBranchAddress("avNcellPerCluSM2",&avNcellPerCluSM2);
40 ttree->SetBranchAddress("avCluEnergySM3",&avCluEnergySM3);
41 ttree->SetBranchAddress("avCluMultSM3",&avCluMultSM3);
42 ttree->SetBranchAddress("avNcellPerCluSM3",&avNcellPerCluSM3);
45 ttree->SetBranchAddress("avPi0NumSM1",&avPi0NumSM1);
46 ttree->SetBranchAddress("avPi0NumSM2",&avPi0NumSM2);
47 ttree->SetBranchAddress("avPi0NumSM3",&avPi0NumSM3);
48 ttree->SetBranchAddress("avPi0NumErrSM1",&avPi0NumErrSM2);
49 ttree->SetBranchAddress("avPi0NumErrSM2",&avPi0NumErrSM2);
50 ttree->SetBranchAddress("avPi0NumErrSM3",&avPi0NumErrSM3);
52 ttree->SetBranchAddress("avPi0MassSM1",&avPi0MassSM1);
53 ttree->SetBranchAddress("avPi0MassSM2",&avPi0MassSM2);
54 ttree->SetBranchAddress("avPi0MassSM3",&avPi0MassSM3);
55 ttree->SetBranchAddress("avPi0MassErrSM1",&avPi0MassErrSM2);
56 ttree->SetBranchAddress("avPi0MassErrSM2",&avPi0MassErrSM2);
57 ttree->SetBranchAddress("avPi0MassErrSM3",&avPi0MassErrSM3);
59 ttree->SetBranchAddress("avPi0SigmaSM1",&avPi0SigmaSM1);
60 ttree->SetBranchAddress("avPi0SigmaSM2",&avPi0SigmaSM2);
61 ttree->SetBranchAddress("avPi0SigmaSM3",&avPi0SigmaSM3);
62 ttree->SetBranchAddress("avPi0SigmaErrSM1",&avPi0SigmaErrSM2);
63 ttree->SetBranchAddress("avPi0SigmaErrSM2",&avPi0SigmaErrSM2);
64 ttree->SetBranchAddress("avPi0SigmaErrSM3",&avPi0SigmaErrSM3);
67 TH1F* havCluEnergySM1 = new TH1F("havCluEnergySM1","Average cluster energy in Module 4",nRuns,0.,nRuns);
68 TH1F* havCluEnergySM2 = new TH1F("havCluEnergySM2","Average cluster energy in Module 3",nRuns,0.,nRuns);
69 TH1F* havCluEnergySM3 = new TH1F("havCluEnergySM3","Average cluster energy in Module 2",nRuns,0.,nRuns);
71 TH1F* havCluMultSM1 = new TH1F("havCluMultSM1","Average number of clusters per event in Module 4",nRuns,0.,nRuns);
72 TH1F* havCluMultSM2 = new TH1F("havCluMultSM2","Average number of clusters per event in Module 3",nRuns,0.,nRuns);
73 TH1F* havCluMultSM3 = new TH1F("havCluMultSM3","Average number of clusters per event in Module 2",nRuns,0.,nRuns);
75 TH1F* havNcellPerCluSM1 = new TH1F("havNcellPerCluSM1","Average number of cells in cluster in Module 4",nRuns,0.,nRuns);
76 TH1F* havNcellPerCluSM2 = new TH1F("havNcellPerCluSM2","Average number of cells in cluster in Module 3",nRuns,0.,nRuns);
77 TH1F* havNcellPerCluSM3 = new TH1F("havNcellPerCluSM3","Average number of cells in cluster in Module 2",nRuns,0.,nRuns);
79 TH1F* havPi0NumSM1 = new TH1F("havPi0NumSM1","Average number of #pi^{0}s per event in Module 4",nRuns,0.,nRuns);
80 TH1F* havPi0NumSM2 = new TH1F("havPi0NumSM2","Average number of #pi^{0}s per event in Module 3",nRuns,0.,nRuns);
81 TH1F* havPi0NumSM3 = new TH1F("havPi0NumSM3","Average number of #pi^{0}s per event in Module 2",nRuns,0.,nRuns);
83 TH1F* havPi0MassSM1 = new TH1F("avPi0MassSM1","#pi^{0} mass position in Module 4",nRuns,0.,nRuns);
84 TH1F* havPi0MassSM2 = new TH1F("avPi0MassSM2","#pi^{0} mass position in Module 3",nRuns,0.,nRuns);
85 TH1F* havPi0MassSM3 = new TH1F("avPi0MassSM3","#pi^{0} mass position in Module 2",nRuns,0.,nRuns);
87 TH1F* havPi0SigmaSM1 = new TH1F("avPi0SigmaSM1","#pi^{0} peak width in Module 4",nRuns,0.,nRuns);
88 TH1F* havPi0SigmaSM2 = new TH1F("avPi0SigmaSM2","#pi^{0} peak width in Module 3",nRuns,0.,nRuns);
89 TH1F* havPi0SigmaSM3 = new TH1F("avPi0SigmaSM3","#pi^{0} peak width in Module 2",nRuns,0.,nRuns);
91 // List of histograms for saving
93 list.Add(havCluEnergySM1);
94 list.Add(havCluEnergySM2);
95 list.Add(havCluEnergySM3);
96 list.Add(havCluMultSM1);
97 list.Add(havCluMultSM2);
98 list.Add(havCluMultSM3);
99 list.Add(havNcellPerCluSM1);
100 list.Add(havNcellPerCluSM2);
101 list.Add(havNcellPerCluSM3);
102 list.Add(havPi0NumSM1);
103 list.Add(havPi0NumSM2);
104 list.Add(havPi0NumSM3);
105 list.Add(havPi0MassSM1);
106 list.Add(havPi0MassSM2);
107 list.Add(havPi0MassSM3);
108 list.Add(havPi0SigmaSM1);
109 list.Add(havPi0SigmaSM2);
110 list.Add(havPi0SigmaSM3);
114 for (Int_t irun=0;irun<nRuns;irun++){
115 ttree->GetEntry(irun);
117 sprintf(runlabel,"%i",runNumber);
119 havCluEnergySM1->SetBinContent(irun+1, avCluEnergySM1);
120 havCluEnergySM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
122 havCluEnergySM2->SetBinContent(irun+1, avCluEnergySM2);
123 havCluEnergySM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
125 havCluEnergySM3->SetBinContent(irun+1, avCluEnergySM3);
126 havCluEnergySM3->GetXaxis()->SetBinLabel(irun+1,runlabel);
128 havCluMultSM1->SetBinContent(irun+1, avCluMultSM1);
129 havCluMultSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
131 havCluMultSM2->SetBinContent(irun+1, avCluMultSM2);
132 havCluMultSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
134 havCluMultSM3->SetBinContent(irun+1, avCluMultSM3);
135 havCluMultSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);
137 havNcellPerCluSM1->SetBinContent(irun+1, avNcellPerCluSM1);
138 havNcellPerCluSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
140 havNcellPerCluSM2->SetBinContent(irun+1, avNcellPerCluSM2);
141 havNcellPerCluSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
143 havNcellPerCluSM3->SetBinContent(irun+1, avNcellPerCluSM3);
144 havNcellPerCluSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);
146 havPi0NumSM1->SetBinContent(irun+1,avPi0NumSM1);
147 havPi0NumSM1->SetBinError(irun+1,avPi0NumErrSM1);
148 havPi0NumSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
150 havPi0NumSM2->SetBinContent(irun+1,avPi0NumSM2);
151 havPi0NumSM2->SetBinError(irun+1,avPi0NumErrSM2);
152 havPi0NumSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
154 havPi0NumSM3->SetBinContent(irun+1,avPi0NumSM3);
155 havPi0NumSM3->SetBinError(irun+1,avPi0NumErrSM3);
156 havPi0NumSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);
158 havPi0MassSM1->SetBinContent(irun+1,avPi0MassSM1);
159 havPi0MassSM1->SetBinError(irun+1,avPi0MassErrSM1);
160 havPi0MassSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
162 havPi0MassSM2->SetBinContent(irun+1,avPi0MassSM2);
163 havPi0MassSM2->SetBinError(irun+1,avPi0MassErrSM2);
164 havPi0MassSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
166 havPi0MassSM3->SetBinContent(irun+1,avPi0MassSM3);
167 havPi0MassSM3->SetBinError(irun+1,avPi0MassErrSM3);
168 havPi0MassSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);
170 havPi0SigmaSM1->SetBinContent(irun+1,avPi0SigmaSM1);
171 havPi0SigmaSM1->SetBinError(irun+1,avPi0SigmaErrSM1);
172 havPi0SigmaSM1->GetXaxis()->SetBinLabel(irun+1,runlabel);
174 havPi0SigmaSM2->SetBinContent(irun+1,avPi0SigmaSM2);
175 havPi0SigmaSM2->SetBinError(irun+1,avPi0SigmaErrSM2);
176 havPi0SigmaSM2->GetXaxis()->SetBinLabel(irun+1,runlabel);
178 havPi0SigmaSM3->SetBinContent(irun+1,avPi0SigmaSM3);
179 havPi0SigmaSM3->SetBinError(irun+1,avPi0SigmaErrSM3);
180 havPi0SigmaSM3->GetXaxis()->SetBinLabel(irun+1,runlabel);
185 TFile* fout = new TFile("ProductionQA.hist.root","recreate");
186 list.Write(); // save selected trend histograms to file