PMA module code analysis » History » Version 1
Ruth Pordes, 05/05/2016 01:25 PM
1 | 1 | Ruth Pordes | h1. PMA module code analysis |
---|---|---|---|
2 | 1 | Ruth Pordes | |
3 | 1 | Ruth Pordes | PMA Code and Documentation Links |
4 | 1 | Ruth Pordes | |
5 | 1 | Ruth Pordes | https://indico.fnal.gov/getFile.py/access?contribId=62&sessionId=40&resId=1&materialId=slides&confId=10276 |
6 | 1 | Ruth Pordes | |
7 | 1 | Ruth Pordes | Aaron Higuera is maintaining systematic efficiency tests and writes code for it. Here is the last development, for the proton decay / atmospheric neutrino events: |
8 | 1 | Ruth Pordes | https://indico.fnal.gov/getFile.py/access?contribId=2&resId=0&materialId=slides&confId=12005 (note that PMA here is used together with Cluster Crawler for 2D clusters reconstruction) |
9 | 1 | Ruth Pordes | |
10 | 1 | Ruth Pordes | Similar test are done for beam neutrinos, I expect that soon we'll have update on this using recent releases of reconstruction algorithms. |
11 | 1 | Ruth Pordes | |
12 | 1 | Ruth Pordes | Redmine links for code: |
13 | 1 | Ruth Pordes | https://cdcvs.fnal.gov/redmine/projects/larreco/repository/revisions/develop/entry/larreco/TrackFinder/PMAlgTrackMaker_module.cc |
14 | 1 | Ruth Pordes | |
15 | 1 | Ruth Pordes | Vertexing functionality is collected here: |
16 | 1 | Ruth Pordes | https://cdcvs.fnal.gov/redmine/projects/larreco/repository/revisions/develop/entry/larreco/RecoAlg/PMAlgVertexing.h |
17 | 1 | Ruth Pordes | |
18 | 1 | Ruth Pordes | The most basic functions for building, testing, extending tracks are here: |
19 | 1 | Ruth Pordes | https://cdcvs.fnal.gov/redmine/projects/larreco/repository/revisions/develop/entry/larreco/RecoAlg/ProjectionMatchingAlg.h |
20 | 1 | Ruth Pordes | |
21 | 1 | Ruth Pordes | And all the building blocks for the track and vertex optimization are in the directory: |
22 | 1 | Ruth Pordes | https://cdcvs.fnal.gov/redmine/projects/larreco/repository/revisions/develop/show/larreco/RecoAlg/PMAlg |
23 | 1 | Ruth Pordes | |
24 | 1 | Ruth Pordes | The cost of computations is mostly due to trajectory node optimization, done with finite-difference calculations of the gradient of the objective function with respect to the node position. If you'd like to have a look, the code is here: |
25 | 1 | Ruth Pordes | https://cdcvs.fnal.gov/redmine/projects/larreco/repository/revisions/develop/entry/larreco/RecoAlg/PMAlg/PmaNode3D.h#L92 |
26 | 1 | Ruth Pordes | |
27 | 1 | Ruth Pordes | void Optimize(float penaltyValue, float endSegWeight); |
28 | 1 | Ruth Pordes | |
29 | 1 | Ruth Pordes | and functions: |
30 | 1 | Ruth Pordes | |
31 | 1 | Ruth Pordes | double Pi(float endSegWeight, bool doAsymm) const; |
32 | 1 | Ruth Pordes | double Penalty(float endSegWeight) const; |
33 | 1 | Ruth Pordes | double Mse(void) const; |
34 | 1 | Ruth Pordes | double MakeGradient(float penaltyValue, float endSegWeight); |
35 | 1 | Ruth Pordes | double StepWithGradient(float alfa, float tol, float penalty, float weight); |
36 | 1 | Ruth Pordes | |
37 | 1 | Ruth Pordes | The complexity on the higher level comes from scoring the tracks made of various (possible) matching of clusters in complementary 2D projections, this is done more or less here: |
38 | 1 | Ruth Pordes | https://cdcvs.fnal.gov/redmine/projects/larreco/repository/revisions/develop/entry/larreco/TrackFinder/PMAlgTrackMaker_module.cc#L1851 |