@@ -173,6 +173,37 @@ int main() {
173173
174174 pineappl_grid_write (grid, " advanced-filling.pineappl.lz4" );
175175
176+ // -----------------------------------------------------------------------//
177+
178+ // Remove the bins for which the convolution is zero.
179+ std::vector<uintptr_t > zero_indices;
180+ zero_indices.reserve (dxsec.size ());
181+ for (size_t i = 0 ; i < dxsec.size (); ++i) {
182+ if (dxsec[i] == 0.0 ) {
183+ zero_indices.push_back (static_cast <uintptr_t >(i));
184+ }
185+ }
186+ pineappl_grid_delete_bins (grid, zero_indices.data (), zero_indices.size ());
187+
188+ std::vector<double > dxsec_no_zeros (pineappl_grid_bin_count (grid));
189+ pineappl_grid_convolve (grid, xfx, alphas, pdf_states, pdf.get (), order_mask, channel_mask,
190+ nullptr , 1 , mmu_scales.data (), dxsec_no_zeros.data ());
191+
192+ // Print table header
193+ std::cout << " " << std::endl;
194+ std::cout << std::setw (10 ) << " bin left"
195+ << std::setw (12 ) << " bin right"
196+ << std::setw (15 ) << " dsig/dx" << std::endl;
197+ std::cout << std::string (37 , ' -' ) << std::endl;
198+
199+ // Loop through bins and print results
200+ for (size_t i = 0 ; i < dxsec_no_zeros.size (); ++i) {
201+ std::cout << std::setw (10 ) << bins[i]
202+ << std::setw (12 ) << bins[i + 1 ]
203+ << std::setw (15 ) << std::scientific << std::setprecision (3 ) << dxsec_no_zeros[i]
204+ << std::endl;
205+ }
206+
176207 // release memory
177208 pineappl_grid_delete (grid);
178209}
0 commit comments