Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReaction_factory_p2gamma_hists.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DReaction_factory_p2gamma_hists.cc
4 // Created: Tue Apr 28 21:19:40 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("p2gamma_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  /**************************************************** p2gamma_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  //Example: g, p -> pi0, p
30  locReactionStep = new DReactionStep();
31  locReactionStep->Set_InitialParticleID(Gamma);
32  locReactionStep->Set_TargetParticleID(Proton);
33  locReactionStep->Add_FinalParticleID(Gamma);
34  locReactionStep->Add_FinalParticleID(Gamma);
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  /**************************************************** p2gamma_hists Control Settings ****************************************************/
40 
41  // Recommended: Type of kinematic fit to perform (default is d_NoFit)
42  //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DKinFitResults.h
43  locReaction->Set_KinFitType(d_NoFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
44 
45  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 2.004 ns)
46  locReaction->Set_NumPlusMinusRFBunches(0);
47 
48  // Recommended: Enable ROOT TTree output for this DReaction
49  locReaction->Enable_TTreeOutput("tree_p2gamma_hists.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change
50 
51  /**************************************************** p2gamma_hists Analysis Actions ****************************************************/
52 
53  // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities.
54  //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination
55  //Pre-defined actions can be found in ANALYSIS/DHistogramActions.h and ANALYSIS/DCutActions.h
56 
57  // Custom histograms (before PID)
58  locReaction->Add_AnalysisAction(new DCustomAction_p2gamma_hists(locReaction, false, "NoKinFit_Measured"));
59 
60  // PID
61  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false));
62  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.0, Unknown, SYS_TOF)); //false: measured data //Unknown: All PIDs
63  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 10.0, Unknown, SYS_BCAL)); //false: measured data //Unknown: All PIDs
64  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 10.0, Unknown, SYS_FCAL)); //false: measured data //Unknown: All PIDs
65 
66  // Custom histograms (after PID)
67  locReaction->Add_AnalysisAction(new DCustomAction_p2gamma_hists(locReaction, false, "TimingCut_Measured"));
68 
69  // Cuts for future analysis actions applied in CustomAction for now
70  locReaction->Add_AnalysisAction(new DCustomAction_p2gamma_cuts(locReaction, false));
71  //locReaction->Add_AnalysisAction(new DCutAction_InvariantMass(locReaction, 0, Gamma, Gamma, false, 0.1, 0.16));
72 
73  // Diagnostics for unused tracks and showers with final selection
74  locReaction->Add_AnalysisAction(new DCustomAction_p2gamma_unusedHists(locReaction, false, "NoKinFit_Measured"));
75 
76  // Cut beam energy for TTree entries
77  //locReaction->Add_AnalysisAction(new DCutAction_BeamEnergy(locReaction, false, 2.5, 3.0));
78 
79  // Kinematics
80  locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false)); //false: fill histograms with measured particle data
81 
82  _data.push_back(locReaction); //Register the DReaction with the factory
83 
84  return NOERROR;
85 }
86 
87 //------------------
88 // fini
89 //------------------
91 {
92  for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i)
93  delete dReactionStepPool[loc_i]; //cleanup memory
94  return NOERROR;
95 }
96 
void Add_ReactionStep(const DReactionStep *locReactionStep)
Definition: DReaction.h:48
void Enable_TTreeOutput(string locTTreeOutputFileName, bool locSaveUnusedFlag=false)
Definition: DReaction.h:163
jerror_t init(void)
Called once at program start.
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)
Definition: GlueX.h:22
jerror_t fini(void)
Called after last event of last event source has been processed.
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