Project CMSSW displayed by LXR

File indexing completed on 2023-10-25 10:03:24

```0001 #ifndef SMSLinearizationPointFinder_H
0002 #define SMSLinearizationPointFinder_H
0003
0004 #include "RecoVertex/LinearizationPointFinders/interface/CrossingPtBasedLinearizationPointFinder.h"
0005 #include "RecoVertex/VertexTools/interface/SMS.h"
0006
0007 /** A linearization point finder. It works the following way:
0008    *  1. Calculate in an optimal way 'n_pairs' different crossing points.
0009    *     Optimal in this context means the following:
0010    *     a. Try to use as many different tracks as possible;
0011    *        avoid using the same track all the time.
0012    *     b. Use the most energetic tracks.
0013    *     c. Try not to group the most energetic tracks together.
0014    *        Try to group more energetic tracks with less energetic tracks.
0015    *        We assume collimated bundles here, so this is why.
0016    *     d. Perform optimally. Do not sort more tracks (by total energy, see b)
0017    *        than necessary.
0018    *     e. If n_pairs >= (number of all possible combinations),
0019    *        do not leave any combinations out.
0020    *     ( a. and e. are almost but not entirely fulfilled in the current impl )
0021    *  2. Do a LMS on the n points.
0022    */
0023
0024 class SMSLinearizationPointFinder : public CrossingPtBasedLinearizationPointFinder {
0025 public:
0026   SMSLinearizationPointFinder(signed int n_pairs = 10, const SMS& sms = SMS());
0027   SMSLinearizationPointFinder(const RecTracksDistanceMatrix* m, signed int n_pairs = -1, const SMS& sms = SMS());
0028
0029   SMSLinearizationPointFinder* clone() const override;
0030 };
0031
0032 #endif```