35 input_col_, input_pass_name_)};
37 int ev_nb =
event.getEventNumber();
42 float pe_sublead = -1;
43 bool exists_intermediate_pe =
false;
45 for (
auto chan : channels) {
46 int bar = chan.getBarID();
47 float pe = chan.getPE();
48 if (ev_nb < n_ev_ && bar < n_channels_) {
50 h_ev_disp_->Fill(ev_nb, bar, pe);
54 sublead_bar = lead_bar;
64 if (chan.getQualityFlag() == 0 && bar < 12 && 15 < pe && pe < 40)
65 exists_intermediate_pe =
true;
68 for (
auto chan_probe : channels) {
69 int bar_probe = chan_probe.getBarID();
72 h_cross_talk_[bar][bar_probe]->Fill(pe, chan_probe.getPE());
77 if (exists_intermediate_pe && fill_nb_ < n_ev_) {
78 for (
auto chan : channels) {
79 int bar = chan.getBarID();
81 float pe = chan.getPE();
82 h_ev_disp_pe_->Fill(fill_nb_, bar, pe);
88 if (sublead_bar == -1) {
89 sublead_bar = lead_bar;
92 h_pe_vs_delta_[lead_bar]->Fill(lead_bar - sublead_bar, pe_lead);
93 h_delta_pe_vs_delta_[lead_bar]->Fill(lead_bar - sublead_bar,
94 pe_lead - pe_sublead);
100 h_pe_max_vs_delta_->Fill(lead_bar - sublead_bar, pe_lead);
105void TestBeamHitAnalyzer::onProcessStart() {
106 std::cout <<
"\n\n Process starts! My analyzer should do something -- like "
114 int n_p_ebins = 2 * p_emax;
119 for (
int i_b = 0; i_b < n_channels_; i_b++) {
120 h_pe_[i_b] =
new TH1F(Form(
"h_pe_chan%i", i_b), Form(
";PE, chan%i", i_b),
121 n_p_ebins, 0, p_emax);
122 h_pe_in_clusters_[i_b] =
123 new TH1F(Form(
"h_pe_in_clusters_chan%i", i_b), Form(
";PE, chan%i", i_b),
124 n_p_ebins, 0, p_emax);
125 h_pe_vs_delta_[i_b] =
new TH2F(
126 Form(
"h_pe_vs_delta_chan%i", i_b),
127 Form(
";#delta_{barID};PE, chan%i has max PE", i_b), n_channels_ + 1,
128 -n_channels_ / 2 - 0.5, n_channels_ / 2 + 0.5, n_p_ebins, 0, p_emax);
129 h_delta_pe_vs_delta_[i_b] =
130 new TH2F(Form(
"h_delta_pe_vs_delta_chan%i", i_b),
131 Form(
";#delta_{barID};#Delta_PE, chan%i has max PE", i_b),
132 n_channels_ + 1, -n_channels_ / 2 - 0.5, n_channels_ / 2 + 0.5,
133 n_p_ebins, 0, p_emax);
138 for (
int i_e = 0; i_e < n_ev_; i_e++) {
139 for (
int i_b = 0; i_b < n_channels_; i_b++) {
141 new TH1F(Form(
"hCharge_chan%i_ev%i", i_b, i_e),
142 Form(
";time sample; Q, chan %i, ev %i [fC]", i_b, i_e),
143 n_time_samp, -0.5, n_time_samp - 0.5);
148 new TH2F(
"h_pe_max_vs_delta_",
";#delta_{barID};PE, max hit", n_channels_,
149 -n_channels_ / 2, n_channels_ / 2, n_p_ebins, 0, p_emax);
151 new TH2F(Form(
"h_ev_disp_ev%i", n_ev_),
";Event number; Bar ID; PE",
152 n_ev_, 0.5, n_ev_ + 0.5, n_channels_, -0.5, n_channels_ - 0.5);
154 new TH2F(
"h_ev_disp_pe_cut",
";Event number; Bar ID; PE", n_ev_, 0.5,
155 n_ev_ + 0.5, n_channels_, -0.5, n_channels_ - 0.5);
159 for (
int i_btag = 0; i_btag < n_channels_; i_btag++) {
160 for (
int i_bprobe = i_btag; i_bprobe < n_channels_; i_bprobe++) {
162 h_cross_talk_[i_btag][i_bprobe] =
163 new TH2F(Form(
"h_pe_chan%i_vs_chan%i", i_bprobe, i_btag),
164 Form(
";PE, channel %i; PE, channel %i", i_bprobe, i_btag),
165 n_p_ebins, 0, p_emax, n_p_ebins, 0, p_emax);