34 typedef std::tuple<unsigned, double, double>
Binning;
40 std::map<std::string, TH1*>
h_;
41 std::map<std::string, TH2*>
h2_;
59 Binning adc_bin(4096, -0.5, 4095.5);
60 Binning nbin(2001, -0.5, 2000.5);
61 Binning plane_bin(1001, -0.5, 1000.5);
62 Binning cell_bin(401, -0.5, 400.5);
66 make_histo(
"adc_all_hits",
"ADC Distribution of All Hits", adc_bin);
67 make_histo(
"adc_all_hits_raw",
"Raw ADC Distribution of All Hits", adc_bin);
68 make_histo(
"adc_mean",
"Mean ADC per Slice", adc_bin);
69 make_histo(
"adc_max",
"Maximum ADC per Slice", adc_bin);
70 make_histo(
"adc_min",
"Minimum ADC per Slice", adc_bin);
72 make_histo(
"adc_sum_above_200",
"Summed ADC (ADC > 200) per Slice",
75 make_histo(
"n_hits_per_slice",
"Number of Hits per Slice", nbin);
77 "Number of Hits per Triggered Slice", nbin);
78 make_histo(
"n_hits_above_200",
"Number of Hits above 200 ADC", nbin);
79 make_histo(
"n_hits_above_700",
"Number of Hits above 700 ADC", nbin);
80 make_histo(
"n_hits_above_1000",
"Number of Hits above 1000 ADC", nbin);
81 make_histo(
"n_hits_above_2000",
"Number of Hits above 2000 ADC", nbin);
83 make_histo(
"plane_all_hits",
"Plane of All Hits", plane_bin);
84 make_histo(
"cell_all_hits",
"Cell of All Hits", cell_bin);
88 (
"trigger_rate_700",
"Trigger Rate",
92 (
"trigger_rate_1000",
"Trigger Rate",
95 h2_[
"trigger_rate_2000"] =
tfs_->
make<TH2F>
96 (
"trigger_rate_2000",
"Trigger Rate",
105 (name.c_str(), title.c_str(),
106 std::get<0>(
bin), std::get<1>(bin), std::get<2>(
bin));
113 e.
getByLabel(
"tdcsort",
"TDCSortedHits", sorted_hits);
121 h_[
"counter"]->Fill(
"event", 1);
127 if (decisions->size() == 1)
128 h_[
"counter"]->
Fill(
"HE triggered", 1);
130 if (decisions->size() > 1)
131 h_[
"counter"]->
Fill(
"multiple HE triggered", 1);
134 for (
auto const&
hit : *sorted_hits)
135 h_[
"adc_all_hits_raw"]->Fill(
hit.ADC().val);
138 for (
auto const& slice : *slices)
142 double adc_sum = 0.0;
143 double adc_sum_above_200 = 0.0;
144 std::map<unsigned, unsigned> n_hits =
145 {{0, 0}, {200, 0}, {700, 0}, {1000, 0}, {2000, 0}};
147 for (
auto const&
hit : slice)
151 h_[
"plane_all_hits"]->Fill(
hit.Plane().val);
152 h_[
"cell_all_hits"]->Fill(
hit.Cell().val);
154 auto adc =
hit.ADC().val;
155 h_[
"adc_all_hits"]->Fill(adc);
159 adc_sum_above_200 += adc;
163 for (
auto &
n : n_hits)
169 unsigned adc_min, adc_max;
170 if (slice.size() > 0)
172 adc_mean = adc_sum / double(slice.size());
174 std::minmax_element(slice.begin(), slice.end(),
176 adc_min = range.first->ADC().val;
177 adc_max = range.second->ADC().val;
184 h_[
"adc_mean"]->Fill(adc_mean);
185 h_[
"adc_min"]->Fill(adc_min);
186 h_[
"adc_max"]->Fill(adc_max);
187 h_[
"adc_sum"]->Fill(adc_sum);
188 h_[
"adc_sum_above_200"]->Fill(adc_sum_above_200);
190 h_[
"n_hits_per_slice"]->Fill(n_hits[0]);
191 h_[
"n_hits_above_200"]->Fill(n_hits[200]);
192 h_[
"n_hits_above_700"]->Fill(n_hits[700]);
193 h_[
"n_hits_above_1000"]->Fill(n_hits[1000]);
194 h_[
"n_hits_above_2000"]->Fill(n_hits[2000]);
196 h2_[
"trigger_rate_700"]->Fill(adc_mean, n_hits[700]);
197 h2_[
"trigger_rate_1000"]->Fill(adc_mean, n_hits[1000]);
198 h2_[
"trigger_rate_2000"]->Fill(adc_mean, n_hits[2000]);
201 if (n_hits[1000] >= 15 &&
203 h_[
"n_hits_per_triggered_slice"]->Fill(n_hits[0]);
std::string slice_instance_
std::tuple< unsigned, double, double > Binning
art::ServiceHandle< art::TFileService > tfs_
HighEnergyAna(fhicl::ParameterSet const &p)
void analyze(art::Event const &e) override
std::map< std::string, TH1 * > h_
DEFINE_ART_MODULE(TestTMapFile)
std::map< std::string, TH2 * > h2_
correl_yv Fill(-(dy[iP-1][iC-1]), hyv->GetBinContent(iP, iC))
void make_histo(std::string const name, std::string const title, Binning const &bin)
EDAnalyzer(Table< Config > const &config)
T * make(ARGS...args) const
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const