Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DCustomAction_p3pi_Pi0Cuts.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DCustomAction_p3pi_Pi0Cuts.cc
4 // Created: Thu Jan 22 11:19:47 EST 2015
5 // Creator: jrsteven (on Linux ifarm1401 2.6.32-431.el6.x86_64 x86_64)
6 //
7 
9 
10 void DCustomAction_p3pi_Pi0Cuts::Initialize(JEventLoop* locEventLoop)
11 {
12 
13 }
14 
15 bool DCustomAction_p3pi_Pi0Cuts::Perform_Action(JEventLoop* locEventLoop, const DParticleCombo* locParticleCombo)
16 {
17  const DParticleComboStep* locParticleComboStep = locParticleCombo->Get_ParticleComboStep(2);
18  if(Get_Reaction()->Get_ReactionStep(2)->Get_InitialPID() != Pi0)
19  return false;
20 
21  // get final state particles
22  auto locParticles = Get_UseKinFitResultsFlag() ? locParticleComboStep->Get_FinalParticles() : locParticleComboStep->Get_FinalParticles_Measured();
23 
24  int nFCAL = 0;
25 
26  // loop final state particles
27  for(size_t loc_i = 0; loc_i < locParticles.size(); ++loc_i) {
28  if(locParticles[loc_i] == nullptr) continue;
29 
30  // get shower object
31  const DNeutralShower* locNeutralShower = static_cast<const DNeutralShower*>(locParticleComboStep->Get_FinalParticle_SourceObject(loc_i));
32  if(locNeutralShower == NULL)
33  continue;
34 
35  // count # of FCAL photons and set separate thresholds on FCAL and BCAL energies
36  if(locNeutralShower->dDetectorSystem == SYS_FCAL) {
37  nFCAL++;
38  }
39  }
40 
41  // require 1 or 2 photons in FCAL (specify parameter in DReaction setup)
42  if(nFCAL != dMinFCAL)
43  return false;
44 
45  // passed all cuts
46  return true;
47 }
vector< const DKinematicData * > Get_FinalParticles_Measured(void) const
const DReaction * Get_Reaction(void) const
bool Get_UseKinFitResultsFlag(void) const
DetectorSystem_t dDetectorSystem
Definition: GlueX.h:22
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
void Initialize(JEventLoop *locEventLoop)
vector< const DKinematicData * > Get_FinalParticles(void) const
const JObject * Get_FinalParticle_SourceObject(size_t locFinalParticleIndex) const
const DParticleComboStep * Get_ParticleComboStep(size_t locStepIndex) const