Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReaction_factory_pi0calib.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DReaction_factory_pi0calib.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 
11 
12 //------------------
13 // init
14 //------------------
16 {
17  // Make as many DReaction objects as desired
18  DReactionStep* locReactionStep = NULL;
19  DReaction* locReaction = new DReaction("excl_pi0calib"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
20 
21  // DOCUMENTATION:
22  // ANALYSIS library: https://halldweb1.jlab.org/wiki/index.php/GlueX_Analysis_Software
23  // DReaction factory: https://halldweb1.jlab.org/wiki/index.php/Analysis_DReaction
24 
25  /**************************************************** pi0calib Reaction Steps ****************************************************/
26 
27  //Required: DReactionSteps to specify the channel and decay chain you want to study
28  //Particles are of type Particle_t, an enum defined in sim-recon/src/libraries/include/particleType.h
29 
30  //Example: g, p -> pi+, pi-, pi0
31  locReactionStep = new DReactionStep();
32  locReactionStep->Set_InitialParticleID(Gamma);
33  locReactionStep->Set_TargetParticleID(Proton);
34  locReactionStep->Add_FinalParticleID(PiPlus);
35  locReactionStep->Add_FinalParticleID(PiMinus);
36  locReactionStep->Add_FinalParticleID(Pi0);
37  locReactionStep->Add_FinalParticleID(Proton);
38  locReaction->Add_ReactionStep(locReactionStep);
39  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
40 
41  //Example: pi0 -> g, g
42  locReactionStep = new DReactionStep();
43  locReactionStep->Set_InitialParticleID(Pi0);
44  locReactionStep->Add_FinalParticleID(Gamma);
45  locReactionStep->Add_FinalParticleID(Gamma);
46  locReactionStep->Set_KinFitConstrainInitMassFlag(false);
47  locReaction->Add_ReactionStep(locReactionStep);
48  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
49 
50  /**************************************************** pi0calib Control Settings ****************************************************/
51 
52  // Recommended: Type of kinematic fit to perform (default is d_NoFit)
53  //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DKinFitResults.h
54 // locReaction->Set_KinFitType(d_NoFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
55  locReaction->Set_KinFitType(d_P4AndVertexFit);
56 
57  // Recommended: Enable ROOT TTree output for this DReaction
58 // locReaction->Enable_TTreeOutput("tree_pi0calib.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change
59 
60  /**************************************************** pi0calib Analysis Actions ****************************************************/
61 
62  // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities.
63  //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination
64  //Pre-defined actions can be found in ANALYSIS/DHistogramActions.h and ANALYSIS/DCutActions.h
65 
66  locReaction->Set_NumPlusMinusRFBunches(0); // no accidentals!
67  locReaction->Set_MaxExtraGoodTracks(1);
68  //locReaction->Set_InvariantMassCut(Pi0, 0.05, 0.22); // Use default AnLib cut of M(gg) = 80 - 190 MeV
69 
70  // Require BCAL photons
71  locReaction->Add_AnalysisAction(new DCustomAction_CutPhotonKin(locReaction));
72 
73  // Make some back-to-backness and other exclusivity cuts
74  locReaction->Add_AnalysisAction(new DCustomAction_p2gamma_cuts(locReaction, false));
75 
76  // Require kin fit CL > 1%
77  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.01));
78 
79  _data.push_back(locReaction); //Register the DReaction with the factory
80 
81  return NOERROR;
82 }
83 
84 //------------------
85 // fini
86 //------------------
88 {
89  for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i)
90  delete dReactionStepPool[loc_i]; //cleanup memory
91  return NOERROR;
92 }
93 
void Add_ReactionStep(const DReactionStep *locReactionStep)
Definition: DReaction.h:48
void Set_MaxExtraGoodTracks(size_t locMaxExtraGoodTracks)
Definition: DReaction.h:59
jerror_t init(void)
Called once at program start.
jerror_t fini(void)
Called after last event of last event source has been processed.
void Set_KinFitConstrainInitMassFlag(bool locFlag)
Definition: DReactionStep.h:78
deque< DReactionStep * > dReactionStepPool
void Set_NumPlusMinusRFBunches(size_t locNumPlusMinusRFBunches)
Definition: DReaction.h:57
void Set_KinFitType(DKinFitType locKinFitType)
Definition: DReaction.h:53
void Add_FinalParticleID(Particle_t locPID, bool locIsMissingFlag=false)
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