33 input_col_, input_pass_name_)};
35 int ev_nb =
event.getEventNumber();
40 float pe_sublead = -1;
41 bool exists_intermediate_pe =
false;
43 for (
auto chan : channels) {
44 int bar = chan.getBarID();
45 float pe = chan.getPE();
46 if (ev_nb < n_ev_ && bar < n_channels_) {
48 h_ev_disp_->Fill(ev_nb, bar, pe);
52 sublead_bar = lead_bar;
62 if (chan.getQualityFlag() == 0 && bar < 12 && 15 < pe && pe < 40)
63 exists_intermediate_pe =
true;
66 for (
auto chan_probe : channels) {
67 int bar_probe = chan_probe.getBarID();
70 h_cross_talk_[bar][bar_probe]->Fill(pe, chan_probe.getPE());
75 if (exists_intermediate_pe && fill_nb_ < n_ev_) {
76 for (
auto chan : channels) {
77 int bar = chan.getBarID();
79 float pe = chan.getPE();
80 h_ev_disp_pe_->Fill(fill_nb_, bar, pe);
86 if (sublead_bar == -1) {
87 sublead_bar = lead_bar;
90 h_pe_vs_delta_[lead_bar]->Fill(lead_bar - sublead_bar, pe_lead);
91 h_delta_pe_vs_delta_[lead_bar]->Fill(lead_bar - sublead_bar,
92 pe_lead - pe_sublead);
98 h_pe_max_vs_delta_->Fill(lead_bar - sublead_bar, pe_lead);
103void TestBeamHitAnalyzer::onProcessStart() {
104 std::cout <<
"\n\n Process starts! My analyzer should do something -- like "
112 int n_p_ebins = 2 * p_emax;
117 for (
int i_b = 0; i_b < n_channels_; i_b++) {
118 h_pe_[i_b] =
new TH1F(Form(
"h_pe_chan%i", i_b), Form(
";PE, chan%i", i_b),
119 n_p_ebins, 0, p_emax);
120 h_pe_in_clusters_[i_b] =
121 new TH1F(Form(
"h_pe_in_clusters_chan%i", i_b), Form(
";PE, chan%i", i_b),
122 n_p_ebins, 0, p_emax);
123 h_pe_vs_delta_[i_b] =
new TH2F(
124 Form(
"h_pe_vs_delta_chan%i", i_b),
125 Form(
";#delta_{barID};PE, chan%i has max PE", i_b), n_channels_ + 1,
126 -n_channels_ / 2 - 0.5, n_channels_ / 2 + 0.5, n_p_ebins, 0, p_emax);
127 h_delta_pe_vs_delta_[i_b] =
128 new TH2F(Form(
"h_delta_pe_vs_delta_chan%i", i_b),
129 Form(
";#delta_{barID};#Delta_PE, chan%i has max PE", i_b),
130 n_channels_ + 1, -n_channels_ / 2 - 0.5, n_channels_ / 2 + 0.5,
131 n_p_ebins, 0, p_emax);
136 for (
int i_e = 0; i_e < n_ev_; i_e++) {
137 for (
int i_b = 0; i_b < n_channels_; i_b++) {
139 new TH1F(Form(
"hCharge_chan%i_ev%i", i_b, i_e),
140 Form(
";time sample; Q, chan %i, ev %i [fC]", i_b, i_e),
141 n_time_samp, -0.5, n_time_samp - 0.5);
146 new TH2F(
"h_pe_max_vs_delta_",
";#delta_{barID};PE, max hit", n_channels_,
147 -n_channels_ / 2, n_channels_ / 2, n_p_ebins, 0, p_emax);
149 new TH2F(Form(
"h_ev_disp_ev%i", n_ev_),
";Event number; Bar ID; PE",
150 n_ev_, 0.5, n_ev_ + 0.5, n_channels_, -0.5, n_channels_ - 0.5);
152 new TH2F(
"h_ev_disp_pe_cut",
";Event number; Bar ID; PE", n_ev_, 0.5,
153 n_ev_ + 0.5, n_channels_, -0.5, n_channels_ - 0.5);
157 for (
int i_btag = 0; i_btag < n_channels_; i_btag++) {
158 for (
int i_bprobe = i_btag; i_bprobe < n_channels_; i_bprobe++) {
160 h_cross_talk_[i_btag][i_bprobe] =
161 new TH2F(Form(
"h_pe_chan%i_vs_chan%i", i_bprobe, i_btag),
162 Form(
";PE, channel %i; PE, channel %i", i_bprobe, i_btag),
163 n_p_ebins, 0, p_emax, n_p_ebins, 0, p_emax);