53 const auto xbinN = 60;
54 const auto ybinN = 50;
55 const auto zbinN = 50;
58 const auto x_bounds_lower = 1400.;
59 const auto x_bounds_upper = 1700.;
60 const auto yz_bounds_lower = -125.;
61 const auto yz_bounds_upper = 125.;
74 hist_3_->SetTitle(
"NeuLAND Hits");
75 hist_3_->GetXaxis()->SetTitle(
"Z");
76 hist_3_->GetYaxis()->SetTitle(
"X");
77 hist_3_->GetZaxis()->SetTitle(
"Y");
78 FairRootManager::Instance()->Register(
"NeulandHitMon",
"Hits in NeuLAND",
hist_3_, kTRUE);
82 const auto maxHitNum = 200;
83 const auto timeBinN = 30000;
84 const auto zDepBinN = 60;
85 const auto energyBinN = 500;
86 const auto totenergyBinN = 1000;
87 const auto posXYBinN = 300;
88 const auto velocityBinN = 200;
91 const auto z_dep_lower = 1400.;
92 const auto z_dep_upper = 1700.;
93 const auto total_energy_upper = 10000.;
94 const auto pos_xy_lower = -150.;
95 const auto pos_xy_upper = 150.;
96 const auto time_para = -15.;
97 const auto energy_upper_foremost_vs_e_tot_a = 2000.;
98 const auto energy_upper_foremost_vs_e_tot_b = 250.;
102 data_monitor_.add_hist<TH1D>(
"hTimeAdj",
"Hit Time adjusted for flight path", timeBinN, -1000., 1000.);
107 data_monitor_.add_hist<TH1D>(
"hDepth",
"Maxial penetration depth", zDepBinN, z_dep_lower, z_dep_upper);
109 "hDepthVSFrontEnergy",
"Depth vs Foremost Energy", zDepBinN, z_dep_lower, z_dep_upper, energyBinN, 0., 100.);
111 "Depth vs Sternmost Energy",
119 "hDepthVSEtot",
"Depth vs Total Energy", zDepBinN, z_dep_lower, z_dep_upper, totenergyBinN, 0, 1000.);
121 data_monitor_.add_hist<TH1D>(
"hForemostEnergy",
"Foremost energy deposition", energyBinN, 0, 100.);
123 data_monitor_.add_hist<TH1D>(
"hSternmostEnergy",
"Sternmost energy deposition", energyBinN, 0, 100.);
126 "Energy in Foremost Plane vs Etot",
129 energy_upper_foremost_vs_e_tot_a,
132 energy_upper_foremost_vs_e_tot_b);
134 "hPosVSEnergy",
"Position vs Energy deposition", zDepBinN, z_dep_lower, z_dep_upper, totenergyBinN, 0, 1000.);
139 hT =
data_monitor_.add_hist<TH1D>(
"hT",
"Hit Delta T", timeBinN, time_para, time_para);
140 hTNeigh =
data_monitor_.add_hist<TH1D>(
"hTNeigh",
"Hit Neigh Delta T", timeBinN, time_para, time_para);
150 std::map<Int_t, Int_t> paddlenum;
151 for (
const auto& hit : hits)
153 auto result = paddlenum.insert(std::pair<Int_t, Int_t>(hit.GetPaddle(), 1));
156 result.first->second++;
159 auto max = std::max_element(paddlenum.begin(),
161 [](std::pair<Int_t, Int_t> lhs, std::pair<Int_t, Int_t> rhs)
162 { return (lhs.second < rhs.second); });
163 LOG(debug) <<
"max dupli: " << max->second;
168 for (
const auto& hit : hits)
170 hist_3_->Fill(hit.GetPosition().Z(), hit.GetPosition().X(), hit.GetPosition().Y(), hit.GetE());
174 hist_mult_->Fill(
static_cast<double>(hits.size()));
175 for (
const auto& hit : hits)
182 hist_x_->Fill(hit.GetPosition().X());
183 hist_y_->Fill(hit.GetPosition().Y());
186 for (
auto it1 = hits.begin(); it1 != hits.end(); it1++)
188 for (
auto it2 = it1 + 1; it2 != hits.end(); it2++)
190 const auto pos_delta_cutoff = 7.5;
191 if (std::abs((*it1).GetPosition().X() - (*it2).GetPosition().X()) < pos_delta_cutoff &&
192 std::abs((*it1).GetPosition().Y() - (*it2).GetPosition().Y()) < pos_delta_cutoff &&
193 std::abs((*it1).GetPosition().Z() - (*it2).GetPosition().Z()) < pos_delta_cutoff)
195 hTNeigh->Fill((*it1).GetT() - (*it2).GetT());
197 hT->Fill((*it1).GetT() - (*it2).GetT());
201 auto maxDepthHit = std::max_element(hits.begin(),
204 { return one.GetPosition().Z() < another.GetPosition().Z(); });
205 if (maxDepthHit != hits.end())
207 hist_depth_->Fill((*maxDepthHit).GetPosition().Z());
212 auto minDepthHit = std::min_element(hits.begin(),
215 { return one.GetPosition().Z() < another.GetPosition().Z(); });
217 std::accumulate(hits.begin(), hits.end(), 0., [](
double init,
const auto& hit) { return init + hit.GetE(); });
219 if (minDepthHit != hits.end())
223 hdeltaEE->Fill(Etot, (*minDepthHit).GetE());
227 if (maxDepthHit != hits.end())