GithubHelp home page GithubHelp logo

trackreco / cmssw Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cms-sw/cmssw

0.0 8.0 0.0 1.29 GB

CMS Offline Software

Home Page: http://cms-sw.github.io/

License: Apache License 2.0

C++ 60.98% C 3.21% Python 28.71% Perl 0.38% Tcl 0.01% Shell 0.92% Smarty 0.01% PHP 0.02% JavaScript 0.28% HTML 1.53% Makefile 0.02% Objective-C 0.14% Awk 0.01% CSS 0.02% PLSQL 0.12% Java 0.03% XSLT 0.01% TeX 0.01% Fortran 3.61% Gnuplot 0.01%

cmssw's Introduction

cmssw's People

Contributors

cmsbuild avatar dr15jones avatar davidlange6 avatar ktf avatar makortel avatar mmusich avatar vlimant avatar vininn avatar smuzaffar avatar fwyzard avatar martin-grunewald avatar ianna avatar kpedro88 avatar gartung avatar pelmer avatar lgray avatar rovere avatar perrotta avatar schneiml avatar civanch avatar fabiocos avatar wddgit avatar ekfriis avatar mtosi avatar thomreis avatar guitargeek avatar rekovic avatar gpetruc avatar mulhearn avatar archiron avatar

Watchers

 avatar James Cloos avatar Dan Riley avatar Matevž Tadel avatar Slava Krutelyov avatar Mario Masciovecchio avatar  avatar Manos Vourliotis avatar

cmssw's Issues

revisit dense overlap regions: possible split to sublayers

in a follow up to Mar 28 discussion in TRK POG, some special treatment may be useful for regions where the overlapping hits/layers are expected. A solution could be to split the layers.
The issue may be more significant in the pixel forward region where it's possible to get even 4 hits per layer.

(consider to) implement flexible choice for nIter and approximate sincos/trigonometry via PropagationFlags

struct PropagationFlags {
bool use_param_b_field : 1;
bool apply_material : 1;
// Could add: bool use_trig_approx -- now Config::useTrigApprox = true
// Could add: int n_prop_to_r_iters : 8 -- now Config::Niter = 5

So far we've been using the approximate sincos and did not see any problems. So, this may in the end stay, unless we suddenly decide to look at loopers or close to that.

There was also a longish-standing idea to improve the propToR to reduce the number of iterations. Depending on how that goes, perhaps nIter will actually be useful.

propToR in one step

I made some progress making the propToR in one step.

  • Sep 23, 2022 : So far the helix angle parameter computation is available
  • todo: check if jacobian derivatives need to be computed as well; and then implement this to replace the 5-iter variant that we have now

cleanup Ice in RecoTracker/MkFitCore/src

  • in part, this was already discussed in the mkFit meeting
  • in part, to follow up on 07b466d which suggests that IceFPU.h is not used
    • this was discovered in a followup to warnings that show up during compilation RecoTracker/MkFitCore/src/Ice/IceFPU.h:36:25: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

@osschar @makortel

rootcling compilation failure during standalone build (low priority)

Something isn't quite working about rootcling's include paths during standalone build. The easy workaround is just to leave WITH_ROOT undefined for make.

...
make[1]: Entering directory '/home/users/slantz/mkFit-standalone/objs-CMS'
rootcling -f ShellDict.cc /home/users/slantz/mkFit-standalone/RecoTracker/MkFitCMS/standalone/Shell.h /home/users/slantz/mkFit-standalone/RecoTracker/MkFitCMS/standalone/ShellLinkDef.h
In file included from input_line_9:3:
/home/users/slantz/mkFit-standalone/RecoTracker/MkFitCMS/standalone/Shell.h:4:10: fatal error: 'RecoTracker/MkFitCore/interface/Hit.h' file not found
#include "RecoTracker/MkFitCore/interface/Hit.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: rootcling: compilation failure (./ShellDict8148ac5312_dictUmbrella.h)
make[1]: *** [/home/users/slantz/mkFit-standalone/RecoTracker/MkFitCMS/standalone/Makefile:31: ShellDict.cc] Error 1
make[1]: Leaving directory '/home/users/slantz/mkFit-standalone/objs-CMS'
make: *** [Makefile:15: all] Error 2

The supposedly missing include file really does exist at the given location. The mkFit code version I'm using is from a recent head of CMSSW, commit cbe3152 on 2/21/23. ROOT is obtained from cvmfs by source-ing the following script (the if condition is slightly modified for cgpu-1, based on the current RecoTracker/MkFitCore/standalone/xeon_scripts/init-env.sh):

[1539] slantz@cgpu-1 ~/mkFit-standalone$ cat RecoTracker/MkFitCore/standalone/xeon_scripts/init-env.sh
#!/bin/bash
if [[ `[ -f /usr/bin/lsb_release ] && lsb_release -si` == \
        "Fedora" ||
      `[ -f /etc/redhat-release ] && awk '{print $1}' /etc/redhat-release` == \
        "AlmaLinux" ]]
then
  source /cvmfs/cms.cern.ch/el8_amd64_gcc10/lcg/root/6.24.07-da610b2b7ed663a0a05d3605f3d83ceb/etc/profile.d/init.sh
  export TBB_GCC=/cvmfs/cms.cern.ch/el8_amd64_gcc10/external/tbb/v2021.5.0-e966a5acb1e4d5fd7605074bafbb079c/
else
  source /cvmfs/cms.cern.ch/slc7_amd64_gcc10/lcg/root/6.24.07-f52350f4e0b802edeb9a2551a7d00b92/etc/profile.d/init.sh
  export TBB_GCC=/cvmfs/cms.cern.ch/slc7_amd64_gcc10/external/tbb/v2021.4.0-d0152ca29055e3a1bbf629673f6e97c4
fi

The resulting rootcling isn't causing the problem, I think, but I don't know much about it:

[1541] slantz@cgpu-1 ~/mkFit-standalone$ which rootcling
/cvmfs/cms.cern.ch/el8_amd64_gcc10/lcg/root/6.24.07-da610b2b7ed663a0a05d3605f3d83ceb/bin/rootcling

Otherwise I am following the instructions in RecoTracker/MkFitCore/standalone/README_buildFromCMSSW.txt, which I believe should still be valid (given the above modification to init-env.sh), and which seem to work when WITH_ROOT is left undefined.

increase maxCand for candidates with overlap hits

In presence of overlapping module hits we create candidates that are essentially identical and each of them roughly follows the same path in the following layer combinatorics.
IIUC, CKF does not branch in this case and simply adds both hits on one candidate.

This reduces the combinatorial coverage for mkFit.
I'm proposing to dynamically increase maxcand for comb candidates with overlapping hits (perhaps provisional on relatively similar picked up hit chi2).

@osschar @mmasciov we discussed this in 2022.12.07 meeting

review the possibility to add invalid hits in track candidates passed by mkFit to the final fit

Currently mkFitOutputConverter drops all non-valid hits in the produced TrackCandidates. Some of the useful information is lost: we could pass invalid,bad, or other status hits that could be potentially useful in the final fit.

Most of this will likely require additional level of detail added inside of mkFit, e.g.,

