11 fName = title +
"_cl";
19 name =
fTitle +
"_down_low";
21 new TH2F(name,
"Hodo signal in strips side DOWN gain LOW",
kNstrips + 2, 0,
kNstrips + 2, 250, 0, 5000);
29 new TH2F(name,
"Hodo signal in strips side UP gain LOW",
kNstrips + 2, 0,
kNstrips + 2, 250, 0, 5000);
35 name =
fTitle +
"_down_high";
37 new TH2F(name,
"Hodo signal in strips side DOWN gain HIGH",
kNstrips + 2, 0,
kNstrips + 2, 250, 0, 5000);
43 name =
fTitle +
"_up_high";
45 new TH2F(name,
"Hodo signal in strips side UP gain HIGH",
kNstrips + 2, 0,
kNstrips + 2, 250, 0, 5000);
52 name =
fTitle +
"Canvas_h2d";
59 puh2->
opt =
"colz logz";
64 pul2->
opt =
"colz logz";
69 pdh2->
opt =
"colz logz";
74 pdl2->
opt =
"colz logz";
78 name =
fTitle +
"_profile_down_low";
85 name =
fTitle +
"_profile_up_low";
92 name =
fTitle +
"_profile_down_high";
99 name =
fTitle +
"_profile_up_high";
107 name =
fTitle +
"Canvas_h1d_prof";
134 name =
fTitle +
"_canv_proj_UH";
137 name =
fTitle +
"_canv_proj_DH";
140 name =
fTitle +
"_canv_proj_UL";
143 name =
fTitle +
"_canv_proj_DL";
147 for (uint32_t j = 0; j <
kNsides; j++)
148 for (uint32_t k = 0; k <
kNgains; k++) {
151 (j == 0) ? side =
"DOWN" : side =
"UP";
152 (k == 0) ? gain =
"LOW" : gain =
"HIGH";
154 vecProj[address] =
new TH1F(nameH, nameH, 250, 0, 5000);
157 p->
opt =
"hist logy";
162 name =
fTitle +
"_hStripSideGain";
168 name =
fTitle +
"_wfmStrip";
174 name =
fTitle +
"CanvasSelection";
186 ps2->
opt =
"hist lp";
190 name =
fTitle +
"_hZ2_hodo";
192 hZ2_hodo->GetXaxis()->SetTitle(
"Z^2");
194 hZ2_hodo->GetYaxis()->SetTitle(
"Counts / event");
199 name =
fTitle +
"CanvasZ2";
224 fServer->SetItemField(path.Data(),
"_monitoring",
"2000");
225 fServer->SetItemField(path.Data(),
"_layout",
"grid3x3");
226 TString cmdTitle = path +
"Reset";
228 fServer->Restrict(cmdTitle,
"visible=shift");
229 fServer->Restrict(cmdTitle,
"allow=shift");
230 cmd =
"/" +
fName +
"/->SetRefRun(%arg1%)";
231 cmdTitle = path +
"SetRefRun";
233 cmdTitle = path +
"ChangeSelection";
234 fServer->RegisterCommand(cmdTitle,
TString(
"/") +
fName.Data() +
"/->SetSelection(%arg1%,%arg2%,%arg3%,%arg4%)",
236 fServer->Restrict(cmdTitle,
"visible=shift");
237 fServer->Restrict(cmdTitle,
"allow=shift");
257 for (uint32_t j = 0; j <
kNsides; j++)
258 for (uint32_t k = 0; k <
kNgains; k++) {
273 TString digiInTree =
"HodoDigi";
282 triggerCondition =
Form(
" && %s trigger bit == %d (bitBT=2, bitBC1=3, bitMBT=6, bitNiT=4, bitCCT1=5, "
283 "bitCCT2=8, bitCCT3=12, bitFHCAL=9)",
285 TString titleSignal =
Form(
"#splitline{Signal %s}{%s}", command.
Data(), triggerCondition.
Data());
287 TString titleWfm =
Form(
"#splitline{Wfm %s}{%s}", command.
Data(), triggerCondition.
Data());
303 std::vector<PadInfo*> hsubPadsUH;
304 std::vector<PadInfo*> hsubPadsDH;
305 std::vector<PadInfo*> hsubPadsUL;
306 std::vector<PadInfo*> hsubPadsDL;
312 for (uint32_t j = 0; j <
kNsides; j++)
313 for (uint32_t k = 0; k <
kNgains; k++) {
315 if (j == 0 && k == 0)
317 if (j == 0 && k == 1)
319 if (j == 1 && k == 0)
321 if (j == 1 && k == 1)
356 vecProj.at(flatIdx)->Fill(signal);
357 if (side == 0 && gain == 0) {
361 if (side == 0 && gain == 1) {
365 if (side == 1 && gain == 0) {
369 if (side == 1 && gain == 1) {
389 auto Wfm = digi->
GetWfm();
390 std::vector<float> points(Wfm.size());
391 std::iota(std::begin(points), std::end(points), 0);
393 wfmStrip->GetXaxis()->SetRangeUser(0, Wfm.size());
394 for (
UInt_t wfm_iter = 0; wfm_iter < Wfm.size(); wfm_iter++)
395 wfmStrip->Fill(wfm_iter, Wfm.at(wfm_iter));
400 responses[strip][side] = signal;
404 if (responses[
i][0] * responses[
i][1] > 0.001)
405 hZ2_hodo->Fill((responses[
i][0] + responses[
i][1]) / 2);
415 TString FileName =
Form(
"bmn_run%04d_hist.root",
id);
416 printf(
"SetRefRun: %s\n", FileName.
Data());
424 std::vector<PadInfo*> padVec;
425 std::vector<TString> nameVec;
431 [](
const auto& kv) { return kv.second; });
434 [](
const auto& kv) { return kv.second; });
460 for (uint32_t j = 0; j <
kNsides; j++)
461 for (uint32_t k = 0; k <
kNgains; k++) {
473 printf(
"BmnHistHodo : Reset histos\n");
487 for (uint32_t j = 0; j <
kNsides; j++)
488 for (uint32_t k = 0; k <
kNgains; k++) {
513 for (uint32_t j = 0; j <
kNsides; j++)
514 for (uint32_t k = 0; k <
kNgains; k++) {
void memset(T *dest, T i, size_t num)
Copy to memory block [@dest, @dest+@num] num number of times the value of i of type @T with size @typ...
char * Form(const char *fmt,...)
char * Strip(const char *str, char c=' ')
BmnStatus
Define status code.
std::vector< float > GetWfm() const
Waveform.
BmnStatus SetRefRun(Int_t id)
std::map< uint32_t, TH1 * > vecProj
BmnHistHodo(TString title="Hodo", TString path="")
vector< TString > NamesAmps
vector< TString > NamesProf
std::map< uint32_t, TString > Namescanv_proj
std::map< uint32_t, PadInfo * > canv_proj_Pads
vector< TString > NamesSelect
vector< PadInfo * > canSelectPads
void SetDir(TFile *outFile, TTree *recoTree)
void FillFromDigi(DigiArrays *fDigiArrays)
void Register(THttpServer *serv)
vector< PadInfo * > canAmpsPads
vector< TString > NamesZ2
void SetSelection(Int_t Strip, Int_t Side, Int_t Gain, Int_t Trigger)
vector< PadInfo * > canProfPads
static constexpr int kNsides
vector< PadInfo * > canZ2Pads
static constexpr int kNstrips
static constexpr int kNgains
static void DrawRef(unique_ptr< TCanvas > &canGemStrip, vector< PadInfo * > *canGemStripPads)
static BmnStatus LoadRefRun(Int_t refID, TString FullName, TString fTitle, vector< PadInfo * > canPads, vector< TString > Names)
BmnHist(Int_t periodID=7, BmnSetup setup=kBMNSETUP)
static uint32_t GetAddress(uint32_t StripId, uint32_t StripSide, uint32_t Gain)
Return address from system ID, StripId, StripSide, Gain.
Data class for BmnHodo digital signal processing.
uint32_t GetGain() const
Gain.
uint32_t GetStripSide() const
Strip Side.
uint32_t GetStripId() const
Storage for pad content and it's options.
static void SetMaxDigits(Int_t maxd=5)
const char * GetName() const override
Int_t GetEntriesFast() const
TObject * At(Int_t idx) const override
friend friend class TClonesArray
const char * Data() const