Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DAnalysisResults_factory.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DAnalysisResults_factory.h
4 // Created: Tue Aug 9 14:29:24 EST 2011
5 // Creator: pmatt (on Linux ifarml6 2.6.18-128.el5 x86_64)
6 //
7 
8 #ifndef _DAnalysisResults_factory_
9 #define _DAnalysisResults_factory_
10 
11 #include <unordered_map>
12 #include <map>
13 #include <set>
14 #include <vector>
15 
16 #include "TH1D.h"
17 #include "TH2D.h"
18 #include "TDirectoryFile.h"
19 #include "TROOT.h"
20 
21 #include "JANA/JFactory.h"
22 #include "DANA/DApplication.h"
23 
24 #include "TRACKING/DMCThrown.h"
25 #include "TRIGGER/DTrigger.h"
26 
27 #include "KINFITTER/DKinFitter.h"
30 
31 #include "ANALYSIS/DReaction.h"
33 #include "ANALYSIS/DCutActions.h"
41 
42 using namespace jana;
43 using namespace std;
44 
45 class DAnalysisResults_factory : public jana::JFactory<DAnalysisResults>
46 {
47  public:
48  ~DAnalysisResults_factory(void){delete dSourceComboer;}
49 
50  private:
51  jerror_t init(void); ///< Called once at program start.
52  jerror_t brun(JEventLoop *locEventLoop, int32_t runnumber); ///< Called everytime a new run number is detected.
53  jerror_t evnt(JEventLoop *locEventLoop, uint64_t eventnumber); ///< Called every event.
54 
55  void Make_ControlHistograms(vector<const DReaction*>& locReactions);
56  void Check_ReactionNames(vector<const DReaction*>& locReactions) const;
57  const DParticleCombo* Find_TrueCombo(JEventLoop *locEventLoop, const DReaction* locReaction, const vector<const DParticleCombo*>& locCombos);
58 
59  bool Execute_Actions(JEventLoop* locEventLoop, bool locIsKinFit, const DParticleCombo* locCombo, const DParticleCombo* locTrueCombo, bool locPreKinFitFlag, const vector<DAnalysisAction*>& locActions, size_t& locActionIndex, vector<size_t>& locNumCombosSurvived, int& locLastActionTrueComboSurvives);
60 
61  const DParticleCombo* Handle_ComboFit(const DReactionVertexInfo* locReactionVertexInfo, const DParticleCombo* locParticleCombo, const DReaction* locReaction);
62  pair<shared_ptr<const DKinFitChain>, const DKinFitResults*> Fit_Kinematics(const DReactionVertexInfo* locReactionVertexInfo, const DReaction* locReaction, const DParticleCombo* locParticleCombo, DKinFitType locKinFitType, bool locUpdateCovMatricesFlag);
63  DKinFitResults* Build_KinFitResults(const DParticleCombo* locParticleCombo, DKinFitType locKinFitType, const shared_ptr<const DKinFitChain>& locKinFitChain);
64 
65  unsigned int dDebugLevel = 0;
68  DSourceComboer* dSourceComboer = nullptr;
70  bool dIsMCFlag = false;
71 
72  bool dRequireKinFitConvergence = true;
73  unsigned int dKinFitDebugLevel = 0;
76  map<pair<set<shared_ptr<DKinFitConstraint>>, bool>, DKinFitResults*> dConstraintResultsMap; //used for determining if kinfit results will be identical //bool: update cov matrix flag
77  map<tuple<const DParticleCombo*, DKinFitType, bool, set<size_t>>, const DParticleCombo*> dPreToPostKinFitComboMap; //set: no-mass-constrain steps //bool: update cov matrix flag
78 
80  vector<DKinFitResults*> dCreatedKinFitResults;
82  {
83  auto locKinFitResults = dResourcePool_KinFitResults.Get_Resource();
84  locKinFitResults->Reset();
85  dCreatedKinFitResults.push_back(locKinFitResults);
86  return locKinFitResults;
87  }
88 
89  unordered_map<const DReaction*, bool> dMCReactionExactMatchFlags;
90  unordered_map<const DReaction*, DCutAction_TrueCombo*> dTrueComboCuts;
91 
92  unordered_map<const DReaction*, TH1*> dHistMap_NumParticleCombos;
93  unordered_map<const DReaction*, TH1*> dHistMap_NumEventsSurvivedAction_All;
94  unordered_map<const DReaction*, TH1*> dHistMap_NumEventsWhereTrueComboSurvivedAction;
95  unordered_map<const DReaction*, TH2*> dHistMap_NumCombosSurvivedAction;
96  unordered_map<const DReaction*, TH1*> dHistMap_NumCombosSurvivedAction1D;
97 };
98 
99 #endif // _DAnalysisResults_factory_
100 
map< tuple< const DParticleCombo *, DKinFitType, bool, set< size_t > >, const DParticleCombo * > dPreToPostKinFitComboMap
DKinFitResults * Get_KinFitResultsResource(void)
unordered_map< const DReaction *, TH1 * > dHistMap_NumEventsWhereTrueComboSurvivedAction
unordered_map< const DReaction *, DCutAction_TrueCombo * > dTrueComboCuts
unordered_map< const DReaction *, bool > dMCReactionExactMatchFlags
unordered_map< const DReaction *, TH1 * > dHistMap_NumEventsSurvivedAction_All
unordered_map< const DReaction *, TH1 * > dHistMap_NumCombosSurvivedAction1D
vector< DKinFitResults * > dCreatedKinFitResults
map< pair< set< shared_ptr< DKinFitConstraint > >, bool >, DKinFitResults * > dConstraintResultsMap
DParticleComboCreator * dParticleComboCreator
DResourcePool< DKinFitResults > dResourcePool_KinFitResults
unordered_map< const DReaction *, TH2 * > dHistMap_NumCombosSurvivedAction
void Reset(void)
unordered_map< const DReaction *, TH1 * > dHistMap_NumParticleCombos
DKinFitUtils_GlueX * dKinFitUtils