Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReaction_factory_ppi0gamma_hists.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DReaction_factory_ppi0gamma_hists.cc
4 // Created: Wed Mar 11 20:34:22 EDT 2015
5 // Creator: jrsteven (on Linux halldw1.jlab.org 2.6.32-504.8.1.el6.x86_64 x86_64)
6 //
7 
8 
13 
15 {
16  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false));
17  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, Proton, SYS_TOF));
18  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, Proton, SYS_BCAL));
19  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL));
20  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, PiPlus, SYS_TOF));
21  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.5, PiPlus, SYS_BCAL));
22  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL));
23  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, PiMinus, SYS_TOF));
24  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.5, PiMinus, SYS_BCAL));
25  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL));
26  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, Gamma, SYS_BCAL)); //false: measured data
27  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_FCAL)); //false: measured data
28  locReaction->Add_AnalysisAction(new DCutAction_dEdx(locReaction));
29  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false, "PostPIDCuts"));
30 }
31 
32 
33 
34 //------------------
35 // brun
36 //------------------
37 jerror_t DReaction_factory_ppi0gamma_hists::brun(JEventLoop* locEventLoop, int32_t locRunNumber)
38 {
39  vector<double> locBeamPeriodVector;
40  locEventLoop->GetCalib("PHOTON_BEAM/RF/beam_period", locBeamPeriodVector);
41  dBeamBunchPeriod = locBeamPeriodVector[0];
42 
43  return NOERROR;
44 }
45 
46 //------------------
47 // init
48 //------------------
49 jerror_t DReaction_factory_ppi0gamma_hists::evnt(JEventLoop* locEventLoop, uint64_t locEventNumber)
50 {
51  // Make as many DReaction objects as desired
52  DReactionStep* locReactionStep = NULL;
53  DReaction* locReaction;
54 
55  double minPi0FCAL_BCAL = 0.11;
56  double maxPi0FCAL_BCAL = 0.16;
57 
58  // DOCUMENTATION:
59  // ANALYSIS library: https://halldweb1.jlab.org/wiki/index.php/GlueX_Analysis_Software
60  // DReaction factory: https://halldweb1.jlab.org/wiki/index.php/Analysis_DReaction
61 
62  /**************************************************** ppi0gamma_preco_2FCAL Reaction Steps ****************************************************/
63 
64  locReaction = new DReaction("ppi0gamma_preco_2FCAL"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
65 
66  // g, p -> omega, p
67  locReactionStep = new DReactionStep();
68  locReactionStep->Set_InitialParticleID(Gamma);
69  locReactionStep->Set_TargetParticleID(Proton);
70  locReactionStep->Add_FinalParticleID(omega);
71  locReactionStep->Add_FinalParticleID(Proton);
72  locReaction->Add_ReactionStep(locReactionStep);
73  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
74 
75  // omega -> pi+, pi-, pi0
76  locReactionStep = new DReactionStep();
77  locReactionStep->Set_InitialParticleID(omega);
78  locReactionStep->Add_FinalParticleID(Gamma);
79  locReactionStep->Add_FinalParticleID(Pi0);
80  locReaction->Add_ReactionStep(locReactionStep);
81  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
82 
83  // pi0 -> g, g
84  locReactionStep = new DReactionStep();
85  locReactionStep->Set_InitialParticleID(Pi0);
86  locReactionStep->Add_FinalParticleID(Gamma);
87  locReactionStep->Add_FinalParticleID(Gamma);
88  locReaction->Add_ReactionStep(locReactionStep);
89  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
90 
91  /**************************************************** ppi0gamma_preco_2FCAL Control Settings ****************************************************/
92 
93  // Event Store
94  locReaction->Set_EventStoreSkims("2q+,q-,pi0"); // boolean-AND of skims
95 
96  // KINFIT
97  locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
98 
99  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch
100  locReaction->Set_NumPlusMinusRFBunches(0);
101 
102  /**************************************************** ppi0gamma_preco_2FCAL Analysis Actions ****************************************************/
103 
104  // Require 2 photons in FCAL
105  locReaction->Add_AnalysisAction(new DCustomAction_ppi0gamma_Pi0Cuts(locReaction, false, 2));
106 
107  // PID
108  PIDCuts(locReaction);
109 
110  // MASSES
111  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0"));
112  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1));
113  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega"));
114  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit"));
115 
116  // Kinematic Fit Results
117  locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05, true)); //5% confidence level cut on pull histograms only
118  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 5.73303E-7)); // confidence level cut //+/- 5 sigma
119 
120  // MASSES, POST-KINFIT
121  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0_PostKinFitCut"));
122  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1, "PostKinFitCut"));
123  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega_PostKinFitCut"));
124  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit_PostKinFitCut"));
125 
126  // Kinematics of final selection
127  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false, "Final")); //false: fill histograms with measured particle data
128 
129  _data.push_back(locReaction); //Register the DReaction with the factory
130 
131 
132 
133  /**************************************************** ppi0gamma_preco_FCAL-BCAL Reaction Steps ****************************************************/
134 
135  locReaction = new DReaction("ppi0gamma_preco_FCAL-BCAL"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
136  locReaction->Add_ReactionStep(dReactionStepPool[0]);
137  locReaction->Add_ReactionStep(dReactionStepPool[1]);
138  locReaction->Add_ReactionStep(dReactionStepPool[2]);
139 
140  /**************************************************** ppi0gamma_preco_FCAL-BCAL Control Settings ****************************************************/
141 
142  // Event Store
143  locReaction->Set_EventStoreSkims("2q+,q-,pi0"); // boolean-AND of skims
144 
145  // KINFIT
146  locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
147 
148  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch
149  locReaction->Set_NumPlusMinusRFBunches(0);
150 
151  /**************************************************** ppi0gamma_preco FCAL-BCAL Analysis Actions ****************************************************/
152 
153  // Require 1 photon in FCAL and 1 photon in BCAL
154  locReaction->Add_AnalysisAction(new DCustomAction_ppi0gamma_Pi0Cuts(locReaction, false, 1));
155 
156  // PID
157  PIDCuts(locReaction);
158 
159  // MASSES
160  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0"));
161  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1));
162  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega"));
163  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit"));
164 
165  // Kinematic Fit Results
166  locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05, true)); //5% confidence level cut on pull histograms only
167  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 5.73303E-7)); // confidence level cut //+/- 5 sigma
168 
169  // MASSES, POST-KINFIT
170  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0_PostKinFitCut"));
171  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1, "PostKinFitCut"));
172  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega_PostKinFitCut"));
173  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit_PostKinFitCut"));
174 
175  // Kinematics of final selection
176  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false, "Final")); //false: fill histograms with measured particle data
177 
178  _data.push_back(locReaction); //Register the DReaction with the factory
179 
180 
181 
182  /**************************************************** ppi0gamma_preco_2BCAL Reaction Steps ****************************************************/
183 
184  locReaction = new DReaction("ppi0gamma_preco_2BCAL"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
185  locReaction->Add_ReactionStep(dReactionStepPool[0]);
186  locReaction->Add_ReactionStep(dReactionStepPool[1]);
187  locReaction->Add_ReactionStep(dReactionStepPool[2]);
188 
189  /**************************************************** ppi0gamma_preco_2BCAL Control Settings ****************************************************/
190 
191  // Event Store
192  locReaction->Set_EventStoreSkims("2q+,q-,pi0"); // boolean-AND of skims
193 
194  // KINFIT
195  locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
196 
197  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch
198  locReaction->Set_NumPlusMinusRFBunches(0);
199 
200  /**************************************************** ppi0gamma_preco_2BCAL Analysis Actions ****************************************************/
201 
202  // Require 1 photon in FCAL and 1 photon in BCAL
203  locReaction->Add_AnalysisAction(new DCustomAction_ppi0gamma_Pi0Cuts(locReaction, false, 0));
204 
205  // PID
206  PIDCuts(locReaction);
207 
208  // MASSES
209  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0"));
210  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1));
211  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega"));
212  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit"));
213 
214  // Kinematic Fit Results
215  locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05, true)); //5% confidence level cut on pull histograms only
216  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 5.73303E-7)); // confidence level cut //+/- 5 sigma
217 
218  // MASSES, POST-KINFIT
219  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0_PostKinFitCut"));
220  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1, "PostKinFitCut"));
221  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega_PostKinFitCut"));
222  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit_PostKinFitCut"));
223 
224  // Kinematics of final selection
225  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false, "Final")); //false: fill histograms with measured particle data
226 
227  _data.push_back(locReaction); //Register the DReaction with the factory
228 
229 
230 
231  /**************************************************** ppi0gamma_preco_any Reaction Steps ****************************************************/
232 
233  locReaction = new DReaction("ppi0gamma_preco_any"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
234  locReaction->Add_ReactionStep(dReactionStepPool[0]);
235  locReaction->Add_ReactionStep(dReactionStepPool[1]);
236  locReaction->Add_ReactionStep(dReactionStepPool[2]);
237 
238  /**************************************************** ppi0gamma_preco_any Control Settings ****************************************************/
239 
240  // Event Store
241  locReaction->Set_EventStoreSkims("2q+,q-,pi0"); // boolean-AND of skims
242 
243  // KINFIT
244  //locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
245 
246  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch
247  locReaction->Set_NumPlusMinusRFBunches(0);
248 
249  /**************************************************** ppi0gamma_preco_any Analysis Actions ****************************************************/
250 
251  // PID
252  PIDCuts(locReaction);
253 
254  // Pi0
255  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0"));
256  locReaction->Add_AnalysisAction(new DCutAction_InvariantMass(locReaction, Pi0, false, minPi0FCAL_BCAL, maxPi0FCAL_BCAL));
257 
258  // Custom histograms for ppi0gamma
259  locReaction->Add_AnalysisAction(new DCustomAction_ppi0gamma_hists(locReaction, false));
260 
261  // MISSING MASS
262  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1));
263  locReaction->Add_AnalysisAction(new DCutAction_MissingMassSquared(locReaction, false, -0.01, 0.005));
264 
265  // OMEGA
266  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega"));
267 
268  // Kinematics of final selection
269  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false, "Final")); //false: fill histograms with measured particle data
270 
271  _data.push_back(locReaction); //Register the DReaction with the factory
272 
273 
274 
275  /**************************************************** ppi0gamma_preco_any_kinfit Reaction Steps ****************************************************/
276 
277  locReaction = new DReaction("ppi0gamma_preco_any_kinfit"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
278  locReaction->Add_ReactionStep(dReactionStepPool[0]);
279  locReaction->Add_ReactionStep(dReactionStepPool[1]);
280  locReaction->Add_ReactionStep(dReactionStepPool[2]);
281 
282  /**************************************************** ppi0gamma_preco_any_kinfit Control Settings ****************************************************/
283 
284  // Event Store
285  locReaction->Set_EventStoreSkims("2q+,q-,pi0"); // boolean-AND of skims
286 
287  // KINFIT
288  locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
289 
290  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch
291  locReaction->Set_NumPlusMinusRFBunches(0);
292 
293  /**************************************************** ppi0gamma_preco_any_kinfit Analysis Actions ****************************************************/
294 
295  // PID
296  PIDCuts(locReaction);
297 
298  // MASSES
299  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0"));
300  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1));
301  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega"));
302  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit"));
303 
304  // Kinematic Fit Results
305  locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05, true)); //5% confidence level cut on pull histograms only
306  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 5.73303E-7)); // confidence level cut //+/- 5 sigma
307 
308  // MASSES, POST-KINFIT
309  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0_PostKinFitCut"));
310  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1, "PostKinFitCut"));
311  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega_PostKinFitCut"));
312  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit_PostKinFitCut"));
313 
314  // Kinematics of final selection
315  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false, "Final")); //false: fill histograms with measured particle data
316 
317  _data.push_back(locReaction); //Register the DReaction with the factory
318 
319  return NOERROR;
320 }
321 
322 //------------------
323 // fini
324 //------------------
326 {
327  for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i)
328  delete dReactionStepPool[loc_i]; //cleanup memory
329  return NOERROR;
330 }
void Add_ReactionStep(const DReactionStep *locReactionStep)
Definition: DReaction.h:48
void Set_NumPlusMinusRFBunches(size_t locNumPlusMinusRFBunches)
Definition: DReaction.h:57
jerror_t brun(JEventLoop *locEventLoop, int32_t locRunNumber)
Definition: GlueX.h:19
void Set_KinFitType(DKinFitType locKinFitType)
Definition: DReaction.h:53
jerror_t fini(void)
Called after last event of last event source has been processed.
void Set_EventStoreSkims(string locEventStoreSkims)
Definition: DReaction.h:72
Definition: GlueX.h:20
void Add_FinalParticleID(Particle_t locPID, bool locIsMissingFlag=false)
Definition: GlueX.h:22
void Set_InitialParticleID(Particle_t locPID, bool locIsMissingFlag=false)
void Add_AnalysisAction(DAnalysisAction *locAnalysisAction)
Definition: DReaction.h:50
void Set_TargetParticleID(Particle_t locPID)
Definition: DReactionStep.h:76
jerror_t evnt(JEventLoop *locEventLoop, uint64_t locEventNumber)