19 int imt101_parTreeProcessing()
24 ROOT::EnableImplicitMT(nthreads);
27 ROOT::TThreadedObject<TH1F> ptHist(
"pt_dist",
"p_{T} Distribution;p_{T};dN/p_{T}dp_{T}", 100, 0, 5);
28 ROOT::TThreadedObject<TH1F> pzHist(
"pz_dist",
"p_{Z} Distribution;p_{Z};dN/dp_{Z}", 100, 0, 5);
29 ROOT::TThreadedObject<TH2F> pxpyHist(
"px_py",
"p_{X} vs p_{Y} Distribution;p_{X};p_{Y}", 100, -5., 5., 100, -5., 5.);
32 ROOT::TTreeProcessorMT tp(
"http://root.cern.ch/files/tp_process_imt.root",
"events");
38 auto myFunction = [&](TTreeReader &myReader) {
39 TTreeReaderValue<std::vector<ROOT::Math::PxPyPzEVector>> tracksRV(myReader,
"tracks");
43 auto myPtHist = ptHist.Get();
44 auto myPzHist = pzHist.Get();
45 auto myPxPyHist = pxpyHist.Get();
47 while (myReader.Next()) {
48 auto tracks = *tracksRV;
49 for (
auto &&track : tracks) {
50 myPtHist->Fill(track.Pt(), 1. / track.Pt());
51 myPxPyHist->Fill(track.Px(), track.Py());
53 myPzHist->Fill(track.Pz());
59 tp.Process(myFunction);
63 auto ptHistMerged = ptHist.Merge();
64 auto pzHistMerged = pzHist.Merge();
65 auto pxpyHistMerged = pxpyHist.Merge();