| 1 |  | 
|---|
| 2 | ///////////////////////////////////////////////////////////////////////////// | 
|---|
| 3 | //                                                                         // | 
|---|
| 4 | // Author(s): S.C. Commichau,  Javier Rico, 12/2003                        // | 
|---|
| 5 | //                                                                         // | 
|---|
| 6 | // Macro to generate pedestal vs time (event) plot for a single pixel      // | 
|---|
| 7 | //                                                                         // | 
|---|
| 8 | ///////////////////////////////////////////////////////////////////////////// | 
|---|
| 9 |  | 
|---|
| 10 |  | 
|---|
| 11 | const Int_t default_pixel = 1 ; | 
|---|
| 12 |  | 
|---|
| 13 | void pedvsevent(Int_t pixel = default_pixel, | 
|---|
| 14 | TString pname = "/disc02/Data/rootdata/Miscellaneous/2003_11_29/20031128_03118_P_Park-camera-closed_E.root") | 
|---|
| 15 | { | 
|---|
| 16 |  | 
|---|
| 17 | TH1F* Pedestal    = new TH1F("Pedestal","Pedestals",100,0,20); | 
|---|
| 18 | TH1F* PedestalRMS = new TH1F("PedestalRMS","Pedestal RMS",100,0,10); | 
|---|
| 19 |  | 
|---|
| 20 | //Create an empty parameter list and an empty task list | 
|---|
| 21 | //the tasklist is identified in the eventloop by ist name | 
|---|
| 22 | MParList       plist; | 
|---|
| 23 | MTaskList      tlist; | 
|---|
| 24 |  | 
|---|
| 25 | //Creates a MPedestalPix object for each pixel, i.e. it is a | 
|---|
| 26 | //storage container for all Pedestal information in the camera | 
|---|
| 27 | MPedestalCam   cam; | 
|---|
| 28 |  | 
|---|
| 29 | plist.AddToList(&cam); | 
|---|
| 30 |  | 
|---|
| 31 | //MHCamEvent hist; | 
|---|
| 32 | //hist.SetType(1); | 
|---|
| 33 | //plist.AddToList(&hist); | 
|---|
| 34 |  | 
|---|
| 35 | plist.AddToList(&tlist); | 
|---|
| 36 |  | 
|---|
| 37 | //Setup task and tasklist for the pedestals | 
|---|
| 38 | MReadMarsFile read("Events", pname); | 
|---|
| 39 | read.DisableAutoScheme(); | 
|---|
| 40 |  | 
|---|
| 41 | //Apply the geometry to geometry dependant containers. | 
|---|
| 42 | //MGeomApply changes the size of the arrays in the containers to a size | 
|---|
| 43 | //matching the number of pixels, eg: MPedestalCam, MBlindPixels | 
|---|
| 44 | //Default geometry is MGeomCamMagic | 
|---|
| 45 | MGeomApply      geomapl; | 
|---|
| 46 |  | 
|---|
| 47 | //Task to calculate pedestals | 
|---|
| 48 | MPedCalcPedRun  ped; | 
|---|
| 49 |  | 
|---|
| 50 | tlist.AddToList(&read); | 
|---|
| 51 | tlist.AddToList(&geomapl); | 
|---|
| 52 | tlist.AddToList(&ped); | 
|---|
| 53 |  | 
|---|
| 54 | //ped.SetPixel(pixel); | 
|---|
| 55 | //ped.Draw(); | 
|---|
| 56 |  | 
|---|
| 57 | //Create and setup the 1st Eventloop | 
|---|
| 58 | MEvtLoop evtloop; | 
|---|
| 59 | evtloop.SetParList(&plist); | 
|---|
| 60 |  | 
|---|
| 61 | //Execute first analysis, pedestals... | 
|---|
| 62 | if (!tlist.PreProcess(&plist)) | 
|---|
| 63 | return; | 
|---|
| 64 |  | 
|---|
| 65 | const Int_t nevents = read.GetEntries(); | 
|---|
| 66 |  | 
|---|
| 67 | Float_t x[nevents], rms[nevents], mean[nevents]; | 
|---|
| 68 |  | 
|---|
| 69 |  | 
|---|
| 70 | Int_t i = 0; | 
|---|
| 71 | while (tlist.Process()) | 
|---|
| 72 | { | 
|---|
| 73 | mean[i] = cam[pixel].GetPedestal(); | 
|---|
| 74 | rms[i] = cam[pixel].GetPedestalRms(); | 
|---|
| 75 | x[i] = i; | 
|---|
| 76 | i++; | 
|---|
| 77 | } | 
|---|
| 78 |  | 
|---|
| 79 | TGraphErrors* pedgraph = new TGraphErrors(nevents,x,mean,NULL,NULL); | 
|---|
| 80 | TGraphErrors* rmsgraph = new TGraphErrors(nevents,x,rms,NULL,NULL); | 
|---|
| 81 |  | 
|---|
| 82 | //plist.FindObject("MPedestalCam")->Print(); | 
|---|
| 83 |  | 
|---|
| 84 | tlist.PostProcess(); | 
|---|
| 85 | //if (!evtloop.Eventloop()) | 
|---|
| 86 | // return; | 
|---|
| 87 |  | 
|---|
| 88 | Float_t finalmean = cam[pixel].GetPedestal(); | 
|---|
| 89 | Float_t finalrms = cam[pixel].GetPedestalRms(); | 
|---|
| 90 |  | 
|---|
| 91 | TLine* pedline = new TLine(0,finalmean,nevents,finalmean); | 
|---|
| 92 | TLine* rmsline = new TLine(0,finalrms,nevents,finalrms); | 
|---|
| 93 |  | 
|---|
| 94 | //The draw area | 
|---|
| 95 |  | 
|---|
| 96 |  | 
|---|
| 97 |  | 
|---|
| 98 | gROOT->Reset(); | 
|---|
| 99 | gStyle->SetOptStat(0); | 
|---|
| 100 | // Set statistics options, 1111111 | 
|---|
| 101 | //                         ||||||| | 
|---|
| 102 | //                         ||||||histogram name | 
|---|
| 103 | //                         |||||number of entries | 
|---|
| 104 | //                         ||||mean value | 
|---|
| 105 | //                         |||RMS | 
|---|
| 106 | //                         ||underflows | 
|---|
| 107 | //                         |overflows | 
|---|
| 108 | //                         sum of bins | 
|---|
| 109 |  | 
|---|
| 110 | // Set gPad options | 
|---|
| 111 | gStyle->SetFrameBorderMode(0); | 
|---|
| 112 | gStyle->SetPalette(1); | 
|---|
| 113 | // Delete Frames of subCanvas' does not work, hook it Mr. gPad! | 
|---|
| 114 | gStyle->SetFrameBorderSize(0); | 
|---|
| 115 | gStyle->SetCanvasColor(0); | 
|---|
| 116 | gStyle->SetFrameFillColor(0); | 
|---|
| 117 | gStyle->SetTitleFont(102); | 
|---|
| 118 | gStyle->SetTitleFillColor(0); | 
|---|
| 119 | gStyle->SetTitleBorderSize(0); | 
|---|
| 120 | gStyle->SetStatColor(0); | 
|---|
| 121 | gStyle->SetStatBorderSize(0); | 
|---|
| 122 |  | 
|---|
| 123 | // Set Canvas options | 
|---|
| 124 | TCanvas *MyC1 = new TCanvas("MyC","Pedestal vs Event", 0, 100, 900, 500); | 
|---|
| 125 | MyC->SetBorderMode(0);    // Delete the Canvas' border line | 
|---|
| 126 |  | 
|---|
| 127 | MyC->cd(); | 
|---|
| 128 | gPad->SetBorderMode(0); | 
|---|
| 129 |  | 
|---|
| 130 | //  TLine* pedline = new TLine(0,finalmean,nevents,finalmean); | 
|---|
| 131 | //TLine* rmsline = new TLine(0,finalrms,nevents,finalrms); | 
|---|
| 132 |  | 
|---|
| 133 | tlist.PrintStatistics(); | 
|---|
| 134 | //plist.FindObject("MPedestalCam")->Print(); | 
|---|
| 135 | Size_t pos = pname.Last('/')+10; | 
|---|
| 136 | TString iRun = TString(pname(pos,5)); | 
|---|
| 137 |  | 
|---|
| 138 | char str[64]; | 
|---|
| 139 |  | 
|---|
| 140 | sprintf(str,"Run %s Pixel %d",iRun.Data(),pixel); | 
|---|
| 141 |  | 
|---|
| 142 | pedgraph->SetMaximum(30); | 
|---|
| 143 | pedgraph->SetMinimum(0); | 
|---|
| 144 | pedgraph->SetMarkerStyle(24); | 
|---|
| 145 | pedgraph->SetMarkerSize(.5); | 
|---|
| 146 | pedgraph->GetXaxis()->SetTitleFont(102); | 
|---|
| 147 | pedgraph->GetYaxis()->SetTitleFont(102); | 
|---|
| 148 | pedgraph->GetXaxis()->SetLabelFont(102); | 
|---|
| 149 | pedgraph->GetYaxis()->SetLabelFont(102); | 
|---|
| 150 | pedgraph->SetTitle(str); | 
|---|
| 151 | //     pedgraph->SetTitleFont(102); | 
|---|
| 152 | pedgraph->GetYaxis()->SetTitleFont(102); | 
|---|
| 153 | pedgraph->GetXaxis()->SetTitle("Event"); | 
|---|
| 154 | pedgraph->GetYaxis()->SetTitle("[FADC Counts]"); | 
|---|
| 155 | pedgraph->GetXaxis()->SetLimits(0,nevents-1); | 
|---|
| 156 |  | 
|---|
| 157 | rmsgraph->SetMarkerStyle(25); | 
|---|
| 158 | rmsgraph->SetMarkerSize(.5); | 
|---|
| 159 | rmsgraph->SetMarkerColor(8); | 
|---|
| 160 |  | 
|---|
| 161 | pedline->SetLineColor(2); | 
|---|
| 162 | rmsline->SetLineColor(4); | 
|---|
| 163 | pedline->SetLineWidth(2); | 
|---|
| 164 | rmsline->SetLineWidth(2); | 
|---|
| 165 |  | 
|---|
| 166 | pedgraph->Draw("AP"); | 
|---|
| 167 | rmsgraph->Draw("P"); | 
|---|
| 168 |  | 
|---|
| 169 | pedline->Draw("same"); | 
|---|
| 170 | rmsline->Draw("same"); | 
|---|
| 171 |  | 
|---|
| 172 | TLegend* leg = new TLegend(.14,.68,.39,.88); | 
|---|
| 173 | leg->SetHeader(""); | 
|---|
| 174 | leg->AddEntry(pedgraph,"Event based Pedestal","P"); | 
|---|
| 175 | leg->AddEntry(pedline,"Run based Pedestal","L"); | 
|---|
| 176 | leg->AddEntry(rmsgraph,"Event based RMS","P"); | 
|---|
| 177 | leg->AddEntry(rmsline,"Run based RMS","L"); | 
|---|
| 178 | leg->SetFillColor(0); | 
|---|
| 179 | leg->SetLineColor(1); | 
|---|
| 180 | leg->SetBorderSize(1); | 
|---|
| 181 |  | 
|---|
| 182 |  | 
|---|
| 183 | leg->Draw("same"); | 
|---|
| 184 | } | 
|---|
| 185 |  | 
|---|
| 186 |  | 
|---|
| 187 |  | 
|---|
| 188 |  | 
|---|
| 189 |  | 
|---|
| 190 |  | 
|---|
| 191 |  | 
|---|
| 192 |  | 
|---|
| 193 |  | 
|---|
| 194 |  | 
|---|
| 195 |  | 
|---|
| 196 |  | 
|---|
| 197 |  | 
|---|
| 198 |  | 
|---|
| 199 |  | 
|---|
| 200 |  | 
|---|
| 201 |  | 
|---|
| 202 |  | 
|---|
| 203 |  | 
|---|
| 204 |  | 
|---|
| 205 |  | 
|---|
| 206 |  | 
|---|
| 207 |  | 
|---|
| 208 |  | 
|---|
| 209 |  | 
|---|
| 210 |  | 
|---|
| 211 |  | 
|---|
| 212 |  | 
|---|
| 213 |  | 
|---|
| 214 |  | 
|---|