Project

General

Profile

PMA module code analysis » History » Version 2

Erica Snider, 05/10/2016 02:44 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
39 2 Erica Snider
40 2 Erica Snider
41 2 Erica Snider
h2. Working session materials
42 2 Erica Snider
43 2 Erica Snider
source:PMAlgTrackMaker-callgraph.dot
44 2 Erica Snider
source:PMAlgTrackMaker-callgraph.pdf
45 2 Erica Snider
source:PMAlgTrackMaker-callgraph.svg