24 throw std::length_error(
"Invalid arguments, expect: Prefix GroupX GroupY");
28 std::string name(Prefix +
"_g" + GroupX +
"m" + X +
"g" + GroupY +
"m" + Y +
"d" + Z);
29 ptrCube = p->GetCube(name);
30 ptrCube->SetBins(512, 0, 2048, 512, 0, 2048, 256, -128 * 24.41,
37 TTreeReaderValue<std::vector<DetX>> rDetsX(R, (
"DetGroup._" + GroupX).c_str());
38 TTreeReaderValue<std::vector<DetY>> rDetsY(R, (
"DetGroup._" + GroupY).c_str());
39 while (R.Next() && !p->Done()) {
41 std::vector<DetX> vecDetsX = *rDetsX;
42 std::vector<DetY> vecDetsY = *rDetsY;
43 if (vecDetsX.size() + vecDetsY.size() < 2) {
46 for (
auto &Det1 : vecDetsX) {
47 for (
auto &Det2 : vecDetsY) {
48 if (Det1.ID == Det2.ID) {
51 auto x = Det1.template GetCal<X>();
52 auto y = Det2.template GetCal<Y>();
53 auto z1 = Det1.template GetCal<Z>();
54 auto z2 = Det2.template GetCal<Z>();
56 auto rx = Det1.template Get<X>();
57 auto ry = Det2.template Get<Y>();
58 auto rz1 = Det1.template Get<Z>();
59 auto rz2 = Det2.template Get<Z>();
61 if (!(rx && ry && rz1 && rz2)) {
64 ptrCube->Fill(x, y, z2 - z1);