File indexing completed on 2025-08-06 08:17:47
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef KFPARTICLESPHENIX_KFPARTICLEEVENTRECONSTRUCTION_H
0023 #define KFPARTICLESPHENIX_KFPARTICLEEVENTRECONSTRUCTION_H
0024
0025 #include "KFParticle_Tools.h"
0026
0027 #include <KFParticle.h>
0028
0029 #include <vector>
0030
0031 class PHCompositeNode;
0032
0033 class KFParticle_eventReconstruction : public KFParticle_Tools
0034 {
0035 public:
0036 KFParticle_eventReconstruction();
0037
0038 ~KFParticle_eventReconstruction() override = default;
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 void createDecay(PHCompositeNode* topNode, std::vector<KFParticle>& selectedMother, std::vector<KFParticle>& selectedVertex,
0049 std::vector<std::vector<KFParticle>>& selectedDaughters,
0050 std::vector<std::vector<KFParticle>>& selectedIntermediates,
0051 int& nPVs);
0052
0053
0054 void buildBasicChain(std::vector<KFParticle>& selectedMotherBasic,
0055 std::vector<KFParticle>& selectedVertexBasic,
0056 std::vector<std::vector<KFParticle>>& selectedDaughtersBasic,
0057 const std::vector<KFParticle>& daughterParticlesBasic,
0058 const std::vector<int>& goodTrackIndexBasic,
0059 const std::vector<KFParticle>& primaryVerticesBasic, PHCompositeNode* topNode);
0060
0061
0062 void buildChain(std::vector<KFParticle>& selectedMotherAdv,
0063 std::vector<KFParticle>& selectedVertexAdv,
0064 std::vector<std::vector<KFParticle>>& selectedDaughtersAdv,
0065 std::vector<std::vector<KFParticle>>& selectedIntermediatesAdv,
0066 const std::vector<KFParticle>& daughterParticlesAdv,
0067 const std::vector<int>& goodTrackIndexAdv,
0068 const std::vector<KFParticle>& primaryVerticesAdv, PHCompositeNode* topNode);
0069
0070
0071 void getCandidateDecay(std::vector<KFParticle>& selectedMotherCand,
0072 std::vector<KFParticle>& selectedVertexCand,
0073 std::vector<std::vector<KFParticle>>& selectedDaughtersCand,
0074 const std::vector<KFParticle>& daughterParticlesCand,
0075 const std::vector<std::vector<int>>& goodTracksThatMeetCand,
0076 const std::vector<KFParticle>& primaryVerticesCand,
0077 int n_track_start, int n_track_stop,
0078 bool isIntermediate, int intermediateNumber, bool constrainMass, PHCompositeNode* topNode);
0079
0080
0081 int selectBestCombination(bool PVconstraint, bool isAnInterMother,
0082 std::vector<KFParticle> possibleCandidates,
0083 std::vector<KFParticle> possibleVertex);
0084
0085 KFParticle createFakePV();
0086
0087 protected:
0088 bool m_constrain_to_vertex;
0089 bool m_constrain_int_mass;
0090 bool m_use_fake_pv;
0091
0092
0093 };
0094
0095 #endif