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