Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReaction_factory_b1pi_hists.cc
Go to the documentation of this file.
4 
5 //------------------
6 // init
7 //------------------
9 {
10  // Make as many DReaction objects as desired
11  DReactionStep* locReactionStep;
12 
13  DReaction* locReaction = new DReaction("b1pi"); //unique name
14 
15 /**************************************************** b1pi Steps ****************************************************/
16 
17  //g, p -> omega, pi-, pi+, (p)
18  locReactionStep = new DReactionStep();
19  locReactionStep->Set_InitialParticleID(Gamma);
20  locReactionStep->Set_TargetParticleID(Proton);
21  locReactionStep->Add_FinalParticleID(omega); //omega
22  locReactionStep->Add_FinalParticleID(PiMinus); //pi-
23  locReactionStep->Add_FinalParticleID(PiPlus); //pi+
24  locReactionStep->Add_FinalParticleID(Proton, true); //proton missing
25  locReaction->Add_ReactionStep(locReactionStep);
26  dReactionStepPool.push_back(locReactionStep); //prevent memory leak
27 
28  //omega -> pi+, pi-, pi0
29  locReactionStep = new DReactionStep();
30  locReactionStep->Set_InitialParticleID(omega);
31  locReactionStep->Add_FinalParticleID(PiPlus);
32  locReactionStep->Add_FinalParticleID(PiMinus);
33  locReactionStep->Add_FinalParticleID(Pi0);
34  locReaction->Add_ReactionStep(locReactionStep);
35  dReactionStepPool.push_back(locReactionStep); //prevent memory leak
36 
37  //pi0 -> gamma, gamma
38  locReactionStep = new DReactionStep();
39  locReactionStep->Set_InitialParticleID(Pi0);
40  locReactionStep->Add_FinalParticleID(Gamma);
41  locReactionStep->Add_FinalParticleID(Gamma);
42  locReaction->Add_ReactionStep(locReactionStep);
43  dReactionStepPool.push_back(locReactionStep); //prevent memory leak
44 
45 /**************************************************** b1pi Control Variables ****************************************************/
46 
47  // Type of kinematic fit to perform:
48  locReaction->Set_KinFitType(d_P4AndVertexFit); //defined in DKinFitResults.h
49 
50  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns)
51  locReaction->Set_NumPlusMinusRFBunches(0);
52 
53  // Enable ROOT TTree Output
54  locReaction->Enable_TTreeOutput("tree_b1pi.root"); //string is file name (must end in ".root"!!)
55 
56  // Highly Recommended: Cut on number of extra "good" tracks. "Good" tracks are ones that survive the "PreSelect" factory.
57  // Current Default: "Good" tracks have a detector-hit match, and tracking FOM > 0.0027 (+/- 3 sigma)
58  // Important: Keep cut large: Can lose events if many ghost and accidental tracks
59  locReaction->Set_MaxExtraGoodTracks(4);
60 
61 /**************************************************** b1pi Actions ****************************************************/
62 
63  //Kinematics
64  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboGenReconComparison(locReaction, false));
65  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false));
66 
67  //PID
68  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false));
69  locReaction->Add_AnalysisAction(new DCutAction_CombinedPIDFOM(locReaction, 0.01)); //1%
70 
71  //Kinematic Fit Results and Confidence Level Cut
72  locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only
73  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.01)); //1%
74 
75  //Post-Fit Kinematics
76  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboGenReconComparison(locReaction, true, "PostKinFit"));
77  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true, "PostKinFit"));
78 
79  //Constrained Mass Distributions
80  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, false, 650, 0.3, 1.6, "PostKinFit")); //false: measured data
81  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 500, 0.0, 0.5, "Pi0_PostKinFit")); //false: measured data
82 
83  //omega mass
84  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.2, 1.4, "omega_PostKinFit")); //true: kinfit data
85 
86  //resonance masses
87  locReaction->Add_AnalysisAction(new DCustomAction_HistMass_b1_1235(locReaction, true)); //true: kinfit data
88  locReaction->Add_AnalysisAction(new DCustomAction_HistMass_X_2000(locReaction, true)); //true: kinfit data
89 
90  _data.push_back(locReaction); //Register the DReaction
91 
92  return NOERROR;
93 }
94 
95 //------------------
96 // brun
97 //------------------
98 jerror_t DReaction_factory_b1pi_hists::brun(jana::JEventLoop *eventLoop, int32_t runnumber)
99 {
100  return NOERROR;
101 }
102 
103 //------------------
104 // evnt
105 //------------------
106 jerror_t DReaction_factory_b1pi_hists::evnt(JEventLoop *loop, uint64_t eventnumber)
107 {
108  return NOERROR;
109 }
110 
111 //------------------
112 // erun
113 //------------------
115 {
116  return NOERROR;
117 }
118 
119 //------------------
120 // fini
121 //------------------
123 {
124  for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i)
125  delete dReactionStepPool[loc_i];
126  return NOERROR;
127 }
128 
void Add_ReactionStep(const DReactionStep *locReactionStep)
Definition: DReaction.h:48
void Set_MaxExtraGoodTracks(size_t locMaxExtraGoodTracks)
Definition: DReaction.h:59
void Enable_TTreeOutput(string locTTreeOutputFileName, bool locSaveUnusedFlag=false)
Definition: DReaction.h:163
void Set_NumPlusMinusRFBunches(size_t locNumPlusMinusRFBunches)
Definition: DReaction.h:57
jerror_t fini(void)
Called after last event of last event source has been processed.
void Set_KinFitType(DKinFitType locKinFitType)
Definition: DReaction.h:53
void Add_FinalParticleID(Particle_t locPID, bool locIsMissingFlag=false)
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
jerror_t init(void)
Called once at program start.
void Set_InitialParticleID(Particle_t locPID, bool locIsMissingFlag=false)
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
void Add_AnalysisAction(DAnalysisAction *locAnalysisAction)
Definition: DReaction.h:50
void Set_TargetParticleID(Particle_t locPID)
Definition: DReactionStep.h:76
deque< DReactionStep * > dReactionStepPool