BmnRoot
Loading...
Searching...
No Matches
BmnHistZDC.cxx
Go to the documentation of this file.
1#include "TGaxis.h"
2
3#include "BmnHistZDC.h"
4
5BmnHistZDC::BmnHistZDC(TString title, TString path) : BmnHist() {
6 fTitle = title;
7 fName = title + "_cl";
8 TGaxis::SetMaxDigits(2);
9 TString name;
10 name = fTitle + "_h2d_Grid";
11 h2d_grid = new TH2D(name, "ZDC Grid", 20, 0, 20, 20, 0, 20);
12 h2d_grid->GetXaxis()->SetTitle("iX");
13 h2d_grid->GetXaxis()->SetTitleColor(kOrange + 10);
14 h2d_grid->GetYaxis()->SetTitle("iY");
15 h2d_grid->GetYaxis()->SetTitleColor(kOrange + 10);
16 h2d_grid->GetZaxis()->SetNoExponent(kFALSE);
17 name = fTitle + "_h2d_Profile";
18 h2d_profile = new TH2D(name, "ZDC Profile", 200, -700, 700, 200, -700, 700);
19 h2d_profile->GetXaxis()->SetTitle("X");
20 h2d_profile->GetXaxis()->SetTitleColor(kOrange + 10);
21 h2d_profile->GetYaxis()->SetTitle("Y");
22 h2d_profile->GetYaxis()->SetTitleColor(kOrange + 10);
23 name = fTitle + "_X_Amplitude";
24 hx = new TH1D(name, "ZDC X Amplitude", 200, -700, 700);
25 name = fTitle + "_Y_Amplitude";
26 hy = new TH1D(name, "ZDC Y Amplitude", 200, -700, 700);
27 name = fTitle + "CanvasAmplitudes";
28 canAmps = new TCanvas(name, name, PAD_WIDTH * ZDC_ROWS, PAD_HEIGHT * ZDC_COLS);
29 canAmps->Divide(ZDC_ROWS, ZDC_COLS);
30 canAmpsPads.resize(ZDC_ROWS * ZDC_COLS);
31 NamesAmps.resize(ZDC_ROWS * ZDC_COLS);
32
33 PadInfo *p = new PadInfo();
34 p->current = hx;
35 canAmpsPads[0] = p;
36 PadInfo *p1 = new PadInfo();
37 p1->current = hy;
38 canAmpsPads[1] = p1;
39
40 for (Int_t rowIndex = 0; rowIndex < ZDC_ROWS; rowIndex++) {
41 for (Int_t colIndex = 0; colIndex < ZDC_COLS; colIndex++) {
42 Int_t iPad = rowIndex * ZDC_COLS + colIndex;
43 canAmps->GetPad(iPad + 1)->SetGrid();
44 NamesAmps[iPad] = canAmpsPads[iPad]->current->GetName();
45 TH1 *h = canAmpsPads[iPad]->current;
46 h->SetTitleSize(0.06, "XY");
47 h->SetLabelSize(0.08, "XY");
48 h->GetXaxis()->SetTitle("Coordinate");
49 h->GetXaxis()->SetTitleColor(kOrange + 10);
50 h->GetYaxis()->SetTitle("Amplitude");
51 h->GetYaxis()->SetTitleColor(kOrange + 10);
52 h->GetYaxis()->SetTitleOffset(1.4);
53 h->GetYaxis()->SetNoExponent(kFALSE);
54 }
55 }
56}
57
59 if (fDir != NULL)
60 return;
61 delete h2d_grid;
62 delete h2d_profile;
63 delete hx;
64 delete hy;
65 if (fDir)
66 return;
67 for (auto pad : canAmpsPads)
68 delete pad;
69}
70
71void BmnHistZDC::Register(THttpServer *serv) {
72 fServer = serv;
73 fServer->Register("/", this);
74 TString path = "/" + fTitle + "/";
75 fServer->Register(path, h2d_grid);
76 fServer->Register(path, h2d_profile);
77 fServer->Register(path, canAmps);
78 TString cmd = "/" + fName + "/->Reset()";
79 fServer->SetItemField(path.Data(), "_monitoring", "2000");
80 fServer->SetItemField(path.Data(), "_layout", "grid3x3");
81 TString cmdTitle = path + "Reset";
82 fServer->RegisterCommand(cmdTitle.Data(), cmd.Data(), "button;");
83 fServer->Restrict(cmdTitle, "visible=shift");
84 fServer->Restrict(cmdTitle, "allow=shift");
85 cmd = "/" + fName + "/->SetRefRun(%arg1%)";
86 cmdTitle = path + "SetRefRun";
87 fServer->RegisterCommand(cmdTitle.Data(), cmd.Data(), "button;");
88}
89
90void BmnHistZDC::SetDir(TFile *outFile = NULL, TTree *recoTree = NULL) {
91 frecoTree = recoTree;
92 fDir = NULL;
93 if (outFile != NULL)
94 fDir = outFile->mkdir(fTitle + "_hists");
95 h2d_grid->SetDirectory(fDir);
96 h2d_profile->SetDirectory(fDir);
97 hx->SetDirectory(fDir);
98 hy->SetDirectory(fDir);
99
100}
101
103 BmnHist::DrawRef(canAmps, &canAmpsPads);
104 return;
105}
106
108 TClonesArray * digits = fDigiArrays->zdc;
109 if (!digits)
110 return;
111 Double_t xAmp = 0;
112 Double_t yAmp = 0;
113 Double_t Amp = 0;
114 for (Int_t iDig = 0; iDig < digits->GetEntriesFast(); iDig++) {
115 BmnZDCDigit* dig = (BmnZDCDigit*) digits->At(iDig);
116 Int_t ix = dig->GetIX();
117 Int_t iy = dig->GetIY();
118 Double_t amp = dig->GetAmp();
119 Amp += amp;
120 h2d_grid->Fill(ix, iy, dig->GetAmp());
121 xAmp += amp * dig->GetX();
122 yAmp += amp * dig->GetY();
123 }
124 if (Amp == 0)
125 return;
126 xAmp /= Amp;
127 yAmp /= Amp;
128 h2d_profile->Fill(xAmp, yAmp, Amp);
129 hx->Fill(xAmp, Amp);
130 hy->Fill(yAmp, Amp);
131}
132
134 TString FileName = Form("bmn_run%04d_hist.root", id);
135 printf("SetRefRun: %s\n", FileName.Data());
136 if (refRunName != FileName) {
137 refRunName = FileName;
138 refID = id;
139 BmnHist::LoadRefRun(refID, refPath + FileName, fTitle, canAmpsPads, NamesAmps);
140 DrawBoth();
141 }
142 return kBMNSUCCESS;
143}
144
146 for (auto pad : canAmpsPads){
147 if (pad->ref) delete pad->ref;
148 pad->ref = NULL;
149 }
150 refID = 0;
151}
152
154 h2d_grid->Reset();
155 h2d_profile->Reset();
156 hx->Reset();
157 hy->Reset();
158}
#define PAD_WIDTH
Definition BmnAdcQA.cxx:3
#define PAD_HEIGHT
Definition BmnAdcQA.cxx:4
BmnStatus
Definition BmnEnums.h:24
@ kBMNSUCCESS
Definition BmnEnums.h:25
Float_t GetX() const
Float_t GetY() const
Float_t GetAmp() const
void DrawBoth()
void SetDir(TFile *outFile, TTree *recoTree)
BmnStatus SetRefRun(Int_t id)
virtual ~BmnHistZDC()
void FillFromDigi(DigiArrays *fDigiArrays)
void ClearRefRun()
BmnHistZDC(TString title="ZDC", TString path="")
Definition BmnHistZDC.cxx:5
void Register(THttpServer *serv)
TTree * frecoTree
Definition BmnHist.h:88
Int_t refID
Definition BmnHist.h:92
TString refPath
Definition BmnHist.h:90
TDirectory * fDir
Definition BmnHist.h:89
static void DrawRef(unique_ptr< TCanvas > &canGemStrip, vector< PadInfo * > *canGemStripPads)
Definition BmnHist.cxx:15
TString refRunName
Definition BmnHist.h:91
static BmnStatus LoadRefRun(Int_t refID, TString FullName, TString fTitle, vector< PadInfo * > canPads, vector< TString > Names)
Definition BmnHist.cxx:100
THttpServer * fServer
Definition BmnHist.h:87
UChar_t GetIX() const
Definition BmnZDCDigit.h:27
UChar_t GetIY() const
Definition BmnZDCDigit.h:28
TClonesArray * zdc
Definition DigiArrays.h:132
Storage for pad content and it's options.
Definition PadInfo.h:20
TH1 * current
Definition PadInfo.h:78
#define ZDC_COLS
Definition BmnHistZDC.h:20
#define ZDC_ROWS
Definition BmnHistZDC.h:19