50 static std::atomic<std::uint32_t>
gThreadId;
53 auto prng = std::make_unique<TRandom3>();
59 auto id =
entry->GetPtr<std::uint32_t>(
"id");
61 auto vpx =
entry->GetPtr<std::vector<float>>(
"vpx");
62 auto vpy =
entry->GetPtr<std::vector<float>>(
"vpy");
63 auto vpz =
entry->GetPtr<std::vector<float>>(
"vpz");
70 int npx =
static_cast<int>(
prng->Rndm(1) * 15);
72 for (
int j = 0;
j <
npx; ++
j) {
75 pz = px * px + py * py;
77 vpx->emplace_back(px);
78 vpy->emplace_back(py);
79 vpz->emplace_back(pz);
91 model->MakeField<std::uint32_t>(
"id");
92 model->MakeField<std::vector<float>>(
"vpx");
93 model->MakeField<std::vector<float>>(
"vpy");
94 model->MakeField<std::vector<float>>(
"vpz");
99 options.SetApproxZippedClusterSize(1024 * 1024);
104 std::vector<std::thread>
threads;
122 TCanvas *
c1 =
new TCanvas(
"c2",
"Multi-Threaded Filling Example", 200, 10, 1500, 500);
126 TH1F h(
"h",
"This is the px distribution", 100, -4, 4);
135 auto nEvents =
reader->GetNEntries();
137 TH2F hFillSequence(
"",
"Entry Id vs Thread Id;Entry Sequence Number;Filling Thread", 100, 0, nEvents, 100, 0,
139 for (
auto i :
reader->GetEntryRange())
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TStyle * gStyle
A writer to fill an RNTuple from multiple contexts.
static std::unique_ptr< RNTupleModel > CreateBare()
Creates a "bare model", i.e. an RNTupleModel with no default entry.
static std::unique_ptr< RNTupleReader > Open(std::string_view ntupleName, std::string_view storage, const ROOT::RNTupleReadOptions &options=ROOT::RNTupleReadOptions())
Open an RNTuple for reading.
Common user-tunable settings for storing RNTuples.
1-D histogram with a float per channel (see TH1 documentation)
2-D histogram with a float per channel (see TH1 documentation)
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
void FillData(BinData &dv, const TH1 *hist, TF1 *func=nullptr)
fill the data vector from a TH1.
ROOT::RNTupleGlobalRange GetFieldRange(const ROOT::RFieldBase &field, const ROOT::Internal::RPageSource &pageSource)
Helper to get the iteration space of the given field that needs to be connected to the given page sou...