void setGnnNtupleBranches(SDL::Event* event) { // Get relevant information SDL::quintuplets& quintupletsInGPU = (*event->getQuintuplets()); SDL::modules& modulesInGPU = (*event->getModules()); SDL::objectRanges& rangesInGPU = (*event->getRanges()); std::set T3s_used_in_T5; std::map T3_index_map; // Loop over modules (lower ones where the MDs are saved) for (unsigned int idx = 0; idx < *(modulesInGPU.nLowerModules); ++idx) { // Loop over quintuplets for (unsigned int jdx = 0; jdx < quintupletsInGPU.nQuintuplets[idx]; jdx++) { unsigned int T5_idx = rangesInGPU.quintupletModuleIndices[idx] + jdx; std::vector T3s = getT3sFromT5(event, T5_idx); // Inner T3 if (T3s_used_in_T5.find(T3s[0]) == T3s_used_in_T5.end()) { T3s_used_in_T5.insert(T3s[0]); T3_index_map[T3s[0]] = T3s_used_in_T5.size() - 1; setGnnNtupleTriplet(event, T3s[0], rangesInGPU.tripletModuleIndices[idx]); } // Outer T3 if (T3s_used_in_T5.find(T3s[1]) == T3s_used_in_T5.end()) { T3s_used_in_T5.insert(T3s[1]); T3_index_map[T3s[1]] = T3s_used_in_T5.size() - 1; setGnnNtupleTriplet(event, T3s[1], rangesInGPU.tripletModuleIndices[idx]); } } } } void setGnnNtupleTriplet(SDL::Event* event, unsigned int T3, unsigned int T3_module_idx) { for (auto anchor_hit_i : {0, 1, 2}) { unsigned int hit = hits[anchor_hit_i*2]; std::cout << "hello from anchor hit " << anchor_hit_i << std::endl; // unsigned int module = tripletsInGPU.lowerModuleIndices[3*(T3 + T3_module_idx) + anchor_hit_i]; unsigned int module = tripletsInGPU.lowerModuleIndices[3*T3 + anchor_hit_i]; std::cout << "hello from module " << module << std::endl; } }