Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReactionVertexInfo_factory.h
Go to the documentation of this file.
1 #ifndef DReactionVertexInfo_factory_h
2 #define DReactionVertexInfo_factory_h
3 
4 #include <unordered_map>
5 #include <map>
6 #include <vector>
7 #include <algorithm>
8 
9 #include "JANA/JFactory.h"
10 
11 #include "particleType.h"
12 #include "DResourcePool.h"
13 #include "ANALYSIS/DReaction.h"
16 
17 using namespace std;
18 using namespace jana;
19 
20 namespace DAnalysis
21 {
22 
23 class DReactionVertexInfo_factory : public jana::JFactory<DReactionVertexInfo>
24 {
25  private:
26 
27  //PRIMARY FUNCTIONS
28  jerror_t init(void);
29  jerror_t evnt(jana::JEventLoop *locEventLoop, uint64_t locEventNumber);
30  jerror_t fini(void)
31  {
32  for(auto locInfo : _data)
33  delete locInfo;
34  _data.clear();
35  delete dResourcePool_ReactionStepVertexInfo;
36  return NOERROR;
37  }
38 
39  size_t dDebugLevel = 0;
40  DReactionVertexInfo* Build_VertexInfo(const DReaction* locReaction);
41 
42  //SETUP
43  DReactionStepVertexInfo* Setup_VertexInfo(const DReaction* locReaction, size_t locStepIndex, DReactionStepVertexInfo* locVertexInfo);
44 
45  //GROUPING
46  void Group_VertexParticles(DReactionStepVertexInfo* locVertexInfo);
47  vector<DReactionStepVertexInfo*> Link_Vertices(const DReaction* locReaction, vector<DReactionStepVertexInfo*> locVertexInfos, bool locFitFlag) const;
48  bool Associate_DecayingParticles(bool locFitFlag, bool locLinkingFlag, DReactionStepVertexInfo* locVertexInfo, map<pair<int, int>, DReactionStepVertexInfo*>& locDefinedDecayingParticles) const;
49 
50  //not all reactions are stored here, just the first ones
51  unordered_map<const DReaction*, DReactionVertexInfo*> dVertexInfoMap;
52 
53  //RESOURCE POOL
54  DResourcePool<DReactionStepVertexInfo>* dResourcePool_ReactionStepVertexInfo = nullptr;
55 
57 };
58 
59 } //end DAnalysis namespace
60 
61 #endif // DReactionVertexInfo_factory_h
unordered_map< const DReaction *, DReactionVertexInfo * > dVertexInfoMap