├── Geoms
├── CMS-2017
│ ├── bbs.root
│ └── tncdefs.h
└── Makefile
├── web
├── copyphp.sh
├── makereadable.sh
├── move-toymcval.sh
├── move-cmsswval-ttbar-extrectracks.sh
├── move-cmsswval-ttbar.sh
├── move-benchmarks.sh
├── move-cmsswval-10mu-extrectracks.sh
├── move-cmsswval-10mu.sh
├── tarAndSendToLXPLUS.sh
├── index.php
└── collectBenchmarks-multi.sh
├── xeon_scripts
├── check.sh
├── init-env.sh
├── data-dir-location.sh
├── init-gcc10-env.sh
├── trashSKL-SP.sh
├── debug-test.sh
├── generateToyMCsamples.sh
├── benchmark-cmssw-ttbar-fulldet-build-remote.sh
├── throughput-test-common.sh
├── benchmarkMIC-build.sh
├── tarAndSendToRemote.sh
└── runBenchmark.sh
├── plotting
├── makeBenchmarkPlots.C
├── makePlotsFromDump.C
├── makeMEIFBenchmarkPlots.C
├── makeValidation.C
├── makeThroughputPlots.sh
├── makeStressPlot.sh
├── PlotBenchmarks.hh
├── runValidation.C
├── textDumpPlots.sh
├── benchmarkPlots.sh
├── PlotMEIFBenchmarks.hh
├── makePlotsFromDump.py
├── StackValidation.hh
├── PlotsFromDump.cpp
├── PlotsFromDump.hh
├── makeMEIFBenchmarkPlots.py
├── PlotValidation.hh
└── PlotMEIFBenchmarks.cpp
├── Matrix.cc
├── mkFit
├── fittestMPlex.h
├── config-parse
│ ├── ConfigLinkDef.h
│ ├── Makefile
│ ├── extracto.pl
│ ├── test.json
│ └── dump_vars.C
├── MkBuilderWrapper.cc
├── seedtestMPlex.h
├── ConformalUtilsMPlex.h
├── MkBuilderWrapper.h
├── FindingFoos.cc
├── Ice
│ ├── IcePreprocessor.h
│ ├── IceRevisitedRadix.h
│ └── IceMemoryMacros.h
├── buildtestMPlex.h
├── chi2-debug
│ ├── chichi.txt
│ └── chichi.pl
├── Pool.h
├── FindingFoos.h
├── Makefile
├── PropagationMPlex.h
├── DumpHitSearchStats.icc
├── ref_slurm.out
├── fittestMPlex.cc
├── MkFitter.h
├── MkBase.h
├── KalmanUtilsMPlex.h
├── scaling.C
└── align_alloc.h
├── .gitignore
├── Validation.cc
├── ConfigWrapper.h
├── Hit.cc
├── from-root
└── Math
│ ├── MConfig.h
│ ├── SMatrixFfwd.h
│ ├── SMatrixDfwd.h
│ ├── BinaryOpPolicy.h
│ ├── StaticCheck.h
│ ├── Dsfact.h
│ ├── Dfactir.h
│ └── Dfinv.h
├── ConfigWrapper.cc
├── Matriplex
├── Makefile
├── test
│ ├── m512_test.cxx
│ └── GMtest.pl
└── MatriplexCommon.h
├── val_scripts
├── validation-toymc-fulldet-build.sh
├── validation-cmssw-10mu-fulldet-build-extrectracks.sh
├── validation-cmssw-10mu-fulldet-build.sh
├── validation-cmssw-ttbar-fulldet-build-extrectracks.sh
├── validation-cmssw-ttbar-fulldet-build.sh
├── validationMIC-build-10mu.sh
└── validationMIC-build-PU70.sh
├── tkNtuple
├── DictsLinkDef.h
└── Makefile
├── MatrixSTypes.h
├── Makefile
├── cmssw-trackerinfo-desc.txt
├── test
├── mtt1.1.cxx
├── CMS-2017.C
├── CylCowWLids.C
├── mttbb1.cxx
├── lastlyr.C
├── mtt1.cxx
└── mtt2.cxx
├── Validation.h
├── Debug.h
├── nlohmann
└── json_fwd.hpp
├── Matrix.h
├── Config.cc
├── README_multipleIterations.txt
└── Event.h
/Geoms/CMS-2017/bbs.root:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trackreco/mkFit/HEAD/Geoms/CMS-2017/bbs.root
--------------------------------------------------------------------------------
/web/copyphp.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | dir=${1}
4 |
5 | #cp index.php into all subdirectories
6 | find ${dir} -mindepth 0 -type d -exec cp web/index.php {} \;
7 |
--------------------------------------------------------------------------------
/web/makereadable.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | dir=${1}
4 |
5 | fs setacl ${dir} webserver:afs read
6 | afind ${dir} -t d -e "fs setacl -dir {} -acl webserver:afs read"
7 |
--------------------------------------------------------------------------------
/xeon_scripts/check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo $PATH
4 | echo "++++++++++++++++++++++++++++++++++"
5 | which gcc
6 | echo "----------------------------------"
7 | gcc --version
8 | echo "=================================="
9 |
--------------------------------------------------------------------------------
/plotting/makeBenchmarkPlots.C:
--------------------------------------------------------------------------------
1 | #include "plotting/PlotBenchmarks.cpp+"
2 |
3 | void makeBenchmarkPlots(const TString & arch, const TString & sample, const TString & suite)
4 | {
5 | PlotBenchmarks Benchmarks(arch,sample,suite);
6 | Benchmarks.RunBenchmarkPlots();
7 | }
8 |
--------------------------------------------------------------------------------
/Matrix.cc:
--------------------------------------------------------------------------------
1 | #include "Matrix.h"
2 |
3 | namespace mkfit {
4 |
5 | std::default_random_engine g_gen(0xbeef0133);
6 | std::normal_distribution g_gaus(0.0, 1.0);
7 | std::uniform_real_distribution g_unif(0.0, 1.0);
8 |
9 | } // end namespace mkfit
10 |
--------------------------------------------------------------------------------
/mkFit/fittestMPlex.h:
--------------------------------------------------------------------------------
1 | #ifndef _fittest_mplex_
2 | #define _fittest_mplex_
3 |
4 | #include "Event.h"
5 | #include "Track.h"
6 |
7 | namespace mkfit {
8 |
9 | double runFittingTestPlex(Event& ev, std::vector
38 |
39 | \n";
50 | print "
";
51 | print "

";
52 | $others = array();
53 | foreach ($other_exts as $ex) {
54 | $other_filename = str_replace('.png', $ex, $filename);
55 | if (file_exists($other_filename)) {
56 | array_push($others, "
[" . $ex . "]");
57 | if ($ex != '.txt') array_push($displayed, $other_filename);
58 | }
59 | }
60 | if ($others) print "
Also as ".implode(', ',$others)."
";
61 | print "
";
62 | }
63 | }
64 | ?>
65 |
66 |
67 |
68 |
69 | [DIR] $filename";
75 | } else {
76 | print "- $filename
";
77 | }
78 | }
79 | }
80 | ?>
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/mkFit/DumpHitSearchStats.icc:
--------------------------------------------------------------------------------
1 | // To be included after SelectHitRange / Indices().
2 |
3 | #define MKFP(_V_) mkfp->_V_.ConstAt(mi,0,0)
4 | #define MKFPI(_V_,_i_,_j_) mkfp->_V_[iI].ConstAt(mi,_i_,_j_)
5 | #define MKFPAR(_i_) mkfp->Par[iI].ConstAt(mi,_i_,0)
6 | #define MKFERR(_i_,_j_) mkfp->Err[iI].ConstAt(mi,_i_,_j_)
7 |
8 | const int iI = MkFitter::iP;
9 | TrackVec &recseeds = m_event->seedTracks_;
10 | int mi = 0; // mplex index
11 | for (int ti=itrack; ti < end; ++ti, ++mi)
12 | {
13 | int label = MKFP(Label);
14 | int seed = MKFP(SeedIdx);
15 |
16 | float x = std::min(1000.f, MKFPAR(0)), y = std::min(1000.f, MKFPAR(1)), z = std::min(1000.f, MKFPAR(2));
17 | float r2 = x*x + y*y, r = std::sqrt(r2), phi = getPhi(x, y);
18 | float dphidx = -y/r2, dphidy = x/r2;
19 | float dphi2 = dphidx*dphidx*MKFERR(0,0) + dphidy*dphidy*MKFERR(1,1) +
20 | 2 * dphidx*dphidy*MKFERR(0,1);
21 | float Dphi = dphi2 >= 0 ? 3 * std::sqrt(dphi2) : dphi2;
22 | float Dz = MKFERR(2,2) >= 0 ? 3 * std::sqrt(MKFERR(2,2)) : -1;
23 |
24 | float px = std::min(1000.f, MKFPAR(3)), py = std::min(1000.f, MKFPAR(4));
25 |
26 | std::vector indices;
27 | m_event_of_hits.m_layers_of_hits[ilay].SelectHitIndices(z, phi, Dz, Dphi, indices, false);
28 | int nshi = indices.size();
29 |
30 | // Dump for
31 | // printf("Select hits: %2d %2d\n", MKFP(XHitSize), nshi);
32 | // if (MKFP(XHitSize) != nshi)
33 | // {
34 | // // printf("Select hits: %2d %2d\n", MKFP(XHitSize), nshi);
35 | // m_event_of_hits.m_layers_of_hits[ilay].SelectHitIndices(z, phi, Dz, Dphi, indices, false, true);
36 | // printf("\n");
37 | // }
38 |
39 | static bool first = true;
40 | if (first)
41 | {
42 | printf("ZZZ_ERR event/I:label/I:mc_pt/F:seed/I:seed_pt/F:seed_chi/F:cand/I:layer/I:chi2/F:Nh/I:"
43 | "pT/F:r/F:z/F:phi/F:eta/F:Dphi/F:Dz/F:"
44 | "etam/F:etaM/F:Nh2p/I:"
45 | "err00/F:err11/F:err22/F:err33/F:err44/F:err55/F"
46 | "\n");
47 | first = false;
48 | }
49 |
50 | // ./mkFit | perl -ne 'if (/^ZZZ_ERR/) { s/^ZZZ_ERR //og; print; }' xxx.rtt
51 |
52 | printf("ZZZ_ERR %d %d %f "
53 | "%d %f %f %d "
54 | "%d %f %d "
55 | "%f %f %f %f %f %f %f "
56 | "%f %f %d "
57 | "%f %f %f %f %f %f\n",
58 | m_event->evtID(), label, m_event->simTracks_[label].pT(),
59 | seed, recseeds[seed].pT(), recseeds[seed].chi2(), MKFP(CandIdx),
60 | ilay, MKFP(Chi2), mkfp->countValidHits(mi),
61 | std::hypot(px,py), r, MKFPAR(2), phi, getEta(r, MKFPAR(2)), Dphi, Dz,
62 | getEta(r, z-Dz), getEta(r, z+Dz), MKFP(XHitSize),
63 | MKFERR(0,0), MKFERR(1,1), MKFERR(2,2), MKFERR(3,3), MKFERR(4,4), MKFERR(5,5)
64 | );
65 | }
66 |
67 | #undef MKFP
68 | #undef MKFPI
69 | #undef MKFPAR
70 | #undef MKFERR
71 |
--------------------------------------------------------------------------------
/xeon_scripts/tarAndSendToRemote.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | ########################
4 | ## Command Line Input ##
5 | ########################
6 |
7 | remote_arch=${1} # SNB, KNL, SKL-SP
8 | suite=${2:-"forPR"} # which set of benchmarks to run: full, forPR, forConf
9 | useARCH=${3:-0}
10 | lnxuser=${4:-${USER}}
11 |
12 | ###################
13 | ## Configuration ##
14 | ###################
15 |
16 | source xeon_scripts/common-variables.sh ${suite} ${useARCH} ${lnxuser}
17 | source xeon_scripts/init-env.sh
18 |
19 | # architecture dependent settings
20 | if [[ "${remote_arch}" == "SNB" ]]
21 | then
22 | HOST=${SNB_HOST}
23 | DIR=${SNB_WORKDIR}/${SNB_TEMPDIR}
24 | elif [[ "${remote_arch}" == "KNL" ]]
25 | then
26 | HOST=${KNL_HOST}
27 | DIR=${KNL_WORKDIR}/${KNL_TEMPDIR}
28 | elif [[ "${remote_arch}" == "LNX-G" ]]
29 | then
30 | HOST=${LNXG_HOST}
31 | DIR=${LNXG_WORKDIR}/${LNXG_TEMPDIR}
32 | elif [[ "${remote_arch}" == "LNX-S" ]]
33 | then
34 | HOST=${LNXS_HOST}
35 | DIR=${LNXS_WORKDIR}/${LNXS_TEMPDIR}
36 | else
37 | echo ${remote_arch} "is not a valid architecture! Exiting..."
38 | exit
39 | fi
40 |
41 | ##################
42 | ## Tar and Send ##
43 | ##################
44 |
45 | assert_settings=true
46 | echo "--------Showing System Settings--------"
47 | # unzip tarball remotely
48 | echo "Untarring repo on ${remote_arch} remotely"
49 | SSHO ${HOST} bash -c "'
50 | echo "--------Showing System Settings--------"
51 | ##### Check Settings #####
52 | echo "turbo status: "$(cat /sys/devices/system/cpu/intel_pstate/no_turbo)
53 | echo "scaling governor setting: "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
54 | echo "--------End System Settings ------------"
55 | if ${assert_settings};
56 | then
57 | echo "Ensuring correct settings"
58 | if [[ $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor) != "performance" ]]
59 | then
60 | echo "performance mode is OFF. Exiting"
61 | exit 1
62 | fi
63 | if [[ $(cat /sys/devices/system/cpu/intel_pstate/no_turbo) == "0" ]]
64 | then
65 | echo "Turbo is ON. Exiting"
66 | exit 1
67 | fi
68 | fi
69 | sleep 3 ## so you can see the settings
70 | '"
71 | bad=$(SSHO ${HOST} echo $?)
72 | if [ $bad -eq 1 ]; then
73 | echo "killed"
74 | exit 1
75 | fi
76 |
77 | # tar up the directory
78 | echo "Tarring directory for ${remote_arch}... make sure it is clean!"
79 | repo=mictest.tar.gz
80 | tar --exclude-vcs --exclude='*.gz' --exclude='validation*' --exclude='*.root' --exclude='log_*' --exclude='*.png' --exclude='*.o' --exclude='*.om' --exclude='*.d' --exclude='*.optrpt' -zcvf ${repo} *
81 |
82 | # mkdir tmp dir on remote arch
83 | echo "Making tmp dir on ${remote_arch} remotely"
84 | SSHO ${HOST} bash -c "'
85 | mkdir -p ${DIR}
86 | exit
87 | '"
88 |
89 | # copy tarball
90 | echo "Copying tarball to ${remote_arch}"
91 | scp ${repo} ${HOST}:${DIR}
92 |
93 | # unzip tarball remotely
94 | echo "Untarring repo on ${remote_arch} remotely"
95 | SSHO ${HOST} bash -c "'
96 | cd ${DIR}
97 | tar -zxvf ${repo}
98 | rm ${repo}
99 | '"
100 |
101 | # remove local tarball
102 | echo "Remove local repo tarball"
103 | rm ${repo}
104 |
--------------------------------------------------------------------------------
/plotting/PlotsFromDump.cpp:
--------------------------------------------------------------------------------
1 | #include "PlotsFromDump.hh"
2 |
3 | PlotsFromDump::PlotsFromDump(const TString & sample, const TString & build, const TString & suite, const int useARCH)
4 | : sample(sample), build(build), suite(suite), useARCH(useARCH)
5 | {
6 | // setup style for plotting
7 | setupStyle();
8 |
9 | // setup suite enum
10 | setupSUITEEnum(suite);
11 |
12 | // setup build options : true for isBenchmark-type plots, false for no CMSSW
13 | setupBuilds(true,false);
14 |
15 | // get the right build label
16 | label = std::find_if(builds.begin(),builds.end(),[&](const auto & ibuild){return build.EqualTo(ibuild.name);})->label;
17 | if (label == "")
18 | {
19 | std::cerr << build.Data() << " build routine not specified in list of builds! Exiting..." << std::endl;
20 | exit(1);
21 | }
22 |
23 | // Setup test opts
24 | setupTests(useARCH);
25 |
26 | // Setup plot opts
27 | setupPlots();
28 | }
29 |
30 | PlotsFromDump::~PlotsFromDump() {}
31 |
32 | void PlotsFromDump::RunPlotsFromDump()
33 | {
34 | // Open ROOT files first
35 | std::vector files(ntests);
36 | for (auto t = 0U; t < ntests; t++)
37 | {
38 | const auto & test = tests[t];
39 | auto & file = files[t];
40 |
41 | file = TFile::Open("test_"+test.arch+"_"+sample+"_"+build+"_"+test.suffix+".root");
42 | }
43 |
44 | // Outer loop over all overplots
45 | for (auto p = 0U; p < nplots; p++)
46 | {
47 | const auto & plot = plots[p];
48 |
49 | // declare standard stuff
50 | const Bool_t isLogy = !(plot.name.Contains("MXPHI",TString::kExact) || plot.name.Contains("MXETA",TString::kExact));
51 | auto canv = new TCanvas();
52 | canv->cd();
53 | canv->SetLogy(isLogy);
54 |
55 | auto leg = new TLegend(0.7,0.68,0.98,0.92);
56 |
57 | Double_t min = 1e9;
58 | Double_t max = -1e9;
59 |
60 | std::vector hists(ntests);
61 | for (auto t = 0U; t < ntests; t++)
62 | {
63 | const auto & test = tests[t];
64 | auto & file = files[t];
65 | auto & hist = hists[t];
66 |
67 | hist = (TH1F*)file->Get(plot.name+"_"+test.suffix);
68 | const TString title = hist->GetTitle();
69 | hist->SetTitle(title+" ["+label+" - "+sample+"]");
70 | hist->GetXaxis()->SetTitle(plot.xtitle.Data());
71 | hist->GetYaxis()->SetTitle(plot.ytitle.Data());
72 |
73 | hist->SetLineColor(test.color);
74 | hist->SetMarkerColor(test.color);
75 | hist->SetMarkerStyle(test.marker);
76 |
77 | hist->Scale(1.f/hist->Integral());
78 | GetMinMaxHist(hist,min,max);
79 | }
80 |
81 | for (auto t = 0U; t < ntests; t++)
82 | {
83 | const auto & test = tests[t];
84 | auto & hist = hists[t];
85 |
86 | SetMinMaxHist(hist,min,max,isLogy);
87 | hist->Draw(t>0?"P SAME":"P");
88 |
89 | const TString mean = Form("%4.1f",hist->GetMean());
90 | leg->AddEntry(hist,test.arch+" "+test.suffix+" [#mu = "+mean+"]","p");
91 | }
92 |
93 | // draw legend and save plot
94 | leg->Draw("SAME");
95 | canv->SaveAs(sample+"_"+build+"_"+plot.outname+".png");
96 |
97 | // delete temps
98 | for (auto & hist : hists) delete hist;
99 | delete leg;
100 | delete canv;
101 | }
102 |
103 | // delete files
104 | for (auto & file : files) delete file;
105 | }
106 |
--------------------------------------------------------------------------------
/from-root/Math/StaticCheck.h:
--------------------------------------------------------------------------------
1 | // @(#)root/smatrix:$Id$
2 | // Authors: T. Glebe, L. Moneta 2005
3 |
4 |
5 | ////////////////////////////////////////////////////////////////////////////////
6 | // The Loki Library
7 | // Copyright (c) 2001 by Andrei Alexandrescu
8 | // This code accompanies the book:
9 | // Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
10 | // Patterns Applied". Copyright (c) 2001. Addison-Wesley.
11 | // Permission to use, copy, modify, distribute and sell this software for any
12 | // purpose is hereby granted without fee, provided that the above copyright
13 | // notice appear in all copies and that both that copyright notice and this
14 | // permission notice appear in supporting documentation.
15 | // The author or Addison-Wesley Longman make no representations about the
16 | // suitability of this software for any purpose. It is provided "as is"
17 | // without express or implied warranty.
18 | ////////////////////////////////////////////////////////////////////////////////
19 |
20 | // Last update: June 20, 2001
21 |
22 | #ifndef Root_Math_StaticCheck
23 | #define Root_Math_StaticCheck
24 |
25 |
26 | // case of dictionary generator
27 | #if defined(__MAKECINT__) || defined(G__DICTIONARY)
28 |
29 | #include "Math/MConfig.h"
30 | #include
31 | #include
32 |
33 | #define STATIC_CHECK(expr, msg) \
34 | if (!(expr) ) std::cerr << "ERROR: " << #msg << std::endl; \
35 | assert(expr);
36 |
37 | #else
38 |
39 | namespace ROOT
40 | {
41 |
42 | namespace Math {
43 |
44 | #ifndef USE_OLD_SC
45 |
46 |
47 | template struct CompileTimeChecker
48 | {
49 | CompileTimeChecker(void *) {}
50 | };
51 | template<> struct CompileTimeChecker {};
52 |
53 | } // end namespace Math
54 | } // end namespace ROOT
55 |
56 | #define STATIC_CHECK(expr, msg) \
57 | { class ERROR_##msg {}; \
58 | ERROR_##msg e; \
59 | (void) (ROOT::Math::CompileTimeChecker<(expr) != 0> (&e)); }
60 |
61 |
62 | #else
63 | ////////////////////////////////////////////////////////////////////////////////
64 | // Helper structure for the STATIC_CHECK macro
65 | ////////////////////////////////////////////////////////////////////////////////
66 |
67 | template struct CompileTimeError;
68 | template<> struct CompileTimeError {};
69 |
70 | } // end namespace Math
71 | } // end namespace ROOT
72 |
73 | ////////////////////////////////////////////////////////////////////////////////
74 | // macro STATIC_CHECK
75 | // Invocation: STATIC_CHECK(expr, id)
76 | // where:
77 | // expr is a compile-time integral or pointer expression
78 | // id is a C++ identifier that does not need to be defined
79 | // If expr is zero, id will appear in a compile-time error message.
80 | ////////////////////////////////////////////////////////////////////////////////
81 |
82 | #define STATIC_CHECK(expr, msg) \
83 | { ROOT::Math::CompileTimeError<((expr) != 0)> ERROR_##msg; (void)ERROR_##msg; }
84 |
85 |
86 | ////////////////////////////////////////////////////////////////////////////////
87 | // Change log:
88 | // March 20, 2001: add extra parens to STATIC_CHECK - it looked like a fun
89 | // definition
90 | // June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!!
91 | ////////////////////////////////////////////////////////////////////////////////
92 |
93 | #endif
94 |
95 | #endif
96 |
97 | #endif // STATIC_CHECK_INC_
98 |
--------------------------------------------------------------------------------
/mkFit/ref_slurm.out:
--------------------------------------------------------------------------------
1 | Running with n_threads=1, cloner_single_thread=0, best_out_of=1
2 | Running test_standard(), operation="simulate_and_process"
3 | vusize=8, num_th_sim=12, num_th_finder=1
4 | sizeof(Track)=184, sizeof(Hit)=40, sizeof(SVector3)=12, sizeof(SMatrixSym33)=32, sizeof(MCHitInfo)=16
5 | Constructing SimpleGeometry Cylinder geometry
6 | ERROR in cling::CIFactory::createCI(): cannot extract standard library include paths!
7 | Invoking:
8 | echo | LC_ALL=C g++ -pipe -m64 -Wall -W -Woverloaded-virtual -fsigned-char -fPIC -pthread -std=c++11 -Wno-deprecated-declarations -Wno-comment -Wno-unused-parameter -Wno-maybe-uninitialized -Wno-unused-but-set-variable -Wno-missing-field-initializers -fPIC -fvisibility-inlines-hidden -std=c++11 -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -O2 -DNDEBUG -xc++ -E -v - 2>&1 >/dev/null | awk '/^#include ,/^End of search/{if (!/^#include && !/^End of search/){ print }}' | grep -E "(c|g)\+\+"
9 | results in
10 | with exit code 256
11 | input_line_1:1:10: fatal error: 'new' file not found
12 | #include
13 | ^
14 | input_line_3:38:10: fatal error: 'string' file not found
15 | #include
16 | ^
17 |
18 | Processing event 1
19 | Matriplex fit = 10.90850 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
20 |
21 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0957188 standard dev: 1.17029
22 |
23 | Processing event 2
24 | Matriplex fit = 10.73082 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
25 |
26 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0874507 standard dev: 1.17868
27 |
28 | Processing event 3
29 | Matriplex fit = 10.68509 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
30 |
31 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0941957 standard dev: 1.17393
32 |
33 | Processing event 4
34 | Matriplex fit = 10.66165 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
35 |
36 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0883954 standard dev: 1.16259
37 |
38 | Processing event 5
39 | Matriplex fit = 10.64726 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
40 |
41 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0932676 standard dev: 1.15382
42 |
43 | Processing event 6
44 | Matriplex fit = 10.67642 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
45 |
46 | Mean value for (pt_mc-pt_fit)/pt_err: -0.100164 standard dev: 1.17903
47 |
48 | Processing event 7
49 | Matriplex fit = 10.58684 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
50 |
51 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0783475 standard dev: 1.15683
52 |
53 | Processing event 8
54 | Matriplex fit = 10.64275 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
55 |
56 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0896003 standard dev: 1.14851
57 |
58 | Processing event 9
59 | Matriplex fit = 10.59830 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
60 |
61 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0874693 standard dev: 1.17137
62 |
63 | Processing event 10
64 | Matriplex fit = 10.59522 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
65 |
66 | Mean value for (pt_mc-pt_fit)/pt_err: -0.0830755 standard dev: 1.17693
67 | ================================================================
68 | === TOTAL for 10 events
69 | ================================================================
70 | Total Matriplex fit = 106.73285 --- Build BHMX = 0.00000 MX = 0.00000 CEMX = 0.00000
71 |
--------------------------------------------------------------------------------
/mkFit/fittestMPlex.cc:
--------------------------------------------------------------------------------
1 | #include "Matrix.h"
2 | //#define DEBUG
3 | #include
4 |
5 | #include "MkFitter.h"
6 |
7 | #ifndef NO_ROOT
8 | #include "TFile.h"
9 | #include "TTree.h"
10 | #include
11 | #endif
12 |
13 | #include "tbb/parallel_for.h"
14 |
15 | #include
16 | #include
17 |
18 | #if defined(USE_VTUNE_PAUSE)
19 | #include "ittnotify.h"
20 | #endif
21 |
22 | //==============================================================================
23 | // runFittingTestPlex
24 | //==============================================================================
25 |
26 | #include "Pool.h"
27 | namespace
28 | {
29 | struct ExecutionContext
30 | {
31 | mkfit::Pool m_fitters;
32 |
33 | void populate(int n_thr)
34 | {
35 | m_fitters.populate(n_thr - m_fitters.size());
36 | }
37 | };
38 |
39 | ExecutionContext g_exe_ctx;
40 | auto retfitr = [](mkfit::MkFitter* mkfp ) { g_exe_ctx.m_fitters.ReturnToPool(mkfp); };
41 | }
42 |
43 | namespace mkfit {
44 |
45 | double runFittingTestPlex(Event& ev, std::vector