Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DReaction_factory_OmegaSkim.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DReaction_factory_OmegaSkim.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 
9 
11 {
12  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false));
13  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, Proton, SYS_TOF));
14  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, Proton, SYS_BCAL));
15  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL));
16  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, PiPlus, SYS_TOF));
17  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.5, PiPlus, SYS_BCAL));
18  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL));
19  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, PiMinus, SYS_TOF));
20  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.5, PiMinus, SYS_BCAL));
21  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL));
22  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, Gamma, SYS_BCAL)); //false: measured data
23  locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_FCAL)); //false: measured data
24  locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction, false, "PostPIDCuts"));
25 
26  // Cut low beam energy as tagger settings change during 2017-01
27  // locReaction->Add_AnalysisAction(new DCutAction_BeamEnergy(locReaction, false, 7.0, 12.0));
28 }
29 
30 
31 
32 //------------------
33 // brun
34 //------------------
35 jerror_t DReaction_factory_OmegaSkim::brun(JEventLoop* locEventLoop, int32_t locRunNumber)
36 {
37  vector<double> locBeamPeriodVector;
38  locEventLoop->GetCalib("PHOTON_BEAM/RF/beam_period", locBeamPeriodVector);
39  dBeamBunchPeriod = locBeamPeriodVector[0];
40 
41  return NOERROR;
42 }
43 
44 //------------------
45 // init
46 //------------------
47 jerror_t DReaction_factory_OmegaSkim::evnt(JEventLoop* locEventLoop, uint64_t locEventNumber)
48 {
49  // Make as many DReaction objects as desired
50  DReactionStep* locReactionStep = NULL;
51  DReaction* locReaction;
52 
53  // DOCUMENTATION:
54  // ANALYSIS library: https://halldweb1.jlab.org/wiki/index.php/GlueX_Analysis_Software
55  // DReaction factory: https://halldweb1.jlab.org/wiki/index.php/Analysis_DReaction
56 
57  /**************************************************** p3pi_preco_2FCAL Reaction Steps ****************************************************/
58 
59  locReaction = new DReaction("p3pi_excl"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown"
60 
61  // g, p -> omega, p
62  locReactionStep = new DReactionStep();
63  locReactionStep->Set_InitialParticleID(Gamma);
64  locReactionStep->Set_TargetParticleID(Proton);
65  locReactionStep->Add_FinalParticleID(omega);
66  locReactionStep->Add_FinalParticleID(Proton);
67  locReaction->Add_ReactionStep(locReactionStep);
68  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
69 
70  // omega -> pi+, pi-, pi0
71  locReactionStep = new DReactionStep();
72  locReactionStep->Set_InitialParticleID(omega);
73  locReactionStep->Add_FinalParticleID(PiPlus);
74  locReactionStep->Add_FinalParticleID(PiMinus);
75  locReactionStep->Add_FinalParticleID(Pi0);
76  locReaction->Add_ReactionStep(locReactionStep);
77  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
78 
79  // pi0 -> g, g
80  locReactionStep = new DReactionStep();
81  locReactionStep->Set_InitialParticleID(Pi0);
82  locReactionStep->Add_FinalParticleID(Gamma);
83  locReactionStep->Add_FinalParticleID(Gamma);
84  locReaction->Add_ReactionStep(locReactionStep);
85  dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak
86  locReactionStep->Set_KinFitConstrainInitMassFlag(false);
87  /**************************************************** p3pi_preco_2FCAL Control Settings ****************************************************/
88 
89  // KINFIT
90  locReaction->Set_KinFitType(d_P4AndVertexFit); //simultaneously constrain apply four-momentum conservation, invariant masses, and common-vertex constraints
91 
92  // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch
93  locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod);
94 
95  /**************************************************** p3pi_preco_2FCAL Analysis Actions ****************************************************/
96 
97  // PID
98  PIDCuts(locReaction);
99 
100  // MASSES
101  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0"));
102  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1));
103  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega"));
104  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit"));
105 
106  // Kinematic Fit Results
107  locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05, true)); //5% confidence level cut on pull histograms only
108  // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 5.73303E-7)); // confidence level cut //+/- 5 sigma
109  locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.05));
110 
111  // MASSES, POST-KINFIT
112  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 850, 0.05, 0.22, "Pi0_PostKinFitCut"));
113  locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.1, 0.1, "PostKinFitCut"));
114  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 600, 0.5, 1.1, "Omega_PostKinFitCut"));
115  locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 600, 0.5, 1.1, "Omega_KinFit_PostKinFitCut"));
116 
117  // Kinematics of final selection
118  // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false, "Final")); //false: fill histograms with measured particle data
119 
120  // cut around omega mass
121  locReaction->Add_AnalysisAction(new DCutAction_InvariantMass(locReaction,omega,true,0.68,0.88));
122 
123  string locTreeFileName = "p3pi_excl_skim.root";
124  locReaction->Enable_TTreeOutput(locTreeFileName, true); //true/false: do/don't save unused hypotheses
125 
126  _data.push_back(locReaction); //Register the DReaction with the factory
127 
128  return NOERROR;
129 }
130 
131 //------------------
132 // fini
133 //------------------
135 {
136  for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i)
137  delete dReactionStepPool[loc_i]; //cleanup memory
138  return NOERROR;
139 }
void Add_ReactionStep(const DReactionStep *locReactionStep)
Definition: DReaction.h:48
void Enable_TTreeOutput(string locTTreeOutputFileName, bool locSaveUnusedFlag=false)
Definition: DReaction.h:163
jerror_t brun(JEventLoop *locEventLoop, int32_t locRunNumber)
void Set_KinFitConstrainInitMassFlag(bool locFlag)
Definition: DReactionStep.h:78
void Set_MaxPhotonRFDeltaT(double locMaxPhotonRFDeltaT)
Definition: DReaction.cc:73
void PIDCuts(DReaction *locReaction)
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
deque< DReactionStep * > dReactionStepPool
void Set_InitialParticleID(Particle_t locPID, bool locIsMissingFlag=false)
void Add_AnalysisAction(DAnalysisAction *locAnalysisAction)
Definition: DReaction.h:50
jerror_t evnt(JEventLoop *locEventLoop, uint64_t locEventNumber)
jerror_t fini(void)
Called after last event of last event source has been processed.
void Set_TargetParticleID(Particle_t locPID)
Definition: DReactionStep.h:76