  • ability to provide a DetId per dead hit
  • ability to provide a full hit index for potentially useful hits which were skipped in the pattern reco
    • currently we just assign a -x to the hit index; -> hit index and hit status would need to be tracked separately

Seed hits sanity check

In MkFitOutputConverter, sanity check at L.279 causes a crash related to trackreco/mkFit#321

Solutions (in increasing order of preference):
(1) disable sanity check;
(2) make a separate seed-merging module to produce a new collection of TrajectorySeeds, to be used as input to MkFitOutputConverter (output is a TrackCandidate).

review maxConsecHoles : possibly reduce below 2

all CKF iterations (at least the pixel-based) require max consecutive holes of 1, while we have 2 (except in pixelLess or tobTec).
Apparently mkFIt choice goes back to the days before the dead modules were detected.

This issue is to suggest to investigate if going to 1 is feasible, at least in some of the iterations where fakes/combinatorics is significant.

investigate hit error rescaling to deweight outliers

Motivation: moderate outlier hits can distort the trajectory (after update) during building.

The idea is to rescale the hit covariance by a function of the initial hit chi2. The function could just be 1+ chi2 or something smoothed extending to around 2 sigma equivalent, e.g. chi2 < 4 ? 1 : chi2-3 (to be a continuous function).
The rescale would be applied in the Kalman update math and should be straightforward during search where we compute chi2 first and then run the update.

rootcling WriteMemFileDict.cc runs multiple time in standalone build: build fails on mv

I see build failures that are apparently coming from WriteMemFileDict detection in the rules

Use the following steps:

git clone --branch CMSSW_13_1_0_pre2 --single-branch --no-checkout --reference /cvmfs/cms-ib.cern.ch/git/cms-sw/cmssw.git [email protected]:cms-sw/cmssw.git 1310p2-2023H1-bin
cd 1310p2-2023H1-bin/
git config core.sparsecheckout true
echo -e "/.gitignore\n/.clang-tidy\n/.clang-format" > .git/info/sparse-checkout
echo -e "/RecoTracker/MkFit/\n/RecoTracker/MkFitCMS/\n/RecoTracker/MkFitCore/" >> .git/info/sparse-checkout
echo -e "/FWCore/Utilities/interface/" >> .git/info/sparse-checkout
git checkout CMSSW_13_1_0_pre2
./RecoTracker/MkFitCore/standalone/configure $PWD
source ./RecoTracker/MkFitCore/standalone/xeon_scripts/init-env.sh
make -j 12  AVX2:=1 WITH_ROOT=yes >& a.log &

the last lines in the log (on the first try, actual explicit path in the log is replaced by $BPATH)

rootcling -I=$BPATH -f WriteMemFileDict.cc $BPATH/RecoTracker/MkFitCMS/standalone/tkNtuple/DictsLinkDef.h
rootcling -I=$BPATH -f WriteMemFileDict.cc $BPATH/RecoTracker/MkFitCMS/standalone/tkNtuple/DictsLinkDef.h
mv WriteMemFileDict_rdict.pcm ../WriteMemFileDict_rdict.pcm
mv WriteMemFileDict_rdict.pcm ../WriteMemFileDict_rdict.pcm
mv: cannot stat ‘WriteMemFileDict_rdict.pcm’: No such file or directory
make[1]: *** [WriteMemFileDict.cc] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `$BPATH/objs-CMS'
make: *** [all] Error 2

@osschar

add support for configurable trajectory filter pt cut

prompted by needs for HeavyIons tracking https://indico.cern.ch/event/1133724/#5-mkfit-usage-for-heavy-ion-tr
where large differences in the number of reconstructed tracks with and without mkFit was found.
These were related to the additional trajectory filter selections enabled by pp_on_AA modifiers.

@mmasciov collected the differences/selections:
image

It looks like we can have just the pt cut.
As discussed in UCSD meeting we can have a json patch injection via a json-formatted string in the mkFit configuration, e.g. in https://github.com/cms-sw/cmssw/blob/4c8958415ca756c3589be1f92ef0e71ecf200b2e/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py#L231-L234
we could have an extra
pp_on_AA.toModify(detachedTripletStepTrackCandidatesMkFitConfig, configPatchString = 'something in json format')

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.