Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
p2pi_trees/DCustomAction_p2pi_cuts.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DCustomAction_p2pi_hists.cc
4 // Created: Wed Jan 21 16:53:41 EST 2015
5 // Creator: jrsteven (on Linux ifarm1401 2.6.32-431.el6.x86_64 x86_64)
6 //
7 
9 
10 void DCustomAction_p2pi_cuts::Initialize(JEventLoop* locEventLoop)
11 {
12  // check if a particle is missing
13  Get_Reaction()->Get_MissingPID(dMissingPID);
14 }
15 
16 bool DCustomAction_p2pi_cuts::Perform_Action(JEventLoop* locEventLoop, const DParticleCombo* locParticleCombo)
17 {
18  // should only have one reaction step
19  const DParticleComboStep* locParticleComboStep = locParticleCombo->Get_ParticleComboStep(0);
20 
21  // get beam photon energy and final state particles
22  deque<const DKinematicData*> locParticles;
23  if(!Get_UseKinFitResultsFlag()) { //measured
24  locParticleComboStep->Get_FinalParticles_Measured(locParticles);
25  }
26  else {
27  locParticleComboStep->Get_FinalParticles(locParticles);
28  }
29 
30  // calculate 2pi P4
31  DLorentzVector locP4_2pi;
32  for(size_t loc_i = 0; loc_i < 3; ++loc_i) {
33  if(locParticles[loc_i] == NULL) continue; // missing proton
34  if(locParticles[loc_i]->PID() == PiPlus || locParticles[loc_i]->PID() == PiMinus)
35  locP4_2pi += locParticles[loc_i]->lorentzMomentum();
36  }
37 
38  // calculate missing P4
40 
41  if(dMissingPID != Proton) {
42 
43  if(locMissingP4.E() < -0.15 || locMissingP4.E() > 0.1)
44  return false;
45 
46  if(locP4_2pi.M() < 0.6 || locP4_2pi.M() > 0.9)
47  return false;
48  }
49 
50  return true; //return false if you want to use this action to apply a cut (and it fails the cut!)
51 }
vector< const DKinematicData * > Get_FinalParticles_Measured(void) const
const DReaction * Get_Reaction(void) const
TLorentzVector DLorentzVector
bool Get_UseKinFitResultsFlag(void) const
DLorentzVector Calc_MissingP4(const DReaction *locReaction, const DParticleCombo *locParticleCombo, bool locUseKinFitDataFlag) const
void Initialize(JEventLoop *locEventLoop)
vector< const DKinematicData * > Get_FinalParticles(void) const
const DAnalysisUtilities * dAnalysisUtilities
const DParticleComboStep * Get_ParticleComboStep(size_t locStepIndex) const
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)