Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReaction_factory_p2pi0_hists.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DReaction_factory_p2pi0_hists.cc
4 // Created: Tue May 19 07:56:15 EDT 2015
5 // Creator: jrsteven (on Linux ifarm1401 2.6.32-431.el6.x86_64 x86_64)
6 //
7 
8 
10 
11 //------------------
12 // init
13 //------------------
15 {
16  // Make as many DReaction objects as desired
17  DReactionStep* locReactionStep = NULL;
18  DReaction* locReaction = new DReaction("p2pi0_hists"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
19 
20  // DOCUMENTATION:
21  // ANALYSIS library: https://halldweb1.jlab.org/wiki/index.php/GlueX_Analysis_Software
22  // DReaction factory: https://halldweb1.jlab.org/wiki/index.php/Analysis_DReaction
23 
24  /**************************************************** p2pi0_hists Reaction Steps ****************************************************/
25 
26  //Required: DReactionSteps to specify the channel and decay chain you want to study
27  //Particles are of type Particle_t, an enum defined in sim-recon/src/libraries/include/particleType.h
28 
29  // g, p -> pi0, pi0, p
30  locReactionStep = new DReactionStep();
31  locReactionStep->Set_InitialParticleID(Gamma);
32  locReactionStep->Set_TargetParticleID(Proton);
33  locReactionStep->Add_FinalParticleID(Pi0);
34  locReactionStep->Add_FinalParticleID(Pi0);
35  locReactionStep->Add_FinalParticleID(Proton);
36  locReaction->Add_ReactionStep(locReactionStep);
37  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
38 
39  // pi0 -> g, g
40  locReactionStep = new DReactionStep();
41  locReactionStep->Set_InitialParticleID(Pi0);
42  locReactionStep->Add_FinalParticleID(Gamma);
43  locReactionStep->Add_FinalParticleID(Gamma);
44  locReactionStep->Set_KinFitConstrainInitMassFlag(false);
45  locReaction->Add_ReactionStep(locReactionStep);
46  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
47 
48  // pi0 -> g, g
49  locReactionStep = new DReactionStep();
50  locReactionStep->Set_InitialParticleID(Pi0);
51  locReactionStep->Add_FinalParticleID(Gamma);
52  locReactionStep->Add_FinalParticleID(Gamma);
53  locReactionStep->Set_KinFitConstrainInitMassFlag(false);
54  locReaction->Add_ReactionStep(locReactionStep);
55  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
56 
57  /**************************************************** p2pi0_hists Control Settings ****************************************************/
58 
59  // Recommended: Type of kinematic fit to perform (default is d_NoFit)
60  //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DKinFitResults.h
61  locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
62 
63  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 2.004 ns)
64  locReaction->Set_NumPlusMinusRFBunches(0);
65 
66  /**************************************************** p2pi0_hists Analysis Actions ****************************************************/
67 
68  // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities.
69  //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination
70  //Pre-defined actions can be found in ANALYSIS/DHistogramActions.h and ANALYSIS/DCutActions.h
71 
72  // PID
73  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false));
74  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.0, Unknown, SYS_TOF)); //false: measured data //Unknown: All PIDs
75  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 10.0, Unknown, SYS_BCAL)); //false: measured data //Unknown: All PIDs
76  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 10.0, Unknown, SYS_FCAL)); //false: measured data //Unknown: All PIDs
77 
78  // Custom histograms for p2pi0 (no KinFit cut)
79  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false,500,0.,1., "NoKinFit_Measured"));
80  locReaction->Add_AnalysisAction(new DCustomAction_p2pi0_hists(locReaction, false, "NoKinFit_Measured"));
81 
82  // Kinematics
83  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false)); //false: fill histograms with measured particle data
84 
85  _data.push_back(locReaction); //Register the DReaction with the factory
86 
87  return NOERROR;
88 }
89 
90 //------------------
91 // fini
92 //------------------
94 {
95  for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i)
96  delete dReactionStepPool[loc_i]; //cleanup memory
97  return NOERROR;
98 }
99 
void Add_ReactionStep(const DReactionStep *locReactionStep)
Definition: DReaction.h:48
jerror_t fini(void)
Called after last event of last event source has been processed.
void Set_KinFitConstrainInitMassFlag(bool locFlag)
Definition: DReactionStep.h:78
void Set_NumPlusMinusRFBunches(size_t locNumPlusMinusRFBunches)
Definition: DReaction.h:57
Definition: GlueX.h:19
void Set_KinFitType(DKinFitType locKinFitType)
Definition: DReaction.h:53
Definition: GlueX.h:20
void Add_FinalParticleID(Particle_t locPID, bool locIsMissingFlag=false)
jerror_t init(void)
Called once at program start.
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